@trpc/server 11.0.0-alpha-tmp-export-from-main-nuke-core.215 → 11.0.0-alpha-tmp-export-from-main.211

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 (207) hide show
  1. package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts +9 -0
  2. package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts.map +1 -0
  3. package/dist/@trpc-server/http.d.ts +1 -1
  4. package/dist/@trpc-server/http.d.ts.map +1 -1
  5. package/dist/@trpc-server.d.ts +3 -3
  6. package/dist/@trpc-server.d.ts.map +1 -1
  7. package/dist/adapters/aws-lambda/index.d.ts +1 -1
  8. package/dist/adapters/aws-lambda/index.js +7 -12
  9. package/dist/adapters/aws-lambda/index.mjs +3 -8
  10. package/dist/adapters/aws-lambda/utils.d.ts +1 -1
  11. package/dist/adapters/express.d.ts +1 -1
  12. package/dist/adapters/express.d.ts.map +1 -1
  13. package/dist/adapters/express.js +2 -8
  14. package/dist/adapters/express.mjs +2 -8
  15. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
  16. package/dist/adapters/fastify/index.js +4 -12
  17. package/dist/adapters/fastify/index.mjs +2 -10
  18. package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -1
  19. package/dist/adapters/fetch/index.js +4 -10
  20. package/dist/adapters/fetch/index.mjs +2 -8
  21. package/dist/adapters/fetch/types.d.ts +1 -1
  22. package/dist/adapters/next.d.ts +1 -1
  23. package/dist/adapters/next.js +5 -11
  24. package/dist/adapters/next.mjs +3 -9
  25. package/dist/adapters/node-http/content-type/json/index.js +3 -5
  26. package/dist/adapters/node-http/content-type/json/index.mjs +1 -3
  27. package/dist/adapters/node-http/index.js +2 -8
  28. package/dist/adapters/node-http/index.mjs +2 -8
  29. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
  30. package/dist/adapters/node-http/types.d.ts +2 -2
  31. package/dist/adapters/node-http/types.d.ts.map +1 -1
  32. package/dist/adapters/standalone.d.ts +1 -1
  33. package/dist/adapters/standalone.js +2 -8
  34. package/dist/adapters/standalone.mjs +2 -8
  35. package/dist/adapters/ws.d.ts +1 -2
  36. package/dist/adapters/ws.d.ts.map +1 -1
  37. package/dist/adapters/ws.js +26 -31
  38. package/dist/adapters/ws.mjs +1 -6
  39. package/dist/http.d.ts +6 -6
  40. package/dist/http.d.ts.map +1 -1
  41. package/dist/http.js +21 -12
  42. package/dist/http.mjs +1 -7
  43. package/dist/index.js +41 -15
  44. package/dist/index.mjs +1 -5
  45. package/dist/{nodeHTTPRequestHandler-257a3b5f.mjs → nodeHTTPRequestHandler-2d5c8791.mjs} +2 -4
  46. package/dist/{nodeHTTPRequestHandler-f4b7e374.js → nodeHTTPRequestHandler-55f05150.js} +4 -6
  47. package/dist/{nodeHTTPRequestHandler-29178135.js → nodeHTTPRequestHandler-7691fc79.js} +1 -3
  48. package/dist/observable.d.ts +2 -2
  49. package/dist/observable.d.ts.map +1 -1
  50. package/dist/observable.js +25 -9
  51. package/dist/observable.mjs +1 -3
  52. package/dist/rpc.d.ts +2 -2
  53. package/dist/rpc.d.ts.map +1 -1
  54. package/dist/rpc.js +13 -5
  55. package/dist/rpc.mjs +1 -2
  56. package/dist/shared.js +9 -4
  57. package/dist/shared.mjs +1 -2
  58. package/package.json +125 -53
  59. package/src/@trpc-core-unstable-do-not-import-this-please.ts +9 -0
  60. package/src/@trpc-server/http.ts +1 -2
  61. package/src/@trpc-server.ts +3 -3
  62. package/src/adapters/aws-lambda/index.ts +1 -1
  63. package/src/adapters/aws-lambda/utils.ts +1 -1
  64. package/src/adapters/express.ts +2 -1
  65. package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
  66. package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
  67. package/src/adapters/fetch/fetchRequestHandler.ts +1 -1
  68. package/src/adapters/fetch/types.ts +1 -1
  69. package/src/adapters/next.ts +1 -1
  70. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +1 -1
  71. package/src/adapters/node-http/types.ts +3 -2
  72. package/src/adapters/standalone.ts +1 -1
  73. package/src/adapters/ws.ts +10 -9
  74. package/src/http.ts +6 -6
  75. package/src/observable.ts +2 -2
  76. package/src/rpc.ts +2 -2
  77. package/dist/TRPCError-10da405a.js +0 -61
  78. package/dist/TRPCError-14edcf88.mjs +0 -63
  79. package/dist/TRPCError-e2c8eb77.js +0 -67
  80. package/dist/batchStreamFormatter-1971db27.js +0 -32
  81. package/dist/batchStreamFormatter-378277dc.mjs +0 -30
  82. package/dist/batchStreamFormatter-4375dc8b.js +0 -31
  83. package/dist/bundle-analysis.json +0 -767
  84. package/dist/contentType-2ed02bef.mjs +0 -52
  85. package/dist/contentType-3a829011.js +0 -54
  86. package/dist/contentType-e4a2373e.js +0 -59
  87. package/dist/createProxy-0306dcaa.mjs +0 -121
  88. package/dist/createProxy-7e413449.js +0 -127
  89. package/dist/createProxy-dce0c414.js +0 -116
  90. package/dist/initTRPC-2cef03ab.js +0 -384
  91. package/dist/initTRPC-38faa18f.js +0 -371
  92. package/dist/initTRPC-fa1b3d57.mjs +0 -376
  93. package/dist/observable-2a5a96d5.js +0 -125
  94. package/dist/observable-62674916.js +0 -125
  95. package/dist/observable-6d025a37.mjs +0 -121
  96. package/dist/operators-0cc4956a.js +0 -99
  97. package/dist/operators-b08617cb.js +0 -103
  98. package/dist/operators-d0c3e794.mjs +0 -99
  99. package/dist/parseTRPCMessage-6e6c204e.js +0 -65
  100. package/dist/parseTRPCMessage-8eb0bbe9.mjs +0 -62
  101. package/dist/parseTRPCMessage-ebdfe3ca.js +0 -67
  102. package/dist/resolveHTTPResponse-833ca2b8.js +0 -265
  103. package/dist/resolveHTTPResponse-9322334c.mjs +0 -291
  104. package/dist/resolveHTTPResponse-d64c48e1.js +0 -293
  105. package/dist/rootConfig-3371c473.js +0 -89
  106. package/dist/rootConfig-571c9267.js +0 -94
  107. package/dist/rootConfig-6b04a6b8.mjs +0 -81
  108. package/dist/router-3344b52a.js +0 -262
  109. package/dist/router-919c37eb.js +0 -259
  110. package/dist/router-d6789e4b.mjs +0 -252
  111. package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts +0 -6
  112. package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts.map +0 -1
  113. package/dist/unstable-core-do-not-import/createProxy.d.ts +0 -19
  114. package/dist/unstable-core-do-not-import/createProxy.d.ts.map +0 -1
  115. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +0 -13
  116. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts.map +0 -1
  117. package/dist/unstable-core-do-not-import/error/formatter.d.ts +0 -33
  118. package/dist/unstable-core-do-not-import/error/formatter.d.ts.map +0 -1
  119. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts +0 -15
  120. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts.map +0 -1
  121. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +0 -24
  122. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +0 -1
  123. package/dist/unstable-core-do-not-import/http/contentType.d.ts +0 -29
  124. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +0 -1
  125. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +0 -5
  126. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +0 -1
  127. package/dist/unstable-core-do-not-import/http/index.d.ts +0 -7
  128. package/dist/unstable-core-do-not-import/http/index.d.ts.map +0 -1
  129. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +0 -51
  130. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +0 -1
  131. package/dist/unstable-core-do-not-import/http/types.d.ts +0 -96
  132. package/dist/unstable-core-do-not-import/http/types.d.ts.map +0 -1
  133. package/dist/unstable-core-do-not-import/index.d.ts +0 -35
  134. package/dist/unstable-core-do-not-import/index.d.ts.map +0 -1
  135. package/dist/unstable-core-do-not-import/index.js +0 -51
  136. package/dist/unstable-core-do-not-import/index.mjs +0 -11
  137. package/dist/unstable-core-do-not-import/initTRPC.d.ts +0 -96
  138. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +0 -1
  139. package/dist/unstable-core-do-not-import/middleware.d.ts +0 -105
  140. package/dist/unstable-core-do-not-import/middleware.d.ts.map +0 -1
  141. package/dist/unstable-core-do-not-import/observable/index.d.ts +0 -5
  142. package/dist/unstable-core-do-not-import/observable/index.d.ts.map +0 -1
  143. package/dist/unstable-core-do-not-import/observable/observable.d.ts +0 -13
  144. package/dist/unstable-core-do-not-import/observable/observable.d.ts.map +0 -1
  145. package/dist/unstable-core-do-not-import/observable/operators.d.ts +0 -8
  146. package/dist/unstable-core-do-not-import/observable/operators.d.ts.map +0 -1
  147. package/dist/unstable-core-do-not-import/observable/types.d.ts +0 -26
  148. package/dist/unstable-core-do-not-import/observable/types.d.ts.map +0 -1
  149. package/dist/unstable-core-do-not-import/parser.d.ts +0 -30
  150. package/dist/unstable-core-do-not-import/parser.d.ts.map +0 -1
  151. package/dist/unstable-core-do-not-import/procedure.d.ts +0 -72
  152. package/dist/unstable-core-do-not-import/procedure.d.ts.map +0 -1
  153. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +0 -101
  154. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +0 -1
  155. package/dist/unstable-core-do-not-import/rootConfig.d.ts +0 -75
  156. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +0 -1
  157. package/dist/unstable-core-do-not-import/router.d.ts +0 -85
  158. package/dist/unstable-core-do-not-import/router.d.ts.map +0 -1
  159. package/dist/unstable-core-do-not-import/rpc/codes.d.ts +0 -51
  160. package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +0 -1
  161. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts +0 -97
  162. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +0 -1
  163. package/dist/unstable-core-do-not-import/rpc/index.d.ts +0 -5
  164. package/dist/unstable-core-do-not-import/rpc/index.d.ts.map +0 -1
  165. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts +0 -5
  166. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +0 -1
  167. package/dist/unstable-core-do-not-import/serialize.d.ts +0 -62
  168. package/dist/unstable-core-do-not-import/serialize.d.ts.map +0 -1
  169. package/dist/unstable-core-do-not-import/transformer.d.ts +0 -107
  170. package/dist/unstable-core-do-not-import/transformer.d.ts.map +0 -1
  171. package/dist/unstable-core-do-not-import/types.d.ts +0 -98
  172. package/dist/unstable-core-do-not-import/types.d.ts.map +0 -1
  173. package/dist/unstable-core-do-not-import/utils.d.ts +0 -31
  174. package/dist/unstable-core-do-not-import/utils.d.ts.map +0 -1
  175. package/src/unstable-core-do-not-import/TRPCInferrable.ts +0 -9
  176. package/src/unstable-core-do-not-import/createProxy.ts +0 -59
  177. package/src/unstable-core-do-not-import/error/TRPCError.ts +0 -82
  178. package/src/unstable-core-do-not-import/error/formatter.ts +0 -51
  179. package/src/unstable-core-do-not-import/error/getErrorShape.ts +0 -36
  180. package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +0 -29
  181. package/src/unstable-core-do-not-import/http/contentType.ts +0 -99
  182. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +0 -57
  183. package/src/unstable-core-do-not-import/http/index.ts +0 -23
  184. package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +0 -458
  185. package/src/unstable-core-do-not-import/http/types.ts +0 -111
  186. package/src/unstable-core-do-not-import/index.ts +0 -108
  187. package/src/unstable-core-do-not-import/initTRPC.ts +0 -206
  188. package/src/unstable-core-do-not-import/middleware.ts +0 -233
  189. package/src/unstable-core-do-not-import/observable/index.ts +0 -10
  190. package/src/unstable-core-do-not-import/observable/observable.ts +0 -155
  191. package/src/unstable-core-do-not-import/observable/operators.ts +0 -119
  192. package/src/unstable-core-do-not-import/observable/types.ts +0 -76
  193. package/src/unstable-core-do-not-import/parser.ts +0 -94
  194. package/src/unstable-core-do-not-import/procedure.ts +0 -108
  195. package/src/unstable-core-do-not-import/procedureBuilder.ts +0 -458
  196. package/src/unstable-core-do-not-import/rootConfig.ts +0 -90
  197. package/src/unstable-core-do-not-import/router.ts +0 -370
  198. package/src/unstable-core-do-not-import/rpc/codes.ts +0 -44
  199. package/src/unstable-core-do-not-import/rpc/envelopes.ts +0 -136
  200. package/src/unstable-core-do-not-import/rpc/index.ts +0 -21
  201. package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +0 -85
  202. package/src/unstable-core-do-not-import/serialize.ts +0 -122
  203. package/src/unstable-core-do-not-import/transformer.ts +0 -202
  204. package/src/unstable-core-do-not-import/types.ts +0 -151
  205. package/src/unstable-core-do-not-import/utils.ts +0 -66
  206. package/unstable-core-do-not-import/index.d.ts +0 -1
  207. package/unstable-core-do-not-import/index.js +0 -1
