@contractspec/lib.contracts-transformers 1.56.0 → 1.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/types.d.ts +0 -1
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/utils.d.ts.map +1 -1
- package/dist/openapi/differ.d.ts +0 -1
- package/dist/openapi/differ.d.ts.map +1 -1
- package/dist/openapi/exporter/data-views.d.ts +0 -1
- package/dist/openapi/exporter/data-views.d.ts.map +1 -1
- package/dist/openapi/exporter/events.d.ts +0 -1
- package/dist/openapi/exporter/events.d.ts.map +1 -1
- package/dist/openapi/exporter/features.d.ts +0 -1
- package/dist/openapi/exporter/features.d.ts.map +1 -1
- package/dist/openapi/exporter/forms.d.ts +0 -1
- package/dist/openapi/exporter/forms.d.ts.map +1 -1
- package/dist/openapi/exporter/operations.d.ts +0 -1
- package/dist/openapi/exporter/operations.d.ts.map +1 -1
- package/dist/openapi/exporter/presentations.d.ts +0 -1
- package/dist/openapi/exporter/presentations.d.ts.map +1 -1
- package/dist/openapi/exporter/registries.d.ts +0 -1
- package/dist/openapi/exporter/registries.d.ts.map +1 -1
- package/dist/openapi/exporter/workflows.d.ts +0 -1
- package/dist/openapi/exporter/workflows.d.ts.map +1 -1
- package/dist/openapi/exporter.d.ts +0 -1
- package/dist/openapi/exporter.d.ts.map +1 -1
- package/dist/openapi/importer/grouping.js +0 -1
- package/dist/openapi/importer/grouping.js.map +1 -1
- package/dist/openapi/importer/index.d.ts +0 -1
- package/dist/openapi/importer/index.d.ts.map +1 -1
- package/dist/openapi/parser/document.d.ts +0 -1
- package/dist/openapi/parser/document.d.ts.map +1 -1
- package/dist/openapi/parser/utils.d.ts +0 -1
- package/dist/openapi/parser/utils.d.ts.map +1 -1
- package/dist/openapi/schema-converter.d.ts +0 -1
- package/dist/openapi/schema-converter.d.ts.map +1 -1
- package/dist/openapi/schema-generators/index.js +17 -18
- package/dist/openapi/schema-generators/index.js.map +1 -1
- package/dist/openapi/types.d.ts +1 -3
- package/dist/openapi/types.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/common/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/common/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/common/types.ts"],"mappings":";;;;;;UASiB,UAAA;EAIf;EAFA,IAAA;EAMA;EAJA,GAAA;EAMY;EAJZ,IAAA;EAIgB;EAFhB,QAAA;EAS6B;EAP7B,UAAA,EAAY,IAAA;AAAA;;;;;UAOG,cAAA;EACf,IAAA;IACE,MAAA;IACA,IAAA;IACA,MAAA;MACE,IAAA;MACA,KAAA;MACA,MAAA;MACA,MAAA;IAAA;EAAA;EAGJ,OAAA;IACE,IAAA;IACA,SAAA;EAAA;AAAA;;;;UAOa,qBAAA;EAUf;;;;;EAJA,aAAA,GAAgB,gBAAA;EAUc;EAR9B,IAAA;EAce;EAZf,QAAA;;EAEA,WAAA;EAYA;EAVA,MAAA,EAAQ,UAAA;EAYR;EAVA,cAAA,EAAgB,cAAA;AAAA;;;;UAMD,YAAA;EAeb;EAbF,cAAA,EAAgB,qBAAA;EAed;EAbF,OAAA;IACE,QAAA;IACA,MAAA;EAAA;EAmBsB;EAhBxB,MAAA;IACE,QAAA;IACA,KAAA;EAAA;EAwBuB;EArBzB,OAAA;IACE,KAAA;IACA,QAAA;IACA,OAAA;IACA,MAAA;EAAA;AAAA;;;;KAOQ,cAAA;;;;UAUK,UAAA;EAwBN;EAtBT,IAAA;EAsBmB;EApBnB,IAAA,EAAM,cAAA;EAgBN;EAdA,QAAA;EAgBA;EAdA,QAAA;EAgBA;EAdA,WAAA;AAAA;;;;UAMe,QAAA;EAkBU;EAhBzB,WAAA;EAkBO;EAhBP,QAAA,GAAW,gBAAA;EAoBA;EAlBX,QAAA,EAAU,qBAAA;EAuBS;EArBnB,OAAA,EAAS,UAAA;EAYT;EAVA,YAAA;EAYA;EAVA,UAAA;AAAA;;;;UAMe,UAAA;EAWJ;EATX,KAAA,EAAO,qBAAA;EAYL;EAVF,OAAA;IACE,IAAA,EAAM,qBAAA;IACN,OAAA,EAAS,UAAA;EAAA;EAWA;EARX,SAAA;EAe+B;EAb/B,SAAA,EAAW,QAAA;EAiBM;EAfjB,OAAA;IACE,KAAA;IACA,OAAA;IACA,SAAA;IACA,SAAA;EAAA;AAAA;;;;UAOa,gBAAA;;EAEf,KAAA;;EAEA,KAAA,EAAO,UAAA;;EAEP,MAAA;;EAEA,QAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/common/utils.ts"],"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/common/utils.ts"],"mappings":";;AAOA;;;;;iBAAgB,YAAA,CAAa,GAAA;;;;iBASb,WAAA,CAAY,GAAA;AAQ5B;;;AAAA,iBAAgB,WAAA,CAAY,GAAA;;AAU5B;;iBAAgB,WAAA,CAAY,GAAA;;;AAU5B;iBAAgB,iBAAA,CAAkB,GAAA;;;;iBAalB,SAAA,CAAU,WAAA,UAAqB,MAAA;;;;iBAQ/B,UAAA,CAAW,QAAA;AAA3B;;;AAAA,iBAOgB,SAAA,CAAU,CAAA,WAAY,CAAA;;AAAtC;;iBA4BgB,SAAA,CAAU,GAAA,WAAc,IAAA;;;AAAxC;;iBAiBgB,iBAAA,CAAkB,IAAA;;;AAAlC;iBAQgB,aAAA,CAAc,IAAA"}
|
package/dist/openapi/differ.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differ.d.ts","names":[],"sources":["../../src/openapi/differ.ts"],"
|
|
1
|
+
{"version":3,"file":"differ.d.ts","names":[],"sources":["../../src/openapi/differ.ts"],"mappings":";;;;;;;;UAkBiB,WAAA;EAMf;EAJA,kBAAA;EAMW;EAJX,UAAA;EA8Gc;EA5Gd,eAAA;;EAEA,WAAA;AAAA;;;;iBA0Gc,mBAAA,CACd,IAAA,EAAM,gBAAA,EACN,SAAA,EAAW,eAAA,EACX,OAAA,GAAS,WAAA,GACR,UAAA;;;;iBA2Ea,SAAA,CACd,OAAA,EAAS,gBAAA,EACT,OAAA,EAAS,gBAAA,EACT,OAAA,GAAS,WAAA,GACR,UAAA;;;;iBA+Ca,cAAA,CACd,WAAA,UACA,QAAA,EAAU,gBAAA,cACV,QAAA,EAAU,qBAAA,EACV,OAAA,GAAS,WAAA,GACR,QAAA;;AAxDH;;iBAoGgB,OAAA,CACd,aAAA,EAAe,GAAA,SAAY,gBAAA,GAC3B,aAAA,EAAe,qBAAA,IACf,OAAA,GAAS,WAAA,GACR,QAAA;;;;iBAoDa,iBAAA,CAAkB,OAAA,EAAS,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-views.d.ts","names":[],"sources":["../../../src/openapi/exporter/data-views.ts"],"
|
|
1
|
+
{"version":3,"file":"data-views.d.ts","names":[],"sources":["../../../src/openapi/exporter/data-views.ts"],"mappings":";;;;;;;UASiB,gBAAA;EACf,IAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA;EACA,MAAA;EACA,IAAA;EACA,MAAA;IACE,OAAA;MAAW,GAAA;MAAa,OAAA;IAAA;IACxB,IAAA;MAAS,GAAA;MAAa,OAAA;IAAA;EAAA;EAExB,MAAA;AAAA;;;;iBAMc,eAAA,CACd,QAAA,EAAU,gBAAA,GACT,gBAAA;;;AAgBH;iBAAgB,yBAAA,CACd,QAAA,EAAU,gBAAA,GACT,qBAAA"}
|
|
@@ -3,7 +3,6 @@ import { EventSpec } from "@contractspec/lib.contracts";
|
|
|
3
3
|
import { AnySchemaModel } from "@contractspec/lib.schema";
|
|
4
4
|
|
|
5
5
|
//#region src/openapi/exporter/events.d.ts
|
|
6
|
-
|
|
7
6
|
type OpenApiSchemaObject = Record<string, unknown>;
|
|
8
7
|
/**
|
|
9
8
|
* Exported event structure for OpenAPI extensions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","names":[],"sources":["../../../src/openapi/exporter/events.ts"],"
|
|
1
|
+
{"version":3,"file":"events.d.ts","names":[],"sources":["../../../src/openapi/exporter/events.ts"],"mappings":";;;;;KAQK,mBAAA,GAAsB,MAAA;;;;UAKV,aAAA;EACf,IAAA;EACA,OAAA;EACA,WAAA;EACA,OAAA,EAAS,mBAAA;EACT,GAAA;AAAA;;;;iBAMc,YAAA,CACd,MAAA,EAAQ,SAAA,CAAU,cAAA,MACjB,aAAA;;AAFH;;iBAiBgB,qBAAA,CACd,MAAA,EAAQ,SAAA,CAAU,cAAA,MACjB,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","names":[],"sources":["../../../src/openapi/exporter/features.ts"],"
|
|
1
|
+
{"version":3,"file":"features.d.ts","names":[],"sources":["../../../src/openapi/exporter/features.ts"],"mappings":";;;;;;;UASiB,eAAA;EACf,GAAA;EACA,WAAA;EACA,MAAA;EACA,SAAA;EACA,UAAA;IAAe,GAAA;IAAa,OAAA;EAAA;EAC5B,MAAA;IAAW,GAAA;IAAa,OAAA;EAAA;EACxB,aAAA;IAAkB,GAAA;IAAa,OAAA;EAAA;AAAA;;;;iBAMjB,cAAA,CAAe,QAAA,EAAU,eAAA,GAAkB,eAAA;;;AAe3D;iBAAgB,wBAAA,CACd,QAAA,EAAU,eAAA,GACT,qBAAA"}
|
|
@@ -2,7 +2,6 @@ import { GeneratedRegistryCode } from "../types.js";
|
|
|
2
2
|
import { FormRegistry, Stability } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/openapi/exporter/forms.d.ts
|
|
5
|
-
|
|
6
5
|
type OpenApiSchemaObject = Record<string, unknown>;
|
|
7
6
|
/**
|
|
8
7
|
* Exported form structure for OpenAPI extensions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.d.ts","names":[],"sources":["../../../src/openapi/exporter/forms.ts"],"
|
|
1
|
+
{"version":3,"file":"forms.d.ts","names":[],"sources":["../../../src/openapi/exporter/forms.ts"],"mappings":";;;;KAQK,mBAAA,GAAsB,MAAA;;;;UAKV,YAAA;EACf,GAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA,EAAW,SAAA;EACX,MAAA;EACA,MAAA;EACA,KAAA,EAAO,mBAAA;EACP,OAAA;AAAA;;;;iBAMc,WAAA,CAAY,QAAA,EAAU,YAAA,GAAe,YAAA;;;AAArD;iBAoBgB,qBAAA,CACd,QAAA,EAAU,YAAA,GACT,qBAAA"}
|
|
@@ -3,7 +3,6 @@ import { AnyOperationSpec, OperationSpec, OperationSpecRegistry } from "@contrac
|
|
|
3
3
|
import { AnySchemaModel } from "@contractspec/lib.schema";
|
|
4
4
|
|
|
5
5
|
//#region src/openapi/exporter/operations.d.ts
|
|
6
|
-
|
|
7
6
|
type OpenApiSchemaObject = Record<string, unknown>;
|
|
8
7
|
/**
|
|
9
8
|
* Convert a spec name and version to an operationId.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","names":[],"sources":["../../../src/openapi/exporter/operations.ts"],"
|
|
1
|
+
{"version":3,"file":"operations.d.ts","names":[],"sources":["../../../src/openapi/exporter/operations.ts"],"mappings":";;;;;KAaK,mBAAA,GAAsB,MAAA;;;;iBAKX,aAAA,CAAc,IAAA,UAAc,OAAA;;;;iBAO5B,YAAA,CACd,MAAA,sBACA,IAAA,UACA,OAAA;AAHF;;;AAAA,iBAWgB,YAAA,CACd,IAAA,uBACA,QAAA;;;;iBASc,eAAA,CAAgB,IAAA,UAAc,OAAA;;AAX9C;;iBAkBgB,UAAA,CAAW,IAAA,EAAM,gBAAA;;;AAPjC;iBAiBgB,uBAAA,CACd,MAAA,EAAQ,cAAA,UACP,mBAAA;AAAA,UAKO,cAAA;EACR,KAAA,EAAO,mBAAA;EACP,MAAA,EAAQ,mBAAA;EACR,IAAA;IACE,GAAA;IACA,OAAA;IACA,IAAA;IACA,WAAA;IACA,IAAA;IACA,SAAA;EAAA;AAAA;;;;iBAOY,iBAAA,CACd,IAAA,EAAM,aAAA,CAAc,cAAA,EAAgB,cAAA,IACnC,cAAA;;AApBF;;UAsCgB,sBAAA;EACf,KAAA,EAAO,MAAA,SAAe,MAAA;EACtB,OAAA,EAAS,MAAA,SAAe,mBAAA;AAAA;;;;iBAMV,gBAAA,CACd,QAAA,EAAU,qBAAA,GACT,sBAAA;;;;iBAkFa,0BAAA,CACd,QAAA,EAAU,qBAAA,GACT,qBAAA"}
|
|
@@ -2,7 +2,6 @@ import { GeneratedRegistryCode } from "../types.js";
|
|
|
2
2
|
import { PresentationRegistry, PresentationSpec, Stability } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/openapi/exporter/presentations.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Exported presentation structure for OpenAPI extensions.
|
|
8
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentations.d.ts","names":[],"sources":["../../../src/openapi/exporter/presentations.ts"],"
|
|
1
|
+
{"version":3,"file":"presentations.d.ts","names":[],"sources":["../../../src/openapi/exporter/presentations.ts"],"mappings":";;;;;;;UAaiB,oBAAA;EACf,IAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA,EAAW,SAAA;EACX,UAAA;EACA,OAAA;EACA,IAAA;AAAA;;AAMF;;iBAAgB,mBAAA,CACd,QAAA,EAAU,oBAAA,GACT,oBAAA;;;;iBAea,4BAAA,CACd,WAAA,EAAa,gBAAA,KACZ,oBAAA;;;AAFH;iBAiBgB,6BAAA,CACd,QAAA,EAAU,oBAAA,GACT,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registries.d.ts","names":[],"sources":["../../../src/openapi/exporter/registries.ts"],"
|
|
1
|
+
{"version":3,"file":"registries.d.ts","names":[],"sources":["../../../src/openapi/exporter/registries.ts"],"mappings":";;;;;;UAQiB,yBAAA;EACf,UAAA;EACA,MAAA;EACA,QAAA;EACA,aAAA;EACA,KAAA;EACA,SAAA;EACA,SAAA;AAAA;AAMF;;;AAAA,iBAAgB,qBAAA,CACd,OAAA,GAAS,yBAAA,GACR,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","names":[],"sources":["../../../src/openapi/exporter/workflows.ts"],"
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","names":[],"sources":["../../../src/openapi/exporter/workflows.ts"],"mappings":";;;;;;;UASiB,gBAAA;EACf,IAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA;EACA,MAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,KAAA;EAAA;EAEF,WAAA;IACE,IAAA;IACA,EAAA;IACA,KAAA;EAAA;AAAA;;;;iBAOY,eAAA,CACd,QAAA,EAAU,gBAAA,GACT,gBAAA;;;;iBAuBa,yBAAA,CACd,QAAA,EAAU,gBAAA,GACT,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","names":[],"sources":["../../src/openapi/exporter.ts"],"
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","names":[],"sources":["../../src/openapi/exporter.ts"],"mappings":";;;;;;;;;UA8CiB,sBAAA;EACf,UAAA,GAAa,qBAAA;EACb,MAAA,GAAS,SAAA,CAAU,cAAA;EACnB,QAAA,GAAW,eAAA;EACX,aAAA,GAAgB,oBAAA;EAChB,kBAAA,GAAqB,gBAAA;EACrB,KAAA,GAAQ,YAAA;EACR,SAAA,GAAY,gBAAA;EACZ,SAAA,GAAY,gBAAA;AAAA;;;;;iBAUE,kBAAA,CACd,QAAA,EAAU,qBAAA,EACV,OAAA,GAAS,oBAAA,GACR,2BAAA;;;;iBAmBa,kBAAA,CACd,UAAA,EAAY,sBAAA,EACZ,OAAA,GAAS,yBAAA,GACR,wBAAA;;;;iBA8Ha,aAAA,CACd,QAAA,EAAU,qBAAA,EACV,OAAA,GAAS,oBAAA;;;;iBASK,aAAA,CACd,QAAA,EAAU,qBAAA,EACV,OAAA,GAAS,oBAAA;AApKX;;;AAAA,iBA6KgB,kBAAA,CACd,UAAA,EAAY,sBAAA,EACZ,OAAA,GAAS,yBAAA;;;;iBASK,kBAAA,CACd,UAAA,EAAY,sBAAA,EACZ,OAAA,GAAS,yBAAA"}
|
|
@@ -45,7 +45,6 @@ function applyGroupingStrategy(rule, context) {
|
|
|
45
45
|
case "by-url-path-single": return extractUrlPathLevel(context.path, 1);
|
|
46
46
|
case "by-url-path-multi": return extractUrlPathLevel(context.path, rule.urlPathLevel ?? 2);
|
|
47
47
|
case "by-feature": return extractDomain(context.name);
|
|
48
|
-
case "none":
|
|
49
48
|
default: return "";
|
|
50
49
|
}
|
|
51
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","names":[],"sources":["../../../src/openapi/importer/grouping.ts"],"sourcesContent":["/**\n * Grouping utilities for OpenAPI import/export.\n * Determines output folder structure based on configuration.\n */\nimport type { FolderConventions } from '@contractspec/lib.contracts';\nimport type { ParsedOperation } from '../types';\n\n/**\n * Grouping strategy type (matches ContractSpec config).\n */\ntype GroupingStrategy =\n | 'by-tag'\n | 'by-owner'\n | 'by-domain'\n | 'by-url-path-single'\n | 'by-url-path-multi'\n | 'by-feature'\n | 'none';\n\n/**\n * Grouping rule configuration.\n */\ninterface GroupingRule {\n strategy: GroupingStrategy;\n urlPathLevel?: number;\n pattern?: string;\n}\n\n/**\n * Resolve the group folder for an operation based on grouping config.\n */\nexport function resolveOperationGroupFolder(\n operation: ParsedOperation,\n conventions: FolderConventions\n): string {\n const groupingRule = conventions.operationsGrouping as\n | GroupingRule\n | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: operation.operationId,\n tags: operation.tags,\n path: operation.path,\n });\n}\n\n/**\n * Resolve the group folder for a model based on grouping config.\n */\nexport function resolveModelGroupFolder(\n modelName: string,\n conventions: FolderConventions,\n relatedPath?: string,\n relatedTags?: string[]\n): string {\n const groupingRule = conventions.modelsGrouping as GroupingRule | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: modelName,\n tags: relatedTags ?? [],\n path: relatedPath,\n });\n}\n\n/**\n * Resolve the group folder for an event based on grouping config.\n */\nexport function resolveEventGroupFolder(\n eventName: string,\n conventions: FolderConventions,\n relatedTags?: string[]\n): string {\n const groupingRule = conventions.eventsGrouping as GroupingRule | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: eventName,\n tags: relatedTags ?? [],\n });\n}\n\n/**\n * Apply grouping strategy to extract folder name.\n */\nfunction applyGroupingStrategy(\n rule: GroupingRule,\n context: {\n name: string;\n tags?: string[];\n path?: string;\n owners?: string[];\n }\n): string {\n switch (rule.strategy) {\n case 'by-tag':\n return context.tags?.[0] ?? 'untagged';\n\n case 'by-owner':\n return context.owners?.[0] ?? 'unowned';\n\n case 'by-domain':\n return extractDomain(context.name);\n\n case 'by-url-path-single':\n return extractUrlPathLevel(context.path, 1);\n\n case 'by-url-path-multi':\n return extractUrlPathLevel(context.path, rule.urlPathLevel ?? 2);\n\n case 'by-feature':\n // Use domain extraction for feature grouping\n return extractDomain(context.name);\n\n case 'none':\n default:\n return '';\n }\n}\n\n/**\n * Extract domain from operation/model name.\n * e.g., \"users.create\" -> \"users\"\n */\nfunction extractDomain(name: string): string {\n // Handle camelCase/PascalCase names\n if (name.includes('.')) {\n return name.split('.')[0] ?? 'default';\n }\n if (name.includes('_')) {\n return name.split('_')[0] ?? 'default';\n }\n // Extract from camelCase like \"createUser\" -> \"create\"\n const match = name.match(/^([a-z]+)/i);\n return match?.[1]?.toLowerCase() ?? 'default';\n}\n\n/**\n * Extract URL path segments for grouping.\n */\nfunction extractUrlPathLevel(path: string | undefined, level: number): string {\n if (!path) return 'root';\n const segments = path.split('/').filter(Boolean);\n\n // Filter out path parameters like {id}\n const nonParamSegments = segments.filter((s) => !s.startsWith('{'));\n\n if (nonParamSegments.length === 0) return 'root';\n\n return nonParamSegments.slice(0, level).join('/');\n}\n\n/**\n * Build full output path including group folder.\n */\nexport function buildOutputPath(\n baseDir: string,\n surfaceDir: string,\n groupFolder: string,\n fileName: string\n): string {\n const parts = [baseDir, surfaceDir];\n\n if (groupFolder) {\n parts.push(groupFolder);\n }\n\n parts.push(fileName);\n\n return parts.filter(Boolean).join('/');\n}\n\n/**\n * Determine if feature-based grouping should be applied.\n */\nexport function shouldGroupByFeature(conventions: FolderConventions): boolean {\n return conventions.groupByFeature ?? false;\n}\n"],"mappings":";;;;AA+BA,SAAgB,4BACd,WACA,aACQ;CACR,MAAM,eAAe,YAAY;AAIjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM,UAAU;EAChB,MAAM,UAAU;EAChB,MAAM,UAAU;EACjB,CAAC;;;;;AAMJ,SAAgB,wBACd,WACA,aACA,aACA,aACQ;CACR,MAAM,eAAe,YAAY;AAEjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM;EACN,MAAM,eAAe,EAAE;EACvB,MAAM;EACP,CAAC;;;;;AAMJ,SAAgB,wBACd,WACA,aACA,aACQ;CACR,MAAM,eAAe,YAAY;AAEjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM;EACN,MAAM,eAAe,EAAE;EACxB,CAAC;;;;;AAMJ,SAAS,sBACP,MACA,SAMQ;AACR,SAAQ,KAAK,UAAb;EACE,KAAK,SACH,QAAO,QAAQ,OAAO,MAAM;EAE9B,KAAK,WACH,QAAO,QAAQ,SAAS,MAAM;EAEhC,KAAK,YACH,QAAO,cAAc,QAAQ,KAAK;EAEpC,KAAK,qBACH,QAAO,oBAAoB,QAAQ,MAAM,EAAE;EAE7C,KAAK,oBACH,QAAO,oBAAoB,QAAQ,MAAM,KAAK,gBAAgB,EAAE;EAElE,KAAK,aAEH,QAAO,cAAc,QAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"grouping.js","names":[],"sources":["../../../src/openapi/importer/grouping.ts"],"sourcesContent":["/**\n * Grouping utilities for OpenAPI import/export.\n * Determines output folder structure based on configuration.\n */\nimport type { FolderConventions } from '@contractspec/lib.contracts';\nimport type { ParsedOperation } from '../types';\n\n/**\n * Grouping strategy type (matches ContractSpec config).\n */\ntype GroupingStrategy =\n | 'by-tag'\n | 'by-owner'\n | 'by-domain'\n | 'by-url-path-single'\n | 'by-url-path-multi'\n | 'by-feature'\n | 'none';\n\n/**\n * Grouping rule configuration.\n */\ninterface GroupingRule {\n strategy: GroupingStrategy;\n urlPathLevel?: number;\n pattern?: string;\n}\n\n/**\n * Resolve the group folder for an operation based on grouping config.\n */\nexport function resolveOperationGroupFolder(\n operation: ParsedOperation,\n conventions: FolderConventions\n): string {\n const groupingRule = conventions.operationsGrouping as\n | GroupingRule\n | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: operation.operationId,\n tags: operation.tags,\n path: operation.path,\n });\n}\n\n/**\n * Resolve the group folder for a model based on grouping config.\n */\nexport function resolveModelGroupFolder(\n modelName: string,\n conventions: FolderConventions,\n relatedPath?: string,\n relatedTags?: string[]\n): string {\n const groupingRule = conventions.modelsGrouping as GroupingRule | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: modelName,\n tags: relatedTags ?? [],\n path: relatedPath,\n });\n}\n\n/**\n * Resolve the group folder for an event based on grouping config.\n */\nexport function resolveEventGroupFolder(\n eventName: string,\n conventions: FolderConventions,\n relatedTags?: string[]\n): string {\n const groupingRule = conventions.eventsGrouping as GroupingRule | undefined;\n\n if (!groupingRule || groupingRule.strategy === 'none') {\n return '';\n }\n\n return applyGroupingStrategy(groupingRule, {\n name: eventName,\n tags: relatedTags ?? [],\n });\n}\n\n/**\n * Apply grouping strategy to extract folder name.\n */\nfunction applyGroupingStrategy(\n rule: GroupingRule,\n context: {\n name: string;\n tags?: string[];\n path?: string;\n owners?: string[];\n }\n): string {\n switch (rule.strategy) {\n case 'by-tag':\n return context.tags?.[0] ?? 'untagged';\n\n case 'by-owner':\n return context.owners?.[0] ?? 'unowned';\n\n case 'by-domain':\n return extractDomain(context.name);\n\n case 'by-url-path-single':\n return extractUrlPathLevel(context.path, 1);\n\n case 'by-url-path-multi':\n return extractUrlPathLevel(context.path, rule.urlPathLevel ?? 2);\n\n case 'by-feature':\n // Use domain extraction for feature grouping\n return extractDomain(context.name);\n\n case 'none':\n default:\n return '';\n }\n}\n\n/**\n * Extract domain from operation/model name.\n * e.g., \"users.create\" -> \"users\"\n */\nfunction extractDomain(name: string): string {\n // Handle camelCase/PascalCase names\n if (name.includes('.')) {\n return name.split('.')[0] ?? 'default';\n }\n if (name.includes('_')) {\n return name.split('_')[0] ?? 'default';\n }\n // Extract from camelCase like \"createUser\" -> \"create\"\n const match = name.match(/^([a-z]+)/i);\n return match?.[1]?.toLowerCase() ?? 'default';\n}\n\n/**\n * Extract URL path segments for grouping.\n */\nfunction extractUrlPathLevel(path: string | undefined, level: number): string {\n if (!path) return 'root';\n const segments = path.split('/').filter(Boolean);\n\n // Filter out path parameters like {id}\n const nonParamSegments = segments.filter((s) => !s.startsWith('{'));\n\n if (nonParamSegments.length === 0) return 'root';\n\n return nonParamSegments.slice(0, level).join('/');\n}\n\n/**\n * Build full output path including group folder.\n */\nexport function buildOutputPath(\n baseDir: string,\n surfaceDir: string,\n groupFolder: string,\n fileName: string\n): string {\n const parts = [baseDir, surfaceDir];\n\n if (groupFolder) {\n parts.push(groupFolder);\n }\n\n parts.push(fileName);\n\n return parts.filter(Boolean).join('/');\n}\n\n/**\n * Determine if feature-based grouping should be applied.\n */\nexport function shouldGroupByFeature(conventions: FolderConventions): boolean {\n return conventions.groupByFeature ?? false;\n}\n"],"mappings":";;;;AA+BA,SAAgB,4BACd,WACA,aACQ;CACR,MAAM,eAAe,YAAY;AAIjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM,UAAU;EAChB,MAAM,UAAU;EAChB,MAAM,UAAU;EACjB,CAAC;;;;;AAMJ,SAAgB,wBACd,WACA,aACA,aACA,aACQ;CACR,MAAM,eAAe,YAAY;AAEjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM;EACN,MAAM,eAAe,EAAE;EACvB,MAAM;EACP,CAAC;;;;;AAMJ,SAAgB,wBACd,WACA,aACA,aACQ;CACR,MAAM,eAAe,YAAY;AAEjC,KAAI,CAAC,gBAAgB,aAAa,aAAa,OAC7C,QAAO;AAGT,QAAO,sBAAsB,cAAc;EACzC,MAAM;EACN,MAAM,eAAe,EAAE;EACxB,CAAC;;;;;AAMJ,SAAS,sBACP,MACA,SAMQ;AACR,SAAQ,KAAK,UAAb;EACE,KAAK,SACH,QAAO,QAAQ,OAAO,MAAM;EAE9B,KAAK,WACH,QAAO,QAAQ,SAAS,MAAM;EAEhC,KAAK,YACH,QAAO,cAAc,QAAQ,KAAK;EAEpC,KAAK,qBACH,QAAO,oBAAoB,QAAQ,MAAM,EAAE;EAE7C,KAAK,oBACH,QAAO,oBAAoB,QAAQ,MAAM,KAAK,gBAAgB,EAAE;EAElE,KAAK,aAEH,QAAO,cAAc,QAAQ,KAAK;EAGpC,QACE,QAAO;;;;;;;AAQb,SAAS,cAAc,MAAsB;AAE3C,KAAI,KAAK,SAAS,IAAI,CACpB,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM;AAE/B,KAAI,KAAK,SAAS,IAAI,CACpB,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM;AAI/B,QADc,KAAK,MAAM,aAAa,GACvB,IAAI,aAAa,IAAI;;;;;AAMtC,SAAS,oBAAoB,MAA0B,OAAuB;AAC5E,KAAI,CAAC,KAAM,QAAO;CAIlB,MAAM,mBAHW,KAAK,MAAM,IAAI,CAAC,OAAO,QAAQ,CAGd,QAAQ,MAAM,CAAC,EAAE,WAAW,IAAI,CAAC;AAEnE,KAAI,iBAAiB,WAAW,EAAG,QAAO;AAE1C,QAAO,iBAAiB,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/openapi/importer/index.ts"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/openapi/importer/index.ts"],"mappings":";;;;;;;;cAiCa,iBAAA,GACX,WAAA,EAAa,WAAA,EACb,mBAAA,EAAqB,yBAAA,EACrB,aAAA,GAAe,OAAA,CAAQ,mBAAA,MACtB,YAAA;;;;iBA2Qa,eAAA,CACd,SAAA,EAAW,eAAA,EACX,OAAA,EAAS,OAAA,CAAQ,mBAAA,eACjB,mBAAA,EAAqB,yBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","names":[],"sources":["../../../src/openapi/parser/document.ts"],"
|
|
1
|
+
{"version":3,"file":"document.d.ts","names":[],"sources":["../../../src/openapi/parser/document.ts"],"mappings":";;;;;AAsBA;iBAAgB,oBAAA,CACd,GAAA,EAAK,eAAA,EACL,QAAA,GAAU,mBAAA,GACT,WAAA;;;;;;iBAwGmB,YAAA,CACpB,MAAA,UACA,OAAA,GAAS,mBAAA;EACP,KAAA,UAAe,UAAA,CAAW,KAAA;EAC1B,QAAA,IAAY,IAAA,aAAiB,OAAA;AAAA,IAE9B,OAAA,CAAQ,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/openapi/parser/utils.ts"],"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/openapi/parser/utils.ts"],"mappings":";;;;AAiBA;;iBAAgB,kBAAA,CACd,OAAA,UACA,MAAA,qBACC,eAAA;;;;iBAUa,YAAA,CAAa,OAAA;;;AAA7B;iBAWgB,aAAA,CAAc,GAAA,EAAK,eAAA,GAAkB,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-converter.d.ts","names":[],"sources":["../../src/openapi/schema-converter.ts"],"
|
|
1
|
+
{"version":3,"file":"schema-converter.d.ts","names":[],"sources":["../../src/openapi/schema-converter.ts"],"mappings":";;;;;;;UAgCiB,cAAA;EAMf;EAJA,IAAA;EAQA;EANA,QAAA;EAQW;EANX,KAAA;EAYe;EAVf,SAAA;;EAEA,WAAA;EAUA;EARA,WAAA;AAAA;;;;UAMe,WAAA;EAUa;EAR5B,IAAA;EAce;EAZf,IAAA,EAAM,cAAA;;EAEN,UAAA;EAYA;EAVA,UAAA;EAcA;EAZA,WAAA,GAAc,cAAA;AAAA;;;;UAMC,cAAA;EA+Be;EA7B9B,IAAA;EAgCe;EA9Bf,WAAA;EA4BA;EA1BA,MAAA,EAAQ,WAAA;EA4BP;EA1BD,IAAA;EA0Be;EAxBf,OAAA;AAAA;;;;iBAqBc,gBAAA,CACd,MAAA,EAAQ,aAAA,EACR,IAAA,YACC,cAAA;;;;iBA8Ga,aAAA,CAAc,MAAA,EAAQ,aAAA;;;;iBA2BtB,uBAAA,CACd,MAAA,EAAQ,aAAA,EACR,SAAA,UACA,YAAA,GAAc,YAAA,EACd,MAAA,GAAS,yBAAA,GACR,cAAA;;;;iBAkBa,eAAA,CACd,MAAA,EAAQ,WAAA,IACR,OAAA,EAAS,yBAAA,EACT,aAAA"}
|
|
@@ -38,7 +38,6 @@ function createSchemaGenerator(format, config) {
|
|
|
38
38
|
case "zod": return new ZodSchemaGenerator(config);
|
|
39
39
|
case "json-schema": return new JsonSchemaGenerator(config);
|
|
40
40
|
case "graphql": return new GraphQLSchemaGenerator(config);
|
|
41
|
-
case "contractspec":
|
|
42
41
|
default: return new ContractSpecSchemaGenerator(config);
|
|
43
42
|
}
|
|
44
43
|
}
|
|
@@ -84,37 +83,37 @@ var ContractSpecSchemaGenerator = class {
|
|
|
84
83
|
const required = schemaObj["required"] ?? [];
|
|
85
84
|
const enumValues = schemaObj["enum"];
|
|
86
85
|
if (enumValues && enumValues.length > 0) {
|
|
87
|
-
const safeModelName
|
|
86
|
+
const safeModelName = toPascalCase(toValidIdentifier(modelName));
|
|
88
87
|
return {
|
|
89
|
-
name: safeModelName
|
|
88
|
+
name: safeModelName,
|
|
90
89
|
description,
|
|
91
90
|
fields: [],
|
|
92
91
|
code: [
|
|
93
92
|
`${spaces}/**`,
|
|
94
|
-
`${spaces} * Enum type: ${safeModelName
|
|
93
|
+
`${spaces} * Enum type: ${safeModelName}`,
|
|
95
94
|
description ? `${spaces} * ${description}` : null,
|
|
96
95
|
`${spaces} */`,
|
|
97
|
-
`${spaces}export const ${safeModelName
|
|
96
|
+
`${spaces}export const ${safeModelName} = new EnumType('${safeModelName}', [${enumValues.map((v) => `'${String(v)}'`).join(", ")}]);`
|
|
98
97
|
].filter((line) => line !== null).join("\n")
|
|
99
98
|
};
|
|
100
99
|
}
|
|
101
100
|
const schemaType = schemaObj["type"];
|
|
102
101
|
if (schemaType && !properties && !enumValues) {
|
|
103
|
-
const safeModelName
|
|
102
|
+
const safeModelName = toPascalCase(toValidIdentifier(modelName));
|
|
104
103
|
const format = schemaObj["format"];
|
|
105
104
|
const scalarType = JSON_SCHEMA_TO_SCALAR[format ? `${schemaType}:${format}` : schemaType] ?? JSON_SCHEMA_TO_SCALAR[schemaType];
|
|
106
105
|
if (scalarType) return {
|
|
107
|
-
name: safeModelName
|
|
106
|
+
name: safeModelName,
|
|
108
107
|
description,
|
|
109
108
|
fields: [],
|
|
110
109
|
code: [
|
|
111
110
|
`${spaces}/**`,
|
|
112
|
-
`${spaces} * Type alias: ${safeModelName
|
|
111
|
+
`${spaces} * Type alias: ${safeModelName}`,
|
|
113
112
|
description ? `${spaces} * ${description}` : null,
|
|
114
113
|
`${spaces} * Underlying type: ${scalarType}`,
|
|
115
114
|
`${spaces} */`,
|
|
116
|
-
`${spaces}export const ${safeModelName
|
|
117
|
-
`${spaces} name: '${safeModelName
|
|
115
|
+
`${spaces}export const ${safeModelName} = defineSchemaModel({`,
|
|
116
|
+
`${spaces} name: '${safeModelName}',`,
|
|
118
117
|
description ? `${spaces} description: ${JSON.stringify(description)},` : null,
|
|
119
118
|
`${spaces} fields: {`,
|
|
120
119
|
`${spaces} value: {`,
|
|
@@ -127,30 +126,30 @@ var ContractSpecSchemaGenerator = class {
|
|
|
127
126
|
};
|
|
128
127
|
}
|
|
129
128
|
if (schemaObj["additionalProperties"] && !properties) {
|
|
130
|
-
const safeModelName
|
|
129
|
+
const safeModelName = toPascalCase(toValidIdentifier(modelName));
|
|
131
130
|
return {
|
|
132
|
-
name: safeModelName
|
|
131
|
+
name: safeModelName,
|
|
133
132
|
description,
|
|
134
133
|
fields: [],
|
|
135
134
|
code: [
|
|
136
135
|
`${spaces}/**`,
|
|
137
|
-
`${spaces} * Dictionary/Record type: ${safeModelName
|
|
136
|
+
`${spaces} * Dictionary/Record type: ${safeModelName}`,
|
|
138
137
|
description ? `${spaces} * ${description}` : null,
|
|
139
138
|
`${spaces} * Use as: Record<string, unknown> - access via record[key]`,
|
|
140
139
|
`${spaces} */`,
|
|
141
|
-
`${spaces}export const ${safeModelName
|
|
140
|
+
`${spaces}export const ${safeModelName} = ScalarTypeEnum.JSONObject();`
|
|
142
141
|
].filter((line) => line !== null).join("\n")
|
|
143
142
|
};
|
|
144
143
|
}
|
|
145
144
|
if (!properties) {
|
|
146
|
-
const safeModelName
|
|
145
|
+
const safeModelName = toPascalCase(toValidIdentifier(modelName));
|
|
147
146
|
return {
|
|
148
|
-
name: safeModelName
|
|
147
|
+
name: safeModelName,
|
|
149
148
|
description,
|
|
150
149
|
fields: [],
|
|
151
150
|
code: [
|
|
152
|
-
`${spaces}export const ${safeModelName
|
|
153
|
-
`${spaces} name: '${safeModelName
|
|
151
|
+
`${spaces}export const ${safeModelName} = defineSchemaModel({`,
|
|
152
|
+
`${spaces} name: '${safeModelName}',`,
|
|
154
153
|
description ? `${spaces} description: ${JSON.stringify(description)},` : null,
|
|
155
154
|
`${spaces} fields: {},`,
|
|
156
155
|
`${spaces}});`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["safeModelName"],"sources":["../../../src/openapi/schema-generators/index.ts"],"sourcesContent":["/**\n * Schema generator factory for multi-format code generation.\n *\n * Provides format-specific generators for OpenAPI to ContractSpec conversion.\n *\n * @module schema-generators\n */\n\nimport type {\n ResolvedContractsrcConfig,\n SchemaFormat,\n} from '@contractspec/lib.contracts';\nimport type { OpenApiSchema } from '../types';\nimport {\n type GeneratedModel,\n generateImports,\n getScalarType,\n jsonSchemaToType,\n type SchemaField,\n} from '../schema-converter';\nimport {\n toKebabCase,\n toPascalCase,\n toValidIdentifier,\n} from '../../common/utils';\n\nconst JSON_SCHEMA_TO_SCALAR: Record<string, string> = {\n string: 'ScalarTypeEnum.String_unsecure',\n integer: 'ScalarTypeEnum.Int_unsecure',\n number: 'ScalarTypeEnum.Float_unsecure',\n boolean: 'ScalarTypeEnum.Boolean',\n 'string:date': 'ScalarTypeEnum.Date',\n 'string:date-time': 'ScalarTypeEnum.DateTime',\n 'string:email': 'ScalarTypeEnum.EmailAddress',\n 'string:uri': 'ScalarTypeEnum.URL',\n 'string:uuid': 'ScalarTypeEnum.ID',\n};\n\nfunction isReference(schema: OpenApiSchema): schema is { $ref: string } {\n return typeof schema === 'object' && schema !== null && '$ref' in schema;\n}\n\nfunction typeNameFromRef(ref: string): string {\n const parts = ref.split('/');\n return parts[parts.length - 1] ?? 'Unknown';\n}\n\n/**\n * Generated code output for a model.\n */\nexport interface GeneratedCode {\n /** The generated TypeScript/JSON code */\n code: string;\n /** File name for the generated code */\n fileName: string;\n /** Required imports */\n imports: string[];\n /** The name of the exported symbol */\n name: string;\n}\n\n/**\n * Generated code output for a field.\n */\nexport interface GeneratedFieldCode {\n /** The field code snippet */\n code: string;\n /** Type reference for the field */\n typeRef: string;\n /** Whether this is an optional field */\n isOptional: boolean;\n /** Whether this is an array field */\n isArray: boolean;\n}\n\n/**\n * Interface for format-specific schema generators.\n */\nexport interface SchemaGenerator {\n /** Format this generator produces */\n format: SchemaFormat;\n\n /**\n * Generate code for a complete model/schema.\n */\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode;\n\n /**\n * Generate code for a single field.\n */\n generateField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean\n ): GeneratedFieldCode;\n\n /**\n * Get import statements needed for this generator's output.\n */\n getBaseImports(): string[];\n}\n\n/**\n * Factory function to create a format-specific schema generator.\n *\n * @param format - The target output format\n * @param config - ContractSpec configuration\n * @returns A schema generator for the specified format\n *\n * @example\n * ```typescript\n * const generator = createSchemaGenerator('zod', config);\n * const model = generator.generateModel(openApiSchema, 'User');\n * ```\n */\nexport function createSchemaGenerator(\n format: SchemaFormat,\n config?: ResolvedContractsrcConfig\n): SchemaGenerator {\n switch (format) {\n case 'zod':\n return new ZodSchemaGenerator(config);\n case 'json-schema':\n return new JsonSchemaGenerator(config);\n case 'graphql':\n return new GraphQLSchemaGenerator(config);\n case 'contractspec':\n default:\n return new ContractSpecSchemaGenerator(config);\n }\n}\n\n// ============================================================================\n// ContractSpec Generator (default)\n// ============================================================================\n\nexport class ContractSpecSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'contractspec';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(schema: OpenApiSchema, name: string): GeneratedCode {\n const model = this.generateContractSpecSchema(schema, name);\n\n // Calculate imports for dependencies\n const dependencyImports = this.config\n ? generateImports(model.fields, this.config, false)\n .split('\\n')\n .filter(Boolean)\n : [];\n\n // Add nested model imports?\n // Nested models are inlined in code, but might have refs.\n // generateImports handles fields recursively? No, generateImports iterates top-level fields.\n // But nested models are hoisted, so their fields are not in 'fields' array of parent directly?\n // Wait, GeneratedModel.fields contains 'nestedModel'.\n // generateImports should traverse nested models?\n // The original generateImports does NOT traverse nested models.\n // However, the original code worked, so maybe simple traversal is enough.\n\n return {\n code: model.code,\n fileName: toKebabCase(name) + '.ts',\n imports: [...this.getBaseImports(), ...dependencyImports],\n name: model.name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const field = this.convertField(schema, fieldName, required);\n\n return {\n code: field.scalarType\n ? `${field.scalarType}()`\n : 'ScalarTypeEnum.String_unsecure()',\n typeRef: field.type.type,\n isOptional: field.type.optional,\n isArray: field.type.array,\n };\n }\n\n getBaseImports(): string[] {\n return [\n \"import { defineSchemaModel, ScalarTypeEnum, EnumType } from '@contractspec/lib.schema';\",\n ];\n }\n\n // Ported logic\n private generateContractSpecSchema(\n schema: OpenApiSchema,\n modelName: string,\n indent = 0\n ): GeneratedModel {\n const spaces = ' '.repeat(indent);\n const fields: SchemaField[] = [];\n\n if (isReference(schema)) {\n return {\n name: toPascalCase(typeNameFromRef(schema.$ref)),\n fields: [],\n code: `// Reference to ${schema.$ref}`,\n };\n }\n\n const schemaObj = schema as Record<string, unknown>;\n const description = schemaObj['description'] as string | undefined;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const required = (schemaObj['required'] as string[]) ?? [];\n\n // Handle enum types\n const enumValues = schemaObj['enum'] as unknown[] | undefined;\n if (enumValues && enumValues.length > 0) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const enumCode = [\n `${spaces}/**`,\n `${spaces} * Enum type: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = new EnumType('${safeModelName}', [${enumValues.map((v) => `'${String(v)}'`).join(', ')}]);`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: enumCode,\n };\n }\n\n // Handle primitive types alias\n const schemaType = schemaObj['type'] as string | undefined;\n if (schemaType && !properties && !enumValues) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const format = schemaObj['format'] as string | undefined;\n const scalarKey = format ? `${schemaType}:${format}` : schemaType;\n const scalarType =\n JSON_SCHEMA_TO_SCALAR[scalarKey] ?? JSON_SCHEMA_TO_SCALAR[schemaType];\n\n if (scalarType) {\n const aliasCode = [\n `${spaces}/**`,\n `${spaces} * Type alias: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} * Underlying type: ${scalarType}`,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = defineSchemaModel({`,\n `${spaces} name: '${safeModelName}',`,\n description\n ? `${spaces} description: ${JSON.stringify(description)},`\n : null,\n `${spaces} fields: {`,\n `${spaces} value: {`,\n `${spaces} type: ${scalarType}(),`,\n `${spaces} isOptional: false,`,\n `${spaces} },`,\n `${spaces} },`,\n `${spaces}});`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: aliasCode,\n };\n }\n }\n\n // Handle additionalProperties (dictionary)\n const additionalProperties = schemaObj['additionalProperties'];\n if (additionalProperties && !properties) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n\n const dictCode = [\n `${spaces}/**`,\n `${spaces} * Dictionary/Record type: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} * Use as: Record<string, unknown> - access via record[key]`,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = ScalarTypeEnum.JSONObject();`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: dictCode,\n };\n }\n\n if (!properties) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const emptyModelCode = [\n `${spaces}export const ${safeModelName} = defineSchemaModel({`,\n `${spaces} name: '${safeModelName}',`,\n description\n ? `${spaces} description: ${JSON.stringify(description)},`\n : null,\n `${spaces} fields: {},`,\n `${spaces}});`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: emptyModelCode,\n };\n }\n\n // Generate fields\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n fields.push(\n this.convertField(propSchema, propName, isRequired, safeModelName)\n );\n }\n\n // Generate code\n const lines: string[] = [];\n\n // Prepend nested models\n for (const field of fields) {\n if (field.nestedModel) {\n lines.push(field.nestedModel.code);\n lines.push('');\n }\n }\n\n // Model definition\n lines.push(`${spaces}export const ${safeModelName} = defineSchemaModel({`);\n lines.push(`${spaces} name: '${safeModelName}',`);\n if (description) {\n lines.push(`${spaces} description: ${JSON.stringify(description)},`);\n }\n lines.push(`${spaces} fields: {`);\n\n for (const field of fields) {\n const fieldLines = this.generateFieldCodeHelper(field, indent + 2);\n lines.push(fieldLines);\n }\n\n lines.push(`${spaces} },`);\n lines.push(`${spaces}});`);\n\n return {\n name: safeModelName,\n description,\n fields,\n code: lines.join('\\n'),\n imports: [],\n };\n }\n\n private convertField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean,\n parentName?: string\n ): SchemaField {\n const type = jsonSchemaToType(schema, fieldName);\n const scalarType = getScalarType(schema);\n\n let enumValues: string[] | undefined;\n let nestedModel: GeneratedModel | undefined;\n\n if (!isReference(schema)) {\n const schemaObj = schema as Record<string, unknown>;\n const enumArr = schemaObj['enum'] as unknown[] | undefined;\n if (enumArr) {\n enumValues = enumArr.map(String);\n }\n\n // Handle nested objects\n if (\n schemaObj['type'] === 'object' &&\n !scalarType &&\n schemaObj['properties'] &&\n !enumValues\n ) {\n const nestedName =\n (parentName ? parentName : '') + toPascalCase(fieldName);\n nestedModel = this.generateContractSpecSchema(schema, nestedName);\n\n type.type = nestedModel.name;\n type.isReference = true;\n }\n }\n\n return {\n name: fieldName,\n type: {\n ...type,\n optional: !required || type.optional,\n description: !isReference(schema)\n ? ((schema as Record<string, unknown>)['description'] as string)\n : undefined,\n },\n scalarType,\n enumValues,\n nestedModel,\n };\n }\n\n private generateFieldCodeHelper(field: SchemaField, indent: number): string {\n const spaces = ' '.repeat(indent);\n const lines: string[] = [];\n\n const isIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(field.name);\n const safeKey = isIdentifier ? field.name : `'${field.name}'`;\n lines.push(`${spaces}${safeKey}: {`);\n\n if (field.enumValues) {\n const enumName = toPascalCase(field.name) + 'Enum';\n lines.push(\n `${spaces} type: new EnumType('${enumName}', [${field.enumValues.map((v) => `'${v}'`).join(', ')}]),`\n );\n } else if (field.scalarType) {\n lines.push(`${spaces} type: ${field.scalarType}(),`);\n } else if (field.nestedModel) {\n lines.push(`${spaces} type: ${field.nestedModel.name},`);\n } else if (field.type.primitive) {\n const fallbackScalar =\n field.type.type === 'number'\n ? 'ScalarTypeEnum.Float_unsecure'\n : field.type.type === 'boolean'\n ? 'ScalarTypeEnum.Boolean_unsecure'\n : 'ScalarTypeEnum.String_unsecure';\n lines.push(`${spaces} type: ${fallbackScalar}(),`);\n } else if (field.type.isReference) {\n lines.push(`${spaces} type: ${field.type.type},`);\n } else {\n lines.push(\n `${spaces} type: ScalarTypeEnum.JSONObject(), // TODO: Define nested model for ${field.type.type}`\n );\n }\n\n lines.push(`${spaces} isOptional: ${field.type.optional},`);\n\n if (field.type.array) {\n lines.push(`${spaces} isArray: true,`);\n }\n\n lines.push(`${spaces}},`);\n\n return lines.join('\\n');\n }\n}\n\n// ============================================================================\n// Zod Generator\n// ============================================================================\n\nexport class ZodSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'zod';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const _required = (schemaObj['required'] as string[]) ?? [];\n const description = options?.description ?? schemaObj['description'];\n\n const lines: string[] = [];\n\n if (description) {\n lines.push(`/**`);\n lines.push(` * ${description}`);\n lines.push(` */`);\n }\n\n // Generate Zod Schema\n const schemaName = `${name}Schema`;\n let schemaCode;\n\n if (properties) {\n schemaCode = this.generateZodObject(schemaObj);\n } else {\n schemaCode = 'z.object({})';\n }\n\n lines.push(`export const ${schemaName} = ${schemaCode};`);\n lines.push(``);\n\n // Generate ZodSchemaType wrapper for ContractSpec compatibility\n lines.push(\n `export const ${name} = new ZodSchemaType(${schemaName}, { name: '${name}', description: ${JSON.stringify(description)} });`\n );\n lines.push(``);\n\n // Generate Type\n lines.push(`export type ${name} = z.infer<typeof ${schemaName}>;`);\n\n // Dependencies?\n // Zod generator doesn't currently resolve references recursively or import them\n // This is a limitation: if prop is ref, use z.lazy(() => RefSchema) or similar?\n // For now assuming shallow/primitive or using z.unknown/record for complex stuff\n // Or if Contracts-transformers logic for references is ported.\n // Simplifying: Zod generator relies on primitive mapping for now.\n\n return {\n code: lines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(), // Todo: Add dependency imports if references used\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const format = schemaObj['format'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n let zodType: string;\n\n if (type === 'object' && schemaObj['properties']) {\n zodType = this.generateZodObject(schemaObj);\n } else {\n zodType = this.mapTypeToZod(type, format);\n\n if (schemaObj['enum']) {\n const enumValues = schemaObj['enum'] as string[];\n zodType = `z.enum([${enumValues.map((v) => `'${v}'`).join(', ')}])`;\n }\n\n if (type === 'array') {\n const items = schemaObj['items'] as OpenApiSchema | undefined;\n if (items) {\n const itemField = this.generateField(items, 'item', true);\n zodType = `z.array(${itemField.code.replace('.optional()', '')})`;\n } else {\n zodType = 'z.array(z.unknown())';\n }\n }\n }\n\n // Add constraints\n if (type === 'string') {\n if (schemaObj['minLength'] !== undefined)\n zodType += `.min(${schemaObj['minLength']})`;\n if (schemaObj['maxLength'] !== undefined)\n zodType += `.max(${schemaObj['maxLength']})`;\n if (schemaObj['pattern'] !== undefined)\n zodType += `.regex(/${schemaObj['pattern']}/)`;\n } else if (type === 'integer' || type === 'number') {\n if (schemaObj['minimum'] !== undefined) {\n zodType +=\n schemaObj['exclusiveMinimum'] === true\n ? `.gt(${schemaObj['minimum']})`\n : `.min(${schemaObj['minimum']})`;\n } else if (typeof schemaObj['exclusiveMinimum'] === 'number') {\n zodType += `.gt(${schemaObj['exclusiveMinimum']})`;\n }\n\n if (schemaObj['maximum'] !== undefined) {\n zodType +=\n schemaObj['exclusiveMaximum'] === true\n ? `.lt(${schemaObj['maximum']})`\n : `.max(${schemaObj['maximum']})`;\n } else if (typeof schemaObj['exclusiveMaximum'] === 'number') {\n zodType += `.lt(${schemaObj['exclusiveMaximum']})`;\n }\n\n if (schemaObj['multipleOf'] !== undefined) {\n zodType += `.step(${schemaObj['multipleOf']})`;\n }\n } else if (type === 'array') {\n if (schemaObj['minItems'] !== undefined)\n zodType += `.min(${schemaObj['minItems']})`;\n if (schemaObj['maxItems'] !== undefined)\n zodType += `.max(${schemaObj['maxItems']})`;\n }\n\n if (schemaObj['default'] !== undefined) {\n zodType += `.default(${JSON.stringify(schemaObj['default'])})`;\n }\n\n if (!required || nullable) {\n zodType = `${zodType}.optional()`;\n }\n\n return {\n code: zodType,\n typeRef: type ?? 'unknown',\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\n \"import * as z from 'zod';\",\n \"import { ZodSchemaType } from '@contractspec/lib.schema';\",\n ];\n }\n\n private generateZodObject(schemaObj: Record<string, unknown>): string {\n const required = (schemaObj['required'] as string[]) ?? [];\n const properties = schemaObj['properties'] as Record<string, OpenApiSchema>;\n const lines: string[] = ['z.object({'];\n\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n const field = this.generateField(propSchema, propName, isRequired);\n // If name is not a valid identifier, quote it\n const safeName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(propName)\n ? propName\n : `'${propName}'`;\n\n lines.push(` ${safeName}: ${field.code},`);\n }\n\n lines.push('})');\n return lines.join('\\n');\n }\n\n private mapTypeToZod(type?: string, format?: string): string {\n if (format === 'date-time') return 'z.string().datetime()';\n if (format === 'date') return 'z.string().date()';\n if (format === 'email') return 'z.string().email()';\n if (format === 'uri' || format === 'url') return 'z.string().url()';\n if (format === 'uuid') return 'z.string().uuid()';\n\n switch (type) {\n case 'string':\n return 'z.string()';\n case 'integer':\n return 'z.number().int()';\n case 'number':\n return 'z.number()';\n case 'boolean':\n return 'z.boolean()';\n case 'object':\n return 'z.record(z.string(), z.unknown())';\n case 'null':\n return 'z.null()';\n default:\n return 'z.unknown()';\n }\n }\n}\n\n// ============================================================================\n// JSON Schema Generator\n// ============================================================================\n\nexport class JsonSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'json-schema';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const description = options?.description ?? schemaObj['description'];\n\n // Create a clean JSON Schema object\n const jsonSchema: Record<string, unknown> = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: name,\n ...schemaObj,\n };\n\n if (description) {\n jsonSchema['description'] = description;\n }\n\n const lines: string[] = [];\n lines.push(`/**`);\n lines.push(` * JSON Schema: ${name}`);\n if (description) {\n lines.push(` * ${description}`);\n }\n lines.push(` */`);\n\n const schemaName = `${name}Schema`;\n lines.push(\n `export const ${schemaName} = ${JSON.stringify(jsonSchema, null, 2)} as const;`\n );\n lines.push(``);\n\n // Generate wrapper\n lines.push(`export const ${name} = new JsonSchemaType(${schemaName});`);\n lines.push(``);\n\n // Type derived from JsonSchemaType or similar?\n // Actually JsonSchemaType doesn't strictly infer TS type from JSON schema at compile time easily without other tools.\n // For now, export type as unknown or rely on library.\n lines.push(\n `export type ${name} = unknown; // JSON Schema type inference not fully supported`\n );\n\n return {\n code: lines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(), // dependency imports?\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n return {\n code: JSON.stringify(schemaObj),\n typeRef: type ?? 'unknown',\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\"import { JsonSchemaType } from '@contractspec/lib.schema';\"];\n }\n}\n\n// ============================================================================\n// GraphQL Generator\n// ============================================================================\n\nexport class GraphQLSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'graphql';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const required = (schemaObj['required'] as string[]) ?? [];\n const description = options?.description ?? schemaObj['description'];\n\n const lines: string[] = [];\n\n if (description) {\n lines.push(`\"\"\"${description}\"\"\"`);\n }\n\n lines.push(`type ${name} {`);\n\n if (properties) {\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n const field = this.generateField(propSchema, propName, isRequired);\n const nullMarker = isRequired ? '!' : '';\n lines.push(` ${propName}: ${field.typeRef}${nullMarker}`);\n }\n }\n\n lines.push(`}`);\n\n // Also generate SDL as a string constant\n const sdl = lines.join('\\n');\n const tsLines: string[] = [];\n tsLines.push(`/**`);\n tsLines.push(` * GraphQL type definition: ${name}`);\n tsLines.push(` */`);\n tsLines.push(`export const ${name}TypeDef = \\`${sdl}\\`;`);\n tsLines.push(``);\n tsLines.push(\n `export const ${name} = new GraphQLSchemaType(${name}TypeDef, '${name}');`\n );\n\n return {\n code: tsLines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(),\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const format = schemaObj['format'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n const gqlType = this.mapTypeToGraphQL(type, format);\n\n return {\n code: gqlType,\n typeRef: gqlType,\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\"import { GraphQLSchemaType } from '@contractspec/lib.schema';\"];\n }\n\n private mapTypeToGraphQL(type?: string, format?: string): string {\n if (format === 'date-time') return 'DateTime';\n if (format === 'date') return 'Date';\n if (format === 'email') return 'String';\n if (format === 'uri' || format === 'url') return 'String';\n if (format === 'uuid') return 'ID';\n\n switch (type) {\n case 'string':\n return 'String';\n case 'integer':\n return 'Int';\n case 'number':\n return 'Float';\n case 'boolean':\n return 'Boolean';\n case 'object':\n return 'JSON';\n case 'array':\n return '[JSON]';\n default:\n return 'JSON';\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/openapi/schema-generators/index.ts"],"sourcesContent":["/**\n * Schema generator factory for multi-format code generation.\n *\n * Provides format-specific generators for OpenAPI to ContractSpec conversion.\n *\n * @module schema-generators\n */\n\nimport type {\n ResolvedContractsrcConfig,\n SchemaFormat,\n} from '@contractspec/lib.contracts';\nimport type { OpenApiSchema } from '../types';\nimport {\n type GeneratedModel,\n generateImports,\n getScalarType,\n jsonSchemaToType,\n type SchemaField,\n} from '../schema-converter';\nimport {\n toKebabCase,\n toPascalCase,\n toValidIdentifier,\n} from '../../common/utils';\n\nconst JSON_SCHEMA_TO_SCALAR: Record<string, string> = {\n string: 'ScalarTypeEnum.String_unsecure',\n integer: 'ScalarTypeEnum.Int_unsecure',\n number: 'ScalarTypeEnum.Float_unsecure',\n boolean: 'ScalarTypeEnum.Boolean',\n 'string:date': 'ScalarTypeEnum.Date',\n 'string:date-time': 'ScalarTypeEnum.DateTime',\n 'string:email': 'ScalarTypeEnum.EmailAddress',\n 'string:uri': 'ScalarTypeEnum.URL',\n 'string:uuid': 'ScalarTypeEnum.ID',\n};\n\nfunction isReference(schema: OpenApiSchema): schema is { $ref: string } {\n return typeof schema === 'object' && schema !== null && '$ref' in schema;\n}\n\nfunction typeNameFromRef(ref: string): string {\n const parts = ref.split('/');\n return parts[parts.length - 1] ?? 'Unknown';\n}\n\n/**\n * Generated code output for a model.\n */\nexport interface GeneratedCode {\n /** The generated TypeScript/JSON code */\n code: string;\n /** File name for the generated code */\n fileName: string;\n /** Required imports */\n imports: string[];\n /** The name of the exported symbol */\n name: string;\n}\n\n/**\n * Generated code output for a field.\n */\nexport interface GeneratedFieldCode {\n /** The field code snippet */\n code: string;\n /** Type reference for the field */\n typeRef: string;\n /** Whether this is an optional field */\n isOptional: boolean;\n /** Whether this is an array field */\n isArray: boolean;\n}\n\n/**\n * Interface for format-specific schema generators.\n */\nexport interface SchemaGenerator {\n /** Format this generator produces */\n format: SchemaFormat;\n\n /**\n * Generate code for a complete model/schema.\n */\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode;\n\n /**\n * Generate code for a single field.\n */\n generateField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean\n ): GeneratedFieldCode;\n\n /**\n * Get import statements needed for this generator's output.\n */\n getBaseImports(): string[];\n}\n\n/**\n * Factory function to create a format-specific schema generator.\n *\n * @param format - The target output format\n * @param config - ContractSpec configuration\n * @returns A schema generator for the specified format\n *\n * @example\n * ```typescript\n * const generator = createSchemaGenerator('zod', config);\n * const model = generator.generateModel(openApiSchema, 'User');\n * ```\n */\nexport function createSchemaGenerator(\n format: SchemaFormat,\n config?: ResolvedContractsrcConfig\n): SchemaGenerator {\n switch (format) {\n case 'zod':\n return new ZodSchemaGenerator(config);\n case 'json-schema':\n return new JsonSchemaGenerator(config);\n case 'graphql':\n return new GraphQLSchemaGenerator(config);\n case 'contractspec':\n default:\n return new ContractSpecSchemaGenerator(config);\n }\n}\n\n// ============================================================================\n// ContractSpec Generator (default)\n// ============================================================================\n\nexport class ContractSpecSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'contractspec';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(schema: OpenApiSchema, name: string): GeneratedCode {\n const model = this.generateContractSpecSchema(schema, name);\n\n // Calculate imports for dependencies\n const dependencyImports = this.config\n ? generateImports(model.fields, this.config, false)\n .split('\\n')\n .filter(Boolean)\n : [];\n\n // Add nested model imports?\n // Nested models are inlined in code, but might have refs.\n // generateImports handles fields recursively? No, generateImports iterates top-level fields.\n // But nested models are hoisted, so their fields are not in 'fields' array of parent directly?\n // Wait, GeneratedModel.fields contains 'nestedModel'.\n // generateImports should traverse nested models?\n // The original generateImports does NOT traverse nested models.\n // However, the original code worked, so maybe simple traversal is enough.\n\n return {\n code: model.code,\n fileName: toKebabCase(name) + '.ts',\n imports: [...this.getBaseImports(), ...dependencyImports],\n name: model.name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const field = this.convertField(schema, fieldName, required);\n\n return {\n code: field.scalarType\n ? `${field.scalarType}()`\n : 'ScalarTypeEnum.String_unsecure()',\n typeRef: field.type.type,\n isOptional: field.type.optional,\n isArray: field.type.array,\n };\n }\n\n getBaseImports(): string[] {\n return [\n \"import { defineSchemaModel, ScalarTypeEnum, EnumType } from '@contractspec/lib.schema';\",\n ];\n }\n\n // Ported logic\n private generateContractSpecSchema(\n schema: OpenApiSchema,\n modelName: string,\n indent = 0\n ): GeneratedModel {\n const spaces = ' '.repeat(indent);\n const fields: SchemaField[] = [];\n\n if (isReference(schema)) {\n return {\n name: toPascalCase(typeNameFromRef(schema.$ref)),\n fields: [],\n code: `// Reference to ${schema.$ref}`,\n };\n }\n\n const schemaObj = schema as Record<string, unknown>;\n const description = schemaObj['description'] as string | undefined;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const required = (schemaObj['required'] as string[]) ?? [];\n\n // Handle enum types\n const enumValues = schemaObj['enum'] as unknown[] | undefined;\n if (enumValues && enumValues.length > 0) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const enumCode = [\n `${spaces}/**`,\n `${spaces} * Enum type: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = new EnumType('${safeModelName}', [${enumValues.map((v) => `'${String(v)}'`).join(', ')}]);`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: enumCode,\n };\n }\n\n // Handle primitive types alias\n const schemaType = schemaObj['type'] as string | undefined;\n if (schemaType && !properties && !enumValues) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const format = schemaObj['format'] as string | undefined;\n const scalarKey = format ? `${schemaType}:${format}` : schemaType;\n const scalarType =\n JSON_SCHEMA_TO_SCALAR[scalarKey] ?? JSON_SCHEMA_TO_SCALAR[schemaType];\n\n if (scalarType) {\n const aliasCode = [\n `${spaces}/**`,\n `${spaces} * Type alias: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} * Underlying type: ${scalarType}`,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = defineSchemaModel({`,\n `${spaces} name: '${safeModelName}',`,\n description\n ? `${spaces} description: ${JSON.stringify(description)},`\n : null,\n `${spaces} fields: {`,\n `${spaces} value: {`,\n `${spaces} type: ${scalarType}(),`,\n `${spaces} isOptional: false,`,\n `${spaces} },`,\n `${spaces} },`,\n `${spaces}});`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: aliasCode,\n };\n }\n }\n\n // Handle additionalProperties (dictionary)\n const additionalProperties = schemaObj['additionalProperties'];\n if (additionalProperties && !properties) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n\n const dictCode = [\n `${spaces}/**`,\n `${spaces} * Dictionary/Record type: ${safeModelName}`,\n description ? `${spaces} * ${description}` : null,\n `${spaces} * Use as: Record<string, unknown> - access via record[key]`,\n `${spaces} */`,\n `${spaces}export const ${safeModelName} = ScalarTypeEnum.JSONObject();`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: dictCode,\n };\n }\n\n if (!properties) {\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n const emptyModelCode = [\n `${spaces}export const ${safeModelName} = defineSchemaModel({`,\n `${spaces} name: '${safeModelName}',`,\n description\n ? `${spaces} description: ${JSON.stringify(description)},`\n : null,\n `${spaces} fields: {},`,\n `${spaces}});`,\n ]\n .filter((line) => line !== null)\n .join('\\n');\n\n return {\n name: safeModelName,\n description,\n fields: [],\n code: emptyModelCode,\n };\n }\n\n // Generate fields\n const safeModelName = toPascalCase(toValidIdentifier(modelName));\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n fields.push(\n this.convertField(propSchema, propName, isRequired, safeModelName)\n );\n }\n\n // Generate code\n const lines: string[] = [];\n\n // Prepend nested models\n for (const field of fields) {\n if (field.nestedModel) {\n lines.push(field.nestedModel.code);\n lines.push('');\n }\n }\n\n // Model definition\n lines.push(`${spaces}export const ${safeModelName} = defineSchemaModel({`);\n lines.push(`${spaces} name: '${safeModelName}',`);\n if (description) {\n lines.push(`${spaces} description: ${JSON.stringify(description)},`);\n }\n lines.push(`${spaces} fields: {`);\n\n for (const field of fields) {\n const fieldLines = this.generateFieldCodeHelper(field, indent + 2);\n lines.push(fieldLines);\n }\n\n lines.push(`${spaces} },`);\n lines.push(`${spaces}});`);\n\n return {\n name: safeModelName,\n description,\n fields,\n code: lines.join('\\n'),\n imports: [],\n };\n }\n\n private convertField(\n schema: OpenApiSchema,\n fieldName: string,\n required: boolean,\n parentName?: string\n ): SchemaField {\n const type = jsonSchemaToType(schema, fieldName);\n const scalarType = getScalarType(schema);\n\n let enumValues: string[] | undefined;\n let nestedModel: GeneratedModel | undefined;\n\n if (!isReference(schema)) {\n const schemaObj = schema as Record<string, unknown>;\n const enumArr = schemaObj['enum'] as unknown[] | undefined;\n if (enumArr) {\n enumValues = enumArr.map(String);\n }\n\n // Handle nested objects\n if (\n schemaObj['type'] === 'object' &&\n !scalarType &&\n schemaObj['properties'] &&\n !enumValues\n ) {\n const nestedName =\n (parentName ? parentName : '') + toPascalCase(fieldName);\n nestedModel = this.generateContractSpecSchema(schema, nestedName);\n\n type.type = nestedModel.name;\n type.isReference = true;\n }\n }\n\n return {\n name: fieldName,\n type: {\n ...type,\n optional: !required || type.optional,\n description: !isReference(schema)\n ? ((schema as Record<string, unknown>)['description'] as string)\n : undefined,\n },\n scalarType,\n enumValues,\n nestedModel,\n };\n }\n\n private generateFieldCodeHelper(field: SchemaField, indent: number): string {\n const spaces = ' '.repeat(indent);\n const lines: string[] = [];\n\n const isIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(field.name);\n const safeKey = isIdentifier ? field.name : `'${field.name}'`;\n lines.push(`${spaces}${safeKey}: {`);\n\n if (field.enumValues) {\n const enumName = toPascalCase(field.name) + 'Enum';\n lines.push(\n `${spaces} type: new EnumType('${enumName}', [${field.enumValues.map((v) => `'${v}'`).join(', ')}]),`\n );\n } else if (field.scalarType) {\n lines.push(`${spaces} type: ${field.scalarType}(),`);\n } else if (field.nestedModel) {\n lines.push(`${spaces} type: ${field.nestedModel.name},`);\n } else if (field.type.primitive) {\n const fallbackScalar =\n field.type.type === 'number'\n ? 'ScalarTypeEnum.Float_unsecure'\n : field.type.type === 'boolean'\n ? 'ScalarTypeEnum.Boolean_unsecure'\n : 'ScalarTypeEnum.String_unsecure';\n lines.push(`${spaces} type: ${fallbackScalar}(),`);\n } else if (field.type.isReference) {\n lines.push(`${spaces} type: ${field.type.type},`);\n } else {\n lines.push(\n `${spaces} type: ScalarTypeEnum.JSONObject(), // TODO: Define nested model for ${field.type.type}`\n );\n }\n\n lines.push(`${spaces} isOptional: ${field.type.optional},`);\n\n if (field.type.array) {\n lines.push(`${spaces} isArray: true,`);\n }\n\n lines.push(`${spaces}},`);\n\n return lines.join('\\n');\n }\n}\n\n// ============================================================================\n// Zod Generator\n// ============================================================================\n\nexport class ZodSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'zod';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const _required = (schemaObj['required'] as string[]) ?? [];\n const description = options?.description ?? schemaObj['description'];\n\n const lines: string[] = [];\n\n if (description) {\n lines.push(`/**`);\n lines.push(` * ${description}`);\n lines.push(` */`);\n }\n\n // Generate Zod Schema\n const schemaName = `${name}Schema`;\n let schemaCode;\n\n if (properties) {\n schemaCode = this.generateZodObject(schemaObj);\n } else {\n schemaCode = 'z.object({})';\n }\n\n lines.push(`export const ${schemaName} = ${schemaCode};`);\n lines.push(``);\n\n // Generate ZodSchemaType wrapper for ContractSpec compatibility\n lines.push(\n `export const ${name} = new ZodSchemaType(${schemaName}, { name: '${name}', description: ${JSON.stringify(description)} });`\n );\n lines.push(``);\n\n // Generate Type\n lines.push(`export type ${name} = z.infer<typeof ${schemaName}>;`);\n\n // Dependencies?\n // Zod generator doesn't currently resolve references recursively or import them\n // This is a limitation: if prop is ref, use z.lazy(() => RefSchema) or similar?\n // For now assuming shallow/primitive or using z.unknown/record for complex stuff\n // Or if Contracts-transformers logic for references is ported.\n // Simplifying: Zod generator relies on primitive mapping for now.\n\n return {\n code: lines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(), // Todo: Add dependency imports if references used\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const format = schemaObj['format'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n let zodType: string;\n\n if (type === 'object' && schemaObj['properties']) {\n zodType = this.generateZodObject(schemaObj);\n } else {\n zodType = this.mapTypeToZod(type, format);\n\n if (schemaObj['enum']) {\n const enumValues = schemaObj['enum'] as string[];\n zodType = `z.enum([${enumValues.map((v) => `'${v}'`).join(', ')}])`;\n }\n\n if (type === 'array') {\n const items = schemaObj['items'] as OpenApiSchema | undefined;\n if (items) {\n const itemField = this.generateField(items, 'item', true);\n zodType = `z.array(${itemField.code.replace('.optional()', '')})`;\n } else {\n zodType = 'z.array(z.unknown())';\n }\n }\n }\n\n // Add constraints\n if (type === 'string') {\n if (schemaObj['minLength'] !== undefined)\n zodType += `.min(${schemaObj['minLength']})`;\n if (schemaObj['maxLength'] !== undefined)\n zodType += `.max(${schemaObj['maxLength']})`;\n if (schemaObj['pattern'] !== undefined)\n zodType += `.regex(/${schemaObj['pattern']}/)`;\n } else if (type === 'integer' || type === 'number') {\n if (schemaObj['minimum'] !== undefined) {\n zodType +=\n schemaObj['exclusiveMinimum'] === true\n ? `.gt(${schemaObj['minimum']})`\n : `.min(${schemaObj['minimum']})`;\n } else if (typeof schemaObj['exclusiveMinimum'] === 'number') {\n zodType += `.gt(${schemaObj['exclusiveMinimum']})`;\n }\n\n if (schemaObj['maximum'] !== undefined) {\n zodType +=\n schemaObj['exclusiveMaximum'] === true\n ? `.lt(${schemaObj['maximum']})`\n : `.max(${schemaObj['maximum']})`;\n } else if (typeof schemaObj['exclusiveMaximum'] === 'number') {\n zodType += `.lt(${schemaObj['exclusiveMaximum']})`;\n }\n\n if (schemaObj['multipleOf'] !== undefined) {\n zodType += `.step(${schemaObj['multipleOf']})`;\n }\n } else if (type === 'array') {\n if (schemaObj['minItems'] !== undefined)\n zodType += `.min(${schemaObj['minItems']})`;\n if (schemaObj['maxItems'] !== undefined)\n zodType += `.max(${schemaObj['maxItems']})`;\n }\n\n if (schemaObj['default'] !== undefined) {\n zodType += `.default(${JSON.stringify(schemaObj['default'])})`;\n }\n\n if (!required || nullable) {\n zodType = `${zodType}.optional()`;\n }\n\n return {\n code: zodType,\n typeRef: type ?? 'unknown',\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\n \"import * as z from 'zod';\",\n \"import { ZodSchemaType } from '@contractspec/lib.schema';\",\n ];\n }\n\n private generateZodObject(schemaObj: Record<string, unknown>): string {\n const required = (schemaObj['required'] as string[]) ?? [];\n const properties = schemaObj['properties'] as Record<string, OpenApiSchema>;\n const lines: string[] = ['z.object({'];\n\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n const field = this.generateField(propSchema, propName, isRequired);\n // If name is not a valid identifier, quote it\n const safeName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(propName)\n ? propName\n : `'${propName}'`;\n\n lines.push(` ${safeName}: ${field.code},`);\n }\n\n lines.push('})');\n return lines.join('\\n');\n }\n\n private mapTypeToZod(type?: string, format?: string): string {\n if (format === 'date-time') return 'z.string().datetime()';\n if (format === 'date') return 'z.string().date()';\n if (format === 'email') return 'z.string().email()';\n if (format === 'uri' || format === 'url') return 'z.string().url()';\n if (format === 'uuid') return 'z.string().uuid()';\n\n switch (type) {\n case 'string':\n return 'z.string()';\n case 'integer':\n return 'z.number().int()';\n case 'number':\n return 'z.number()';\n case 'boolean':\n return 'z.boolean()';\n case 'object':\n return 'z.record(z.string(), z.unknown())';\n case 'null':\n return 'z.null()';\n default:\n return 'z.unknown()';\n }\n }\n}\n\n// ============================================================================\n// JSON Schema Generator\n// ============================================================================\n\nexport class JsonSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'json-schema';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const description = options?.description ?? schemaObj['description'];\n\n // Create a clean JSON Schema object\n const jsonSchema: Record<string, unknown> = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: name,\n ...schemaObj,\n };\n\n if (description) {\n jsonSchema['description'] = description;\n }\n\n const lines: string[] = [];\n lines.push(`/**`);\n lines.push(` * JSON Schema: ${name}`);\n if (description) {\n lines.push(` * ${description}`);\n }\n lines.push(` */`);\n\n const schemaName = `${name}Schema`;\n lines.push(\n `export const ${schemaName} = ${JSON.stringify(jsonSchema, null, 2)} as const;`\n );\n lines.push(``);\n\n // Generate wrapper\n lines.push(`export const ${name} = new JsonSchemaType(${schemaName});`);\n lines.push(``);\n\n // Type derived from JsonSchemaType or similar?\n // Actually JsonSchemaType doesn't strictly infer TS type from JSON schema at compile time easily without other tools.\n // For now, export type as unknown or rely on library.\n lines.push(\n `export type ${name} = unknown; // JSON Schema type inference not fully supported`\n );\n\n return {\n code: lines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(), // dependency imports?\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n return {\n code: JSON.stringify(schemaObj),\n typeRef: type ?? 'unknown',\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\"import { JsonSchemaType } from '@contractspec/lib.schema';\"];\n }\n}\n\n// ============================================================================\n// GraphQL Generator\n// ============================================================================\n\nexport class GraphQLSchemaGenerator implements SchemaGenerator {\n format: SchemaFormat = 'graphql';\n config?: ResolvedContractsrcConfig;\n\n constructor(config?: ResolvedContractsrcConfig) {\n this.config = config;\n }\n\n generateModel(\n schema: OpenApiSchema,\n name: string,\n options?: { description?: string }\n ): GeneratedCode {\n const schemaObj = schema as Record<string, unknown>;\n const properties = schemaObj['properties'] as\n | Record<string, OpenApiSchema>\n | undefined;\n const required = (schemaObj['required'] as string[]) ?? [];\n const description = options?.description ?? schemaObj['description'];\n\n const lines: string[] = [];\n\n if (description) {\n lines.push(`\"\"\"${description}\"\"\"`);\n }\n\n lines.push(`type ${name} {`);\n\n if (properties) {\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = required.includes(propName);\n const field = this.generateField(propSchema, propName, isRequired);\n const nullMarker = isRequired ? '!' : '';\n lines.push(` ${propName}: ${field.typeRef}${nullMarker}`);\n }\n }\n\n lines.push(`}`);\n\n // Also generate SDL as a string constant\n const sdl = lines.join('\\n');\n const tsLines: string[] = [];\n tsLines.push(`/**`);\n tsLines.push(` * GraphQL type definition: ${name}`);\n tsLines.push(` */`);\n tsLines.push(`export const ${name}TypeDef = \\`${sdl}\\`;`);\n tsLines.push(``);\n tsLines.push(\n `export const ${name} = new GraphQLSchemaType(${name}TypeDef, '${name}');`\n );\n\n return {\n code: tsLines.join('\\n'),\n fileName: toKebabCase(name) + '.ts',\n imports: this.getBaseImports(),\n name: name,\n };\n }\n\n generateField(\n schema: OpenApiSchema,\n _fieldName: string,\n required: boolean\n ): GeneratedFieldCode {\n const schemaObj = schema as Record<string, unknown>;\n const type = schemaObj['type'] as string | undefined;\n const format = schemaObj['format'] as string | undefined;\n const nullable = schemaObj['nullable'] as boolean | undefined;\n\n const gqlType = this.mapTypeToGraphQL(type, format);\n\n return {\n code: gqlType,\n typeRef: gqlType,\n isOptional: !required || Boolean(nullable),\n isArray: type === 'array',\n };\n }\n\n getBaseImports(): string[] {\n return [\"import { GraphQLSchemaType } from '@contractspec/lib.schema';\"];\n }\n\n private mapTypeToGraphQL(type?: string, format?: string): string {\n if (format === 'date-time') return 'DateTime';\n if (format === 'date') return 'Date';\n if (format === 'email') return 'String';\n if (format === 'uri' || format === 'url') return 'String';\n if (format === 'uuid') return 'ID';\n\n switch (type) {\n case 'string':\n return 'String';\n case 'integer':\n return 'Int';\n case 'number':\n return 'Float';\n case 'boolean':\n return 'Boolean';\n case 'object':\n return 'JSON';\n case 'array':\n return '[JSON]';\n default:\n return 'JSON';\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/openapi/types.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { SpecSource, TransportHints } from "../common/types.js";
|
|
|
2
2
|
import { OpenAPIV3, OpenAPIV3_1 } from "openapi-types";
|
|
3
3
|
|
|
4
4
|
//#region src/openapi/types.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Supported OpenAPI versions.
|
|
8
7
|
*/
|
|
@@ -267,8 +266,7 @@ interface ContractSpecExportResult {
|
|
|
267
266
|
presentations?: GeneratedRegistryCode;
|
|
268
267
|
forms?: GeneratedRegistryCode;
|
|
269
268
|
dataViews?: GeneratedRegistryCode;
|
|
270
|
-
workflows?: GeneratedRegistryCode;
|
|
271
|
-
/** Index file that re-exports all registries */
|
|
269
|
+
workflows?: GeneratedRegistryCode; /** Index file that re-exports all registries */
|
|
272
270
|
index?: GeneratedRegistryCode;
|
|
273
271
|
};
|
|
274
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/openapi/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/openapi/types.ts"],"mappings":";;;;;;;KASY,cAAA;AAKZ;;;AAAA,KAAY,eAAA,GAAkB,SAAA,CAAU,QAAA,GAAW,WAAA,CAAY,QAAA;;;;KAKnD,gBAAA,GACR,SAAA,CAAU,eAAA,GACV,WAAA,CAAY,eAAA;;;AAFhB;KAOY,aAAA,GACR,SAAA,CAAU,YAAA,GACV,WAAA,CAAY,YAAA,GACZ,SAAA,CAAU,eAAA,GACV,WAAA,CAAY,eAAA;;;;KAKJ,gBAAA,GACR,SAAA,CAAU,eAAA,GACV,WAAA,CAAY,eAAA,GACZ,SAAA,CAAU,eAAA,GACV,WAAA,CAAY,eAAA;;;;KAKJ,UAAA;AAlBZ;;;AAAA,KA+BY,iBAAA;;;;UAKK,aAAA;EACf,GAAA;EACA,WAAA;EACA,SAAA,GAAY,MAAA;IAGR,OAAA;IACA,IAAA;IACA,WAAA;EAAA;AAAA;;;;UAQW,oBAAA;EA3CW;EA6C1B,KAAA;EA5CE;EA8CF,OAAA;EA5CE;EA8CF,WAAA;EA7C6B;EA+C7B,OAAA,GAAU,aAAA;EAlDR;EAoDF,UAAA,GAAa,MAAA;AAAA;;;;UAME,mBAAA;EAvDD;EAyDd,OAAA;EAzD6B;EA2D7B,WAAA;EAtDoB;EAwDpB,OAAA;AAAA;;AA3CF;;UAiDiB,eAAA;EAjDY;EAmD3B,WAAA;EA9Ce;EAgDf,MAAA,EAAQ,UAAA;;EAER,IAAA;EAjDA;EAmDA,OAAA;EAjDA;EAmDA,WAAA;EAhDI;EAkDJ,IAAA;EAhDI;EAkDJ,UAAA,EAAY,eAAA;EAlDG;EAoDf,WAAA,EAAa,eAAA;EA5CsB;EA8CnC,YAAA,EAAc,eAAA;EApCK;EAsCnB,YAAA,EAAc,eAAA;EA5Cd;EA8CA,WAAA;IACE,QAAA;IACA,MAAA,EAAQ,aAAA;IACR,WAAA;EAAA;EA3CiB;EA8CnB,SAAA,EAAW,MAAA;IAGP,WAAA;IACA,MAAA,GAAS,aAAA;IACT,WAAA;EAAA;EA3CJ;EA+CA,UAAA;EA3CA;EA6CA,QAAA,GAAW,MAAA;EA7CJ;EA+CP,gBAAA;IACE,IAAA;IACA,OAAA;IACA,IAAA;EAAA;AAAA;;;;UAOa,eAAA;EAvBJ;EAyBX,IAAA;EAdiB;EAgBjB,EAAA,EAAI,iBAAA;EArDJ;EAuDA,QAAA;EArDQ;EAuDR,WAAA;EAnDA;EAqDA,MAAA,EAAQ,aAAA;EAjDR;EAmDA,UAAA;AAAA;;;;UAMe,WAAA;EAjDf;EAmDA,QAAA,EAAU,eAAA;EAjDV;EAmDA,OAAA,EAAS,cAAA;EAjDP;EAmDF,IAAA;IACE,KAAA;IACA,OAAA;IACA,WAAA;EAAA;EA9CE;EAiDJ,UAAA,EAAY,eAAA;EAhDR;EAkDJ,OAAA,EAAS,MAAA,SAAe,aAAA;EA5CxB;EA8CA,OAAA,EAAS,aAAA;EA5CT;EA8CA,QAAA;EA5CE;EA8CF,MAAA,EAAQ,WAAA;AAAA;;AAtCV;;UA4CiB,WAAA;EAlCM;EAoCrB,IAAA;EA1CA;EA4CA,WAAA;EA1CA;EA4CA,OAAA,EAAS,aAAA;AAAA;;;;UAMM,qBAAA,SAA8B,cAAA;EAC7C,IAAA;IACE,MAAA;IACA,IAAA;IACA,MAAA;MACE,IAAA;MACA,KAAA;MACA,MAAA;MACA,MAAA;IAAA;EAAA;AAAA;;;;UAQW,aAAA,SAAsB,UAAA;EACrC,IAAA;EAjDA;EAmDA,cAAA,EAAgB,cAAA;EAjDd;EAmDF,WAAA;AAAA;;;;;UAOe,2BAAA;EACf,OAAA;EACA,IAAA;IACE,KAAA;IACA,OAAA;IACA,WAAA;EAAA;EAEF,OAAA,GAAU,aAAA;EACV,KAAA,EAAO,MAAA,SAAe,MAAA;EACtB,UAAA;IACE,OAAA,EAAS,MAAA,SAAe,MAAA;EAAA;EA9C1B;EAiDA,yBAAA;EA/CS;EAiDT,uBAAA;EAjDsB;EAmDtB,8BAAA;EA7CqC;EA+CrC,sBAAA;EA/C2D;EAiD3D,0BAAA;EAhDA;EAkDA,0BAAA;AAAA;;;;UAMe,yBAAA,SAAkC,oBAAA;EAjD7C;EAmDJ,UAAA;EAnDU;EAqDV,MAAA;EA7C6B;EA+C7B,QAAA;EA/C+C;EAiD/C,aAAA;EAhDA;EAkDA,KAAA;EAhDgB;EAkDhB,SAAA;EAhDW;EAkDX,SAAA;EA3Ce;EA6Cf,kBAAA;AAAA;;;;UAMe,qBAAA;EAzCJ;EA2CX,IAAA;EA3CiB;EA6CjB,QAAA;AAAA;;;;UAMe,wBAAA;EAtDL;EAwDV,OAAA,EAAS,2BAAA;EAvDF;EAyDP,UAAA;IACE,UAAA,GAAa,qBAAA;IACb,MAAA,GAAS,qBAAA;IACT,QAAA,GAAW,qBAAA;IACX,aAAA,GAAgB,qBAAA;IAChB,KAAA,GAAQ,qBAAA;IACR,SAAA,GAAY,qBAAA;IACZ,SAAA,GAAY,qBAAA,EArDd;IAuDE,KAAA,GAAQ,qBAAA;EAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/lib.contracts-transformers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.0",
|
|
4
4
|
"description": "Contract format transformations: import/export between ContractSpec and external formats (OpenAPI, AsyncAPI, etc.)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"contractspec",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"test": "bun test"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@contractspec/lib.contracts": "1.
|
|
29
|
-
"@contractspec/lib.schema": "1.
|
|
28
|
+
"@contractspec/lib.contracts": "1.57.0",
|
|
29
|
+
"@contractspec/lib.schema": "1.57.0",
|
|
30
30
|
"compare-versions": "^6.1.1",
|
|
31
31
|
"openapi-types": "^12.1.3",
|
|
32
32
|
"yaml": "^2.7.1",
|
|
33
33
|
"zod": "^4.3.5"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@contractspec/tool.tsdown": "1.
|
|
37
|
-
"@contractspec/tool.typescript": "1.
|
|
38
|
-
"tsdown": "^0.
|
|
36
|
+
"@contractspec/tool.tsdown": "1.57.0",
|
|
37
|
+
"@contractspec/tool.typescript": "1.57.0",
|
|
38
|
+
"tsdown": "^0.20.3",
|
|
39
39
|
"typescript": "^5.9.3"
|
|
40
40
|
},
|
|
41
41
|
"types": "./dist/index.d.ts",
|