@cloudbase/container 2.5.38-alpha.1 → 2.5.39-beta.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.
package/src/index.ts CHANGED
@@ -2,42 +2,20 @@ import { ICloudbase } from '@cloudbase/types'
2
2
  import { ICloudbaseComponent } from '@cloudbase/types/component'
3
3
  import { ICallContainerOptions, IContianerConfig } from '@cloudbase/types/container'
4
4
  import { constants, utils, helpers } from '@cloudbase/utilities'
5
+ // import brotliPromise from 'brotli-dec-wasm' // Import the default export
6
+ import decompress from 'brotli/decompress'
7
+
8
+ import Go from './go_wams_exec'
5
9
  import { isBuffer, parseURL, serializeRequestBody } from './utils'
10
+ import { request } from './utils/request'
6
11
  import { COMPONENT_NAME } from './constants'
7
12
 
8
13
  declare const cloudbase: ICloudbase
14
+
9
15
  const { ERRORS, COMMUNITY_SITE_URL } = constants
10
16
  const { execCallback, printWarn } = utils
11
17
  const { catchErrorsDecorator } = helpers
12
18
 
13
- /* eslint-disable */
14
- let getExportFunction: Function = () => {
15
- throw new Error('getExportFunction 未实现')
16
- }
17
- let loadJSExportFunction: Function = () => {
18
- throw new Error('loadJSExportFunction 未实现')
19
- }
20
-
21
- if (globalThis.IS_MP_BUILD) {
22
- getExportFunction = function () {
23
- new Error('小程序不支持 wasm 加载')
24
- }
25
- loadJSExportFunction = function (jsUrl) {
26
- if (jsUrl) {
27
- new Error('小程序不支持动态 js 加载')
28
- }
29
- return {
30
- initContainer: (globalThis as any).cloudbase_private_link.initContainer,
31
- callContainer: (globalThis as any).cloudbase_private_link.callContainer,
32
- }
33
- }
34
- } else {
35
- const loader = require('./utils/loader')
36
- getExportFunction = loader.getExportFunction
37
- loadJSExportFunction = loader.loadJSExportFunction
38
- }
39
- /* eslint-enable */
40
-
41
19
  class InvalieParamsError extends Error {
42
20
  code: any
43
21
  constructor(scope, message) {
@@ -73,45 +51,43 @@ function genContainerError(data, scope = COMPONENT_NAME, defaultMessage = 'call
73
51
  return error
74
52
  }
75
53
 
76
- export class CloudbaseContainers {
77
- private readonly config: IContianerConfig & { jsUrl?: { vender?: string; vm: string } }
54
+ class CloudbaseContainers {
55
+ private readonly config: IContianerConfig
78
56
  private wasm: Promise<WebAssembly.Exports>
79
57
  private containerInitPromise: /* Promise<any>*/ any | null
80
58
 
81
59
  constructor(config: IContianerConfig) {
82
60
  this.config = {
83
61
  ...config,
84
- jsUrl:
85
- typeof config.jsUrl === 'string'
86
- ? {
87
- vm: config.jsUrl,
88
- }
89
- : (config.jsUrl as any),
90
62
  }
91
63
 
92
- if (!this.config.wasmUrl && this.config.publicKey) {
93
- // 非 wams 且有 public key 则可使用默认的 js-sdk,无需校验
94
- } else if (!this.config.wasmUrl && !this.config.jsUrl?.vm && !(globalThis as any).cloudbase_private_link) {
64
+ if (!this.config.wasmUrl && !this.config.jsUrl && !(window as any).cloudbase_private_link) {
95
65
  throw new InvalieParamsError(`${COMPONENT_NAME}`, '缺少 privatelink sdk 地址')
96
66
  }
97
67
 
98
68
  if (this.config.wasmUrl) {
99
- this.wasm = getExportFunction(this.config.wasmUrl).catch((e) => {
69
+ this.wasm = getExportFunction(this.config.wasmUrl, {
70
+ utils: {
71
+ info(e) {
72
+ console.log(e)
73
+ },
74
+ request,
75
+ },
76
+ }).catch((e) => {
100
77
  if (this.config.jsUrl) {
101
78
  console.warn('load wams error, fall back to use js', e)
102
79
  return loadJSExportFunction(this.config.jsUrl)
103
- }
104
- if ((globalThis as any).cloudbase_private_link) {
105
- return (globalThis as any).cloudbase_private_link
80
+ } if ((window as any).cloudbase_private_link) {
81
+ return (window as any).cloudbase_private_link
106
82
  }
107
83
  throw e
108
84
  })
109
- } else if (this.config.jsUrl || this.config.publicKey) {
85
+ } else if (this.config.jsUrl) {
110
86
  this.wasm = loadJSExportFunction(this.config.jsUrl)
111
87
  } else {
112
88
  this.wasm = Promise.resolve({
113
- initContainer: (globalThis as any).cloudbase_private_link.initContainer,
114
- callContainer: (globalThis as any).cloudbase_private_link.callContainer,
89
+ initContainer: (window as any).cloudbase_private_link.initContainer,
90
+ callContainer: (window as any).cloudbase_private_link.callContainer,
115
91
  })
116
92
  }
117
93
  }
@@ -162,44 +138,36 @@ export class CloudbaseContainers {
162
138
  url,
163
139
  method,
164
140
  header,
165
- data: serializeRequestBody(header, data, method),
141
+ data: serializeRequestBody(header, data),
166
142
  timeout,
167
143
  dataType,
168
144
  responseType,
169
145
  ...restOptions,
170
146
  }
171
147
 
172
- if (
173
- data
174
- && (isBuffer(params.data) || typeof params.data === 'string')
175
- && (data as any)?.length > 1000 * 1024 * 10
176
- ) {
177
- reject(new InvalieParamsError(SCOPE, 'body too large'))
178
- return
179
- }
180
-
181
- if (method === 'GET') {
182
- let { data: getBody } = params
183
- if (getBody) {
184
- params.data = undefined
185
- }
186
- if (!isBuffer(getBody) && typeof getBody !== 'string') {
187
- const list = Object.entries(getBody || {}).reduce(
188
- (list, [key, value]: [string, string | number | boolean]) => {
189
- list.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
190
- return list
191
- },
192
- [],
193
- )
194
- if (list.length) {
195
- getBody = list.join('&')
196
- }
148
+ /**
149
+ * 非 buffer
150
+ */
151
+ if (params.data !== undefined && !isBuffer(params.data)) {
152
+ if (typeof params.data !== 'string' && method === 'GET') {
153
+ try {
154
+ const list = Object.entries(params.data || {}).reduce(
155
+ (list, [key, value]: [string, string | number | boolean]) => {
156
+ list.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
157
+ return list
158
+ },
159
+ [],
160
+ )
161
+ if (list.length) {
162
+ params.data = list.join('&')
163
+ }
164
+ } catch (e) {}
197
165
  }
198
166
 
199
- if (typeof params.data === 'string') {
167
+ if (method === 'GET' && typeof params.data === 'string') {
200
168
  const parsedUrl = parseURL(url)
201
169
  if (parsedUrl.search) {
202
- parsedUrl.search += `&${params.data}`
170
+ parsedUrl.search += params.data
203
171
  } else {
204
172
  parsedUrl.search = `?${params.data}`
205
173
  }
@@ -208,6 +176,15 @@ export class CloudbaseContainers {
208
176
  }
209
177
  }
210
178
 
179
+ if (
180
+ data
181
+ && (isBuffer(params.data) || typeof params.data === 'string')
182
+ && (data as any)?.length > 1000 * 1024 * 10
183
+ ) {
184
+ reject(new InvalieParamsError(SCOPE, 'body too large'))
185
+ return
186
+ }
187
+
211
188
  callContainer({
212
189
  ...params,
213
190
  success: resolve,
@@ -229,15 +206,15 @@ export class CloudbaseContainers {
229
206
  this.containerInitPromise = new Promise((resolve, reject) => {
230
207
  initContainer({
231
208
  config,
232
- success: (res) => {
209
+ success(res) {
233
210
  if (String(res.statusCode) !== '200') {
234
211
  reject(genContainerError(res.data, `${COMPONENT_NAME}.initContainer`, 'init container fail'))
235
212
  }
236
213
  resolve(res)
237
214
  },
238
- fail: (res) => {
215
+ fail(res) {
239
216
  reject(genContainerError(res.data, `${COMPONENT_NAME}.initContainer`, 'init container fail'))
240
- this.containerInitPromise = null
217
+ this._containerInitPromis = null
241
218
  },
242
219
  })
243
220
  })
@@ -274,3 +251,116 @@ export function registerContainers(app: Pick<ICloudbase, 'registerComponent'>) {
274
251
  console.warn(e)
275
252
  }
276
253
  }
254
+
255
+ async function getExportFunction(url, module, mode = 'go') {
256
+ async function instantiateStreaming(resp, importObject, brotliCompressed = false) {
257
+ if (brotliCompressed || !WebAssembly.instantiateStreaming) {
258
+ const source = await (await resp).arrayBuffer()
259
+ const buffer = brotliCompressed ? decompress(new Int8Array(source)) : source
260
+ return WebAssembly.instantiate(buffer, importObject)
261
+ }
262
+
263
+ return WebAssembly.instantiateStreaming(resp, importObject)
264
+ }
265
+
266
+ let importObject = {
267
+ env: {
268
+ memoryBase: 0,
269
+ tableBase: 0,
270
+ memory: new WebAssembly.Memory({
271
+ initial: 256,
272
+ }),
273
+ // table: new WebAssembly.Table({
274
+ // initial: 2,
275
+ // element: 'anyfunc',
276
+ // }),
277
+ },
278
+ ...module,
279
+ }
280
+ let go
281
+ const brotliCompressed = isBrotliCompressed(url)
282
+
283
+ if (mode === 'go') {
284
+ go = new Go()
285
+ go._initedModulePromise = new Promise((resolve) => {
286
+ go._initedModuleResolve = resolve
287
+ })
288
+ importObject = {
289
+ ...go.importObject,
290
+ env: {
291
+ ...go.importObject.env,
292
+ exportModule(module) {
293
+ return go._initedModuleResolve(module)
294
+ },
295
+ },
296
+ }
297
+ }
298
+
299
+ const reuslt = await instantiateStreaming(fetch(url), importObject, brotliCompressed)
300
+
301
+ if (mode === 'go') {
302
+ await Promise.race([
303
+ go.run(reuslt.instance),
304
+ new Promise(resolve => setTimeout(() => {
305
+ resolve(null)
306
+ }, 500),),
307
+ ])
308
+
309
+ return {
310
+ callContainer: (window as any).callContainer,
311
+ initContainer: (window as any).initContainer,
312
+ }
313
+ }
314
+
315
+ // if (mode === 'go') {
316
+ // go.run(reuslt.instance)
317
+ // const module = await go._initedModulePromise
318
+ // return module
319
+ // }
320
+
321
+ return reuslt.instance.exports
322
+ }
323
+
324
+ function loadUmdModule(jsUrl: string, umdModuleName: string, targetDoc: Document = document) {
325
+ return new Promise<any>((resolve, reject) => {
326
+ const win = targetDoc.defaultView
327
+
328
+ const script = targetDoc.createElement('script')
329
+ script.setAttribute('src', jsUrl)
330
+ script.setAttribute('class', umdModuleName)
331
+ script.addEventListener('load', () => {
332
+ if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
333
+ return resolve(win[umdModuleName as any])
334
+ }
335
+ const error = new Error(`Fail to load UMD module ${umdModuleName} from [${jsUrl}].`)
336
+ return reject(error)
337
+ })
338
+
339
+ script.addEventListener('error', (e) => {
340
+ const error = new Error(`main bundle [${umdModuleName}] load failed from [${jsUrl}]: ${e?.message || ''}`)
341
+ reject(error)
342
+ })
343
+ targetDoc.body.appendChild(script)
344
+ })
345
+ }
346
+
347
+ async function loadJSExportFunction(url) {
348
+ return loadUmdModule(url, 'cloudbase_private_link')
349
+ }
350
+
351
+ function isBrotliCompressed(url) {
352
+ let brotliCompressed = false
353
+
354
+ let pathname = ''
355
+ try {
356
+ const location = parseURL(url)
357
+ pathname = location.pathname
358
+ } catch (e) {
359
+ pathname = url
360
+ }
361
+
362
+ if (/\.br$/.test(pathname)) {
363
+ brotliCompressed = true
364
+ }
365
+ return brotliCompressed
366
+ }
@@ -15,36 +15,15 @@ export function isBuffer(buf: any) {
15
15
  return buf instanceof ArrayBuffer || ArrayBuffer.isView(buf)
16
16
  }
17
17
 
18
- function object2Qs(data) {
19
- const list = Object.entries(data || {}).reduce((list, [key, value]: [string, string]) => {
20
- list.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
21
- return list
22
- }, [])
23
- if (list.length) {
24
- return list.join('&')
25
- }
26
- }
27
-
28
- export function serializeRequestBody<T>(headers, data: T, method = 'POST'): T | string {
18
+ export function serializeRequestBody<T>(headers, data: T): T | string {
29
19
  let res: T | string = data
30
- const contentTypeKey = 'Content-Type'
20
+ const contentType_key = 'Content-Type'
31
21
  if (typeof data === 'object' && !isBuffer(data)) {
32
- if (!headers[contentTypeKey] && !headers['content-type']) {
33
- headers[contentTypeKey] = 'application/json'
22
+ if (!headers[contentType_key] && !headers['content-type']) {
23
+ headers[contentType_key] = 'application/json'
34
24
  }
35
25
 
36
- const contentType = headers[contentTypeKey] || headers['content-type']
37
-
38
- if (method === 'GET') {
39
- try {
40
- return object2Qs(data) || ''
41
- } catch (e) {
42
- throw new Error(JSON.stringify({
43
- code: ERRORS.INVALID_PARAMS,
44
- msg: `[${COMPONENT_NAME}.callContainer] invalid data in query method, ${e.message}`,
45
- }),)
46
- }
47
- }
26
+ const contentType = headers[contentType_key] || headers['content-type']
48
27
 
49
28
  switch (contentType) {
50
29
  case 'application/json': {
@@ -60,9 +39,12 @@ export function serializeRequestBody<T>(headers, data: T, method = 'POST'): T |
60
39
  }
61
40
  case 'application/x-www-form-urlencoded': {
62
41
  try {
63
- const qs = object2Qs(data)
64
- if (qs) {
65
- res = qs
42
+ const list = Object.entries(data || {}).reduce((list, [key, value]: [string, string]) => {
43
+ list.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
44
+ return list
45
+ }, [])
46
+ if (list.length) {
47
+ res = list.join('&')
66
48
  }
67
49
  } catch (e) {
68
50
  throw new Error(JSON.stringify({
@@ -1,8 +0,0 @@
1
- export declare function getExportFunction(url: any, module: any, mode?: string): Promise<WebAssembly.Exports | {
2
- callContainer: any;
3
- initContainer: any;
4
- }>;
5
- export declare function loadJSExportFunction(config?: {
6
- vm: string;
7
- vender?: string;
8
- }): Promise<any>;
@@ -1,185 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.loadJSExportFunction = exports.getExportFunction = void 0;
54
- var go_wams_exec_1 = __importDefault(require("../go_wams_exec"));
55
- var _1 = require(".");
56
- function instantiateStreaming(resp, importObject, brotliCompressed) {
57
- if (brotliCompressed === void 0) { brotliCompressed = false; }
58
- return __awaiter(this, void 0, void 0, function () {
59
- var source, buffer;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0:
63
- if (!(brotliCompressed || !WebAssembly.instantiateStreaming)) return [3, 3];
64
- return [4, resp];
65
- case 1: return [4, (_a.sent()).arrayBuffer()];
66
- case 2:
67
- source = _a.sent();
68
- if (brotliCompressed) {
69
- throw new Error('do not support *.br');
70
- }
71
- buffer = source;
72
- return [2, WebAssembly.instantiate(buffer, importObject)];
73
- case 3: return [2, WebAssembly.instantiateStreaming(resp, importObject)];
74
- }
75
- });
76
- });
77
- }
78
- function isBrotliCompressed(url) {
79
- var brotliCompressed = false;
80
- var pathname = '';
81
- try {
82
- var location_1 = (0, _1.parseURL)(url);
83
- pathname = location_1.pathname;
84
- }
85
- catch (e) {
86
- pathname = url;
87
- }
88
- if (/\.br$/.test(pathname)) {
89
- brotliCompressed = true;
90
- }
91
- return brotliCompressed;
92
- }
93
- function getExportFunction(url, module, mode) {
94
- if (mode === void 0) { mode = 'go'; }
95
- return __awaiter(this, void 0, void 0, function () {
96
- var importObject, go, brotliCompressed, reuslt;
97
- return __generator(this, function (_a) {
98
- switch (_a.label) {
99
- case 0:
100
- importObject = __assign({ env: {
101
- memoryBase: 0,
102
- tableBase: 0,
103
- memory: new WebAssembly.Memory({
104
- initial: 256,
105
- }),
106
- } }, module);
107
- brotliCompressed = isBrotliCompressed(url);
108
- if (mode === 'go') {
109
- go = new go_wams_exec_1.default();
110
- go._initedModulePromise = new Promise(function (resolve) {
111
- go._initedModuleResolve = resolve;
112
- });
113
- importObject = __assign(__assign({}, go.importObject), { env: __assign(__assign({}, go.importObject.env), { exportModule: function (module) {
114
- return go._initedModuleResolve(module);
115
- } }) });
116
- }
117
- return [4, instantiateStreaming(fetch(url), importObject, brotliCompressed)];
118
- case 1:
119
- reuslt = _a.sent();
120
- if (!(mode === 'go')) return [3, 3];
121
- return [4, Promise.race([
122
- go.run(reuslt.instance),
123
- new Promise(function (resolve) { return setTimeout(function () {
124
- resolve(null);
125
- }, 500); }),
126
- ])];
127
- case 2:
128
- _a.sent();
129
- return [2, {
130
- callContainer: window.callContainer,
131
- initContainer: window.initContainer,
132
- }];
133
- case 3: return [2, reuslt.instance.exports];
134
- }
135
- });
136
- });
137
- }
138
- exports.getExportFunction = getExportFunction;
139
- function loadJSExportFunction(config) {
140
- return __awaiter(this, void 0, void 0, function () {
141
- var _a, vm, vender, VENDER_KEY;
142
- return __generator(this, function (_b) {
143
- switch (_b.label) {
144
- case 0:
145
- _a = config || {}, vm = _a.vm, vender = _a.vender;
146
- VENDER_KEY = 'cloudbase_private_link_vender';
147
- if (!(vender || !Object.prototype.hasOwnProperty.call(document.defaultView, VENDER_KEY))) return [3, 2];
148
- return [4, loadUmdModule(vender
149
- || 'https://cdn.jsdelivr.net/npm/@cloudbase/privatelink-vender@0.0.1-alpha.3/dist/cdn/cloudbase.privatelink.vender.js', VENDER_KEY)];
150
- case 1:
151
- _b.sent();
152
- _b.label = 2;
153
- case 2: return [2, loadUmdModule(vm || 'https://cdn.jsdelivr.net/npm/@cloudbase/privatelink@0.0.1-alpha.0/dist/cdn/cloudbase.privatelink.vm.js', 'cloudbase_private_link')];
154
- }
155
- });
156
- });
157
- }
158
- exports.loadJSExportFunction = loadJSExportFunction;
159
- function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
160
- if (targetDoc === void 0) { targetDoc = document; }
161
- return new Promise(function (resolve, reject) {
162
- var win = targetDoc.defaultView;
163
- var script = targetDoc.createElement('script');
164
- script.setAttribute('src', jsUrl);
165
- script.setAttribute('class', umdModuleName);
166
- script.addEventListener('load', function () {
167
- if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
168
- return resolve(win[umdModuleName]);
169
- }
170
- var error = new Error("Fail to load UMD module ".concat(umdModuleName, " from [").concat(jsUrl, "]."));
171
- return reject(error);
172
- });
173
- script.addEventListener('error', function (e) {
174
- var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
175
- reject(error);
176
- });
177
- if (targetDoc.body) {
178
- targetDoc.body.appendChild(script);
179
- }
180
- else {
181
- targetDoc.head.appendChild(script);
182
- }
183
- });
184
- }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlFQUFnQztBQUNoQyxzQkFBNEI7QUFFNUIsU0FBZSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLGdCQUF3QjtJQUF4QixpQ0FBQSxFQUFBLHdCQUF3Qjs7Ozs7O3lCQUMxRSxDQUFBLGdCQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFBLEVBQXJELGNBQXFEO29CQUNqQyxXQUFNLElBQUksRUFBQTt3QkFBakIsV0FBTSxDQUFDLFNBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFBOztvQkFBekMsTUFBTSxHQUFHLFNBQWdDO29CQUMvQyxJQUFJLGdCQUFnQixFQUFFO3dCQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUE7cUJBQ3ZDO29CQUVLLE1BQU0sR0FBRyxNQUFNLENBQUE7b0JBQ3JCLFdBQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUE7d0JBR3RELFdBQU8sV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsRUFBQTs7OztDQUM1RDtBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBRztJQUM3QixJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtJQUU1QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSTtRQUNGLElBQU0sVUFBUSxHQUFHLElBQUEsV0FBUSxFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLFFBQVEsR0FBRyxVQUFRLENBQUMsUUFBUSxDQUFBO0tBQzdCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixRQUFRLEdBQUcsR0FBRyxDQUFBO0tBQ2Y7SUFF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QUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBkZWNvbXByZXNzIGZyb20gJ2Jyb3RsaS9kZWNvbXByZXNzJ1xuaW1wb3J0IEdvIGZyb20gJy4uL2dvX3dhbXNfZXhlYydcbmltcG9ydCB7IHBhcnNlVVJMIH0gZnJvbSAnLidcblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkID0gZmFsc2UpIHtcbiAgaWYgKGJyb3RsaUNvbXByZXNzZWQgfHwgIVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKSB7XG4gICAgY29uc3Qgc291cmNlID0gYXdhaXQgKGF3YWl0IHJlc3ApLmFycmF5QnVmZmVyKClcbiAgICBpZiAoYnJvdGxpQ29tcHJlc3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkbyBub3Qgc3VwcG9ydCAqLmJyJylcbiAgICB9XG4gICAgLy8gY29uc3QgYnVmZmVyID0gYnJvdGxpQ29tcHJlc3NlZCA/IGRlY29tcHJlc3MobmV3IEludDhBcnJheShzb3VyY2UpKSA6IHNvdXJjZVxuICAgIGNvbnN0IGJ1ZmZlciA9IHNvdXJjZVxuICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShidWZmZXIsIGltcG9ydE9iamVjdClcbiAgfVxuXG4gIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QpXG59XG5cbmZ1bmN0aW9uIGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpIHtcbiAgbGV0IGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZVxuXG4gIGxldCBwYXRobmFtZSA9ICcnXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBwYXJzZVVSTCh1cmwpXG4gICAgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcGF0aG5hbWUgPSB1cmxcbiAgfVxuXG4gIGlmICgvXFwuYnIkLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgIGJyb3RsaUNvbXByZXNzZWQgPSB0cnVlXG4gIH1cbiAgcmV0dXJuIGJyb3RsaUNvbXByZXNzZWRcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4cG9ydEZ1bmN0aW9uKHVybCwgbW9kdWxlLCBtb2RlID0gJ2dvJykge1xuICBsZXQgaW1wb3J0T2JqZWN0ID0ge1xuICAgIGVudjoge1xuICAgICAgbWVtb3J5QmFzZTogMCxcbiAgICAgIHRhYmxlQmFzZTogMCxcbiAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7XG4gICAgICAgIGluaXRpYWw6IDI1NixcbiAgICAgIH0pLFxuICAgICAgLy8gdGFibGU6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7XG4gICAgICAvLyAgIGluaXRpYWw6IDIsXG4gICAgICAvLyAgIGVsZW1lbnQ6ICdhbnlmdW5jJyxcbiAgICAgIC8vIH0pLFxuICAgIH0sXG4gICAgLi4ubW9kdWxlLFxuICB9XG4gIGxldCBnb1xuICBjb25zdCBicm90bGlDb21wcmVzc2VkID0gaXNCcm90bGlDb21wcmVzc2VkKHVybClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGdvID0gbmV3IEdvKClcbiAgICBnby5faW5pdGVkTW9kdWxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZSA9IHJlc29sdmVcbiAgICB9KVxuICAgIGltcG9ydE9iamVjdCA9IHtcbiAgICAgIC4uLmdvLmltcG9ydE9iamVjdCxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5nby5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgICBleHBvcnRNb2R1bGUobW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1c2x0ID0gYXdhaXQgaW5zdGFudGlhdGVTdHJlYW1pbmcoZmV0Y2godXJsKSwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpLFxuICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShudWxsKVxuICAgICAgfSwgNTAwKSwpLFxuICAgIF0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNhbGxDb250YWluZXIsXG4gICAgICBpbml0Q29udGFpbmVyOiAod2luZG93IGFzIGFueSkuaW5pdENvbnRhaW5lcixcbiAgICB9XG4gIH1cblxuICAvLyBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAvLyAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpXG4gIC8vICAgY29uc3QgbW9kdWxlID0gYXdhaXQgZ28uX2luaXRlZE1vZHVsZVByb21pc2VcbiAgLy8gICByZXR1cm4gbW9kdWxlXG4gIC8vIH1cblxuICByZXR1cm4gcmV1c2x0Lmluc3RhbmNlLmV4cG9ydHNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRKU0V4cG9ydEZ1bmN0aW9uKGNvbmZpZz86IHsgdm06IHN0cmluZzsgdmVuZGVyPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgeyB2bSwgdmVuZGVyIH0gPSBjb25maWcgfHwge31cbiAgY29uc3QgVkVOREVSX0tFWSA9ICdjbG91ZGJhc2VfcHJpdmF0ZV9saW5rX3ZlbmRlcidcblxuICBpZiAodmVuZGVyIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZG9jdW1lbnQuZGVmYXVsdFZpZXcsIFZFTkRFUl9LRVkpKSB7XG4gICAgYXdhaXQgbG9hZFVtZE1vZHVsZShcbiAgICAgIHZlbmRlclxuICAgICAgICB8fCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AY2xvdWRiYXNlL3ByaXZhdGVsaW5rLXZlbmRlckAwLjAuMS1hbHBoYS4zL2Rpc3QvY2RuL2Nsb3VkYmFzZS5wcml2YXRlbGluay52ZW5kZXIuanMnLFxuICAgICAgVkVOREVSX0tFWSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gbG9hZFVtZE1vZHVsZShcbiAgICB2bSB8fCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AY2xvdWRiYXNlL3ByaXZhdGVsaW5rQDAuMC4xLWFscGhhLjAvZGlzdC9jZG4vY2xvdWRiYXNlLnByaXZhdGVsaW5rLnZtLmpzJyxcbiAgICAnY2xvdWRiYXNlX3ByaXZhdGVfbGluaycsXG4gIClcbn1cblxuZnVuY3Rpb24gbG9hZFVtZE1vZHVsZShqc1VybDogc3RyaW5nLCB1bWRNb2R1bGVOYW1lOiBzdHJpbmcsIHRhcmdldERvYzogRG9jdW1lbnQgPSBkb2N1bWVudCkge1xuICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd2luID0gdGFyZ2V0RG9jLmRlZmF1bHRWaWV3XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0YXJnZXREb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLCBqc1VybClcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHVtZE1vZHVsZU5hbWUpXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdpbiwgdW1kTW9kdWxlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUod2luW3VtZE1vZHVsZU5hbWUgYXMgYW55XSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsIHRvIGxvYWQgVU1EIG1vZHVsZSAke3VtZE1vZHVsZU5hbWV9IGZyb20gWyR7anNVcmx9XS5gKVxuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcilcbiAgICB9KVxuXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBtYWluIGJ1bmRsZSBbJHt1bWRNb2R1bGVOYW1lfV0gbG9hZCBmYWlsZWQgZnJvbSBbJHtqc1VybH1dOiAke2U/Lm1lc3NhZ2UgfHwgJyd9YClcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9KVxuICAgIGlmICh0YXJnZXREb2MuYm9keSkge1xuICAgICAgdGFyZ2V0RG9jLmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXREb2MuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpXG4gICAgfVxuICB9KVxufVxuIl19
@@ -1,8 +0,0 @@
1
- export declare function getExportFunction(url: any, module: any, mode?: string): Promise<WebAssembly.Exports | {
2
- callContainer: any;
3
- initContainer: any;
4
- }>;
5
- export declare function loadJSExportFunction(config?: {
6
- vm: string;
7
- vender?: string;
8
- }): Promise<any>;