schemantic 0.2.1 → 0.4.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 (144) hide show
  1. package/CHANGELOG.md +196 -159
  2. package/LICENSE +21 -21
  3. package/README.md +88 -830
  4. package/dist/cli/index.d.ts +4 -1
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +186 -62
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/configuration.d.ts +6 -0
  9. package/dist/core/configuration.d.ts.map +1 -0
  10. package/dist/core/configuration.js +64 -0
  11. package/dist/core/configuration.js.map +1 -0
  12. package/dist/core/index.d.ts +1 -0
  13. package/dist/core/index.d.ts.map +1 -1
  14. package/dist/core/index.js +1 -0
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/output-writer.d.ts +7 -0
  17. package/dist/core/output-writer.d.ts.map +1 -0
  18. package/dist/core/output-writer.js +255 -0
  19. package/dist/core/output-writer.js.map +1 -0
  20. package/dist/core/schemantic.d.ts +8 -6
  21. package/dist/core/schemantic.d.ts.map +1 -1
  22. package/dist/core/schemantic.js +194 -127
  23. package/dist/core/schemantic.js.map +1 -1
  24. package/dist/generators/api-client-generator.d.ts +9 -20
  25. package/dist/generators/api-client-generator.d.ts.map +1 -1
  26. package/dist/generators/api-client-generator.js +364 -424
  27. package/dist/generators/api-client-generator.js.map +1 -1
  28. package/dist/generators/base.d.ts.map +1 -1
  29. package/dist/generators/base.js +7 -25
  30. package/dist/generators/base.js.map +1 -1
  31. package/dist/generators/enum-generator.d.ts.map +1 -1
  32. package/dist/generators/enum-generator.js +30 -3
  33. package/dist/generators/enum-generator.js.map +1 -1
  34. package/dist/generators/hook-generator.d.ts +3 -17
  35. package/dist/generators/hook-generator.d.ts.map +1 -1
  36. package/dist/generators/hook-generator.js +51 -445
  37. package/dist/generators/hook-generator.js.map +1 -1
  38. package/dist/generators/naming.d.ts +10 -0
  39. package/dist/generators/naming.d.ts.map +1 -0
  40. package/dist/generators/naming.js +331 -0
  41. package/dist/generators/naming.js.map +1 -0
  42. package/dist/generators/object-generator.d.ts +0 -4
  43. package/dist/generators/object-generator.d.ts.map +1 -1
  44. package/dist/generators/object-generator.js +13 -101
  45. package/dist/generators/object-generator.js.map +1 -1
  46. package/dist/generators/primitive-generator.d.ts +1 -13
  47. package/dist/generators/primitive-generator.d.ts.map +1 -1
  48. package/dist/generators/primitive-generator.js +11 -76
  49. package/dist/generators/primitive-generator.js.map +1 -1
  50. package/dist/generators/projections.d.ts +10 -0
  51. package/dist/generators/projections.d.ts.map +1 -0
  52. package/dist/generators/projections.js +65 -0
  53. package/dist/generators/projections.js.map +1 -0
  54. package/dist/generators/schema-type.d.ts +23 -0
  55. package/dist/generators/schema-type.d.ts.map +1 -0
  56. package/dist/generators/schema-type.js +233 -0
  57. package/dist/generators/schema-type.js.map +1 -0
  58. package/dist/parsers/base.d.ts +2 -0
  59. package/dist/parsers/base.d.ts.map +1 -1
  60. package/dist/parsers/base.js +12 -2
  61. package/dist/parsers/base.js.map +1 -1
  62. package/dist/parsers/factory.d.ts.map +1 -1
  63. package/dist/parsers/factory.js +2 -1
  64. package/dist/parsers/factory.js.map +1 -1
  65. package/dist/parsers/openapi.d.ts +4 -0
  66. package/dist/parsers/openapi.d.ts.map +1 -1
  67. package/dist/parsers/openapi.js +107 -20
  68. package/dist/parsers/openapi.js.map +1 -1
  69. package/dist/plugins/branded-types.d.ts.map +1 -1
  70. package/dist/plugins/branded-types.js +231 -365
  71. package/dist/plugins/branded-types.js.map +1 -1
  72. package/dist/plugins/builtin.d.ts.map +1 -1
  73. package/dist/plugins/builtin.js +6 -141
  74. package/dist/plugins/builtin.js.map +1 -1
  75. package/dist/plugins/index.d.ts +4 -0
  76. package/dist/plugins/index.d.ts.map +1 -1
  77. package/dist/plugins/index.js +17 -0
  78. package/dist/plugins/index.js.map +1 -1
  79. package/dist/plugins/loader.d.ts +5 -1
  80. package/dist/plugins/loader.d.ts.map +1 -1
  81. package/dist/plugins/loader.js +42 -5
  82. package/dist/plugins/loader.js.map +1 -1
  83. package/dist/plugins/manager.d.ts.map +1 -1
  84. package/dist/plugins/manager.js +7 -7
  85. package/dist/plugins/manager.js.map +1 -1
  86. package/dist/plugins/performance-monitoring.d.ts +31 -1
  87. package/dist/plugins/performance-monitoring.d.ts.map +1 -1
  88. package/dist/plugins/performance-monitoring.js +146 -207
  89. package/dist/plugins/performance-monitoring.js.map +1 -1
  90. package/dist/plugins/request-deduplication.d.ts.map +1 -1
  91. package/dist/plugins/request-deduplication.js +151 -586
  92. package/dist/plugins/request-deduplication.js.map +1 -1
  93. package/dist/plugins/zod-validation.d.ts +23 -15
  94. package/dist/plugins/zod-validation.d.ts.map +1 -1
  95. package/dist/plugins/zod-validation.js +390 -268
  96. package/dist/plugins/zod-validation.js.map +1 -1
  97. package/dist/types/core.d.ts +20 -4
  98. package/dist/types/core.d.ts.map +1 -1
  99. package/dist/types/core.js +2 -1
  100. package/dist/types/core.js.map +1 -1
  101. package/dist/types/openapi.d.ts +14 -1
  102. package/dist/types/openapi.d.ts.map +1 -1
  103. package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +24 -355
  104. package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +33 -309
  105. package/docs/API.md +80 -600
  106. package/docs/AUDIT.md +49 -0
  107. package/docs/CONFIGURATION.md +81 -722
  108. package/docs/FASTAPI_TUTORIAL.md +109 -1497
  109. package/docs/NAMING_MIGRATION.md +59 -0
  110. package/docs/PLUGINS.md +49 -687
  111. package/docs/PLUGIN_DEVELOPMENT.md +53 -720
  112. package/docs/REAUDIT.md +399 -0
  113. package/docs/RELEASING.md +88 -0
  114. package/docs/REMEDIATION.md +58 -0
  115. package/docs/superpowers/plans/2026-10-10-audit-remediation.md +113 -0
  116. package/package.json +114 -95
  117. package/dist/__tests__/setup.d.ts +0 -6
  118. package/dist/__tests__/setup.d.ts.map +0 -1
  119. package/dist/__tests__/setup.js +0 -30
  120. package/dist/__tests__/setup.js.map +0 -1
  121. package/dist/__tests__/test-config.d.ts +0 -36
  122. package/dist/__tests__/test-config.d.ts.map +0 -1
  123. package/dist/__tests__/test-config.js +0 -563
  124. package/dist/__tests__/test-config.js.map +0 -1
  125. package/dist/lib/api/api-client.d.ts +0 -71
  126. package/dist/lib/api/api-client.d.ts.map +0 -1
  127. package/dist/lib/api/api-client.js +0 -238
  128. package/dist/lib/api/api-client.js.map +0 -1
  129. package/dist/lib/api/barrel.d.ts +0 -4
  130. package/dist/lib/api/barrel.d.ts.map +0 -1
  131. package/dist/lib/api/barrel.js +0 -26
  132. package/dist/lib/api/barrel.js.map +0 -1
  133. package/dist/lib/api/hooks.d.ts +0 -36
  134. package/dist/lib/api/hooks.d.ts.map +0 -1
  135. package/dist/lib/api/hooks.js +0 -120
  136. package/dist/lib/api/hooks.js.map +0 -1
  137. package/dist/lib/api/index.d.ts +0 -4
  138. package/dist/lib/api/index.d.ts.map +0 -1
  139. package/dist/lib/api/index.js +0 -8
  140. package/dist/lib/api/index.js.map +0 -1
  141. package/dist/lib/api/types.d.ts +0 -366
  142. package/dist/lib/api/types.d.ts.map +0 -1
  143. package/dist/lib/api/types.js +0 -315
  144. package/dist/lib/api/types.js.map +0 -1
