@nestia/sdk
Version:
Nestia SDK and Swagger generator
62 lines • 2.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SdkHttpCloneReferencer = void 0;
const StringUtil_1 = require("../../utils/StringUtil");
var SdkHttpCloneReferencer;
(function (SdkHttpCloneReferencer) {
SdkHttpCloneReferencer.replace = (app) => {
const directory = `${app.project.config.output}/structures`;
for (const route of app.routes)
if (route.protocol === "http")
visitRoute({
directory,
route,
});
};
const visitRoute = (props) => {
const unique = new Set();
for (const p of props.route.parameters)
visitType({
unique,
metadata: p.metadata,
type: p.type,
name: (name) => (p.type = { name }),
});
for (const v of Object.values(props.route.exceptions))
visitType({
unique,
metadata: v.metadata,
type: v.type,
name: (name) => (v.type = { name }),
});
visitType({
unique,
metadata: props.route.success.metadata,
type: props.route.success.type,
name: (name) => (props.route.success.type = { name }),
});
props.route.imports = Array.from(unique).map((str) => ({
file: `${props.directory}/${str}`,
instances: [str],
}));
};
const visitType = (p) => {
const enroll = (key) => {
if (key.length && StringUtil_1.StringUtil.isImplicit(key) === false)
p.unique.add(key.split(".")[0]);
};
for (const alias of p.metadata.aliases)
enroll(alias.type.name);
for (const array of p.metadata.arrays)
enroll(array.type.name);
for (const tuple of p.metadata.tuples)
enroll(tuple.type.name);
for (const object of p.metadata.objects)
enroll(object.type.name);
p.name(p.metadata.getName());
};
})(SdkHttpCloneReferencer || (exports.SdkHttpCloneReferencer = SdkHttpCloneReferencer = {}));
const getFullText = (type) => type.typeArguments === undefined
? type.name
: `${type.name}<${type.typeArguments.map(getFullText).join(", ")}>`;
//# sourceMappingURL=SdkHttpCloneReferencer.js.map
;