@getpara/server-sdk 1.8.0 → 2.0.0-alpha.3

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 (43) hide show
  1. package/dist/cjs/index.js +523 -3
  2. package/dist/cjs/index.js.br +0 -0
  3. package/dist/cjs/index.js.gz +0 -0
  4. package/dist/cjs/workers/worker.js +904 -18
  5. package/dist/cjs/workers/worker.js.br +0 -0
  6. package/dist/cjs/workers/worker.js.gz +0 -0
  7. package/dist/esm/index.js +468 -4
  8. package/dist/esm/index.js.br +0 -0
  9. package/dist/esm/index.js.gz +0 -0
  10. package/dist/esm/workers/chunk-ILICZWQV.js +36 -0
  11. package/dist/esm/workers/chunk-ILICZWQV.js.br +0 -0
  12. package/dist/esm/workers/chunk-ILICZWQV.js.gz +0 -0
  13. package/dist/esm/{wasm/wasm_exec.js → workers/wasm_exec-CFNSOXDO.js} +74 -68
  14. package/dist/esm/workers/wasm_exec-CFNSOXDO.js.br +0 -0
  15. package/dist/esm/workers/wasm_exec-CFNSOXDO.js.gz +0 -0
  16. package/dist/esm/workers/worker.js +329 -37
  17. package/dist/esm/workers/worker.js.br +0 -0
  18. package/dist/esm/workers/worker.js.gz +0 -0
  19. package/dist/types/ParaServer.d.ts +2 -5
  20. package/dist/types/workers/worker.d.ts +1 -1
  21. package/package.json +4 -4
  22. package/dist/cjs/ParaServer.js +0 -91
  23. package/dist/cjs/ServerLocalStorage.js +0 -48
  24. package/dist/cjs/ServerSessionStorage.js +0 -48
  25. package/dist/cjs/ServerUtils.js +0 -76
  26. package/dist/cjs/package.json +0 -3
  27. package/dist/cjs/wallet/keygen.js +0 -227
  28. package/dist/cjs/wallet/privateKey.js +0 -86
  29. package/dist/cjs/wallet/signing.js +0 -172
  30. package/dist/cjs/wasm/wasm_exec.js +0 -589
  31. package/dist/cjs/workers/walletUtils.js +0 -367
  32. package/dist/cjs/workers/workerWrapper.js +0 -88
  33. package/dist/esm/ParaServer.js +0 -37
  34. package/dist/esm/ServerLocalStorage.js +0 -26
  35. package/dist/esm/ServerSessionStorage.js +0 -26
  36. package/dist/esm/ServerUtils.js +0 -54
  37. package/dist/esm/chunk-FTA5RKYX.js +0 -8
  38. package/dist/esm/package.json +0 -6
  39. package/dist/esm/wallet/keygen.js +0 -160
  40. package/dist/esm/wallet/privateKey.js +0 -32
  41. package/dist/esm/wallet/signing.js +0 -109
  42. package/dist/esm/workers/walletUtils.js +0 -290
  43. package/dist/esm/workers/workerWrapper.js +0 -44
Binary file
Binary file
package/dist/esm/index.js CHANGED
@@ -1,8 +1,472 @@
1
- import "./chunk-FTA5RKYX.js";
1
+ // src/index.ts
2
2
  export * from "@getpara/core-sdk";