@@ -38,7 +38,6 @@ var __importStar = (this && this.__importStar) || (function () {
38
38
  })();
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Schemantic = exports.DEFAULT_CONFIG = void 0;
41
- const fs = __importStar(require("fs/promises"));
42
41
  const path = __importStar(require("path"));
43
42
  // Re-export commonly used types and constants
44
43
  var core_1 = require("../types/core");
@@ -48,14 +47,23 @@ const generators_1 = require("../generators");
48
47
  const api_client_generator_1 = require("../generators/api-client-generator");
49
48
  const hook_generator_1 = require("../generators/hook-generator");
50
49
  const plugins_1 = require("../plugins");
50
+ const schema_type_1 = require("../generators/schema-type");
51
+ const configuration_1 = require("./configuration");
52
+ const output_writer_1 = require("./output-writer");
53
+ const projections_1 = require("../generators/projections");
54
+ const naming_1 = require("../generators/naming");
51
55
  /**
52
56
  * Main Schemantic class
53
57
  */
54
58
  class Schemantic {
55
59
  constructor(config) {
56
60
  this.resolvedSchemas = new Map();
57
- this.config = config;
61
+ this.clientFileNames = new Map();
62
+ this.projections = {};
63
+ this.config = (0, configuration_1.resolveConfiguration)(config);
58
64
  this.pluginManager = new plugins_1.PluginManager();
65
+ for (const plugin of (0, plugins_1.getBuiltinPlugins)())
66
+ this.pluginManager.registerPlugin(plugin);
59
67
  this.typeRegistry = this.createTypeRegistry();
60
68
  }
61
69
  /**
@@ -67,8 +75,36 @@ class Schemantic {
67
75
  const warnings = [];
68
76
  const generatedFiles = [];
69
77
  try {
78
+ this.config = (0, configuration_1.resolveConfiguration)(this.config);
79
+ if (this.config.generateHooks && !this.config.generateApiClient)
80
+ throw new Error('React hooks require API client generation');
81
+ for (const plugin of this.config.plugins || []) {
82
+ if (plugin.enabled) {
83
+ if (!this.pluginManager.getPlugin(plugin.name))
84
+ throw new Error(`Unknown plugin: ${plugin.name}`);
85
+ this.pluginManager.enablePlugin(plugin.name);
86
+ }
87
+ else
88
+ this.pluginManager.disablePlugin(plugin.name);
89
+ }
90
+ this.resolvedSchemas.clear();
91
+ this.selectedSchemaNames = undefined;
92
+ this.clientFileNames.clear();
93
+ this.typeRegistry = this.createTypeRegistry();
70
94
  // Load and parse schema
71
- const schema = await this.loadSchema();
95
+ let schema = JSON.parse(JSON.stringify(await this.loadSchema()));
96
+ const validation = await parsers_1.ParserFactory.autoCreateParser({ data: schema }, this.config).validate(schema);
97
+ warnings.push(...validation.warnings);
98
+ if (!validation.isValid) {
99
+ errors.push(...validation.errors);
100
+ throw new Error('OpenAPI schema validation failed');
101
+ }
102
+ this.schema = schema;
103
+ this.filterSchema(schema);
104
+ this.validateReferences(schema);
105
+ this.projections = (0, projections_1.addSchemaProjections)(schema, parsers_1.ParserFactory.autoCreateParser({ data: schema }, this.config).createResolver(schema), this.selectedSchemaNames);
106
+ this.wireSchema = structuredClone(schema);
107
+ schema = (0, naming_1.renameSchemaProperties)(schema, this.config.propertyNaming ?? 'camelCase');
72
108
  this.schema = schema;
73
109
  // Create generation context
74
110
  const context = this.createGenerationContext();
@@ -78,7 +114,7 @@ class Schemantic {
78
114
  await this.resolveSchemaReferences(schema);
79
115
  // Generate types
80
116
  let generatedTypes = [];
81
- if (this.config.generateTypes) {
117
+ if (this.config.generateTypes || this.config.generateApiClient) {
82
118
  generatedTypes = await this.generateTypes(context);
83
119
  }
84
120
  // Generate API client
@@ -87,7 +123,7 @@ class Schemantic {
87
123
  generatedClients = await this.generateApiClients(context);
88
124
  }
89
125
  // Generate files
90
- const files = await this.generateFiles(generatedTypes, generatedClients);
126
+ const files = await this.generateFiles(generatedTypes, generatedClients, context);
91
127
  generatedFiles.push(...files);
92
128
  // Execute after generation hooks
93
129
  const result = {
@@ -98,6 +134,10 @@ class Schemantic {
98
134
  statistics: this.calculateStatistics(generatedTypes, generatedClients, generatedFiles, Date.now() - startTime),
99
135
  };
100
136
  await this.pluginManager.executeAfterGeneration(context, result);
137
+ if (!result.success || result.errors.some(error => error.severity === 'error'))
138
+ throw new Error('A plugin rejected generated output');
139
+ await (0, output_writer_1.writeOutput)(this.config.outputDir, result.generatedFiles);
140
+ result.statistics = this.calculateStatistics(generatedTypes, generatedClients, result.generatedFiles, Date.now() - startTime);
101
141
  return result;
102
142
  }
103
143
  catch (error) {
@@ -108,7 +148,7 @@ class Schemantic {
108
148
  });
109
149
  return {
110
150
  success: false,
111
- generatedFiles,
151
+ generatedFiles: [],
112
152
  errors,
113
153
  warnings,
114
154
  statistics: this.calculateStatistics([], [], generatedFiles, Date.now() - startTime),
@@ -161,6 +201,55 @@ class Schemantic {
161
201
  /**
162
202
  * Create generation context
163
203
  */
204
+ filterSchema(schema) {
205
+ const matches = (value, patterns = []) => patterns.some(pattern => new RegExp(`^${pattern.split('*').map(part => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('.*')}$`).test(value));
206
+ schema.paths = Object.fromEntries(Object.entries(schema.paths).filter(([name]) => (!this.config.includePaths?.length || matches(name, this.config.includePaths)) && !matches(name, this.config.excludePaths)));
207
+ const schemas = schema.components?.schemas;
208
+ if (!schemas)
209
+ return;
210
+ const selected = new Set(Object.keys(schemas).filter(name => (!this.config.includeSchemas?.length || matches(name, this.config.includeSchemas)) && !matches(name, this.config.excludeSchemas)));
211
+ const collect = (value, visited = new Set()) => {
212
+ if (!value || typeof value !== 'object')
213
+ return;
214
+ if ('$ref' in value && typeof value.$ref === 'string') {
215
+ const ref = value.$ref;
216
+ if (visited.has(ref))
217
+ return;
218
+ visited.add(ref);
219
+ if (ref.startsWith('#/components/schemas/')) {
220
+ const name = (0, schema_type_1.referenceName)(ref.split('/').slice(0, 4).join('/'));
221
+ if (matches(name, this.config.excludeSchemas))
222
+ throw new Error(`Referenced schema ${name} is explicitly excluded`);
223
+ selected.add(name);
224
+ collect(schemas[name], visited);
225
+ }
226
+ else {
227
+ const resolver = parsers_1.ParserFactory.autoCreateParser({ data: schema }, this.config).createResolver(schema);
228
+ collect(resolver(ref), visited);
229
+ }
230
+ }
231
+ for (const child of Object.values(value))
232
+ collect(child, visited);
233
+ };
234
+ if (this.config.generateApiClient || this.config.generateHooks)
235
+ collect(schema.paths);
236
+ for (const name of [...selected])
237
+ collect(schemas[name]);
238
+ this.selectedSchemaNames = selected;
239
+ }
240
+ validateReferences(schema) {
241
+ const resolver = parsers_1.ParserFactory.autoCreateParser({ data: schema }, this.config).createResolver(schema);
242
+ const walk = (value) => {
243
+ if (!value || typeof value !== 'object')
244
+ return;
245
+ if ('$ref' in value && typeof value.$ref === 'string' && !resolver(value.$ref)) {
246
+ throw new Error(`Unresolved or unsupported reference: ${value.$ref}`);
247
+ }
248
+ for (const child of Object.values(value))
249
+ walk(child);
250
+ };
251
+ walk(schema);
252
+ }
164
253
  createGenerationContext() {
165
254
  return {
166
255
  config: this.config,
@@ -169,7 +258,9 @@ class Schemantic {
169
258
  generatedTypes: new Map(),
170
259
  generatedClients: new Map(),
171
260
  typeRegistry: this.typeRegistry,
172
- schemaResolver: (ref) => this.resolvedSchemas.get(ref),
261
+ schemaResolver: parsers_1.ParserFactory.autoCreateParser({ data: this.schema }, this.config).createResolver(this.schema),
262
+ projections: this.projections,
263
+ wireSchema: this.wireSchema,
173
264
  };
174
265
  }
175
266
  /**
@@ -181,6 +272,8 @@ class Schemantic {
181
272
  }
182
273
  // Resolve all schemas
183
274
  for (const [name, schemaRef] of Object.entries(schema.components.schemas)) {
275
+ if (this.selectedSchemaNames && !this.selectedSchemaNames.has(name))
276
+ continue;
184
277
  if (typeof schemaRef === "object" && schemaRef !== null) {
185
278
  // Stamp a stable generated type name to match $ref terminal name
186
279
  schemaRef._generatedTypeName = name;
@@ -204,12 +297,23 @@ class Schemantic {
204
297
  const generatedType = generators_1.TypeGeneratorFactory.generateType(transformedSchema, context, generators);
205
298
  if (generatedType) {
206
299
  // Register type
300
+ if (this.typeRegistry.getType(generatedType.name)) {
301
+ throw new Error(`Multiple schemas generate the type name ${generatedType.name}`);
302
+ }
207
303
  this.typeRegistry.registerType(generatedType.name, generatedType);
208
304
  context.generatedTypes.set(generatedType.name, generatedType);
209
305
  // Execute after type generation hooks
210
306
  await this.pluginManager.executeAfterTypeGeneration(generatedType.name, generatedType, context);
211
307
  generatedTypes.push(generatedType);
212
308
  }
309
+ for (const [name, generator] of this.pluginManager.getCustomTypeGenerators()) {
310
+ const customType = generator(transformedSchema, context);
311
+ if (this.typeRegistry.getType(customType.name))
312
+ throw new Error(`Custom generator ${name} produced duplicate type ${customType.name}`);
313
+ this.typeRegistry.registerType(customType.name, customType);
314
+ context.generatedTypes.set(customType.name, customType);
315
+ generatedTypes.push(customType);
316
+ }
213
317
  }
214
318
  return generatedTypes;
215
319
  }
@@ -231,29 +335,62 @@ class Schemantic {
231
335
  // Generate custom clients from plugins
232
336
  const customGenerators = this.pluginManager.getCustomClientGenerators();
233
337
  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
- }
338
+ const customClient = generator(context);
339
+ if (context.generatedClients.has(customClient.name))
340
+ throw new Error(`Custom generator ${name} produced duplicate client ${customClient.name}`);
341
+ context.generatedClients.set(customClient.name, customClient);
342
+ generatedClients.push(customClient);
242
343
  }
243
344
  return generatedClients;
244
345
  }
245
346
  /**
246
347
  * Generate files from generated types and clients
247
348
  */
248
- async generateFiles(generatedTypes, generatedClients) {
349
+ async generateFiles(generatedTypes, generatedClients, context) {
249
350
  const files = [];
250
- // Ensure output directory exists
251
- await fs.mkdir(this.config.outputDir, { recursive: true });
351
+ const exportedTypes = new Set();
352
+ for (const type of generatedTypes) {
353
+ for (const name of new Set(type.exports)) {
354
+ if (exportedTypes.has(name))
355
+ throw new Error(`Generated type export collision: ${name}`);
356
+ exportedTypes.add(name);
357
+ }
358
+ }
359
+ const publicNames = new Set(exportedTypes);
360
+ const reserveExport = (name) => {
361
+ if (publicNames.has(name))
362
+ throw new Error(`Generated public export collision: ${name}; rename the schema or configure a type prefix/suffix`);
363
+ publicNames.add(name);
364
+ };
365
+ for (const client of generatedClients)
366
+ for (const name of new Set(client.exports))
367
+ reserveExport(name);
368
+ if (this.config.generateHooks)
369
+ reserveExport('createApiHooks');
370
+ if (this.config.propertyNaming === 'camelCase') {
371
+ reserveExport('serializeValue');
372
+ reserveExport('deserializeValue');
373
+ for (const name of Object.keys(this.wireSchema?.components?.schemas || {}).map(name => this.typeRegistry.getType((0, schema_type_1.typeName)(name, this.config.typePrefix, this.config.typeSuffix))?.name).filter((name) => !!name)) {
374
+ reserveExport('serialize' + name);
375
+ reserveExport('deserialize' + name);
376
+ }
377
+ }
378
+ const names = ['types.ts', 'index.ts', 'hooks.ts', 'conversion.ts'];
379
+ for (const [index, client] of generatedClients.entries()) {
380
+ const fileName = index === 0 ? this.config.outputFileName || 'api-client.ts' : client.name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase() + '.ts';
381
+ if (path.isAbsolute(fileName) || fileName.split(/[\\/]/).includes('..') || !fileName.endsWith('.ts'))
382
+ throw new Error(`Invalid output filename: ${fileName}`);
383
+ (0, output_writer_1.validateOutputNames)([...names, fileName]);
384
+ names.push(fileName);
385
+ this.clientFileNames.set(client.name, fileName);
386
+ }
252
387
  // Generate types file
253
388
  if (generatedTypes.length > 0) {
254
389
  const typesFile = await this.generateTypesFile(generatedTypes);
255
390
  files.push(typesFile);
256
391
  }
392
+ if (this.config.propertyNaming === 'camelCase')
393
+ files.push((0, naming_1.generateConversionFile)(context, this.wireSchema));
257
394
  // Generate client files
258
395
  for (const client of generatedClients) {
259
396
  const clientFile = await this.generateClientFile(client);
@@ -261,7 +398,7 @@ class Schemantic {
261
398
  }
262
399
  // Generate hooks file (first-party) when enabled
263
400
  if (this.config.generateHooks) {
264
- const hooksFile = await this.generateHooksFile();
401
+ const hooksFile = await this.generateHooksFile(context, generatedClients[0]);
265
402
  if (hooksFile)
266
403
  files.push(hooksFile);
267
404
  }
@@ -270,11 +407,7 @@ class Schemantic {
270
407
  const indexFile = await this.generateIndexFile(generatedTypes, generatedClients);
271
408
  files.push(indexFile);
272
409
  }
273
- // Generate barrel exports
274
- if (this.config.generateBarrelExports) {
275
- const barrelFile = await this.generateBarrelFile(generatedTypes, generatedClients);
276
- files.push(barrelFile);
277
- }
410
+ // Barrel exports removed: all exports consolidated in index.ts
278
411
  return files;
279
412
  }
280
413
  /**
@@ -286,14 +419,19 @@ class Schemantic {
286
419
  ...new Set(generatedTypes.flatMap((t) => t.dependencies)),
287
420
  ];
288
421
  // Generate imports from dependencies
289
- const imports = this.generateImportsFromDependencies(allDependencies);
422
+ const imports = new Map();
423
+ const collectImport = (statement) => {
424
+ const key = statement.replace(/\s+/g, '').replace(/"/g, "'").replace(/;$/, '');
425
+ imports.set(key, statement.trim());
426
+ };
427
+ this.generateImportsFromDependencies(allDependencies).split('\n').filter(line => line.trim()).forEach(collectImport);
290
428
  // Generate types content ordered by dependencies.
291
429
  // Preserve each GeneratedType.content as a whole (except stripping any import lines),
292
430
  // then emit in an order where dependencies appear before dependents using the typeRegistry.
293
431
  const typeContentMap = {};
294
432
  for (const t of generatedTypes) {
295
433
  const cleaned = t.content
296
- .replace(/^import\s+.*?from\s+['"][^'"]*['"];?\s*$/gm, "")
434
+ .replace(/^[ \t]*import\s+(?:[\s\S]*?\s+from\s+)?['"][^'"]+['"];?[ \t]*(?:\r?\n|$)/gm, statement => { collectImport(statement); return ''; })
297
435
  .trim();
298
436
  if (cleaned.length > 0)
299
437
  typeContentMap[t.name] = cleaned;
@@ -310,9 +448,8 @@ class Schemantic {
310
448
  for (const rem of Object.values(typeContentMap)) {
311
449
  emittedBlocks.push(rem);
312
450
  }
313
- const content = imports + emittedBlocks.join("\n\n");
451
+ const content = [...imports.values()].join('\n') + (imports.size ? '\n\n' : '') + emittedBlocks.join("\n\n");
314
452
  const filePath = path.join(this.config.outputDir, "types.ts");
315
- await fs.writeFile(filePath, content, "utf-8");
316
453
  return {
317
454
  path: filePath,
318
455
  content,
@@ -326,15 +463,22 @@ class Schemantic {
326
463
  */
327
464
  async generateClientFile(client) {
328
465
  // Default to a clean, predictable filename when not provided
329
- const fileName = this.config.outputFileName || `api-client.ts`;
466
+ const fileName = this.clientFileNames.get(client.name);
330
467
  const filePath = path.join(this.config.outputDir, fileName);
331
- await fs.writeFile(filePath, client.content, "utf-8");
468
+ let typeImport = path.relative(path.dirname(filePath), path.join(this.config.outputDir, 'types.js')).replace(/\\/g, '/');
469
+ if (!typeImport.startsWith('.'))
470
+ typeImport = './' + typeImport;
471
+ let conversionImport = path.relative(path.dirname(filePath), path.join(this.config.outputDir, 'conversion.js')).replace(/\\/g, '/');
472
+ if (!conversionImport.startsWith('.'))
473
+ conversionImport = './' + conversionImport;
474
+ const content = client.content.replace(/from (['"])\.\/types(?:\.js)?\1/g, `from '${typeImport}'`)
475
+ .replace(/from (['"])\.\/conversion\.js\1/g, `from '${conversionImport}'`);
332
476
  return {
333
477
  path: filePath,
334
- content: client.content,
478
+ content,
335
479
  type: "client",
336
480
  dependencies: client.dependencies,
337
- size: Buffer.byteLength(client.content, "utf-8"),
481
+ size: Buffer.byteLength(content, "utf-8"),
338
482
  };
339
483
  }
340
484
  /**
@@ -342,46 +486,30 @@ class Schemantic {
342
486
  */
343
487
  async generateIndexFile(generatedTypes, generatedClients) {
344
488
  const exports = [];
345
- // Export types - filter out generic instances
346
- const allTypeExports = generatedTypes.flatMap((type) => type.exports);
347
- if (allTypeExports.length > 0) {
348
- // Filter out generic instances and keep only base types
349
- const baseTypes = new Set();
350
- for (const exportName of allTypeExports) {
351
- if (exportName.includes("<") && exportName.includes(">")) {
352
- // Extract base type name from generic type
353
- const baseName = exportName.split("<")[0];
354
- if (baseName && baseName.trim()) {
355
- baseTypes.add(baseName);
356
- }
357
- }
358
- else {
359
- baseTypes.add(exportName);
360
- }
361
- }
362
- if (baseTypes.size > 0) {
363
- exports.push(`export type { ${Array.from(baseTypes).join(", ")} } from './types';`);
364
- }
365
- }
489
+ if (generatedTypes.length)
490
+ exports.push("export * from './types.js';");
491
+ if (this.config.propertyNaming === 'camelCase')
492
+ exports.push("export * from './conversion.js';");
366
493
  // Export clients
367
494
  for (const client of generatedClients) {
368
495
  // Re-export only values, not types
369
- const valueExports = client.exports.filter((e) => e.endsWith("ApiClient"));
496
+ const valueExports = client.exports;
370
497
  if (valueExports.length > 0) {
371
498
  // Use configured output file name or default 'api-client.ts'
372
- const clientFileBase = (this.config.outputFileName || `api-client.ts`).replace(/\.ts$/, "");
373
- exports.push(`export { ${valueExports.join(", ")} } from './${clientFileBase}';`);
499
+ const clientFileBase = this.clientFileNames.get(client.name).replace(/\.ts$/, "").replace(/\\/g, '/');
500
+ exports.push(`export { ${valueExports.join(", ")} } from './${clientFileBase}.js';`);
501
+ if (client === generatedClients[0])
502
+ exports.push(`export type { ApiClientConfig } from './${clientFileBase}.js';`);
374
503
  }
375
504
  }
376
505
  // Export hooks if generated
377
506
  if (this.config.generateHooks) {
378
- exports.push(`export { createApiHooks } from './hooks';`);
507
+ exports.push(`export { createApiHooks } from './hooks.js';`);
379
508
  }
380
509
  const content = exports
381
510
  .map((line) => line.startsWith("export type") || line.includes(" from ") ? line : line)
382
511
  .join("\n");
383
512
  const filePath = path.join(this.config.outputDir, "index.ts");
384
- await fs.writeFile(filePath, content, "utf-8");
385
513
  return {
386
514
  path: filePath,
387
515
  content,
@@ -391,81 +519,20 @@ class Schemantic {
391
519
  };
392
520
  }
393
521
  /**
394
- * Generate barrel file
522
+ * Generate hooks file when enabled
395
523
  */
396
- async generateBarrelFile(_generatedTypes, _generatedClients) {
397
- const clientFileBase = (this.config.outputFileName || `api-client.ts`).replace(/\.ts$/, "");
398
- // Build barrel exports carefully to avoid duplicate symbol re-exports
399
- // - Always export types
400
- // - Re-export client value symbols but skip any symbols that collide with types exports
401
- // - Export hooks only when hooks were generated/enabled
402
- // Collect exported symbol names from generated types
403
- const typeExports = new Set();
404
- for (const t of _generatedTypes) {
405
- for (const e of t.exports || [])
406
- typeExports.add(e);
407
- }
408
- // Collect client exports and filter collisions with types
409
- const clientExports = [];
410
- for (const c of _generatedClients || []) {
411
- for (const e of c.exports || []) {
412
- // Skip types-only exports (like type aliases) if they collide with type exports
413
- if (typeExports.has(e))
414
- continue;
415
- // Avoid duplicate additions
416
- if (!clientExports.includes(e))
417
- clientExports.push(e);
418
- }
419
- }
420
- const lines = [];
421
- lines.push("// Barrel exports for schemantic generated code");
422
- // Always export ./types
423
- lines.push("export * from './types';");
424
- // Export client symbols explicitly (avoid wildcard which may cause conflicts)
425
- if (clientExports.length > 0) {
426
- lines.push(`export { ${clientExports.join(", ")} } from './${clientFileBase}';`);
427
- }
428
- else {
429
- // If there were no client symbols to re-export, still export the module values (safe)
430
- lines.push(`export * from './${clientFileBase}';`);
431
- }
432
- // Only export hooks if hooks generation is enabled in config
433
- if (this.config.generateHooks) {
434
- lines.push("export * from './hooks';");
435
- }
436
- const content = lines.join("\n") + "\n";
437
- const filePath = path.join(this.config.outputDir, "barrel.ts");
438
- await fs.writeFile(filePath, content, "utf-8");
524
+ async generateHooksFile(context, client) {
525
+ const hookGen = new hook_generator_1.HookGenerator(context);
526
+ const hooks = hookGen.generate(client);
527
+ const filePath = path.join(this.config.outputDir, "hooks.ts");
439
528
  return {
440
529
  path: filePath,
441
- content,
442
- type: "barrel",
530
+ content: hooks.content,
531
+ type: "hook",
443
532
  dependencies: [],
444
- size: Buffer.byteLength(content, "utf-8"),
533
+ size: Buffer.byteLength(hooks.content, "utf-8"),
445
534
  };
446
535
  }
447
- /**
448
- * Generate hooks file when enabled
449
- */
450
- async generateHooksFile() {
451
- try {
452
- const hookGen = new hook_generator_1.HookGenerator(this.createGenerationContext());
453
- const hooks = hookGen.generate();
454
- const filePath = path.join(this.config.outputDir, "hooks.ts");
455
- await fs.writeFile(filePath, hooks.content, "utf-8");
456
- return {
457
- path: filePath,
458
- content: hooks.content,
459
- type: "hook",
460
- dependencies: [],
461
- size: Buffer.byteLength(hooks.content, "utf-8"),
462
- };
463
- }
464
- catch {
465
- // Non-fatal: skip hooks on error
466
- return undefined;
467
- }
468
- }
469
536
  /**
470
537
  * Calculate generation statistics
471
538
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schemantic.js","sourceRoot":"","sources":["../../src/core/schemantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemantic.js","sourceRoot":"","sources":["../../src/core/schemantic.ts"],"names":[],"mappings":"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"}