<!-- automd:badges bundlejs -->
npm install untyped


▶️ Check online playground
``sh✨ Auto-detect
npx nypm install untyped
Usage
First we have to define a reference object that describes types, defaults, and a
$resolve method (normalizer).`js
const defaultPlanet = {
name: "earth",
specs: {
gravity: {
$resolve: (val) => Number.parseFloat(val),
$default: "9.8",
},
moons: {
$resolve: (val = ["moon"]) => [val].flat(),
$schema: {
title: "planet moons",
},
},
},
};
`API
$3
`js
import { resolveSchema } from "untyped";const schema = await resolveSchema(defaultPlanet);
`Output:
`json
{
"properties": {
"name": {
"type": "string",
"default": "earth"
},
"specs": {
"properties": {
"gravity": {
"default": 9.8,
"type": "number"
},
"moons": {
"title": "planet moons",
"default": ["moon"],
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"type": "object"
}
},
"type": "object"
}
`$3
`js
import { resolveSchema, generateTypes } from "untyped";const types = generateTypes(await resolveSchema(defaultPlanet));
`Output:
`ts
interface Untyped {
/* @default "earth" /
name: string; specs: {
/* @default 9.8 /
gravity: number;
/**
* planet moons
* @default ["moon"]
*/
moons: string[];
};
}
`$3
`js
import { resolveSchema, generateMarkdown } from "untyped";const markdown = generateMarkdown(await resolveSchema(defaultPlanet));
`Output:
`markdown
name- Type:
string
- Default: "earth"specsgravity- Type:
number
- Default: 9.8moons- Type:
array
- Default: ["moon"]
`💻 Development
- Clone this repository
- Enable Corepack using
corepack enable (use npm i -g corepack for Node.js < 16.10)
- Install dependencies using pnpm install
- Run interactive tests using pnpm dev
- Use pnpm web to start playground website
- Use pnpm test` before push to ensure all tests and lint checks passingThanks to @dominikschreiber for donating package name.
[npm-version-src]: https://img.shields.io/npm/v/untyped?style=flat-square
[npm-version-href]: https://npmjs.com/package/untyped
[npm-downloads-src]: https://img.shields.io/npm/dm/untyped?style=flat-square
[npm-downloads-href]: https://npmjs.com/package/untyped
[github-actions-src]: https://img.shields.io/github/actions/workflow/status/unjs/untyped/ci.yml?branch-main&style=flat-square
[github-actions-href]: https://github.com/unjs/untyped/actions?query=workflow%3Aci
[codecov-src]: https://img.shields.io/codecov/c/gh/unjs/untyped/main?style=flat-square
[codecov-href]: https://codecov.io/gh/unjs/untyped
[bundle-src]: https://img.shields.io/bundlephobia/minzip/untyped?style=flat-square
[bundle-href]: https://bundlephobia.com/result?p=untyped