3
- import { Para as ParaServer } from "./ParaServer.js";
4
- var src_default = ParaServer;
3
+
4
+ // src/ParaServer.ts
5
+ import ParaCore, {
6
+ Environment
7
+ } from "@getpara/core-sdk";
8
+ import * as Sentry from "@sentry/node";
9
+
10
+ // src/ServerLocalStorage.ts
11
+ var ServerLocalStorage = class {
12
+ constructor() {
13
+ this.localStorage = {};
14
+ this.get = (key) => {
15
+ return this.localStorage[key] || null;
16
+ };
17
+ this.set = (key, value) => {
18
+ this.localStorage[key] = value;
19
+ };
20
+ this.removeItem = (key) => {
21
+ delete this.localStorage[key];
22
+ };
23
+ this.clear = (prefix) => {
24
+ const keys = Object.keys(this.localStorage);
25
+ for (let key in keys) {
26
+ if (key && key.startsWith(prefix)) {
27
+ this.removeItem(key);
28
+ }
29
+ }
30
+ };
31
+ }
32
+ };
33
+
34
+ // src/ServerSessionStorage.ts
35
+ var ServerSessionStorage = class {
36
+ constructor() {
37
+ this.sessionStorage = {};
38
+ this.get = (key) => {
39
+ return this.sessionStorage[key] || null;
40
+ };
41
+ this.set = (key, value) => {
42
+ this.sessionStorage[key] = value;
43
+ };
44
+ this.removeItem = (key) => {
45
+ delete this.sessionStorage[key];
46
+ };
47
+ this.clear = (prefix) => {
48
+ const keys = Object.keys(this.sessionStorage);
49
+ for (let key in keys) {
50
+ if (key && key.startsWith(prefix)) {
51
+ this.removeItem(key);
52
+ }
53
+ }
54
+ };
55
+ }
56
+ };
57
+
58
+ // src/wallet/keygen.ts
59
+ import * as uuid from "uuid";
60
+ import { waitUntilTrue } from "@getpara/core-sdk";
61
+
62
+ // src/workers/workerWrapper.ts
63
+ import { Worker } from "worker_threads";
64
+ import { getPortalBaseURL } from "@getpara/core-sdk";
65
+ var CLEAR_WORKER_TIMEOUT_MS = 1e3 * 90;
66
+ var worker;
67
+ var resFunctionMap = {};
68
+ function removeWorkId(workId, skipClearTimeout) {
69
+ const { timeoutId } = resFunctionMap[workId];
70
+ delete resFunctionMap[workId];
71
+ if (skipClearTimeout) {
72
+ return;
73
+ }
74
+ clearTimeout(timeoutId);
75
+ }
76
+ async function setupWorker(ctx, resFunction, workId) {
77
+ const timeoutId = setTimeout(() => {
78
+ removeWorkId(workId, true);
79
+ }, CLEAR_WORKER_TIMEOUT_MS);
80
+ resFunctionMap[workId] = {
81
+ fn: resFunction,
82
+ timeoutId
83
+ };
84
+ if (!worker || !worker.threadId) {
85
+ const workerRes = await fetch(`${getPortalBaseURL(ctx)}/static/js/mpcWorkerServer-bundle.js`);
86
+ worker = new Worker(await workerRes.text(), { eval: true });
87
+ const onmessage = async (message) => {
88
+ const { workId: messageWorkId } = message;
89
+ delete message.workId;
90
+ await resFunctionMap[messageWorkId].fn(message);
91
+ removeWorkId(messageWorkId);
92
+ };
93
+ worker.on("message", onmessage);
94
+ worker.on("error", (err) => {
95
+ throw err;
96
+ });
97
+ worker.on("exit", (code) => {
98
+ console.error(`worker stopped with exit code ${code}`);
99
+ });
100
+ }
101
+ return worker;
102
+ }
103
+
104
+ // src/wallet/keygen.ts
105
+ async function isKeygenComplete(ctx, userId, walletId) {
106
+ const wallets = await ctx.client.getWallets(userId);
107
+ const wallet = wallets.data.wallets.find((w) => w.id === walletId);
108
+ return !!wallet.address;
109
+ }
110
+ async function isPreKeygenComplete(ctx, pregenIdentifier, pregenIdentifierType, walletId) {
111
+ const wallets = await ctx.client.getPregenWallets({ [pregenIdentifierType]: [pregenIdentifier] });
112
+ const wallet = wallets.wallets.find((w) => w.id === walletId);
113
+ return !!wallet?.address;
114
+ }
115
+ function keygen(ctx, userId, type, secretKey, skipDistribute = false, sessionCookie, _emailProps = {}) {
116
+ return new Promise(async (resolve) => {
117
+ const workId = uuid.v4();
118
+ const worker2 = await setupWorker(
119
+ ctx,
120
+ async (res) => {
121
+ await waitUntilTrue(async () => isKeygenComplete(ctx, userId, res.walletId), 15e3, 1e3);
122
+ if (skipDistribute) {
123
+ resolve({
124
+ signer: res.signer,
125
+ walletId: res.walletId,
126
+ recoveryShare: null
127
+ });
128
+ }
129
+ },
130
+ workId
131
+ );
132
+ worker2.postMessage({
133
+ env: ctx.env,
134
+ apiKey: ctx.apiKey,
135
+ cosmosPrefix: ctx.cosmosPrefix,
136
+ params: { userId, secretKey, type },
137
+ functionType: "KEYGEN",
138
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
139
+ disableWorkers: ctx.disableWorkers,
140
+ sessionCookie,
141
+ useDKLS: ctx.useDKLS,
142
+ disableWebSockets: ctx.disableWebSockets,
143
+ wasmOverride: ctx.wasmOverride,
144
+ workId
145
+ });
146
+ });
147
+ }
148
+ function preKeygen(ctx, pregenIdentifier, pregenIdentifierType, type, secretKey, _skipDistribute = false, partnerId, sessionCookie) {
149
+ return new Promise(async (resolve) => {
150
+ const workId = uuid.v4();
151
+ const worker2 = await setupWorker(
152
+ ctx,
153
+ async (res) => {
154
+ await waitUntilTrue(
155
+ async () => isPreKeygenComplete(ctx, pregenIdentifier, pregenIdentifierType, res.walletId),
156
+ 15e3,
157
+ 1e3
158
+ );
159
+ resolve({
160
+ signer: res.signer,
161
+ walletId: res.walletId,
162
+ recoveryShare: null
163
+ });
164
+ },
165
+ workId
166
+ );
167
+ const email = void 0;
168
+ const params = { pregenIdentifier, pregenIdentifierType, secretKey, partnerId, email, type };
169
+ if (pregenIdentifierType === "EMAIL") {
170
+ params.email = pregenIdentifier;
171
+ }
172
+ worker2.postMessage({
173
+ env: ctx.env,
174
+ apiKey: ctx.apiKey,
175
+ cosmosPrefix: ctx.cosmosPrefix,
176
+ params,
177
+ functionType: "PREKEYGEN",
178
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
179
+ disableWorkers: ctx.disableWorkers,
180
+ sessionCookie,
181
+ useDKLS: ctx.useDKLS,
182
+ disableWebSockets: ctx.disableWebSockets,
183
+ wasmOverride: ctx.wasmOverride,
184
+ workId
185
+ });
186
+ });
187
+ }
188
+ function ed25519Keygen(ctx, userId, sessionCookie, _emailProps = {}) {
189
+ return new Promise(async (resolve) => {
190
+ const workId = uuid.v4();
191
+ const worker2 = await setupWorker(
192
+ ctx,
193
+ async (res) => {
194
+ await waitUntilTrue(async () => isKeygenComplete(ctx, userId, res.walletId), 15e3, 1e3);
195
+ resolve({
196
+ signer: res.signer,
197
+ walletId: res.walletId,
198
+ recoveryShare: null
199
+ });
200
+ },
201
+ workId
202
+ );
203
+ worker2.postMessage({
204
+ env: ctx.env,
205
+ apiKey: ctx.apiKey,
206
+ cosmosPrefix: ctx.cosmosPrefix,
207
+ params: { userId },
208
+ functionType: "ED25519_KEYGEN",
209
+ disableWorkers: ctx.disableWorkers,
210
+ sessionCookie,
211
+ disableWebSockets: ctx.disableWebSockets,
212
+ wasmOverride: ctx.wasmOverride,
213
+ workId
214
+ });
215
+ });
216
+ }
217
+ function ed25519PreKeygen(ctx, pregenIdentifier, pregenIdentifierType, sessionCookie) {
218
+ return new Promise(async (resolve) => {
219
+ const workId = uuid.v4();
220
+ const worker2 = await setupWorker(
221
+ ctx,
222
+ async (res) => {
223
+ await waitUntilTrue(
224
+ async () => isPreKeygenComplete(ctx, pregenIdentifier, pregenIdentifierType, res.walletId),
225
+ 15e3,
226
+ 1e3
227
+ );
228
+ resolve({
229
+ signer: res.signer,
230
+ walletId: res.walletId,
231
+ recoveryShare: null
232
+ });
233
+ },
234
+ workId
235
+ );
236
+ const email = void 0;
237
+ const params = { pregenIdentifier, pregenIdentifierType, email };
238
+ if (pregenIdentifierType === "EMAIL") {
239
+ params.email = pregenIdentifier;
240
+ }
241
+ worker2.postMessage({
242
+ env: ctx.env,
243
+ apiKey: ctx.apiKey,
244
+ cosmosPrefix: ctx.cosmosPrefix,
245
+ params,
246
+ functionType: "ED25519_PREKEYGEN",
247
+ disableWorkers: ctx.disableWorkers,
248
+ sessionCookie,
249
+ disableWebSockets: ctx.disableWebSockets,
250
+ wasmOverride: ctx.wasmOverride,
251
+ workId
252
+ });
253
+ });
254
+ }
255
+
256
+ // src/wallet/signing.ts
257
+ import * as uuid2 from "uuid";
258
+ async function signTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS) {
259
+ return await new Promise(async (resolve) => {
260
+ const workId = uuid2.v4();
261
+ const worker2 = await setupWorker(
262
+ ctx,
263
+ async (sendTransactionRes) => {
264
+ resolve(sendTransactionRes);
265
+ },
266
+ workId
267
+ );
268
+ worker2.postMessage({
269
+ env: ctx.env,
270
+ apiKey: ctx.apiKey,
271
+ cosmosPrefix: ctx.cosmosPrefix,
272
+ params: { share, walletId, userId, tx, chainId },
273
+ functionType: "SIGN_TRANSACTION",
274
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
275
+ disableWorkers: ctx.disableWorkers,
276
+ sessionCookie,
277
+ useDKLS: isDKLS,
278
+ disableWebSockets: ctx.disableWebSockets,
279
+ wasmOverride: ctx.wasmOverride,
280
+ workId
281
+ });
282
+ });
283
+ }
284
+ async function sendTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS) {
285
+ return await new Promise(async (resolve) => {
286
+ const workId = uuid2.v4();
287
+ const worker2 = await setupWorker(
288
+ ctx,
289
+ async (sendTransactionRes) => {
290
+ resolve(sendTransactionRes);
291
+ },
292
+ workId
293
+ );
294
+ worker2.postMessage({
295
+ env: ctx.env,
296
+ apiKey: ctx.apiKey,
297
+ params: { share, walletId, userId, tx, chainId },
298
+ functionType: "SEND_TRANSACTION",
299
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
300
+ disableWorkers: ctx.disableWorkers,
301
+ sessionCookie,
302
+ useDKLS: isDKLS,
303
+ disableWebSockets: ctx.disableWebSockets,
304
+ wasmOverride: ctx.wasmOverride,
305
+ workId
306
+ });
307
+ });
308
+ }
309
+ async function signMessage(ctx, userId, walletId, share, message, sessionCookie, isDKLS) {
310
+ return await new Promise(async (resolve) => {
311
+ const workId = uuid2.v4();
312
+ const worker2 = await setupWorker(
313
+ ctx,
314
+ async (signMessageRes) => {
315
+ resolve(signMessageRes);
316
+ },
317
+ workId
318
+ );
319
+ worker2.postMessage({
320
+ env: ctx.env,
321
+ apiKey: ctx.apiKey,
322
+ params: { share, walletId, userId, message },
323
+ functionType: "SIGN_MESSAGE",
324
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
325
+ disableWorkers: ctx.disableWorkers,
326
+ sessionCookie,
327
+ useDKLS: isDKLS,
328
+ disableWebSockets: ctx.disableWebSockets,
329
+ wasmOverride: ctx.wasmOverride,
330
+ workId
331
+ });
332
+ });
333
+ }
334
+ async function ed25519Sign(ctx, userId, walletId, share, base64Bytes, sessionCookie) {
335
+ return await new Promise(async (resolve) => {
336
+ const workId = uuid2.v4();
337
+ const worker2 = await setupWorker(
338
+ ctx,
339
+ async (signMessageRes) => {
340
+ resolve(signMessageRes);
341
+ },
342
+ workId
343
+ );
344
+ worker2.postMessage({
345
+ env: ctx.env,
346
+ apiKey: ctx.apiKey,
347
+ params: { share, walletId, userId, base64Bytes },
348
+ functionType: "ED25519_SIGN",
349
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
350
+ disableWorkers: ctx.disableWorkers,
351
+ sessionCookie,
352
+ disableWebSockets: ctx.disableWebSockets,
353
+ wasmOverride: ctx.wasmOverride,
354
+ workId
355
+ });
356
+ });
357
+ }
358
+
359
+ // src/wallet/privateKey.ts
360
+ import * as uuid3 from "uuid";
361
+ async function getPrivateKey(ctx, userId, walletId, share, sessionCookie) {
362
+ return await new Promise(async (resolve) => {
363
+ const workId = uuid3.v4();
364
+ const worker2 = await setupWorker(
365
+ ctx,
366
+ async (res) => {
367
+ resolve(res);
368
+ },
369
+ workId
370
+ );
371
+ worker2.postMessage({
372
+ env: ctx.env,
373
+ apiKey: ctx.apiKey,
374
+ cosmosPrefix: ctx.cosmosPrefix,
375
+ params: { share, walletId, userId },
376
+ functionType: "GET_PRIVATE_KEY",
377
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
378
+ disableWorkers: ctx.disableWorkers,
379
+ sessionCookie,
380
+ useDKLS: ctx.useDKLS,
381
+ disableWebSockets: ctx.disableWebSockets,
382
+ wasmOverride: ctx.wasmOverride,
383
+ workId
384
+ });
385
+ });
386
+ }
387
+
388
+ // src/ServerUtils.ts
389
+ var ServerUtils = class {
390
+ constructor() {
391
+ this.localStorage = new ServerLocalStorage();
392
+ this.sessionStorage = new ServerSessionStorage();
393
+ this.secureStorage = void 0;
394
+ this.isSyncStorage = true;
395
+ this.disableProviderModal = true;
396
+ }
397
+ getPrivateKey(ctx, userId, walletId, share, sessionCookie) {
398
+ return getPrivateKey(ctx, userId, walletId, share, sessionCookie);
399
+ }
400
+ keygen(ctx, userId, type, secretKey, sessionCookie, emailProps) {
401
+ return keygen(ctx, userId, type, secretKey, true, sessionCookie, emailProps);
402
+ }
403
+ refresh(_ctx, _sessionCookie, _userId, _walletId, _share, _oldPartnerId, _newPartnerId) {
404
+ throw new Error("Refresh function is not implemented in the ServerUtils class.");
405
+ }
406
+ preKeygen(ctx, partnerId, pregenIdentifier, pregenIdentifierType, type, secretKey, sessionCookie) {
407
+ return preKeygen(ctx, pregenIdentifier, pregenIdentifierType, type, secretKey, false, partnerId, sessionCookie);
408
+ }
409
+ signMessage(ctx, userId, walletId, share, message, sessionCookie, isDKLS) {
410
+ return signMessage(ctx, userId, walletId, share, message, sessionCookie, isDKLS);
411
+ }
412
+ signTransaction(ctx, userId, walletId, share, message, chainId, sessionCookie, isDKLS) {
413
+ return signTransaction(ctx, userId, walletId, share, message, chainId, sessionCookie, isDKLS);
414
+ }
415
+ sendTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS) {
416
+ return sendTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS);
417
+ }
418
+ signHash(_address, _hash) {
419
+ throw new Error("SignHash is not implemented in the ServerUtils class.");
420
+ }
421
+ ed25519Keygen(ctx, userId, sessionCookie, emailProps) {
422
+ return ed25519Keygen(ctx, userId, sessionCookie, emailProps);
423
+ }
424
+ ed25519PreKeygen(ctx, pregenIdentifier, pregenIdentifierType, sessionCookie) {
425
+ return ed25519PreKeygen(ctx, pregenIdentifier, pregenIdentifierType, sessionCookie);
426
+ }
427
+ ed25519Sign(ctx, userId, walletId, share, base64Bytes, sessionCookie) {
428
+ return ed25519Sign(ctx, userId, walletId, share, base64Bytes, sessionCookie);
429
+ }
430
+ openPopup(_popupUrl) {
431
+ throw new Error("OpenPopup is not implemented in the ServerUtils class.");
432
+ }
433
+ };
434
+
435
+ // src/ParaServer.ts
436
+ var Para = class extends ParaCore {
437
+ constructor(env, apiKey, opts) {
438
+ super(env, apiKey, opts);
439
+ if (env !== Environment.PROD && env !== Environment.DEV) {
440
+ Sentry.init({
441
+ environment: env.toLowerCase(),
442
+ dsn: "https://2a26842d951255c2721fde5c1dd2b252@o4504568036720640.ingest.us.sentry.io/4508850906791936"
443
+ });
444
+ }
445
+ }
446
+ getPlatformUtils() {
447
+ return new ServerUtils();
448
+ }
449
+ /**
450
+ * Claims a pregenerated wallet.
451
+ *
452
+ * NOTE: This function is only available on the client side.
453
+ * When called from the server SDK, it throws an error.
454
+ *
455
+ * @param {Object} opts the options object.
456
+ * @param {string} opts.pregenIdentifier - the identifier of the user claiming the wallet.
457
+ * @param {TPregenIdentifierType} opts.pregenIdentifierType - the type of the identifier.
458
+ * @returns {Promise<string | undefined>} A promise that rejects with an error.
459
+ */
460
+ async claimPregenWallets(_) {
461
+ throw new Error(
462
+ "claimPregenWallets is not available in the server SDK. This function is only supported on the client side. Please ensure you are using the client SDK to call this method."
463
+ );
464
+ }
465
+ };
466
+
467
+ // src/index.ts
468
+ var src_default = Para;
5
469
  export {
6
- ParaServer as Para,
470
+ Para,
7
471
  src_default as default
8
472
  };