@@ -1,206 +0,0 @@
1
- import { createFlatProxy } from './createProxy';
2
- import {
3
- defaultFormatter,
4
- type DefaultErrorShape,
5
- type ErrorFormatter,
6
- type ErrorFormatterShape,
7
- } from './error/formatter';
8
- import { createMiddlewareFactory } from './middleware';
9
- import { createBuilder } from './procedureBuilder';
10
- import {
11
- isServerDefault,
12
- type CreateRootConfigTypes,
13
- type RootConfig,
14
- type RootConfigTypes,
15
- type RuntimeConfig,
16
- } from './rootConfig';
17
- import {
18
- createCallerFactory,
19
- createRouterFactory,
20
- mergeRouters,
21
- } from './router';
22
- import {
23
- defaultTransformer,
24
- getDataTransformer,
25
- type DataTransformerOptions,
26
- type DefaultDataTransformer,
27
- } from './transformer';
28
- import type {
29
- Overwrite,
30
- PickFirstDefined,
31
- Unwrap,
32
- ValidateShape,
33
- } from './types';
34
-
35
- type PartialRootConfigTypes = Partial<RootConfigTypes>;
36
-
37
- type CreateRootConfigTypesFromPartial<TTypes extends PartialRootConfigTypes> =
38
- CreateRootConfigTypes<{
39
- ctx: TTypes['ctx'] extends RootConfigTypes['ctx'] ? TTypes['ctx'] : object;
40
- meta: TTypes['meta'] extends RootConfigTypes['meta']
41
- ? TTypes['meta']
42
- : object;
43
- errorShape: TTypes['errorShape'];
44
- transformer: DataTransformerOptions;
45
- }>;
46
-
47
- /**
48
- * TODO: This can be improved:
49
- * - We should be able to chain `.meta()`/`.context()` only once
50
- * - Simplify typings
51
- * - Doesn't need to be a class but it doesn't really hurt either
52
- */
53
-
54
- class TRPCBuilder<TParams extends PartialRootConfigTypes = object> {
55
- /**
56
- * Add a context shape as a generic to the root object
57
- * @link https://trpc.io/docs/v11/server/context
58
- */
59
- context<
60
- TNewContext extends
61
- | RootConfigTypes['ctx']
62
- | ((...args: unknown[]) => RootConfigTypes['ctx']),
63
- >() {
64
- type NextParams = Overwrite<TParams, { ctx: Unwrap<TNewContext> }>;
65
-
66
- return new TRPCBuilder<NextParams>();
67
- }
68
-
69
- /**
70
- * Add a meta shape as a generic to the root object
71
- * @link https://trpc.io/docs/v11/quickstart
72
- */
73
- meta<TNewMeta extends RootConfigTypes['meta']>() {
74
- type NextParams = Overwrite<TParams, { meta: TNewMeta }>;
75
-
76
- return new TRPCBuilder<NextParams>();
77
- }
78
-
79
- /**
80
- * Create the root object
81
- * @link https://trpc.io/docs/v11/server/routers#initialize-trpc
82
- */
83
- create<
84
- TOptions extends Partial<
85
- RuntimeConfig<CreateRootConfigTypesFromPartial<TParams>>
86
- >,
87
- >(
88
- options?:
89
- | ValidateShape<
90
- TOptions,
91
- Partial<RuntimeConfig<CreateRootConfigTypesFromPartial<TParams>>>
92
- >
93
- | undefined,
94
- ) {
95
- return createTRPCInner<TParams>()<TOptions>(options);
96
- }
97
- }
98
-
99
- /**
100
- * Builder to initialize the tRPC root object - use this exactly once per backend
101
- * @link https://trpc.io/docs/v11/quickstart
102
- */
103
- export const initTRPC = new TRPCBuilder();
104
-
105
- function createTRPCInner<TParams extends PartialRootConfigTypes>() {
106
- type $Generics = CreateRootConfigTypesFromPartial<TParams>;
107
-
108
- type $Context = $Generics['ctx'];
109
- type $Meta = $Generics['meta'];
110
- type $Runtime = Partial<RuntimeConfig<$Generics>>;
111
-
112
- return function initTRPCInner<TOptions extends $Runtime>(
113
- runtime?: ValidateShape<TOptions, $Runtime>,
114
- ) {
115
- type $Formatter = PickFirstDefined<
116
- TOptions['errorFormatter'],
117
- ErrorFormatter<$Context, DefaultErrorShape>
118
- >;
119
- type $Transformer = TOptions['transformer'] extends DataTransformerOptions
120
- ? TOptions['transformer']
121
- : DefaultDataTransformer;
122
- type $ErrorShape = ErrorFormatterShape<$Formatter>;
123
-
124
- type $Config = RootConfig<{
125
- ctx: $Context;
126
- meta: $Meta;
127
- errorShape: $ErrorShape;
128
- transformer: $Transformer;
129
- }>;
130
-
131
- const errorFormatter = runtime?.errorFormatter ?? defaultFormatter;
132
- const transformer = getDataTransformer(
133
- runtime?.transformer ?? defaultTransformer,
134
- ) as $Transformer;
135
-
136
- const config: $Config = {
137
- transformer,
138
- isDev:
139
- runtime?.isDev ??
140
- // eslint-disable-next-line @typescript-eslint/dot-notation
141
- globalThis.process?.env?.['NODE_ENV'] !== 'production',
142
- allowOutsideOfServer: runtime?.allowOutsideOfServer ?? false,
143
- errorFormatter,
144
- isServer: runtime?.isServer ?? isServerDefault,
145
- /**
146
- * @internal
147
- */
148
- $types: createFlatProxy((key) => {
149
- throw new Error(
150
- `Tried to access "$types.${key}" which is not available at runtime`,
151
- );
152
- }),
153
- };
154
-
155
- {
156
- // Server check
157
- const isServer: boolean = runtime?.isServer ?? isServerDefault;
158
-
159
- if (!isServer && runtime?.allowOutsideOfServer !== true) {
160
- throw new Error(
161
- `You're trying to use @trpc/server in a non-server environment. This is not supported by default.`,
162
- );
163
- }
164
- }
165
- return {
166
- /**
167
- * These are just types, they can't be used
168
- * @internal
169
- */
170
- _config: config,
171
- /**
172
- * Builder object for creating procedures
173
- * @link https://trpc.io/docs/v11/server/procedures
174
- */
175
- procedure: createBuilder<
176
- $Config['$types']['ctx'],
177
- $Config['$types']['meta']
178
- >({
179
- meta: runtime?.defaultMeta,
180
- }),
181
- /**
182
- * Create reusable middlewares
183
- * @link https://trpc.io/docs/v11/server/middlewares
184
- */
185
- middleware: createMiddlewareFactory<
186
- $Config['$types']['ctx'],
187
- $Config['$types']['meta']
188
- >(),
189
- /**
190
- * Create a router
191
- * @link https://trpc.io/docs/v11/server/routers
192
- */
193
- router: createRouterFactory<$Config>(config),
194
- /**
195
- * Merge Routers
196
- * @link https://trpc.io/docs/v11/server/merging-routers
197
- */
198
- mergeRouters,
199
- /**
200
- * Create a server-side caller for a router
201
- * @link https://trpc.io/docs/v11/server/server-side-calls
202
- */
203
- createCallerFactory: createCallerFactory<$Config>(),
204
- };
205
- };
206
- }
@@ -1,233 +0,0 @@
1
- import { TRPCError } from './error/TRPCError';
2
- import type { ParseFn } from './parser';
3
- import type { ProcedureType } from './procedure';
4
- import type { GetRawInputFn, Overwrite, Simplify } from './types';
5
- import { isObject } from './utils';
6
-
7
- /** @internal */
8
- export const middlewareMarker = 'middlewareMarker' as 'middlewareMarker' & {
9
- __brand: 'middlewareMarker';
10
- };
11
- type MiddlewareMarker = typeof middlewareMarker;
12
-
13
- interface MiddlewareResultBase {
14
- /**
15
- * All middlewares should pass through their `next()`'s output.
16
- * Requiring this marker makes sure that can't be forgotten at compile-time.
17
- */
18
- readonly marker: MiddlewareMarker;
19
- }
20
-
21
- interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase {
22
- ok: true;
23
- data: unknown;
24
- // this could be extended with `input`/`rawInput` later
25
- }
26
-
27
- interface MiddlewareErrorResult<_TContextOverride>
28
- extends MiddlewareResultBase {
29
- ok: false;
30
- error: TRPCError;
31
- }
32
-
33
- /**
34
- * @internal
35
- */
36
- export type MiddlewareResult<_TContextOverride> =
37
- | MiddlewareErrorResult<_TContextOverride>
38
- | MiddlewareOKResult<_TContextOverride>;
39
-
40
- /**
41
- * @internal
42
- */
43
- export interface MiddlewareBuilder<
44
- TContext,
45
- TMeta,
46
- TContextOverrides,
47
- TInputIn,
48
- > {
49
- /**
50
- * Create a new builder based on the current middleware builder
51
- */
52
- unstable_pipe<$ContextOverridesOut>(
53
- fn:
54
- | MiddlewareFunction<
55
- TContext,
56
- TMeta,
57
- TContextOverrides,
58
- $ContextOverridesOut,
59
- TInputIn
60
- >
61
- | MiddlewareBuilder<
62
- Overwrite<TContext, TContextOverrides>,
63
- TMeta,
64
- $ContextOverridesOut,
65
- TInputIn
66
- >,
67
- ): MiddlewareBuilder<
68
- TContext,
69
- TMeta,
70
- Overwrite<TContextOverrides, $ContextOverridesOut>,
71
- TInputIn
72
- >;
73
-
74
- /**
75
- * List of middlewares within this middleware builder
76
- */
77
- _middlewares: MiddlewareFunction<
78
- TContext,
79
- TMeta,
80
- TContextOverrides,
81
- object,
82
- TInputIn
83
- >[];
84
- }
85
-
86
- /**
87
- * @internal
88
- */
89
- export type MiddlewareFunction<
90
- TContext,
91
- TMeta,
92
- TContextOverridesIn,
93
- $ContextOverridesOut,
94
- TInputIn,
95
- > = {
96
- (opts: {
97
- ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
98
- type: ProcedureType;
99
- path: string;
100
- input: TInputIn;
101
- getRawInput: GetRawInputFn;
102
- meta: TMeta | undefined;
103
- next: {
104
- (): Promise<MiddlewareResult<TContextOverridesIn>>;
105
- <$ContextOverride>(opts: {
106
- ctx?: $ContextOverride;
107
- input?: unknown;
108
- }): Promise<MiddlewareResult<$ContextOverride>>;
109
- (opts: { getRawInput: GetRawInputFn }): Promise<
110
- MiddlewareResult<TContextOverridesIn>
111
- >;
112
- };
113
- }): Promise<MiddlewareResult<$ContextOverridesOut>>;
114
- _type?: string | undefined;
115
- };
116
-
117
- export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
118
- export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
119
- /**
120
- * @internal
121
- */
122
- export function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>() {
123
- function createMiddlewareInner(
124
- middlewares: AnyMiddlewareFunction[],
125
- ): AnyMiddlewareBuilder {
126
- return {
127
- _middlewares: middlewares,
128
- unstable_pipe(middlewareBuilderOrFn) {
129
- const pipedMiddleware =
130
- '_middlewares' in middlewareBuilderOrFn
131
- ? middlewareBuilderOrFn._middlewares
132
- : [middlewareBuilderOrFn];
133
-
134
- return createMiddlewareInner([...middlewares, ...pipedMiddleware]);
135
- },
136
- };
137
- }
138
-
139
- function createMiddleware<$ContextOverrides>(
140
- fn: MiddlewareFunction<
141
- TContext,
142
- TMeta,
143
- object,
144
- $ContextOverrides,
145
- TInputIn
146
- >,
147
- ): MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn> {
148
- return createMiddlewareInner([fn]);
149
- }
150
-
151
- return createMiddleware;
152
- }
153
-
154
- /**
155
- * Create a standalone middleware
156
- * @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares
157
- */
158
- export const experimental_standaloneMiddleware = <
159
- TCtx extends {
160
- ctx?: object;
161
- meta?: object;
162
- input?: unknown;
163
- },
164
- >() => ({
165
- create: createMiddlewareFactory<
166
- TCtx extends { ctx: infer T extends object } ? T : any,
167
- TCtx extends { meta: infer T extends object } ? T : object,
168
- TCtx extends { input: infer T } ? T : unknown
169
- >(),
170
- });
171
-
172
- /**
173
- * @internal
174
- * Please note, `trpc-openapi` uses this function.
175
- */
176
- export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
177
- const inputMiddleware: AnyMiddlewareFunction =
178
- async function inputValidatorMiddleware(opts) {
179
- let parsedInput: ReturnType<typeof parse>;
180
-
181
- const rawInput = await opts.getRawInput();
182
- try {
183
- parsedInput = await parse(rawInput);
184
- } catch (cause) {
185
- throw new TRPCError({
186
- code: 'BAD_REQUEST',
187
- cause,
188
- });
189
- }
190
-
191
- // Multiple input parsers
192
- const combinedInput =
193
- isObject(opts.input) && isObject(parsedInput)
194
- ? {
195
- ...opts.input,
196
- ...parsedInput,
197
- }
198
- : parsedInput;
199
-
200
- return opts.next({ input: combinedInput });
201
- };
202
- inputMiddleware._type = 'input';
203
- return inputMiddleware;
204
- }
205
-
206
- /**
207
- * @internal
208
- */
209
- export function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>) {
210
- const outputMiddleware: AnyMiddlewareFunction =
211
- async function outputValidatorMiddleware({ next }) {
212
- const result = await next();
213
- if (!result.ok) {
214
- // pass through failures without validating
215
- return result;
216
- }
217
- try {
218
- const data = await parse(result.data);
219
- return {
220
- ...result,
221
- data,
222
- };
223
- } catch (cause) {
224
- throw new TRPCError({
225
- message: 'Output validation failed',
226
- code: 'INTERNAL_SERVER_ERROR',
227
- cause,
228
- });
229
- }
230
- };
231
- outputMiddleware._type = 'output';
232
- return outputMiddleware;
233
- }
@@ -1,10 +0,0 @@
1
- export type { inferObservableValue } from './observable';
2
- export { isObservable, observable, observableToPromise } from './observable';
3
- export { map, share, tap } from './operators';
4
- export type {
5
- Observable,
6
- Observer,
7
- TeardownLogic,
8
- Unsubscribable,
9
- UnsubscribeFn,
10
- } from './types';
@@ -1,155 +0,0 @@
1
- import { identity } from '../utils';
2
- import type {
3
- Observable,
4
- Observer,
5
- OperatorFunction,
6
- TeardownLogic,
7
- UnaryFunction,
8
- } from './types';
9
-
10
- /** @public */
11
- export type inferObservableValue<TObservable> = TObservable extends Observable<
12
- infer TValue,
13
- unknown
14
- >
15
- ? TValue
16
- : never;
17
-
18
- /** @public */
19
- export function isObservable(x: unknown): x is Observable<unknown, unknown> {
20
- return typeof x === 'object' && x !== null && 'subscribe' in x;
21
- }
22
-
23
- /** @public */
24
- export function observable<TValue, TError = unknown>(
25
- subscribe: (observer: Observer<TValue, TError>) => TeardownLogic,
26
- ): Observable<TValue, TError> {
27
- const self: Observable<TValue, TError> = {
28
- subscribe(observer) {
29
- let teardownRef: TeardownLogic | null = null;
30
- let isDone = false;
31
- let unsubscribed = false;
32
- let teardownImmediately = false;
33
- function unsubscribe() {
34
- if (teardownRef === null) {
35
- teardownImmediately = true;
36
- return;
37
- }
38
- if (unsubscribed) {
39
- return;
40
- }
41
- unsubscribed = true;
42
-
43
- if (typeof teardownRef === 'function') {
44
- teardownRef();
45
- } else if (teardownRef) {
46
- teardownRef.unsubscribe();
47
- }
48
- }
49
- teardownRef = subscribe({
50
- next(value) {
51
- if (isDone) {
52
- return;
53
- }
54
- observer.next?.(value);
55
- },
56
- error(err) {
57
- if (isDone) {
58
- return;
59
- }
60
- isDone = true;
61
- observer.error?.(err);
62
- unsubscribe();
63
- },
64
- complete() {
65
- if (isDone) {
66
- return;
67
- }
68
- isDone = true;
69
- observer.complete?.();
70
- unsubscribe();
71
- },
72
- });
73
- if (teardownImmediately) {
74
- unsubscribe();
75
- }
76
- return {
77
- unsubscribe,
78
- };
79
- },
80
- pipe(
81
- ...operations: OperatorFunction<any, any, any, any>[]
82
- ): Observable<any, any> {
83
- return pipeFromArray(operations)(self) as any;
84
- },
85
- };
86
- return self;
87
- }
88
-
89
- function pipeFromArray<TSource, TReturn>(
90
- fns: UnaryFunction<TSource, TReturn>[],
91
- ): UnaryFunction<TSource, TReturn> {
92
- if (fns.length === 0) {
93
- return identity as UnaryFunction<any, any>;
94
- }
95
-
96
- if (fns.length === 1) {
97
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
98
- return fns[0]!;
99
- }
100
-
101
- return function piped(input: TSource): TReturn {
102
- return fns.reduce(
103
- (prev: any, fn: UnaryFunction<TSource, TReturn>) => fn(prev),
104
- input as any,
105
- );
106
- };
107
- }
108
-
109
- class ObservableAbortError extends Error {
110
- constructor(message: string) {
111
- super(message);
112
- this.name = 'ObservableAbortError';
113
- Object.setPrototypeOf(this, ObservableAbortError.prototype);
114
- }
115
- }
116
-
117
- /** @internal */
118
- export function observableToPromise<TValue>(
119
- observable: Observable<TValue, unknown>,
120
- ) {
121
- let abort: () => void;
122
- const promise = new Promise<TValue>((resolve, reject) => {
123
- let isDone = false;
124
- function onDone() {
125
- if (isDone) {
126
- return;
127
- }
128
- isDone = true;
129
- reject(new ObservableAbortError('This operation was aborted.'));
130
- obs$.unsubscribe();
131
- }
132
- const obs$ = observable.subscribe({
133
- next(data) {
134
- isDone = true;
135
- resolve(data);
136
- onDone();
137
- },
138
- error(data) {
139
- isDone = true;
140
- reject(data);
141
- onDone();
142
- },
143
- complete() {
144
- isDone = true;
145
- onDone();
146
- },
147
- });
148
- abort = onDone;
149
- });
150
- return {
151
- promise,
152
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
153
- abort: abort!,
154
- };
155
- }