@trylimbo/sdk-verifier-wasm 0.1.0-canary.100
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/gen/wasm/comlink.js +270 -0
- package/gen/wasm/trylimbo_sdk_verifier.d.ts +704 -0
- package/gen/wasm/trylimbo_sdk_verifier.js +1683 -0
- package/gen/wasm/trylimbo_sdk_verifier_bg.wasm +0 -0
- package/gen/wasm/trylimbo_sdk_verifier_bg.wasm.d.ts +62 -0
- package/gen/wasm/worker-thread.js +1604 -0
- package/gen/wasm/worker.d.ts +624 -0
- package/gen/wasm/worker.js +21 -0
- package/package.json +45 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
//#region ../../../../node_modules/comlink/dist/esm/comlink.mjs
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2019 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
const proxyMarker = Symbol("Comlink.proxy");
|
|
8
|
+
const createEndpoint = Symbol("Comlink.endpoint");
|
|
9
|
+
const releaseProxy = Symbol("Comlink.releaseProxy");
|
|
10
|
+
const finalizer = Symbol("Comlink.finalizer");
|
|
11
|
+
const throwMarker = Symbol("Comlink.thrown");
|
|
12
|
+
const isObject = (val) => typeof val === "object" && val !== null || typeof val === "function";
|
|
13
|
+
/**
|
|
14
|
+
* Allows customizing the serialization of certain values.
|
|
15
|
+
*/
|
|
16
|
+
const transferHandlers = /* @__PURE__ */ new Map([["proxy", {
|
|
17
|
+
canHandle: (val) => isObject(val) && val[proxyMarker],
|
|
18
|
+
serialize(obj) {
|
|
19
|
+
const { port1, port2 } = new MessageChannel();
|
|
20
|
+
expose(obj, port1);
|
|
21
|
+
return [port2, [port2]];
|
|
22
|
+
},
|
|
23
|
+
deserialize(port) {
|
|
24
|
+
port.start();
|
|
25
|
+
return wrap(port);
|
|
26
|
+
}
|
|
27
|
+
}], ["throw", {
|
|
28
|
+
canHandle: (value) => isObject(value) && throwMarker in value,
|
|
29
|
+
serialize({ value }) {
|
|
30
|
+
let serialized;
|
|
31
|
+
if (value instanceof Error) serialized = {
|
|
32
|
+
isError: true,
|
|
33
|
+
value: {
|
|
34
|
+
message: value.message,
|
|
35
|
+
name: value.name,
|
|
36
|
+
stack: value.stack
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
else serialized = {
|
|
40
|
+
isError: false,
|
|
41
|
+
value
|
|
42
|
+
};
|
|
43
|
+
return [serialized, []];
|
|
44
|
+
},
|
|
45
|
+
deserialize(serialized) {
|
|
46
|
+
if (serialized.isError) throw Object.assign(new Error(serialized.value.message), serialized.value);
|
|
47
|
+
throw serialized.value;
|
|
48
|
+
}
|
|
49
|
+
}]]);
|
|
50
|
+
function isAllowedOrigin(allowedOrigins, origin) {
|
|
51
|
+
for (const allowedOrigin of allowedOrigins) {
|
|
52
|
+
if (origin === allowedOrigin || allowedOrigin === "*") return true;
|
|
53
|
+
if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
function expose(obj, ep = globalThis, allowedOrigins = ["*"]) {
|
|
58
|
+
ep.addEventListener("message", function callback(ev) {
|
|
59
|
+
if (!ev || !ev.data) return;
|
|
60
|
+
if (!isAllowedOrigin(allowedOrigins, ev.origin)) {
|
|
61
|
+
console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const { id, type, path } = Object.assign({ path: [] }, ev.data);
|
|
65
|
+
const argumentList = (ev.data.argumentList || []).map(fromWireValue);
|
|
66
|
+
let returnValue;
|
|
67
|
+
try {
|
|
68
|
+
const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);
|
|
69
|
+
const rawValue = path.reduce((obj, prop) => obj[prop], obj);
|
|
70
|
+
switch (type) {
|
|
71
|
+
case "GET":
|
|
72
|
+
returnValue = rawValue;
|
|
73
|
+
break;
|
|
74
|
+
case "SET":
|
|
75
|
+
parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);
|
|
76
|
+
returnValue = true;
|
|
77
|
+
break;
|
|
78
|
+
case "APPLY":
|
|
79
|
+
returnValue = rawValue.apply(parent, argumentList);
|
|
80
|
+
break;
|
|
81
|
+
case "CONSTRUCT":
|
|
82
|
+
returnValue = proxy(new rawValue(...argumentList));
|
|
83
|
+
break;
|
|
84
|
+
case "ENDPOINT":
|
|
85
|
+
{
|
|
86
|
+
const { port1, port2 } = new MessageChannel();
|
|
87
|
+
expose(obj, port2);
|
|
88
|
+
returnValue = transfer(port1, [port1]);
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
case "RELEASE":
|
|
92
|
+
returnValue = void 0;
|
|
93
|
+
break;
|
|
94
|
+
default: return;
|
|
95
|
+
}
|
|
96
|
+
} catch (value) {
|
|
97
|
+
returnValue = {
|
|
98
|
+
value,
|
|
99
|
+
[throwMarker]: 0
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
Promise.resolve(returnValue).catch((value) => {
|
|
103
|
+
return {
|
|
104
|
+
value,
|
|
105
|
+
[throwMarker]: 0
|
|
106
|
+
};
|
|
107
|
+
}).then((returnValue) => {
|
|
108
|
+
const [wireValue, transferables] = toWireValue(returnValue);
|
|
109
|
+
ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
|
|
110
|
+
if (type === "RELEASE") {
|
|
111
|
+
ep.removeEventListener("message", callback);
|
|
112
|
+
closeEndPoint(ep);
|
|
113
|
+
if (finalizer in obj && typeof obj[finalizer] === "function") obj[finalizer]();
|
|
114
|
+
}
|
|
115
|
+
}).catch((error) => {
|
|
116
|
+
const [wireValue, transferables] = toWireValue({
|
|
117
|
+
value: /* @__PURE__ */ new TypeError("Unserializable return value"),
|
|
118
|
+
[throwMarker]: 0
|
|
119
|
+
});
|
|
120
|
+
ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
if (ep.start) ep.start();
|
|
124
|
+
}
|
|
125
|
+
function isMessagePort(endpoint) {
|
|
126
|
+
return endpoint.constructor.name === "MessagePort";
|
|
127
|
+
}
|
|
128
|
+
function closeEndPoint(endpoint) {
|
|
129
|
+
if (isMessagePort(endpoint)) endpoint.close();
|
|
130
|
+
}
|
|
131
|
+
function wrap(ep, target) {
|
|
132
|
+
const pendingListeners = /* @__PURE__ */ new Map();
|
|
133
|
+
ep.addEventListener("message", function handleMessage(ev) {
|
|
134
|
+
const { data } = ev;
|
|
135
|
+
if (!data || !data.id) return;
|
|
136
|
+
const resolver = pendingListeners.get(data.id);
|
|
137
|
+
if (!resolver) return;
|
|
138
|
+
try {
|
|
139
|
+
resolver(data);
|
|
140
|
+
} finally {
|
|
141
|
+
pendingListeners.delete(data.id);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return createProxy(ep, pendingListeners, [], target);
|
|
145
|
+
}
|
|
146
|
+
function throwIfProxyReleased(isReleased) {
|
|
147
|
+
if (isReleased) throw new Error("Proxy has been released and is not useable");
|
|
148
|
+
}
|
|
149
|
+
function releaseEndpoint(ep) {
|
|
150
|
+
return requestResponseMessage(ep, /* @__PURE__ */ new Map(), { type: "RELEASE" }).then(() => {
|
|
151
|
+
closeEndPoint(ep);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
const proxyCounter = /* @__PURE__ */ new WeakMap();
|
|
155
|
+
const proxyFinalizers = "FinalizationRegistry" in globalThis && new FinalizationRegistry((ep) => {
|
|
156
|
+
const newCount = (proxyCounter.get(ep) || 0) - 1;
|
|
157
|
+
proxyCounter.set(ep, newCount);
|
|
158
|
+
if (newCount === 0) releaseEndpoint(ep);
|
|
159
|
+
});
|
|
160
|
+
function registerProxy(proxy, ep) {
|
|
161
|
+
const newCount = (proxyCounter.get(ep) || 0) + 1;
|
|
162
|
+
proxyCounter.set(ep, newCount);
|
|
163
|
+
if (proxyFinalizers) proxyFinalizers.register(proxy, ep, proxy);
|
|
164
|
+
}
|
|
165
|
+
function unregisterProxy(proxy) {
|
|
166
|
+
if (proxyFinalizers) proxyFinalizers.unregister(proxy);
|
|
167
|
+
}
|
|
168
|
+
function createProxy(ep, pendingListeners, path = [], target = function() {}) {
|
|
169
|
+
let isProxyReleased = false;
|
|
170
|
+
const proxy = new Proxy(target, {
|
|
171
|
+
get(_target, prop) {
|
|
172
|
+
throwIfProxyReleased(isProxyReleased);
|
|
173
|
+
if (prop === releaseProxy) return () => {
|
|
174
|
+
unregisterProxy(proxy);
|
|
175
|
+
releaseEndpoint(ep);
|
|
176
|
+
pendingListeners.clear();
|
|
177
|
+
isProxyReleased = true;
|
|
178
|
+
};
|
|
179
|
+
if (prop === "then") {
|
|
180
|
+
if (path.length === 0) return { then: () => proxy };
|
|
181
|
+
const r = requestResponseMessage(ep, pendingListeners, {
|
|
182
|
+
type: "GET",
|
|
183
|
+
path: path.map((p) => p.toString())
|
|
184
|
+
}).then(fromWireValue);
|
|
185
|
+
return r.then.bind(r);
|
|
186
|
+
}
|
|
187
|
+
return createProxy(ep, pendingListeners, [...path, prop]);
|
|
188
|
+
},
|
|
189
|
+
set(_target, prop, rawValue) {
|
|
190
|
+
throwIfProxyReleased(isProxyReleased);
|
|
191
|
+
const [value, transferables] = toWireValue(rawValue);
|
|
192
|
+
return requestResponseMessage(ep, pendingListeners, {
|
|
193
|
+
type: "SET",
|
|
194
|
+
path: [...path, prop].map((p) => p.toString()),
|
|
195
|
+
value
|
|
196
|
+
}, transferables).then(fromWireValue);
|
|
197
|
+
},
|
|
198
|
+
apply(_target, _thisArg, rawArgumentList) {
|
|
199
|
+
throwIfProxyReleased(isProxyReleased);
|
|
200
|
+
const last = path[path.length - 1];
|
|
201
|
+
if (last === createEndpoint) return requestResponseMessage(ep, pendingListeners, { type: "ENDPOINT" }).then(fromWireValue);
|
|
202
|
+
if (last === "bind") return createProxy(ep, pendingListeners, path.slice(0, -1));
|
|
203
|
+
const [argumentList, transferables] = processArguments(rawArgumentList);
|
|
204
|
+
return requestResponseMessage(ep, pendingListeners, {
|
|
205
|
+
type: "APPLY",
|
|
206
|
+
path: path.map((p) => p.toString()),
|
|
207
|
+
argumentList
|
|
208
|
+
}, transferables).then(fromWireValue);
|
|
209
|
+
},
|
|
210
|
+
construct(_target, rawArgumentList) {
|
|
211
|
+
throwIfProxyReleased(isProxyReleased);
|
|
212
|
+
const [argumentList, transferables] = processArguments(rawArgumentList);
|
|
213
|
+
return requestResponseMessage(ep, pendingListeners, {
|
|
214
|
+
type: "CONSTRUCT",
|
|
215
|
+
path: path.map((p) => p.toString()),
|
|
216
|
+
argumentList
|
|
217
|
+
}, transferables).then(fromWireValue);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
registerProxy(proxy, ep);
|
|
221
|
+
return proxy;
|
|
222
|
+
}
|
|
223
|
+
function myFlat(arr) {
|
|
224
|
+
return Array.prototype.concat.apply([], arr);
|
|
225
|
+
}
|
|
226
|
+
function processArguments(argumentList) {
|
|
227
|
+
const processed = argumentList.map(toWireValue);
|
|
228
|
+
return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];
|
|
229
|
+
}
|
|
230
|
+
const transferCache = /* @__PURE__ */ new WeakMap();
|
|
231
|
+
function transfer(obj, transfers) {
|
|
232
|
+
transferCache.set(obj, transfers);
|
|
233
|
+
return obj;
|
|
234
|
+
}
|
|
235
|
+
function proxy(obj) {
|
|
236
|
+
return Object.assign(obj, { [proxyMarker]: true });
|
|
237
|
+
}
|
|
238
|
+
function toWireValue(value) {
|
|
239
|
+
for (const [name, handler] of transferHandlers) if (handler.canHandle(value)) {
|
|
240
|
+
const [serializedValue, transferables] = handler.serialize(value);
|
|
241
|
+
return [{
|
|
242
|
+
type: "HANDLER",
|
|
243
|
+
name,
|
|
244
|
+
value: serializedValue
|
|
245
|
+
}, transferables];
|
|
246
|
+
}
|
|
247
|
+
return [{
|
|
248
|
+
type: "RAW",
|
|
249
|
+
value
|
|
250
|
+
}, transferCache.get(value) || []];
|
|
251
|
+
}
|
|
252
|
+
function fromWireValue(value) {
|
|
253
|
+
switch (value.type) {
|
|
254
|
+
case "HANDLER": return transferHandlers.get(value.name).deserialize(value.value);
|
|
255
|
+
case "RAW": return value.value;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function requestResponseMessage(ep, pendingListeners, msg, transfers) {
|
|
259
|
+
return new Promise((resolve) => {
|
|
260
|
+
const id = generateUUID();
|
|
261
|
+
pendingListeners.set(id, resolve);
|
|
262
|
+
if (ep.start) ep.start();
|
|
263
|
+
ep.postMessage(Object.assign({ id }, msg), transfers);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function generateUUID() {
|
|
267
|
+
return new Array(4).fill(0).map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)).join("-");
|
|
268
|
+
}
|
|
269
|
+
//#endregion
|
|
270
|
+
export { wrap as i, finalizer as n, proxy as r, expose as t };
|