@trpc/server 11.4.1 → 11.4.2-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/adapters/aws-lambda/index.cjs +49 -42
  2. package/dist/adapters/aws-lambda/index.mjs +47 -40
  3. package/dist/adapters/aws-lambda/index.mjs.map +1 -1
  4. package/dist/adapters/express.cjs +14 -15
  5. package/dist/adapters/express.mjs +14 -15
  6. package/dist/adapters/express.mjs.map +1 -1
  7. package/dist/adapters/fastify/index.cjs +27 -28
  8. package/dist/adapters/fastify/index.mjs +27 -28
  9. package/dist/adapters/fastify/index.mjs.map +1 -1
  10. package/dist/adapters/fetch/index.cjs +18 -19
  11. package/dist/adapters/fetch/index.mjs +18 -19
  12. package/dist/adapters/fetch/index.mjs.map +1 -1
  13. package/dist/adapters/next-app-dir.cjs +57 -53
  14. package/dist/adapters/next-app-dir.mjs +15 -11
  15. package/dist/adapters/next-app-dir.mjs.map +1 -1
  16. package/dist/adapters/next.cjs +14 -15
  17. package/dist/adapters/next.mjs +14 -15
  18. package/dist/adapters/next.mjs.map +1 -1
  19. package/dist/adapters/node-http/index.cjs +8 -8
  20. package/dist/adapters/node-http/index.mjs +8 -8
  21. package/dist/adapters/standalone.cjs +17 -17
  22. package/dist/adapters/standalone.mjs +16 -16
  23. package/dist/adapters/standalone.mjs.map +1 -1
  24. package/dist/adapters/ws.cjs +10 -10
  25. package/dist/adapters/ws.mjs +10 -10
  26. package/dist/getErrorShape-DKiEF6Zc.cjs +339 -0
  27. package/dist/getErrorShape-Uhlrl4Bk.mjs +263 -0
  28. package/dist/getErrorShape-Uhlrl4Bk.mjs.map +1 -0
  29. package/dist/http.cjs +5 -5
  30. package/dist/http.mjs +5 -5
  31. package/dist/index.cjs +4 -4
  32. package/dist/index.mjs +4 -4
  33. package/dist/{initTRPC-DjEpHmY2.cjs → initTRPC-IT4M4lu3.cjs} +83 -64
  34. package/dist/{initTRPC-COaJMShh.mjs → initTRPC-IT_6ZYJd.mjs} +84 -65
  35. package/dist/initTRPC-IT_6ZYJd.mjs.map +1 -0
  36. package/dist/{node-http-BUQnHuGI.mjs → node-http-Du8akt-R.mjs} +26 -23
  37. package/dist/{node-http-BUQnHuGI.mjs.map → node-http-Du8akt-R.mjs.map} +1 -1
  38. package/dist/{node-http-BPR68yI4.cjs → node-http-kIQEhZUH.cjs} +25 -22
  39. package/dist/observable/index.cjs +2 -2
  40. package/dist/observable/index.mjs +2 -2
  41. package/dist/{observable-BwdrSFZU.cjs → observable-B1Nk6r1H.cjs} +7 -4
  42. package/dist/{observable-C6qq2Ydk.cjs → observable-BVzLuBs6.cjs} +19 -7
  43. package/dist/{observable-CFXA_tyK.mjs → observable-CUiPknO-.mjs} +20 -8
  44. package/dist/{observable-CFXA_tyK.mjs.map → observable-CUiPknO-.mjs.map} +1 -1
  45. package/dist/{observable-B1orLHHI.mjs → observable-UMO3vUa_.mjs} +8 -5
  46. package/dist/{observable-B1orLHHI.mjs.map → observable-UMO3vUa_.mjs.map} +1 -1
  47. package/dist/{parseTRPCMessage-CNyYMSRB.mjs → parseTRPCMessage-ByIHyFRz.mjs} +2 -2
  48. package/dist/{parseTRPCMessage-CNyYMSRB.mjs.map → parseTRPCMessage-ByIHyFRz.mjs.map} +1 -1
  49. package/dist/{parseTRPCMessage-ByQWigsq.cjs → parseTRPCMessage-snNQop7N.cjs} +1 -1
  50. package/dist/{resolveResponse-B2CuaT_1.cjs → resolveResponse-CVGbakBm.cjs} +664 -405
  51. package/dist/{resolveResponse-DPbYgJDD.mjs → resolveResponse-CzlbRpCI.mjs} +660 -389
  52. package/dist/resolveResponse-CzlbRpCI.mjs.map +1 -0
  53. package/dist/rpc.cjs +2 -2
  54. package/dist/rpc.mjs +2 -2
  55. package/dist/shared.cjs +2 -2
  56. package/dist/shared.mjs +2 -2
  57. package/dist/{tracked-Dl9sBZxY.cjs → tracked-HoF8L_mq.cjs} +30 -42
  58. package/dist/{tracked-GEWPoL0C.mjs → tracked-gU3ttYjg.mjs} +31 -43
  59. package/dist/{tracked-GEWPoL0C.mjs.map → tracked-gU3ttYjg.mjs.map} +1 -1
  60. package/dist/unstable-core-do-not-import.cjs +7 -7
  61. package/dist/unstable-core-do-not-import.mjs +7 -7
  62. package/dist/{utils-BHZJcBRv.mjs → utils-DdbbrDku.mjs} +1 -1
  63. package/dist/{utils-BHZJcBRv.mjs.map → utils-DdbbrDku.mjs.map} +1 -1
  64. package/dist/{ws-C2nEUNk_.cjs → ws-BhrWsMpl.cjs} +37 -26
  65. package/dist/{ws-eIVIMTrw.mjs → ws-Bn5rkP_I.mjs} +37 -26
  66. package/dist/{ws-eIVIMTrw.mjs.map → ws-Bn5rkP_I.mjs.map} +1 -1
  67. package/package.json +2 -2
  68. package/adapters/aws-lambda/index.d.ts +0 -1
  69. package/adapters/aws-lambda/index.js +0 -1
  70. package/adapters/express/index.d.ts +0 -1
  71. package/adapters/express/index.js +0 -1
  72. package/adapters/fastify/index.d.ts +0 -1
  73. package/adapters/fastify/index.js +0 -1
  74. package/adapters/fetch/index.d.ts +0 -1
  75. package/adapters/fetch/index.js +0 -1
  76. package/adapters/next/index.d.ts +0 -1
  77. package/adapters/next/index.js +0 -1
  78. package/adapters/next-app-dir/index.d.ts +0 -1
  79. package/adapters/next-app-dir/index.js +0 -1
  80. package/adapters/node-http/content-type/form-data/index.d.ts +0 -1
  81. package/adapters/node-http/content-type/form-data/index.js +0 -1
  82. package/adapters/node-http/content-type/json/index.d.ts +0 -1
  83. package/adapters/node-http/content-type/json/index.js +0 -1
  84. package/adapters/node-http/index.d.ts +0 -1
  85. package/adapters/node-http/index.js +0 -1
  86. package/adapters/standalone/index.d.ts +0 -1
  87. package/adapters/standalone/index.js +0 -1
  88. package/adapters/ws/index.d.ts +0 -1
  89. package/adapters/ws/index.js +0 -1
  90. package/dist/getErrorShape-CsikfkAc.cjs +0 -201
  91. package/dist/getErrorShape-DyYil4aT.mjs +0 -149
  92. package/dist/getErrorShape-DyYil4aT.mjs.map +0 -1
  93. package/dist/initTRPC-COaJMShh.mjs.map +0 -1
  94. package/dist/resolveResponse-DPbYgJDD.mjs.map +0 -1
  95. package/http/index.d.ts +0 -1
  96. package/http/index.js +0 -1
  97. package/observable/index.d.ts +0 -1
  98. package/observable/index.js +0 -1
  99. package/rpc/index.d.ts +0 -1
  100. package/rpc/index.js +0 -1
  101. package/shared/index.d.ts +0 -1
  102. package/shared/index.js +0 -1
  103. package/unstable-core-do-not-import/index.d.ts +0 -1
  104. package/unstable-core-do-not-import/index.js +0 -1
  105. /package/dist/{utils-DVO6HZiR.cjs → utils-BhNVZA-c.cjs} +0 -0
