@nestia/sdk
Version:
Nestia SDK and Swagger generator
45 lines (39 loc) • 1.38 kB
text/typescript
import { VERSION_NEUTRAL } from "@nestjs/common";
import { PATH_METADATA, VERSION_METADATA } from "@nestjs/common/constants";
import { VersionValue } from "@nestjs/common/interfaces";
import { SecurityAnalyzer } from "./SecurityAnalyzer";
export namespace ReflectMetadataAnalyzer {
export const paths = (target: Function): string[] => {
const value: string | string[] = Reflect.getMetadata(PATH_METADATA, target);
if (typeof value === "string") return [value];
else if (value.length === 0) return [""];
else return value;
};
export const extensions = (value: any): Record<string, any> => {
const entire: Record<string, any>[] | undefined = Reflect.getMetadata(
"swagger/apiExtension",
value,
);
return entire ?? {};
};
export const securities = (value: any): Record<string, string[]>[] => {
const entire: Record<string, string[]>[] | undefined = Reflect.getMetadata(
"swagger/apiSecurity",
value,
);
return entire ? SecurityAnalyzer.merge(...entire) : [];
};
export const versions = (
target: any,
): Array<string | typeof VERSION_NEUTRAL> | undefined => {
const value: VersionValue | undefined = Reflect.getMetadata(
VERSION_METADATA,
target,
);
return value === undefined
? undefined
: Array.isArray(value)
? value
: [value];
};
}