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,543 @@
1
+ "use strict";
2
+ /**
3
+ * Main Schemantic class
4
+ * Orchestrates the entire type generation process
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Schemantic = exports.DEFAULT_CONFIG = void 0;
41
+ const fs = __importStar(require("fs/promises"));
42
+ const path = __importStar(require("path"));
43
+ // Re-export commonly used types and constants
44
+ var core_1 = require("../types/core");
45
+ Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return core_1.DEFAULT_CONFIG; } });
46
+ const parsers_1 = require("../parsers");
47
+ const generators_1 = require("../generators");
48
+ const api_client_generator_1 = require("../generators/api-client-generator");
49
+ const hook_generator_1 = require("../generators/hook-generator");
50
+ const plugins_1 = require("../plugins");
51
+ /**
52
+ * Main Schemantic class
53
+ */
54
+ class Schemantic {
55
+ constructor(config) {
56
+ this.resolvedSchemas = new Map();
57
+ this.config = config;
58
+ this.pluginManager = new plugins_1.PluginManager();
59
+ this.typeRegistry = this.createTypeRegistry();
60
+ }
61
+ /**
62
+ * Generate types and API client
63
+ */
64
+ async generate() {
65
+ const startTime = Date.now();
66
+ const errors = [];
67
+ const warnings = [];
68
+ const generatedFiles = [];
69
+ try {
70
+ // Load and parse schema
71
+ const schema = await this.loadSchema();
72
+ this.schema = schema;
73
+ // Create generation context
74
+ const context = this.createGenerationContext();
75
+ // Execute before generation hooks
76
+ await this.pluginManager.executeBeforeGeneration(context);
77
+ // Resolve all schema references
78
+ await this.resolveSchemaReferences(schema);
79
+ // Generate types
80
+ let generatedTypes = [];
81
+ if (this.config.generateTypes) {
82
+ generatedTypes = await this.generateTypes(context);
83
+ }
84
+ // Generate API client
85
+ let generatedClients = [];
86
+ if (this.config.generateApiClient) {
87
+ generatedClients = await this.generateApiClients(context);
88
+ }
89
+ // Generate files
90
+ const files = await this.generateFiles(generatedTypes, generatedClients);
91
+ generatedFiles.push(...files);
92
+ // Execute after generation hooks
93
+ const result = {
94
+ success: true,
95
+ generatedFiles,
96
+ errors,
97
+ warnings,
98
+ statistics: this.calculateStatistics(generatedTypes, generatedClients, generatedFiles, Date.now() - startTime),
99
+ };
100
+ await this.pluginManager.executeAfterGeneration(context, result);
101
+ return result;
102
+ }
103
+ catch (error) {
104
+ errors.push({
105
+ code: "GENERATION_ERROR",
106
+ message: error instanceof Error ? error.message : String(error),
107
+ severity: "error",
108
+ });
109
+ return {
110
+ success: false,
111
+ generatedFiles,
112
+ errors,
113
+ warnings,
114
+ statistics: this.calculateStatistics([], [], generatedFiles, Date.now() - startTime),
115
+ };
116
+ }
117
+ }
118
+ /**
119
+ * Validate OpenAPI schema
120
+ */
121
+ async validate() {
122
+ try {
123
+ const schema = await this.loadSchema();
124
+ const parser = parsers_1.ParserFactory.autoCreateParser({ data: schema }, this.config);
125
+ return await parser.validate(schema);
126
+ }
127
+ catch (error) {
128
+ return {
129
+ isValid: false,
130
+ errors: [
131
+ {
132
+ code: "VALIDATION_ERROR",
133
+ message: error instanceof Error ? error.message : String(error),
134
+ severity: "error",
135
+ },
136
+ ],
137
+ warnings: [],
138
+ };
139
+ }
140
+ }
141
+ /**
142
+ * Load schema from various sources
143
+ */
144
+ async loadSchema() {
145
+ let input = {};
146
+ if (this.config.schemaUrl) {
147
+ input.url = this.config.schemaUrl;
148
+ }
149
+ else if (this.config.schemaFile) {
150
+ input.filePath = this.config.schemaFile;
151
+ }
152
+ else if (this.config.schemaData) {
153
+ input.data = this.config.schemaData;
154
+ }
155
+ else {
156
+ throw new Error("No schema source provided");
157
+ }
158
+ const parser = parsers_1.ParserFactory.autoCreateParser(input, this.config);
159
+ return await parser.parse(input);
160
+ }
161
+ /**
162
+ * Create generation context
163
+ */
164
+ createGenerationContext() {
165
+ return {
166
+ config: this.config,
167
+ schema: this.schema,
168
+ resolvedSchemas: this.resolvedSchemas,
169
+ generatedTypes: new Map(),
170
+ generatedClients: new Map(),
171
+ typeRegistry: this.typeRegistry,
172
+ schemaResolver: (ref) => this.resolvedSchemas.get(ref),
173
+ };
174
+ }
175
+ /**
176
+ * Resolve schema references
177
+ */
178
+ async resolveSchemaReferences(schema) {
179
+ if (!schema.components?.schemas) {
180
+ return;
181
+ }
182
+ // Resolve all schemas
183
+ for (const [name, schemaRef] of Object.entries(schema.components.schemas)) {
184
+ if (typeof schemaRef === "object" && schemaRef !== null) {
185
+ // Stamp a stable generated type name to match $ref terminal name
186
+ schemaRef._generatedTypeName = name;
187
+ this.resolvedSchemas.set(`#/components/schemas/${name}`, schemaRef);
188
+ }
189
+ }
190
+ }
191
+ /**
192
+ * Generate types from schemas
193
+ */
194
+ async generateTypes(context) {
195
+ const generators = generators_1.TypeGeneratorFactory.createFromConfig(this.config);
196
+ const generatedTypes = [];
197
+ // Generate types for each schema
198
+ for (const [ref, schema] of this.resolvedSchemas) {
199
+ // Apply schema transformations
200
+ const transformedSchema = this.pluginManager.transformSchema(schema, context);
201
+ // Execute before type generation hooks
202
+ await this.pluginManager.executeBeforeTypeGeneration(ref, transformedSchema, context);
203
+ // Generate type
204
+ const generatedType = generators_1.TypeGeneratorFactory.generateType(transformedSchema, context, generators);
205
+ if (generatedType) {
206
+ // Register type
207
+ this.typeRegistry.registerType(generatedType.name, generatedType);
208
+ context.generatedTypes.set(generatedType.name, generatedType);
209
+ // Execute after type generation hooks
210
+ await this.pluginManager.executeAfterTypeGeneration(generatedType.name, generatedType, context);
211
+ generatedTypes.push(generatedType);
212
+ }
213
+ }
214
+ return generatedTypes;
215
+ }
216
+ /**
217
+ * Generate API clients
218
+ */
219
+ async generateApiClients(context) {
220
+ const generatedClients = [];
221
+ // Execute before client generation hooks
222
+ await this.pluginManager.executeBeforeClientGeneration(context);
223
+ // Generate main API client
224
+ const apiClientGenerator = new api_client_generator_1.ApiClientGenerator(context);
225
+ const generatedClient = apiClientGenerator.generate(context);
226
+ // Register client
227
+ context.generatedClients.set(generatedClient.name, generatedClient);
228
+ // Execute after client generation hooks
229
+ await this.pluginManager.executeAfterClientGeneration(generatedClient, context);
230
+ generatedClients.push(generatedClient);
231
+ // Generate custom clients from plugins
232
+ const customGenerators = this.pluginManager.getCustomClientGenerators();
233
+ for (const [name, generator] of customGenerators) {
234
+ try {
235
+ const customClient = generator(context);
236
+ context.generatedClients.set(customClient.name, customClient);
237
+ generatedClients.push(customClient);
238
+ }
239
+ catch (error) {
240
+ console.warn(`Custom client generator ${name} failed:`, error);
241
+ }
242
+ }
243
+ return generatedClients;
244
+ }
245
+ /**
246
+ * Generate files from generated types and clients
247
+ */
248
+ async generateFiles(generatedTypes, generatedClients) {
249
+ const files = [];
250
+ // Ensure output directory exists
251
+ await fs.mkdir(this.config.outputDir, { recursive: true });
252
+ // Generate types file
253
+ if (generatedTypes.length > 0) {
254
+ const typesFile = await this.generateTypesFile(generatedTypes);
255
+ files.push(typesFile);
256
+ }
257
+ // Generate client files
258
+ for (const client of generatedClients) {
259
+ const clientFile = await this.generateClientFile(client);
260
+ files.push(clientFile);
261
+ }
262
+ // Generate hooks file (first-party) when enabled
263
+ if (this.config.generateHooks) {
264
+ const hooksFile = await this.generateHooksFile();
265
+ if (hooksFile)
266
+ files.push(hooksFile);
267
+ }
268
+ // Generate index file
269
+ if (this.config.generateIndexFile) {
270
+ const indexFile = await this.generateIndexFile(generatedTypes, generatedClients);
271
+ files.push(indexFile);
272
+ }
273
+ // Generate barrel exports
274
+ if (this.config.generateBarrelExports) {
275
+ const barrelFile = await this.generateBarrelFile(generatedTypes, generatedClients);
276
+ files.push(barrelFile);
277
+ }
278
+ return files;
279
+ }
280
+ /**
281
+ * Generate types file
282
+ */
283
+ async generateTypesFile(generatedTypes) {
284
+ // Collect all dependencies
285
+ const allDependencies = [
286
+ ...new Set(generatedTypes.flatMap((t) => t.dependencies)),
287
+ ];
288
+ // Generate imports from dependencies
289
+ const imports = this.generateImportsFromDependencies(allDependencies);
290
+ // Generate types content (remove any existing imports from individual types)
291
+ const typesContent = generatedTypes
292
+ .map((type) => {
293
+ // Remove any import statements from the type content
294
+ return type.content
295
+ .replace(/^import\s+.*?from\s+['"][^'"]*['"];?\s*$/gm, "")
296
+ .trim();
297
+ })
298
+ .filter((content) => content.length > 0);
299
+ const content = imports + typesContent.join("\n\n");
300
+ const filePath = path.join(this.config.outputDir, "types.ts");
301
+ await fs.writeFile(filePath, content, "utf-8");
302
+ return {
303
+ path: filePath,
304
+ content,
305
+ type: "type",
306
+ dependencies: allDependencies,
307
+ size: Buffer.byteLength(content, "utf-8"),
308
+ };
309
+ }
310
+ /**
311
+ * Generate client file
312
+ */
313
+ async generateClientFile(client) {
314
+ // Default to a clean, predictable filename when not provided
315
+ const fileName = this.config.outputFileName || `api-client.ts`;
316
+ const filePath = path.join(this.config.outputDir, fileName);
317
+ await fs.writeFile(filePath, client.content, "utf-8");
318
+ return {
319
+ path: filePath,
320
+ content: client.content,
321
+ type: "client",
322
+ dependencies: client.dependencies,
323
+ size: Buffer.byteLength(client.content, "utf-8"),
324
+ };
325
+ }
326
+ /**
327
+ * Generate index file
328
+ */
329
+ async generateIndexFile(generatedTypes, generatedClients) {
330
+ const exports = [];
331
+ // Export types - filter out generic instances
332
+ const allTypeExports = generatedTypes.flatMap((type) => type.exports);
333
+ if (allTypeExports.length > 0) {
334
+ // Filter out generic instances and keep only base types
335
+ const baseTypes = new Set();
336
+ for (const exportName of allTypeExports) {
337
+ if (exportName.includes("<") && exportName.includes(">")) {
338
+ // Extract base type name from generic type
339
+ const baseName = exportName.split("<")[0];
340
+ if (baseName && baseName.trim()) {
341
+ baseTypes.add(baseName);
342
+ }
343
+ }
344
+ else {
345
+ baseTypes.add(exportName);
346
+ }
347
+ }
348
+ if (baseTypes.size > 0) {
349
+ exports.push(`export type { ${Array.from(baseTypes).join(", ")} } from './types';`);
350
+ }
351
+ }
352
+ // Export clients
353
+ for (const client of generatedClients) {
354
+ // Re-export only values, not types
355
+ const valueExports = client.exports.filter((e) => e.endsWith("ApiClient"));
356
+ if (valueExports.length > 0) {
357
+ // Use configured output file name or default 'api-client.ts'
358
+ const clientFileBase = (this.config.outputFileName || `api-client.ts`).replace(/\.ts$/, "");
359
+ exports.push(`export { ${valueExports.join(", ")} } from './${clientFileBase}';`);
360
+ }
361
+ }
362
+ // Export hooks if generated
363
+ if (this.config.generateHooks) {
364
+ exports.push(`export { createApiHooks } from './hooks';`);
365
+ }
366
+ const content = exports
367
+ .map((line) => line.startsWith("export type") || line.includes(" from ") ? line : line)
368
+ .join("\n");
369
+ const filePath = path.join(this.config.outputDir, "index.ts");
370
+ await fs.writeFile(filePath, content, "utf-8");
371
+ return {
372
+ path: filePath,
373
+ content,
374
+ type: "index",
375
+ dependencies: [],
376
+ size: Buffer.byteLength(content, "utf-8"),
377
+ };
378
+ }
379
+ /**
380
+ * Generate barrel file
381
+ */
382
+ async generateBarrelFile(_generatedTypes, _generatedClients) {
383
+ const clientFileBase = (this.config.outputFileName || `api-client.ts`).replace(/\.ts$/, "");
384
+ const content = `// Barrel exports for schemantic generated code
385
+ export * from './types';
386
+ export * from './${clientFileBase}';
387
+ export * from './hooks';
388
+ `;
389
+ const filePath = path.join(this.config.outputDir, "barrel.ts");
390
+ await fs.writeFile(filePath, content, "utf-8");
391
+ return {
392
+ path: filePath,
393
+ content,
394
+ type: "barrel",
395
+ dependencies: [],
396
+ size: Buffer.byteLength(content, "utf-8"),
397
+ };
398
+ }
399
+ /**
400
+ * Generate hooks file when enabled
401
+ */
402
+ async generateHooksFile() {
403
+ try {
404
+ const hookGen = new hook_generator_1.HookGenerator(this.createGenerationContext());
405
+ const hooks = hookGen.generate();
406
+ const filePath = path.join(this.config.outputDir, "hooks.ts");
407
+ await fs.writeFile(filePath, hooks.content, "utf-8");
408
+ return {
409
+ path: filePath,
410
+ content: hooks.content,
411
+ type: "hook",
412
+ dependencies: [],
413
+ size: Buffer.byteLength(hooks.content, "utf-8"),
414
+ };
415
+ }
416
+ catch {
417
+ // Non-fatal: skip hooks on error
418
+ return undefined;
419
+ }
420
+ }
421
+ /**
422
+ * Calculate generation statistics
423
+ */
424
+ calculateStatistics(generatedTypes, generatedClients, generatedFiles, generationTime) {
425
+ const totalEndpoints = generatedClients.reduce((sum, client) => sum + client.endpoints.length, 0);
426
+ const totalSize = generatedFiles.reduce((sum, file) => sum + file.size, 0);
427
+ return {
428
+ totalTypes: generatedTypes.length,
429
+ totalEndpoints,
430
+ totalFiles: generatedFiles.length,
431
+ totalSize,
432
+ generationTime,
433
+ schemaSize: this.schema ? JSON.stringify(this.schema).length : 0,
434
+ };
435
+ }
436
+ /**
437
+ * Create type registry
438
+ */
439
+ createTypeRegistry() {
440
+ const types = new Map();
441
+ return {
442
+ registerType: (name, type) => {
443
+ types.set(name, type);
444
+ },
445
+ getType: (name) => types.get(name),
446
+ getAllTypes: () => Array.from(types.values()),
447
+ getDependencies: (name) => {
448
+ const type = types.get(name);
449
+ return type ? type.dependencies : [];
450
+ },
451
+ resolveDependencies: () => {
452
+ const resolved = [];
453
+ const visited = new Set();
454
+ const resolve = (typeName) => {
455
+ if (visited.has(typeName))
456
+ return;
457
+ visited.add(typeName);
458
+ const type = types.get(typeName);
459
+ if (type) {
460
+ for (const dep of type.dependencies) {
461
+ resolve(dep);
462
+ }
463
+ resolved.push(typeName);
464
+ }
465
+ };
466
+ for (const typeName of types.keys()) {
467
+ resolve(typeName);
468
+ }
469
+ return resolved;
470
+ },
471
+ };
472
+ }
473
+ /**
474
+ * Get plugin manager
475
+ */
476
+ getPluginManager() {
477
+ return this.pluginManager;
478
+ }
479
+ /**
480
+ * Get configuration
481
+ */
482
+ getConfig() {
483
+ return this.config;
484
+ }
485
+ /**
486
+ * Generate import statements from dependencies
487
+ */
488
+ generateImportsFromDependencies(dependencies) {
489
+ if (dependencies.length === 0) {
490
+ return "";
491
+ }
492
+ const imports = [];
493
+ // Known external package dependencies that should generate imports
494
+ const KNOWN_EXTERNAL_PACKAGES = new Set([
495
+ "zod",
496
+ "class-validator",
497
+ "react-query",
498
+ "crypto-js",
499
+ "performance-hooks",
500
+ "axios",
501
+ "fetch",
502
+ ]);
503
+ // Generate import statements for known external dependencies only
504
+ for (const dep of dependencies) {
505
+ // Only generate imports for known external packages
506
+ // Skip type names that are defined in the same file
507
+ if (!KNOWN_EXTERNAL_PACKAGES.has(dep)) {
508
+ continue; // Skip internal type references
509
+ }
510
+ switch (dep) {
511
+ case "zod":
512
+ imports.push("import { z } from 'zod';");
513
+ break;
514
+ case "class-validator":
515
+ imports.push("import { IsString, IsNumber, IsBoolean, IsOptional, IsNotEmpty, MinLength, MaxLength, Min, Max, Matches } from 'class-validator';");
516
+ break;
517
+ case "react-query":
518
+ imports.push("import { useQuery, useMutation, useQueryClient } from 'react-query';");
519
+ break;
520
+ case "crypto-js":
521
+ imports.push("import CryptoJS from 'crypto-js';");
522
+ break;
523
+ case "performance-hooks":
524
+ imports.push("import { performance } from 'perf_hooks';");
525
+ break;
526
+ case "axios":
527
+ imports.push("import axios from 'axios';");
528
+ break;
529
+ case "fetch":
530
+ // fetch is a global in modern environments, no import needed
531
+ break;
532
+ // Add more external dependencies as needed
533
+ default:
534
+ // Should not reach here due to the filter above
535
+ console.warn(`Unknown external dependency: ${dep}`);
536
+ break;
537
+ }
538
+ }
539
+ return imports.length > 0 ? imports.join("\n") + "\n\n" : "";
540
+ }
541
+ }
542
+ exports.Schemantic = Schemantic;
543
+ //# sourceMappingURL=schemantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemantic.js","sourceRoot":"","sources":["../../src/core/schemantic.ts"],"names":[],"mappings":"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"}