schemantic 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -0
- package/LICENSE +21 -0
- package/README.md +827 -0
- package/dist/__tests__/setup.d.ts +6 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +30 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/test-config.d.ts +36 -0
- package/dist/__tests__/test-config.d.ts.map +1 -0
- package/dist/__tests__/test-config.js +563 -0
- package/dist/__tests__/test-config.js.map +1 -0
- package/dist/cli/index.d.ts +118 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +657 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +21 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/schemantic.d.ts +95 -0
- package/dist/core/schemantic.d.ts.map +1 -0
- package/dist/core/schemantic.js +543 -0
- package/dist/core/schemantic.js.map +1 -0
- package/dist/generators/api-client-generator.d.ts +145 -0
- package/dist/generators/api-client-generator.d.ts.map +1 -0
- package/dist/generators/api-client-generator.js +856 -0
- package/dist/generators/api-client-generator.js.map +1 -0
- package/dist/generators/base.d.ts +117 -0
- package/dist/generators/base.d.ts.map +1 -0
- package/dist/generators/base.js +232 -0
- package/dist/generators/base.js.map +1 -0
- package/dist/generators/enum-generator.d.ts +52 -0
- package/dist/generators/enum-generator.d.ts.map +1 -0
- package/dist/generators/enum-generator.js +178 -0
- package/dist/generators/enum-generator.js.map +1 -0
- package/dist/generators/factory.d.ts +59 -0
- package/dist/generators/factory.d.ts.map +1 -0
- package/dist/generators/factory.js +127 -0
- package/dist/generators/factory.js.map +1 -0
- package/dist/generators/hook-generator.d.ts +36 -0
- package/dist/generators/hook-generator.d.ts.map +1 -0
- package/dist/generators/hook-generator.js +495 -0
- package/dist/generators/hook-generator.js.map +1 -0
- package/dist/generators/index.d.ts +10 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +26 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/object-generator.d.ts +48 -0
- package/dist/generators/object-generator.d.ts.map +1 -0
- package/dist/generators/object-generator.js +280 -0
- package/dist/generators/object-generator.js.map +1 -0
- package/dist/generators/primitive-generator.d.ts +40 -0
- package/dist/generators/primitive-generator.d.ts.map +1 -0
- package/dist/generators/primitive-generator.js +150 -0
- package/dist/generators/primitive-generator.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/base.d.ts +101 -0
- package/dist/parsers/base.d.ts.map +1 -0
- package/dist/parsers/base.js +77 -0
- package/dist/parsers/base.js.map +1 -0
- package/dist/parsers/factory.d.ts +64 -0
- package/dist/parsers/factory.d.ts.map +1 -0
- package/dist/parsers/factory.js +116 -0
- package/dist/parsers/factory.js.map +1 -0
- package/dist/parsers/index.d.ts +7 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +23 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/openapi.d.ts +52 -0
- package/dist/parsers/openapi.d.ts.map +1 -0
- package/dist/parsers/openapi.js +396 -0
- package/dist/parsers/openapi.js.map +1 -0
- package/dist/plugins/branded-types.d.ts +28 -0
- package/dist/plugins/branded-types.d.ts.map +1 -0
- package/dist/plugins/branded-types.js +568 -0
- package/dist/plugins/branded-types.js.map +1 -0
- package/dist/plugins/builtin.d.ts +38 -0
- package/dist/plugins/builtin.d.ts.map +1 -0
- package/dist/plugins/builtin.js +283 -0
- package/dist/plugins/builtin.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +23 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +92 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +245 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +99 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +233 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/performance-monitoring.d.ts +98 -0
- package/dist/plugins/performance-monitoring.d.ts.map +1 -0
- package/dist/plugins/performance-monitoring.js +596 -0
- package/dist/plugins/performance-monitoring.js.map +1 -0
- package/dist/plugins/request-deduplication.d.ts +27 -0
- package/dist/plugins/request-deduplication.d.ts.map +1 -0
- package/dist/plugins/request-deduplication.js +650 -0
- package/dist/plugins/request-deduplication.js.map +1 -0
- package/dist/plugins/zod-validation.d.ts +63 -0
- package/dist/plugins/zod-validation.d.ts.map +1 -0
- package/dist/plugins/zod-validation.js +743 -0
- package/dist/plugins/zod-validation.js.map +1 -0
- package/dist/types/core.d.ts +203 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +24 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +250 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +8 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/schema.d.ts +68 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +22 -0
- package/dist/types/schema.js.map +1 -0
- package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +355 -0
- package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +309 -0
- package/docs/API.md +600 -0
- package/docs/CONFIGURATION.md +722 -0
- package/docs/FASTAPI_TUTORIAL.md +1497 -0
- package/docs/PLUGINS.md +683 -0
- package/docs/PLUGIN_DEVELOPMENT.md +720 -0
- package/package.json +90 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Object type generator for OpenAPI schema objects
|
|
4
|
+
* Handles generation of TypeScript interfaces from OpenAPI schema objects
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ObjectTypeGenerator = void 0;
|
|
8
|
+
const schema_1 = require("../types/schema");
|
|
9
|
+
const base_1 = require("./base");
|
|
10
|
+
/**
|
|
11
|
+
* Object type generator implementation
|
|
12
|
+
*/
|
|
13
|
+
class ObjectTypeGenerator extends base_1.BaseTypeGenerator {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
}
|
|
17
|
+
generate(schema, context) {
|
|
18
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
19
|
+
throw new Error("Cannot generate object from reference schema");
|
|
20
|
+
}
|
|
21
|
+
const typeName = this.getTypeName(schema, context);
|
|
22
|
+
const dependencies = [];
|
|
23
|
+
// If schema is a pure union (oneOf/anyOf) without own properties, emit a type alias
|
|
24
|
+
if ((schema.oneOf && schema.oneOf.length > 0) ||
|
|
25
|
+
(schema.anyOf && schema.anyOf.length > 0)) {
|
|
26
|
+
const unionSchemas = [...(schema.oneOf || []), ...(schema.anyOf || [])];
|
|
27
|
+
const unionTypes = unionSchemas.map((s) => this.generatePropertyType(s, context, dependencies));
|
|
28
|
+
const content = `export type ${typeName} = ${unionTypes.join(" | ")};\n`;
|
|
29
|
+
const imports = this.generateImports();
|
|
30
|
+
return {
|
|
31
|
+
name: typeName,
|
|
32
|
+
content: imports + content,
|
|
33
|
+
dependencies,
|
|
34
|
+
exports: [typeName],
|
|
35
|
+
isInterface: false,
|
|
36
|
+
isEnum: false,
|
|
37
|
+
isUnion: true,
|
|
38
|
+
sourceSchema: schema,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Generate interface content (supports allOf merging/extends)
|
|
42
|
+
const content = this.generateInterface(schema, context, dependencies);
|
|
43
|
+
// Generate imports
|
|
44
|
+
const imports = this.generateImports();
|
|
45
|
+
// Generate full content
|
|
46
|
+
const fullContent = imports + content;
|
|
47
|
+
return {
|
|
48
|
+
name: typeName,
|
|
49
|
+
content: fullContent,
|
|
50
|
+
dependencies,
|
|
51
|
+
exports: [typeName],
|
|
52
|
+
isInterface: true,
|
|
53
|
+
isEnum: false,
|
|
54
|
+
isUnion: false,
|
|
55
|
+
sourceSchema: schema,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
canHandle(schema) {
|
|
59
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return ((typeof schema.type === "string" && schema.type === "object") ||
|
|
63
|
+
!!(schema.properties && Object.keys(schema.properties).length > 0));
|
|
64
|
+
}
|
|
65
|
+
getPriority() {
|
|
66
|
+
return 100;
|
|
67
|
+
}
|
|
68
|
+
getMetadata() {
|
|
69
|
+
return {
|
|
70
|
+
name: "Object Type Generator",
|
|
71
|
+
version: "1.0.0",
|
|
72
|
+
description: "Generates TypeScript interfaces from OpenAPI schema objects",
|
|
73
|
+
supportedTypes: ["object"],
|
|
74
|
+
supportedFormats: ["json"],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate interface content
|
|
79
|
+
*/
|
|
80
|
+
generateInterface(schema, context, dependencies) {
|
|
81
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
82
|
+
throw new Error("Cannot generate interface from reference schema");
|
|
83
|
+
}
|
|
84
|
+
const typeName = this.getTypeName(schema, context);
|
|
85
|
+
const comment = this.generateComment(schema.description, schema.example);
|
|
86
|
+
let content = "";
|
|
87
|
+
if (comment) {
|
|
88
|
+
content += comment + "\n";
|
|
89
|
+
}
|
|
90
|
+
// Support allOf inheritance: extract first $ref as base and merge inline object props
|
|
91
|
+
let extendsClause = "";
|
|
92
|
+
let workingSchema = schema;
|
|
93
|
+
if (schema.allOf && schema.allOf.length > 0) {
|
|
94
|
+
let baseType;
|
|
95
|
+
const mergedProps = {};
|
|
96
|
+
let mergedRequired;
|
|
97
|
+
for (const s of schema.allOf) {
|
|
98
|
+
if ("$ref" in s && s.$ref) {
|
|
99
|
+
const baseName = this.extractTypeNameFromRef(s.$ref);
|
|
100
|
+
baseType = this.formatTypeName(baseName);
|
|
101
|
+
if (dependencies && baseType && !dependencies.includes(baseType)) {
|
|
102
|
+
dependencies.push(baseType);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if ((0, schema_1.isOpenAPISchemaObject)(s)) {
|
|
106
|
+
if (s.properties) {
|
|
107
|
+
Object.assign(mergedProps, s.properties);
|
|
108
|
+
}
|
|
109
|
+
if (Array.isArray(s.required)) {
|
|
110
|
+
mergedRequired = [...(mergedRequired || []), ...s.required];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (baseType) {
|
|
115
|
+
extendsClause = ` extends ${baseType}`;
|
|
116
|
+
}
|
|
117
|
+
if (Object.keys(mergedProps).length > 0) {
|
|
118
|
+
workingSchema = {
|
|
119
|
+
type: "object",
|
|
120
|
+
properties: mergedProps,
|
|
121
|
+
...(mergedRequired ? { required: mergedRequired } : {}),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
content += `export interface ${typeName}${extendsClause} {\n`;
|
|
126
|
+
if ((0, schema_1.isOpenAPISchemaObject)(workingSchema) && workingSchema.properties) {
|
|
127
|
+
const properties = this.generateProperties(workingSchema, context, dependencies);
|
|
128
|
+
content += properties;
|
|
129
|
+
}
|
|
130
|
+
content += "}\n";
|
|
131
|
+
return content;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Generate properties for the interface
|
|
135
|
+
*/
|
|
136
|
+
generateProperties(schema, context, dependencies) {
|
|
137
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema) || !schema.properties) {
|
|
138
|
+
return "";
|
|
139
|
+
}
|
|
140
|
+
const properties = [];
|
|
141
|
+
for (const [propertyName, propertySchema] of Object.entries(schema.properties)) {
|
|
142
|
+
const property = this.generateProperty(propertyName, propertySchema, schema.required, context, dependencies);
|
|
143
|
+
properties.push(property);
|
|
144
|
+
}
|
|
145
|
+
return properties.map((prop) => ` ${prop}`).join("\n") + "\n";
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate a single property
|
|
149
|
+
*/
|
|
150
|
+
generateProperty(propertyName, propertySchema, required, context, dependencies) {
|
|
151
|
+
const isOptional = this.isOptional(required, propertyName);
|
|
152
|
+
const comment = (0, schema_1.isOpenAPISchemaObject)(propertySchema)
|
|
153
|
+
? this.generateComment(propertySchema.description, propertySchema.example)
|
|
154
|
+
: "";
|
|
155
|
+
let property = "";
|
|
156
|
+
if (comment) {
|
|
157
|
+
property += comment + "\n";
|
|
158
|
+
}
|
|
159
|
+
const type = this.generatePropertyType(propertySchema, context, dependencies);
|
|
160
|
+
const optionalType = this.wrapOptional(type, isOptional);
|
|
161
|
+
const formattedName = this.convertName(propertyName);
|
|
162
|
+
property += `${formattedName}${isOptional ? "?" : ""}: ${optionalType};`;
|
|
163
|
+
return property;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Generate property type
|
|
167
|
+
*/
|
|
168
|
+
generatePropertyType(schema, context, dependencies) {
|
|
169
|
+
// Handle references
|
|
170
|
+
if ("$ref" in schema && schema.$ref) {
|
|
171
|
+
const baseType = this.extractTypeNameFromRef(schema.$ref);
|
|
172
|
+
const refType = this.formatTypeName(baseType);
|
|
173
|
+
if (dependencies && !dependencies.includes(refType)) {
|
|
174
|
+
dependencies.push(refType);
|
|
175
|
+
}
|
|
176
|
+
return refType;
|
|
177
|
+
}
|
|
178
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
179
|
+
return "unknown";
|
|
180
|
+
}
|
|
181
|
+
// Handle arrays
|
|
182
|
+
if (schema.type === "array") {
|
|
183
|
+
const itemType = schema.items
|
|
184
|
+
? this.generatePropertyType(schema.items, context, dependencies)
|
|
185
|
+
: "unknown";
|
|
186
|
+
return `${itemType}[]`;
|
|
187
|
+
}
|
|
188
|
+
// Handle unions (oneOf, anyOf)
|
|
189
|
+
if (schema.oneOf || schema.anyOf) {
|
|
190
|
+
const unionSchemas = [...(schema.oneOf || []), ...(schema.anyOf || [])];
|
|
191
|
+
const unionTypes = unionSchemas.map((s) => this.generatePropertyType(s, context, dependencies));
|
|
192
|
+
return unionTypes.join(" | ");
|
|
193
|
+
}
|
|
194
|
+
// Handle intersections (allOf)
|
|
195
|
+
if (schema.allOf) {
|
|
196
|
+
// Prefer merging/extends at interface level; as a property type use intersection
|
|
197
|
+
const intersectionTypes = schema.allOf.map((s) => this.generatePropertyType(s, context, dependencies));
|
|
198
|
+
return intersectionTypes.join(" & ");
|
|
199
|
+
}
|
|
200
|
+
// Handle object inline typing and dictionaries
|
|
201
|
+
if (schema.type === "object") {
|
|
202
|
+
const hasProps = !!schema.properties && Object.keys(schema.properties).length > 0;
|
|
203
|
+
if (hasProps) {
|
|
204
|
+
const lines = [];
|
|
205
|
+
for (const [propName, propSchema] of Object.entries(schema.properties)) {
|
|
206
|
+
const isOpt = this.isOptional(schema.required, propName);
|
|
207
|
+
const t = this.generatePropertyType(propSchema, context, dependencies);
|
|
208
|
+
const formatted = this.convertName(propName);
|
|
209
|
+
// When emitting inline object body, do not append undefined type inside the object; use '?' only
|
|
210
|
+
const propType = isOpt ? t : t;
|
|
211
|
+
lines.push(`${formatted}${isOpt ? "?" : ""}: ${propType};`);
|
|
212
|
+
}
|
|
213
|
+
return `{
|
|
214
|
+
${lines.join("\n ")}
|
|
215
|
+
}`;
|
|
216
|
+
}
|
|
217
|
+
// Dictionary/object map via additionalProperties
|
|
218
|
+
if (schema.additionalProperties !== undefined) {
|
|
219
|
+
if (schema.additionalProperties === true) {
|
|
220
|
+
return "Record<string, unknown>";
|
|
221
|
+
}
|
|
222
|
+
if (schema.additionalProperties &&
|
|
223
|
+
typeof schema.additionalProperties === "object") {
|
|
224
|
+
const valueType = this.generatePropertyType(schema.additionalProperties, context, dependencies);
|
|
225
|
+
return `Record<string, ${valueType}>`;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Fallback for generic object
|
|
229
|
+
return "Record<string, unknown>";
|
|
230
|
+
}
|
|
231
|
+
// Handle basic types
|
|
232
|
+
if (schema.type) {
|
|
233
|
+
return this.mapSchemaTypeToTypeScript(schema.type, schema.format);
|
|
234
|
+
}
|
|
235
|
+
// Handle enums
|
|
236
|
+
if (schema.enum) {
|
|
237
|
+
return this.generateEnumType(schema.enum);
|
|
238
|
+
}
|
|
239
|
+
// Handle const
|
|
240
|
+
if (schema.const !== undefined) {
|
|
241
|
+
return JSON.stringify(schema.const);
|
|
242
|
+
}
|
|
243
|
+
// Default fallback
|
|
244
|
+
return "unknown";
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Generate enum type
|
|
248
|
+
*/
|
|
249
|
+
generateEnumType(enumValues) {
|
|
250
|
+
const stringValues = enumValues.map((val) => JSON.stringify(val));
|
|
251
|
+
return stringValues.join(" | ");
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get type name from schema
|
|
255
|
+
*/
|
|
256
|
+
getTypeName(schema, context) {
|
|
257
|
+
// Check if type name is already set
|
|
258
|
+
if ("_generatedTypeName" in schema && schema._generatedTypeName) {
|
|
259
|
+
return this.formatTypeName(schema._generatedTypeName);
|
|
260
|
+
}
|
|
261
|
+
// Try to extract from title
|
|
262
|
+
if ((0, schema_1.isOpenAPISchemaObject)(schema) && schema.title) {
|
|
263
|
+
return this.formatTypeName(schema.title);
|
|
264
|
+
}
|
|
265
|
+
// Generate from context if available
|
|
266
|
+
if (context && context.typeRegistry) {
|
|
267
|
+
const existingTypes = context.typeRegistry.getAllTypes();
|
|
268
|
+
let counter = 1;
|
|
269
|
+
let baseName = "GeneratedType";
|
|
270
|
+
while (existingTypes.some((t) => t.name === baseName + (counter > 1 ? counter : ""))) {
|
|
271
|
+
counter++;
|
|
272
|
+
}
|
|
273
|
+
return baseName + (counter > 1 ? counter : "");
|
|
274
|
+
}
|
|
275
|
+
// Fallback
|
|
276
|
+
return "GeneratedType";
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
exports.ObjectTypeGenerator = ObjectTypeGenerator;
|
|
280
|
+
//# sourceMappingURL=object-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-generator.js","sourceRoot":"","sources":["../../src/generators/object-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive type generator for OpenAPI schema primitives
|
|
3
|
+
* Handles generation of TypeScript types for basic OpenAPI schema types
|
|
4
|
+
*/
|
|
5
|
+
import { ResolvedSchema } from "../types/schema";
|
|
6
|
+
import { GenerationContext, GeneratedType } from "../types/core";
|
|
7
|
+
import { BaseTypeGenerator, TypeGenerationOptions } from "./base";
|
|
8
|
+
/**
|
|
9
|
+
* Primitive type generator implementation
|
|
10
|
+
*/
|
|
11
|
+
export declare class PrimitiveTypeGenerator extends BaseTypeGenerator {
|
|
12
|
+
constructor(options: TypeGenerationOptions);
|
|
13
|
+
generate(schema: ResolvedSchema, context: GenerationContext): GeneratedType;
|
|
14
|
+
canHandle(schema: ResolvedSchema): boolean;
|
|
15
|
+
getPriority(): number;
|
|
16
|
+
getMetadata(): {
|
|
17
|
+
name: string;
|
|
18
|
+
version: string;
|
|
19
|
+
description: string;
|
|
20
|
+
supportedTypes: string[];
|
|
21
|
+
supportedFormats: string[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Generate type alias
|
|
25
|
+
*/
|
|
26
|
+
private generateTypeAlias;
|
|
27
|
+
/**
|
|
28
|
+
* Generate TypeScript type from schema
|
|
29
|
+
*/
|
|
30
|
+
private generateType;
|
|
31
|
+
/**
|
|
32
|
+
* Check if schema is a primitive type
|
|
33
|
+
*/
|
|
34
|
+
private isPrimitiveSchema;
|
|
35
|
+
/**
|
|
36
|
+
* Get type name from schema
|
|
37
|
+
*/
|
|
38
|
+
private getTypeName;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=primitive-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-generator.d.ts","sourceRoot":"","sources":["../../src/generators/primitive-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAyB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAElE;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;gBAC/C,OAAO,EAAE,qBAAqB;IAI1C,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa;IA8B3E,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;IA+B1C,WAAW,IAAI,MAAM;IAIrB,WAAW;;;;;;;IAUX;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,WAAW;CAkCpB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Primitive type generator for OpenAPI schema primitives
|
|
4
|
+
* Handles generation of TypeScript types for basic OpenAPI schema types
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PrimitiveTypeGenerator = void 0;
|
|
8
|
+
const schema_1 = require("../types/schema");
|
|
9
|
+
const base_1 = require("./base");
|
|
10
|
+
/**
|
|
11
|
+
* Primitive type generator implementation
|
|
12
|
+
*/
|
|
13
|
+
class PrimitiveTypeGenerator extends base_1.BaseTypeGenerator {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
}
|
|
17
|
+
generate(schema, context) {
|
|
18
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
19
|
+
throw new Error("Cannot generate primitive from reference schema");
|
|
20
|
+
}
|
|
21
|
+
const typeName = this.getTypeName(schema, context);
|
|
22
|
+
const comment = this.generateComment(schema.description, schema.example);
|
|
23
|
+
let content = "";
|
|
24
|
+
if (comment) {
|
|
25
|
+
content += comment + "\n";
|
|
26
|
+
}
|
|
27
|
+
// Generate type alias
|
|
28
|
+
const typeAlias = this.generateTypeAlias(schema, typeName);
|
|
29
|
+
content += typeAlias;
|
|
30
|
+
return {
|
|
31
|
+
name: typeName,
|
|
32
|
+
content,
|
|
33
|
+
dependencies: [],
|
|
34
|
+
exports: [typeName],
|
|
35
|
+
isInterface: false,
|
|
36
|
+
isEnum: false,
|
|
37
|
+
isUnion: false,
|
|
38
|
+
sourceSchema: schema,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
canHandle(schema) {
|
|
42
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// Handle primitive types
|
|
46
|
+
if (schema.type &&
|
|
47
|
+
typeof schema.type === "string" &&
|
|
48
|
+
["string", "number", "integer", "boolean"].includes(schema.type)) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
// Handle const values
|
|
52
|
+
if (schema.const !== undefined) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
// Handle arrays of primitives
|
|
56
|
+
if (schema.type === "array" &&
|
|
57
|
+
schema.items &&
|
|
58
|
+
this.isPrimitiveSchema(schema.items)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
getPriority() {
|
|
64
|
+
return 50; // Lower priority than specialized generators
|
|
65
|
+
}
|
|
66
|
+
getMetadata() {
|
|
67
|
+
return {
|
|
68
|
+
name: "Primitive Type Generator",
|
|
69
|
+
version: "1.0.0",
|
|
70
|
+
description: "Generates TypeScript types for OpenAPI primitive types",
|
|
71
|
+
supportedTypes: ["string", "number", "integer", "boolean", "array"],
|
|
72
|
+
supportedFormats: ["json"],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate type alias
|
|
77
|
+
*/
|
|
78
|
+
generateTypeAlias(schema, typeName) {
|
|
79
|
+
const type = this.generateType(schema);
|
|
80
|
+
return `export type ${typeName} = ${type};\n`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate TypeScript type from schema
|
|
84
|
+
*/
|
|
85
|
+
generateType(schema) {
|
|
86
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
87
|
+
return "unknown";
|
|
88
|
+
}
|
|
89
|
+
// Handle const values
|
|
90
|
+
if (schema.const !== undefined) {
|
|
91
|
+
return JSON.stringify(schema.const);
|
|
92
|
+
}
|
|
93
|
+
// Handle arrays
|
|
94
|
+
if (schema.type === "array") {
|
|
95
|
+
const itemType = schema.items
|
|
96
|
+
? this.generateType(schema.items)
|
|
97
|
+
: "unknown";
|
|
98
|
+
return `${itemType}[]`;
|
|
99
|
+
}
|
|
100
|
+
// Handle basic types
|
|
101
|
+
if (schema.type) {
|
|
102
|
+
return this.mapSchemaTypeToTypeScript(schema.type, schema.format);
|
|
103
|
+
}
|
|
104
|
+
return "unknown";
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if schema is a primitive type
|
|
108
|
+
*/
|
|
109
|
+
isPrimitiveSchema(schema) {
|
|
110
|
+
if (!(0, schema_1.isOpenAPISchemaObject)(schema)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
if (schema.type &&
|
|
114
|
+
typeof schema.type === "string" &&
|
|
115
|
+
["string", "number", "integer", "boolean"].includes(schema.type)) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
if (schema.const !== undefined) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get type name from schema
|
|
125
|
+
*/
|
|
126
|
+
getTypeName(schema, context) {
|
|
127
|
+
// Check if type name is already set
|
|
128
|
+
if ("_generatedTypeName" in schema && schema._generatedTypeName) {
|
|
129
|
+
return this.formatTypeName(schema._generatedTypeName);
|
|
130
|
+
}
|
|
131
|
+
// Try to extract from title
|
|
132
|
+
if ((0, schema_1.isOpenAPISchemaObject)(schema) && schema.title) {
|
|
133
|
+
return this.formatTypeName(schema.title);
|
|
134
|
+
}
|
|
135
|
+
// Generate from context if available
|
|
136
|
+
if (context && context.typeRegistry) {
|
|
137
|
+
const existingTypes = context.typeRegistry.getAllTypes();
|
|
138
|
+
let counter = 1;
|
|
139
|
+
let baseName = "GeneratedPrimitive";
|
|
140
|
+
while (existingTypes.some((t) => t.name === baseName + (counter > 1 ? counter : ""))) {
|
|
141
|
+
counter++;
|
|
142
|
+
}
|
|
143
|
+
return baseName + (counter > 1 ? counter : "");
|
|
144
|
+
}
|
|
145
|
+
// Fallback
|
|
146
|
+
return "GeneratedPrimitive";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.PrimitiveTypeGenerator = PrimitiveTypeGenerator;
|
|
150
|
+
//# sourceMappingURL=primitive-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-generator.js","sourceRoot":"","sources":["../../src/generators/primitive-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for the schemantic package
|
|
3
|
+
* Exports all public APIs and utilities
|
|
4
|
+
*/
|
|
5
|
+
export * from "./core";
|
|
6
|
+
export * from "./types";
|
|
7
|
+
export * from "./parsers";
|
|
8
|
+
export * from "./generators";
|
|
9
|
+
export * from "./plugins";
|
|
10
|
+
export * from "./cli/index";
|
|
11
|
+
export { HookGenerator } from "./generators/hook-generator";
|
|
12
|
+
export type { GeneratedHooksFile } from "./generators/hook-generator";
|
|
13
|
+
export { Schemantic } from "./core/schemantic";
|
|
14
|
+
export { SchemanticConfig, DEFAULT_CONFIG } from "./types/core";
|
|
15
|
+
export { OpenAPISchema } from "./types/openapi";
|
|
16
|
+
export { SchemanticPlugin } from "./types/core";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Main entry point for the schemantic package
|
|
4
|
+
* Exports all public APIs and utilities
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.DEFAULT_CONFIG = exports.Schemantic = exports.HookGenerator = void 0;
|
|
22
|
+
// Core functionality
|
|
23
|
+
__exportStar(require("./core"), exports);
|
|
24
|
+
// Type definitions
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
// Parsers
|
|
27
|
+
__exportStar(require("./parsers"), exports);
|
|
28
|
+
// Generators
|
|
29
|
+
__exportStar(require("./generators"), exports);
|
|
30
|
+
// Plugins
|
|
31
|
+
__exportStar(require("./plugins"), exports);
|
|
32
|
+
// CLI exports
|
|
33
|
+
__exportStar(require("./cli/index"), exports);
|
|
34
|
+
// Hook factory generator (explicit re-exports)
|
|
35
|
+
var hook_generator_1 = require("./generators/hook-generator");
|
|
36
|
+
Object.defineProperty(exports, "HookGenerator", { enumerable: true, get: function () { return hook_generator_1.HookGenerator; } });
|
|
37
|
+
// Re-export commonly used types and utilities
|
|
38
|
+
var schemantic_1 = require("./core/schemantic");
|
|
39
|
+
Object.defineProperty(exports, "Schemantic", { enumerable: true, get: function () { return schemantic_1.Schemantic; } });
|
|
40
|
+
var core_1 = require("./types/core");
|
|
41
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return core_1.DEFAULT_CONFIG; } });
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,qBAAqB;AACrB,yCAAuB;AAEvB,mBAAmB;AACnB,0CAAwB;AAExB,UAAU;AACV,4CAA0B;AAE1B,aAAa;AACb,+CAA6B;AAE7B,UAAU;AACV,4CAA0B;AAE1B,cAAc;AACd,8CAA4B;AAE5B,+CAA+C;AAC/C,8DAA4D;AAAnD,+GAAA,aAAa,OAAA;AAGtB,8CAA8C;AAC9C,gDAA+C;AAAtC,wGAAA,UAAU,OAAA;AACnB,qCAAgE;AAArC,sGAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base parser interface and abstract implementation
|
|
3
|
+
* Provides the foundation for all schema parsers in the schemantic system
|
|
4
|
+
*/
|
|
5
|
+
import { OpenAPISchema } from "../types/openapi";
|
|
6
|
+
import { ResolvedSchema, SchemaResolver } from "../types/schema";
|
|
7
|
+
import { SchemanticConfig, GenerationContext } from "../types/core";
|
|
8
|
+
/**
|
|
9
|
+
* Base interface for all schema parsers
|
|
10
|
+
*/
|
|
11
|
+
export interface SchemaParser<T = OpenAPISchema> {
|
|
12
|
+
/**
|
|
13
|
+
* Parse a schema from various input sources
|
|
14
|
+
*/
|
|
15
|
+
parse(input: SchemaInput): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Validate the parsed schema
|
|
18
|
+
*/
|
|
19
|
+
validate(schema: T): Promise<ValidationResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Create a schema resolver for the parsed schema
|
|
22
|
+
*/
|
|
23
|
+
createResolver(schema: T): SchemaResolver;
|
|
24
|
+
/**
|
|
25
|
+
* Get parser metadata
|
|
26
|
+
*/
|
|
27
|
+
getMetadata(): ParserMetadata;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Input sources for schema parsing
|
|
31
|
+
*/
|
|
32
|
+
export interface SchemaInput {
|
|
33
|
+
url?: string;
|
|
34
|
+
filePath?: string;
|
|
35
|
+
data?: unknown;
|
|
36
|
+
string?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validation result for schema validation
|
|
40
|
+
*/
|
|
41
|
+
export interface ValidationResult {
|
|
42
|
+
isValid: boolean;
|
|
43
|
+
errors: ValidationError[];
|
|
44
|
+
warnings: ValidationWarning[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validation error information
|
|
48
|
+
*/
|
|
49
|
+
export interface ValidationError {
|
|
50
|
+
code: string;
|
|
51
|
+
message: string;
|
|
52
|
+
path: string;
|
|
53
|
+
severity: "error" | "warning";
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Validation warning information
|
|
57
|
+
*/
|
|
58
|
+
export interface ValidationWarning {
|
|
59
|
+
code: string;
|
|
60
|
+
message: string;
|
|
61
|
+
path: string;
|
|
62
|
+
suggestion?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Parser metadata
|
|
66
|
+
*/
|
|
67
|
+
export interface ParserMetadata {
|
|
68
|
+
name: string;
|
|
69
|
+
version: string;
|
|
70
|
+
supportedFormats: string[];
|
|
71
|
+
supportedVersions: string[];
|
|
72
|
+
description: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Abstract base parser implementation
|
|
76
|
+
*/
|
|
77
|
+
export declare abstract class BaseSchemaParser<T = OpenAPISchema> implements SchemaParser<T> {
|
|
78
|
+
protected config: SchemanticConfig;
|
|
79
|
+
constructor(config: SchemanticConfig);
|
|
80
|
+
abstract parse(input: SchemaInput): Promise<T>;
|
|
81
|
+
abstract validate(schema: T): Promise<ValidationResult>;
|
|
82
|
+
abstract createResolver(schema: T): SchemaResolver;
|
|
83
|
+
abstract getMetadata(): ParserMetadata;
|
|
84
|
+
/**
|
|
85
|
+
* Common utility method to resolve references
|
|
86
|
+
*/
|
|
87
|
+
protected resolveReference(ref: string, schema: T): ResolvedSchema | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Traverse schema object using path segments
|
|
90
|
+
*/
|
|
91
|
+
protected traverseSchema(schema: T, path: string[]): ResolvedSchema | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Create a generation context from parsed schema
|
|
94
|
+
*/
|
|
95
|
+
protected createGenerationContext(schema: T): GenerationContext;
|
|
96
|
+
/**
|
|
97
|
+
* Create a type registry instance
|
|
98
|
+
*/
|
|
99
|
+
private createTypeRegistry;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=base.d.ts.map
|