@cloudbase/container 2.5.37-alpha.1 → 2.5.37-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,36 +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 () {
26
- new Error('小程序不支持动态 js 加载')
27
- }
28
- } else {
29
- const loader = require('./utils/loader')
30
- getExportFunction = loader.getExportFunction
31
- loadJSExportFunction = loader.loadJSExportFunction
32
- }
33
- /* eslint-enable */
34
-
35
19
  class InvalieParamsError extends Error {
36
20
  code: any
37
21
  constructor(scope, message) {
@@ -67,48 +51,43 @@ function genContainerError(data, scope = COMPONENT_NAME, defaultMessage = 'call
67
51
  return error
68
52
  }
69
53
 
70
- export class CloudbaseContainers {
71
- private readonly config: IContianerConfig & { jsUrl?: { vender?: string; vm: string } }
54
+ class CloudbaseContainers {
55
+ private readonly config: IContianerConfig
72
56
  private wasm: Promise<WebAssembly.Exports>
73
57
  private containerInitPromise: /* Promise<any>*/ any | null
74
58
 
75
59
  constructor(config: IContianerConfig) {
76
60
  this.config = {
77
61
  ...config,
78
- jsUrl:
79
- typeof config.jsUrl === 'string'
80
- ? {
81
- vm: config.jsUrl,
82
- }
83
- : (config.jsUrl as any),
84
62
  }
85
63
 
86
- if (!this.config.wasmUrl && this.config.publicKey) {
87
- // 非 wams 且有 public key 则可使用默认的 js-sdk,无需校验
88
- } 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) {
89
65
  throw new InvalieParamsError(`${COMPONENT_NAME}`, '缺少 privatelink sdk 地址')
90
66
  }
91
67
 
92
- console.log('>>******', this.config)
93
- debugger
94
-
95
68
  if (this.config.wasmUrl) {
96
- 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) => {
97
77
  if (this.config.jsUrl) {
98
78
  console.warn('load wams error, fall back to use js', e)
99
79
  return loadJSExportFunction(this.config.jsUrl)
100
- }
101
- if ((globalThis as any).cloudbase_private_link) {
102
- return (globalThis as any).cloudbase_private_link
80
+ } if ((window as any).cloudbase_private_link) {
81
+ return (window as any).cloudbase_private_link
103
82
  }
104
83
  throw e
105
84
  })
106
- } else if (this.config.jsUrl || this.config.publicKey) {
85
+ } else if (this.config.jsUrl) {
107
86
  this.wasm = loadJSExportFunction(this.config.jsUrl)
108
87
  } else {
109
88
  this.wasm = Promise.resolve({
110
- initContainer: (globalThis as any).cloudbase_private_link.initContainer,
111
- 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,
112
91
  })
113
92
  }
114
93
  }
@@ -159,44 +138,36 @@ export class CloudbaseContainers {
159
138
  url,
160
139
  method,
161
140
  header,
162
- data: serializeRequestBody(header, data, method),
141
+ data: serializeRequestBody(header, data),
163
142
  timeout,
164
143
  dataType,
165
144
  responseType,
166
145
  ...restOptions,
167
146
  }
168
147
 
169
- if (
170
- data
171
- && (isBuffer(params.data) || typeof params.data === 'string')
172
- && (data as any)?.length > 1000 * 1024 * 10
173
- ) {
174
- reject(new InvalieParamsError(SCOPE, 'body too large'))
175
- return
176
- }
177
-
178
- if (method === 'GET') {
179
- let { data: getBody } = params
180
- if (getBody) {
181
- params.data = undefined
182
- }
183
- if (!isBuffer(getBody) && typeof getBody !== 'string') {
184
- const list = Object.entries(getBody || {}).reduce(
185
- (list, [key, value]: [string, string | number | boolean]) => {
186
- list.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
187
- return list
188
- },
189
- [],
190
- )
191
- if (list.length) {
192
- getBody = list.join('&')
193
- }
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) {}
194
165
  }
195
166
 
196
- if (typeof params.data === 'string') {
167
+ if (method === 'GET' && typeof params.data === 'string') {
197
168
  const parsedUrl = parseURL(url)
198
169
  if (parsedUrl.search) {
199
- parsedUrl.search += `&${params.data}`
170
+ parsedUrl.search += params.data
200
171
  } else {
201
172
  parsedUrl.search = `?${params.data}`
202
173
  }
@@ -205,6 +176,15 @@ export class CloudbaseContainers {
205
176
  }
206
177
  }
207
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
+
208
188
  callContainer({
209
189
  ...params,
210
190
  success: resolve,
@@ -226,15 +206,15 @@ export class CloudbaseContainers {
226
206
  this.containerInitPromise = new Promise((resolve, reject) => {
227
207
  initContainer({
228
208
  config,
229
- success: (res) => {
209
+ success(res) {
230
210
  if (String(res.statusCode) !== '200') {
231
211
  reject(genContainerError(res.data, `${COMPONENT_NAME}.initContainer`, 'init container fail'))
232
212
  }
233
213
  resolve(res)
234
214
  },
235
- fail: (res) => {
215
+ fail(res) {
236
216
  reject(genContainerError(res.data, `${COMPONENT_NAME}.initContainer`, 'init container fail'))
237
- this.containerInitPromise = null
217
+ this._containerInitPromis = null
238
218
  },
239
219
  })
240
220
  })
@@ -271,3 +251,116 @@ export function registerContainers(app: Pick<ICloudbase, 'registerComponent'>) {
271
251
  console.warn(e)
272
252
  }
273
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,183 +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 decompress_1 = __importDefault(require("brotli/decompress"));
55
- var go_wams_exec_1 = __importDefault(require("../go_wams_exec"));
56
- var _1 = require(".");
57
- function instantiateStreaming(resp, importObject, brotliCompressed) {
58
- if (brotliCompressed === void 0) { brotliCompressed = false; }
59
- return __awaiter(this, void 0, void 0, function () {
60
- var source, buffer;
61
- return __generator(this, function (_a) {
62
- switch (_a.label) {
63
- case 0:
64
- if (!(brotliCompressed || !WebAssembly.instantiateStreaming)) return [3, 3];
65
- return [4, resp];
66
- case 1: return [4, (_a.sent()).arrayBuffer()];
67
- case 2:
68
- source = _a.sent();
69
- buffer = brotliCompressed ? (0, decompress_1.default)(new Int8Array(source)) : source;
70
- return [2, WebAssembly.instantiate(buffer, importObject)];
71
- case 3: return [2, WebAssembly.instantiateStreaming(resp, importObject)];
72
- }
73
- });
74
- });
75
- }
76
- function isBrotliCompressed(url) {
77
- var brotliCompressed = false;
78
- var pathname = '';
79
- try {
80
- var location_1 = (0, _1.parseURL)(url);
81
- pathname = location_1.pathname;
82
- }
83
- catch (e) {
84
- pathname = url;
85
- }
86
- if (/\.br$/.test(pathname)) {
87
- brotliCompressed = true;
88
- }
89
- return brotliCompressed;
90
- }
91
- function getExportFunction(url, module, mode) {
92
- if (mode === void 0) { mode = 'go'; }
93
- return __awaiter(this, void 0, void 0, function () {
94
- var importObject, go, brotliCompressed, reuslt;
95
- return __generator(this, function (_a) {
96
- switch (_a.label) {
97
- case 0:
98
- importObject = __assign({ env: {
99
- memoryBase: 0,
100
- tableBase: 0,
101
- memory: new WebAssembly.Memory({
102
- initial: 256,
103
- }),
104
- } }, module);
105
- brotliCompressed = isBrotliCompressed(url);
106
- if (mode === 'go') {
107
- go = new go_wams_exec_1.default();
108
- go._initedModulePromise = new Promise(function (resolve) {
109
- go._initedModuleResolve = resolve;
110
- });
111
- importObject = __assign(__assign({}, go.importObject), { env: __assign(__assign({}, go.importObject.env), { exportModule: function (module) {
112
- return go._initedModuleResolve(module);
113
- } }) });
114
- }
115
- return [4, instantiateStreaming(fetch(url), importObject, brotliCompressed)];
116
- case 1:
117
- reuslt = _a.sent();
118
- if (!(mode === 'go')) return [3, 3];
119
- return [4, Promise.race([
120
- go.run(reuslt.instance),
121
- new Promise(function (resolve) { return setTimeout(function () {
122
- resolve(null);
123
- }, 500); }),
124
- ])];
125
- case 2:
126
- _a.sent();
127
- return [2, {
128
- callContainer: window.callContainer,
129
- initContainer: window.initContainer,
130
- }];
131
- case 3: return [2, reuslt.instance.exports];
132
- }
133
- });
134
- });
135
- }
136
- exports.getExportFunction = getExportFunction;
137
- function loadJSExportFunction(config) {
138
- return __awaiter(this, void 0, void 0, function () {
139
- var _a, vm, vender, VENDER_KEY;
140
- return __generator(this, function (_b) {
141
- switch (_b.label) {
142
- case 0:
143
- _a = config || {}, vm = _a.vm, vender = _a.vender;
144
- VENDER_KEY = 'cloudbase_private_link_vender';
145
- if (!(vender || !Object.prototype.hasOwnProperty.call(document.defaultView, VENDER_KEY))) return [3, 2];
146
- return [4, loadUmdModule(vender
147
- || 'https://cdn.jsdelivr.net/npm/@cloudbase/privatelink-vender@0.0.1-alpha.3/dist/cdn/cloudbase.privatelink.vender.js', VENDER_KEY)];
148
- case 1:
149
- _b.sent();
150
- _b.label = 2;
151
- 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')];
152
- }
153
- });
154
- });
155
- }
156
- exports.loadJSExportFunction = loadJSExportFunction;
157
- function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
158
- if (targetDoc === void 0) { targetDoc = document; }
159
- return new Promise(function (resolve, reject) {
160
- var win = targetDoc.defaultView;
161
- var script = targetDoc.createElement('script');
162
- script.setAttribute('src', jsUrl);
163
- script.setAttribute('class', umdModuleName);
164
- script.addEventListener('load', function () {
165
- if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
166
- return resolve(win[umdModuleName]);
167
- }
168
- var error = new Error("Fail to load UMD module ".concat(umdModuleName, " from [").concat(jsUrl, "]."));
169
- return reject(error);
170
- });
171
- script.addEventListener('error', function (e) {
172
- var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
173
- reject(error);
174
- });
175
- if (targetDoc.body) {
176
- targetDoc.body.appendChild(script);
177
- }
178
- else {
179
- targetDoc.head.appendChild(script);
180
- }
181
- });
182
- }
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUEwQztBQUMxQyxpRUFBZ0M7QUFDaEMsc0JBQTRCO0FBRTVCLFNBQWUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxnQkFBd0I7SUFBeEIsaUNBQUEsRUFBQSx3QkFBd0I7Ozs7Ozt5QkFDMUUsQ0FBQSxnQkFBZ0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQSxFQUFyRCxjQUFxRDtvQkFDakMsV0FBTSxJQUFJLEVBQUE7d0JBQWpCLFdBQU0sQ0FBQyxTQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBQTs7b0JBQXpDLE1BQU0sR0FBRyxTQUFnQztvQkFDekMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFVLEVBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO29CQUM1RSxXQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFBO3dCQUd0RCxXQUFPLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUE7Ozs7Q0FDNUQ7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQUc7SUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7SUFFNUIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLElBQUk7UUFDRixJQUFNLFVBQVEsR0FBRyxJQUFBLFdBQVEsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixRQUFRLEdBQUcsVUFBUSxDQUFDLFFBQVEsQ0FBQTtLQUM3QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsUUFBUSxH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U0FDbkM7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVjb21wcmVzcyBmcm9tICdicm90bGkvZGVjb21wcmVzcydcbmltcG9ydCBHbyBmcm9tICcuLi9nb193YW1zX2V4ZWMnXG5pbXBvcnQgeyBwYXJzZVVSTCB9IGZyb20gJy4nXG5cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZCA9IGZhbHNlKSB7XG4gIGlmIChicm90bGlDb21wcmVzc2VkIHx8ICFXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZykge1xuICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IChhd2FpdCByZXNwKS5hcnJheUJ1ZmZlcigpXG4gICAgY29uc3QgYnVmZmVyID0gYnJvdGxpQ29tcHJlc3NlZCA/IGRlY29tcHJlc3MobmV3IEludDhBcnJheShzb3VyY2UpKSA6IHNvdXJjZVxuICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShidWZmZXIsIGltcG9ydE9iamVjdClcbiAgfVxuXG4gIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QpXG59XG5cbmZ1bmN0aW9uIGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpIHtcbiAgbGV0IGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZVxuXG4gIGxldCBwYXRobmFtZSA9ICcnXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBwYXJzZVVSTCh1cmwpXG4gICAgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcGF0aG5hbWUgPSB1cmxcbiAgfVxuXG4gIGlmICgvXFwuYnIkLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgIGJyb3RsaUNvbXByZXNzZWQgPSB0cnVlXG4gIH1cbiAgcmV0dXJuIGJyb3RsaUNvbXByZXNzZWRcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4cG9ydEZ1bmN0aW9uKHVybCwgbW9kdWxlLCBtb2RlID0gJ2dvJykge1xuICBsZXQgaW1wb3J0T2JqZWN0ID0ge1xuICAgIGVudjoge1xuICAgICAgbWVtb3J5QmFzZTogMCxcbiAgICAgIHRhYmxlQmFzZTogMCxcbiAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7XG4gICAgICAgIGluaXRpYWw6IDI1NixcbiAgICAgIH0pLFxuICAgICAgLy8gdGFibGU6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7XG4gICAgICAvLyAgIGluaXRpYWw6IDIsXG4gICAgICAvLyAgIGVsZW1lbnQ6ICdhbnlmdW5jJyxcbiAgICAgIC8vIH0pLFxuICAgIH0sXG4gICAgLi4ubW9kdWxlLFxuICB9XG4gIGxldCBnb1xuICBjb25zdCBicm90bGlDb21wcmVzc2VkID0gaXNCcm90bGlDb21wcmVzc2VkKHVybClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGdvID0gbmV3IEdvKClcbiAgICBnby5faW5pdGVkTW9kdWxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZSA9IHJlc29sdmVcbiAgICB9KVxuICAgIGltcG9ydE9iamVjdCA9IHtcbiAgICAgIC4uLmdvLmltcG9ydE9iamVjdCxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5nby5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgICBleHBvcnRNb2R1bGUobW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1c2x0ID0gYXdhaXQgaW5zdGFudGlhdGVTdHJlYW1pbmcoZmV0Y2godXJsKSwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpLFxuICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KCgpID0+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>;