@highstate/designer 0.7.3 → 0.7.6

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 (240) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/0cvrggvQ.js +6 -0
  3. package/.output/public/_nuxt/25W9uPmb.js +6 -0
  4. package/.output/public/_nuxt/4Ik7cdeQ.js +8 -0
  5. package/.output/public/_nuxt/5Rap-vPy.js +6 -0
  6. package/.output/public/_nuxt/B03wrqEc.js +6 -0
  7. package/.output/public/_nuxt/B5zXfXm9.js +6 -0
  8. package/.output/public/_nuxt/B9Xyijhd.js +6 -0
  9. package/.output/public/_nuxt/BFG1Mk7z.js +6 -0
  10. package/.output/public/_nuxt/BIHI7g3E.js +1 -0
  11. package/.output/public/_nuxt/BKlk5iyT.js +6 -0
  12. package/.output/public/_nuxt/BSkB5QuD.js +6 -0
  13. package/.output/public/_nuxt/BWmkvLm_.js +9 -0
  14. package/.output/public/_nuxt/BY4ic99o.js +1 -0
  15. package/.output/public/_nuxt/B_c3zf-v.js +6 -0
  16. package/.output/public/_nuxt/B_fMsGYe.js +6 -0
  17. package/.output/public/_nuxt/BaJupSGV.js +6 -0
  18. package/.output/public/_nuxt/BaLxmfj-.js +6 -0
  19. package/.output/public/_nuxt/BaiHcgzs.js +6 -0
  20. package/.output/public/_nuxt/Bc-ZgV77.js +6 -0
  21. package/.output/public/_nuxt/BfEKNvv3.js +7 -0
  22. package/.output/public/_nuxt/Bhzvs7bI.js +6 -0
  23. package/.output/public/_nuxt/Bio4gycK.js +6 -0
  24. package/.output/public/_nuxt/BoFRg7Ot.js +6 -0
  25. package/.output/public/_nuxt/Bqgm2twL.js +6 -0
  26. package/.output/public/_nuxt/BrdhNivz.js +1 -0
  27. package/.output/public/_nuxt/BrgZPUOV.js +6 -0
  28. package/.output/public/_nuxt/BsTHnhdd.js +7 -0
  29. package/.output/public/_nuxt/C5WLch3f.js +6 -0
  30. package/.output/public/_nuxt/C7NrX02N.js +6 -0
  31. package/.output/public/_nuxt/CCSDG5nI.js +6 -0
  32. package/.output/public/_nuxt/CDGzqUPQ.js +6 -0
  33. package/.output/public/_nuxt/CDntyWJ8.js +6 -0
  34. package/.output/public/_nuxt/CFKIUWau.js +6 -0
  35. package/.output/public/_nuxt/CFOPXBzS.js +6 -0
  36. package/.output/public/_nuxt/CLLBncYj.js +6 -0
  37. package/.output/public/_nuxt/COyEY5Pt.js +7 -0
  38. package/.output/public/_nuxt/CPajHgWi.js +6 -0
  39. package/.output/public/_nuxt/CVwtpugi.js +6 -0
  40. package/.output/public/_nuxt/CWsALi_N.js +6 -0
  41. package/.output/public/_nuxt/CX-rkNHf.js +6 -0
  42. package/.output/public/_nuxt/CXOwvkN_.js +6 -0
  43. package/.output/public/_nuxt/CdQndTaG.js +6 -0
  44. package/.output/public/_nuxt/Ce3n6wWz.js +6 -0
  45. package/.output/public/_nuxt/Cg7bfA9N.js +6 -0
  46. package/.output/public/_nuxt/Ch4PGxFq.js +6 -0
  47. package/.output/public/_nuxt/Cp1zYvxS.js +6 -0
  48. package/.output/public/_nuxt/CpIb_Oan.js +6 -0
  49. package/.output/public/_nuxt/Cpb6xl2v.js +6 -0
  50. package/.output/public/_nuxt/Cphgjts3.js +6 -0
  51. package/.output/public/_nuxt/CrUIUSRQ.js +1 -0
  52. package/.output/public/_nuxt/CwNk8-XU.js +6 -0
  53. package/.output/public/_nuxt/CxQiO5cn.js +8 -0
  54. package/.output/public/_nuxt/CzKuDChf.js +6 -0
  55. package/.output/public/_nuxt/D-MeaMDU.js +6 -0
  56. package/.output/public/_nuxt/D0A5LTnE.js +9 -0
  57. package/.output/public/_nuxt/D3h14YRZ.js +8 -0
  58. package/.output/public/_nuxt/D5C2fndG.js +6 -0
  59. package/.output/public/_nuxt/DDwshQtU.js +6 -0
  60. package/.output/public/_nuxt/DFGrbNda.js +16 -0
  61. package/.output/public/_nuxt/DGinXpNd.js +6 -0
  62. package/.output/public/_nuxt/DHaeiCBh.js +6 -0
  63. package/.output/public/_nuxt/DHbdnjwW.js +6 -0
  64. package/.output/public/_nuxt/DSZPf7rp.js +6 -0
  65. package/.output/public/_nuxt/DTECt2xU.js +6 -0
  66. package/.output/public/_nuxt/DXyYeYxl.js +6 -0
  67. package/.output/public/_nuxt/DYQUnd45.js +303 -0
  68. package/.output/public/_nuxt/Dd3NCNK9.js +6 -0
  69. package/.output/public/_nuxt/DfzH4Xui.js +6 -0
  70. package/.output/public/_nuxt/DgpMLyT9.js +6 -0
  71. package/.output/public/_nuxt/DgyLZaXg.js +6 -0
  72. package/.output/public/_nuxt/DnHyzjbg.js +6 -0
  73. package/.output/public/_nuxt/DqxlV1Dz.js +6 -0
  74. package/.output/public/_nuxt/DrQuvNYM.js +6 -0
  75. package/.output/public/_nuxt/Drc7WvVn.js +6 -0
  76. package/.output/public/_nuxt/DtSS2RIy.js +6 -0
  77. package/.output/public/_nuxt/DwJ7jVG9.js +8 -0
  78. package/.output/public/_nuxt/DwN8ib1V.js +1111 -0
  79. package/.output/public/_nuxt/DyP6w7ZV.js +6 -0
  80. package/.output/public/_nuxt/Tw7wswEv.js +6 -0
  81. package/.output/public/_nuxt/YWi4-JPR.js +6 -0
  82. package/.output/public/_nuxt/Zznr-cwX.js +6 -0
  83. package/.output/public/_nuxt/builds/latest.json +1 -0
  84. package/.output/public/_nuxt/builds/meta/652d9eb9-2c2b-4ab1-b1c2-d46efce134b3.json +1 -0
  85. package/.output/public/_nuxt/codicon.DCmgc-ay.ttf +0 -0
  86. package/.output/public/_nuxt/dUCx_-0o.js +6 -0
  87. package/.output/public/_nuxt/deUWdS0T.js +6 -0
  88. package/.output/public/_nuxt/edge-router-BFNVMcBx.js +4 -0
  89. package/.output/public/_nuxt/editor.worker-B6Jl4jUd.js +12 -0
  90. package/.output/public/_nuxt/entry.BD0Qz9HR.css +5 -0
  91. package/.output/public/_nuxt/error-404.D7tj2jQK.css +1 -0
  92. package/.output/public/_nuxt/error-500.TOCKLquH.css +1 -0
  93. package/.output/public/_nuxt/gYnoVL96.js +6 -0
  94. package/.output/public/_nuxt/graph-resolver-Y9hmyS-J.js +8 -0
  95. package/.output/public/_nuxt/i9-g7ZhI.js +6 -0
  96. package/.output/public/_nuxt/jDosRYr7.js +15 -0
  97. package/.output/public/_nuxt/materialdesignicons-webfont.B6OSyW2I.woff2 +0 -0
  98. package/.output/public/_nuxt/materialdesignicons-webfont.BpRar1d5.ttf +0 -0
  99. package/.output/public/_nuxt/materialdesignicons-webfont.Bvl3VxMs.woff +0 -0
  100. package/.output/public/_nuxt/materialdesignicons-webfont.TEmAk13K.eot +0 -0
  101. package/.output/public/_nuxt/nf6ki56Z.js +6 -0
  102. package/.output/public/_nuxt/pnP8ivHi.js +6 -0
  103. package/.output/public/_nuxt/rUNN04Wq.js +6 -0
  104. package/.output/public/_nuxt/tGk8EFnU.js +6 -0
  105. package/.output/public/_nuxt/yaml.worker-B8S0iqeR.js +411 -0
  106. package/.output/public/favicon.ico +0 -0
  107. package/.output/public/libavoid.wasm +0 -0
  108. package/.output/public/robots.txt +1 -0
  109. package/.output/server/index.mjs +13188 -0
  110. package/.output/server/index.mjs.map +1 -0
  111. package/.output/server/node_modules/@babel/parser/lib/index.js +14246 -0
  112. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  113. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/fetchRequestHandler.mjs +74 -0
  114. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +1 -0
  115. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/incomingMessageToRequest.mjs +119 -0
  116. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/index.mjs +2 -0
  117. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +92 -0
  118. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/writeResponse.mjs +79 -0
  119. package/.output/server/node_modules/@trpc/server/dist/adapters/ws.mjs +521 -0
  120. package/.output/server/node_modules/@trpc/server/dist/index.mjs +12 -0
  121. package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +175 -0
  122. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +73 -0
  123. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +79 -0
  124. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
  125. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
  126. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/abortError.mjs +10 -0
  127. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +229 -0
  128. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +76 -0
  129. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +39 -0
  130. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +570 -0
  131. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +80 -0
  132. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +90 -0
  133. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +52 -0
  134. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedure.mjs +7 -0
  135. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +198 -0
  136. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
  137. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +278 -0
  138. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +54 -0
  139. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +61 -0
  140. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +603 -0
  141. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +369 -0
  142. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +25 -0
  143. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +165 -0
  144. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +15 -0
  145. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +43 -0
  146. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +239 -0
  147. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  148. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
  149. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
  150. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +101 -0
  151. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +83 -0
  152. package/.output/server/node_modules/@trpc/server/dist/vendor/standard-schema-v1/error.mjs +26 -0
  153. package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +289 -0
  154. package/.output/server/node_modules/@trpc/server/package.json +156 -0
  155. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6690 -0
  156. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  157. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +686 -0
  158. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  159. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1404 -0
  160. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  161. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1789 -0
  162. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  163. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6654 -0
  164. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  165. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1669 -0
  166. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  167. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +857 -0
  168. package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  169. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +594 -0
  170. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  171. package/.output/server/node_modules/devalue/index.js +3 -0
  172. package/.output/server/node_modules/devalue/package.json +34 -0
  173. package/.output/server/node_modules/devalue/src/base64.js +110 -0
  174. package/.output/server/node_modules/devalue/src/constants.js +6 -0
  175. package/.output/server/node_modules/devalue/src/parse.js +160 -0
  176. package/.output/server/node_modules/devalue/src/stringify.js +232 -0
  177. package/.output/server/node_modules/devalue/src/uneval.js +351 -0
  178. package/.output/server/node_modules/devalue/src/utils.js +113 -0
  179. package/.output/server/node_modules/entities/lib/decode.js +536 -0
  180. package/.output/server/node_modules/entities/lib/decode_codepoint.js +76 -0
  181. package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  182. package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  183. package/.output/server/node_modules/entities/package.json +90 -0
  184. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  185. package/.output/server/node_modules/estree-walker/package.json +37 -0
  186. package/.output/server/node_modules/hookable/dist/index.mjs +290 -0
  187. package/.output/server/node_modules/hookable/package.json +49 -0
  188. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  189. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  190. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  191. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  192. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  193. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  194. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  195. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  196. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  197. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  198. package/.output/server/node_modules/source-map-js/package.json +71 -0
  199. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  200. package/.output/server/node_modules/ufo/dist/index.mjs +630 -0
  201. package/.output/server/node_modules/ufo/package.json +47 -0
  202. package/.output/server/node_modules/unhead/dist/plugins.mjs +94 -0
  203. package/.output/server/node_modules/unhead/dist/server.mjs +220 -0
  204. package/.output/server/node_modules/unhead/dist/shared/unhead.C13swrCa.mjs +48 -0
  205. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  206. package/.output/server/node_modules/unhead/dist/shared/unhead.Cp0iF6eN.mjs +177 -0
  207. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  208. package/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +70 -0
  209. package/.output/server/node_modules/unhead/dist/shared/unhead.DeCxexjU.mjs +166 -0
  210. package/.output/server/node_modules/unhead/dist/shared/unhead.Txd0XTIP.mjs +172 -0
  211. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  212. package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  213. package/.output/server/node_modules/unhead/package.json +101 -0
  214. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  215. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  216. package/.output/server/node_modules/vue/index.js +7 -0
  217. package/.output/server/node_modules/vue/index.mjs +1 -0
  218. package/.output/server/node_modules/vue/package.json +112 -0
  219. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  220. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +196 -0
  221. package/.output/server/node_modules/vue-bundle-renderer/package.json +50 -0
  222. package/.output/server/node_modules/ws/lib/buffer-util.js +131 -0
  223. package/.output/server/node_modules/ws/lib/constants.js +18 -0
  224. package/.output/server/node_modules/ws/lib/event-target.js +292 -0
  225. package/.output/server/node_modules/ws/lib/extension.js +203 -0
  226. package/.output/server/node_modules/ws/lib/limiter.js +55 -0
  227. package/.output/server/node_modules/ws/lib/permessage-deflate.js +514 -0
  228. package/.output/server/node_modules/ws/lib/receiver.js +706 -0
  229. package/.output/server/node_modules/ws/lib/sender.js +602 -0
  230. package/.output/server/node_modules/ws/lib/stream.js +161 -0
  231. package/.output/server/node_modules/ws/lib/subprotocol.js +62 -0
  232. package/.output/server/node_modules/ws/lib/validation.js +152 -0
  233. package/.output/server/node_modules/ws/lib/websocket-server.js +540 -0
  234. package/.output/server/node_modules/ws/lib/websocket.js +1388 -0
  235. package/.output/server/node_modules/ws/package.json +69 -0
  236. package/.output/server/node_modules/ws/wrapper.mjs +8 -0
  237. package/.output/server/node_modules/zod/lib/index.mjs +4405 -0
  238. package/.output/server/node_modules/zod/package.json +122 -0
  239. package/.output/server/package.json +1 -0
  240. package/package.json +4 -4
