fortify-schema
Version:
A modern TypeScript validation library designed around familiar interface syntax and powerful conditional validation. Experience schema validation that feels natural to TypeScript developers while unlocking advanced runtime validation capabilities.
101 lines (97 loc) • 2.85 kB
JavaScript
;
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