UNPKG

@ts-rest/core

Version:

RPC-like experience over a regular REST API, with type safe server implementations 🪄

584 lines (307 loc) • 12.2 kB
# @ts-rest/core ## 3.52.1 ### Patch Changes - 5005793: Fix trailing slashes not being preserved by the client ## 3.52.0 ### Minor Changes - 964f7c6: Support optional path params in the type system, and ensure multiple levels of query params are dealt with in nest ## 3.51.1 ## 3.51.0 ## 3.50.0 ### Minor Changes - 83f6675: Do not require `body` to be defined for DELETE endpoints in contracts ## 3.49.4 ### Patch Changes - 52a2b35: Fix broken types on TS 5.5 in Node environments without `lib.dom` ## 3.49.3 ### Patch Changes - 1f9fd4a: Fix client functions resolving as `any` in TS 5.5 when `dom` is not included in tsconfig libs - 740c538: Fix pnpm `Maximum call stack size exceeded` when installing @ts-rest/core ## 3.49.2 ## 3.49.1 ### Patch Changes - b31454f: All ts-rest libraries are now packaged in a better way to be compatible with as many bundlers as possible. The @tanstack/react-query `No QueryClient set` error should also occur much less now. ## 3.49.0 ### Minor Changes - 597cd92: You can now pass functions as values for your `baseHeaders` in your client. This makes it much easier now to fetch and set access tokens from your authentication libraries. ## 3.48.1 ### Patch Changes - f2835dd: Fix merging of `baseHeaders` and `headers` in contracts when they are defined using plain types ## 3.48.0 ## 3.47.0 ## 3.46.0 ### Minor Changes - d763d45: Export `RequestValidationErrorSchema` for default request validation error responses. ## 3.45.2 ## 3.45.1 ## 3.45.0 ## 3.44.1 ## 3.44.0 ### Minor Changes - 60f90fa: Allow entire contract to be passed to `TsRestResponseError` so common responses can be thrown easily - 45e5104: Add router-level metadata ## 3.43.0 ### Minor Changes - 308b966: `TsRestResponseError` can be thrown from any server package ## 3.42.0 ### Minor Changes - 7372bee: Allow arrays of files to be uploaded ## 3.41.2 ## 3.41.1 ## 3.41.0 ### Minor Changes - fc0adc6: Add contract option to define common responses ## 3.40.1 ### Patch Changes - afa5066: Fix incorrect type for URL `params` when using optional params without defining `pathParams` - afa5066: Fix broken types for `c.responses()` ## 3.40.0 ## 3.39.2 ### Patch Changes - dc554da: Fix `params` resolving as `any` when `pathParams` is missing and zod is not installed ## 3.39.1 ## 3.39.0 ### Minor Changes - 860e402: Add contract definition for an absent body and handle accordingly on the server - 487b2b6: Add `c.responses` utility ### Patch Changes - 8f4cfe6: Fix client not validating response ## 3.38.0 ### Patch Changes - 0b9f249: Fix ts-rest overwriting a supplied content-type header - 15d4926: Fix invalid `extraHeaders` type when no headers are defined in the contract ## 3.37.0 ### Minor Changes - 6a5280c: Allow fetch options to be set and client options to be overridden per request ### Patch Changes - 77db06b: Fix client not correctly encoding application/x-www-form-urlencoded body ## 3.36.0 ### Patch Changes - c7e05d8: Fix optional path parameters showing in types with a question mark if path params are not used ## 3.35.1 ## 3.35.0 ## 3.34.0 ## 3.33.1 ## 3.33.0 ## 3.32.0 ### Minor Changes - c4fb3f6: feat: `@ts-rest/core`: Add support for `x-www-form-urlencoded` content-type to core client fetcher ## 3.31.0 ## 3.30.5 ### Patch Changes - 9bd7402: - `@ts-rest/fastify` fix: fastify deprecated routerPath property (fixes [#392](https://github.com/ts-rest/ts-rest/issues/392)) - `@ts-rest/open-api` fix: Pass through contentType to OpenApi schema ([#414](https://github.com/ts-rest/ts-rest/pull/414)) - `@ts-rest/core` fix: Content-type text/html returns blob body (fixes [#418](https://github.com/ts-rest/ts-rest/issues/418)) - 8cc95c5: add changeset for latest changes ## 3.30.4 ### Patch Changes - 10dff96: - (all packages) fix: address `zod` [CVE](https://nvd.nist.gov/vuln/detail/CVE-2023-4316) with bump `@ts-rest` peer dependency `zod` to minimum `^3.22.3` - ref PR: https://github.com/colinhacks/zod/pull/2824 ## 3.30.3 ### Patch Changes - da48e62: fix: apply `validateResponseOnClient` recursively to nested App Routers in `@ts-rest/core` client ## 3.30.2 ### Patch Changes - bd0161b: fix: content-type application/json will not be automatically included in client request if the route is GET or body is undefined/null > if you need to send this header for whatever reason in a GET request/undefined body request, you can pass in runtime headers https://ts-rest.com/docs/core/#headers ## 3.30.1 ## 3.30.0 ### Minor Changes - c056132: feat: add support for client-side response validation against contract schemas for `@ts-rest/core` (see docs for usage) ## 3.29.0 ### Patch Changes - 5f7b236: - bump `@ts-rest/react-query` peer dependency `@tanstack/react-query` to `^4.0.0` (latest 4.33.0) - bump `@ts-rest/react-query` peer dependency `zod` to `^3.21.0` - upgrades NX to 16.7 for project root ## 3.28.0 ### Minor Changes - a7755ef: Adds support for fetch cache and support for Nextjs App Dir fetch (docs coming soon), see this PR for more info: https://github.com/ts-rest/ts-rest/pull/315 - 16501dd: tsRestFetchApi should be more flexible when determining application/json content type header ## 3.27.0 ### Patch Changes - 55411ad: Upgrade zod to 3.21.4 Upgrade @anatine/zod-openapi to 2.0.1 ## 3.26.4 ## 3.26.3 ## 3.26.2 ## 3.26.1 ## 3.26.0 ### Minor Changes - fcf877d: Allow defining non-json response types in the contract - 48b138d: Add new `SingleHandler` and `MultiHandler` API to `@ts-rest/nest` - 2763208: Added `pathPrefix` to contract options to allow recursive path prefixing. ## 3.25.1 ### Patch Changes - 81560d4: Fix ESM/CJS issues in package.json ## 3.25.0 ### Patch Changes - bf21a75: Internal refactor of types ## 3.24.0 ## 3.23.0 ### Minor Changes - 74bb4a8: Implement strict mode at a contract level. Strict mode ensures that only known responses are allowed by the type system. This applies both on the server and client side. Enable this with `strictStatusCodes: true` when defining a contract. If you would like to have the vanilla client throw an error when the response status is not known then you will need to use `throwOnUnknownStatus` when initializing the client. - df77869: Response headers are now exposed to clients. Users of custom API fetchers should start returning headers. - 74e41dc: Add 'metadata' property to routes ### BREAKING CHANGES FOR CUSTOM API FETCHERS If you are using a custom API fetcher, you need to start returning response headers from your fetcher as a Web API [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) interface. If you are using `fetch`, just simply return `response.headers`. If you are using `axios`, you can return `new Headers(response.headers.toJSON())` ## 3.22.0 ### Minor Changes - d61b127: Implement tanstack query cancellation - 1c53ac9: Add `throwOnUnknownStatus` to `initClient` configuration. When set to `true` the client will throw errors for all status codes returned by the server which are not defined in the contract. ## 3.21.2 ## 3.21.1 ### Patch Changes - 1b4ef1e: Fix incorrect detection of zod objects with nested ZodEffects and fix regression with validation ## 3.21.0 ### Minor Changes - b2bf874: Added React Query QueryClient function helpers ### Patch Changes - 8729bb5: Fix node16 esm module resolution - b2bf874: Add rawQuery parameter to custom API fetcher parameters ## 3.20.0 ### Minor Changes - c1c1d31: Add type-safe header definitions to contracts ## 3.19.5 ### Patch Changes - 574dbab: Improved Zod object detection in OpenAPI ## 3.19.4 ### Patch Changes - 4b6e9f6: Filter out undefined values from json queries ## 3.19.3 ## 3.19.2 ### Patch Changes - 96ab6bd: Revert ESM fix, due to failed compilation on Next.js ## 3.19.1 ### Patch Changes - 5e1c6a2: feat: add rawBody and contentType to Custom Client API arguments - ecac73d: Fix compatibility with Node.js TS native ESM code ## 3.19.0 ### Minor Changes - 2bb39f8: Added inference type helpers ## 3.18.1 ### Patch Changes - 9bd4c77: Fixes broken typing where sometimes the client's request args were incorrectly typed as optional ## 3.18.0 ### Minor Changes - 3fa43d9: Export the default fetch API as `tsRestFetchApi` from the core library, enables you to easy modify the fetcher - 3fa43d9: Add the ability to remove a baseHeader on a per-request basis by setting the headers value to undefined - 3fa43d9: Allow custom API to allow extra args, and type them in the individual api calls - 3fa43d9: Prettify the arguments of API calls, making it much clearer what data should be passed to ts-rest api calls (thanks @mattpocockuk!) ## 3.17.0 ## 3.16.2 ### Patch Changes - 3fa8679: Do not throw error for missing content-type header ## 3.16.1 ### Patch Changes - 832b645: fix(core): wrong "content-type" detection ## 3.16.0 ### Minor Changes - e490cf3: - Added server-side response validation feature - Deprecated `@Api` decorator, use `@TsRest` instead ## 3.15.0 ### Patch Changes - 0f1edf9: Rename some Nest functions and types, and deprecate old names - Fix Nest deprecation warning when passing Zod error to HttpException (#122) - Some internal helper types (`NestControllerShapeFromAppRouter` and `NestAppRouteShape`) that were previously exported are now kept internal. You can use `NestControllerInterface` and `NestRequestShapes` instead. - 3f65909: Drop usage of ES6 Proxy for clients (fixes IE11 support) ## 3.14.0 ### Minor Changes - 13ca71b: Enable nested routers without declaring new constants ## 3.13.1 ### Patch Changes - d778e60: Rebuilt without code comments in the compiled JS ## 3.13.0 ## 3.12.1 ### Patch Changes - e0164f6: Publish README ## 3.12.0 ### Minor Changes - a53a384: Add response shape shape helper to make allow you to extract the response from a Contract route - 5a13803: Allow typed query parameters by encoding them as JSON strings (disabled by default) ### Patch Changes - 36e5bd4: Fix typing for query ## 3.11.2 ## 3.11.1 ## 3.11.0 ### Minor Changes - 57acbad: Added the ability to omit the second parameter if there no required query parameters ## 3.10.2 ## 3.10.1 ## 3.10.0 ### Minor Changes - 046e498: Use Nest.js req.query and req.params instead of parsing from URL ### Patch Changes - 35c64db: Move next lib utils out of @ts-rest/core to reduce bundle size ## 3.9.0 ## 3.8.0 ### Minor Changes - 59b8d29: Add credentials option for fetch client ### Patch Changes - 1b3faaf: Use z.input for body and query types for clients ## 3.7.0 ### Minor Changes - d4d9be5: Add support for pathParams Zod verification - 8a19717: Add pathParams transformations ## 3.6.1 ## 3.6.0 ### Minor Changes - 6753c69: Build ESM and CommonJS for improved compatibility ## 3.5.0 ### Minor Changes - 068822d: Add support for multipart/form-data ## 3.4.2 ## 3.4.1 ## 3.4.0 ## 3.3.0 ## 3.2.2 ## 3.2.1 ## 3.2.0 ## 3.1.1 ### Patch Changes - d3a74fe: Remove unnecessary recursion ## 3.1.0 ## 3.0.0 ### Major Changes - 895112a: Migrate paths to a string rather than function ## 2.1.0 ### Minor Changes - 75f157a: Add Zod validation to @ts-rest/next ## 2.0.1 ### Patch Changes - 119aed6: Bump versions to 2.0.1 ## 2.0.0 ### Major Changes - 4792b26: Change contract to support multiple responses, for different statuses - c88fb99: Rename data to body to be more HTTP spec compliant ### Patch Changes - 4792b26: Add error handling support to express ## 1.3.0 ### Minor Changes - a5d7e97: Add basic open-api support ### Patch Changes - 077d57b: Update client to have zod response type - 5f87b1a: Add OpenAPI options for generateOpenApi ## 1.2.0 ### Minor Changes - 987fd07: Add query and mutation support to react-query, instead of requring useMutation and useQuery ## 1.1.0 ### Minor Changes - 72dd65d: Extract express logic to @ts-rest/express ## 1.0.4 ### Patch Changes - 3adb9c8: Change build path ## 1.0.3 ### Patch Changes - 0d706a3: Sync package versions ## 1.0.2 ### Patch Changes - 1fe80ea: sync versions ## 1.0.1 ### Patch Changes - 8d908ee: Update package scope ## 1.0.0 ### Minor Changes - 86a5cb7: add react-query and nest integration