@ir-kit/spec-convert 0.2.1 → 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.
- package/README.md +29 -7
- package/dist/converters/openapi3-to-proto/allof.d.ts +11 -0
- package/dist/converters/openapi3-to-proto/allof.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/allof.js +122 -0
- package/dist/converters/openapi3-to-proto/allof.js.map +1 -0
- package/dist/converters/openapi3-to-proto/ast.d.ts +69 -0
- package/dist/converters/openapi3-to-proto/ast.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/ast.js +15 -0
- package/dist/converters/openapi3-to-proto/ast.js.map +1 -0
- package/dist/converters/openapi3-to-proto/index.d.ts +12 -0
- package/dist/converters/openapi3-to-proto/index.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/index.js +173 -0
- package/dist/converters/openapi3-to-proto/index.js.map +1 -0
- package/dist/converters/openapi3-to-proto/names.d.ts +13 -0
- package/dist/converters/openapi3-to-proto/names.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/names.js +40 -0
- package/dist/converters/openapi3-to-proto/names.js.map +1 -0
- package/dist/converters/openapi3-to-proto/ops.d.ts +40 -0
- package/dist/converters/openapi3-to-proto/ops.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/ops.js +268 -0
- package/dist/converters/openapi3-to-proto/ops.js.map +1 -0
- package/dist/converters/openapi3-to-proto/print.d.ts +3 -0
- package/dist/converters/openapi3-to-proto/print.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto/print.js +73 -0
- package/dist/converters/openapi3-to-proto/print.js.map +1 -0
- package/dist/converters/openapi3-to-proto.d.ts +2 -0
- package/dist/converters/openapi3-to-proto.d.ts.map +1 -0
- package/dist/converters/openapi3-to-proto.js +14 -0
- package/dist/converters/openapi3-to-proto.js.map +1 -0
- package/dist/converters/typespec-to-proto.js +1 -0
- package/dist/converters/typespec-to-proto.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -21
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -3
|
@@ -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 @@
|
|
|
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":"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"}
|
|
@@ -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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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 =
|
|
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 === "
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
82
|
-
if (
|
|
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
|
|
89
|
-
if (
|
|
87
|
+
const kind = classifySpecDocument(document);
|
|
88
|
+
if (kind === "asyncapi")
|
|
90
89
|
return "asyncapi3";
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
package/dist/registry.js.map
CHANGED
|
@@ -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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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",
|
|
@@ -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/
|
|
54
|
-
"@ir-kit/
|
|
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",
|