UNPKG

fortify-schema

Version:

TypeScript interface-like schema validation system that's easier to use than Zod

101 lines (97 loc) 2.85 kB
'use strict'; require('../../mods/index.js'); var typescriptGenerator = require('../../mods/typescript-generator.js'); var DocumentationGenerator = require('./DocumentationGenerator.js'); var InteractiveDocumentationGenerator = require('./InteractiveDocumentationGenerator.js'); var openapiConverter = require('../../mods/openapi-converter.js'); /** * Auto documentation utilities */ const Docs = { /** * Generate comprehensive documentation from schema * * @example * ```typescript * const UserSchema = Interface({ * id: "uuid", * email: "email", * name: "string(2,50)", * age: "int(18,120)?", * role: Make.union("user", "admin", "moderator") * }); * * const documentation = Docs.generate(UserSchema, { * title: "User API", * description: "User management endpoints", * examples: true, * interactive: true * }); * * console.log(documentation.markdown); * console.log(documentation.html); * console.log(documentation.openapi); * ``` */ generate(schema, options = {}) { return new DocumentationGenerator.DocumentationGenerator(schema, options).generate(); }, /** * Generate OpenAPI specification from schema * * @example * ```typescript * const openApiSpec = Docs.openapi(UserSchema, { * title: "User API", * version: "1.0.0", * servers: ["https://api.example.com"] * }); * ``` */ openapi(schema, options) { return openapiConverter.OpenAPIConverter.generateOpenAPISpec(schema, options); }, /** * Generate TypeScript type definitions * * @example * ```typescript * const typeDefinitions = Docs.typescript(UserSchema, { * exportName: "User", * namespace: "API" * }); * * // Generates: * // export interface User { * // id: string; * // email: string; * // name: string; * // age?: number; * // role: "user" | "admin" | "moderator"; * // } * ``` */ typescript(schema, options = {}) { return typescriptGenerator.TypeScriptGenerator.generateInterface(schema, options); }, /** * Generate interactive documentation with live examples * * @example * ```typescript * const interactiveDocs = Docs.interactive(UserSchema, { * title: "User Schema Playground", * theme: "dark", * showExamples: true, * allowTesting: true * }); * * document.body.innerHTML = interactiveDocs.html; * ``` */ interactive(schema, options = {}) { return new InteractiveDocumentationGenerator.InteractiveDocumentationGenerator(schema, options).generate(); } }; exports.Docs = Docs; //# sourceMappingURL=Docs.js.map