{"id":13409235,"url":"https://github.com/sinclairzx81/typebox","last_synced_at":"2025-10-07T17:52:29.266Z","repository":{"id":38418724,"uuid":"87454905","full_name":"sinclairzx81/typebox","owner":"sinclairzx81","description":"A Runtime Type System for JavaScript","archived":false,"fork":false,"pushed_at":"2025-09-09T14:32:49.000Z","size":15378,"stargazers_count":5898,"open_issues_count":13,"forks_count":185,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-09-09T16:43:08.407Z","etag":null,"topics":["jsonschema","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sinclairzx81.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog/0.17.1.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-04-06T17:08:46.000Z","updated_at":"2025-09-09T14:28:06.000Z","dependencies_parsed_at":"2023-02-10T20:46:03.760Z","dependency_job_id":"86fd48b4-8648-4a6c-824a-3ab0beffffa2","html_url":"https://github.com/sinclairzx81/typebox","commit_stats":{"total_commits":559,"total_committers":46,"mean_commits":"12.152173913043478","dds":"0.10017889087656529","last_synced_commit":"6d54d12420ee8badaa4cb2a3492af4cba214eb95"},"previous_names":[],"tags_count":289,"template":false,"template_full_name":null,"purl":"pkg:github/sinclairzx81/typebox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Ftypebox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Ftypebox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Ftypebox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Ftypebox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinclairzx81","download_url":"https://codeload.github.com/sinclairzx81/typebox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Ftypebox/sbom","scorecard":{"id":826040,"data":{"date":"2025-08-11","repo":{"name":"github.com/sinclairzx81/typebox","commit":"81c3686da5379dbc9562354e86f41c4c472eca50"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 7/29 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/nightly.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: license:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/sinclairzx81/typebox/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/sinclairzx81/typebox/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/sinclairzx81/typebox/nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/sinclairzx81/typebox/nightly.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/build.yml:19","Warn: npmCommand not pinned by hash: .github/workflows/nightly.yml:21","Warn: npmCommand not pinned by hash: .github/workflows/nightly.yml:24","Warn: npmCommand not pinned by hash: .github/workflows/nightly.yml:29","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 23 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T16:39:48.774Z","repository_id":38418724,"created_at":"2025-08-23T16:39:48.774Z","updated_at":"2025-08-23T16:39:48.774Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274357601,"owners_count":25270675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["jsonschema","typescript"],"created_at":"2024-07-30T20:00:59.103Z","updated_at":"2025-10-07T17:52:29.247Z","avatar_url":"https://github.com/sinclairzx81.png","language":"TypeScript","readme":"\u003cdiv align='center'\u003e\n\n\u003ch1\u003eTypeBox\u003c/h1\u003e\n\n\u003cp\u003eA Runtime Type System for JavaScript\u003c/p\u003e\n\n\u003cimg src=\"typebox.png\" /\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n[![npm version](https://badge.fury.io/js/typebox.svg)](https://badge.fury.io/js/typebox)\n[![Downloads](https://img.shields.io/npm/dm/typebox.svg)](https://www.npmjs.com/package/typebox)\n[![Build](https://github.com/sinclairzx81/typebox/actions/workflows/build.yml/badge.svg)](https://github.com/sinclairzx81/typebox/actions/workflows/build.yml)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u003c/div\u003e\n\n## Install\n\n```bash\n$ npm install typebox\n```\n\n\n## Usage\n\n```typescript\nimport Type from 'typebox'\n\nconst T = Type.Object({                             // const T = {\n  x: Type.Number(),                                 //   type: 'object',\n  y: Type.Number(),                                 //   required: ['x', 'y', 'z'],\n  z: Type.Number()                                  //   properties: {\n})                                                  //     x: { type: 'number' },\n                                                    //     y: { type: 'number' },\n                                                    //     z: { type: 'number' }\n                                                    //   }\n                                                    // }\n\ntype T = Type.Static\u003ctypeof T\u003e                      // type T = {\n                                                    //   x: number,\n                                                    //   y: number,\n                                                    //   z: number\n                                                    // }\n```\n\n## Overview\n\n[Documentation](https://sinclairzx81.github.io/typebox/)\n\nTypeBox is a runtime type system that creates in-memory Json Schema objects that infer as TypeScript types. The schematics produced by this library are designed to match the static type checking rules of the TypeScript compiler. TypeBox offers a unified type system that can be statically checked by TypeScript and validated at runtime using standard Json Schema.\n\nThis library is designed to allow Json Schema to compose similar to how types compose within TypeScript's type system. It can be used as a simple tool to build up complex schematics or integrated into REST and RPC services to help validate data received over the wire.\n\nLicense: MIT\n\n## Contents\n\n- [Upgrade](#Upgrade)\n- [Type](#Type)\n- [Script](#Script)\n- [Value](#Value)\n- [Compile](#Compile)\n- [Contribute](#Contribute)\n\n## Upgrade\n\nIf upgrading from `@sinclair/typebox` refer to the 1.0 migration guide at the following URL.\n\n[Migration Guide](https://github.com/sinclairzx81/typebox/blob/main/changelog/1.0.0-migration.md)\n\n\u003ca name=\"Type\"\u003e\u003c/a\u003e\n\n## Type\n\n[Documentation](https://sinclairzx81.github.io/typebox/#/docs/type/overview) | [Example](https://www.typescriptlang.org/play/#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgYwgDsBneBOAXkSIDoB5YgK1Q0YACgDecSVOkzZcuAHoFcOkxbs4YypLIAuTmi4A5AK4hiqKCICUAGnkPHspVMJp9eCAKEw8t7XBI+siGpuaWNvZO0Q4uklCoAI4mwAkAJvoA2ngU9nhIfvgAXngAuv6SRcHcYRZW1jGNcnFwYNhosMCojPpaAL4NTUPDisrSeppwbqge9GZ1eHB9FSOrjS2SQZPTs-OWi8sBa8exY1JV20S74VAHRycP0i1994+PLi+U04gaIahcAGUYABDGDAGgAHmmEAwiAAfCcXN9WBwtG90aMpBM5jcVhiHi0tji6nj8ccWhdiZZXmSRh8gA)\n\nTypeBox includes many functions to create Json Schema types. Each function returns a small Json Schema fragment that corresponds to a TypeScript type. TypeBox uses function composition to combine schema fragments into more complex types. It provides a set of functions that are used to model Json Schema schematics as well as a set of functions that model constructs native to JavaScript and TypeScript.\n\n## Example\n\nThe following creates a Json Schema type and infers with Static.\n\n```typescript\nimport Type from 'typebox'\n\nconst T = Type.Object({                             // const T = {\n  x: Type.Number(),                                 //   type: 'object',\n  y: Type.Number(),                                 //   required: ['x', 'y', 'z'],\n  z: Type.Number()                                  //   properties: {\n})                                                  //     x: { type: 'number' },\n                                                    //     y: { type: 'number' },\n                                                    //     z: { type: 'number' }\n                                                    //   }\n                                                    // }\n\ntype T = Type.Static\u003ctypeof T\u003e                      // type T = {\n                                                    //   x: number,\n                                                    //   y: number,\n                                                    //   z: number\n                                                    // }\n```\n\n\n\n\u003ca name=\"Script\"\u003e\u003c/a\u003e\n\n## Script\n\n[Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example](https://www.typescriptlang.org/play/?moduleResolution=99\u0026target=99\u0026jsx=0\u0026module=199#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgYwgDsBneBOAXkSIDoBlGqYGBgAKAAYBvOJThwyALjj0AriGKooAGikykC5avVbpcAF56VaqFIC+ogJQzHT5y9dv3zgPSe4dJi3Y4cWMPULDwp29HQjQFPAhiACtUGhg8DRCIrOzInxkoVABHJWACgBMFAG08Ci08JHT8EzwAXQycjpyomTBsNFhgVEYFYM6x8O7HeSC4GNQ4-Us8OGt28fW3SZ0R2aIFi3Vl1cyN07gt0x25-YMoI5Oz9cnrB8exqJfaBmY4HkDkNC8fiCESSVirOASYyVADScGA9DgAGtUEgIBhEC0FAhYS04AAfRRKAA2xMotgcb3GUT8Pz+HFGVI2k2u+ASyVS6VeTOykwKxVKqAqcGqtXwDTqzTa3J5EUmvQg-Rgg2GQRlsrCF2mknVGo8FxkAEN6EgAPIYKq6vWbPKuSSsvCLQ4rIzWjoGxz2vb4ZSk+5urq2px4q0B3LOY5hrIXXQzUNR85BxzGs0WkXxqMemRe2I+g53F3aBOapNOHPzPN+lYZsMekPFksRtYN9wXMxxlv60twFPmy2d1vd7O7XOO-NHV0D1xZmYO33E-1Tlx1otL8NOSNr9fVrfhz5zX7-bg8GCG5U0AA8c3RvwAfE8fAf6Wrd45JtMnVZCfPm7vJrHPwJIlSV-LdJnbQDvxJMlXxkD4gA)\n\nTypeBox can translate TypeScript syntax into Json Schema. The Script function is a fully type-safe, syntactic frontend to the TypeBox type builder API, allowing Json Schema to be constructed and mapped using TypeScript type expressions encoded as strings.\n\n### Example\n\nThe following uses Script to construct and map Json Schema.\n\n```typescript\nimport Type from 'typebox'\n\nconst T = Type.Script(`{ \n  x: number, \n  y: number, \n  z: number \n}`)                                                 // const T = {\n                                                    //   type: 'object',\n                                                    //   required: ['x', 'y', 'z'],\n                                                    //   properties: {\n                                                    //     x: { type: 'number' },\n                                                    //     y: { type: 'number' },\n                                                    //     z: { type: 'number' }\n                                                    //   }\n                                                    // }\n\nconst S = Type.Script({ T }, `{\n  [K in keyof T]: T[K] | null\n}`)                                                 // const S = {\n                                                    //   type: 'object',\n                                                    //   required: ['x', 'y', 'z'],\n                                                    //   properties: {\n                                                    //     x: { \n                                                    //       anyOf: [\n                                                    //         { type: 'number' }, \n                                                    //         { type: 'null' }\n                                                    //       ] \n                                                    //     },\n                                                    //     y: { \n                                                    //       anyOf: [\n                                                    //         { type: 'number' }, \n                                                    //         { type: 'null' }\n                                                    //       ] \n                                                    //     },\n                                                    //     z: { \n                                                    //       anyOf: [\n                                                    //         { type: 'number' }, \n                                                    //         { type: 'null' }\n                                                    //       ] \n                                                    //     },\n                                                    //   }\n                                                    // }\n\ntype S = Type.Static\u003ctypeof S\u003e                      // type S = {\n                                                    //   x: number | null,\n                                                    //   y: number | null,\n                                                    //   z: number | null\n                                                    // }\n```\n\n\u003ca name=\"Value\"\u003e\u003c/a\u003e\n\n## Value\n\n[Documentation](https://sinclairzx81.github.io/typebox/#/docs/value/overview) | [Example](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoUSWOANQEMAbAV3Sx30LVLIHoAbi3ZVKAYwgA7AM7wEcALyIiAOgDyxAFapxMABQBvSnDhkAXCrSqAcqxDFUUfQEoANCbhJLya3YdOrh6mAF4+av6Ozi6UAL4xlPz8cADCABa6ANaUEtJycACCSgwiqKrpWfoIbnCGpvUNjU1NSXCSsvAFlqQQzKiMUsUwUOyeFnAAjDXNM7Nzs57ecABMwXBhcADMcQmtAAqMUDKoOe35AELFTGxlB0eoVTV18y+mrWfw55bGpuNTrwDAfVWr9LFJ7FE1ktVkDYS8QV4wRCnGsNps4RjZgiNuCAlAdpjCVjkrFiqpyUA)\n\nThe TypeBox Value module provides functions to Check and Parse JavaScript values. It also includes functions such as Clone, Repair, Encode, Decode, Diff and Patch which perform various structural operations on JavaScript values.\n\nThe Value module is available via optional import.\n\n```typescript\nimport Value from 'typebox/value'\n```\n\n### Example\n\nThe following uses the Value module to Check and Parse a value. \n\n```typescript\nconst T = Type.Object({\n  x: Type.Number(),\n  y: Type.Number(),\n  z: Type.Number()\n})\n\n// Check\n\nconst A = Value.Check(T, {                          // const A: boolean = true\n  x: 1,                                            \n  y: 2,\n  z: 3\n})\n\n// Parse\n\nconst B = Value.Parse(T, {                          // const B: {\n  x: 1,                                             //   x: number,\n  y: 2,                                             //   y: number,\n  z: 3                                              //   z: number\n})                                                  // } = ...\n```\n\n\n\u003ca name=\"Compile\"\u003e\u003c/a\u003e\n\n## Compile\n\n[Documentation](https://sinclairzx81.github.io/typebox/#/docs/compile/overview) | [Example](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgYQuYAbApnAvnAMyjTgHIYBPMLAIwgA8B6AYzTEy1IChRJY4AKlRxES5YXXrcurAHYBneMjgBeFGw4AKIdQB0AeRoArLMxiakcK9Zu3bjRnDmKUALjgA1AIYZgAEy8YaAAeBFwAGkFDEzNQrit6dx0sXQA5AFcQGiwoTQBKSLsi4pKrB2tEwQysnPD4uAok4TTM7NyC0s6u8qtGqtba+oAvJr1qtvyuqZKeuBH+mqguXDy86fWNm3LcAD4dri5y5AALUwBrA+d4AEFVFF0T84tNjfKruGv3OghsL1k7mBQdJYeqVACMhReUNs9T6ACY6lZ5gBmZZ5A7lAAKXig8hBMggCngACE7shdNjcVhntDuo53sT3AhQe4IbT2WVHAl3LIBlBEQ13AiOezZn1eYsBSiRaKuXMeXy0TKZds7rp1UA)\n\nThe TypeBox Compile module provides functions to convert types into high-performance validators. The compiler is tuned for fast compilation as well as fast validation.\n\nThe Compile module is available via optional import.\n\n```typescript\nimport { Compile } from 'typebox/compile' \n```\n\n### Example\n\nThe following uses the Compile module to Check and Parse a value. \n\n```typescript\nconst C = Compile(Type.Object({                     // const C: Validator\u003c{}, TObject\u003c{\n  x: Type.Number(),                                 //   x: TNumber,\n  y: Type.Number(),                                 //   y: TNumber,\n  z: Type.Number()                                  //   z: TNumber\n}))                                                 // }\u003e\u003e\n\n// Check\n\nconst A = C.Check({                                 // const A: boolean = true\n  x: 1,                                            \n  y: 2,\n  z: 3\n})\n\n// Parse\n\nconst B = C.Parse({                                 // const B: {\n  x: 1,                                             //   x: number,\n  y: 2,                                             //   y: number,\n  z: 3                                              //   z: number\n})                                                  // } = ...\n```\n\n## Contribute\n\nTypeBox is open to community contribution. Please ensure you submit an issue before submitting a pull request. The TypeBox project prefers open community discussion before accepting new features.","funding_links":[],"categories":["Core","TypeScript","typescript","Underlying Technologies","Packages","Validation \u0026 Types"],"sub_categories":["TypeScript"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinclairzx81%2Ftypebox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinclairzx81%2Ftypebox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinclairzx81%2Ftypebox/lists"}