@@ -1,10 +1,10 @@
1
- const require_resolveResponse = require('../../resolveResponse-B2CuaT_1.cjs');
2
- require('../../getErrorShape-CsikfkAc.cjs');
3
- require('../../tracked-Dl9sBZxY.cjs');
4
- require('../../utils-DVO6HZiR.cjs');
5
- require('../../observable-BwdrSFZU.cjs');
6
- const node_stream = require_resolveResponse.__toESM(require("node:stream"));
7
- const node_stream_promises = require_resolveResponse.__toESM(require("node:stream/promises"));
1
+ const require_getErrorShape = require('../../getErrorShape-DKiEF6Zc.cjs');
2
+ require('../../tracked-HoF8L_mq.cjs');
3
+ require('../../utils-BhNVZA-c.cjs');
4
+ const require_resolveResponse = require('../../resolveResponse-CVGbakBm.cjs');
5
+ require('../../observable-B1Nk6r1H.cjs');
6
+ const node_stream = require_getErrorShape.__toESM(require("node:stream"));
7
+ const node_stream_promises = require_getErrorShape.__toESM(require("node:stream/promises"));
8
8
 
9
9
  //#region src/vendor/cookie-es/set-cookie/split.ts
10
10
  /**
@@ -67,6 +67,7 @@ function splitSetCookieString(cookiesString) {
67
67
 
68
68
  //#endregion
69
69
  //#region src/adapters/aws-lambda/getPlanner.ts
70
+ var import_objectSpread2$1 = require_getErrorShape.__toESM(require_getErrorShape.require_objectSpread2(), 1);
70
71
  function determinePayloadFormat(event) {
71
72
  const unknownEvent = event;
72
73
  if (typeof unknownEvent.version === "undefined") return "1.0";
@@ -83,18 +84,25 @@ function getHeadersAndCookiesFromResponse(response) {
83
84
  }
84
85
  const v1Processor = {
85
86
  getTRPCPath: (event) => {
86
- if (!event.pathParameters) return event.path.split("/").pop() ?? "";
87
- const matches = event.resource.matchAll(/\{(.*?)\}/g);
87
+ if (!event.pathParameters) {
88
+ var _event$path$split$pop;
89
+ return (_event$path$split$pop = event.path.split("/").pop()) !== null && _event$path$split$pop !== void 0 ? _event$path$split$pop : "";
90
+ }
91
+ const matches = event.resource.matchAll(new RegExp("\\{(.*?)\\}", "g"));
88
92
  for (const match of matches) {
89
93
  const group = match[1];
90
- if (group.includes("+") && event.pathParameters) return event.pathParameters[group.replace("+", "")] ?? "";
94
+ if (group.includes("+") && event.pathParameters) {
95
+ var _event$pathParameters;
96
+ return (_event$pathParameters = event.pathParameters[group.replace("+", "")]) !== null && _event$pathParameters !== void 0 ? _event$pathParameters : "";
97
+ }
91
98
  }
92
99
  return event.path.slice(1);
93
100
  },
94
101
  url(event) {
95
- const hostname = event.requestContext.domainName ?? event.headers["host"] ?? event.multiValueHeaders?.["host"]?.[0] ?? "localhost";
102
+ var _ref, _ref2, _event$requestContext, _event$multiValueHead, _event$queryStringPar;
103
+ const hostname = (_ref = (_ref2 = (_event$requestContext = event.requestContext.domainName) !== null && _event$requestContext !== void 0 ? _event$requestContext : event.headers["host"]) !== null && _ref2 !== void 0 ? _ref2 : (_event$multiValueHead = event.multiValueHeaders) === null || _event$multiValueHead === void 0 || (_event$multiValueHead = _event$multiValueHead["host"]) === null || _event$multiValueHead === void 0 ? void 0 : _event$multiValueHead[0]) !== null && _ref !== void 0 ? _ref : "localhost";
96
104
  const searchParams = new URLSearchParams();
97
- for (const [key, value] of Object.entries(event.queryStringParameters ?? {})) if (value !== void 0) searchParams.append(key, value);
105
+ for (const [key, value] of Object.entries((_event$queryStringPar = event.queryStringParameters) !== null && _event$queryStringPar !== void 0 ? _event$queryStringPar : {})) if (value !== void 0) searchParams.append(key, value);
98
106
  const qs = searchParams.toString();
99
107
  return {
100
108
  hostname,
@@ -103,29 +111,32 @@ const v1Processor = {
103
111
  };
104
112
  },
105
113
  getHeaders: (event) => {
114
+ var _event$headers, _event$multiValueHead2;
106
115
  const headers = new Headers();
107
- for (const [key, value] of Object.entries(event.headers ?? {})) if (value !== void 0) headers.append(key, value);
108
- for (const [k, values] of Object.entries(event.multiValueHeaders ?? {})) if (values) values.forEach((v) => headers.append(k, v));
116
+ for (const [key, value] of Object.entries((_event$headers = event.headers) !== null && _event$headers !== void 0 ? _event$headers : {})) if (value !== void 0) headers.append(key, value);
117
+ for (const [k, values] of Object.entries((_event$multiValueHead2 = event.multiValueHeaders) !== null && _event$multiValueHead2 !== void 0 ? _event$multiValueHead2 : {})) if (values) values.forEach((v) => headers.append(k, v));
109
118
  return headers;
110
119
  },
111
120
  getMethod: (event) => event.httpMethod,
112
121
  toResult: async (response) => {
113
122
  const { headers, cookies } = getHeadersAndCookiesFromResponse(response);
114
- const result = {
115
- ...cookies.length && { multiValueHeaders: { "set-cookie": cookies } },
123
+ const result = (0, import_objectSpread2$1.default)((0, import_objectSpread2$1.default)({}, cookies.length && { multiValueHeaders: { "set-cookie": cookies } }), {}, {
116
124
  statusCode: response.status,
117
125
  body: await response.text(),
118
126
  headers
119
- };
127
+ });
120
128
  return result;
121
129
  }
122
130
  };
123
131
  const v2Processor = {
124
132
  getTRPCPath: (event) => {
125
- const matches = event.routeKey.matchAll(/\{(.*?)\}/g);
133
+ const matches = event.routeKey.matchAll(new RegExp("\\{(.*?)\\}", "g"));
126
134
  for (const match of matches) {
127
135
  const group = match[1];
128
- if (group.includes("+") && event.pathParameters) return event.pathParameters[group.replace("+", "")] ?? "";
136
+ if (group.includes("+") && event.pathParameters) {
137
+ var _event$pathParameters2;
138
+ return (_event$pathParameters2 = event.pathParameters[group.replace("+", "")]) !== null && _event$pathParameters2 !== void 0 ? _event$pathParameters2 : "";
139
+ }
129
140
  }
130
141
  return event.rawPath.slice(1);
131
142
  },
@@ -137,8 +148,9 @@ const v2Processor = {
137
148
  };
138
149
  },
139
150
  getHeaders: (event) => {
151
+ var _event$headers2;
140
152
  const headers = new Headers();
141
- for (const [key, value] of Object.entries(event.headers ?? {})) if (value !== void 0) headers.append(key, value);
153
+ for (const [key, value] of Object.entries((_event$headers2 = event.headers) !== null && _event$headers2 !== void 0 ? _event$headers2 : {})) if (value !== void 0) headers.append(key, value);
142
154
  if (event.cookies) headers.append("cookie", event.cookies.join("; "));
143
155
  return headers;
144
156
  },
@@ -196,29 +208,27 @@ function getPlanner(event) {
196
208
 
197
209
  //#endregion
198
210
  //#region src/adapters/aws-lambda/index.ts
211
+ var import_objectSpread2 = require_getErrorShape.__toESM(require_getErrorShape.require_objectSpread2(), 1);
199
212
  function awsLambdaRequestHandler(opts) {
200
213
  return async (event, context) => {
201
214
  const planner = getPlanner(event);
202
215
  const createContext = async (innerOpts) => {
203
- return await opts.createContext?.({
216
+ var _opts$createContext;
217
+ return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, (0, import_objectSpread2.default)({
204
218
  event,
205
- context,
206
- ...innerOpts
207
- });
219
+ context
220
+ }, innerOpts)));
208
221
  };
209
- const response = await require_resolveResponse.resolveResponse({
210
- ...opts,
222
+ const response = await require_resolveResponse.resolveResponse((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
211
223
  createContext,
212
224
  req: planner.request,
213
225
  path: planner.path,
214
226
  error: null,
215
227
  onError(o) {
216
- opts?.onError?.({
217
- ...o,
218
- req: event
219
- });
228
+ var _opts$onError;
229
+ opts === null || opts === void 0 || (_opts$onError = opts.onError) === null || _opts$onError === void 0 || _opts$onError.call(opts, (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, o), {}, { req: event }));
220
230
  }
221
- });
231
+ }));
222
232
  return await planner.toResult(response);
223
233
  };
224
234
  }
@@ -227,25 +237,22 @@ function awsLambdaStreamingRequestHandler(opts) {
227
237
  const planner = getPlanner(event);
228
238
  if (!planner.toStream) throw new Error("Streaming is not supported for this event version");
229
239
  const createContext = async (innerOpts) => {
230
- return await opts.createContext?.({
240
+ var _opts$createContext2;
241
+ return await ((_opts$createContext2 = opts.createContext) === null || _opts$createContext2 === void 0 ? void 0 : _opts$createContext2.call(opts, (0, import_objectSpread2.default)({
231
242
  event,
232
- context,
233
- ...innerOpts
234
- });
243
+ context
244
+ }, innerOpts)));
235
245
  };
236
- const response = await require_resolveResponse.resolveResponse({
237
- ...opts,
246
+ const response = await require_resolveResponse.resolveResponse((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
238
247
  createContext,
239
248
  req: planner.request,
240
249
  path: planner.path,
241
250
  error: null,
242
251
  onError(o) {
243
- opts?.onError?.({
244
- ...o,
245
- req: event
246
- });
252
+ var _opts$onError2;
253
+ opts === null || opts === void 0 || (_opts$onError2 = opts.onError) === null || _opts$onError2 === void 0 || _opts$onError2.call(opts, (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, o), {}, { req: event }));
247
254
  }
248
- });
255
+ }));
249
256
  await planner.toStream(response, responseStream);
250
257
  };
251
258
  }
@@ -1,8 +1,8 @@
1
- import { resolveResponse } from "../../resolveResponse-DPbYgJDD.mjs";
2
- import "../../getErrorShape-DyYil4aT.mjs";
3
- import "../../tracked-GEWPoL0C.mjs";
4
- import "../../utils-BHZJcBRv.mjs";
5
- import "../../observable-B1orLHHI.mjs";
1
+ import { __toESM, require_objectSpread2 } from "../../getErrorShape-Uhlrl4Bk.mjs";
2
+ import "../../tracked-gU3ttYjg.mjs";
3
+ import "../../utils-DdbbrDku.mjs";
4
+ import { resolveResponse } from "../../resolveResponse-CzlbRpCI.mjs";
5
+ import "../../observable-UMO3vUa_.mjs";
6
6
  import { Readable } from "node:stream";
7
7
  import { pipeline } from "node:stream/promises";
8
8
 
@@ -67,6 +67,7 @@ function splitSetCookieString(cookiesString) {
67
67
 
68
68
  //#endregion
69
69
  //#region src/adapters/aws-lambda/getPlanner.ts
70
+ var import_objectSpread2$1 = __toESM(require_objectSpread2(), 1);
70
71
  function determinePayloadFormat(event) {
71
72
  const unknownEvent = event;
72
73
  if (typeof unknownEvent.version === "undefined") return "1.0";
@@ -83,18 +84,25 @@ function getHeadersAndCookiesFromResponse(response) {
83
84
  }
84
85
  const v1Processor = {
85
86
  getTRPCPath: (event) => {
86
- if (!event.pathParameters) return event.path.split("/").pop() ?? "";
87
- const matches = event.resource.matchAll(/\{(.*?)\}/g);
87
+ if (!event.pathParameters) {
88
+ var _event$path$split$pop;
89
+ return (_event$path$split$pop = event.path.split("/").pop()) !== null && _event$path$split$pop !== void 0 ? _event$path$split$pop : "";
90
+ }
91
+ const matches = event.resource.matchAll(new RegExp("\\{(.*?)\\}", "g"));
88
92
  for (const match of matches) {
89
93
  const group = match[1];
90
- if (group.includes("+") && event.pathParameters) return event.pathParameters[group.replace("+", "")] ?? "";
94
+ if (group.includes("+") && event.pathParameters) {
95
+ var _event$pathParameters;
96
+ return (_event$pathParameters = event.pathParameters[group.replace("+", "")]) !== null && _event$pathParameters !== void 0 ? _event$pathParameters : "";
97
+ }
91
98
  }
92
99
  return event.path.slice(1);
93
100
  },
94
101
  url(event) {
95
- const hostname = event.requestContext.domainName ?? event.headers["host"] ?? event.multiValueHeaders?.["host"]?.[0] ?? "localhost";
102
+ var _ref, _ref2, _event$requestContext, _event$multiValueHead, _event$queryStringPar;
103
+ const hostname = (_ref = (_ref2 = (_event$requestContext = event.requestContext.domainName) !== null && _event$requestContext !== void 0 ? _event$requestContext : event.headers["host"]) !== null && _ref2 !== void 0 ? _ref2 : (_event$multiValueHead = event.multiValueHeaders) === null || _event$multiValueHead === void 0 || (_event$multiValueHead = _event$multiValueHead["host"]) === null || _event$multiValueHead === void 0 ? void 0 : _event$multiValueHead[0]) !== null && _ref !== void 0 ? _ref : "localhost";
96
104
  const searchParams = new URLSearchParams();
97
- for (const [key, value] of Object.entries(event.queryStringParameters ?? {})) if (value !== void 0) searchParams.append(key, value);
105
+ for (const [key, value] of Object.entries((_event$queryStringPar = event.queryStringParameters) !== null && _event$queryStringPar !== void 0 ? _event$queryStringPar : {})) if (value !== void 0) searchParams.append(key, value);
98
106
  const qs = searchParams.toString();
99
107
  return {
100
108
  hostname,
@@ -103,29 +111,32 @@ const v1Processor = {
103
111
  };
104
112
  },
105
113
  getHeaders: (event) => {
114
+ var _event$headers, _event$multiValueHead2;
106
115
  const headers = new Headers();
107
- for (const [key, value] of Object.entries(event.headers ?? {})) if (value !== void 0) headers.append(key, value);
108
- for (const [k, values] of Object.entries(event.multiValueHeaders ?? {})) if (values) values.forEach((v) => headers.append(k, v));
116
+ for (const [key, value] of Object.entries((_event$headers = event.headers) !== null && _event$headers !== void 0 ? _event$headers : {})) if (value !== void 0) headers.append(key, value);
117
+ for (const [k, values] of Object.entries((_event$multiValueHead2 = event.multiValueHeaders) !== null && _event$multiValueHead2 !== void 0 ? _event$multiValueHead2 : {})) if (values) values.forEach((v) => headers.append(k, v));
109
118
  return headers;
110
119
  },
111
120
  getMethod: (event) => event.httpMethod,
112
121
  toResult: async (response) => {
113
122
  const { headers, cookies } = getHeadersAndCookiesFromResponse(response);
114
- const result = {
115
- ...cookies.length && { multiValueHeaders: { "set-cookie": cookies } },
123
+ const result = (0, import_objectSpread2$1.default)((0, import_objectSpread2$1.default)({}, cookies.length && { multiValueHeaders: { "set-cookie": cookies } }), {}, {
116
124
  statusCode: response.status,
117
125
  body: await response.text(),
118
126
  headers
119
- };
127
+ });
120
128
  return result;
121
129
  }
122
130
  };
123
131
  const v2Processor = {
124
132
  getTRPCPath: (event) => {
125
- const matches = event.routeKey.matchAll(/\{(.*?)\}/g);
133
+ const matches = event.routeKey.matchAll(new RegExp("\\{(.*?)\\}", "g"));
126
134
  for (const match of matches) {
127
135
  const group = match[1];
128
- if (group.includes("+") && event.pathParameters) return event.pathParameters[group.replace("+", "")] ?? "";
136
+ if (group.includes("+") && event.pathParameters) {
137
+ var _event$pathParameters2;
138
+ return (_event$pathParameters2 = event.pathParameters[group.replace("+", "")]) !== null && _event$pathParameters2 !== void 0 ? _event$pathParameters2 : "";
139
+ }
129
140
  }
130
141
  return event.rawPath.slice(1);
131
142
  },
@@ -137,8 +148,9 @@ const v2Processor = {
137
148
  };
138
149
  },
139
150
  getHeaders: (event) => {
151
+ var _event$headers2;
140
152
  const headers = new Headers();
141
- for (const [key, value] of Object.entries(event.headers ?? {})) if (value !== void 0) headers.append(key, value);
153
+ for (const [key, value] of Object.entries((_event$headers2 = event.headers) !== null && _event$headers2 !== void 0 ? _event$headers2 : {})) if (value !== void 0) headers.append(key, value);
142
154
  if (event.cookies) headers.append("cookie", event.cookies.join("; "));
143
155
  return headers;
144
156
  },
@@ -196,29 +208,27 @@ function getPlanner(event) {
196
208
 
197
209
  //#endregion
198
210
  //#region src/adapters/aws-lambda/index.ts
211
+ var import_objectSpread2 = __toESM(require_objectSpread2(), 1);
199
212
  function awsLambdaRequestHandler(opts) {
200
213
  return async (event, context) => {
201
214
  const planner = getPlanner(event);
202
215
  const createContext = async (innerOpts) => {
203
- return await opts.createContext?.({
216
+ var _opts$createContext;
217
+ return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, (0, import_objectSpread2.default)({
204
218
  event,
205
- context,
206
- ...innerOpts
207
- });
219
+ context
220
+ }, innerOpts)));
208
221
  };
209
- const response = await resolveResponse({
210
- ...opts,
222
+ const response = await resolveResponse((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
211
223
  createContext,
212
224
  req: planner.request,
213
225
  path: planner.path,
214
226
  error: null,
215
227
  onError(o) {
216
- opts?.onError?.({
217
- ...o,
218
- req: event
219
- });
228
+ var _opts$onError;
229
+ opts === null || opts === void 0 || (_opts$onError = opts.onError) === null || _opts$onError === void 0 || _opts$onError.call(opts, (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, o), {}, { req: event }));
220
230
  }
221
- });
231
+ }));
222
232
  return await planner.toResult(response);
223
233
  };
224
234
  }
@@ -227,25 +237,22 @@ function awsLambdaStreamingRequestHandler(opts) {
227
237
  const planner = getPlanner(event);
228
238
  if (!planner.toStream) throw new Error("Streaming is not supported for this event version");
229
239
  const createContext = async (innerOpts) => {
230
- return await opts.createContext?.({
240
+ var _opts$createContext2;
241
+ return await ((_opts$createContext2 = opts.createContext) === null || _opts$createContext2 === void 0 ? void 0 : _opts$createContext2.call(opts, (0, import_objectSpread2.default)({
231
242
  event,
232
- context,
233
- ...innerOpts
234
- });
243
+ context
244
+ }, innerOpts)));
235
245
  };
236
- const response = await resolveResponse({
237
- ...opts,
246
+ const response = await resolveResponse((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
238
247
  createContext,
239
248
  req: planner.request,
240
249
  path: planner.path,
241
250
  error: null,
242
251
  onError(o) {
243
- opts?.onError?.({
244
- ...o,
245
- req: event
246
- });
252
+ var _opts$onError2;
253
+ opts === null || opts === void 0 || (_opts$onError2 = opts.onError) === null || _opts$onError2 === void 0 || _opts$onError2.call(opts, (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, o), {}, { req: event }));
247
254
  }
248
- });
255
+ }));
249
256
  await planner.toStream(response, responseStream);
250
257
  };
251
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["cookiesString: string | string[]","cookiesStrings: string[]","pos: number","start: number","ch: string","lastComma: number","nextStart: number","cookiesSeparatorFound: boolean","event: LambdaEvent","response: Response","cookies: string[]","v1Processor: Processor<APIGatewayProxyEvent>","hostname: string","result: APIGatewayProxyResult","v2Processor: Processor<APIGatewayProxyEventV2>","result: APIGatewayProxyStructuredResultV2","event: TEvent","processor: Processor<TEvent>","init: RequestInit","opts: AWSLambdaOptions<TRouter, TEvent>","createContext: ResolveHTTPRequestOptionsContextFn<TRouter>"],"sources":["../../../src/vendor/cookie-es/set-cookie/split.ts","../../../src/adapters/aws-lambda/getPlanner.ts","../../../src/adapters/aws-lambda/index.ts"],"sourcesContent":["/**\n * Based on https://github.com/unjs/cookie-es/tree/v1.2.2\n * MIT License\n * \n * Cookie-es copyright (c) Pooya Parsa <pooya@pi0.io>\n * Set-Cookie parsing based on https://github.com/nfriedly/set-cookie-parser\n * Copyright (c) 2015 Nathan Friedly <nathan@nfriedly.com> (http://nfriedly.com/)\n * \n * @see https://github.com/unjs/cookie-es/blob/main/src/set-cookie/split.ts\n */\n\n/**\n * Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n * that are within a single set-cookie field-value, such as in the Expires portion.\n *\n * See https://tools.ietf.org/html/rfc2616#section-4.2\n */\nexport function splitSetCookieString(\n cookiesString: string | string[],\n ): string[] {\n if (Array.isArray(cookiesString)) {\n return cookiesString.flatMap((c) => splitSetCookieString(c));\n }\n \n if (typeof cookiesString !== \"string\") {\n return [];\n }\n \n const cookiesStrings: string[] = [];\n let pos: number = 0;\n let start: number;\n let ch: string;\n let lastComma: number;\n let nextStart: number;\n let cookiesSeparatorFound: boolean;\n \n const skipWhitespace = () => {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n };\n \n const notSpecialChar = () => {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n };\n \n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n \n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n \n skipWhitespace();\n nextStart = pos;\n \n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n \n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.slice(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n \n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.slice(start));\n }\n }\n \n return cookiesStrings;\n }","import { Readable, type Writable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport type {\n APIGatewayProxyEvent,\n APIGatewayProxyEventV2,\n APIGatewayProxyResult,\n APIGatewayProxyStructuredResultV2,\n} from 'aws-lambda';\nimport { splitSetCookieString } from '../../vendor/cookie-es/set-cookie/split';\n\nexport type LambdaEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2;\n\nexport type APIGatewayResult =\n | APIGatewayProxyResult\n | APIGatewayProxyStructuredResultV2;\n\nfunction determinePayloadFormat(event: LambdaEvent): string {\n // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html\n // According to AWS support, version is is extracted from the version property in the event.\n // If there is no version property, then the version is implied as 1.0\n const unknownEvent = event as { version?: string };\n if (typeof unknownEvent.version === 'undefined') {\n return '1.0';\n } else {\n return unknownEvent.version;\n }\n}\n\n/** 1:1 mapping of v1 or v2 input events, deduces which is which.\n * @internal\n **/\nexport type inferAPIGWReturn<TEvent> = TEvent extends APIGatewayProxyEvent\n ? APIGatewayProxyResult\n : TEvent extends APIGatewayProxyEventV2\n ? APIGatewayProxyStructuredResultV2\n : never;\n\ninterface Processor<TEvent extends LambdaEvent> {\n getTRPCPath: (event: TEvent) => string;\n url(event: TEvent): Pick<URL, 'hostname' | 'pathname' | 'search'>;\n getHeaders: (event: TEvent) => Headers;\n getMethod: (event: TEvent) => string;\n toResult: (response: Response) => Promise<inferAPIGWReturn<TEvent>>;\n toStream?: (response: Response, stream: Writable) => Promise<void>;\n}\n\nfunction getHeadersAndCookiesFromResponse(response: Response) {\n const headers = Object.fromEntries(response.headers.entries());\n\n const cookies: string[] = splitSetCookieString(\n response.headers.getSetCookie(),\n ).map((cookie) => cookie.trim());\n\n delete headers['set-cookie'];\n\n return { headers, cookies };\n}\n\nconst v1Processor: Processor<APIGatewayProxyEvent> = {\n // same as getPath above\n getTRPCPath: (event) => {\n if (!event.pathParameters) {\n // Then this event was not triggered by a resource denoted with {proxy+}\n return event.path.split('/').pop() ?? '';\n }\n const matches = event.resource.matchAll(/\\{(.*?)\\}/g);\n for (const match of matches) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const group = match[1]!;\n if (group.includes('+') && event.pathParameters) {\n return event.pathParameters[group.replace('+', '')] ?? '';\n }\n }\n return event.path.slice(1);\n },\n url(event) {\n const hostname: string =\n event.requestContext.domainName ??\n event.headers['host'] ??\n event.multiValueHeaders?.['host']?.[0] ??\n 'localhost';\n\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(\n event.queryStringParameters ?? {},\n )) {\n if (value !== undefined) {\n searchParams.append(key, value);\n }\n }\n const qs = searchParams.toString();\n return {\n hostname,\n pathname: event.path,\n search: qs && `?${qs}`,\n };\n },\n getHeaders: (event) => {\n const headers = new Headers();\n for (const [key, value] of Object.entries(event.headers ?? {})) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n\n for (const [k, values] of Object.entries(event.multiValueHeaders ?? {})) {\n if (values) {\n values.forEach((v) => headers.append(k, v));\n }\n }\n\n return headers;\n },\n getMethod: (event) => event.httpMethod,\n toResult: async (response) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const result: APIGatewayProxyResult = {\n ...(cookies.length && { multiValueHeaders: { 'set-cookie': cookies } }),\n statusCode: response.status,\n body: await response.text(),\n headers,\n };\n\n return result;\n },\n};\n\nconst v2Processor: Processor<APIGatewayProxyEventV2> = {\n getTRPCPath: (event) => {\n const matches = event.routeKey.matchAll(/\\{(.*?)\\}/g);\n for (const match of matches) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const group = match[1]!;\n if (group.includes('+') && event.pathParameters) {\n return event.pathParameters[group.replace('+', '')] ?? '';\n }\n }\n return event.rawPath.slice(1);\n },\n url(event) {\n return {\n hostname: event.requestContext.domainName,\n pathname: event.rawPath,\n search: event.rawQueryString && `?${event.rawQueryString}`,\n };\n },\n getHeaders: (event) => {\n const headers = new Headers();\n for (const [key, value] of Object.entries(event.headers ?? {})) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n\n if (event.cookies) {\n headers.append('cookie', event.cookies.join('; '));\n }\n return headers;\n },\n getMethod: (event) => event.requestContext.http.method,\n toResult: async (response) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const result: APIGatewayProxyStructuredResultV2 = {\n cookies,\n statusCode: response.status,\n body: await response.text(),\n headers,\n };\n\n return result;\n },\n\n toStream: async (response, stream) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const metadata = {\n statusCode: response.status,\n headers,\n cookies,\n };\n\n const responseStream = awslambda.HttpResponseStream.from(stream, metadata);\n\n if (response.body) {\n await pipeline(Readable.fromWeb(response.body as any), responseStream);\n } else {\n responseStream.end();\n }\n },\n};\n\nexport function getPlanner<TEvent extends LambdaEvent>(event: TEvent) {\n const version = determinePayloadFormat(event);\n let processor: Processor<TEvent>;\n switch (version) {\n case '1.0':\n processor = v1Processor as Processor<TEvent>;\n break;\n case '2.0':\n processor = v2Processor as Processor<TEvent>;\n break;\n default:\n throw new Error(`Unsupported version: ${version}`);\n }\n\n const urlParts = processor.url(event);\n const url = `https://${urlParts.hostname}${urlParts.pathname}${urlParts.search}`;\n\n const init: RequestInit = {\n headers: processor.getHeaders(event),\n method: processor.getMethod(event),\n // @ts-expect-error this is fine\n duplex: 'half',\n };\n if (event.body) {\n init.body = event.isBase64Encoded\n ? Buffer.from(event.body, 'base64')\n : event.body;\n }\n\n const request = new Request(url, init);\n\n return {\n path: processor.getTRPCPath(event),\n request,\n toResult: processor.toResult,\n toStream: processor.toStream,\n };\n}\n","/**\n * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`\n *\n * @example\n * ```ts\n * import type { AnyTRPCRouter } from '@trpc/server'\n * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'\n * ```\n */\nimport type {\n APIGatewayProxyEventV2,\n Context as APIGWContext,\n StreamifyHandler,\n} from 'aws-lambda';\n// @trpc/server\nimport type {\n AnyRouter,\n CreateContextCallback,\n inferRouterContext,\n} from '../../@trpc/server';\n// @trpc/server\nimport type {\n HTTPBaseHandlerOptions,\n ResolveHTTPRequestOptionsContextFn,\n TRPCRequestInfo,\n} from '../../@trpc/server/http';\nimport { resolveResponse } from '../../@trpc/server/http';\nimport type { inferAPIGWReturn, LambdaEvent } from './getPlanner';\nimport { getPlanner } from './getPlanner';\n\nexport type CreateAWSLambdaContextOptions<TEvent extends LambdaEvent> = {\n event: TEvent;\n context: APIGWContext;\n info: TRPCRequestInfo;\n};\n\nexport type AWSLambdaOptions<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n> = HTTPBaseHandlerOptions<TRouter, TEvent> &\n CreateContextCallback<\n inferRouterContext<AnyRouter>,\n AWSLambdaCreateContextFn<TRouter, TEvent>\n >;\n\nexport type AWSLambdaCreateContextFn<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n> = ({\n event,\n context,\n info,\n}: CreateAWSLambdaContextOptions<TEvent>) =>\n | inferRouterContext<TRouter>\n | Promise<inferRouterContext<TRouter>>;\n\nexport function awsLambdaRequestHandler<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n>(\n opts: AWSLambdaOptions<TRouter, TEvent>,\n): (event: TEvent, context: APIGWContext) => Promise<inferAPIGWReturn<TEvent>> {\n return async (event, context) => {\n const planner = getPlanner(event);\n\n const createContext: ResolveHTTPRequestOptionsContextFn<TRouter> = async (\n innerOpts,\n ) => {\n return await opts.createContext?.({ event, context, ...innerOpts });\n };\n\n const response = await resolveResponse({\n ...opts,\n createContext,\n req: planner.request,\n path: planner.path,\n error: null,\n onError(o) {\n opts?.onError?.({\n ...o,\n req: event,\n });\n },\n });\n\n return await planner.toResult(response);\n };\n}\n\nexport function awsLambdaStreamingRequestHandler<\n TRouter extends AnyRouter,\n TEvent extends APIGatewayProxyEventV2,\n>(opts: AWSLambdaOptions<TRouter, TEvent>): StreamifyHandler<TEvent> {\n return async (event, responseStream, context) => {\n const planner = getPlanner(event);\n\n if (!planner.toStream) {\n throw new Error('Streaming is not supported for this event version');\n }\n\n const createContext: ResolveHTTPRequestOptionsContextFn<TRouter> = async (\n innerOpts,\n ) => {\n return await opts.createContext?.({ event, context, ...innerOpts });\n };\n\n const response = await resolveResponse({\n ...opts,\n createContext,\n req: planner.request,\n path: planner.path,\n error: null,\n onError(o) {\n opts?.onError?.({\n ...o,\n req: event,\n });\n },\n });\n\n await planner.toStream(response, responseStream);\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["cookiesString: string | string[]","cookiesStrings: string[]","pos: number","start: number","ch: string","lastComma: number","nextStart: number","cookiesSeparatorFound: boolean","event: LambdaEvent","response: Response","cookies: string[]","v1Processor: Processor<APIGatewayProxyEvent>","hostname: string","result: APIGatewayProxyResult","v2Processor: Processor<APIGatewayProxyEventV2>","result: APIGatewayProxyStructuredResultV2","event: TEvent","processor: Processor<TEvent>","init: RequestInit","opts: AWSLambdaOptions<TRouter, TEvent>","createContext: ResolveHTTPRequestOptionsContextFn<TRouter>"],"sources":["../../../src/vendor/cookie-es/set-cookie/split.ts","../../../src/adapters/aws-lambda/getPlanner.ts","../../../src/adapters/aws-lambda/index.ts"],"sourcesContent":["/**\n * Based on https://github.com/unjs/cookie-es/tree/v1.2.2\n * MIT License\n * \n * Cookie-es copyright (c) Pooya Parsa <pooya@pi0.io>\n * Set-Cookie parsing based on https://github.com/nfriedly/set-cookie-parser\n * Copyright (c) 2015 Nathan Friedly <nathan@nfriedly.com> (http://nfriedly.com/)\n * \n * @see https://github.com/unjs/cookie-es/blob/main/src/set-cookie/split.ts\n */\n\n/**\n * Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n * that are within a single set-cookie field-value, such as in the Expires portion.\n *\n * See https://tools.ietf.org/html/rfc2616#section-4.2\n */\nexport function splitSetCookieString(\n cookiesString: string | string[],\n ): string[] {\n if (Array.isArray(cookiesString)) {\n return cookiesString.flatMap((c) => splitSetCookieString(c));\n }\n \n if (typeof cookiesString !== \"string\") {\n return [];\n }\n \n const cookiesStrings: string[] = [];\n let pos: number = 0;\n let start: number;\n let ch: string;\n let lastComma: number;\n let nextStart: number;\n let cookiesSeparatorFound: boolean;\n \n const skipWhitespace = () => {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n };\n \n const notSpecialChar = () => {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n };\n \n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n \n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n \n skipWhitespace();\n nextStart = pos;\n \n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n \n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.slice(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n \n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.slice(start));\n }\n }\n \n return cookiesStrings;\n }","import { Readable, type Writable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport type {\n APIGatewayProxyEvent,\n APIGatewayProxyEventV2,\n APIGatewayProxyResult,\n APIGatewayProxyStructuredResultV2,\n} from 'aws-lambda';\nimport { splitSetCookieString } from '../../vendor/cookie-es/set-cookie/split';\n\nexport type LambdaEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2;\n\nexport type APIGatewayResult =\n | APIGatewayProxyResult\n | APIGatewayProxyStructuredResultV2;\n\nfunction determinePayloadFormat(event: LambdaEvent): string {\n // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html\n // According to AWS support, version is is extracted from the version property in the event.\n // If there is no version property, then the version is implied as 1.0\n const unknownEvent = event as { version?: string };\n if (typeof unknownEvent.version === 'undefined') {\n return '1.0';\n } else {\n return unknownEvent.version;\n }\n}\n\n/** 1:1 mapping of v1 or v2 input events, deduces which is which.\n * @internal\n **/\nexport type inferAPIGWReturn<TEvent> = TEvent extends APIGatewayProxyEvent\n ? APIGatewayProxyResult\n : TEvent extends APIGatewayProxyEventV2\n ? APIGatewayProxyStructuredResultV2\n : never;\n\ninterface Processor<TEvent extends LambdaEvent> {\n getTRPCPath: (event: TEvent) => string;\n url(event: TEvent): Pick<URL, 'hostname' | 'pathname' | 'search'>;\n getHeaders: (event: TEvent) => Headers;\n getMethod: (event: TEvent) => string;\n toResult: (response: Response) => Promise<inferAPIGWReturn<TEvent>>;\n toStream?: (response: Response, stream: Writable) => Promise<void>;\n}\n\nfunction getHeadersAndCookiesFromResponse(response: Response) {\n const headers = Object.fromEntries(response.headers.entries());\n\n const cookies: string[] = splitSetCookieString(\n response.headers.getSetCookie(),\n ).map((cookie) => cookie.trim());\n\n delete headers['set-cookie'];\n\n return { headers, cookies };\n}\n\nconst v1Processor: Processor<APIGatewayProxyEvent> = {\n // same as getPath above\n getTRPCPath: (event) => {\n if (!event.pathParameters) {\n // Then this event was not triggered by a resource denoted with {proxy+}\n return event.path.split('/').pop() ?? '';\n }\n const matches = event.resource.matchAll(/\\{(.*?)\\}/g);\n for (const match of matches) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const group = match[1]!;\n if (group.includes('+') && event.pathParameters) {\n return event.pathParameters[group.replace('+', '')] ?? '';\n }\n }\n return event.path.slice(1);\n },\n url(event) {\n const hostname: string =\n event.requestContext.domainName ??\n event.headers['host'] ??\n event.multiValueHeaders?.['host']?.[0] ??\n 'localhost';\n\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(\n event.queryStringParameters ?? {},\n )) {\n if (value !== undefined) {\n searchParams.append(key, value);\n }\n }\n const qs = searchParams.toString();\n return {\n hostname,\n pathname: event.path,\n search: qs && `?${qs}`,\n };\n },\n getHeaders: (event) => {\n const headers = new Headers();\n for (const [key, value] of Object.entries(event.headers ?? {})) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n\n for (const [k, values] of Object.entries(event.multiValueHeaders ?? {})) {\n if (values) {\n values.forEach((v) => headers.append(k, v));\n }\n }\n\n return headers;\n },\n getMethod: (event) => event.httpMethod,\n toResult: async (response) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const result: APIGatewayProxyResult = {\n ...(cookies.length && { multiValueHeaders: { 'set-cookie': cookies } }),\n statusCode: response.status,\n body: await response.text(),\n headers,\n };\n\n return result;\n },\n};\n\nconst v2Processor: Processor<APIGatewayProxyEventV2> = {\n getTRPCPath: (event) => {\n const matches = event.routeKey.matchAll(/\\{(.*?)\\}/g);\n for (const match of matches) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const group = match[1]!;\n if (group.includes('+') && event.pathParameters) {\n return event.pathParameters[group.replace('+', '')] ?? '';\n }\n }\n return event.rawPath.slice(1);\n },\n url(event) {\n return {\n hostname: event.requestContext.domainName,\n pathname: event.rawPath,\n search: event.rawQueryString && `?${event.rawQueryString}`,\n };\n },\n getHeaders: (event) => {\n const headers = new Headers();\n for (const [key, value] of Object.entries(event.headers ?? {})) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n\n if (event.cookies) {\n headers.append('cookie', event.cookies.join('; '));\n }\n return headers;\n },\n getMethod: (event) => event.requestContext.http.method,\n toResult: async (response) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const result: APIGatewayProxyStructuredResultV2 = {\n cookies,\n statusCode: response.status,\n body: await response.text(),\n headers,\n };\n\n return result;\n },\n\n toStream: async (response, stream) => {\n const { headers, cookies } = getHeadersAndCookiesFromResponse(response);\n\n const metadata = {\n statusCode: response.status,\n headers,\n cookies,\n };\n\n const responseStream = awslambda.HttpResponseStream.from(stream, metadata);\n\n if (response.body) {\n await pipeline(Readable.fromWeb(response.body as any), responseStream);\n } else {\n responseStream.end();\n }\n },\n};\n\nexport function getPlanner<TEvent extends LambdaEvent>(event: TEvent) {\n const version = determinePayloadFormat(event);\n let processor: Processor<TEvent>;\n switch (version) {\n case '1.0':\n processor = v1Processor as Processor<TEvent>;\n break;\n case '2.0':\n processor = v2Processor as Processor<TEvent>;\n break;\n default:\n throw new Error(`Unsupported version: ${version}`);\n }\n\n const urlParts = processor.url(event);\n const url = `https://${urlParts.hostname}${urlParts.pathname}${urlParts.search}`;\n\n const init: RequestInit = {\n headers: processor.getHeaders(event),\n method: processor.getMethod(event),\n // @ts-expect-error this is fine\n duplex: 'half',\n };\n if (event.body) {\n init.body = event.isBase64Encoded\n ? Buffer.from(event.body, 'base64')\n : event.body;\n }\n\n const request = new Request(url, init);\n\n return {\n path: processor.getTRPCPath(event),\n request,\n toResult: processor.toResult,\n toStream: processor.toStream,\n };\n}\n","/**\n * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`\n *\n * @example\n * ```ts\n * import type { AnyTRPCRouter } from '@trpc/server'\n * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'\n * ```\n */\nimport type {\n APIGatewayProxyEventV2,\n Context as APIGWContext,\n StreamifyHandler,\n} from 'aws-lambda';\n// @trpc/server\nimport type {\n AnyRouter,\n CreateContextCallback,\n inferRouterContext,\n} from '../../@trpc/server';\n// @trpc/server\nimport type {\n HTTPBaseHandlerOptions,\n ResolveHTTPRequestOptionsContextFn,\n TRPCRequestInfo,\n} from '../../@trpc/server/http';\nimport { resolveResponse } from '../../@trpc/server/http';\nimport type { inferAPIGWReturn, LambdaEvent } from './getPlanner';\nimport { getPlanner } from './getPlanner';\n\nexport type CreateAWSLambdaContextOptions<TEvent extends LambdaEvent> = {\n event: TEvent;\n context: APIGWContext;\n info: TRPCRequestInfo;\n};\n\nexport type AWSLambdaOptions<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n> = HTTPBaseHandlerOptions<TRouter, TEvent> &\n CreateContextCallback<\n inferRouterContext<AnyRouter>,\n AWSLambdaCreateContextFn<TRouter, TEvent>\n >;\n\nexport type AWSLambdaCreateContextFn<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n> = ({\n event,\n context,\n info,\n}: CreateAWSLambdaContextOptions<TEvent>) =>\n | inferRouterContext<TRouter>\n | Promise<inferRouterContext<TRouter>>;\n\nexport function awsLambdaRequestHandler<\n TRouter extends AnyRouter,\n TEvent extends LambdaEvent,\n>(\n opts: AWSLambdaOptions<TRouter, TEvent>,\n): (event: TEvent, context: APIGWContext) => Promise<inferAPIGWReturn<TEvent>> {\n return async (event, context) => {\n const planner = getPlanner(event);\n\n const createContext: ResolveHTTPRequestOptionsContextFn<TRouter> = async (\n innerOpts,\n ) => {\n return await opts.createContext?.({ event, context, ...innerOpts });\n };\n\n const response = await resolveResponse({\n ...opts,\n createContext,\n req: planner.request,\n path: planner.path,\n error: null,\n onError(o) {\n opts?.onError?.({\n ...o,\n req: event,\n });\n },\n });\n\n return await planner.toResult(response);\n };\n}\n\nexport function awsLambdaStreamingRequestHandler<\n TRouter extends AnyRouter,\n TEvent extends APIGatewayProxyEventV2,\n>(opts: AWSLambdaOptions<TRouter, TEvent>): StreamifyHandler<TEvent> {\n return async (event, responseStream, context) => {\n const planner = getPlanner(event);\n\n if (!planner.toStream) {\n throw new Error('Streaming is not supported for this event version');\n }\n\n const createContext: ResolveHTTPRequestOptionsContextFn<TRouter> = async (\n innerOpts,\n ) => {\n return await opts.createContext?.({ event, context, ...innerOpts });\n };\n\n const response = await resolveResponse({\n ...opts,\n createContext,\n req: planner.request,\n path: planner.path,\n error: null,\n onError(o) {\n opts?.onError?.({\n ...o,\n req: event,\n });\n },\n });\n\n await planner.toStream(response, responseStream);\n };\n}\n"],"mappings":"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"}
@@ -1,32 +1,31 @@
1
- require('../resolveResponse-B2CuaT_1.cjs');
2
- require('../getErrorShape-CsikfkAc.cjs');
3
- require('../tracked-Dl9sBZxY.cjs');
4
- const require_utils = require('../utils-DVO6HZiR.cjs');
5
- require('../parseTRPCMessage-ByQWigsq.cjs');
1
+ const require_getErrorShape = require('../getErrorShape-DKiEF6Zc.cjs');
2
+ require('../tracked-HoF8L_mq.cjs');
3
+ const require_utils = require('../utils-BhNVZA-c.cjs');
4
+ require('../parseTRPCMessage-snNQop7N.cjs');
5
+ require('../resolveResponse-CVGbakBm.cjs');
6
6
  require('../contentTypeParsers-iAFF_pJG.cjs');
7
7
  require('../unstable-core-do-not-import-DFQys1IC.cjs');
8
- require('../observable-BwdrSFZU.cjs');
9
- require('../initTRPC-DjEpHmY2.cjs');
10
- const require_node_http = require('../node-http-BPR68yI4.cjs');
8
+ require('../observable-B1Nk6r1H.cjs');
9
+ require('../initTRPC-IT4M4lu3.cjs');
10
+ const require_node_http = require('../node-http-kIQEhZUH.cjs');
11
11
 
12
12
  //#region src/adapters/express.ts
13
+ var import_objectSpread2 = require_getErrorShape.__toESM(require_getErrorShape.require_objectSpread2(), 1);
13
14
  function createExpressMiddleware(opts) {
14
15
  return (req, res) => {
15
16
  let path = "";
16
17
  require_utils.run(async () => {
17
18
  path = req.path.slice(req.path.lastIndexOf("/") + 1);
18
- await require_node_http.nodeHTTPRequestHandler({
19
- ...opts,
19
+ await require_node_http.nodeHTTPRequestHandler((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
20
20
  req,
21
21
  res,
22
22
  path
23
- });
24
- }).catch(require_node_http.internal_exceptionHandler({
23
+ }));
24
+ }).catch(require_node_http.internal_exceptionHandler((0, import_objectSpread2.default)({
25
25
  req,
26
26
  res,
27
- path,
28
- ...opts
29
- }));
27
+ path
28
+ }, opts)));
30
29
  };
