Socket
Socket
Sign inDemoInstall

@ts-rest/nest

Package Overview
Dependencies
Maintainers
1
Versions
126
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ts-rest/nest - npm Package Compare versions

Comparing version 3.16.0 to 3.16.1

src/lib/constants.d.ts

83

index.js

@@ -1,7 +0,10 @@

import { SetMetadata, createParamDecorator, BadRequestException, Injectable, UseInterceptors, applyDecorators, Put, Patch, Post, Get, Delete } from '@nestjs/common';
import { parseJsonQueryObject, checkZodSchema, zodErrorResponse, isAppRouteResponse, validateResponse } from '@ts-rest/core';
import { SetMetadata, Injectable, UseInterceptors, applyDecorators, Put, Patch, Post, Get, Delete, createParamDecorator, BadRequestException } from '@nestjs/common';
import { map } from 'rxjs';
import { isAppRouteResponse, validateResponse, parseJsonQueryObject, checkZodSchema, zodErrorResponse } from '@ts-rest/core';
import { Reflector } from '@nestjs/core';
const JsonQuerySymbol = Symbol('JsonQuery');
const TsRestAppRouteMetadataKey = Symbol('ts-rest-app-route');
const JsonQuerySymbol = Symbol('ts-rest-json-query');
const ValidateResponsesSymbol = Symbol('ts-rest-validate-responses');
const JsonQuery = (jsonQuery = true) => {

@@ -23,36 +26,2 @@ return SetMetadata(JsonQuerySymbol, jsonQuery);

const tsRestAppRouteMetadataKey = Symbol('ts-rest-app-route');
const TsRestRequest = createParamDecorator((_, ctx) => {
var _a;
const req = ctx.switchToHttp().getRequest();
const appRoute = Reflect.getMetadata(tsRestAppRouteMetadataKey, ctx.getHandler());
if (!appRoute) {
throw new Error('Make sure your route is decorated with @TsRest()');
}
const isJsonQuery = !!((_a = Reflect.getMetadata(JsonQuerySymbol, ctx.getHandler())) !== null && _a !== void 0 ? _a : Reflect.getMetadata(JsonQuerySymbol, ctx.getClass()));
const query = isJsonQuery
? parseJsonQueryObject(req.query)
: req.query;
const queryResult = checkZodSchema(query, appRoute.query);
if (!queryResult.success) {
throw new BadRequestException(zodErrorResponse(queryResult.error));
}
const bodyResult = checkZodSchema(req.body, appRoute.method === 'GET' ? null : appRoute.body);
if (!bodyResult.success) {
throw new BadRequestException(zodErrorResponse(bodyResult.error));
}
const pathParamsResult = checkZodSchema(req.params, appRoute.pathParams, {
passThroughExtraKeys: true,
});
if (!pathParamsResult.success) {
throw new BadRequestException(zodErrorResponse(pathParamsResult.error));
}
return {
query: queryResult.data,
params: pathParamsResult.data,
body: bodyResult.data,
};
});
const ApiDecorator = TsRestRequest;
/******************************************************************************

@@ -90,3 +59,3 @@ Copyright (c) Microsoft Corporation.

const res = context.switchToHttp().getResponse();
const appRoute = this.reflector.get(tsRestAppRouteMetadataKey, context.getHandler());
const appRoute = this.reflector.get(TsRestAppRouteMetadataKey, context.getHandler());
if (!appRoute) {

@@ -116,3 +85,2 @@ throw new Error('Make sure your route is decorated with @TsRest()');

const ValidateResponsesSymbol = Symbol('ts-rest-validate-responses');
const TsRest = (appRouteOrOptions, options = {}) => {

@@ -124,3 +92,3 @@ const decorators = [];

decorators.push(...[
SetMetadata(tsRestAppRouteMetadataKey, appRouteOrOptions),
SetMetadata(TsRestAppRouteMetadataKey, appRouteOrOptions),
getMethodDecorator(appRouteOrOptions),

@@ -156,2 +124,35 @@ UseInterceptors(TsRestInterceptor),

export { Api, ApiDecorator, JsonQuery, JsonQuerySymbol, TsRest, TsRestInterceptor, TsRestRequest, ValidateResponsesSymbol, initNestServer, nestControllerContract, tsRestAppRouteMetadataKey };
const TsRestRequest = createParamDecorator((_, ctx) => {
var _a;
const req = ctx.switchToHttp().getRequest();
const appRoute = Reflect.getMetadata(TsRestAppRouteMetadataKey, ctx.getHandler());
if (!appRoute) {
throw new Error('Make sure your route is decorated with @TsRest()');
}
const isJsonQuery = !!((_a = Reflect.getMetadata(JsonQuerySymbol, ctx.getHandler())) !== null && _a !== void 0 ? _a : Reflect.getMetadata(JsonQuerySymbol, ctx.getClass()));
const query = isJsonQuery
? parseJsonQueryObject(req.query)
: req.query;
const queryResult = checkZodSchema(query, appRoute.query);
if (!queryResult.success) {
throw new BadRequestException(zodErrorResponse(queryResult.error));
}
const bodyResult = checkZodSchema(req.body, appRoute.method === 'GET' ? null : appRoute.body);
if (!bodyResult.success) {
throw new BadRequestException(zodErrorResponse(bodyResult.error));
}
const pathParamsResult = checkZodSchema(req.params, appRoute.pathParams, {
passThroughExtraKeys: true,
});
if (!pathParamsResult.success) {
throw new BadRequestException(zodErrorResponse(pathParamsResult.error));
}
return {
query: queryResult.data,
params: pathParamsResult.data,
body: bodyResult.data,
};
});
const ApiDecorator = TsRestRequest;
export { Api, ApiDecorator, JsonQuery, JsonQuerySymbol, TsRest, TsRestAppRouteMetadataKey, TsRestInterceptor, TsRestRequest, ValidateResponsesSymbol, initNestServer, nestControllerContract };
{
"name": "@ts-rest/nest",
"version": "3.16.0",
"version": "3.16.1",
"description": "Nest server integration for @ts-rest",

@@ -22,20 +22,14 @@ "license": "MIT",

},
"peerDependencies": {
"@nestjs/common": "^9.0.0",
"@nestjs/core": "^9.0.0",
"rxjs": "^7.1.0",
"zod": "^3.0.0",
"@ts-rest/core": "3.16.1"
},
"peerDependenciesMeta": {
"zod": {
"optional": true
},
"rxjs": {
"optional": true
}
},
"peerDependencies": {
"@nestjs/common": "9.x.x",
"rxjs": "7.x.x",
"zod": "3.x.x",
"@ts-rest/core": "3.16.0",
"@nestjs/core": "9.0.11"
},
"devDependencies": {
"express-serve-static-core": "^0.1.1"
},
"typedoc": {

@@ -49,3 +43,10 @@ "entryPoint": "./src/index.ts",

"types": "./src/index.d.ts",
"exports": {
".": {
"types": "./src/index.d.ts",
"import": "./index.js",
"require": "./index.cjs"
}
},
"dependencies": {}
}

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

export * from './lib/constants';
export * from './lib/json-query.decorator';

@@ -2,0 +3,0 @@ export * from './lib/ts-rest-nest';

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

export declare const JsonQuerySymbol: unique symbol;
import { JsonQuerySymbol } from './constants';
/**

@@ -3,0 +3,0 @@ * Enable JSON query mode for a controller or a single route

import { AppRoute, AppRouteMutation, PathParamsWithCustomValidators, Without, ZodInferOrType } from '@ts-rest/core';
export declare const tsRestAppRouteMetadataKey: unique symbol;
type BodyWithoutFileIfMultiPart<T extends AppRouteMutation> = T['contentType'] extends 'multipart/form-data' ? Without<ZodInferOrType<T['body']>, File> : ZodInferOrType<T['body']>;

@@ -4,0 +3,0 @@ export type TsRestRequestShape<TRoute extends AppRoute> = Without<{

import { AppRoute } from '@ts-rest/core';
export declare const ValidateResponsesSymbol: unique symbol;
export type TsRestOptions = {

@@ -7,2 +6,6 @@ jsonQuery?: boolean;

};
type TsRestType = {
(appRoute: AppRoute, options?: TsRestOptions): MethodDecorator;
(options: TsRestOptions): ClassDecorator;
};
/**

@@ -13,3 +16,3 @@ * As a class decorator, you can configure ts-rest options. As a method decorator, you can assign the route and also configure options

*/
export declare const TsRest: (appRouteOrOptions: AppRoute | TsRestOptions, options?: TsRestOptions) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
export declare const TsRest: TsRestType;
/**

@@ -19,1 +22,2 @@ * @deprecated Use TsRest decorator instead

export declare const Api: (appRoute: AppRoute) => MethodDecorator;
export {};

Sorry, the diff of this file is not supported yet

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