Socket
Socket
Sign inDemoInstall

@nestjs/swagger

Package Overview
Dependencies
Maintainers
2
Versions
206
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nestjs/swagger - npm Package Compare versions

Comparing version 6.4.0-next.1 to 6.4.0-next.2

dist/plugin/metadata-loader.d.ts

4

dist/decorators/api-operation.decorator.d.ts
import { OperationObject } from '../interfaces/open-api-spec.interface';
export type ApiOperationOptions = Partial<OperationObject>;
export declare function ApiOperation(options: ApiOperationOptions): MethodDecorator;
export declare function ApiOperation(options: ApiOperationOptions, { overrideExisting }?: {
overrideExisting: boolean;
}): MethodDecorator;

@@ -10,5 +10,5 @@ "use strict";

};
function ApiOperation(options) {
return (0, helpers_1.createMethodDecorator)(constants_1.DECORATORS.API_OPERATION, (0, lodash_1.pickBy)(Object.assign(Object.assign({}, defaultOperationOptions), options), (0, lodash_1.negate)(lodash_1.isUndefined)));
function ApiOperation(options, { overrideExisting } = { overrideExisting: true }) {
return (0, helpers_1.createMethodDecorator)(constants_1.DECORATORS.API_OPERATION, (0, lodash_1.pickBy)(Object.assign(Object.assign({}, defaultOperationOptions), options), (0, lodash_1.negate)(lodash_1.isUndefined)), { overrideExisting });
}
exports.ApiOperation = ApiOperation;
import { Type } from '@nestjs/common';
import { ResponseObject, SchemaObject, ReferenceObject } from '../interfaces/open-api-spec.interface';
import { ReferenceObject, ResponseObject, SchemaObject } from '../interfaces/open-api-spec.interface';
export interface ApiResponseMetadata extends Omit<ResponseObject, 'description'> {

@@ -15,3 +15,5 @@ status?: number | 'default' | '1XX' | '2XX' | '3XX' | '4XX' | '5XX';

export type ApiResponseOptions = ApiResponseMetadata | ApiResponseSchemaHost;
export declare function ApiResponse(options: ApiResponseOptions): MethodDecorator & ClassDecorator;
export declare function ApiResponse(options: ApiResponseOptions, { overrideExisting }?: {
overrideExisting: boolean;
}): MethodDecorator & ClassDecorator;
export declare const ApiOkResponse: (options?: ApiResponseOptions) => MethodDecorator & ClassDecorator;

@@ -18,0 +20,0 @@ export declare const ApiCreatedResponse: (options?: ApiResponseOptions) => MethodDecorator & ClassDecorator;

@@ -8,3 +8,3 @@ "use strict";

const helpers_1 = require("./helpers");
function ApiResponse(options) {
function ApiResponse(options, { overrideExisting } = { overrideExisting: true }) {
const [type, isArray] = (0, helpers_1.getTypeIsArrayTuple)(options.type, options.isArray);

@@ -19,7 +19,13 @@ options.type = type;

if (descriptor) {
const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, descriptor.value) || {};
const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, descriptor.value);
if (responses && !overrideExisting) {
return descriptor;
}
Reflect.defineMetadata(constants_1.DECORATORS.API_RESPONSE, Object.assign(Object.assign({}, responses), groupedMetadata), descriptor.value);
return descriptor;
}
const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, target) || {};
const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, target);
if (responses && !overrideExisting) {
return descriptor;
}
Reflect.defineMetadata(constants_1.DECORATORS.API_RESPONSE, Object.assign(Object.assign({}, responses), groupedMetadata), target);

@@ -26,0 +32,0 @@ return target;

@@ -1,2 +0,4 @@

export declare function createMethodDecorator<T = any>(metakey: string, metadata: T): MethodDecorator;
export declare function createMethodDecorator<T = any>(metakey: string, metadata: T, { overrideExisting }?: {
overrideExisting: boolean;
}): MethodDecorator;
export declare function createClassDecorator<T extends Array<any> = any>(metakey: string, metadata?: T): ClassDecorator;