31
30
  }
32
31
 
@@ -1,32 +1,31 @@
1
- import "../resolveResponse-DPbYgJDD.mjs";
2
- import "../getErrorShape-DyYil4aT.mjs";
3
- import "../tracked-GEWPoL0C.mjs";
4
- import { run } from "../utils-BHZJcBRv.mjs";
5
- import "../parseTRPCMessage-CNyYMSRB.mjs";
1
+ import { __toESM, require_objectSpread2 } from "../getErrorShape-Uhlrl4Bk.mjs";
2
+ import "../tracked-gU3ttYjg.mjs";
3
+ import { run } from "../utils-DdbbrDku.mjs";
4
+ import "../parseTRPCMessage-ByIHyFRz.mjs";
5
+ import "../resolveResponse-CzlbRpCI.mjs";
6
6
  import "../contentTypeParsers-SN4WL9ze.mjs";
7
7
  import "../unstable-core-do-not-import-D89CaGtL.mjs";
8
- import "../observable-B1orLHHI.mjs";
9
- import "../initTRPC-COaJMShh.mjs";
10
- import { internal_exceptionHandler, nodeHTTPRequestHandler } from "../node-http-BUQnHuGI.mjs";
8
+ import "../observable-UMO3vUa_.mjs";
9
+ import "../initTRPC-IT_6ZYJd.mjs";
10
+ import { internal_exceptionHandler, nodeHTTPRequestHandler } from "../node-http-Du8akt-R.mjs";
11
11
 
