@ir-kit/spec-convert 0.2.0 → 0.3.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 (41) hide show
  1. package/README.md +30 -8
  2. package/dist/converters/openapi3-to-proto/allof.d.ts +11 -0
  3. package/dist/converters/openapi3-to-proto/allof.d.ts.map +1 -0
  4. package/dist/converters/openapi3-to-proto/allof.js +122 -0
  5. package/dist/converters/openapi3-to-proto/allof.js.map +1 -0
  6. package/dist/converters/openapi3-to-proto/ast.d.ts +69 -0
  7. package/dist/converters/openapi3-to-proto/ast.d.ts.map +1 -0
  8. package/dist/converters/openapi3-to-proto/ast.js +15 -0
  9. package/dist/converters/openapi3-to-proto/ast.js.map +1 -0
  10. package/dist/converters/openapi3-to-proto/index.d.ts +12 -0
  11. package/dist/converters/openapi3-to-proto/index.d.ts.map +1 -0
  12. package/dist/converters/openapi3-to-proto/index.js +173 -0
  13. package/dist/converters/openapi3-to-proto/index.js.map +1 -0
  14. package/dist/converters/openapi3-to-proto/names.d.ts +13 -0
  15. package/dist/converters/openapi3-to-proto/names.d.ts.map +1 -0
  16. package/dist/converters/openapi3-to-proto/names.js +40 -0
  17. package/dist/converters/openapi3-to-proto/names.js.map +1 -0
  18. package/dist/converters/openapi3-to-proto/ops.d.ts +40 -0
  19. package/dist/converters/openapi3-to-proto/ops.d.ts.map +1 -0
  20. package/dist/converters/openapi3-to-proto/ops.js +268 -0
  21. package/dist/converters/openapi3-to-proto/ops.js.map +1 -0
  22. package/dist/converters/openapi3-to-proto/print.d.ts +3 -0
  23. package/dist/converters/openapi3-to-proto/print.d.ts.map +1 -0
  24. package/dist/converters/openapi3-to-proto/print.js +73 -0
  25. package/dist/converters/openapi3-to-proto/print.js.map +1 -0
  26. package/dist/converters/openapi3-to-proto.d.ts +2 -0
  27. package/dist/converters/openapi3-to-proto.d.ts.map +1 -0
  28. package/dist/converters/openapi3-to-proto.js +14 -0
  29. package/dist/converters/openapi3-to-proto.js.map +1 -0
  30. package/dist/converters/typespec-to-proto.js +1 -0
  31. package/dist/converters/typespec-to-proto.js.map +1 -1
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +19 -21
  35. package/dist/index.js.map +1 -1
  36. package/dist/registry.d.ts.map +1 -1
  37. package/dist/registry.js +2 -0
  38. package/dist/registry.js.map +1 -1
  39. package/dist/types.d.ts +2 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +11 -6