@@ -0,0 +1,39 @@
1
+ import { TRPCError } from '../error/TRPCError.mjs';
2
+ import { isObject } from '../utils.mjs';
3
+
4
+ function parseConnectionParamsFromUnknown(parsed) {
5
+ try {
6
+ if (parsed === null) {
7
+ return null;
8
+ }
9
+ if (!isObject(parsed)) {
10
+ throw new Error('Expected object');
11
+ }
12
+ const nonStringValues = Object.entries(parsed).filter(([_key, value])=>typeof value !== 'string');
13
+ if (nonStringValues.length > 0) {
14
+ throw new Error(`Expected connectionParams to be string values. Got ${nonStringValues.map(([key, value])=>`${key}: ${typeof value}`).join(', ')}`);
15
+ }
16
+ return parsed;
17
+ } catch (cause) {
18
+ throw new TRPCError({
19
+ code: 'PARSE_ERROR',
20
+ message: 'Invalid connection params shape',
21
+ cause
22
+ });
23
+ }
24
+ }
25
+ function parseConnectionParamsFromString(str) {
26
+ let parsed;
27
+ try {
28
+ parsed = JSON.parse(str);
29
+ } catch (cause) {
30
+ throw new TRPCError({
31
+ code: 'PARSE_ERROR',
32
+ message: 'Not JSON-parsable query params',
33
+ cause
34
+ });
35
+ }
36
+ return parseConnectionParamsFromUnknown(parsed);
37
+ }
38
+
39
+ export { parseConnectionParamsFromString, parseConnectionParamsFromUnknown };
@@ -0,0 +1,570 @@
1
+ import { isObservable, observableToAsyncIterable } from '../../observable/observable.mjs';
2
+ import { getErrorShape } from '../error/getErrorShape.mjs';
3
+ import { getTRPCErrorFromUnknown, TRPCError } from '../error/TRPCError.mjs';
4
+ import { jsonlStreamProducer, isPromise } from '../stream/jsonl.mjs';
5
+ import { sseStreamProducer, sseHeaders } from '../stream/sse.mjs';
6
+ import { transformTRPCResponse } from '../transformer.mjs';
7
+ import { run, isAsyncIterable, isObject } from '../utils.mjs';
8
+ import { getRequestInfo } from './contentType.mjs';
9
+ import { getHTTPStatusCode } from './getHTTPStatusCode.mjs';
10
+
11
+ function errorToAsyncIterable(err) {
12
+ return run(async function*() {
13
+ throw err;
14
+ });
15
+ }
16
+ const TYPE_ACCEPTED_METHOD_MAP = {
17
+ mutation: [
18
+ 'POST'
19
+ ],
20
+ query: [
21
+ 'GET'
22
+ ],
23
+ subscription: [
24
+ 'GET'
25
+ ]
26
+ };
27
+ const TYPE_ACCEPTED_METHOD_MAP_WITH_METHOD_OVERRIDE = {
28
+ // never allow GET to do a mutation
29
+ mutation: [
30
+ 'POST'
31
+ ],
32
+ query: [
33
+ 'GET',
34
+ 'POST'
35
+ ],
36
+ subscription: [
37
+ 'GET',
38
+ 'POST'
39
+ ]
40
+ };
41
+ function initResponse(initOpts) {
42
+ const { ctx, info, responseMeta, untransformedJSON, errors = [], headers } = initOpts;
43
+ let status = untransformedJSON ? getHTTPStatusCode(untransformedJSON) : 200;
44
+ const eagerGeneration = !untransformedJSON;
45
+ const data = eagerGeneration ? [] : Array.isArray(untransformedJSON) ? untransformedJSON : [
46
+ untransformedJSON
47
+ ];
48
+ const meta = responseMeta?.({
49
+ ctx,
50
+ info,
51
+ paths: info?.calls.map((call)=>call.path),
52
+ data,
53
+ errors,
54
+ eagerGeneration,
55
+ type: info?.calls.find((call)=>call.procedure?._def.type)?.procedure?._def.type ?? 'unknown'
56
+ }) ?? {};
57
+ if (meta.headers) {
58
+ if (meta.headers instanceof Headers) {
59
+ for (const [key, value] of meta.headers.entries()){
60
+ headers.append(key, value);
61
+ }
62
+ } else {
63
+ /**
64
+ * @deprecated, delete in v12
65
+ */ for (const [key, value] of Object.entries(meta.headers)){
66
+ if (Array.isArray(value)) {
67
+ for (const v of value){
68
+ headers.append(key, v);
69
+ }
70
+ } else if (typeof value === 'string') {
71
+ headers.set(key, value);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ if (meta.status) {
77
+ status = meta.status;
78
+ }
79
+ return {
80
+ status
81
+ };
82
+ }
83
+ function caughtErrorToData(cause, errorOpts) {
84
+ const { router, req, onError } = errorOpts.opts;
85
+ const error = getTRPCErrorFromUnknown(cause);
86
+ onError?.({
87
+ error,
88
+ path: errorOpts.path,
89
+ input: errorOpts.input,
90
+ ctx: errorOpts.ctx,
91
+ type: errorOpts.type,
92
+ req
93
+ });
94
+ const untransformedJSON = {
95
+ error: getErrorShape({
96
+ config: router._def._config,
97
+ error,
98
+ type: errorOpts.type,
99
+ path: errorOpts.path,
100
+ input: errorOpts.input,
101
+ ctx: errorOpts.ctx
102
+ })
103
+ };
104
+ const transformedJSON = transformTRPCResponse(router._def._config, untransformedJSON);
105
+ const body = JSON.stringify(transformedJSON);
106
+ return {
107
+ error,
108
+ untransformedJSON,
109
+ body
110
+ };
111
+ }
112
+ /**
113
+ * Check if a value is a stream-like object
114
+ * - if it's an async iterable
115
+ * - if it's an object with async iterables or promises
116
+ */ function isDataStream(v) {
117
+ if (!isObject(v)) {
118
+ return false;
119
+ }
120
+ if (isAsyncIterable(v)) {
121
+ return true;
122
+ }
123
+ return Object.values(v).some(isPromise) || Object.values(v).some(isAsyncIterable);
124
+ }
125
+ async function resolveResponse(opts) {
126
+ const { router, req } = opts;
127
+ const headers = new Headers([
128
+ [
129
+ 'vary',
130
+ 'trpc-accept'
131
+ ]
132
+ ]);
133
+ const config = router._def._config;
134
+ const url = new URL(req.url);
135
+ if (req.method === 'HEAD') {
136
+ // can be used for lambda warmup
137
+ return new Response(null, {
138
+ status: 204
139
+ });
140
+ }
141
+ const allowBatching = opts.allowBatching ?? opts.batching?.enabled ?? true;
142
+ const allowMethodOverride = (opts.allowMethodOverride ?? false) && req.method === 'POST';
143
+ const infoTuple = await run(async ()=>{
144
+ try {
145
+ return [
146
+ undefined,
147
+ await getRequestInfo({
148
+ req,
149
+ path: decodeURIComponent(opts.path),
150
+ router,
151
+ searchParams: url.searchParams,
152
+ headers: opts.req.headers,
153
+ url
154
+ })
155
+ ];
156
+ } catch (cause) {
157
+ return [
158
+ getTRPCErrorFromUnknown(cause),
159
+ undefined
160
+ ];
161
+ }
162
+ });
163
+ const ctxManager = run(()=>{
164
+ let result = undefined;
165
+ return {
166
+ valueOrUndefined: ()=>{
167
+ if (!result) {
168
+ return undefined;
169
+ }
170
+ return result[1];
171
+ },
172
+ value: ()=>{
173
+ const [err, ctx] = result;
174
+ if (err) {
175
+ throw err;
176
+ }
177
+ return ctx;
178
+ },
179
+ create: async (info)=>{
180
+ if (result) {
181
+ throw new Error('This should only be called once - report a bug in tRPC');
182
+ }
183
+ try {
184
+ const ctx = await opts.createContext({
185
+ info
186
+ });
187
+ result = [
188
+ undefined,
189
+ ctx
190
+ ];
191
+ } catch (cause) {
192
+ result = [
193
+ getTRPCErrorFromUnknown(cause),
194
+ undefined
195
+ ];
196
+ }
197
+ }
198
+ };
199
+ });
200
+ const methodMapper = allowMethodOverride ? TYPE_ACCEPTED_METHOD_MAP_WITH_METHOD_OVERRIDE : TYPE_ACCEPTED_METHOD_MAP;
201
+ /**
202
+ * @deprecated
203
+ */ const isStreamCall = req.headers.get('trpc-accept') === 'application/jsonl';
204
+ const experimentalSSE = config.sse?.enabled ?? true;
205
+ try {
206
+ const [infoError, info] = infoTuple;
207
+ if (infoError) {
208
+ throw infoError;
209
+ }
210
+ if (info.isBatchCall && !allowBatching) {
211
+ throw new TRPCError({
212
+ code: 'BAD_REQUEST',
213
+ message: `Batching is not enabled on the server`
214
+ });
215
+ }
216
+ /* istanbul ignore if -- @preserve */ if (isStreamCall && !info.isBatchCall) {
217
+ throw new TRPCError({
218
+ message: `Streaming requests must be batched (you can do a batch of 1)`,
219
+ code: 'BAD_REQUEST'
220
+ });
221
+ }
222
+ await ctxManager.create(info);
223
+ const rpcCalls = info.calls.map(async (call)=>{
224
+ const proc = call.procedure;
225
+ try {
226
+ if (opts.error) {
227
+ throw opts.error;
228
+ }
229
+ if (!proc) {
230
+ throw new TRPCError({
231
+ code: 'NOT_FOUND',
232
+ message: `No procedure found on path "${call.path}"`
233
+ });
234
+ }
235
+ if (!methodMapper[proc._def.type].includes(req.method)) {
236
+ throw new TRPCError({
237
+ code: 'METHOD_NOT_SUPPORTED',
238
+ message: `Unsupported ${req.method}-request to ${proc._def.type} procedure at path "${call.path}"`
239
+ });
240
+ }
241
+ if (proc._def.type === 'subscription') {
242
+ /* istanbul ignore if -- @preserve */ if (info.isBatchCall) {
243
+ throw new TRPCError({
244
+ code: 'BAD_REQUEST',
245
+ message: `Cannot batch subscription calls`
246
+ });
247
+ }
248
+ }
249
+ const data = await proc({
250
+ path: call.path,
251
+ getRawInput: call.getRawInput,
252
+ ctx: ctxManager.value(),
253
+ type: proc._def.type,
254
+ signal: opts.req.signal
255
+ });
256
+ return [
257
+ undefined,
258
+ {
259
+ data
260
+ }
261
+ ];
262
+ } catch (cause) {
263
+ const error = getTRPCErrorFromUnknown(cause);
264
+ const input = call.result();
265
+ opts.onError?.({
266
+ error,
267
+ path: call.path,
268
+ input,
269
+ ctx: ctxManager.valueOrUndefined(),
270
+ type: call.procedure?._def.type ?? 'unknown',
271
+ req: opts.req
272
+ });
273
+ return [
274
+ error,
275
+ undefined
276
+ ];
277
+ }
278
+ });
279
+ // ----------- response handlers -----------
280
+ if (!info.isBatchCall) {
281
+ const [call] = info.calls;
282
+ const [error, result] = await rpcCalls[0];
283
+ switch(info.type){
284
+ case 'unknown':
285
+ case 'mutation':
286
+ case 'query':
287
+ {
288
+ // httpLink
289
+ headers.set('content-type', 'application/json');
290
+ if (isDataStream(result?.data)) {
291
+ throw new TRPCError({
292
+ code: 'UNSUPPORTED_MEDIA_TYPE',
293
+ message: 'Cannot use stream-like response in non-streaming request - use httpBatchStreamLink'
294
+ });
295
+ }
296
+ const res = error ? {
297
+ error: getErrorShape({
298
+ config,
299
+ ctx: ctxManager.valueOrUndefined(),
300
+ error,
301
+ input: call.result(),
302
+ path: call.path,
303
+ type: info.type
304
+ })
305
+ } : {
306
+ result: {
307
+ data: result.data
308
+ }
309
+ };
310
+ const headResponse = initResponse({
311
+ ctx: ctxManager.valueOrUndefined(),
312
+ info,
313
+ responseMeta: opts.responseMeta,
314
+ errors: error ? [
315
+ error
316
+ ] : [],
317
+ headers,
318
+ untransformedJSON: [
319
+ res
320
+ ]
321
+ });
322
+ return new Response(JSON.stringify(transformTRPCResponse(config, res)), {
323
+ status: headResponse.status,
324
+ headers
325
+ });
326
+ }
327
+ case 'subscription':
328
+ {
329
+ // httpSubscriptionLink
330
+ const iterable = run(()=>{
331
+ if (error) {
332
+ return errorToAsyncIterable(error);
333
+ }
334
+ if (!experimentalSSE) {
335
+ return errorToAsyncIterable(new TRPCError({
336
+ code: 'METHOD_NOT_SUPPORTED',
337
+ message: 'Missing experimental flag "sseSubscriptions"'
338
+ }));
339
+ }
340
+ if (!isObservable(result.data) && !isAsyncIterable(result.data)) {
341
+ return errorToAsyncIterable(new TRPCError({
342
+ message: `Subscription ${call.path} did not return an observable or a AsyncGenerator`,
343
+ code: 'INTERNAL_SERVER_ERROR'
344
+ }));
345
+ }
346
+ const dataAsIterable = isObservable(result.data) ? observableToAsyncIterable(result.data, opts.req.signal) : result.data;
347
+ return dataAsIterable;
348
+ });
349
+ const stream = sseStreamProducer({
350
+ ...config.sse,
351
+ data: iterable,
352
+ serialize: (v)=>config.transformer.output.serialize(v),
353
+ formatError (errorOpts) {
354
+ const error = getTRPCErrorFromUnknown(errorOpts.error);
355
+ const input = call?.result();
356
+ const path = call?.path;
357
+ const type = call?.procedure?._def.type ?? 'unknown';
358
+ opts.onError?.({
359
+ error,
360
+ path,
361
+ input,
362
+ ctx: ctxManager.valueOrUndefined(),
363
+ req: opts.req,
364
+ type
365
+ });
366
+ const shape = getErrorShape({
367
+ config,
368
+ ctx: ctxManager.valueOrUndefined(),
369
+ error,
370
+ input,
371
+ path,
372
+ type
373
+ });
374
+ return shape;
375
+ }
376
+ });
377
+ for (const [key, value] of Object.entries(sseHeaders)){
378
+ headers.set(key, value);
379
+ }
380
+ const headResponse = initResponse({
381
+ ctx: ctxManager.valueOrUndefined(),
382
+ info,
383
+ responseMeta: opts.responseMeta,
384
+ errors: [],
385
+ headers,
386
+ untransformedJSON: null
387
+ });
388
+ return new Response(stream, {
389
+ headers,
390
+ status: headResponse.status
391
+ });
392
+ }
393
+ }
394
+ }
395
+ // batch response handlers
396
+ if (info.accept === 'application/jsonl') {
397
+ // httpBatchStreamLink
398
+ headers.set('content-type', 'application/json');
399
+ headers.set('transfer-encoding', 'chunked');
400
+ const headResponse = initResponse({
401
+ ctx: ctxManager.valueOrUndefined(),
402
+ info,
403
+ responseMeta: opts.responseMeta,
404
+ errors: [],
405
+ headers,
406
+ untransformedJSON: null
407
+ });
408
+ const stream = jsonlStreamProducer({
409
+ ...config.jsonl,
410
+ /**
411
+ * Example structure for `maxDepth: 4`:
412
+ * {
413
+ * // 1
414
+ * 0: {
415
+ * // 2
416
+ * result: {
417
+ * // 3
418
+ * data: // 4
419
+ * }
420
+ * }
421
+ * }
422
+ */ maxDepth: Infinity,
423
+ data: rpcCalls.map(async (res)=>{
424
+ const [error, result] = await res;
425
+ const call = info.calls[0];
426
+ if (error) {
427
+ return {
428
+ error: getErrorShape({
429
+ config,
430
+ ctx: ctxManager.valueOrUndefined(),
431
+ error,
432
+ input: call.result(),
433
+ path: call.path,
434
+ type: call.procedure?._def.type ?? 'unknown'
435
+ })
436
+ };
437
+ }
438
+ /**
439
+ * Not very pretty, but we need to wrap nested data in promises
440
+ * Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
441
+ */ const iterable = isObservable(result.data) ? observableToAsyncIterable(result.data, opts.req.signal) : Promise.resolve(result.data);
442
+ return {
443
+ result: Promise.resolve({
444
+ data: iterable
445
+ })
446
+ };
447
+ }),
448
+ serialize: config.transformer.output.serialize,
449
+ onError: (cause)=>{
450
+ opts.onError?.({
451
+ error: getTRPCErrorFromUnknown(cause),
452
+ path: undefined,
453
+ input: undefined,
454
+ ctx: ctxManager.valueOrUndefined(),
455
+ req: opts.req,
456
+ type: info?.type ?? 'unknown'
457
+ });
458
+ },
459
+ formatError (errorOpts) {
460
+ const call = info?.calls[errorOpts.path[0]];
461
+ const error = getTRPCErrorFromUnknown(errorOpts.error);
462
+ const input = call?.result();
463
+ const path = call?.path;
464
+ const type = call?.procedure?._def.type ?? 'unknown';
465
+ // no need to call `onError` here as it will be propagated through the stream itself
466
+ const shape = getErrorShape({
467
+ config,
468
+ ctx: ctxManager.valueOrUndefined(),
469
+ error,
470
+ input,
471
+ path,
472
+ type
473
+ });
474
+ return shape;
475
+ }
476
+ });
477
+ return new Response(stream, {
478
+ headers,
479
+ status: headResponse.status
480
+ });
481
+ }
482
+ // httpBatchLink
483
+ /**
484
+ * Non-streaming response:
485
+ * - await all responses in parallel, blocking on the slowest one
486
+ * - create headers with known response body
487
+ * - return a complete HTTPResponse
488
+ */ headers.set('content-type', 'application/json');
489
+ const results = (await Promise.all(rpcCalls)).map((res)=>{
490
+ const [error, result] = res;
491
+ if (error) {
492
+ return res;
493
+ }
494
+ if (isDataStream(result.data)) {
495
+ return [
496
+ new TRPCError({
497
+ code: 'UNSUPPORTED_MEDIA_TYPE',
498
+ message: 'Cannot use stream-like response in non-streaming request - use httpBatchStreamLink'
499
+ }),
500
+ undefined
501
+ ];
502
+ }
503
+ return res;
504
+ });
505
+ const resultAsRPCResponse = results.map(([error, result], index)=>{
506
+ const call = info.calls[index];
507
+ if (error) {
508
+ return {
509
+ error: getErrorShape({
510
+ config,
511
+ ctx: ctxManager.valueOrUndefined(),
512
+ error,
513
+ input: call.result(),
514
+ path: call.path,
515
+ type: call.procedure?._def.type ?? 'unknown'
516
+ })
517
+ };
518
+ }
519
+ return {
520
+ result: {
521
+ data: result.data
522
+ }
523
+ };
524
+ });
525
+ const errors = results.map(([error])=>error).filter(Boolean);
526
+ const headResponse = initResponse({
527
+ ctx: ctxManager.valueOrUndefined(),
528
+ info,
529
+ responseMeta: opts.responseMeta,
530
+ untransformedJSON: resultAsRPCResponse,
531
+ errors,
532
+ headers
533
+ });
534
+ return new Response(JSON.stringify(transformTRPCResponse(config, resultAsRPCResponse)), {
535
+ status: headResponse.status,
536
+ headers
537
+ });
538
+ } catch (cause) {
539
+ const [_infoError, info] = infoTuple;
540
+ const ctx = ctxManager.valueOrUndefined();
541
+ // we get here if
542
+ // - batching is called when it's not enabled
543
+ // - `createContext()` throws
544
+ // - `router._def._config.transformer.output.serialize()` throws
545
+ // - post body is too large
546
+ // - input deserialization fails
547
+ // - `errorFormatter` return value is malformed
548
+ const { error, untransformedJSON, body } = caughtErrorToData(cause, {
549
+ opts,
550
+ ctx: ctxManager.valueOrUndefined(),
551
+ type: info?.type ?? 'unknown'
552
+ });
553
+ const headResponse = initResponse({
554
+ ctx,
555
+ info,
556
+ responseMeta: opts.responseMeta,
557
+ untransformedJSON,
558
+ errors: [
559
+ error
560
+ ],
561
+ headers
562
+ });
563
+ return new Response(body, {
564
+ status: headResponse.status,
565
+ headers
566
+ });
567
+ }
568
+ }
569
+
570
+ export { resolveResponse };
@@ -0,0 +1,80 @@
1
+ import { defaultFormatter } from './error/formatter.mjs';
2
+ import { createMiddlewareFactory } from './middleware.mjs';
3
+ import { createBuilder } from './procedureBuilder.mjs';
4
+ import { isServerDefault } from './rootConfig.mjs';
5
+ import { createCallerFactory, mergeRouters, createRouterFactory } from './router.mjs';
6
+ import { getDataTransformer, defaultTransformer } from './transformer.mjs';
7
+
8
+ class TRPCBuilder {
9
+ /**
10
+ * Add a context shape as a generic to the root object
11
+ * @see https://trpc.io/docs/v11/server/context
12
+ */ context() {
13
+ return new TRPCBuilder();
14
+ }
15
+ /**
16
+ * Add a meta shape as a generic to the root object
17
+ * @see https://trpc.io/docs/v11/quickstart
18
+ */ meta() {
19
+ return new TRPCBuilder();
20
+ }
21
+ /**
22
+ * Create the root object
23
+ * @see https://trpc.io/docs/v11/server/routers#initialize-trpc
24
+ */ create(opts) {
25
+ const config = {
26
+ ...opts,
27
+ transformer: getDataTransformer(opts?.transformer ?? defaultTransformer),
28
+ isDev: opts?.isDev ?? // eslint-disable-next-line @typescript-eslint/dot-notation
29
+ globalThis.process?.env['NODE_ENV'] !== 'production',
30
+ allowOutsideOfServer: opts?.allowOutsideOfServer ?? false,
31
+ errorFormatter: opts?.errorFormatter ?? defaultFormatter,
32
+ isServer: opts?.isServer ?? isServerDefault,
33
+ /**
34
+ * These are just types, they can't be used at runtime
35
+ * @internal
36
+ */ $types: null
37
+ };
38
+ {
39
+ // Server check
40
+ const isServer = opts?.isServer ?? isServerDefault;
41
+ if (!isServer && opts?.allowOutsideOfServer !== true) {
42
+ throw new Error(`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`);
43
+ }
44
+ }
45
+ return {
46
+ /**
47
+ * Your router config
48
+ * @internal
49
+ */ _config: config,
50
+ /**
51
+ * Builder object for creating procedures
52
+ * @see https://trpc.io/docs/v11/server/procedures
53
+ */ procedure: createBuilder({
54
+ meta: opts?.defaultMeta
55
+ }),
56
+ /**
57
+ * Create reusable middlewares
58
+ * @see https://trpc.io/docs/v11/server/middlewares
59
+ */ middleware: createMiddlewareFactory(),
60
+ /**
61
+ * Create a router
62
+ * @see https://trpc.io/docs/v11/server/routers
63
+ */ router: createRouterFactory(config),
64
+ /**
65
+ * Merge Routers
66
+ * @see https://trpc.io/docs/v11/server/merging-routers
67
+ */ mergeRouters,
68
+ /**
69
+ * Create a server-side caller for a router
70
+ * @see https://trpc.io/docs/v11/server/server-side-calls
71
+ */ createCallerFactory: createCallerFactory()
72
+ };
73
+ }
74
+ }
75
+ /**
76
+ * Builder to initialize the tRPC root object - use this exactly once per backend
77
+ * @see https://trpc.io/docs/v11/quickstart
78
+ */ const initTRPC = new TRPCBuilder();
79
+
80
+ export { initTRPC };