From e9dc2197575c0e9a7d53a3818ea68cc3708fa9a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 20:21:07 +0000 Subject: [PATCH 1/9] fix(deps): update dependency @shopify/flash-list to v1.7.1 --- apps/expo/package.json | 2 +- pnpm-lock.yaml | 33 ++++++++++++++------------------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index b6aed1190..bc9994372 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -17,7 +17,7 @@ "dependencies": { "@bacons/text-decoder": "^0.0.0", "@expo/metro-config": "^0.18.11", - "@shopify/flash-list": "1.6.4", + "@shopify/flash-list": "1.7.1", "@tanstack/react-query": "catalog:", "@trpc/client": "catalog:", "@trpc/react-query": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f3c50799..469e81d35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,8 +113,8 @@ importers: specifier: ^0.18.11 version: 0.18.11 '@shopify/flash-list': - specifier: 1.6.4 - version: 1.6.4(@babel/runtime@7.25.0)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) + specifier: 1.7.1 + version: 1.7.1(@babel/runtime@7.25.0)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) '@tanstack/react-query': specifier: 'catalog:' version: 5.51.23(react@18.3.1) @@ -553,7 +553,7 @@ importers: version: 7.35.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-react-hooks: specifier: rc - version: 5.1.0-rc-4f604941-20240830(eslint@9.9.0(jiti@1.21.6)) + version: 5.1.0-rc-e740d4b1-20240919(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-turbo: specifier: ^2.1.1 version: 2.1.1(eslint@9.9.0(jiti@1.21.6)) @@ -2903,8 +2903,8 @@ packages: '@segment/loosely-validate-event@2.0.0': resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} - '@shopify/flash-list@1.6.4': - resolution: {integrity: sha512-M2momcnY7swsvmpHIFDVbdOaFw4aQocJXA/lFP0Gpz+alQjFylqVKvszxl4atYO2SNbjxlb2L6hEP9WEcAknGQ==} + '@shopify/flash-list@1.7.1': + resolution: {integrity: sha512-sUYl7h8ydJutufA26E42Hj7cLvaBTpkMIyNJiFrxUspkcANb6jnFiLt9rEwAuDjvGk/C0lHau+WyT6ZOxqVPwg==} peerDependencies: '@babel/runtime': '*' react: '*' @@ -4380,8 +4380,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - eslint-plugin-react-hooks@5.1.0-rc-4f604941-20240830: - resolution: {integrity: sha512-7IHBSzlQL498kfaPzQWV1t8dR/v3QTbXtG2x2bVjl5YOLpmf+I045NU78HMX7wAOaepWjsOwF591Q/O+nr3CJQ==} + eslint-plugin-react-hooks@5.1.0-rc-e740d4b1-20240919: + resolution: {integrity: sha512-+PFjivirj4bkEC+icGsD1HAs7Tfs2cG9M2hDQL2tlNwCRE2NY65TeqXRBd1wrGPMXjwhcotoeM/NZDfzYYsdFA==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -6850,8 +6850,8 @@ packages: resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} engines: {node: '>= 4'} - recyclerlistview@4.2.0: - resolution: {integrity: sha512-uuBCi0c+ggqHKwrzPX4Z/mJOzsBbjZEAwGGmlwpD/sD7raXixdAbdJ6BTcAmuWG50Cg4ru9p12M94Njwhr/27A==} + recyclerlistview@4.2.1: + resolution: {integrity: sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==} peerDependencies: react: '>= 15.2.1' react-native: '>= 0.30.0' @@ -7562,9 +7562,6 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -10789,13 +10786,13 @@ snapshots: component-type: 1.2.2 join-component: 1.1.0 - '@shopify/flash-list@1.6.4(@babel/runtime@7.25.0)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)': + '@shopify/flash-list@1.7.1(@babel/runtime@7.25.0)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 react: 18.3.1 react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1) - recyclerlistview: 4.2.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) - tslib: 2.4.0 + recyclerlistview: 4.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) + tslib: 2.6.3 '@sideway/address@4.1.5': dependencies: @@ -12450,7 +12447,7 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-react-hooks@5.1.0-rc-4f604941-20240830(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-react-hooks@5.1.0-rc-e740d4b1-20240919(eslint@9.9.0(jiti@1.21.6)): dependencies: eslint: 9.9.0(jiti@1.21.6) @@ -15334,7 +15331,7 @@ snapshots: source-map: 0.6.1 tslib: 2.6.3 - recyclerlistview@4.2.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1): + recyclerlistview@4.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1): dependencies: lodash.debounce: 4.0.8 prop-types: 15.8.1 @@ -16158,8 +16155,6 @@ snapshots: tslib@1.14.1: {} - tslib@2.4.0: {} - tslib@2.6.3: {} turbo-darwin-64@2.1.1: From ce79802e681c0eed0606ec7fec5fd65f244fca1e Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:05:04 +0200 Subject: [PATCH 2/9] feat: move transformer to a separate module and expose as `@acme/api/transformer` --- packages/api/package.json | 4 ++++ packages/api/src/transformer.ts | 22 ++++++++++++++++++++++ packages/api/src/trpc.ts | 5 +++-- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 packages/api/src/transformer.ts diff --git a/packages/api/package.json b/packages/api/package.json index d97f7325b..c645d07fd 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -7,6 +7,10 @@ ".": { "types": "./dist/index.d.ts", "default": "./src/index.ts" + }, + "./transformer": { + "types": "./dist/transformer.d.ts", + "default": "./src/transformer.ts" } }, "license": "MIT", diff --git a/packages/api/src/transformer.ts b/packages/api/src/transformer.ts new file mode 100644 index 000000000..ef845d881 --- /dev/null +++ b/packages/api/src/transformer.ts @@ -0,0 +1,22 @@ +import type { TRPCCombinedDataTransformer } from "@trpc/server"; +import SuperJSON from "superjson"; + +/** + * tRPC transformer, used to serialize/deserialize data between client and server. + * This export is used internally in `@acme/api` and in both `apps/nextjs` and `apps/expo`. + * + * ! IMPORTANT: changing this is a BREAKING CHANGE ! + * ? Even though this helps swapping transformers, bear in mind that distributed Expo apps + * ? will have the previous transformer bundled in their device, which will cause a mismatch + * ? in how the data is sent and received (basically, all API requests will fail). + */ +export const transformer: TRPCCombinedDataTransformer = { + input: { + serialize: SuperJSON.serialize, + deserialize: SuperJSON.deserialize, + }, + output: { + serialize: SuperJSON.serialize, + deserialize: SuperJSON.deserialize, + }, +}; diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index cc596fcc4..6d74acd7e 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -7,13 +7,14 @@ * The pieces you will need to use are documented accordingly near the end */ import { initTRPC, TRPCError } from "@trpc/server"; -import superjson from "superjson"; import { ZodError } from "zod"; import type { Session } from "@acme/auth"; import { auth, validateToken } from "@acme/auth"; import { db } from "@acme/db/client"; +import { transformer } from "./transformer"; + /** * Isomorphic Session getter for API requests * - Expo requests will have a session token in the Authorization header @@ -61,7 +62,7 @@ export const createTRPCContext = async (opts: { * transformer */ const t = initTRPC.context().create({ - transformer: superjson, + transformer, errorFormatter: ({ shape, error }) => ({ ...shape, data: { From 049e67c4b25015450fdf6891a4a5c7121d8e2af9 Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:05:28 +0200 Subject: [PATCH 3/9] refactor: use `@acme/api/transformer` in nextjs app --- apps/nextjs/src/trpc/query-client.ts | 7 ++++--- apps/nextjs/src/trpc/react.tsx | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/nextjs/src/trpc/query-client.ts b/apps/nextjs/src/trpc/query-client.ts index bda64397c..89a87d9f2 100644 --- a/apps/nextjs/src/trpc/query-client.ts +++ b/apps/nextjs/src/trpc/query-client.ts @@ -2,7 +2,8 @@ import { defaultShouldDehydrateQuery, QueryClient, } from "@tanstack/react-query"; -import SuperJSON from "superjson"; + +import { transformer } from "@acme/api/transformer"; export const createQueryClient = () => new QueryClient({ @@ -13,13 +14,13 @@ export const createQueryClient = () => staleTime: 30 * 1000, }, dehydrate: { - serializeData: SuperJSON.serialize, + serializeData: transformer.output.serialize, shouldDehydrateQuery: (query) => defaultShouldDehydrateQuery(query) || query.state.status === "pending", }, hydrate: { - deserializeData: SuperJSON.deserialize, + deserializeData: transformer.output.deserialize, }, }, }); diff --git a/apps/nextjs/src/trpc/react.tsx b/apps/nextjs/src/trpc/react.tsx index b3a6d339f..62ea9e69f 100644 --- a/apps/nextjs/src/trpc/react.tsx +++ b/apps/nextjs/src/trpc/react.tsx @@ -5,9 +5,9 @@ import { useState } from "react"; import { QueryClientProvider } from "@tanstack/react-query"; import { loggerLink, unstable_httpBatchStreamLink } from "@trpc/client"; import { createTRPCReact } from "@trpc/react-query"; -import SuperJSON from "superjson"; import type { AppRouter } from "@acme/api"; +import { transformer } from "@acme/api/transformer"; import { env } from "~/env"; import { createQueryClient } from "./query-client"; @@ -37,7 +37,7 @@ export function TRPCReactProvider(props: { children: React.ReactNode }) { (op.direction === "down" && op.result instanceof Error), }), unstable_httpBatchStreamLink({ - transformer: SuperJSON, + transformer, url: getBaseUrl() + "/api/trpc", headers() { const headers = new Headers(); From 3ee7a40df28eeadcf412587f43ff0b7c09e4b6e7 Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:05:56 +0200 Subject: [PATCH 4/9] chore: move `@acme/api` from dev to direct dependency --- apps/expo/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index bc9994372..cc5ce8e47 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -15,6 +15,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@acme/api": "workspace:*", "@bacons/text-decoder": "^0.0.0", "@expo/metro-config": "^0.18.11", "@shopify/flash-list": "1.7.1", @@ -43,7 +44,6 @@ "superjson": "2.2.1" }, "devDependencies": { - "@acme/api": "workspace:*", "@acme/eslint-config": "workspace:*", "@acme/prettier-config": "workspace:*", "@acme/tailwind-config": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 469e81d35..673bac427 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -106,6 +106,9 @@ importers: apps/expo: dependencies: + '@acme/api': + specifier: workspace:* + version: link:../../packages/api '@bacons/text-decoder': specifier: ^0.0.0 version: 0.0.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1)) @@ -185,9 +188,6 @@ importers: specifier: 2.2.1 version: 2.2.1 devDependencies: - '@acme/api': - specifier: workspace:* - version: link:../../packages/api '@acme/eslint-config': specifier: workspace:* version: link:../../tooling/eslint @@ -553,7 +553,7 @@ importers: version: 7.35.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-react-hooks: specifier: rc - version: 5.1.0-rc-e740d4b1-20240919(eslint@9.9.0(jiti@1.21.6)) + version: 5.1.0-rc-e4953922-20240919(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-turbo: specifier: ^2.1.1 version: 2.1.1(eslint@9.9.0(jiti@1.21.6)) @@ -4380,8 +4380,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - eslint-plugin-react-hooks@5.1.0-rc-e740d4b1-20240919: - resolution: {integrity: sha512-+PFjivirj4bkEC+icGsD1HAs7Tfs2cG9M2hDQL2tlNwCRE2NY65TeqXRBd1wrGPMXjwhcotoeM/NZDfzYYsdFA==} + eslint-plugin-react-hooks@5.1.0-rc-e4953922-20240919: + resolution: {integrity: sha512-W/CJVTs49Wn34P3RTMGb5jx7JW8ftUIUzNqYDsWqO/tz26DU3fXrou44jxAvu1HR5VH9DutXgxq7DCgDM2MBGQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -12447,7 +12447,7 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-react-hooks@5.1.0-rc-e740d4b1-20240919(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-react-hooks@5.1.0-rc-e4953922-20240919(eslint@9.9.0(jiti@1.21.6)): dependencies: eslint: 9.9.0(jiti@1.21.6) From 525297ecd75a1a46a29cef09a13e7bd1db75341a Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:06:22 +0200 Subject: [PATCH 5/9] refactor: use `@acme/api/transformer` in expo app --- apps/expo/src/utils/api.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/expo/src/utils/api.tsx b/apps/expo/src/utils/api.tsx index 157241a5d..a94a55cab 100644 --- a/apps/expo/src/utils/api.tsx +++ b/apps/expo/src/utils/api.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { httpBatchLink, loggerLink } from "@trpc/client"; import { createTRPCReact } from "@trpc/react-query"; -import superjson from "superjson"; import type { AppRouter } from "@acme/api"; +import { transformer } from "@acme/api/transformer"; import { getBaseUrl } from "./base-url"; import { getToken } from "./session-store"; @@ -31,7 +31,7 @@ export function TRPCProvider(props: { children: React.ReactNode }) { colorMode: "ansi", }), httpBatchLink({ - transformer: superjson, + transformer, url: `${getBaseUrl()}/api/trpc`, headers() { const headers = new Map(); From 4077f77f761e10b814f3eb3ccb7f5e5b1abbdd6a Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:06:48 +0200 Subject: [PATCH 6/9] build: add `@acme/api/transformer` in tsconfig so it can be actually imported --- apps/expo/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/expo/tsconfig.json b/apps/expo/tsconfig.json index e1f8740bb..a60f945f6 100644 --- a/apps/expo/tsconfig.json +++ b/apps/expo/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "~/*": ["./src/*"] + "~/*": ["./src/*"], + "@acme/api/transformer": ["../../packages/api/src/transformer.ts"] }, "jsx": "react-native", "types": ["nativewind/types"], From 499d95702d74664d615882569a7f70764d5f221e Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:10:15 +0200 Subject: [PATCH 7/9] chore: add eslint rule to prevent importing values from modules other than `@acme/api/transformer` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Example of imports ```ts import type { AppRouter } from "@acme/api"; // <- correct: imports type import type { hello as _1 } from "@acme/api/hello"; // <- correct: imports type import { createCaller as _2 } from "@acme/api"; // <- incorrec: imports value import { transformer } from "@acme/api/transformer"; // <- correct: imports value from allowed module import { world as _3 } from "@acme/api/world"; // <- incorrect: imports value from restricted module ``` Results of running `pnpm lint`: ```sh [...]/create-t3-turbo/apps/expo/src/utils/api.tsx 8:1 error '@acme/api' import is restricted from being used. Only type imports from '@acme/api' are allowed @typescript-eslint/no-restricted-imports 10:1 error '@acme/api/world' import is restricted from being used by a pattern. Only certain modules from '@acme/api' can be imported @typescript-eslint/no-restricted-imports ✖ 2 problems (2 errors, 0 warnings) ``` --- apps/expo/eslint.config.mjs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/apps/expo/eslint.config.mjs b/apps/expo/eslint.config.mjs index e264359d3..ae772827a 100644 --- a/apps/expo/eslint.config.mjs +++ b/apps/expo/eslint.config.mjs @@ -8,4 +8,27 @@ export default [ }, ...baseConfig, ...reactConfig, + { + rules: { + "@typescript-eslint/no-restricted-imports": [ + "error", + { + paths: [ + { + name: "@acme/api", + message: "Only type imports from '@acme/api' are allowed", + allowTypeImports: true, + }, + ], + patterns: [ + { + group: ["@acme/api/*", "!@acme/api/transformer"], + message: "Only certain modules from '@acme/api' can be imported", + allowTypeImports: true, + }, + ], + }, + ], + }, + }, ]; From 960f354128adc75646a681b655729a2ac7f58f6d Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Sat, 21 Sep 2024 12:16:25 +0200 Subject: [PATCH 8/9] chore: remove `sperjson` as direct dependency from apps --- apps/expo/package.json | 3 +- apps/nextjs/package.json | 1 - pnpm-lock.yaml | 85 ++++++++++++++++++++++++++++++++-------- 3 files changed, 69 insertions(+), 20 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index cc5ce8e47..a95f42895 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -40,8 +40,7 @@ "react-native-gesture-handler": "~2.16.2", "react-native-reanimated": "~3.10.1", "react-native-safe-area-context": "~4.10.8", - "react-native-screens": "~3.31.1", - "superjson": "2.2.1" + "react-native-screens": "~3.31.1" }, "devDependencies": { "@acme/eslint-config": "workspace:*", diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 556a090c3..ea7b36935 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -28,7 +28,6 @@ "next": "^14.2.5", "react": "catalog:react18", "react-dom": "catalog:react18", - "superjson": "2.2.1", "zod": "catalog:" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 673bac427..b33ed99c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,7 +159,7 @@ importers: version: 13.0.3(expo@51.0.27(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(bufferutil@4.0.8)) nativewind: specifier: ~4.0.36 - version: 4.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))) + version: 4.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))) react: specifier: catalog:react18 version: 18.3.1 @@ -171,7 +171,7 @@ importers: version: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1) react-native-css-interop: specifier: ~0.0.34 - version: 0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))) + version: 0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))) react-native-gesture-handler: specifier: ~2.16.2 version: 2.16.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) @@ -184,9 +184,6 @@ importers: react-native-screens: specifier: ~3.31.1 version: 3.31.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) - superjson: - specifier: 2.2.1 - version: 2.2.1 devDependencies: '@acme/eslint-config': specifier: workspace:* @@ -223,7 +220,7 @@ importers: version: 3.3.3 tailwindcss: specifier: 'catalog:' - version: 3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4)) + version: 3.4.10(ts-node@10.9.2(typescript@5.5.4)) typescript: specifier: 'catalog:' version: 5.5.4 @@ -272,9 +269,6 @@ importers: react-dom: specifier: catalog:react18 version: 18.3.1(react@18.3.1) - superjson: - specifier: 2.2.1 - version: 2.2.1 zod: specifier: 'catalog:' version: 3.23.8 @@ -9468,7 +9462,7 @@ snapshots: text-table: 0.2.0 url-join: 4.0.0 wrap-ansi: 7.0.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + ws: 8.18.0(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - encoding @@ -14337,10 +14331,10 @@ snapshots: nanoid@3.3.7: {} - nativewind@4.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))): + nativewind@4.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))): dependencies: - react-native-css-interop: 0.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))) - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4)) + react-native-css-interop: 0.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))) + tailwindcss: 3.4.10(ts-node@10.9.2(typescript@5.5.4)) transitivePeerDependencies: - '@babel/core' - react @@ -14924,6 +14918,14 @@ snapshots: postcss: 8.4.41 ts-node: 10.9.2(@types/node@22.3.0)(typescript@5.5.4) + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(typescript@5.5.4)): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.41 + ts-node: 10.9.2(typescript@5.5.4) + postcss-nested@6.2.0(postcss@8.4.41): dependencies: postcss: 8.4.41 @@ -15117,7 +15119,7 @@ snapshots: react-is@18.3.1: {} - react-native-css-interop@0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))): + react-native-css-interop@0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))): dependencies: '@babel/helper-module-imports': 7.24.7 '@babel/traverse': 7.25.3 @@ -15127,14 +15129,14 @@ snapshots: react: 18.3.1 react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1) react-native-reanimated: 3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4)) + tailwindcss: 3.4.10(ts-node@10.9.2(typescript@5.5.4)) optionalDependencies: react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/core' - supports-color - react-native-css-interop@0.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4))): + react-native-css-interop@0.0.36(@babel/core@7.25.2)(react-native-reanimated@3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4))): dependencies: '@babel/helper-module-imports': 7.24.7 '@babel/traverse': 7.25.3 @@ -15144,7 +15146,7 @@ snapshots: react: 18.3.1 react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1) react-native-reanimated: 3.10.1(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.5.4)) + tailwindcss: 3.4.10(ts-node@10.9.2(typescript@5.5.4)) optionalDependencies: react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(bufferutil@4.0.8)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: @@ -15995,6 +15997,33 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@3.4.10(ts-node@10.9.2(typescript@5.5.4)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.41 + postcss-import: 15.1.0(postcss@8.4.41) + postcss-js: 4.0.1(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(typescript@5.5.4)) + postcss-nested: 6.2.0(postcss@8.4.41) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tar-stream@3.1.7: dependencies: b4a: 1.6.6 @@ -16144,6 +16173,24 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-object-utils@0.0.5: {} tsconfig-paths@3.15.0: @@ -16605,6 +16652,10 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 + ws@8.18.0(bufferutil@4.0.8): + optionalDependencies: + bufferutil: 4.0.8 + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): optionalDependencies: bufferutil: 4.0.8 From 78b07c6dba2bb25e09652a3f400a8f2d70d143a7 Mon Sep 17 00:00:00 2001 From: Oscar Chic Date: Mon, 7 Oct 2024 15:00:20 +0200 Subject: [PATCH 9/9] doc: add link to official tRPC docs --- packages/api/src/transformer.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/api/src/transformer.ts b/packages/api/src/transformer.ts index ef845d881..a380f6dc7 100644 --- a/packages/api/src/transformer.ts +++ b/packages/api/src/transformer.ts @@ -9,6 +9,9 @@ import SuperJSON from "superjson"; * ? Even though this helps swapping transformers, bear in mind that distributed Expo apps * ? will have the previous transformer bundled in their device, which will cause a mismatch * ? in how the data is sent and received (basically, all API requests will fail). + * + * For more information about transformers, check the official tRPC documentation. + * @see https://trpc.io/docs/server/data-transformers */ export const transformer: TRPCCombinedDataTransformer = { input: {