@nestia/sdk
Version:
Nestia SDK and Swagger generator
101 lines • 5.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SdkHttpParameterProgrammer = void 0;
const factory_1 = require("@ttsc/factory");
const SdkAliasCollection_1 = require("./SdkAliasCollection");
var SdkHttpParameterProgrammer;
(function (SdkHttpParameterProgrammer) {
SdkHttpParameterProgrammer.getAll = (route) => [
...route.pathParameters,
...route.queryParameters,
...route.headerParameters,
...(route.queryObject ? [route.queryObject] : []),
...(route.body ? [route.body] : []),
...(route.headerObject ? [route.headerObject] : []),
];
SdkHttpParameterProgrammer.getSignificant = (route, body) => [
...route.pathParameters,
...route.queryParameters,
...(route.queryObject ? [route.queryObject] : []),
...(body && route.body ? [route.body] : []),
];
SdkHttpParameterProgrammer.getEntries = (props) => {
if (props.route.pathParameters.length === 0 &&
props.route.queryParameters.length === 0 &&
props.route.queryObject === null &&
(props.body === false || props.route.body === null))
return [];
const prefix = typeof props.prefix === "string"
? props.prefix
: props.prefix === true
? `${props.route.name}.`
: "";
return [
...[...props.route.pathParameters, ...props.route.queryParameters].map((p) => ({
key: p.name,
required: p.metadata.required,
type: props.project.config.clone === true
? SdkAliasCollection_1.SdkAliasCollection.from(props.project)(props.importer)(p.metadata)
: SdkAliasCollection_1.SdkAliasCollection.name(p),
parameter: p,
})),
...(props.route.queryObject
? [
{
key: props.route.queryObject.name,
required: props.route.queryObject.metadata.required,
type: props.e2e === true
? props.project.config.clone === true
? SdkAliasCollection_1.SdkAliasCollection.from(props.project)(props.importer)(props.route.queryObject.metadata)
: SdkAliasCollection_1.SdkAliasCollection.name(props.route.queryObject)
: factory_1.factory.createTypeReferenceNode(`${prefix}Query`),
parameter: props.route.queryObject,
},
]
: []),
...(props.body && props.route.body
? [
{
key: props.route.body.name,
required: props.route.body.metadata.required,
type: props.e2e === true
? props.project.config.clone === true
? SdkAliasCollection_1.SdkAliasCollection.from(props.project)(props.importer)(props.route.body.metadata)
: SdkAliasCollection_1.SdkAliasCollection.name(props.route.body)
: factory_1.factory.createTypeReferenceNode(`${prefix}Body`),
parameter: props.route.body,
},
]
: []),
];
};
SdkHttpParameterProgrammer.getParameterDeclarations = (props) => {
const entries = SdkHttpParameterProgrammer.getEntries(props);
if (entries.length === 0)
return [];
else if (props.project.config.keyword === true) {
const typeName = props.prefix
? `${props.route.name}.Props`
: "Props";
const node = props.body === false && props.route.body !== null
? factory_1.factory.createTypeReferenceNode("Omit", [
factory_1.factory.createTypeReferenceNode(typeName),
factory_1.factory.createLiteralTypeNode(factory_1.factory.createStringLiteral(props.route.body.name)),
])
: factory_1.factory.createTypeReferenceNode(typeName);
return [
factory_1.factory.createParameterDeclaration(undefined, undefined, "props", undefined, node, undefined),
];
}
return entries.map((e) => factory_1.factory.createParameterDeclaration(undefined, undefined, e.key, e.required ? undefined : factory_1.factory.createToken(factory_1.SyntaxKind.QuestionToken), e.type, undefined));
};
SdkHttpParameterProgrammer.getArguments = (props) => {
const parameters = SdkHttpParameterProgrammer.getSignificant(props.route, props.body);
if (parameters.length === 0)
return [];
else if (props.project.config.keyword === true)
return [factory_1.factory.createIdentifier("props")];
return parameters.map((p) => factory_1.factory.createIdentifier(p.name));
};
})(SdkHttpParameterProgrammer || (exports.SdkHttpParameterProgrammer = SdkHttpParameterProgrammer = {}));
//# sourceMappingURL=SdkHttpParameterProgrammer.js.map