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.
Files changed (131) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/LICENSE +21 -0
  3. package/README.md +827 -0
  4. package/dist/__tests__/setup.d.ts +6 -0
  5. package/dist/__tests__/setup.d.ts.map +1 -0
  6. package/dist/__tests__/setup.js +30 -0
  7. package/dist/__tests__/setup.js.map +1 -0
  8. package/dist/__tests__/test-config.d.ts +36 -0
  9. package/dist/__tests__/test-config.d.ts.map +1 -0
  10. package/dist/__tests__/test-config.js +563 -0
  11. package/dist/__tests__/test-config.js.map +1 -0
  12. package/dist/cli/index.d.ts +118 -0
  13. package/dist/cli/index.d.ts.map +1 -0
  14. package/dist/cli/index.js +657 -0
  15. package/dist/cli/index.js.map +1 -0
  16. package/dist/core/index.d.ts +5 -0
  17. package/dist/core/index.d.ts.map +1 -0
  18. package/dist/core/index.js +21 -0
  19. package/dist/core/index.js.map +1 -0
  20. package/dist/core/schemantic.d.ts +95 -0
  21. package/dist/core/schemantic.d.ts.map +1 -0
  22. package/dist/core/schemantic.js +543 -0
  23. package/dist/core/schemantic.js.map +1 -0
  24. package/dist/generators/api-client-generator.d.ts +145 -0
  25. package/dist/generators/api-client-generator.d.ts.map +1 -0
  26. package/dist/generators/api-client-generator.js +856 -0
  27. package/dist/generators/api-client-generator.js.map +1 -0
  28. package/dist/generators/base.d.ts +117 -0
  29. package/dist/generators/base.d.ts.map +1 -0
  30. package/dist/generators/base.js +232 -0
  31. package/dist/generators/base.js.map +1 -0
  32. package/dist/generators/enum-generator.d.ts +52 -0
  33. package/dist/generators/enum-generator.d.ts.map +1 -0
  34. package/dist/generators/enum-generator.js +178 -0
  35. package/dist/generators/enum-generator.js.map +1 -0
  36. package/dist/generators/factory.d.ts +59 -0
  37. package/dist/generators/factory.d.ts.map +1 -0
  38. package/dist/generators/factory.js +127 -0
  39. package/dist/generators/factory.js.map +1 -0
  40. package/dist/generators/hook-generator.d.ts +36 -0
  41. package/dist/generators/hook-generator.d.ts.map +1 -0
  42. package/dist/generators/hook-generator.js +495 -0
  43. package/dist/generators/hook-generator.js.map +1 -0
  44. package/dist/generators/index.d.ts +10 -0
  45. package/dist/generators/index.d.ts.map +1 -0
  46. package/dist/generators/index.js +26 -0
  47. package/dist/generators/index.js.map +1 -0
  48. package/dist/generators/object-generator.d.ts +48 -0
  49. package/dist/generators/object-generator.d.ts.map +1 -0
  50. package/dist/generators/object-generator.js +280 -0
  51. package/dist/generators/object-generator.js.map +1 -0
  52. package/dist/generators/primitive-generator.d.ts +40 -0
  53. package/dist/generators/primitive-generator.d.ts.map +1 -0
  54. package/dist/generators/primitive-generator.js +150 -0
  55. package/dist/generators/primitive-generator.js.map +1 -0
  56. package/dist/index.d.ts +17 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +42 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/parsers/base.d.ts +101 -0
  61. package/dist/parsers/base.d.ts.map +1 -0
  62. package/dist/parsers/base.js +77 -0
  63. package/dist/parsers/base.js.map +1 -0
  64. package/dist/parsers/factory.d.ts +64 -0
  65. package/dist/parsers/factory.d.ts.map +1 -0
  66. package/dist/parsers/factory.js +116 -0
  67. package/dist/parsers/factory.js.map +1 -0
  68. package/dist/parsers/index.d.ts +7 -0
  69. package/dist/parsers/index.d.ts.map +1 -0
  70. package/dist/parsers/index.js +23 -0
  71. package/dist/parsers/index.js.map +1 -0
  72. package/dist/parsers/openapi.d.ts +52 -0
  73. package/dist/parsers/openapi.d.ts.map +1 -0
  74. package/dist/parsers/openapi.js +396 -0
  75. package/dist/parsers/openapi.js.map +1 -0
  76. package/dist/plugins/branded-types.d.ts +28 -0
  77. package/dist/plugins/branded-types.d.ts.map +1 -0
  78. package/dist/plugins/branded-types.js +568 -0
  79. package/dist/plugins/branded-types.js.map +1 -0
  80. package/dist/plugins/builtin.d.ts +38 -0
  81. package/dist/plugins/builtin.d.ts.map +1 -0
  82. package/dist/plugins/builtin.js +283 -0
  83. package/dist/plugins/builtin.js.map +1 -0
  84. package/dist/plugins/index.d.ts +7 -0
  85. package/dist/plugins/index.d.ts.map +1 -0
  86. package/dist/plugins/index.js +23 -0
  87. package/dist/plugins/index.js.map +1 -0
  88. package/dist/plugins/loader.d.ts +92 -0
  89. package/dist/plugins/loader.d.ts.map +1 -0
  90. package/dist/plugins/loader.js +245 -0
  91. package/dist/plugins/loader.js.map +1 -0
  92. package/dist/plugins/manager.d.ts +99 -0
  93. package/dist/plugins/manager.d.ts.map +1 -0
  94. package/dist/plugins/manager.js +233 -0
  95. package/dist/plugins/manager.js.map +1 -0
  96. package/dist/plugins/performance-monitoring.d.ts +98 -0
  97. package/dist/plugins/performance-monitoring.d.ts.map +1 -0
  98. package/dist/plugins/performance-monitoring.js +596 -0
  99. package/dist/plugins/performance-monitoring.js.map +1 -0
  100. package/dist/plugins/request-deduplication.d.ts +27 -0
  101. package/dist/plugins/request-deduplication.d.ts.map +1 -0
  102. package/dist/plugins/request-deduplication.js +650 -0
  103. package/dist/plugins/request-deduplication.js.map +1 -0
  104. package/dist/plugins/zod-validation.d.ts +63 -0
  105. package/dist/plugins/zod-validation.d.ts.map +1 -0
  106. package/dist/plugins/zod-validation.js +743 -0
  107. package/dist/plugins/zod-validation.js.map +1 -0
  108. package/dist/types/core.d.ts +203 -0
  109. package/dist/types/core.d.ts.map +1 -0
  110. package/dist/types/core.js +24 -0
  111. package/dist/types/core.js.map +1 -0
  112. package/dist/types/index.d.ts +7 -0
  113. package/dist/types/index.d.ts.map +1 -0
  114. package/dist/types/index.js +23 -0
  115. package/dist/types/index.js.map +1 -0
  116. package/dist/types/openapi.d.ts +250 -0
  117. package/dist/types/openapi.d.ts.map +1 -0
  118. package/dist/types/openapi.js +8 -0
  119. package/dist/types/openapi.js.map +1 -0
  120. package/dist/types/schema.d.ts +68 -0
  121. package/dist/types/schema.d.ts.map +1 -0
  122. package/dist/types/schema.js +22 -0
  123. package/dist/types/schema.js.map +1 -0
  124. package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +355 -0
  125. package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +309 -0
  126. package/docs/API.md +600 -0
  127. package/docs/CONFIGURATION.md +722 -0
  128. package/docs/FASTAPI_TUTORIAL.md +1497 -0
  129. package/docs/PLUGINS.md +683 -0
  130. package/docs/PLUGIN_DEVELOPMENT.md +720 -0
  131. 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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"}
@@ -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