@@ -3,0 +5,0 @@ export declare function createPropertyDecorator<T extends Record<string, any> = any>(metakey: string, metadata: T, overrideExisting?: boolean): PropertyDecorator;

@@ -7,4 +7,12 @@ "use strict";

const plugin_constants_1 = require("../plugin/plugin-constants");
function createMethodDecorator(metakey, metadata) {
function createMethodDecorator(metakey, metadata, { overrideExisting } = { overrideExisting: true }) {
return (target, key, descriptor) => {
if (typeof metadata === 'object') {
const prevValue = Reflect.getMetadata(metakey, descriptor.value);
if (prevValue && !overrideExisting) {
return descriptor;
}
Reflect.defineMetadata(metakey, Object.assign(Object.assign({}, prevValue), metadata), descriptor.value);
return descriptor;
}
Reflect.defineMetadata(metakey, metadata, descriptor.value);

@@ -11,0 +19,0 @@ return descriptor;

@@ -5,3 +5,39 @@ "use strict";

const constants_1 = require("../constants");
const exploreApiOperationMetadata = (instance, prototype, method) => Reflect.getMetadata(constants_1.DECORATORS.API_OPERATION, method);
const api_operation_decorator_1 = require("../decorators/api-operation.decorator");
const plugin_constants_1 = require("../plugin/plugin-constants");
const exploreApiOperationMetadata = (instance, prototype, method) => {
applyMetadataFactory(prototype);
return Reflect.getMetadata(constants_1.DECORATORS.API_OPERATION, method);
};
exports.exploreApiOperationMetadata = exploreApiOperationMetadata;
function applyMetadataFactory(prototype) {
const classPrototype = prototype;
do {
if (!prototype.constructor) {
return;
}
if (!prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME]) {
continue;
}
const metadata = prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME]();
const methodKeys = Object.keys(metadata);
methodKeys.forEach((key) => {
const operationMeta = {};
const { summary, deprecated, tags } = metadata[key];
applyIfNotNil(operationMeta, 'summary', summary);
applyIfNotNil(operationMeta, 'deprecated', deprecated);
applyIfNotNil(operationMeta, 'tags', tags);
if (Object.keys(operationMeta).length === 0) {
return;
}
(0, api_operation_decorator_1.ApiOperation)(metadata[key], { overrideExisting: false })(classPrototype, key, Object.getOwnPropertyDescriptor(classPrototype, key));
});
} while ((prototype = Reflect.getPrototypeOf(prototype)) &&
prototype !== Object.prototype &&
prototype);
}
function applyIfNotNil(target, key, value) {
if (value !== undefined && value !== null) {
target[key] = value;
}
}
"use strict";
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -9,2 +20,4 @@ exports.exploreApiResponseMetadata = exports.exploreGlobalApiResponseMetadata = void 0;

const constants_2 = require("../constants");
const decorators_1 = require("../decorators");
const plugin_constants_1 = require("../plugin/plugin-constants");
const response_object_factory_1 = require("../services/response-object-factory");

@@ -24,2 +37,3 @@ const merge_and_uniq_util_1 = require("../utils/merge-and-uniq.util");

const exploreApiResponseMetadata = (schemas, instance, prototype, method) => {
applyMetadataFactory(prototype);
const responses = Reflect.getMetadata(constants_2.DECORATORS.API_RESPONSE, method);

@@ -58,1 +72,26 @@ if (responses) {

};
function applyMetadataFactory(prototype) {
const classPrototype = prototype;
do {
if (!prototype.constructor) {
return;
}
if (!prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME]) {
continue;
}
const metadata = prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME]();
const methodKeys = Object.keys(metadata);
methodKeys.forEach((key) => {
const _a = metadata[key], { summary, deprecated, tags } = _a, meta = __rest(_a, ["summary", "deprecated", "tags"]);
if (Object.keys(meta).length === 0) {
return;
}
if (meta.status === undefined) {
meta.status = getStatusCode(classPrototype[key]);
}
(0, decorators_1.ApiResponse)(meta, { overrideExisting: false })(classPrototype, key, Object.getOwnPropertyDescriptor(classPrototype, key));
});
} while ((prototype = Reflect.getPrototypeOf(prototype)) &&
prototype !== Object.prototype &&
prototype);
}