Binary file
Binary file
@@ -0,0 +1,36 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
+ }) : x)(function(x) {
5
+ if (typeof require !== "undefined") return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+ var __commonJS = (cb, mod) => function __require2() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
11
+ var __async = (__this, __arguments, generator) => {
12
+ return new Promise((resolve, reject) => {
13
+ var fulfilled = (value) => {
14
+ try {
15
+ step(generator.next(value));
16
+ } catch (e) {
17
+ reject(e);
18
+ }
19
+ };
20
+ var rejected = (value) => {
21
+ try {
22
+ step(generator.throw(value));
23
+ } catch (e) {
24
+ reject(e);
25
+ }
26
+ };
27
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
28
+ step((generator = generator.apply(__this, __arguments)).next());
29
+ });
30
+ };
31
+
32
+ export {
33
+ __require,
34
+ __commonJS,
35
+ __async
36
+ };
@@ -1,13 +1,17 @@
1
1
  import {
2
- __commonJS
3
- } from "../chunk-FTA5RKYX.js";
2
+ __async,
3
+ __commonJS,
4
+ __require
5
+ } from "./chunk-ILICZWQV.js";
6
+
7
+ // src/wasm/wasm_exec.js
4
8
  var require_wasm_exec = __commonJS({
5
9
  "src/wasm/wasm_exec.js"(exports, module) {
6
- const globalThisCopy = global;
10
+ var globalThisCopy = global;
7
11
  if (!globalThisCopy.crypto) {
8
- globalThisCopy.crypto = require("crypto");
12
+ globalThisCopy.crypto = __require("crypto");
9
13
  }
10
- const crypto = globalThisCopy.crypto;
14
+ var crypto = globalThisCopy.crypto;
11
15
  (() => {
12
16
  const enosys = () => {
13
17
  const err = new Error("not implemented");
@@ -480,71 +484,73 @@ var require_wasm_exec = __commonJS({
480
484
  }
481
485
  };
482
486
  }
483
- async run(instance) {
484
- if (!(instance instanceof WebAssembly.Instance)) {
485
- throw new Error("Go.run: WebAssembly.Instance expected");
486
- }
487
- this._inst = instance;
488
- this.mem = new DataView(this._inst.exports.mem.buffer);
489
- this._values = [
490
- // JS values that Go currently has references to, indexed by reference id
491
- NaN,
492
- 0,
493
- null,
494
- true,
495
- false,
496
- globalThis,
497
- this
498
- ];
499
- this._goRefCounts = new Array(this._values.length).fill(Infinity);
500
- this._ids = /* @__PURE__ */ new Map([
501
- // mapping from JS values to reference ids
502
- [0, 1],
503
- [null, 2],
504
- [true, 3],
505
- [false, 4],
506
- [globalThis, 5],
507
- [this, 6]
508
- ]);
509
- this._idPool = [];
510
- this.exited = false;
511
- let offset = 4096;
512
- const strPtr = (str) => {
513
- const ptr = offset;
514
- const bytes = encoder.encode(str + "\0");
515
- new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
516
- offset += bytes.length;
517
- if (offset % 8 !== 0) {
518
- offset += 8 - offset % 8;
487
+ run(instance) {
488
+ return __async(this, null, function* () {
489
+ if (!(instance instanceof WebAssembly.Instance)) {
490
+ throw new Error("Go.run: WebAssembly.Instance expected");
519
491
  }
520
- return ptr;
521
- };
522
- const argc = this.argv.length;
523
- const argvPtrs = [];
524
- this.argv.forEach((arg) => {
525
- argvPtrs.push(strPtr(arg));
526
- });
527
- argvPtrs.push(0);
528
- const keys = Object.keys(this.env).sort();
529
- keys.forEach((key) => {
530
- argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
531
- });
532
- argvPtrs.push(0);
533
- const argv = offset;
534
- argvPtrs.forEach((ptr) => {
535
- this.mem.setUint32(offset, ptr, true);
536
- this.mem.setUint32(offset + 4, 0, true);
537
- offset += 8;
492
+ this._inst = instance;
493
+ this.mem = new DataView(this._inst.exports.mem.buffer);
494
+ this._values = [
495
+ // JS values that Go currently has references to, indexed by reference id
496
+ NaN,
497
+ 0,
498
+ null,
499
+ true,
500
+ false,
501
+ globalThis,
502
+ this
503
+ ];
504
+ this._goRefCounts = new Array(this._values.length).fill(Infinity);
505
+ this._ids = /* @__PURE__ */ new Map([
506
+ // mapping from JS values to reference ids
507
+ [0, 1],
508
+ [null, 2],
509
+ [true, 3],
510
+ [false, 4],
511
+ [globalThis, 5],
512
+ [this, 6]
513
+ ]);
514
+ this._idPool = [];
515
+ this.exited = false;
516
+ let offset = 4096;
517
+ const strPtr = (str) => {
518
+ const ptr = offset;
519
+ const bytes = encoder.encode(str + "\0");
520
+ new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
521
+ offset += bytes.length;
522
+ if (offset % 8 !== 0) {
523
+ offset += 8 - offset % 8;
524
+ }
525
+ return ptr;
526
+ };
527
+ const argc = this.argv.length;
528
+ const argvPtrs = [];
529
+ this.argv.forEach((arg) => {
530
+ argvPtrs.push(strPtr(arg));
531
+ });
532
+ argvPtrs.push(0);
533
+ const keys = Object.keys(this.env).sort();
534
+ keys.forEach((key) => {
535
+ argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
536
+ });
537
+ argvPtrs.push(0);
538
+ const argv = offset;
539
+ argvPtrs.forEach((ptr) => {
540
+ this.mem.setUint32(offset, ptr, true);
541
+ this.mem.setUint32(offset + 4, 0, true);
542
+ offset += 8;
543
+ });
544
+ const wasmMinDataAddr = 4096 + 8192;
545
+ if (offset >= wasmMinDataAddr) {
546
+ throw new Error("total length of command line and environment variables exceeds limit");
547
+ }
548
+ this._inst.exports.run(argc, argv);
549
+ if (this.exited) {
550
+ this._resolveExitPromise();
551
+ }
552
+ yield this._exitPromise;
538
553
  });
539
- const wasmMinDataAddr = 4096 + 8192;
540
- if (offset >= wasmMinDataAddr) {
541
- throw new Error("total length of command line and environment variables exceeds limit");
542
- }
543
- this._inst.exports.run(argc, argv);
544
- if (this.exited) {
545
- this._resolveExitPromise();
546
- }
547
- await this._exitPromise;
548
554
  }
549
555
  _resume() {
550
556
  if (this.exited) {