12
12
  //#region src/adapters/express.ts
13
+ var import_objectSpread2 = __toESM(require_objectSpread2(), 1);
13
14
  function createExpressMiddleware(opts) {
14
15
  return (req, res) => {
15
16
  let path = "";
16
17
  run(async () => {
17
18
  path = req.path.slice(req.path.lastIndexOf("/") + 1);
18
- await nodeHTTPRequestHandler({
19
- ...opts,
19
+ await nodeHTTPRequestHandler((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, opts), {}, {
20
20
  req,
21
21
  res,
22
22
  path
23
- });
24
- }).catch(internal_exceptionHandler({
23
+ }));
24
+ }).catch(internal_exceptionHandler((0, import_objectSpread2.default)({
25
25
  req,
26
26
  res,
27
- path,
28
- ...opts
29
- }));
27
+ path
28
+ }, opts)));
30
29
  };
31
30
  }
32
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"express.mjs","names":["opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>"],"sources":["../../src/adapters/express.ts"],"sourcesContent":["/**\n * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`\n *\n * @example\n * ```ts\n * import type { AnyTRPCRouter } from '@trpc/server'\n * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'\n * ```\n */\nimport type * as express from 'express';\nimport type { AnyRouter } from '../@trpc/server';\n// eslint-disable-next-line no-restricted-imports\nimport { run } from '../unstable-core-do-not-import';\nimport type {\n NodeHTTPCreateContextFnOptions,\n NodeHTTPHandlerOptions,\n} from './node-http';\nimport { internal_exceptionHandler, nodeHTTPRequestHandler } from './node-http';\n\nexport type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions<\n express.Request,\n express.Response\n>;\n\nexport function createExpressMiddleware<TRouter extends AnyRouter>(\n opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>,\n): express.Handler {\n return (req, res) => {\n let path = '';\n run(async () => {\n path = req.path.slice(req.path.lastIndexOf('/') + 1);\n\n await nodeHTTPRequestHandler({\n ...(opts as any),\n req,\n res,\n path,\n });\n }).catch(\n internal_exceptionHandler({\n req,\n res,\n path,\n ...opts,\n }),\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,SAAgB,wBACdA,MACiB;AACjB,QAAO,CAAC,KAAK,QAAQ;EACnB,IAAI,OAAO;AACX,MAAI,YAAY;AACd,UAAO,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,IAAI,GAAG,EAAE;AAEpD,SAAM,uBAAuB;IAC3B,GAAI;IACJ;IACA;IACA;GACD,EAAC;EACH,EAAC,CAAC,MACD,0BAA0B;GACxB;GACA;GACA;GACA,GAAG;EACJ,EAAC,CACH;CACF;AACF"}
1
+ {"version":3,"file":"express.mjs","names":["opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>"],"sources":["../../src/adapters/express.ts"],"sourcesContent":["/**\n * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`\n *\n * @example\n * ```ts\n * import type { AnyTRPCRouter } from '@trpc/server'\n * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'\n * ```\n */\nimport type * as express from 'express';\nimport type { AnyRouter } from '../@trpc/server';\n// eslint-disable-next-line no-restricted-imports\nimport { run } from '../unstable-core-do-not-import';\nimport type {\n NodeHTTPCreateContextFnOptions,\n NodeHTTPHandlerOptions,\n} from './node-http';\nimport { internal_exceptionHandler, nodeHTTPRequestHandler } from './node-http';\n\nexport type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions<\n express.Request,\n express.Response\n>;\n\nexport function createExpressMiddleware<TRouter extends AnyRouter>(\n opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>,\n): express.Handler {\n return (req, res) => {\n let path = '';\n run(async () => {\n path = req.path.slice(req.path.lastIndexOf('/') + 1);\n\n await nodeHTTPRequestHandler({\n ...(opts as any),\n req,\n res,\n path,\n });\n }).catch(\n internal_exceptionHandler({\n req,\n res,\n path,\n ...opts,\n }),\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;AAwBA,SAAgB,wBACdA,MACiB;AACjB,QAAO,CAAC,KAAK,QAAQ;EACnB,IAAI,OAAO;AACX,MAAI,YAAY;AACd,UAAO,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,IAAI,GAAG,EAAE;AAEpD,SAAM,+FACA;IACJ;IACA;IACA;MACA;EACH,EAAC,CAAC,MACD;GACE;GACA;GACA;KACG,MACH,CACH;CACF;AACF"}