@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.
- package/.output/nitro.json +15 -0
- package/.output/public/_nuxt/0cvrggvQ.js +6 -0
- package/.output/public/_nuxt/25W9uPmb.js +6 -0
- package/.output/public/_nuxt/4Ik7cdeQ.js +8 -0
- package/.output/public/_nuxt/5Rap-vPy.js +6 -0
- package/.output/public/_nuxt/B03wrqEc.js +6 -0
- package/.output/public/_nuxt/B5zXfXm9.js +6 -0
- package/.output/public/_nuxt/B9Xyijhd.js +6 -0
- package/.output/public/_nuxt/BFG1Mk7z.js +6 -0
- package/.output/public/_nuxt/BIHI7g3E.js +1 -0
- package/.output/public/_nuxt/BKlk5iyT.js +6 -0
- package/.output/public/_nuxt/BSkB5QuD.js +6 -0
- package/.output/public/_nuxt/BWmkvLm_.js +9 -0
- package/.output/public/_nuxt/BY4ic99o.js +1 -0
- package/.output/public/_nuxt/B_c3zf-v.js +6 -0
- package/.output/public/_nuxt/B_fMsGYe.js +6 -0
- package/.output/public/_nuxt/BaJupSGV.js +6 -0
- package/.output/public/_nuxt/BaLxmfj-.js +6 -0
- package/.output/public/_nuxt/BaiHcgzs.js +6 -0
- package/.output/public/_nuxt/Bc-ZgV77.js +6 -0
- package/.output/public/_nuxt/BfEKNvv3.js +7 -0
- package/.output/public/_nuxt/Bhzvs7bI.js +6 -0
- package/.output/public/_nuxt/Bio4gycK.js +6 -0
- package/.output/public/_nuxt/BoFRg7Ot.js +6 -0
- package/.output/public/_nuxt/Bqgm2twL.js +6 -0
- package/.output/public/_nuxt/BrdhNivz.js +1 -0
- package/.output/public/_nuxt/BrgZPUOV.js +6 -0
- package/.output/public/_nuxt/BsTHnhdd.js +7 -0
- package/.output/public/_nuxt/C5WLch3f.js +6 -0
- package/.output/public/_nuxt/C7NrX02N.js +6 -0
- package/.output/public/_nuxt/CCSDG5nI.js +6 -0
- package/.output/public/_nuxt/CDGzqUPQ.js +6 -0
- package/.output/public/_nuxt/CDntyWJ8.js +6 -0
- package/.output/public/_nuxt/CFKIUWau.js +6 -0
- package/.output/public/_nuxt/CFOPXBzS.js +6 -0
- package/.output/public/_nuxt/CLLBncYj.js +6 -0
- package/.output/public/_nuxt/COyEY5Pt.js +7 -0
- package/.output/public/_nuxt/CPajHgWi.js +6 -0
- package/.output/public/_nuxt/CVwtpugi.js +6 -0
- package/.output/public/_nuxt/CWsALi_N.js +6 -0
- package/.output/public/_nuxt/CX-rkNHf.js +6 -0
- package/.output/public/_nuxt/CXOwvkN_.js +6 -0
- package/.output/public/_nuxt/CdQndTaG.js +6 -0
- package/.output/public/_nuxt/Ce3n6wWz.js +6 -0
- package/.output/public/_nuxt/Cg7bfA9N.js +6 -0
- package/.output/public/_nuxt/Ch4PGxFq.js +6 -0
- package/.output/public/_nuxt/Cp1zYvxS.js +6 -0
- package/.output/public/_nuxt/CpIb_Oan.js +6 -0
- package/.output/public/_nuxt/Cpb6xl2v.js +6 -0
- package/.output/public/_nuxt/Cphgjts3.js +6 -0
- package/.output/public/_nuxt/CrUIUSRQ.js +1 -0
- package/.output/public/_nuxt/CwNk8-XU.js +6 -0
- package/.output/public/_nuxt/CxQiO5cn.js +8 -0
- package/.output/public/_nuxt/CzKuDChf.js +6 -0
- package/.output/public/_nuxt/D-MeaMDU.js +6 -0
- package/.output/public/_nuxt/D0A5LTnE.js +9 -0
- package/.output/public/_nuxt/D3h14YRZ.js +8 -0
- package/.output/public/_nuxt/D5C2fndG.js +6 -0
- package/.output/public/_nuxt/DDwshQtU.js +6 -0
- package/.output/public/_nuxt/DFGrbNda.js +16 -0
- package/.output/public/_nuxt/DGinXpNd.js +6 -0
- package/.output/public/_nuxt/DHaeiCBh.js +6 -0
- package/.output/public/_nuxt/DHbdnjwW.js +6 -0
- package/.output/public/_nuxt/DSZPf7rp.js +6 -0
- package/.output/public/_nuxt/DTECt2xU.js +6 -0
- package/.output/public/_nuxt/DXyYeYxl.js +6 -0
- package/.output/public/_nuxt/DYQUnd45.js +303 -0
- package/.output/public/_nuxt/Dd3NCNK9.js +6 -0
- package/.output/public/_nuxt/DfzH4Xui.js +6 -0
- package/.output/public/_nuxt/DgpMLyT9.js +6 -0
- package/.output/public/_nuxt/DgyLZaXg.js +6 -0
- package/.output/public/_nuxt/DnHyzjbg.js +6 -0
- package/.output/public/_nuxt/DqxlV1Dz.js +6 -0
- package/.output/public/_nuxt/DrQuvNYM.js +6 -0
- package/.output/public/_nuxt/Drc7WvVn.js +6 -0
- package/.output/public/_nuxt/DtSS2RIy.js +6 -0
- package/.output/public/_nuxt/DwJ7jVG9.js +8 -0
- package/.output/public/_nuxt/DwN8ib1V.js +1111 -0
- package/.output/public/_nuxt/DyP6w7ZV.js +6 -0
- package/.output/public/_nuxt/Tw7wswEv.js +6 -0
- package/.output/public/_nuxt/YWi4-JPR.js +6 -0
- package/.output/public/_nuxt/Zznr-cwX.js +6 -0
- package/.output/public/_nuxt/builds/latest.json +1 -0
- package/.output/public/_nuxt/builds/meta/652d9eb9-2c2b-4ab1-b1c2-d46efce134b3.json +1 -0
- package/.output/public/_nuxt/codicon.DCmgc-ay.ttf +0 -0
- package/.output/public/_nuxt/dUCx_-0o.js +6 -0
- package/.output/public/_nuxt/deUWdS0T.js +6 -0
- package/.output/public/_nuxt/edge-router-BFNVMcBx.js +4 -0
- package/.output/public/_nuxt/editor.worker-B6Jl4jUd.js +12 -0
- package/.output/public/_nuxt/entry.BD0Qz9HR.css +5 -0
- package/.output/public/_nuxt/error-404.D7tj2jQK.css +1 -0
- package/.output/public/_nuxt/error-500.TOCKLquH.css +1 -0
- package/.output/public/_nuxt/gYnoVL96.js +6 -0
- package/.output/public/_nuxt/graph-resolver-Y9hmyS-J.js +8 -0
- package/.output/public/_nuxt/i9-g7ZhI.js +6 -0
- package/.output/public/_nuxt/jDosRYr7.js +15 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.B6OSyW2I.woff2 +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.BpRar1d5.ttf +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.Bvl3VxMs.woff +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.TEmAk13K.eot +0 -0
- package/.output/public/_nuxt/nf6ki56Z.js +6 -0
- package/.output/public/_nuxt/pnP8ivHi.js +6 -0
- package/.output/public/_nuxt/rUNN04Wq.js +6 -0
- package/.output/public/_nuxt/tGk8EFnU.js +6 -0
- package/.output/public/_nuxt/yaml.worker-B8S0iqeR.js +411 -0
- package/.output/public/favicon.ico +0 -0
- package/.output/public/libavoid.wasm +0 -0
- package/.output/public/robots.txt +1 -0
- package/.output/server/index.mjs +13188 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/@babel/parser/lib/index.js +14246 -0
- package/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/fetchRequestHandler.mjs +74 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +1 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/incomingMessageToRequest.mjs +119 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/index.mjs +2 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +92 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/writeResponse.mjs +79 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/ws.mjs +521 -0
- package/.output/server/node_modules/@trpc/server/dist/index.mjs +12 -0
- package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +175 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +73 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +79 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/abortError.mjs +10 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +229 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +76 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +39 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +570 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +80 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +90 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +52 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedure.mjs +7 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +198 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +278 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +54 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +61 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +603 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +369 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +25 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +165 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +15 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +43 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +239 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +101 -0
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +83 -0
- package/.output/server/node_modules/@trpc/server/dist/vendor/standard-schema-v1/error.mjs +26 -0
- package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +289 -0
- package/.output/server/node_modules/@trpc/server/package.json +156 -0
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6690 -0
- package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +686 -0
- package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1404 -0
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1789 -0
- package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6654 -0
- package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1669 -0
- package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +857 -0
- package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +594 -0
- package/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/.output/server/node_modules/devalue/index.js +3 -0
- package/.output/server/node_modules/devalue/package.json +34 -0
- package/.output/server/node_modules/devalue/src/base64.js +110 -0
- package/.output/server/node_modules/devalue/src/constants.js +6 -0
- package/.output/server/node_modules/devalue/src/parse.js +160 -0
- package/.output/server/node_modules/devalue/src/stringify.js +232 -0
- package/.output/server/node_modules/devalue/src/uneval.js +351 -0
- package/.output/server/node_modules/devalue/src/utils.js +113 -0
- package/.output/server/node_modules/entities/lib/decode.js +536 -0
- package/.output/server/node_modules/entities/lib/decode_codepoint.js +76 -0
- package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +9 -0
- package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
- package/.output/server/node_modules/entities/package.json +90 -0
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/.output/server/node_modules/estree-walker/package.json +37 -0
- package/.output/server/node_modules/hookable/dist/index.mjs +290 -0
- package/.output/server/node_modules/hookable/package.json +49 -0
- package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/.output/server/node_modules/source-map-js/package.json +71 -0
- package/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/.output/server/node_modules/ufo/dist/index.mjs +630 -0
- package/.output/server/node_modules/ufo/package.json +47 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +94 -0
- package/.output/server/node_modules/unhead/dist/server.mjs +220 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.C13swrCa.mjs +48 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.Cp0iF6eN.mjs +177 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +70 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DeCxexjU.mjs +166 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.Txd0XTIP.mjs +172 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/.output/server/node_modules/unhead/package.json +101 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/.output/server/node_modules/vue/index.js +7 -0
- package/.output/server/node_modules/vue/index.mjs +1 -0
- package/.output/server/node_modules/vue/package.json +112 -0
- package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +196 -0
- package/.output/server/node_modules/vue-bundle-renderer/package.json +50 -0
- package/.output/server/node_modules/ws/lib/buffer-util.js +131 -0
- package/.output/server/node_modules/ws/lib/constants.js +18 -0
- package/.output/server/node_modules/ws/lib/event-target.js +292 -0
- package/.output/server/node_modules/ws/lib/extension.js +203 -0
- package/.output/server/node_modules/ws/lib/limiter.js +55 -0
- package/.output/server/node_modules/ws/lib/permessage-deflate.js +514 -0
- package/.output/server/node_modules/ws/lib/receiver.js +706 -0
- package/.output/server/node_modules/ws/lib/sender.js +602 -0
- package/.output/server/node_modules/ws/lib/stream.js +161 -0
- package/.output/server/node_modules/ws/lib/subprotocol.js +62 -0
- package/.output/server/node_modules/ws/lib/validation.js +152 -0
- package/.output/server/node_modules/ws/lib/websocket-server.js +540 -0
- package/.output/server/node_modules/ws/lib/websocket.js +1388 -0
- package/.output/server/node_modules/ws/package.json +69 -0
- package/.output/server/node_modules/ws/wrapper.mjs +8 -0
- package/.output/server/node_modules/zod/lib/index.mjs +4405 -0
- package/.output/server/node_modules/zod/package.json +122 -0
- package/.output/server/package.json +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/** @public */ function isObservable(x) {
|
|
2
|
+
return typeof x === 'object' && x !== null && 'subscribe' in x;
|
|
3
|
+
}
|
|
4
|
+
/** @public */ function observable(subscribe) {
|
|
5
|
+
const self = {
|
|
6
|
+
subscribe (observer) {
|
|
7
|
+
let teardownRef = null;
|
|
8
|
+
let isDone = false;
|
|
9
|
+
let unsubscribed = false;
|
|
10
|
+
let teardownImmediately = false;
|
|
11
|
+
function unsubscribe() {
|
|
12
|
+
if (teardownRef === null) {
|
|
13
|
+
teardownImmediately = true;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (unsubscribed) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
unsubscribed = true;
|
|
20
|
+
if (typeof teardownRef === 'function') {
|
|
21
|
+
teardownRef();
|
|
22
|
+
} else if (teardownRef) {
|
|
23
|
+
teardownRef.unsubscribe();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
teardownRef = subscribe({
|
|
27
|
+
next (value) {
|
|
28
|
+
if (isDone) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
observer.next?.(value);
|
|
32
|
+
},
|
|
33
|
+
error (err) {
|
|
34
|
+
if (isDone) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
isDone = true;
|
|
38
|
+
observer.error?.(err);
|
|
39
|
+
unsubscribe();
|
|
40
|
+
},
|
|
41
|
+
complete () {
|
|
42
|
+
if (isDone) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
isDone = true;
|
|
46
|
+
observer.complete?.();
|
|
47
|
+
unsubscribe();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if (teardownImmediately) {
|
|
51
|
+
unsubscribe();
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
unsubscribe
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
pipe (...operations) {
|
|
58
|
+
return operations.reduce(pipeReducer, self);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return self;
|
|
62
|
+
}
|
|
63
|
+
function pipeReducer(prev, fn) {
|
|
64
|
+
return fn(prev);
|
|
65
|
+
}
|
|
66
|
+
/** @internal */ function observableToPromise(observable) {
|
|
67
|
+
const ac = new AbortController();
|
|
68
|
+
const promise = new Promise((resolve, reject)=>{
|
|
69
|
+
let isDone = false;
|
|
70
|
+
function onDone() {
|
|
71
|
+
if (isDone) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
isDone = true;
|
|
75
|
+
obs$.unsubscribe();
|
|
76
|
+
}
|
|
77
|
+
ac.signal.addEventListener('abort', ()=>{
|
|
78
|
+
reject(ac.signal.reason);
|
|
79
|
+
});
|
|
80
|
+
const obs$ = observable.subscribe({
|
|
81
|
+
next (data) {
|
|
82
|
+
isDone = true;
|
|
83
|
+
resolve(data);
|
|
84
|
+
onDone();
|
|
85
|
+
},
|
|
86
|
+
error (data) {
|
|
87
|
+
reject(data);
|
|
88
|
+
},
|
|
89
|
+
complete () {
|
|
90
|
+
ac.abort();
|
|
91
|
+
onDone();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return promise;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* @internal
|
|
99
|
+
*/ function observableToReadableStream(observable, signal) {
|
|
100
|
+
let unsub = null;
|
|
101
|
+
const onAbort = ()=>{
|
|
102
|
+
unsub?.unsubscribe();
|
|
103
|
+
unsub = null;
|
|
104
|
+
signal.removeEventListener('abort', onAbort);
|
|
105
|
+
};
|
|
106
|
+
return new ReadableStream({
|
|
107
|
+
start (controller) {
|
|
108
|
+
unsub = observable.subscribe({
|
|
109
|
+
next (data) {
|
|
110
|
+
controller.enqueue({
|
|
111
|
+
ok: true,
|
|
112
|
+
value: data
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
error (error) {
|
|
116
|
+
controller.enqueue({
|
|
117
|
+
ok: false,
|
|
118
|
+
error
|
|
119
|
+
});
|
|
120
|
+
controller.close();
|
|
121
|
+
},
|
|
122
|
+
complete () {
|
|
123
|
+
controller.close();
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
if (signal.aborted) {
|
|
127
|
+
onAbort();
|
|
128
|
+
} else {
|
|
129
|
+
signal.addEventListener('abort', onAbort, {
|
|
130
|
+
once: true
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
cancel () {
|
|
135
|
+
onAbort();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/** @internal */ function observableToAsyncIterable(observable, signal) {
|
|
140
|
+
const stream = observableToReadableStream(observable, signal);
|
|
141
|
+
const reader = stream.getReader();
|
|
142
|
+
const iterator = {
|
|
143
|
+
async next () {
|
|
144
|
+
const value = await reader.read();
|
|
145
|
+
if (value.done) {
|
|
146
|
+
return {
|
|
147
|
+
value: undefined,
|
|
148
|
+
done: true
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const { value: result } = value;
|
|
152
|
+
if (!result.ok) {
|
|
153
|
+
throw result.error;
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
value: result.value,
|
|
157
|
+
done: false
|
|
158
|
+
};
|
|
159
|
+
},
|
|
160
|
+
async return () {
|
|
161
|
+
await reader.cancel();
|
|
162
|
+
return {
|
|
163
|
+
value: undefined,
|
|
164
|
+
done: true
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
[Symbol.asyncIterator] () {
|
|
170
|
+
return iterator;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { isObservable, observable, observableToAsyncIterable, observableToPromise };
|
package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const noop = ()=>{
|
|
2
|
+
// noop
|
|
3
|
+
};
|
|
4
|
+
const freezeIfAvailable = (obj)=>{
|
|
5
|
+
if (Object.freeze) {
|
|
6
|
+
Object.freeze(obj);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
function createInnerProxy(callback, path, memo) {
|
|
10
|
+
var _memo, _cacheKey;
|
|
11
|
+
const cacheKey = path.join('.');
|
|
12
|
+
(_memo = memo)[_cacheKey = cacheKey] ?? (_memo[_cacheKey] = new Proxy(noop, {
|
|
13
|
+
get (_obj, key) {
|
|
14
|
+
if (typeof key !== 'string' || key === 'then') {
|
|
15
|
+
// special case for if the proxy is accidentally treated
|
|
16
|
+
// like a PromiseLike (like in `Promise.resolve(proxy)`)
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return createInnerProxy(callback, [
|
|
20
|
+
...path,
|
|
21
|
+
key
|
|
22
|
+
], memo);
|
|
23
|
+
},
|
|
24
|
+
apply (_1, _2, args) {
|
|
25
|
+
const lastOfPath = path[path.length - 1];
|
|
26
|
+
let opts = {
|
|
27
|
+
args,
|
|
28
|
+
path
|
|
29
|
+
};
|
|
30
|
+
// special handling for e.g. `trpc.hello.call(this, 'there')` and `trpc.hello.apply(this, ['there'])
|
|
31
|
+
if (lastOfPath === 'call') {
|
|
32
|
+
opts = {
|
|
33
|
+
args: args.length >= 2 ? [
|
|
34
|
+
args[1]
|
|
35
|
+
] : [],
|
|
36
|
+
path: path.slice(0, -1)
|
|
37
|
+
};
|
|
38
|
+
} else if (lastOfPath === 'apply') {
|
|
39
|
+
opts = {
|
|
40
|
+
args: args.length >= 2 ? args[1] : [],
|
|
41
|
+
path: path.slice(0, -1)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
freezeIfAvailable(opts.args);
|
|
45
|
+
freezeIfAvailable(opts.path);
|
|
46
|
+
return callback(opts);
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
return memo[cacheKey];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates a proxy that calls the callback with the path and arguments
|
|
53
|
+
*
|
|
54
|
+
* @internal
|
|
55
|
+
*/ const createRecursiveProxy = (callback)=>createInnerProxy(callback, [], Object.create(null));
|
|
56
|
+
/**
|
|
57
|
+
* Used in place of `new Proxy` where each handler will map 1 level deep to another value.
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/ const createFlatProxy = (callback)=>{
|
|
61
|
+
return new Proxy(noop, {
|
|
62
|
+
get (_obj, name) {
|
|
63
|
+
if (name === 'then') {
|
|
64
|
+
// special case for if the proxy is accidentally treated
|
|
65
|
+
// like a PromiseLike (like in `Promise.resolve(proxy)`)
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
return callback(name);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export { createFlatProxy, createRecursiveProxy };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { isObject } from '../utils.mjs';
|
|
2
|
+
|
|
3
|
+
function _define_property(obj, key, value) {
|
|
4
|
+
if (key in obj) {
|
|
5
|
+
Object.defineProperty(obj, key, {
|
|
6
|
+
value: value,
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true
|
|
10
|
+
});
|
|
11
|
+
} else {
|
|
12
|
+
obj[key] = value;
|
|
13
|
+
}
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
class UnknownCauseError extends Error {
|
|
17
|
+
}
|
|
18
|
+
function getCauseFromUnknown(cause) {
|
|
19
|
+
if (cause instanceof Error) {
|
|
20
|
+
return cause;
|
|
21
|
+
}
|
|
22
|
+
const type = typeof cause;
|
|
23
|
+
if (type === 'undefined' || type === 'function' || cause === null) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
// Primitive types just get wrapped in an error
|
|
27
|
+
if (type !== 'object') {
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
29
|
+
return new Error(String(cause));
|
|
30
|
+
}
|
|
31
|
+
// If it's an object, we'll create a synthetic error
|
|
32
|
+
if (isObject(cause)) {
|
|
33
|
+
const err = new UnknownCauseError();
|
|
34
|
+
for(const key in cause){
|
|
35
|
+
err[key] = cause[key];
|
|
36
|
+
}
|
|
37
|
+
return err;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
function getTRPCErrorFromUnknown(cause) {
|
|
42
|
+
if (cause instanceof TRPCError) {
|
|
43
|
+
return cause;
|
|
44
|
+
}
|
|
45
|
+
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
46
|
+
// https://github.com/trpc/trpc/pull/4848
|
|
47
|
+
return cause;
|
|
48
|
+
}
|
|
49
|
+
const trpcError = new TRPCError({
|
|
50
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
51
|
+
cause
|
|
52
|
+
});
|
|
53
|
+
// Inherit stack from error
|
|
54
|
+
if (cause instanceof Error && cause.stack) {
|
|
55
|
+
trpcError.stack = cause.stack;
|
|
56
|
+
}
|
|
57
|
+
return trpcError;
|
|
58
|
+
}
|
|
59
|
+
class TRPCError extends Error {
|
|
60
|
+
constructor(opts){
|
|
61
|
+
const cause = getCauseFromUnknown(opts.cause);
|
|
62
|
+
const message = opts.message ?? cause?.message ?? opts.code;
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
64
|
+
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
65
|
+
super(message, {
|
|
66
|
+
cause
|
|
67
|
+
}), // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
68
|
+
// @ts-ignore override doesn't work in all environments due to "This member cannot have an 'override' modifier because it is not declared in the base class 'Error'"
|
|
69
|
+
_define_property(this, "cause", void 0), _define_property(this, "code", void 0);
|
|
70
|
+
this.code = opts.code;
|
|
71
|
+
this.name = 'TRPCError';
|
|
72
|
+
if (!this.cause) {
|
|
73
|
+
// < ES2022 / < Node 16.9.0 compatability
|
|
74
|
+
this.cause = cause;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { TRPCError, getCauseFromUnknown, getTRPCErrorFromUnknown };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getHTTPStatusCodeFromError } from '../http/getHTTPStatusCode.mjs';
|
|
2
|
+
import { TRPC_ERROR_CODES_BY_KEY } from '../rpc/codes.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/ function getErrorShape(opts) {
|
|
7
|
+
const { path, error, config } = opts;
|
|
8
|
+
const { code } = opts.error;
|
|
9
|
+
const shape = {
|
|
10
|
+
message: error.message,
|
|
11
|
+
code: TRPC_ERROR_CODES_BY_KEY[code],
|
|
12
|
+
data: {
|
|
13
|
+
code,
|
|
14
|
+
httpStatus: getHTTPStatusCodeFromError(error)
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
if (config.isDev && typeof opts.error.stack === 'string') {
|
|
18
|
+
shape.data.stack = opts.error.stack;
|
|
19
|
+
}
|
|
20
|
+
if (typeof path === 'string') {
|
|
21
|
+
shape.data.path = path;
|
|
22
|
+
}
|
|
23
|
+
return config.errorFormatter({
|
|
24
|
+
...opts,
|
|
25
|
+
shape
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { getErrorShape };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isObject } from '../utils.mjs';
|
|
2
|
+
|
|
3
|
+
function isAbortError(error) {
|
|
4
|
+
return isObject(error) && error['name'] === 'AbortError';
|
|
5
|
+
}
|
|
6
|
+
function throwAbortError(message = 'AbortError') {
|
|
7
|
+
throw new DOMException(message, 'AbortError');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { isAbortError, throwAbortError };
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { TRPCError } from '../error/TRPCError.mjs';
|
|
2
|
+
import { getProcedureAtPath } from '../router.mjs';
|
|
3
|
+
import { isObject, unsetMarker } from '../utils.mjs';
|
|
4
|
+
import { parseConnectionParamsFromString } from './parseConnectionParams.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Memoize a function that takes no arguments
|
|
8
|
+
* @internal
|
|
9
|
+
*/ function memo(fn) {
|
|
10
|
+
let promise = null;
|
|
11
|
+
let value = unsetMarker;
|
|
12
|
+
return {
|
|
13
|
+
/**
|
|
14
|
+
* Lazily read the value
|
|
15
|
+
*/ read: async ()=>{
|
|
16
|
+
if (value !== unsetMarker) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (promise === null) {
|
|
20
|
+
// dedupes promises and catches errors
|
|
21
|
+
promise = fn().catch((cause)=>{
|
|
22
|
+
if (cause instanceof TRPCError) {
|
|
23
|
+
throw cause;
|
|
24
|
+
}
|
|
25
|
+
throw new TRPCError({
|
|
26
|
+
code: 'BAD_REQUEST',
|
|
27
|
+
message: cause instanceof Error ? cause.message : 'Invalid input',
|
|
28
|
+
cause
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
value = await promise;
|
|
33
|
+
promise = null;
|
|
34
|
+
return value;
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Get an already stored result
|
|
38
|
+
*/ result: ()=>{
|
|
39
|
+
return value !== unsetMarker ? value : undefined;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const jsonContentTypeHandler = {
|
|
44
|
+
isMatch (req) {
|
|
45
|
+
return !!req.headers.get('content-type')?.startsWith('application/json');
|
|
46
|
+
},
|
|
47
|
+
async parse (opts) {
|
|
48
|
+
const { req } = opts;
|
|
49
|
+
const isBatchCall = opts.searchParams.get('batch') === '1';
|
|
50
|
+
const paths = isBatchCall ? opts.path.split(',') : [
|
|
51
|
+
opts.path
|
|
52
|
+
];
|
|
53
|
+
const getInputs = memo(async ()=>{
|
|
54
|
+
let inputs = undefined;
|
|
55
|
+
if (req.method === 'GET') {
|
|
56
|
+
const queryInput = opts.searchParams.get('input');
|
|
57
|
+
if (queryInput) {
|
|
58
|
+
inputs = JSON.parse(queryInput);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
inputs = await req.json();
|
|
62
|
+
}
|
|
63
|
+
if (inputs === undefined) {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
if (!isBatchCall) {
|
|
67
|
+
return {
|
|
68
|
+
0: opts.router._def._config.transformer.input.deserialize(inputs)
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (!isObject(inputs)) {
|
|
72
|
+
throw new TRPCError({
|
|
73
|
+
code: 'BAD_REQUEST',
|
|
74
|
+
message: '"input" needs to be an object when doing a batch call'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const acc = {};
|
|
78
|
+
for (const index of paths.keys()){
|
|
79
|
+
const input = inputs[index];
|
|
80
|
+
if (input !== undefined) {
|
|
81
|
+
acc[index] = opts.router._def._config.transformer.input.deserialize(input);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return acc;
|
|
85
|
+
});
|
|
86
|
+
const calls = await Promise.all(paths.map(async (path, index)=>{
|
|
87
|
+
const procedure = await getProcedureAtPath(opts.router, path);
|
|
88
|
+
return {
|
|
89
|
+
path,
|
|
90
|
+
procedure,
|
|
91
|
+
getRawInput: async ()=>{
|
|
92
|
+
const inputs = await getInputs.read();
|
|
93
|
+
let input = inputs[index];
|
|
94
|
+
if (procedure?._def.type === 'subscription') {
|
|
95
|
+
const lastEventId = opts.headers.get('last-event-id') ?? opts.searchParams.get('lastEventId') ?? opts.searchParams.get('Last-Event-Id');
|
|
96
|
+
if (lastEventId) {
|
|
97
|
+
if (isObject(input)) {
|
|
98
|
+
input = {
|
|
99
|
+
...input,
|
|
100
|
+
lastEventId: lastEventId
|
|
101
|
+
};
|
|
102
|
+
} else {
|
|
103
|
+
input ?? (input = {
|
|
104
|
+
lastEventId: lastEventId
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return input;
|
|
110
|
+
},
|
|
111
|
+
result: ()=>{
|
|
112
|
+
return getInputs.result()?.[index];
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}));
|
|
116
|
+
const types = new Set(calls.map((call)=>call.procedure?._def.type).filter(Boolean));
|
|
117
|
+
/* istanbul ignore if -- @preserve */ if (types.size > 1) {
|
|
118
|
+
throw new TRPCError({
|
|
119
|
+
code: 'BAD_REQUEST',
|
|
120
|
+
message: `Cannot mix procedure types in call: ${Array.from(types).join(', ')}`
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const type = types.values().next().value ?? 'unknown';
|
|
124
|
+
const connectionParamsStr = opts.searchParams.get('connectionParams');
|
|
125
|
+
const info = {
|
|
126
|
+
isBatchCall,
|
|
127
|
+
accept: req.headers.get('trpc-accept'),
|
|
128
|
+
calls,
|
|
129
|
+
type,
|
|
130
|
+
connectionParams: connectionParamsStr === null ? null : parseConnectionParamsFromString(connectionParamsStr),
|
|
131
|
+
signal: req.signal,
|
|
132
|
+
url: opts.url
|
|
133
|
+
};
|
|
134
|
+
return info;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const formDataContentTypeHandler = {
|
|
138
|
+
isMatch (req) {
|
|
139
|
+
return !!req.headers.get('content-type')?.startsWith('multipart/form-data');
|
|
140
|
+
},
|
|
141
|
+
async parse (opts) {
|
|
142
|
+
const { req } = opts;
|
|
143
|
+
if (req.method !== 'POST') {
|
|
144
|
+
throw new TRPCError({
|
|
145
|
+
code: 'METHOD_NOT_SUPPORTED',
|
|
146
|
+
message: 'Only POST requests are supported for multipart/form-data requests'
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
const getInputs = memo(async ()=>{
|
|
150
|
+
const fd = await req.formData();
|
|
151
|
+
return fd;
|
|
152
|
+
});
|
|
153
|
+
const procedure = await getProcedureAtPath(opts.router, opts.path);
|
|
154
|
+
return {
|
|
155
|
+
accept: null,
|
|
156
|
+
calls: [
|
|
157
|
+
{
|
|
158
|
+
path: opts.path,
|
|
159
|
+
getRawInput: getInputs.read,
|
|
160
|
+
result: getInputs.result,
|
|
161
|
+
procedure
|
|
162
|
+
}
|
|
163
|
+
],
|
|
164
|
+
isBatchCall: false,
|
|
165
|
+
type: 'mutation',
|
|
166
|
+
connectionParams: null,
|
|
167
|
+
signal: req.signal,
|
|
168
|
+
url: opts.url
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const octetStreamContentTypeHandler = {
|
|
173
|
+
isMatch (req) {
|
|
174
|
+
return !!req.headers.get('content-type')?.startsWith('application/octet-stream');
|
|
175
|
+
},
|
|
176
|
+
async parse (opts) {
|
|
177
|
+
const { req } = opts;
|
|
178
|
+
if (req.method !== 'POST') {
|
|
179
|
+
throw new TRPCError({
|
|
180
|
+
code: 'METHOD_NOT_SUPPORTED',
|
|
181
|
+
message: 'Only POST requests are supported for application/octet-stream requests'
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
const getInputs = memo(async ()=>{
|
|
185
|
+
return req.body;
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
calls: [
|
|
189
|
+
{
|
|
190
|
+
path: opts.path,
|
|
191
|
+
getRawInput: getInputs.read,
|
|
192
|
+
result: getInputs.result,
|
|
193
|
+
procedure: await getProcedureAtPath(opts.router, opts.path)
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
isBatchCall: false,
|
|
197
|
+
accept: null,
|
|
198
|
+
type: 'mutation',
|
|
199
|
+
connectionParams: null,
|
|
200
|
+
signal: req.signal,
|
|
201
|
+
url: opts.url
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
const handlers = [
|
|
206
|
+
jsonContentTypeHandler,
|
|
207
|
+
formDataContentTypeHandler,
|
|
208
|
+
octetStreamContentTypeHandler
|
|
209
|
+
];
|
|
210
|
+
function getContentTypeHandler(req) {
|
|
211
|
+
const handler = handlers.find((handler)=>handler.isMatch(req));
|
|
212
|
+
if (handler) {
|
|
213
|
+
return handler;
|
|
214
|
+
}
|
|
215
|
+
if (!handler && req.method === 'GET') {
|
|
216
|
+
// fallback to JSON for get requests so GET-requests can be opened in browser easily
|
|
217
|
+
return jsonContentTypeHandler;
|
|
218
|
+
}
|
|
219
|
+
throw new TRPCError({
|
|
220
|
+
code: 'UNSUPPORTED_MEDIA_TYPE',
|
|
221
|
+
message: req.headers.has('content-type') ? `Unsupported content-type "${req.headers.get('content-type')}` : 'Missing content-type header'
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
async function getRequestInfo(opts) {
|
|
225
|
+
const handler = getContentTypeHandler(opts.req);
|
|
226
|
+
return await handler.parse(opts);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export { getRequestInfo };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { TRPC_ERROR_CODES_BY_NUMBER } from '../rpc/codes.mjs';
|
|
2
|
+
import { isObject } from '../utils.mjs';
|
|
3
|
+
|
|
4
|
+
const JSONRPC2_TO_HTTP_CODE = {
|
|
5
|
+
PARSE_ERROR: 400,
|
|
6
|
+
BAD_REQUEST: 400,
|
|
7
|
+
UNAUTHORIZED: 401,
|
|
8
|
+
FORBIDDEN: 403,
|
|
9
|
+
NOT_FOUND: 404,
|
|
10
|
+
METHOD_NOT_SUPPORTED: 405,
|
|
11
|
+
TIMEOUT: 408,
|
|
12
|
+
CONFLICT: 409,
|
|
13
|
+
PRECONDITION_FAILED: 412,
|
|
14
|
+
PAYLOAD_TOO_LARGE: 413,
|
|
15
|
+
UNSUPPORTED_MEDIA_TYPE: 415,
|
|
16
|
+
UNPROCESSABLE_CONTENT: 422,
|
|
17
|
+
TOO_MANY_REQUESTS: 429,
|
|
18
|
+
CLIENT_CLOSED_REQUEST: 499,
|
|
19
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
20
|
+
NOT_IMPLEMENTED: 501,
|
|
21
|
+
BAD_GATEWAY: 502,
|
|
22
|
+
SERVICE_UNAVAILABLE: 503,
|
|
23
|
+
GATEWAY_TIMEOUT: 504
|
|
24
|
+
};
|
|
25
|
+
const HTTP_CODE_TO_JSONRPC2 = {
|
|
26
|
+
400: 'BAD_REQUEST',
|
|
27
|
+
401: 'UNAUTHORIZED',
|
|
28
|
+
403: 'FORBIDDEN',
|
|
29
|
+
404: 'NOT_FOUND',
|
|
30
|
+
405: 'METHOD_NOT_SUPPORTED',
|
|
31
|
+
408: 'TIMEOUT',
|
|
32
|
+
409: 'CONFLICT',
|
|
33
|
+
412: 'PRECONDITION_FAILED',
|
|
34
|
+
413: 'PAYLOAD_TOO_LARGE',
|
|
35
|
+
415: 'UNSUPPORTED_MEDIA_TYPE',
|
|
36
|
+
422: 'UNPROCESSABLE_CONTENT',
|
|
37
|
+
429: 'TOO_MANY_REQUESTS',
|
|
38
|
+
499: 'CLIENT_CLOSED_REQUEST',
|
|
39
|
+
500: 'INTERNAL_SERVER_ERROR',
|
|
40
|
+
501: 'NOT_IMPLEMENTED',
|
|
41
|
+
502: 'BAD_GATEWAY',
|
|
42
|
+
503: 'SERVICE_UNAVAILABLE',
|
|
43
|
+
504: 'GATEWAY_TIMEOUT'
|
|
44
|
+
};
|
|
45
|
+
function getStatusCodeFromKey(code) {
|
|
46
|
+
return JSONRPC2_TO_HTTP_CODE[code] ?? 500;
|
|
47
|
+
}
|
|
48
|
+
function getStatusKeyFromCode(code) {
|
|
49
|
+
return HTTP_CODE_TO_JSONRPC2[code] ?? 'INTERNAL_SERVER_ERROR';
|
|
50
|
+
}
|
|
51
|
+
function getHTTPStatusCode(json) {
|
|
52
|
+
const arr = Array.isArray(json) ? json : [
|
|
53
|
+
json
|
|
54
|
+
];
|
|
55
|
+
const httpStatuses = new Set(arr.map((res)=>{
|
|
56
|
+
if ('error' in res && isObject(res.error.data)) {
|
|
57
|
+
if (typeof res.error.data?.['httpStatus'] === 'number') {
|
|
58
|
+
return res.error.data['httpStatus'];
|
|
59
|
+
}
|
|
60
|
+
const code = TRPC_ERROR_CODES_BY_NUMBER[res.error.code];
|
|
61
|
+
return getStatusCodeFromKey(code);
|
|
62
|
+
}
|
|
63
|
+
return 200;
|
|
64
|
+
}));
|
|
65
|
+
if (httpStatuses.size !== 1) {
|
|
66
|
+
return 207;
|
|
67
|
+
}
|
|
68
|
+
const httpStatus = httpStatuses.values().next().value;
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
70
|
+
return httpStatus;
|
|
71
|
+
}
|
|
72
|
+
function getHTTPStatusCodeFromError(error) {
|
|
73
|
+
return getStatusCodeFromKey(error.code);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { HTTP_CODE_TO_JSONRPC2, JSONRPC2_TO_HTTP_CODE, getHTTPStatusCode, getHTTPStatusCodeFromError, getStatusCodeFromKey, getStatusKeyFromCode };
|