@@ -0,0 +1,268 @@
1
+ import { pascal } from "@ir-kit/codegen-core";
2
+ import { classifyObject, classifyUnion, extractEnumValues, isSchemaObject, isUnionShape, schemaToType, synthTypeName, } from "@ir-kit/openapi";
3
+ import { protoEmpty, protoTimestamp, protoValue, scalar, } from "./ast.js";
4
+ import { defaultJsonName, fieldIdent, newFieldNames, newTypeNames, upperSnake, } from "./names.js";
5
+ export function createProtoOps(state) {
6
+ const resolved = new Map();
7
+ const resolving = new Set();
8
+ const emit = (d) => {
9
+ state.decls.push(d);
10
+ };
11
+ const named = (name) => ({
12
+ kind: "named",
13
+ name,
14
+ isEnum: state.enums.has(name),
15
+ });
16
+ const ctx = (ownerName, propPath = []) => ({ emit, names: state.names, ownerName, propPath });
17
+ const dispatch = (s, c) => schemaToType(s, c, ops);
18
+ const resolveAlias = (name, schema) => {
19
+ const done = resolved.get(name);
20
+ if (done)
21
+ return done;
22
+ // An alias chain that loops without passing through a message has no
23
+ // finite proto type.
24
+ if (resolving.has(name))
25
+ return protoValue;
26
+ resolving.add(name);
27
+ const type = dispatch(schema, ctx(name, ["Item"]));
28
+ resolving.delete(name);
29
+ resolved.set(name, type);
30
+ return type;
31
+ };
32
+ /** Repeated and map types can't nest, appear in a `oneof`, or be
33
+ * `optional`; box them in a single-field message where they'd be
34
+ * illegal. */
35
+ const slot = (type, owner, segment, inOneof) => {
36
+ if (type.kind !== "repeated" && type.kind !== "map")
37
+ return type;
38
+ if (inOneof)
39
+ return box(type, owner, segment);
40
+ if (type.kind === "repeated") {
41
+ const elem = type.elem;
42
+ return {
43
+ kind: "repeated",
44
+ elem: elem.kind === "repeated" || elem.kind === "map"
45
+ ? box(elem, owner, `${segment}Item`)
46
+ : elem,
47
+ };
48
+ }
49
+ const value = type.value;
50
+ return {
51
+ kind: "map",
52
+ value: value.kind === "repeated" || value.kind === "map"
53
+ ? box(value, owner, `${segment}Value`)
54
+ : value,
55
+ };
56
+ };
57
+ const box = (type, owner, segment) => {
58
+ const key = `box:${owner}/${segment}`;
59
+ const existing = state.names.get(key);
60
+ if (existing)
61
+ return named(existing);
62
+ const name = state.names.claim(key, `${owner}${segment}`);
63
+ emit(wrapperMessage(name, type));
64
+ return named(name);
65
+ };
66
+ const wrapperMessage = (name, type) => ({
67
+ kind: "message",
68
+ name,
69
+ fields: [
70
+ {
71
+ name: type.kind === "repeated" ? "items" : "value",
72
+ number: 1,
73
+ type: slot(type, name, "Value", false),
74
+ },
75
+ ],
76
+ oneofs: [],
77
+ });
78
+ const message = (name, properties, comment) => {
79
+ const fieldNames = newFieldNames();
80
+ const segments = newTypeNames();
81
+ const numbers = fieldNumbers();
82
+ const jsonNames = new Set();
83
+ const fields = properties.map((p, i) => {
84
+ // Keys can repeat (a path and a query parameter both named `id`) or
85
+ // snake_case to the same name, so claim field names and the
86
+ // segments naming synthesized types per position.
87
+ const fieldName = fieldNames.claim(String(i), p.jsonKey);
88
+ const segment = segments.claim(String(i), fieldName);
89
+ const raw = dispatch(p.schema, ctx(name, [segment]));
90
+ const type = slot(raw, name, segment, false);
91
+ const jsonName = defaultJsonName(fieldName) === p.jsonKey || jsonNames.has(p.jsonKey)
92
+ ? undefined
93
+ : p.jsonKey;
94
+ jsonNames.add(jsonName ?? defaultJsonName(fieldName));
95
+ return {
96
+ name: fieldName,
97
+ number: numbers(),
98
+ type,
99
+ optional: !p.required &&
100
+ (type.kind === "scalar" || (type.kind === "named" && type.isEnum)),
101
+ jsonName,
102
+ deprecated: p.schema.deprecated === true || undefined,
103
+ comment: p.schema.description,
104
+ };
105
+ });
106
+ return { kind: "message", name, fields, oneofs: [], comment };
107
+ };
108
+ const oneofMessage = (name, branches, comment) => {
109
+ const fieldNames = newFieldNames();
110
+ fieldNames.claim("variant");
111
+ const fields = branches.map(({ schema, label }, i) => {
112
+ const segment = label ? pascal(label) : `Option${i + 1}`;
113
+ const type = schema
114
+ ? slot(dispatch(schema, ctx(name, [segment])), name, segment, true)
115
+ : protoEmpty;
116
+ return {
117
+ name: fieldNames.claim(String(i), label ?? branchFieldName(type)),
118
+ number: i + 1,
119
+ type,
120
+ comment: schema?.description,
121
+ };
122
+ });
123
+ return {
124
+ kind: "message",
125
+ name,
126
+ fields: [],
127
+ oneofs: [{ name: "variant", fields }],
128
+ comment,
129
+ };
130
+ };
131
+ /** Message holding a `oneof` with one field per union branch. */
132
+ const unionMessage = (name, schema) => oneofMessage(name, unionBranches(schema).map((branch) => ({ schema: branch })), schema.description);
133
+ const isMessageShape = (schema) => {
134
+ if (schema.$ref || extractEnumValues(schema)?.length)
135
+ return false;
136
+ if (isUnionShape(schema)) {
137
+ const shape = classifyUnion(schema).kind;
138
+ return shape === "multi" || shape === "intersection-with-properties";
139
+ }
140
+ return (schema.type === "object" && classifyObject(schema).kind === "named-struct");
141
+ };
142
+ const ops = {
143
+ dispatch,
144
+ ctx,
145
+ message,
146
+ oneofMessage,
147
+ unionMessage,
148
+ wrapperMessage,
149
+ isMessageShape,
150
+ refType(name) {
151
+ const alias = state.aliases.get(name);
152
+ return alias ? resolveAlias(name, alias) : named(name);
153
+ },
154
+ arrayType: (elem) => ({ kind: "repeated", elem }),
155
+ mapType: (value) => ({ kind: "map", value }),
156
+ voidType: () => protoValue,
157
+ anyType: () => protoValue,
158
+ nullableAnyType: () => protoValue,
159
+ wrapForUnionSingle: (inner) => inner,
160
+ unionFallback: () => protoValue,
161
+ primitiveType: primitive,
162
+ synthName: (owner, path) => `${owner}${path.map(pascal).join("")}`,
163
+ buildStructDecl: (name, properties) => message(name, properties),
164
+ multiUnion(schema, c) {
165
+ const name = synthTypeName(c, ops);
166
+ emit(unionMessage(name, schema));
167
+ return named(name);
168
+ },
169
+ emitStringEnum(name, raws, emitDecl) {
170
+ state.enums.add(name);
171
+ const prefix = upperSnake(name);
172
+ // protoc also rejects values of one enum that only differ by case
173
+ // or underscores once the prefix is stripped (`GMT_0` vs `GMT0`).
174
+ const folded = new Set();
175
+ const claim = (suffix) => {
176
+ const base = `${prefix}_${suffix}`;
177
+ for (let n = 1;; n++) {
178
+ const candidate = n === 1 ? base : `${base}_${n}`;
179
+ const fold = candidate
180
+ .slice(prefix.length)
181
+ .replace(/_/g, "")
182
+ .toLowerCase();
183
+ if (state.enumValues.has(candidate) || folded.has(fold))
184
+ continue;
185
+ state.enumValues.add(candidate);
186
+ folded.add(fold);
187
+ return candidate;
188
+ }
189
+ };
190
+ const values = [{ name: claim("UNSPECIFIED"), number: 0 }];
191
+ for (const raw of new Set(raws)) {
192
+ values.push({
193
+ name: claim(upperSnake(raw) || "EMPTY"),
194
+ number: values.length,
195
+ });
196
+ }
197
+ emitDecl({ kind: "enum", name, values });
198
+ return named(name);
199
+ },
200
+ emitIntegerEnum: (_name, raws) => scalar(raws.every((n) => Math.abs(n) < 2 ** 31) ? "int32" : "int64"),
201
+ };
202
+ return ops;
203
+ }
204
+ function primitive(schema) {
205
+ const types = (Array.isArray(schema.type) ? schema.type : [schema.type]).filter((t) => t !== undefined && t !== "null");
206
+ if (types.length !== 1)
207
+ return undefined;
208
+ const format = schema.format;
209
+ switch (types[0]) {
210
+ case "string":
211
+ if (format === "binary" || format === "byte")
212
+ return scalar("bytes");
213
+ if (format === "date-time")
214
+ return protoTimestamp;
215
+ return scalar("string");
216
+ case "integer":
217
+ if (format === "int32")
218
+ return scalar("int32");
219
+ if (format === "uint32")
220
+ return scalar("uint32");
221
+ if (format === "uint64")
222
+ return scalar("uint64");
223
+ return scalar("int64");
224
+ case "number":
225
+ if (format === "float")
226
+ return scalar("float");
227
+ if (format === "int32")
228
+ return scalar("int32");
229
+ if (format === "int64")
230
+ return scalar("int64");
231
+ return scalar("double");
232
+ case "boolean":
233
+ return scalar("bool");
234
+ default:
235
+ return undefined;
236
+ }
237
+ }
238
+ function unionBranches(schema) {
239
+ const listed = schema.oneOf ?? schema.anyOf;
240
+ if (listed) {
241
+ return listed
242
+ .filter((b) => isSchemaObject(b))
243
+ .filter((b) => b.type !== "null");
244
+ }
245
+ const types = Array.isArray(schema.type) ? schema.type : [];
246
+ return types.filter((t) => t !== "null").map((t) => ({ ...schema, type: t }));
247
+ }
248
+ function branchFieldName(type) {
249
+ switch (type.kind) {
250
+ case "scalar":
251
+ return `${type.name}_value`;
252
+ case "named":
253
+ return fieldIdent(type.name.split(".").pop() ?? type.name);
254
+ default:
255
+ return "value";
256
+ }
257
+ }
258
+ /** Sequential field numbers, skipping protobuf's reserved 19000–19999. */
259
+ function fieldNumbers() {
260
+ let n = 0;
261
+ return () => {
262
+ n++;
263
+ if (n === 19000)
264
+ n = 20000;
265
+ return n;
266
+ };
267
+ }
268
+ //# sourceMappingURL=ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../../src/converters/openapi3-to-proto/ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ProtoFile } from "./ast.js";
2
+ export declare function printProtoFile(file: ProtoFile): string;
3
+ //# sourceMappingURL=print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../../src/converters/openapi3-to-proto/print.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,UAAU,CAAC;AAElB,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA+BtD"}
@@ -0,0 +1,73 @@
1
+ export function printProtoFile(file) {
2
+ const imports = new Set();
3
+ const typeRef = (t) => {
4
+ switch (t.kind) {
5
+ case "scalar":
6
+ return t.name;
7
+ case "named":
8
+ if (t.import)
9
+ imports.add(t.import);
10
+ return t.name;
11
+ case "repeated":
12
+ return `repeated ${typeRef(t.elem)}`;
13
+ case "map":
14
+ return `map<string, ${typeRef(t.value)}>`;
15
+ }
16
+ };
17
+ const blocks = [
18
+ ...file.services.map((s) => printService(s, typeRef)),
19
+ ...file.decls.map((d) => printDecl(d, typeRef)),
20
+ ];
21
+ const head = ['syntax = "proto3";', `package ${file.package};`];
22
+ if (imports.size > 0) {
23
+ head.push([...imports]
24
+ .sort()
25
+ .map((i) => `import "${i}";`)
26
+ .join("\n"));
27
+ }
28
+ return `${[...head, ...blocks].join("\n\n")}\n`;
29
+ }
30
+ function printService(service, typeRef) {
31
+ const rpcs = service.rpcs.map((rpc) => {
32
+ const signature = `rpc ${rpc.name}(${typeRef(rpc.request)}) returns (${typeRef(rpc.response)})`;
33
+ const body = rpc.deprecated
34
+ ? `${signature} {\n option deprecated = true;\n }`
35
+ : `${signature};`;
36
+ return `${comment(rpc.comment, " ")} ${body}`;
37
+ });
38
+ return `${comment(service.comment, "")}service ${service.name} {\n${rpcs.join("\n")}\n}`;
39
+ }
40
+ function printDecl(decl, typeRef) {
41
+ if (decl.kind === "enum") {
42
+ const values = decl.values.map((v) => ` ${v.name} = ${v.number};`);
43
+ return `${comment(decl.comment, "")}enum ${decl.name} {\n${values.join("\n")}\n}`;
44
+ }
45
+ const lines = decl.fields.map((f) => printField(f, typeRef, " "));
46
+ for (const oneof of decl.oneofs) {
47
+ const fields = oneof.fields.map((f) => printField(f, typeRef, " "));
48
+ lines.push(` oneof ${oneof.name} {\n${fields.join("\n")}\n }`);
49
+ }
50
+ const body = lines.length > 0 ? `\n${lines.join("\n")}\n` : "";
51
+ return `${comment(decl.comment, "")}message ${decl.name} {${body}}`;
52
+ }
53
+ function printField(field, typeRef, indent) {
54
+ const options = [];
55
+ if (field.jsonName !== undefined)
56
+ options.push(`json_name = ${JSON.stringify(field.jsonName)}`);
57
+ if (field.deprecated)
58
+ options.push("deprecated = true");
59
+ const label = field.optional ? "optional " : "";
60
+ const suffix = options.length > 0 ? ` [${options.join(", ")}]` : "";
61
+ return `${comment(field.comment, indent)}${indent}${label}${typeRef(field.type)} ${field.name} = ${field.number}${suffix};`;
62
+ }
63
+ function comment(text, indent) {
64
+ if (!text?.trim())
65
+ return "";
66
+ return `${text
67
+ .trim()
68
+ .replace(/\n\s*\n(\s*\n)+/g, "\n\n")
69
+ .split(/\r?\n/)
70
+ .map((line) => `${indent}//${line.trimEnd() ? ` ${line.trimEnd()}` : ""}`)
71
+ .join("\n")}\n`;
72
+ }
73
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../../src/converters/openapi3-to-proto/print.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,CAAY,EAAU,EAAE;QACvC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,KAAK,OAAO;gBACV,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,KAAK;gBACR,OAAO,eAAe,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KAChD,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,oBAAoB,EAAE,WAAW,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CACP,CAAC,GAAG,OAAO,CAAC;aACT,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CACnB,OAAqB,EACrB,OAAiC;IAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChG,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;YACzB,CAAC,CAAC,GAAG,SAAS,wCAAwC;YACtD,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC;QACpB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3F,CAAC;AAED,SAAS,SAAS,CAAC,IAAe,EAAE,OAAiC;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CACjB,KAAiB,EACjB,OAAiC,EACjC,MAAc;IAEd,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC9B,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;AAC9H,CAAC;AAED,SAAS,OAAO,CAAC,IAAwB,EAAE,MAAc;IACvD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,GAAG,IAAI;SACX,IAAI,EAAE;SACN,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC;SACnC,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=openapi3-to-proto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi3-to-proto.d.ts","sourceRoot":"","sources":["../../src/converters/openapi3-to-proto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { registerConverter } from "../registry.js";
2
+ import { openAPIToProto } from "./openapi3-to-proto/index.js";
3
+ registerConverter({
4
+ from: "openapi3",
5
+ to: "proto",
6
+ handler: async (document, options) => {
7
+ const pkg = options.upstream?.package;
8
+ const source = openAPIToProto(document, {
9
+ package: typeof pkg === "string" ? pkg : undefined,
10
+ });
11
+ return { kind: "source", source, ext: "proto" };
12
+ },
13
+ });
14
+ //# sourceMappingURL=openapi3-to-proto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi3-to-proto.js","sourceRoot":"","sources":["../../src/converters/openapi3-to-proto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,iBAAiB,CAAC;IAChB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,OAAO;IACX,OAAO,EAAE,KAAK,EAAE,QAAsB,EAAE,OAAO,EAA0B,EAAE;QACzE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE;YACtC,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { registerConverter } from "../registry.js";
3
3
  registerConverter({
4
4
  from: "typespec",
5
5
  to: "proto",
6
+ authoredInputOnly: true,
6
7
  handler: async (document, options) => {
7
8
  const path = typeof document.__path === "string" ? document.__path : undefined;
8
9
  const source = typeof document.__source === "string" ? document.__source : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"typespec-to-proto.js","sourceRoot":"","sources":["../../src/converters/typespec-to-proto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,iBAAiB,CAAC;IAChB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,OAAO;IACX,OAAO,EAAE,KAAK,EAAE,QAAsB,EAAE,OAAO,EAA0B,EAAE;QACzE,MAAM,IAAI,GACR,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,MAAM,GACV,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,CAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAgB,EAAE,EAC9C;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,oBAAoB;YAC7B,cAAc,EAAE,OAAO,CAAC,QAAQ;SACjC,CACF,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"typespec-to-proto.js","sourceRoot":"","sources":["../../src/converters/typespec-to-proto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,iBAAiB,CAAC;IAChB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,OAAO;IACX,iBAAiB,EAAE,IAAI;IACvB,OAAO,EAAE,KAAK,EAAE,QAAsB,EAAE,OAAO,EAA0B,EAAE;QACzE,MAAM,IAAI,GACR,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,MAAM,GACV,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,CAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAgB,EAAE,EAC9C;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,oBAAoB;YAC7B,cAAc,EAAE,OAAO,CAAC,QAAQ;SACjC,CACF,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import "./converters/openapi3-to-json-schema.js";
2
2
  import "./converters/openapi3-to-postman.js";
3
+ import "./converters/openapi3-to-proto.js";
3
4
  import "./converters/openapi3-to-typespec.js";
4
5
  import "./converters/postman-to-openapi3.js";
5
6
  import "./converters/proto-to-openapi3.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,yCAAyC,CAAC;AACjD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAGL,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAoD5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,yCAAyC,CAAC;AACjD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAGL,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAuD5B"}
package/dist/index.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
2
  import { createRequire } from "node:module";
3
3
  import { dirname, extname, join, resolve } from "node:path";
4
- import { loadSpec } from "@ir-kit/spec-loader";
4
+ import { classifySpecDocument, loadSpec, readSpecDocument, } from "@ir-kit/spec-loader";
5
5
  const require = createRequire(import.meta.url);
6
6
  /** typespec-loader's package dir hosts the @typespec/* peer deps the
7
7
  * TypeSpec compiler needs to resolve when chaining converters. */
8
8
  const typespecLoaderDir = dirname(require.resolve("@ir-kit/typespec-loader/package.json"));
9
9
  import "./converters/openapi3-to-json-schema.js";
10
10
  import "./converters/openapi3-to-postman.js";
11
+ import "./converters/openapi3-to-proto.js";
11
12
  import "./converters/openapi3-to-typespec.js";
12
13
  import "./converters/postman-to-openapi3.js";
13
14
  import "./converters/proto-to-openapi3.js";
@@ -27,7 +28,9 @@ export { listConverters };
27
28
  export async function convertSpec(opts) {
28
29
  const from = opts.from ?? (await detectFormat(opts.input, opts.cwd));
29
30
  if (from === opts.to) {
30
- const document = await readAsDocument(opts.input, opts.cwd);
31
+ const document = from === "postman" && typeof opts.input === "string"
32
+ ? await readSpecDocument(opts.input, opts.cwd)
33
+ : await readAsDocument(opts.input, opts.cwd);
31
34
  return { from, to: opts.to, output: { kind: "document", document } };
32
35
  }
33
36
  const direct = findConverter(from, opts.to);
@@ -71,28 +74,23 @@ export async function convertSpec(opts) {
71
74
  return { from, to: opts.to, output: output };
72
75
  }
73
76
  async function detectFormat(input, cwd) {
74
- if (typeof input === "object") {
75
- if (input.asyncapi !== undefined)
76
- return "asyncapi3";
77
- if (isPostmanCollection(input))
78
- return "postman";
79
- return "openapi3";
77
+ if (typeof input === "string") {
78
+ const ext = extname(input).toLowerCase();
79
+ if (ext === ".tsp")
80
+ return "typespec";
81
+ if (ext === ".proto")
82
+ return "proto";
80
83
  }
81
- const ext = extname(input).toLowerCase();
82
- if (ext === ".tsp")
83
- return "typespec";
84
- if (ext === ".proto")
85
- return "proto";
86
- if (input.toLowerCase().endsWith(".postman_collection.json"))
84
+ const document = typeof input === "object" ? input : await readSpecDocument(input, cwd);
85
+ if (isPostmanCollection(document))
87
86
  return "postman";
88
- const result = await loadSpec({ input, cwd });
89
- if (result.kind === "asyncapi")
87
+ const kind = classifySpecDocument(document);
88
+ if (kind === "asyncapi")
90
89
  return "asyncapi3";
91
- if (result.kind === "openapi" &&
92
- isPostmanCollection(result.document)) {
93
- return "postman";
94
- }
95
- return "openapi3";
90
+ if (kind === "openapi")
91
+ return "openapi3";
92
+ const label = typeof input === "string" ? ` ${input}` : "";
93
+ throw new Error(`Unrecognized spec${label}: expected OpenAPI, AsyncAPI, a Postman collection, a .tsp or a .proto file.`);
96
94
  }
97
95
  function isPostmanCollection(doc) {
98
96
  const info = doc.info;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;mEACmE;AACnE,MAAM,iBAAiB,GAAG,OAAO,CAC/B,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CACxD,CAAC;AAEF,OAAO,yCAAyC,CAAC;AACjD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,eAAe,CAAC;AASvB,OAAO,EAAE,cAAc,EAAE,CAAC;AAkB1B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAwB;IAExB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAErE,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI;YAC9C,oBACE,cAAc,EAAE;iBACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;iBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,QACnB,EAAE,CACL,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,MAAiC,CAAC;IACtC,IAAI,OAA2B,CAAC;IAChC,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACtB,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACpC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC7B,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,KAAK,MAAM,OAAO,CACvB,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAC7C,CAAC;oBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;oBAClE,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACzC,QAAQ,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,EAAE,6BAA6B,MAAM,CAAC,IAAI,oCAAoC,CAC5G,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,OAAO;YAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAO,EAAE,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,KAAuB,EACvB,GAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAK,KAAgC,CAAC,QAAQ,KAAK,SAAS;YAC1D,OAAO,WAAW,CAAC;QACrB,IAAI,mBAAmB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,WAAW,CAAC;IACnD,IACE,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,mBAAmB,CAAC,MAAM,CAAC,QAAmC,CAAC,EAC/D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAA4B;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAwC,CAAC;IAC1D,OAAO,CACL,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAuB,EACvB,IAAgB,EAChB,GAAuB;IAEvB,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAuB,EACvB,GAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAkB,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,GACb,aAAa,GAAG,SAAS,CAE3B;AAED,wBAAgB,cAAc,IAAI,aAAa,CAAC;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC,CAED;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,GACb,aAAa,EAAE,GAAG,SAAS,CAyB7B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,GACb,aAAa,GAAG,SAAS,CAE3B;AAED,wBAAgB,cAAc,IAAI,aAAa,CAAC;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC,CAED;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,GACb,aAAa,EAAE,GAAG,SAAS,CA0B7B"}
package/dist/registry.js CHANGED
@@ -31,6 +31,8 @@ export function findConverterPath(from, to) {
31
31
  for (const edge of adjacency.get(node) ?? []) {
32
32
  if (visited.has(edge.to))
33
33
  continue;
34
+ if (edge.authoredInputOnly && path.length > 0)
35
+ continue;
34
36
  const next = [...path, edge];
35
37
  if (edge.to === to)
36
38
  return next;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,MAAM,GAAG,GAAG,CAAC,IAAgB,EAAE,EAAc,EAAU,EAAE,CAAC,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAgB,EAChB,EAAc;IAEd,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc;IAI5B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,EAAc;IAEd,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAGD,MAAM,KAAK,GAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,MAAM,GAAG,GAAG,CAAC,IAAgB,EAAE,EAAc,EAAU,EAAE,CAAC,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAgB,EAChB,EAAc;IAEd,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc;IAI5B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,EAAc;IAEd,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAGD,MAAM,KAAK,GAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACnC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YACxD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -20,5 +20,7 @@ export interface ConverterPair {
20
20
  from: SpecFormat;
21
21
  to: SpecFormat;
22
22
  handler: ConvertHandler;
23
+ /** The edge only accepts input written for it (e.g. TypeSpec using the protobuf library), so routes may start with it but never pass through it. */
24
+ authoredInputOnly?: boolean;
23
25
  }
24
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,WAAW,GACX,UAAU,GACV,OAAO,GACP,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,CAC3B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,WAAW,GACX,UAAU,GACV,OAAO,GACP,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,CAC3B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,oJAAoJ;IACpJ,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ir-kit/spec-convert",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Convert between API specification formats — OpenAPI 3, AsyncAPI 3, TypeSpec, Protobuf, JSON Schema. Pair-handler registry; programmatic API; thin wrappers around upstream conversion tools where available.",
5
5
  "keywords": [
6
6
  "openapi",
@@ -12,9 +12,9 @@
12
12
  "spec",
13
13
  "ir-kit"
14
14
  ],
15
- "homepage": "https://github.com/ir-kit/ir-kit/tree/main/packages/shared/spec-convert",
15
+ "homepage": "https://github.com/ahmedrowaihi/ir-kit/tree/main/packages/shared/spec-convert",
16
16
  "bugs": {
17
- "url": "https://github.com/ir-kit/ir-kit/issues"
17
+ "url": "https://github.com/ahmedrowaihi/ir-kit/issues"
18
18
  },
19
19
  "license": "MIT",
20
20
  "author": {
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "repository": {
25
25
  "type": "git",
26
- "url": "git+https://github.com/ir-kit/ir-kit.git",
26
+ "url": "git+https://github.com/ahmedrowaihi/ir-kit.git",
27
27
  "directory": "packages/shared/spec-convert"
28
28
  },
29
29
  "type": "module",
@@ -50,10 +50,14 @@
50
50
  "@readme/postman-to-openapi": "^4.1.0",
51
51
  "openapi-to-postmanv2": "^6.0.1",
52
52
  "protobufjs": "^7.4.0",
53
- "@ir-kit/spec-loader": "0.2.0",
54
- "@ir-kit/typespec-loader": "0.2.0"
53
+ "@ir-kit/codegen-core": "0.3.0",
54
+ "@ir-kit/openapi-tools": "0.4.0",
55
+ "@ir-kit/openapi": "0.5.0",
56
+ "@ir-kit/spec-loader": "0.3.0",
57
+ "@ir-kit/typespec-loader": "0.2.1"
55
58
  },
56
59
  "peerDependencies": {
60
+ "@hey-api/shared": ">=0.5.0",
57
61
  "@typespec/json-schema": ">=1.0.0",
58
62
  "@typespec/openapi3": ">=1.0.0",
59
63
  "@typespec/protobuf": ">=0.80.0"
@@ -67,6 +71,7 @@
67
71
  }
68
72
  },
69
73
  "devDependencies": {
74
+ "@hey-api/shared": "^0.5.0",
70
75
  "@types/node": "^22",
71
76
  "@typespec/json-schema": "^1.12.0",
72
77
  "@typespec/openapi3": "^1.12.0",