@@ -57,1 +57,5 @@ export declare function ApiProperty(): () => void;

export declare function getSchemaPath(): () => string;
export declare function before(): () => string;
export declare function ReadonlyVisitor(): {
new (): {};
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentBuilder = exports.ApiExtension = exports.ApiTags = exports.ApiSecurity = exports.ApiDefaultResponse = exports.ApiUnsupportedMediaTypeResponse = exports.ApiUnprocessableEntityResponse = exports.ApiServiceUnavailableResponse = exports.ApiRequestTimeoutResponse = exports.ApiPayloadTooLargeResponse = exports.ApiPreconditionFailedResponse = exports.ApiNotImplementedResponse = exports.ApiNotAcceptableResponse = exports.ApiMethodNotAllowedResponse = exports.ApiGoneResponse = exports.ApiGatewayTimeoutResponse = exports.ApiForbiddenResponse = exports.ApiConflictResponse = exports.ApiBadGatewayResponse = exports.ApiInternalServerErrorResponse = exports.ApiNotFoundResponse = exports.ApiTooManyRequestsResponse = exports.ApiUnauthorizedResponse = exports.ApiBadRequestResponse = exports.ApiFoundResponse = exports.ApiMovedPermanentlyResponse = exports.ApiNoContentResponse = exports.ApiAcceptedResponse = exports.ApiCreatedResponse = exports.ApiOkResponse = exports.ApiResponse = exports.ApiQuery = exports.ApiProduces = exports.ApiParam = exports.ApiOperation = exports.ApiOAuth2 = exports.ApiHideProperty = exports.ApiHeaders = exports.ApiHeader = exports.ApiExtraModels = exports.ApiExcludeController = exports.ApiExcludeEndpoint = exports.ApiCookieAuth = exports.ApiConsumes = exports.ApiBody = exports.ApiBearerAuth = exports.ApiBasicAuth = exports.ApiResponseProperty = exports.ApiPropertyOptional = exports.ApiProperty = void 0;
exports.getSchemaPath = exports.PickType = exports.PartialType = exports.OmitType = exports.IntersectionType = exports.SwaggerModule = void 0;
exports.ReadonlyVisitor = exports.before = exports.getSchemaPath = exports.PickType = exports.PartialType = exports.OmitType = exports.IntersectionType = exports.SwaggerModule = void 0;
function ApiProperty() {

@@ -229,1 +229,10 @@ return () => { };

exports.getSchemaPath = getSchemaPath;
function before() {
return () => '';
}
exports.before = before;
function ReadonlyVisitor() {
return class {
};
}
exports.ReadonlyVisitor = ReadonlyVisitor;

@@ -5,4 +5,5 @@ import 'reflect-metadata';

export * from './interfaces';
export * from './plugin';
export * from './swagger-module';
export * from './type-helpers';
export * from './utils';

@@ -21,4 +21,5 @@ "use strict";

__exportStar(require("./interfaces"), exports);
__exportStar(require("./plugin"), exports);
__exportStar(require("./swagger-module"), exports);
__exportStar(require("./type-helpers"), exports);
__exportStar(require("./utils"), exports);

@@ -7,2 +7,3 @@ export interface SwaggerDocumentOptions {

operationIdFactory?: (controllerKey: string, methodKey: string) => string;
metadata?: Record<string, any>;
}

@@ -117,3 +117,15 @@ "use strict";

const methodKey = node.name.getText();
metadata[methodKey] = objectLiteralExpr;
if (metadata[methodKey]) {
const existingObjectLiteralExpr = metadata[methodKey];
const existingProperties = existingObjectLiteralExpr.properties;
const updatedProperties = factory.createNodeArray([
...existingProperties,
...(0, lodash_1.compact)(properties)
]);
const updatedObjectLiteralExpr = factory.createObjectLiteralExpression(updatedProperties);
metadata[methodKey] = updatedObjectLiteralExpr;
}
else {
metadata[methodKey] = objectLiteralExpr;
}
if (apiOperationDecorator) {

@@ -142,6 +154,9 @@ const expr = apiOperationDecorator.expression;

if (existingExprOrUndefined) {
factory.updateObjectLiteralExpression(objectLiteralExpr, [
...existingExprOrUndefined.properties,
...objectLiteralExpr.properties
const existingProperties = existingExprOrUndefined.properties;
const updatedProperties = factory.createNodeArray([
...existingProperties,
...(0, lodash_1.compact)(properties)
]);
const updatedObjectLiteralExpr = factory.createObjectLiteralExpression(updatedProperties);
metadata[methodKey] = updatedObjectLiteralExpr;
}

@@ -148,0 +163,0 @@ else {

@@ -5,2 +5,3 @@ import * as ts from 'typescript';

private readonly options;
readonly key = "@nestjs/swagger";
private readonly modelClassVisitor;

@@ -7,0 +8,0 @@ private readonly controllerClassVisitor;

@@ -12,4 +12,9 @@ "use strict";

this.options = options;
this.key = '@nestjs/swagger';
this.modelClassVisitor = new model_class_visitor_1.ModelClassVisitor();
this.controllerClassVisitor = new controller_class_visitor_1.ControllerClassVisitor();
options.readonly = true;
if (!options.pathToSource) {
throw new Error(`"pathToSource" must be defined in plugin options`);
}
}

@@ -16,0 +21,0 @@ visit(program, sf) {

@@ -1,1 +0,1 @@

export declare const BUILT_IN_TYPES: (ArrayConstructor | ObjectConstructor | StringConstructor | NumberConstructor | BooleanConstructor)[];
export declare const BUILT_IN_TYPES: (ArrayConstructor | ObjectConstructor | StringConstructor | BooleanConstructor | NumberConstructor)[];
import { INestApplication } from '@nestjs/common';
import { OpenAPIObject, SwaggerCustomOptions, SwaggerDocumentOptions } from './interfaces';
export declare class SwaggerModule {
private static readonly metadataLoader;
static createDocument(app: INestApplication, config: Omit<OpenAPIObject, 'paths'>, options?: SwaggerDocumentOptions): OpenAPIObject;

@@ -5,0 +6,0 @@ private static serveStatic;

@@ -5,2 +5,3 @@ "use strict";

const jsyaml = require("js-yaml");
const metadata_loader_1 = require("./plugin/metadata-loader");
const swagger_scanner_1 = require("./swagger-scanner");

@@ -10,7 +11,10 @@ const swagger_ui_1 = require("./swagger-ui");

const get_global_prefix_1 = require("./utils/get-global-prefix");
const validate_path_util_1 = require("./utils/validate-path.util");
const normalize_rel_path_1 = require("./utils/normalize-rel-path");
const validate_global_prefix_util_1 = require("./utils/validate-global-prefix.util");
const validate_path_util_1 = require("./utils/validate-path.util");
class SwaggerModule {
static createDocument(app, config, options = {}) {
if (options.metadata) {
this.metadataLoader.load(options.metadata);
}
const swaggerScanner = new swagger_scanner_1.SwaggerScanner();

@@ -104,2 +108,3 @@ const document = swaggerScanner.scanApplication(app, options);

}
SwaggerModule.metadataLoader = new metadata_loader_1.MetadataLoader();
exports.SwaggerModule = SwaggerModule;
{
"name": "@nestjs/swagger",
"version": "6.4.0-next.1",
"version": "6.4.0-next.2",
"description": "Nest - modern, fast, powerful node.js web framework (@swagger)",

@@ -5,0 +5,0 @@ "author": "Kamil Mysliwiec",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc