@sebspark/openapi-typegen 1.5.1 → 1.6.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/index.js +140 -10
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -336,7 +336,7 @@ var serializeValue = (value) => {
|
|
|
336
336
|
var generateClientArgs = (args) => generateArgs(args, false);
|
|
337
337
|
var generateServerArgs = (args) => args ? generateArgs(args, true) : "args: Req";
|
|
338
338
|
var parts = ["body", "header", "path", "query"];
|
|
339
|
-
var generateArgs = (args,
|
|
339
|
+
var generateArgs = (args, isServer) => {
|
|
340
340
|
if (args) {
|
|
341
341
|
const tokens = [];
|
|
342
342
|
for (const part of parts) {
|
|
@@ -344,17 +344,25 @@ var generateArgs = (args, extendsReq) => {
|
|
|
344
344
|
if (arg) {
|
|
345
345
|
const partName = part === "path" ? "params" : part === "header" ? "headers" : part;
|
|
346
346
|
tokens.push(
|
|
347
|
-
`${partName}${arg.optional ? "?" : ""}: ${
|
|
347
|
+
`${partName}${arg.optional ? "?" : ""}: ${wrapArgs(
|
|
348
|
+
generateType(arg),
|
|
349
|
+
isServer && part === "header"
|
|
350
|
+
)}`
|
|
348
351
|
);
|
|
349
352
|
}
|
|
350
353
|
}
|
|
351
354
|
if (!tokens.length)
|
|
352
355
|
return "";
|
|
353
356
|
const optional = argsOptional(args);
|
|
354
|
-
return `args${optional ? "?" : ""}: ${
|
|
357
|
+
return `args${optional ? "?" : ""}: ${isServer ? "Req & " : ""}{ ${tokens.join(", ")} }, `;
|
|
355
358
|
}
|
|
356
359
|
return "";
|
|
357
360
|
};
|
|
361
|
+
var wrapArgs = (args, wrap) => {
|
|
362
|
+
if (!wrap)
|
|
363
|
+
return args;
|
|
364
|
+
return `LowerCaseHeaders<${args}>`;
|
|
365
|
+
};
|
|
358
366
|
var argsOptional = (args) => (
|
|
359
367
|
// biome-ignore lint/style/noNonNullAssertion: <explanation>
|
|
360
368
|
parts.reduce((o, p) => o && (!args[p] || args[p].optional), true)
|
|
@@ -435,6 +443,7 @@ var generate = (name, doc) => `
|
|
|
435
443
|
APIServerDefinition,
|
|
436
444
|
BaseClient,
|
|
437
445
|
GenericRouteHandler,
|
|
446
|
+
LowerCaseHeaders,
|
|
438
447
|
PartiallySerialized,
|
|
439
448
|
RequestOptions,
|
|
440
449
|
Serialized,
|
|
@@ -482,6 +491,21 @@ var generateComponents = (components) => {
|
|
|
482
491
|
for (const res of components.responseBodies) {
|
|
483
492
|
tokens.push(generateResponseBody(res));
|
|
484
493
|
}
|
|
494
|
+
for (const param2 of components.securitySchemes) {
|
|
495
|
+
tokens.push(
|
|
496
|
+
generateType({
|
|
497
|
+
type: "object",
|
|
498
|
+
name: param2.name,
|
|
499
|
+
properties: [
|
|
500
|
+
{
|
|
501
|
+
name: param2.parameterName,
|
|
502
|
+
type: [param2.type],
|
|
503
|
+
optional: param2.optional
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
})
|
|
507
|
+
);
|
|
508
|
+
}
|
|
485
509
|
return tokens.join("\n\n");
|
|
486
510
|
};
|
|
487
511
|
|
|
@@ -670,13 +694,14 @@ var parseParameter = (name, schema) => {
|
|
|
670
694
|
|
|
671
695
|
// src/parser/args.ts
|
|
672
696
|
var parseArgs = (path, components) => {
|
|
673
|
-
var _a;
|
|
674
|
-
if (!((_a = path.parameters) == null ? void 0 : _a.length) && !path.requestBody)
|
|
697
|
+
var _a, _b;
|
|
698
|
+
if (!((_a = path.parameters) == null ? void 0 : _a.length) && !((_b = path.security) == null ? void 0 : _b.length) && !path.requestBody)
|
|
675
699
|
return void 0;
|
|
676
|
-
const args =
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
700
|
+
const args = joinArgs([
|
|
701
|
+
parseParameters2(path.parameters, components),
|
|
702
|
+
parseSecurity(path.security, components),
|
|
703
|
+
parseRequestBody(path.requestBody, components)
|
|
704
|
+
]);
|
|
680
705
|
return args;
|
|
681
706
|
};
|
|
682
707
|
var createArgs = (initializer = {}) => ({
|
|
@@ -685,6 +710,56 @@ var createArgs = (initializer = {}) => ({
|
|
|
685
710
|
optional: true,
|
|
686
711
|
...initializer
|
|
687
712
|
});
|
|
713
|
+
var joinArgs = (args) => {
|
|
714
|
+
const reqArg = {};
|
|
715
|
+
for (const arg of args) {
|
|
716
|
+
for (const [prop, val] of Object.entries(arg)) {
|
|
717
|
+
const key = prop;
|
|
718
|
+
if (reqArg[key]) {
|
|
719
|
+
reqArg[key] = joinArg(reqArg[key], val);
|
|
720
|
+
} else {
|
|
721
|
+
reqArg[key] = val;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
return reqArg;
|
|
726
|
+
};
|
|
727
|
+
var joinArg = (arg1, arg2) => {
|
|
728
|
+
const arg = {
|
|
729
|
+
type: "object",
|
|
730
|
+
optional: arg1.optional && arg2.optional,
|
|
731
|
+
properties: arg1.properties.concat(arg2.properties)
|
|
732
|
+
};
|
|
733
|
+
if (arg1.allOf || arg2.allOf)
|
|
734
|
+
arg.allOf = (arg1.allOf || []).concat(arg2.allOf || []);
|
|
735
|
+
if (arg1.anyOf || arg2.anyOf)
|
|
736
|
+
arg.anyOf = (arg1.anyOf || []).concat(arg2.anyOf || []);
|
|
737
|
+
if (arg1.oneOf || arg2.oneOf)
|
|
738
|
+
arg.oneOf = (arg1.oneOf || []).concat(arg2.oneOf || []);
|
|
739
|
+
if (arg1.description || arg2.description)
|
|
740
|
+
arg.description = arg1.description || arg2.description;
|
|
741
|
+
if (arg1.title || arg2.title)
|
|
742
|
+
arg.title = arg1.title || arg2.title;
|
|
743
|
+
return arg;
|
|
744
|
+
};
|
|
745
|
+
var parseSecurity = (security = [], components = {}) => {
|
|
746
|
+
const args = {};
|
|
747
|
+
for (const secReq of security) {
|
|
748
|
+
for (const [name, claims] of Object.entries(secReq)) {
|
|
749
|
+
const param2 = findRef(
|
|
750
|
+
components,
|
|
751
|
+
`#/components/securitySchemes/${name}`
|
|
752
|
+
);
|
|
753
|
+
const arg = args.header || createArgs({ ...parseDocumentation(param2) });
|
|
754
|
+
arg.optional = false;
|
|
755
|
+
if (!arg.allOf)
|
|
756
|
+
arg.allOf = [];
|
|
757
|
+
arg.allOf.push({ type: parseRef(name) });
|
|
758
|
+
args.header = arg;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
return args;
|
|
762
|
+
};
|
|
688
763
|
var parseParameters2 = (parameters = [], components = {}) => {
|
|
689
764
|
const args = {};
|
|
690
765
|
for (const p of parameters) {
|
|
@@ -863,6 +938,60 @@ var parseRequestBodies = (requestBodies = {}) => {
|
|
|
863
938
|
return definitions;
|
|
864
939
|
};
|
|
865
940
|
|
|
941
|
+
// src/parser/securitySchemes.ts
|
|
942
|
+
var parseSecuritySchemes = (schemes = {}) => {
|
|
943
|
+
const parameters = [];
|
|
944
|
+
for (const [name, scheme] of Object.entries(schemes)) {
|
|
945
|
+
parameters.push(parseSecurityScheme(name, scheme));
|
|
946
|
+
}
|
|
947
|
+
return parameters;
|
|
948
|
+
};
|
|
949
|
+
var parseSecurityScheme = (name, scheme) => {
|
|
950
|
+
switch (scheme.type) {
|
|
951
|
+
case "apiKey":
|
|
952
|
+
return parseApiKey(name, scheme);
|
|
953
|
+
case "http":
|
|
954
|
+
return parseHttpSecurity(name, scheme);
|
|
955
|
+
case "oauth2":
|
|
956
|
+
return parseOAuth(name, scheme);
|
|
957
|
+
case "openIdConnect":
|
|
958
|
+
return parseOpenIdConnect(name, scheme);
|
|
959
|
+
}
|
|
960
|
+
throw new Error(`Unknown security scheme '${scheme.type}'`);
|
|
961
|
+
};
|
|
962
|
+
var parseApiKey = (name, scheme) => {
|
|
963
|
+
const _in = scheme.in || "header";
|
|
964
|
+
const parameterName = scheme.name;
|
|
965
|
+
return {
|
|
966
|
+
name,
|
|
967
|
+
parameterName,
|
|
968
|
+
in: _in,
|
|
969
|
+
optional: false,
|
|
970
|
+
type: { type: "string" }
|
|
971
|
+
};
|
|
972
|
+
};
|
|
973
|
+
var parseHttpSecurity = (name, _scheme) => ({
|
|
974
|
+
name,
|
|
975
|
+
in: "header",
|
|
976
|
+
parameterName: "Authorization",
|
|
977
|
+
optional: false,
|
|
978
|
+
type: { type: "string" }
|
|
979
|
+
});
|
|
980
|
+
var parseOAuth = (name, _scheme) => ({
|
|
981
|
+
name,
|
|
982
|
+
in: "header",
|
|
983
|
+
parameterName: "Authorization",
|
|
984
|
+
optional: false,
|
|
985
|
+
type: { type: "string" }
|
|
986
|
+
});
|
|
987
|
+
var parseOpenIdConnect = (name, _scheme) => ({
|
|
988
|
+
name,
|
|
989
|
+
in: "header",
|
|
990
|
+
parameterName: "Authorization",
|
|
991
|
+
optional: false,
|
|
992
|
+
type: { type: "string" }
|
|
993
|
+
});
|
|
994
|
+
|
|
866
995
|
// src/parser/index.ts
|
|
867
996
|
var parseDocument = (schema) => ({
|
|
868
997
|
paths: parsePaths(schema),
|
|
@@ -873,7 +1002,8 @@ var parseComponents = (components = {}) => ({
|
|
|
873
1002
|
headers: parseHeaders(components.headers),
|
|
874
1003
|
parameters: parseParameters(components.parameters),
|
|
875
1004
|
requestBodies: parseRequestBodies(components.requestBodies),
|
|
876
|
-
responseBodies: parseResponseBodies(components.responses)
|
|
1005
|
+
responseBodies: parseResponseBodies(components.responses),
|
|
1006
|
+
securitySchemes: parseSecuritySchemes(components.securitySchemes)
|
|
877
1007
|
});
|
|
878
1008
|
|
|
879
1009
|
// src/index.ts
|