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.14.0 to 3.15.0

src/lib/ts-rest-request.decorator.d.ts

63

index.js

@@ -5,2 +5,9 @@ import { getRouteResponses, parseJsonQueryObject, checkZodSchema } from '@ts-rest/core';

const JsonQuerySymbol = Symbol('JsonQuery');
const JsonQuery = (jsonQuery = true) => {
return (target) => {
Reflect.defineMetadata(JsonQuerySymbol, jsonQuery, target);
};
};
const initNestServer = (router) => {

@@ -14,2 +21,5 @@ return {

};
const nestControllerContract = (router) => {
return router;
};

@@ -38,11 +48,5 @@ /******************************************************************************

const JsonQuerySymbol = Symbol('JsonQuery');
const JsonQuery = (jsonQuery = true) => {
return (target) => {
Reflect.defineMetadata(JsonQuerySymbol, jsonQuery, target);
};
};
const tsRestAppRouteMetadataKey = Symbol('ts-rest-app-route');
const ApiDecorator = createParamDecorator((_, ctx) => {
const TsRestRequest = createParamDecorator((_, ctx) => {
var _a;
const req = ctx.switchToHttp().getRequest();

@@ -53,4 +57,3 @@ const appRoute = Reflect.getMetadata(tsRestAppRouteMetadataKey, ctx.getHandler());

}
const isJsonQuery = !!(Reflect.getMetadata(JsonQuerySymbol, ctx.getHandler()) ||
Reflect.getMetadata(JsonQuerySymbol, ctx.getClass()));
const isJsonQuery = !!((_a = Reflect.getMetadata(JsonQuerySymbol, ctx.getHandler())) !== null && _a !== void 0 ? _a : Reflect.getMetadata(JsonQuerySymbol, ctx.getClass()));
const query = isJsonQuery

@@ -79,2 +82,21 @@ ? parseJsonQueryObject(req.query)

});
const ApiDecorator = TsRestRequest;
let TsRestInterceptor = class TsRestInterceptor {
intercept(context, next) {
const res = context.switchToHttp().getResponse();
return next.handle().pipe(map((value) => {
if (typeof value === 'object' &&
typeof value.status === 'number' &&
value.body !== undefined) {
res.status(value.status);
return value.body;
}
return value;
}));
}
};
TsRestInterceptor = __decorate([
Injectable()
], TsRestInterceptor);
const getMethodDecorator = (appRoute) => {

@@ -94,24 +116,7 @@ switch (appRoute.method) {

};
let ApiRouteInterceptor = class ApiRouteInterceptor {
intercept(context, next) {
const res = context.switchToHttp().getResponse();
return next.handle().pipe(map((value) => {
if (typeof value === 'object' &&
typeof value.status === 'number' &&
value.body !== undefined) {
res.status(value.status);
return value.body;
}
return value;
}));
}
};
ApiRouteInterceptor = __decorate([
Injectable()
], ApiRouteInterceptor);
const Api = (appRoute) => {
const methodDecorator = getMethodDecorator(appRoute);
return applyDecorators(SetMetadata(tsRestAppRouteMetadataKey, appRoute), methodDecorator, UseInterceptors(ApiRouteInterceptor));
return applyDecorators(SetMetadata(tsRestAppRouteMetadataKey, appRoute), methodDecorator, UseInterceptors(TsRestInterceptor));
};
export { Api, ApiDecorator, ApiRouteInterceptor, JsonQuery, JsonQuerySymbol, initNestServer };
export { Api, ApiDecorator, JsonQuery, JsonQuerySymbol, TsRestInterceptor, TsRestRequest, initNestServer, nestControllerContract, tsRestAppRouteMetadataKey };
{
"name": "@ts-rest/nest",
"version": "3.14.0",
"version": "3.15.0",
"description": "Nest server integration for @ts-rest",

@@ -34,3 +34,3 @@ "license": "MIT",

"zod": "3.x.x",
"@ts-rest/core": "3.14.0"
"@ts-rest/core": "3.15.0"
},

@@ -37,0 +37,0 @@ "devDependencies": {

@@ -7,16 +7,21 @@ # ts-rest

<p align="center">RPC-like client and server helpers for a magical end to end typed experience</p>
<p align="center">
<a href="https://www.npmjs.com/package/@ts-rest/core">
<img src="https://img.shields.io/npm/v/@ts-rest/core.svg" alt="langue typescript"/>
</a>
<a href="https://www.npmjs.com/package/@ts-rest/core"/>
<img alt="npm" src="https://img.shields.io/npm/dw/@ts-rest/core"/>
<a href="https://github.com/ts-rest/ts-rest/blob/main/LICENSE"></a>
<img alt="GitHub" src="https://img.shields.io/github/license/ts-rest/ts-rest"/>
<img alt="GitHub Workflow Status" src="https://img.shields.io/bundlephobia/minzip/@ts-rest/core?label=%40ts-rest%2Fcore"/>
<img alt="GitHub Workflow Status" src="https://img.shields.io/discord/1055855205960392724"/>
</p>
<p align="center">RPC-like client and server helpers for a magical end to end typed experience</p>
<p align="center">
<a href="https://www.npmjs.com/package/@ts-rest/core">
<img src="https://img.shields.io/npm/v/@ts-rest/core.svg" alt="langue typescript"/>
</a>
<img alt="Github Workflow Status" src="https://img.shields.io/github/actions/workflow/status/ts-rest/ts-rest/release.yml?branch=main"/>
<a href="https://www.npmjs.com/package/@ts-rest/core">
<img alt="npm" src="https://img.shields.io/npm/dw/@ts-rest/core"/>
</a>
<a href="https://github.com/ts-rest/ts-rest/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/ts-rest/ts-rest"/>
</a>
<img alt="Bundle Size" src="https://img.shields.io/bundlephobia/minzip/@ts-rest/core?label=%40ts-rest%2Fcore"/>
<a href="https://discord.com/invite/2Megk85k5a">
<img alt="Discord" src="https://img.shields.io/discord/1055855205960392724"/>
</a>
</p>
# Introduction

@@ -87,1 +92,15 @@

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
<div style={{paddingTop: "25px"}}>
<a
href="https://vercel.com/?utm_source=ts-rest&utm_campaign=oss"
target="_blank"
rel="noreferrer"
>
<img
src="https://ts-rest.com/img/powered-by-vercel.svg"
alt="Powered by Vercel"
height="40"
/>
</a>
</div>

@@ -0,3 +1,4 @@

export * from './lib/json-query.decorator';
export * from './lib/ts-rest-nest';
export * from './lib/api.decorator';
export * from './lib/json-query.decorator';
export * from './lib/ts-rest.interceptor';
export * from './lib/ts-rest-request.decorator';
export declare const JsonQuerySymbol: unique symbol;
/**
* Enable JSON query mode for a controller or a single route
*/
export declare const JsonQuery: (jsonQuery?: boolean) => ClassDecorator & MethodDecorator;

@@ -1,18 +0,35 @@

import { AppRoute, AppRouter, ApiRouteResponse, Without } from '@ts-rest/core';
import { ApiDecoratorShape } from './api.decorator';
import { AppRoute, AppRouter, ApiRouteResponse, Without, ApiResponseForRoute } from '@ts-rest/core';
import { TsRestRequestShape } from './ts-rest-request.decorator';
type AppRouterMethodShape<T extends AppRoute> = (...args: any[]) => Promise<ApiRouteResponse<T['responses']>>;
type AppRouterControllerShape<T extends AppRouter> = {
[K in keyof T]: T[K] extends AppRouter ? undefined : T[K] extends AppRoute ? AppRouterMethodShape<T[K]> : never;
};
type AppRouteShape<T extends AppRouter> = {
[K in keyof T]: T[K] extends AppRouter ? AppRouteShape<T[K]> : T[K] extends AppRoute ? ApiDecoratorShape<T[K]> : never;
};
export type NestControllerShapeFromAppRouter<T extends AppRouter> = Without<AppRouterControllerShape<T>, AppRouter>;
export type NestAppRouteShape<T extends AppRouter> = AppRouteShape<T>;
type AppRouterControllerShape<T extends AppRouter> = Without<{
[K in keyof T]: T[K] extends AppRoute ? AppRouterMethodShape<T[K]> : never;
}, never>;
type AppRouterRequestShapes<T extends AppRouter> = Without<{
[K in keyof T]: T[K] extends AppRoute ? TsRestRequestShape<T[K]> : never;
}, never>;
type AppRouterResponseShapes<T extends AppRouter> = Without<{
[K in keyof T]: T[K] extends AppRoute ? ApiResponseForRoute<T[K]> : never;
}, never>;
type NestControllerShapeFromAppRouter<T extends AppRouter> = Without<AppRouterControllerShape<T>, AppRouter>;
type NestAppRouteShape<T extends AppRouter> = AppRouterRequestShapes<T>;
/**
* @deprecated Use `nestControllerContract`, `NestControllerInterface`, `NestRequestShapes`, and `NestResponseShapes` instead
* @see {@link https://ts-rest.com/docs/nest|ts-rest docs} for more info.
*/
export declare const initNestServer: <T extends AppRouter>(router: T) => {
controllerShape: NestControllerShapeFromAppRouter<T>;
routeShapes: AppRouteShape<T>;
responseShapes: { [K in keyof T]: T[K] extends AppRoute ? import("@ts-rest/core").ApiResponseForRoute<T[K]> : "not a route"; };
routeShapes: NestAppRouteShape<T>;
responseShapes: { [K in keyof T]: T[K] extends AppRoute ? ApiResponseForRoute<T[K]> : "not a route"; };
route: T;
};
export type NestControllerContract<T extends AppRouter> = Pick<T, {
[K in keyof T]-?: T[K] extends AppRoute ? K : never;
}[keyof T]>;
export type NestControllerInterface<T extends AppRouter> = AppRouterControllerShape<T>;
export type NestRequestShapes<T extends AppRouter> = NestAppRouteShape<T>;
export type NestResponseShapes<T extends AppRouter> = AppRouterResponseShapes<T>;
/**
* Returns the contract containing only non-nested routes required by a NestJS controller
*/
export declare const nestControllerContract: <T extends AppRouter>(router: T) => NestControllerContract<T>;
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