@cyia/chrome-trpc 1.0.0

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.
@@ -0,0 +1,338 @@
1
+ // packages/trpc/server/handleChromeMessage.ts
2
+ import {
3
+ callTRPCProcedure,
4
+ transformTRPCResponse,
5
+ TRPCError as TRPCError2
6
+ } from "@trpc/server";
7
+ import {
8
+ isObservable,
9
+ observableToAsyncIterable
10
+ } from "@trpc/server/observable";
11
+ import { getErrorShape } from "@trpc/server/shared";
12
+
13
+ // packages/trpc/server/utils.ts
14
+ import { TRPCError } from "@trpc/server";
15
+ function getTRPCErrorFromUnknown(cause) {
16
+ if (cause instanceof TRPCError) {
17
+ return cause;
18
+ }
19
+ const error = getErrorFromUnknown(cause);
20
+ const trpcError = new TRPCError({
21
+ code: "INTERNAL_SERVER_ERROR",
22
+ cause: error,
23
+ message: error.message
24
+ });
25
+ trpcError.stack = error.stack;
26
+ return trpcError;
27
+ }
28
+ function getErrorFromUnknown(cause) {
29
+ if (cause instanceof Error) {
30
+ return cause;
31
+ }
32
+ if (typeof cause === "string") {
33
+ return new Error(cause);
34
+ }
35
+ return new Error("Unknown error");
36
+ }
37
+
38
+ // packages/trpc/server/handleChromeMessage.ts
39
+ import {
40
+ isAsyncIterable,
41
+ isTrackedEnvelope,
42
+ iteratorResource,
43
+ run,
44
+ Unpromise
45
+ } from "@trpc/server/unstable-core-do-not-import";
46
+
47
+ // packages/trpc/util/json.ts
48
+ import { SuperJSON } from "superjson";
49
+ import { compress, uncompress } from "snappyjs";
50
+ import { getParser } from "bowser";
51
+ var DefaultSuperJSON = class {
52
+ superJson;
53
+ constructor() {
54
+ this.superJson = new SuperJSON();
55
+ }
56
+ };
57
+ var CompressSuperJSON = class {
58
+ superJson;
59
+ constructor() {
60
+ this.superJson = new SuperJSON();
61
+ }
62
+ };
63
+ var defaultSuperJSON = new DefaultSuperJSON();
64
+ var compressSuperJSON = new CompressSuperJSON();
65
+ function uint8ArrayToBase64(bytes) {
66
+ return btoa(new TextDecoder("iso-8859-1").decode(bytes));
67
+ }
68
+ function base64ToUint8Array(base64) {
69
+ return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
70
+ }
71
+ function jsonToUint8Array(obj) {
72
+ return new TextEncoder().encode(JSON.stringify(obj));
73
+ }
74
+ function uint8ArrayToJson(data) {
75
+ return JSON.parse(new TextDecoder().decode(data));
76
+ }
77
+ function initJsonConvert() {
78
+ const useStructuredClone = chrome.runtime.getManifest()["message_serialization"] === "structured_clone" && getParser(navigator.userAgent, navigator.userAgentData).satisfies({
79
+ chrome: ">=148.0.0.0"
80
+ });
81
+ const isApplicable = (v) => v instanceof Uint8Array;
82
+ const defaultConfig = {
83
+ serialize: useStructuredClone ? (v) => v : (v) => uint8ArrayToBase64(v),
84
+ deserialize: useStructuredClone ? (v) => v : (v) => base64ToUint8Array(v),
85
+ isApplicable
86
+ };
87
+ const compressConfig = {
88
+ serialize: useStructuredClone ? (v) => compress(v) : (v) => uint8ArrayToBase64(compress(v)),
89
+ deserialize: useStructuredClone ? (v) => uncompress(v) : (v) => uncompress(base64ToUint8Array(v)),
90
+ isApplicable
91
+ };
92
+ defaultSuperJSON.superJson.registerCustom(
93
+ defaultConfig,
94
+ "0" /* unit8array */
95
+ );
96
+ compressSuperJSON.superJson.registerCustom(
97
+ compressConfig,
98
+ "0" /* unit8array */
99
+ );
100
+ }
101
+ function serialize(object, compress2) {
102
+ if (!compress2) {
103
+ return defaultSuperJSON.superJson.serialize(object);
104
+ }
105
+ const result = compressSuperJSON.superJson.serialize(object);
106
+ result.__compress = true;
107
+ if (result.meta?.values) {
108
+ if (Array.isArray(result.meta?.values)) {
109
+ if (result.meta.values[0][1] === "0" /* unit8array */) {
110
+ return result;
111
+ }
112
+ } else {
113
+ const list = Object.values(result.meta.values);
114
+ if (list.some((item) => Array.isArray(item[0]))) {
115
+ return result;
116
+ } else {
117
+ return uint8ArrayToBase64(jsonToUint8Array(result));
118
+ }
119
+ }
120
+ }
121
+ return result;
122
+ }
123
+ function deserialize(payload) {
124
+ if (typeof payload === "string") {
125
+ payload = uint8ArrayToJson(base64ToUint8Array(payload));
126
+ }
127
+ return payload.__compress ? compressSuperJSON.superJson.deserialize(payload, { inPlace: true }) : defaultSuperJSON.superJson.deserialize(payload, { inPlace: true });
128
+ }
129
+
130
+ // packages/trpc/server/handleChromeMessage.ts
131
+ async function handleChromeMessage({
132
+ router,
133
+ createContext,
134
+ message,
135
+ subscriptions,
136
+ compressPathObj,
137
+ port
138
+ }) {
139
+ const internalId = message.id;
140
+ if (message.method === "subscription.stop") {
141
+ subscriptions.get(internalId)?.abort();
142
+ subscriptions.delete(internalId);
143
+ return;
144
+ }
145
+ const { type, input: serializedInput, path } = message.operation;
146
+ const id = internalId;
147
+ const input = serializedInput != null ? router._def._config.transformer.input.deserialize(serializedInput) : void 0;
148
+ const ctx = await createContext?.() ?? {};
149
+ const respond = (response) => {
150
+ const message2 = transformTRPCResponse(router._def._config, response);
151
+ if (message2.result && "data" in message2.result) {
152
+ message2.result.data = serialize(
153
+ message2.result.data,
154
+ compressPathObj?.[path]
155
+ );
156
+ }
157
+ port.postMessage(message2);
158
+ };
159
+ try {
160
+ const abortController = new AbortController();
161
+ const result = await callTRPCProcedure({
162
+ ctx,
163
+ path,
164
+ router,
165
+ getRawInput: async () => input,
166
+ type,
167
+ signal: abortController.signal,
168
+ batchIndex: 0
169
+ });
170
+ const isIterableResult = isAsyncIterable(result) || isObservable(result);
171
+ if (type !== "subscription") {
172
+ if (isIterableResult) {
173
+ throw new TRPCError2({
174
+ code: "UNSUPPORTED_MEDIA_TYPE",
175
+ message: `Cannot return an async iterable or observable from a ${type} procedure with WebSockets`
176
+ });
177
+ }
178
+ respond({
179
+ id,
180
+ result: {
181
+ type: "data",
182
+ data: result
183
+ }
184
+ });
185
+ return;
186
+ }
187
+ if (!isIterableResult) {
188
+ throw new TRPCError2({
189
+ message: `Subscription ${path} did not return an observable or a AsyncGenerator`,
190
+ code: "INTERNAL_SERVER_ERROR"
191
+ });
192
+ }
193
+ if (subscriptions.has(internalId)) {
194
+ throw new TRPCError2({
195
+ message: `Duplicate id ${internalId}`,
196
+ code: "BAD_REQUEST"
197
+ });
198
+ }
199
+ const iterable = isObservable(result) ? observableToAsyncIterable(result, abortController.signal) : result;
200
+ run(async () => {
201
+ await using iterator = iteratorResource(iterable);
202
+ const abortPromise = new Promise((resolve) => {
203
+ abortController.signal.onabort = () => resolve("abort");
204
+ });
205
+ let next;
206
+ let result2;
207
+ while (true) {
208
+ next = await Unpromise.race([
209
+ iterator.next().catch(getTRPCErrorFromUnknown),
210
+ abortPromise
211
+ ]);
212
+ if (next === "abort") {
213
+ await iterator.return?.();
214
+ break;
215
+ }
216
+ if (next instanceof Error) {
217
+ const error = getTRPCErrorFromUnknown(next);
218
+ respond({
219
+ id,
220
+ error: getErrorShape({
221
+ config: router._def._config,
222
+ error,
223
+ type,
224
+ path,
225
+ input,
226
+ ctx
227
+ })
228
+ });
229
+ break;
230
+ }
231
+ if (next.done) {
232
+ break;
233
+ }
234
+ result2 = {
235
+ type: "data",
236
+ data: next.value
237
+ };
238
+ if (isTrackedEnvelope(next.value)) {
239
+ const [id2, data] = next.value;
240
+ result2.id = id2;
241
+ result2.data = {
242
+ id: id2,
243
+ data
244
+ };
245
+ }
246
+ respond({
247
+ id,
248
+ result: result2
249
+ });
250
+ next = null;
251
+ result2 = null;
252
+ }
253
+ respond({
254
+ id,
255
+ result: {
256
+ type: "stopped"
257
+ }
258
+ });
259
+ subscriptions.delete(internalId);
260
+ }).catch((cause) => {
261
+ const error = getTRPCErrorFromUnknown(cause);
262
+ respond({
263
+ id,
264
+ error: getErrorShape({
265
+ config: router._def._config,
266
+ error,
267
+ type,
268
+ path,
269
+ input,
270
+ ctx
271
+ })
272
+ });
273
+ abortController.abort();
274
+ });
275
+ respond({
276
+ id,
277
+ result: {
278
+ type: "started"
279
+ }
280
+ });
281
+ subscriptions.set(internalId, abortController);
282
+ } catch (cause) {
283
+ const error = getTRPCErrorFromUnknown(cause);
284
+ return respond({
285
+ id,
286
+ error: getErrorShape({
287
+ config: router._def._config,
288
+ error,
289
+ type,
290
+ path,
291
+ input,
292
+ ctx
293
+ })
294
+ });
295
+ }
296
+ }
297
+
298
+ // packages/trpc/server/createChromeHandler.ts
299
+ var ChromeHandler = class {
300
+ constructor(options) {
301
+ this.options = options;
302
+ this.init();
303
+ }
304
+ options;
305
+ #getWebviewSubscription() {
306
+ return /* @__PURE__ */ new Map();
307
+ }
308
+ init() {
309
+ initJsonConvert();
310
+ chrome.runtime.onConnect.addListener((port) => {
311
+ const fn = (message) => {
312
+ handleChromeMessage({
313
+ router: this.options.router,
314
+ createContext: this.options.createContext,
315
+ message: {
316
+ ...message,
317
+ operation: {
318
+ ...message.operation,
319
+ input: deserialize(message.operation.input)
320
+ }
321
+ },
322
+ subscriptions: this.#getWebviewSubscription(),
323
+ port,
324
+ compressPathObj: this.options.compressPathObj
325
+ });
326
+ };
327
+ port.onMessage.addListener(fn);
328
+ port.onDisconnect.addListener(() => {
329
+ port.onMessage.removeListener(fn);
330
+ });
331
+ });
332
+ }
333
+ };
334
+ var createChromeHandler = (options) => new ChromeHandler(options);
335
+ export {
336
+ createChromeHandler
337
+ };
338
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/trpc/server/handleChromeMessage.ts", "../../../packages/trpc/server/utils.ts", "../../../packages/trpc/util/json.ts", "../../../packages/trpc/server/createChromeHandler.ts"],
4
+ "sourcesContent": ["import {\n callTRPCProcedure,\n transformTRPCResponse,\n TRPCError,\n} from '@trpc/server';\nimport type { AnyTRPCRouter, inferRouterContext } from '@trpc/server';\nimport type { TRPCResponseMessage, TRPCResultMessage } from '@trpc/server/rpc';\nimport {\n isObservable,\n observableToAsyncIterable,\n} from '@trpc/server/observable';\nimport { getErrorShape } from '@trpc/server/shared';\nimport { getTRPCErrorFromUnknown } from './utils';\nimport { Message } from '../type';\nimport {\n isAsyncIterable,\n isTrackedEnvelope,\n iteratorResource,\n run,\n Unpromise,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { serialize } from '../util/json';\n\nexport async function handleChromeMessage<TRouter extends AnyTRPCRouter>({\n router,\n createContext,\n message,\n subscriptions,\n compressPathObj,\n port,\n}: {\n router: TRouter;\n createContext?: () => Promise<inferRouterContext<TRouter>>;\n message: Message;\n subscriptions: Map<string, AbortController>;\n compressPathObj?: Record<string, boolean>;\n port: chrome.runtime.Port;\n}) {\n const internalId = message.id;\n if (message.method === 'subscription.stop') {\n subscriptions.get(internalId)?.abort();\n subscriptions.delete(internalId);\n return;\n }\n\n const { type, input: serializedInput, path } = message.operation;\n const id = internalId;\n\n const input =\n serializedInput != null\n ? router._def._config.transformer.input.deserialize(serializedInput)\n : undefined;\n\n const ctx = (await createContext?.()) ?? {};\n\n const respond = (response: TRPCResponseMessage) => {\n const message = transformTRPCResponse(router._def._config, response);\n if ((message as any).result && 'data' in (message as any).result) {\n (message as any).result.data = serialize(\n (message as any).result.data,\n compressPathObj?.[path],\n );\n }\n port.postMessage(message);\n };\n try {\n const abortController = new AbortController();\n // 函数请求\n const result = await callTRPCProcedure({\n ctx,\n path,\n router: router,\n getRawInput: async () => input,\n type,\n signal: abortController.signal,\n batchIndex: 0,\n });\n\n const isIterableResult = isAsyncIterable(result) || isObservable(result);\n // 普通的请求\n if (type !== 'subscription') {\n if (isIterableResult) {\n throw new TRPCError({\n code: 'UNSUPPORTED_MEDIA_TYPE',\n message: `Cannot return an async iterable or observable from a ${type} procedure with WebSockets`,\n });\n }\n // send the value as data if the method is not a subscription\n respond({\n id,\n result: {\n type: 'data',\n data: result,\n },\n });\n return;\n }\n\n if (!isIterableResult) {\n throw new TRPCError({\n message: `Subscription ${path} did not return an observable or a AsyncGenerator`,\n code: 'INTERNAL_SERVER_ERROR',\n });\n }\n if (subscriptions.has(internalId)) {\n // duplicate request ids for client\n\n throw new TRPCError({\n message: `Duplicate id ${internalId}`,\n code: 'BAD_REQUEST',\n });\n }\n // 订阅请求\n const iterable = isObservable(result)\n ? observableToAsyncIterable(result, abortController.signal)\n : result;\n\n run(async () => {\n await using iterator = iteratorResource(iterable);\n\n const abortPromise = new Promise<'abort'>((resolve) => {\n abortController.signal.onabort = () => resolve('abort');\n });\n // We need those declarations outside the loop for garbage collection reasons. If they\n // were declared inside, they would not be freed until the next value is present.\n let next:\n | null\n | TRPCError\n | Awaited<typeof abortPromise | ReturnType<(typeof iterator)['next']>>;\n let result: null | TRPCResultMessage<unknown>['result'];\n\n while (true) {\n next = await Unpromise.race([\n iterator.next().catch(getTRPCErrorFromUnknown),\n abortPromise,\n ]);\n\n if (next === 'abort') {\n await iterator.return?.();\n break;\n }\n if (next instanceof Error) {\n const error = getTRPCErrorFromUnknown(next);\n respond({\n id,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n break;\n }\n if (next.done) {\n break;\n }\n\n result = {\n type: 'data',\n data: next.value,\n };\n\n if (isTrackedEnvelope(next.value)) {\n const [id, data] = next.value;\n result.id = id;\n result.data = {\n id,\n data,\n };\n }\n\n respond({\n id,\n result,\n });\n\n // free up references for garbage collection\n next = null;\n result = null;\n }\n\n respond({\n id,\n result: {\n type: 'stopped',\n },\n });\n subscriptions.delete(internalId);\n }).catch((cause) => {\n const error = getTRPCErrorFromUnknown(cause);\n respond({\n id,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n abortController.abort();\n });\n\n respond({\n id,\n result: {\n type: 'started',\n },\n });\n subscriptions.set(internalId, abortController);\n } catch (cause) {\n const error: TRPCError = getTRPCErrorFromUnknown(cause);\n\n return respond({\n id,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n }\n}\n", "import { TRPCError } from '@trpc/server';\n\n// modified from @trpc/server/src/error/utils\nexport function getTRPCErrorFromUnknown(cause: unknown): TRPCError {\n if (cause instanceof TRPCError) {\n return cause;\n }\n\n const error = getErrorFromUnknown(cause);\n const trpcError = new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n cause: error,\n message: error.message,\n });\n\n // Inherit stack from error\n trpcError.stack = error.stack;\n\n return trpcError;\n}\n\n// modified from @trpc/server/src/error/utils\nfunction getErrorFromUnknown(cause: unknown): Error {\n if (cause instanceof Error) {\n return cause;\n }\n\n if (typeof cause === 'string') {\n return new Error(cause);\n }\n\n return new Error('Unknown error');\n}\n", "import { SuperJSON, SuperJSONResult } from 'superjson';\nimport { compress, uncompress } from 'snappyjs';\nimport { getParser } from 'bowser';\n\nclass DefaultSuperJSON {\n superJson;\n constructor() {\n this.superJson = new SuperJSON();\n }\n}\n\nclass CompressSuperJSON {\n superJson;\n constructor() {\n this.superJson = new SuperJSON();\n }\n}\n\nconst defaultSuperJSON = new DefaultSuperJSON();\nconst compressSuperJSON = new CompressSuperJSON();\nenum CustomType {\n unit8array = '0',\n}\nfunction uint8ArrayToBase64(bytes: Uint8Array) {\n return btoa(new TextDecoder('iso-8859-1').decode(bytes));\n}\n\nfunction base64ToUint8Array(base64: string) {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));\n}\n\nfunction jsonToUint8Array(obj: unknown): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(obj));\n}\n\nfunction uint8ArrayToJson<T = unknown>(data: Uint8Array): T {\n return JSON.parse(new TextDecoder().decode(data)) as T;\n}\n\nexport function initJsonConvert() {\n const useStructuredClone =\n chrome.runtime.getManifest()['message_serialization'] ===\n 'structured_clone' &&\n getParser(navigator.userAgent, (navigator as any).userAgentData).satisfies({\n chrome: '>=148.0.0.0',\n });\n const isApplicable = (v: unknown): v is Uint8Array => v instanceof Uint8Array;\n\n const defaultConfig = {\n serialize: useStructuredClone\n ? (v: Uint8Array) => v\n : (v: Uint8Array) => uint8ArrayToBase64(v),\n deserialize: useStructuredClone\n ? (v: any) => v\n : (v: any) => base64ToUint8Array(v),\n isApplicable,\n };\n const compressConfig = {\n serialize: useStructuredClone\n ? (v: Uint8Array) => compress(v)\n : (v: Uint8Array) => uint8ArrayToBase64(compress(v)),\n deserialize: useStructuredClone\n ? (v: any) => uncompress(v)\n : (v: any) => uncompress(base64ToUint8Array(v)),\n isApplicable,\n };\n\n defaultSuperJSON.superJson.registerCustom<Uint8Array, any>(\n defaultConfig,\n CustomType.unit8array,\n );\n compressSuperJSON.superJson.registerCustom<Uint8Array, any>(\n compressConfig,\n CustomType.unit8array,\n );\n}\nexport function serialize(\n object: Parameters<typeof defaultSuperJSON.superJson.serialize>[0],\n compress?: boolean,\n) {\n if (!compress) {\n return defaultSuperJSON.superJson.serialize(object);\n }\n const result = compressSuperJSON.superJson.serialize(object);\n (result as any).__compress = true;\n if (result.meta?.values) {\n if (Array.isArray(result.meta?.values)) {\n if (result.meta.values[0][1] === CustomType.unit8array) {\n return result;\n }\n } else {\n const list = Object.values(result.meta.values);\n if (list.some((item) => Array.isArray(item[0]))) {\n return result;\n } else {\n return uint8ArrayToBase64(jsonToUint8Array(result));\n }\n }\n }\n return result;\n}\nexport function deserialize<T = unknown>(\n payload: SuperJSONResult & { __compress?: boolean },\n): T {\n if (typeof payload === 'string') {\n payload = uint8ArrayToJson(base64ToUint8Array(payload));\n }\n\n return payload.__compress\n ? compressSuperJSON.superJson.deserialize(payload, { inPlace: true })\n : defaultSuperJSON.superJson.deserialize(payload, { inPlace: true });\n}\n", "import type { AnyRouter, inferRouterContext } from '@trpc/server';\nimport { handleChromeMessage } from './handleChromeMessage';\nimport { deserialize, initJsonConvert } from '../util/json';\nimport { Message } from '../type';\n\ntype Awaitable<T> = T | Promise<T>;\ntype ChromHandleOptions<TRouter extends AnyRouter> = {\n createContext?: () => Awaitable<inferRouterContext<TRouter>>;\n router: TRouter;\n compressPathObj?: Record<string, boolean>;\n};\n\nclass ChromeHandler<TRouter extends AnyRouter> {\n #getWebviewSubscription() {\n return new Map();\n }\n constructor(private options: ChromHandleOptions<TRouter>) {\n this.init();\n }\n\n init() {\n initJsonConvert();\n chrome.runtime.onConnect.addListener((port) => {\n const fn: (message: Message, port: chrome.runtime.Port) => void = (\n message,\n ) => {\n handleChromeMessage({\n router: this.options.router,\n createContext: this.options.createContext,\n message: {\n ...message,\n operation: {\n ...message.operation,\n input: deserialize(message.operation.input as any),\n },\n },\n subscriptions: this.#getWebviewSubscription(),\n port,\n compressPathObj: this.options.compressPathObj,\n });\n };\n port.onMessage.addListener(fn);\n port.onDisconnect.addListener(() => {\n port.onMessage.removeListener(fn);\n });\n });\n }\n}\n\nexport const createChromeHandler = <TRouter extends AnyRouter>(\n options: ChromHandleOptions<TRouter>,\n) => new ChromeHandler(options);\n"],
5
+ "mappings": "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",
6
+ "names": ["TRPCError", "compress", "message", "TRPCError", "result", "id"]
7
+ }