Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

spec2ts

CI

spec2ts is an utility to create TypeScript types from JSON schemas and OpenAPI v3 specifications. Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators spec2ts does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your or OpenAPI Specifications and JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Components

  • @spec2ts/core: Helpers methods to generate TypeScript code.
  • @spec2ts/jsonschema: Utility to generate types from JSON schemas. More details.
  • @spec2ts/openapi: Utility to generate types from Open API v3 specifications. More details.
  • @spec2ts/openapi-client: Utility to generate HTTP Client from Open API v3 specifications. More details.
  • @spec2ts/cli: CLI wrapper to generate types from Open API v3 specifications and JSON schemas. More details.

Installation

Install in your project:

npm install @spec2ts/cli

CLI Usage

# Generate TypeScript types from JSON Schemas
spec2ts jsonschema -o path/to/output path/to/my/*.schema.json
# Generate TypeScript types from Open API specification
spec2ts openapi -o path/to/output path/to/my/specification.yml
# Generate TypeScript HTTP Client from Open API specification
spec2ts openapi-client -o path/to/output.ts path/to/my/specification.yml

You can find more details in the @spec2tsdocumentation.

Programmatic Usage

Generate TypeScript types from JSON Schemas

import{printer}from"@spec2ts/core";import{parseSchema,JSONSchema}from"@spec2ts/jsonschema";asyncfunctiongenerateSchema(schema: JSONSchema): Promise<string>{constresult=awaitparseSchema(schema);returnprinter.printNodes(result);}

Generate TypeScript types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{parseOpenApiFile}from"@spec2ts/openapi";asyncfunctiongenerateSpec(path: string): Promise<string>{constresult=awaitparseOpenApiFile(path);returnprinter.printNodes(result);}

Generate TypeScript Client types from OpenAPI Specifications

import{printer}from"@spec2ts/core";import{generateClientFile}from"@spec2ts/openapi-client";asyncfunctiongenerateClient(path: string): Promise<string>{constresult=awaitgenerateClientFile(path);returnprinter.printNodes(result);}

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2
v5.x.xv3
v6.x.xv4

License

This project is under MIT License. See the LICENSE file for the full license text.

About

Utilies to convert specifications (JSON Schemas and Open API) to Typescript using TypeScript native compiler

Resources

Code of conduct

Contributing

Stars

24 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages