To install the library, use npm or yarn:
npm install @adaptate/utils
# or
yarn add @adaptate/utils
Spec parser that takes care of the usage of $ref
.
import { getDereferencedOpenAPIDocument } from '@adaptate/utils';
let dereferencedOpenAPIDocument = await getDereferencedOpenAPIDocument(
import.meta.url,
'../fixtures/base-schema.yml'
);
for (let [name, schema] of Object.entries(
dereferencedOpenAPIDocument.components.schemas
)) {
// Generate zod schema
let zodSchema = openAPISchemaToZod(schema);
// write zodSchema to .ts or .d.ts modules
}
use json-schema-to-zod and $ref
is already expanded by getDereferencedOpenAPIDocument
and you can skip this part
for (let [name, schema] of Object.entries(
dereferencedOpenAPIDocument.components.schemas
)) {
// Generate zod schema module for each schema
jsonSchemaToZod(schema, {
name,
module: 'esm',
type: true,
});
}
The utility is in the early stage and not one to one. For complete and advanced use cases check json-schema-to-zod
import { incomplete_openAPISchemaToZod } from '@adaptate/utils';
const openAPISchema = {
type: 'object',
required: ['age'],
properties: {
name: { type: 'string' },
age: { type: 'number' },
},
};
const zodSchema = incomplete_openAPISchemaToZod(openAPISchema);
The utility is in the early stage and not one to one. For complete and advanced use cases check zod-to-json-schema
import { z } from 'zod';
import { incomplete_zodToOpenAPISchema } from '@adaptate/utils';
const zodSchema = z.object({
name: z.string(),
age: z.number(),
});
const openAPISchema = incomplete_zodToOpenAPISchema(zodSchema);