{"id":37424347,"url":"https://github.com/hyperjump-io/json-schema-lite","last_synced_at":"2026-01-16T06:11:17.432Z","repository":{"id":280947250,"uuid":"943701078","full_name":"hyperjump-io/json-schema-lite","owner":"hyperjump-io","description":"A simple JSON Schema 2020-12 validator","archived":false,"fork":false,"pushed_at":"2025-04-09T02:13:58.000Z","size":29,"stargazers_count":1,"open_issues_count":1,"forks_count":17,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-03T23:38:46.545Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/hyperjump-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2025-03-06T06:02:15.000Z","updated_at":"2025-04-09T01:28:15.000Z","dependencies_parsed_at":"2025-03-06T20:31:18.493Z","dependency_job_id":null,"html_url":"https://github.com/hyperjump-io/json-schema-lite","commit_stats":null,"previous_names":["hyperjump-io/json-schema-lite"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hyperjump-io/json-schema-lite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjump-io%2Fjson-schema-lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjump-io%2Fjson-schema-lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjump-io%2Fjson-schema-lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjump-io%2Fjson-schema-lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperjump-io","download_url":"https://codeload.github.com/hyperjump-io/json-schema-lite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjump-io%2Fjson-schema-lite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"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":[],"created_at":"2026-01-16T06:11:17.345Z","updated_at":"2026-01-16T06:11:17.404Z","avatar_url":"https://github.com/hyperjump-io.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JSON Schema (lite)\n\n**_NOT FOR PRODUCTION USE_**\n\nThis is a minimal implementation of JSON Schema 2020-12 with a couple of the\nmore complex features left out. This implementation exists solely to facilitate\nthe qualification task for the JSON Schema GSoC project [Better JSON Schema\nErrors](https://github.com/json-schema-org/community/issues/870) project. Do not\nuse it in production. It will not be maintained or supported.\n\n## Qualification Task\n\nThere's no better way to get familiar with the JSON Schema output format than to\nimplement it yourself. This implementation currently implements the Flag output\nformat. Your task is to update it to support either the Basic or Detailed output\nformats. You must include `valid`, `absoluteKeywordLocation`, and\n`instanceLocation`. Because we aren't implementing the Verbose output format,\nyou don't need to support `annotations`/`annotation`. You don't need to support\n`error` because we're going to ignore messages from the implementation anyway.\n`keywordLocation` is optional because I can't see any reason we'd use it. **You\nmust include output format tests to show that your implementation works\nincluding coverage for all implemented keywords. This is in addition to the\nvalidation tests that I provided.**\n\nTo submit your qualification task, use `npm pack` and DM it to me. I will\nprovide one and only one review for each candidate, so make sure you're ready\nwhen you submit. You can't fail the qualification task. As long as you submit\nsomething, I'll consider your application. However, I will strongly take into\nconsideration the quality of your submission when evaluating applications.\n\nThis project uses ESLint. I encourage you to install an ESLint plugin in your\neditor to get feedback in real time. ESLint is also used for code style checks,\nbut it doesn't check everything, so make an effort to match my code style when\nmaking changes.\n\nThere are three scripts you should make sure that you are passing before\nsubmitting.\n\n- `npm test`\n- `npm run lint`\n- `npm run type-check`\n\nI strongly encourage you to turn off your AI coding assistants for this\nexercise. They tend to generate very low quality code. Code that works is just\nthe beginning. It also needs to be maintainable. Sloppy code hides bugs, is hard\nto maintain, and slows down progress in the long term. This may be throw away\ncode that we're never going to build on later, but remember that part of the\ngoal of this task is to demonstrate your ability to write quality code for a\nproject that will need to evolve and be maintained over the several next years.\n\n## About the Implementation\n\nUnsupported features and keywords\n- Embedded schemas\n- `$anchor`\n- `$dynamicRef`/`$dynamicAnchor`\n- `unevaluatedProperties`/`unevaluatedItems`\n- `format` assertion\n- Annotations\n- Custom dialect/vocabularies/keywords\n- Older dialects\n- Retrieving files from the file system or the web\n\n### API\n\n* `validate(schema: Json, instance: Json) =\u003e Output`\n* `registerSchema(schema: Json, uri: string) =\u003e void`\n\nThe `Json` type represents any JavaScript value that is compatible with JSON.\n\nThe `Output` type represents the Flag output format. It includes the `valid`\nproperty, but no `errors`.\n\n### Example Usage\n\n```javascript\nimport { validate } from \"../src/index.js\";\n\n/**\n * @import { Json } from \"./src/jsonast.d.ts\"\n */\n\n/** @type Json */\nconst schema = {\n  $ref: \"#/$defs/a\",\n  $defs: {\n    a: { type: \"number\" }\n  }\n};\nconst instance = true;\nconst output = validate(schema, instance);\nconsole.log(\"valid\", output.valid);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperjump-io%2Fjson-schema-lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperjump-io%2Fjson-schema-lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperjump-io%2Fjson-schema-lite/lists"}