@workos/oagen 0.21.0 → 0.21.1

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/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { A as walkTypeRef, C as assertNever, D as collectModelRefs, E as collectFieldDependencies, O as collectRequestBodyModels, S as SpecParseError, T as collectEnumRefs, _ as ConfigVersionMismatchError, a as singularize, b as OagenError, c as stripListItemMarkers, d as toPascalCase, f as toSnakeCase, g as ConfigLoadError, h as ConfigError, k as mapTypeRef, l as toCamelCase, m as CommandError, n as ACRONYM_SET, o as splitWords, p as toUpperSnakeCase, r as cleanSchemaName, s as stripBackendPrefixes, u as toKebabCase, v as ExtractorError, w as assignModelsToServices, x as RegistryError, y as InternalError } from "./tree-sitter-DcUvm0KA.mjs";
2
- import { c as treeShakeFiles, d as collectReferencedNames, f as generateAllFiles, h as resolveOperations, i as generate, l as applyFileHeaders, m as deriveMethodName, n as getEmitter, o as integrateGeneratedFiles, p as generateFiles, r as registerEmitter, s as mapFilesForTargetIntegration, t as diffSpecs, u as buildEmitterContext } from "./diff-CBFCoTCw.mjs";
2
+ import { c as treeShakeFiles, d as collectReferencedNames, f as generateAllFiles, h as resolveOperations, i as generate, l as applyFileHeaders, m as deriveMethodName, n as getEmitter, o as integrateGeneratedFiles, p as generateFiles, r as registerEmitter, s as mapFilesForTargetIntegration, t as diffSpecs, u as buildEmitterContext } from "./diff-Dobf9PHC.mjs";
3
3
  import { readFile } from "node:fs/promises";
4
4
  import { resolve } from "node:path";
5
5
  import { pathToFileURL } from "node:url";
@@ -185,7 +185,7 @@ function qualifyInlineModelName(baseName, parentName) {
185
185
  function extractInlineModelsFromSchemas(schemas) {
186
186
  if (!schemas) return [];
187
187
  const inlineModels = [];
188
- for (const [schemaName, schema] of Object.entries(schemas)) extractInlineModelsFromProperties(schema, inlineModels, cleanSchemaName(toPascalCase(schemaName)));
188
+ for (const [schemaName, schema] of Object.entries(schemas)) extractInlineModelsFromProperties(schema, inlineModels, resolveSchemaName(schemaName));
189
189
  return inlineModels;
190
190
  }
191
191
  function extractInlineModelsFromProperties(schema, results, parentName) {
@@ -2369,6 +2369,27 @@ function collapseJsonSuffixModels(models, services) {
2369
2369
  rewriteModelRefs(normalizedModels, services, jsonModel.name, baseModel.name);
2370
2370
  console.warn(`[oagen] Merged "${jsonModel.name}" into "${baseModel.name}" (${jsonModel.fields.length} fields, superset)`);
2371
2371
  }
2372
+ for (const { jsonModel, baseModel } of mergeCandidates) {
2373
+ const jsonPrefix = jsonModel.name;
2374
+ const basePrefix = baseModel.name;
2375
+ for (const model of normalizedModels) {
2376
+ if (toRemove.has(model.name)) continue;
2377
+ if (model.name.length <= jsonPrefix.length) continue;
2378
+ if (!model.name.startsWith(jsonPrefix)) continue;
2379
+ const newName = basePrefix + model.name.slice(jsonPrefix.length);
2380
+ const existing = byName.get(newName);
2381
+ if (existing && !toRemove.has(existing.name)) {
2382
+ toRemove.add(model.name);
2383
+ rewriteModelRefs(normalizedModels, services, model.name, newName);
2384
+ console.warn(`[oagen] Collapsed child "${model.name}" into existing "${newName}"`);
2385
+ } else {
2386
+ rewriteModelRefs(normalizedModels, services, model.name, newName);
2387
+ model.name = newName;
2388
+ byName.set(newName, model);
2389
+ console.warn(`[oagen] Renamed child "${jsonPrefix}…" → "${newName}"`);
2390
+ }
2391
+ }
2392
+ }
2372
2393
  return normalizedModels.filter((m) => !toRemove.has(m.name));
2373
2394
  }
2374
2395
  //#endregion
@@ -2421,8 +2442,10 @@ async function parseSpec(specPath, options) {
2421
2442
  if (!version.startsWith("3.")) throw new SpecParseError(`Unsupported OpenAPI version: ${version}. oagen requires OpenAPI 3.x`, `Update the spec to OpenAPI 3.0 or 3.1. If you are using Swagger 2.x, convert it first with \`npx swagger2openapi ${specPath}\`.`);
2422
2443
  const { models, enums } = extractSchemas(spec.components?.schemas, { schemaNameTransform: options?.schemaNameTransform });
2423
2444
  const { services, inlineModels } = extractOperations(spec.paths, options?.operationIdTransform, spec.components?.schemas);
2445
+ const responseNormalizedModels = mergeInlineResponseModels(models, inlineModels);
2446
+ const fieldInlineModels = extractInlineModelsFromSchemas(spec.components?.schemas);
2424
2447
  clearSchemaNameTransform();
2425
- const finalModels = collapseJsonSuffixModels(mergeFieldInlineModels(mergeInlineResponseModels(models, inlineModels), extractInlineModelsFromSchemas(spec.components?.schemas)), services);
2448
+ const finalModels = collapseJsonSuffixModels(mergeFieldInlineModels(responseNormalizedModels, fieldInlineModels), services);
2426
2449
  collectInlineEnumsFromModels(finalModels, enums);
2427
2450
  collectInlineEnumsFromOperations(services, enums);
2428
2451
  const auth = extractAuthSchemes(spec.components?.securitySchemes);