{"id":47536687,"url":"https://itihon.github.io/isomorphic-validation/","last_synced_at":"2026-04-11T23:01:07.904Z","repository":{"id":245390436,"uuid":"818245010","full_name":"itihon/isomorphic-validation","owner":"itihon","description":"Javascript validation library. Allows writing the same validation logic for the client and server side.","archived":false,"fork":false,"pushed_at":"2025-11-03T04:52:20.000Z","size":1664,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-03T06:20:27.952Z","etag":null,"topics":["express","isomorphic","javascript","library","nodejs","server","validation"],"latest_commit_sha":null,"homepage":"https://itihon.github.io/isomorphic-validation/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itihon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-21T12:14:35.000Z","updated_at":"2025-11-03T04:52:24.000Z","dependencies_parsed_at":"2024-08-28T09:28:05.771Z","dependency_job_id":"b261b3c4-87e5-4e78-92df-0a344a898608","html_url":"https://github.com/itihon/isomorphic-validation","commit_stats":null,"previous_names":["itihon/isomorphic-validation"],"tags_count":94,"template":false,"template_full_name":null,"purl":"pkg:github/itihon/isomorphic-validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itihon%2Fisomorphic-validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itihon%2Fisomorphic-validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itihon%2Fisomorphic-validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itihon%2Fisomorphic-validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itihon","download_url":"https://codeload.github.com/itihon/isomorphic-validation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itihon%2Fisomorphic-validation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31698152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"ssl_error","status_checked_at":"2026-04-11T21:17:24.556Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","isomorphic","javascript","library","nodejs","server","validation"],"created_at":"2026-03-28T07:00:24.671Z","updated_at":"2026-04-11T23:01:07.898Z","avatar_url":"https://github.com/itihon.png","language":"JavaScript","funding_links":[],"categories":["Showcases"],"sub_categories":["Customization"],"readme":"# isomorphic-validation\n\n## An isomorphic form validation javascript library which runs the same code both client and server side and allows for reusing validation logic for the same fields on different forms.\n\n\u003cbr\u003e\n\n## 🕙 Developing ...\n\n\u003cimg src=\"./isomorphic-validation_smaller.gif\" alt=\"isomorphic validation\" width=\"550\" height=\"700\"\u003e\n\n\u003cbr\u003e\n\n## Documentation\n[\u003cimg alt=\"isomorphic validation logo\" src=\"https://itihon.github.io/isomorphic-validation/favicon.svg\" width=\"18px\"\u003e isomorphic-validation-docs](https://itihon.github.io/isomorphic-validation/)\n\n\u003cbr\u003e\n\n## API overview:\n\n## Core module \"isomorphic-validation\"\n\nThe core module of the library exports two entities: [`Validation`](https://itihon.github.io/isomorphic-validation/api/validation/constructor/) and [`Predicate`](https://itihon.github.io/isomorphic-validation/api/predicate/constructor/).\n\n### Instance methods:\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\n- [`Validation().started()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/started/)\n- [`Validation().valid()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/valid/)\n- [`Validation().invalid()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/invalid/)\n- [`Validation().changed()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/changed/)\n- [`Validation().validated()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/validated/)\n- [`Validation().error()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/error/)\n- [`Validation().constraint()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/constraint/)\n- [`Validation().bind()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/bind/)\n- [`Validation().dataMapper()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/datamapper/)\n- [`Validation().validate()`](https://itihon.github.io/isomorphic-validation/api/validation/instance-methods/validate/)\n\n\u003c/td\u003e\n\u003ctd\u003e\n\n- [`Predicate().started()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/started/)\n- [`Predicate().valid()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/valid/)\n- [`Predicate().invalid()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/invalid/)\n- [`Predicate().changed()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/changed/)\n- [`Predicate().validated()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/validated/)\n- [`Predicate().error()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/error/)\n- [`Predicate().restored()`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-methods/restored/)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Instance properties:\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\n- [`Validation().client`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/client/)\n- [`Validation().server`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/server/)\n- [`Validation().isomorphic`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/isomorphic/)\n- [`Validation().isValid`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/is-valid/)\n- [`Validation().constraints`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/constraints/)\n- [`Validation().validations`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/validations/)\n\n\u003c/td\u003e\n\u003ctd\u003e\n\n- [`Predicate().client`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-properties/client/)\n- [`Predicate().server`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-properties/server/)\n- [`Predicate().isomorphic`](https://itihon.github.io/isomorphic-validation/api/predicate/instance-properties/isomorphic/)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Static methods:\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\n- [`Validation.group()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/group/)\n- [`Validation.glue()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/glue/)\n- [`Validation.clone()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/clone/)\n- [`Validation.profile()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/profile/)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctable\u003e\n\n\u003cbr\u003e\n\n### Validation object\n\nA `Validation` object can be created several ways:\n\n- a [single](https://itihon.github.io/isomorphic-validation/concept/single-validation/) `Validation` is created by the [constructor](https://itihon.github.io/isomorphic-validation/api/validation/constructor/) function.\n- a [grouping](https://itihon.github.io/isomorphic-validation/concept/grouping-validations/) `Validation` is created by the static methods [`Validation.group()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/group/) and [`Validation.glue()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/glue/)\n- also a [grouping](https://itihon.github.io/isomorphic-validation/concept/grouping-validations/) `Validation` with nested (grouped), bound to form fields `Validation` objects is created by the [`Validation.profile()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/profile/) static method.\n- and lastly, a [single](https://itihon.github.io/isomorphic-validation/concept/single-validation/) `Validation` is created by the [`Validation.clone()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/clone/) method from another `Validation`.\n\nNested (grouped) `Validation` objects are accessed through: \n\n- the [`Validation().validations`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/validations/) property.\n- by form field names when created using the [`Validation.profile()`](https://itihon.github.io/isomorphic-validation/api/validation/static-methods/profile/) method.\n\n\u003cbr\u003e\n\n### Predicate object\n\nA `Predicate` object can be created:\n\n- by the [constructor](https://itihon.github.io/isomorphic-validation/api/predicate/constructor/) function.\n- cloned from another `Predicate` object when passed into the [constructor](https://itihon.github.io/isomorphic-validation/api/predicate/constructor/#cloning-a-predicate) function.\n\n`Predicate` objects added to validations can be accessed:\n\n- through the [`Validation().constraints`](https://itihon.github.io/isomorphic-validation/api/validation/instance-properties/constraints/) property.\n- in [state callbacks](https://itihon.github.io/isomorphic-validation/concept/state-callbacks/) through the [`ValidationResult`](https://itihon.github.io/isomorphic-validation/api/validation-result/) object passed in.\n\n\u003cbr\u003e\n\n## UI module \"isomorphic-validation/ui\"\n\nThe UI module exports the following set of helper, renderer and effect functions for performing UI side effects:\n\n### Helper functions\n\n- [`firstInvalid()`](https://itihon.github.io/isomorphic-validation/api/ui/helper-functions/first-invalid/)\n- [`allInvalid()`](https://itihon.github.io/isomorphic-validation/api/ui/helper-functions/all-invalid/)\n- [`toEventHandler()`](https://itihon.github.io/isomorphic-validation/api/ui/helper-functions/to-event-handler/)\n- [`createApplyEffect()`](https://itihon.github.io/isomorphic-validation/api/ui/helper-functions/create-apply-effect/)\n\n### Renderer functions \n\n- [`renderFirstError()`](https://itihon.github.io/isomorphic-validation/api/ui/renderer-functions/render-first-error/)\n- [`renderAllErrors()`](https://itihon.github.io/isomorphic-validation/api/ui/renderer-functions/render-all-errors/)\n- [`renderProperty()`](https://itihon.github.io/isomorphic-validation/api/ui/renderer-functions/render-property/)\n\n### Effect functions\n\n- [`applyClass()`](https://itihon.github.io/isomorphic-validation/api/ui/effect-functions/apply-class/)\n- [`applyOutline()`](https://itihon.github.io/isomorphic-validation/api/ui/effect-functions/apply-outline/)\n- [`applyBackground()`](https://itihon.github.io/isomorphic-validation/api/ui/effect-functions/apply-background/)\n- [`applyAccess()`](https://itihon.github.io/isomorphic-validation/api/ui/effect-functions/apply-access/)\n- [`applyBox()`](https://itihon.github.io/isomorphic-validation/api/ui/effect-functions/apply-box/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/itihon.github.io%2Fisomorphic-validation%2F","html_url":"https://awesome.ecosyste.ms/projects/itihon.github.io%2Fisomorphic-validation%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/itihon.github.io%2Fisomorphic-validation%2F/lists"}