@cloudbase/container 2.5.35-beta.0 → 2.5.37-alpha.1

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.
@@ -1,2 +1,11 @@
1
1
  import { ICloudbase } from '@cloudbase/types';
2
+ import { ICallContainerOptions, IContianerConfig } from '@cloudbase/types/container';
3
+ export declare class CloudbaseContainers {
4
+ private readonly config;
5
+ private wasm;
6
+ private containerInitPromise;
7
+ constructor(config: IContianerConfig);
8
+ callContainer(options: ICallContainerOptions, callback?: Function): Promise<any>;
9
+ initContainer(config: Omit<IContianerConfig, 'wasmUrl' | 'jsUrl'>): Promise<any>;
10
+ }
2
11
  export declare function registerContainers(app: Pick<ICloudbase, 'registerComponent'>): void;
package/dist/cjs/index.js CHANGED
@@ -81,20 +81,33 @@ var __rest = (this && this.__rest) || function (s, e) {
81
81
  }
82
82
  return t;
83
83
  };
84
- var __importDefault = (this && this.__importDefault) || function (mod) {
85
- return (mod && mod.__esModule) ? mod : { "default": mod };
86
- };
87
84
  Object.defineProperty(exports, "__esModule", { value: true });
88
- exports.registerContainers = void 0;
85
+ exports.registerContainers = exports.CloudbaseContainers = void 0;
89
86
  var utilities_1 = require("@cloudbase/utilities");
90
- var decompress_1 = __importDefault(require("brotli/decompress"));
91
- var go_wams_exec_1 = __importDefault(require("./go_wams_exec"));
92
87
  var utils_1 = require("./utils");
93
- var request_1 = require("./utils/request");
94
88
  var constants_1 = require("./constants");
95
89
  var ERRORS = utilities_1.constants.ERRORS, COMMUNITY_SITE_URL = utilities_1.constants.COMMUNITY_SITE_URL;
96
90
  var execCallback = utilities_1.utils.execCallback, printWarn = utilities_1.utils.printWarn;
97
91
  var catchErrorsDecorator = utilities_1.helpers.catchErrorsDecorator;
92
+ var getExportFunction = function () {
93
+ throw new Error('getExportFunction 未实现');
94
+ };
95
+ var loadJSExportFunction = function () {
96
+ throw new Error('loadJSExportFunction 未实现');
97
+ };
98
+ if (globalThis.IS_MP_BUILD) {
99
+ getExportFunction = function () {
100
+ new Error('小程序不支持 wasm 加载');
101
+ };
102
+ loadJSExportFunction = function () {
103
+ new Error('小程序不支持动态 js 加载');
104
+ };
105
+ }
106
+ else {
107
+ var loader = require('./utils/loader');
108
+ getExportFunction = loader.getExportFunction;
109
+ loadJSExportFunction = loader.loadJSExportFunction;
110
+ }
98
111
  var InvalieParamsError = (function (_super) {
99
112
  __extends(InvalieParamsError, _super);
100
113
  function InvalieParamsError(scope, message) {
@@ -122,45 +135,48 @@ function genContainerError(data, scope, defaultMessage) {
122
135
  error.code = (data === null || data === void 0 ? void 0 : data.code) || 'UNKNOWN_ERROR';
123
136
  return error;
124
137
  }
125
- var CloudbaseContainers = (function () {
138
+ var CloudbaseContainers = exports.CloudbaseContainers = (function () {
126
139
  function CloudbaseContainers(config) {
127
140
  var _this = this;
128
- this.config = __assign({}, config);
129
- if (!this.config.wasmUrl && !this.config.jsUrl && !window.cloudbase_private_link) {
141
+ var _a;
142
+ this.config = __assign(__assign({}, config), { jsUrl: typeof config.jsUrl === 'string'
143
+ ? {
144
+ vm: config.jsUrl,
145
+ }
146
+ : config.jsUrl });
147
+ if (!this.config.wasmUrl && this.config.publicKey) {
148
+ }
149
+ else if (!this.config.wasmUrl && !((_a = this.config.jsUrl) === null || _a === void 0 ? void 0 : _a.vm) && !globalThis.cloudbase_private_link) {
130
150
  throw new InvalieParamsError("".concat(constants_1.COMPONENT_NAME), '缺少 privatelink sdk 地址');
131
151
  }
152
+ console.log('>>******', this.config);
153
+ debugger;
132
154
  if (this.config.wasmUrl) {
133
- this.wasm = getExportFunction(this.config.wasmUrl, {
134
- utils: {
135
- info: function (e) {
136
- console.log(e);
137
- },
138
- request: request_1.request,
139
- },
140
- }).catch(function (e) {
155
+ this.wasm = getExportFunction(this.config.wasmUrl).catch(function (e) {
141
156
  if (_this.config.jsUrl) {
142
157
  console.warn('load wams error, fall back to use js', e);
143
158
  return loadJSExportFunction(_this.config.jsUrl);
144
159
  }
145
- if (window.cloudbase_private_link) {
146
- return window.cloudbase_private_link;
160
+ if (globalThis.cloudbase_private_link) {
161
+ return globalThis.cloudbase_private_link;
147
162
  }
148
163
  throw e;
149
164
  });
150
165
  }
151
- else if (this.config.jsUrl) {
166
+ else if (this.config.jsUrl || this.config.publicKey) {
152
167
  this.wasm = loadJSExportFunction(this.config.jsUrl);
153
168
  }
154
169
  else {
155
170
  this.wasm = Promise.resolve({
156
- initContainer: window.cloudbase_private_link.initContainer,
157
- callContainer: window.cloudbase_private_link.callContainer,
171
+ initContainer: globalThis.cloudbase_private_link.initContainer,
172
+ callContainer: globalThis.cloudbase_private_link.callContainer,
158
173
  });
159
174
  }
160
175
  }
161
176
  CloudbaseContainers.prototype.callContainer = function (options, callback) {
162
177
  return __awaiter(this, void 0, void 0, function () {
163
- var SCOPE, callContainer, _a, url, _b, method, _c, header, data, _d, timeout, _e, dataType, _f, responseType, restOptions, res, e_1;
178
+ var SCOPE, callContainer, _a, url, method, header, data, timeout, dataType, responseType, restOptions, res, e_1;
179
+ var _b, _c, _d, _e, _f;
164
180
  return __generator(this, function (_g) {
165
181
  switch (_g.label) {
166
182
  case 0: return [4, this.initContainer(this.config)];
@@ -170,7 +186,7 @@ var CloudbaseContainers = (function () {
170
186
  return [4, this.wasm];
171
187
  case 2:
172
188
  callContainer = (_g.sent()).callContainer;
173
- _a = __assign({}, options), url = _a.url, _b = _a.method, method = _b === void 0 ? 'GET' : _b, _c = _a.header, header = _c === void 0 ? {} : _c, data = _a.data, _d = _a.timeout, timeout = _d === void 0 ? 60000 : _d, _e = _a.dataType, dataType = _e === void 0 ? 'json' : _e, _f = _a.responseType, responseType = _f === void 0 ? 'text' : _f, restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
189
+ _a = __assign({}, options), url = _a.url, method = (_b = _a.method, _b === void 0 ? 'GET' : _b), header = (_c = _a.header, _c === void 0 ? {} : _c), data = _a.data, timeout = (_d = _a.timeout, _d === void 0 ? 60000 : _d), dataType = (_e = _a.dataType, _e === void 0 ? 'json' : _e), responseType = (_f = _a.responseType, _f === void 0 ? 'text' : _f), restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
174
190
  if (!url) {
175
191
  throw new InvalieParamsError(SCOPE, 'invalid request url');
176
192
  }
@@ -181,25 +197,32 @@ var CloudbaseContainers = (function () {
181
197
  case 3:
182
198
  _g.trys.push([3, 5, , 6]);
183
199
  return [4, new Promise(function (resolve, reject) {
184
- var params = __assign({ url: url, method: method, header: header, data: (0, utils_1.serializeRequestBody)(header, data), timeout: timeout, dataType: dataType, responseType: responseType }, restOptions);
185
- if (params.data !== undefined && !(0, utils_1.isBuffer)(params.data)) {
186
- if (typeof params.data !== 'string' && method === 'GET') {
187
- try {
188
- var list = Object.entries(params.data || {}).reduce(function (list, _a) {
189
- var key = _a[0], value = _a[1];
190
- list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(String(value))));
191
- return list;
192
- }, []);
193
- if (list.length) {
194
- params.data = list.join('&');
195
- }
200
+ var params = __assign({ url: url, method: method, header: header, data: (0, utils_1.serializeRequestBody)(header, data, method), timeout: timeout, dataType: dataType, responseType: responseType }, restOptions);
201
+ if (data
202
+ && ((0, utils_1.isBuffer)(params.data) || typeof params.data === 'string')
203
+ && (data === null || data === void 0 ? void 0 : data.length) > 1000 * 1024 * 10) {
204
+ reject(new InvalieParamsError(SCOPE, 'body too large'));
205
+ return;
206
+ }
207
+ if (method === 'GET') {
208
+ var getBody = params.data;
209
+ if (getBody) {
210
+ params.data = undefined;
211
+ }
212
+ if (!(0, utils_1.isBuffer)(getBody) && typeof getBody !== 'string') {
213
+ var list = Object.entries(getBody || {}).reduce(function (list, _a) {
214
+ var key = _a[0], value = _a[1];
215
+ list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(String(value))));
216
+ return list;
217
+ }, []);
218
+ if (list.length) {
219
+ getBody = list.join('&');
196
220
  }
197
- catch (e) { }
198
221
  }
199
- if (method === 'GET' && typeof params.data === 'string') {
222
+ if (typeof params.data === 'string') {
200
223
  var parsedUrl = (0, utils_1.parseURL)(url);
201
224
  if (parsedUrl.search) {
202
- parsedUrl.search += params.data;
225
+ parsedUrl.search += "&".concat(params.data);
203
226
  }
204
227
  else {
205
228
  parsedUrl.search = "?".concat(params.data);
@@ -208,12 +231,6 @@ var CloudbaseContainers = (function () {
208
231
  params.data = undefined;
209
232
  }
210
233
  }
211
- if (data
212
- && ((0, utils_1.isBuffer)(params.data) || typeof params.data === 'string')
213
- && (data === null || data === void 0 ? void 0 : data.length) > 1000 * 1024 * 10) {
214
- reject(new InvalieParamsError(SCOPE, 'body too large'));
215
- return;
216
- }
217
234
  callContainer(__assign(__assign({}, params), { success: resolve, fail: function (res) {
218
235
  var data = (res || {}).data;
219
236
  reject(genContainerError(data, SCOPE, 'call container error'));
@@ -234,6 +251,7 @@ var CloudbaseContainers = (function () {
234
251
  CloudbaseContainers.prototype.initContainer = function (config) {
235
252
  return __awaiter(this, void 0, void 0, function () {
236
253
  var initContainer;
254
+ var _this = this;
237
255
  return __generator(this, function (_a) {
238
256
  switch (_a.label) {
239
257
  case 0: return [4, this.wasm];
@@ -251,7 +269,7 @@ var CloudbaseContainers = (function () {
251
269
  },
252
270
  fail: function (res) {
253
271
  reject(genContainerError(res.data, "".concat(constants_1.COMPONENT_NAME, ".initContainer"), 'init container fail'));
254
- this._containerInitPromis = null;
272
+ _this.containerInitPromise = null;
255
273
  },
256
274
  });
257
275
  });
@@ -308,111 +326,4 @@ function registerContainers(app) {
308
326
  }
309
327
  }
310
328
  exports.registerContainers = registerContainers;
311
- function getExportFunction(url, module, mode) {
312
- if (mode === void 0) { mode = 'go'; }
313
- return __awaiter(this, void 0, void 0, function () {
314
- function instantiateStreaming(resp, importObject, brotliCompressed) {
315
- if (brotliCompressed === void 0) { brotliCompressed = false; }
316
- return __awaiter(this, void 0, void 0, function () {
317
- var source, buffer;
318
- return __generator(this, function (_a) {
319
- switch (_a.label) {
320
- case 0:
321
- if (!(brotliCompressed || !WebAssembly.instantiateStreaming)) return [3, 3];
322
- return [4, resp];
323
- case 1: return [4, (_a.sent()).arrayBuffer()];
324
- case 2:
325
- source = _a.sent();
326
- buffer = brotliCompressed ? (0, decompress_1.default)(new Int8Array(source)) : source;
327
- return [2, WebAssembly.instantiate(buffer, importObject)];
328
- case 3: return [2, WebAssembly.instantiateStreaming(resp, importObject)];
329
- }
330
- });
331
- });
332
- }
333
- var importObject, go, brotliCompressed, reuslt;
334
- return __generator(this, function (_a) {
335
- switch (_a.label) {
336
- case 0:
337
- importObject = __assign({ env: {
338
- memoryBase: 0,
339
- tableBase: 0,
340
- memory: new WebAssembly.Memory({
341
- initial: 256,
342
- }),
343
- } }, module);
344
- brotliCompressed = isBrotliCompressed(url);
345
- if (mode === 'go') {
346
- go = new go_wams_exec_1.default();
347
- go._initedModulePromise = new Promise(function (resolve) {
348
- go._initedModuleResolve = resolve;
349
- });
350
- importObject = __assign(__assign({}, go.importObject), { env: __assign(__assign({}, go.importObject.env), { exportModule: function (module) {
351
- return go._initedModuleResolve(module);
352
- } }) });
353
- }
354
- return [4, instantiateStreaming(fetch(url), importObject, brotliCompressed)];
355
- case 1:
356
- reuslt = _a.sent();
357
- if (!(mode === 'go')) return [3, 3];
358
- return [4, Promise.race([
359
- go.run(reuslt.instance),
360
- new Promise(function (resolve) { return setTimeout(function () {
361
- resolve(null);
362
- }, 500); }),
363
- ])];
364
- case 2:
365
- _a.sent();
366
- return [2, {
367
- callContainer: window.callContainer,
368
- initContainer: window.initContainer,
369
- }];
370
- case 3: return [2, reuslt.instance.exports];
371
- }
372
- });
373
- });
374
- }
375
- function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
376
- if (targetDoc === void 0) { targetDoc = document; }
377
- return new Promise(function (resolve, reject) {
378
- var win = targetDoc.defaultView;
379
- var script = targetDoc.createElement('script');
380
- script.setAttribute('src', jsUrl);
381
- script.setAttribute('class', umdModuleName);
382
- script.addEventListener('load', function () {
383
- if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
384
- return resolve(win[umdModuleName]);
385
- }
386
- var error = new Error("Fail to load UMD module ".concat(umdModuleName, " from [").concat(jsUrl, "]."));
387
- return reject(error);
388
- });
389
- script.addEventListener('error', function (e) {
390
- var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
391
- reject(error);
392
- });
393
- targetDoc.body.appendChild(script);
394
- });
395
- }
396
- function loadJSExportFunction(url) {
397
- return __awaiter(this, void 0, void 0, function () {
398
- return __generator(this, function (_a) {
399
- return [2, loadUmdModule(url, 'cloudbase_private_link')];
400
- });
401
- });
402
- }
403
- function isBrotliCompressed(url) {
404
- var brotliCompressed = false;
405
- var pathname = '';
406
- try {
407
- var location_1 = (0, utils_1.parseURL)(url);
408
- pathname = location_1.pathname;
409
- }
410
- catch (e) {
411
- pathname = url;
412
- }
413
- if (/\.br$/.test(pathname)) {
414
- brotliCompressed = true;
415
- }
416
- return brotliCompressed;
417
- }
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGtEQUFnRTtBQUVoRSxpRUFBMEM7QUFFMUMsZ0VBQStCO0FBQy9CLGlDQUFrRTtBQUNsRSwyQ0FBeUM7QUFDekMseUNBQTRDO0FBSXBDLElBQUEsTUFBTSxHQUF5QixxQkFBUyxPQUFsQyxFQUFFLGtCQUFrQixHQUFLLHFCQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxZQUFZLEdBQWdCLGlCQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNqQyxJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFFeEM7SUFBaUMsc0NBQUs7SUFFcEMsNEJBQVksS0FBSyxFQUFFLE9BQU87UUFBMUIsaUJBT0M7UUFOQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztZQUMzQixHQUFHLEVBQUUsV0FBSSxLQUFLLGVBQUssT0FBTyxDQUFFO1NBQzdCLENBQUMsQ0FBQTtnQkFDRixrQkFBTSxHQUFHLENBQUM7UUFDVixLQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUE7O0lBQ25DLENBQUM7SUFDRCxtQ0FBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUNILHlCQUFDO0FBQUQsQ0FBQyxBQWhCRCxDQUFpQyxLQUFLLEdBZ0JyQztBQWFELFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQXNCLEVBQUUs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VyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQWUsb0JBQW9CLENBQUMsR0FBRzs7O1lBQ3JDLFdBQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxFQUFBOzs7Q0FDcEQ7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQUc7SUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7SUFFNUIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLElBQUk7UUFDRixJQUFNLFVBQVEsR0FBRyxJQUFBLGdCQUFRLEVBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsUUFBUSxHQUFHLFVBQVEsQ0FBQyxRQUFRLENBQUE7S0FDN0I7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLFFBQVEsR0FBRyxHQUFHLENBQUE7S0FDZjtJQUVELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMxQixnQkFBZ0IsR0FBRyxJQUFJLENBQUE7S0FDeEI7SUFDRCxPQUFPLGdCQUFnQixDQUFBO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDYWxsQ29udGFpbmVyT3B0aW9ucywgSUNvbnRpYW5lckNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29udGFpbmVyJ1xuaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuLy8gaW1wb3J0IGJyb3RsaVByb21pc2UgZnJvbSAnYnJvdGxpLWRlYy13YXNtJyAvLyBJbXBvcnQgdGhlIGRlZmF1bHQgZXhwb3J0XG5pbXBvcnQgZGVjb21wcmVzcyBmcm9tICdicm90bGkvZGVjb21wcmVzcydcblxuaW1wb3J0IEdvIGZyb20gJy4vZ29fd2Ftc19leGVjJ1xuaW1wb3J0IHsgaXNCdWZmZXIsIHBhcnNlVVJMLCBzZXJpYWxpemVSZXF1ZXN0Qm9keSB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnLi91dGlscy9yZXF1ZXN0J1xuaW1wb3J0IHsgQ09NUE9ORU5UX05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcblxuZGVjbGFyZSBjb25zdCBjbG91ZGJhc2U6IElDbG91ZGJhc2VcblxuY29uc3QgeyBFUlJPUlMsIENPTU1VTklUWV9TSVRFX1VSTCB9ID0gY29uc3RhbnRzXG5jb25zdCB7IGV4ZWNDYWxsYmFjaywgcHJpbnRXYXJuIH0gPSB1dGlsc1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVyc1xuXG5jbGFzcyBJbnZhbGllUGFyYW1zRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IGFueVxuICBjb25zdHJ1Y3RvcihzY29wZSwgbWVzc2FnZSkge1xuICAgIGNvbnN0IG1zZyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgIG1zZzogYFske3Njb3BlfV0gJHttZXNzYWdlfWAsXG4gICAgfSlcbiAgICBzdXBlcihtc2cpXG4gICAgdGhpcy5jb2RlID0gRVJST1JTLklOVkFMSURfUEFSQU1TXG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBJQ2FsbENvbnRhaW5lck9wdGlvbnMge1xuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmludGVyZmFjZSBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMge1xuICBjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnIHwgJ2pzVXJsJz5cbiAgc3VjY2VzczogKHJlczogeyBzdGF0dXNDb2RlOiBzdHJpbmcgfCBudW1iZXI7IGhlYWRlcjogSUNhbGxDb250YWluZXJPcHRpb25zWydoZWFkZXInXTsgZGF0YTogYW55IH0pID0+IHZvaWRcbiAgZmFpbDogKHJlczogeyBkYXRhOiB7IGNvZGU6IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nIH0gfSkgPT4gdm9pZFxufVxuXG5mdW5jdGlvbiBnZW5Db250YWluZXJFcnJvcihkYXRhLCBzY29wZSA9IENPTVBPTkVOVF9OQU1FLCBkZWZhdWx0TWVzc2FnZSA9ICdjYWxsIGNvbnRhaW5lciBlcnJvcicpIHtcbiAgY29uc3QgZXJyb3IgPSBkYXRhIGluc3RhbmNlb2YgRXJyb3IgPyBkYXRhIDogbmV3IEVycm9yKGBbJHtzY29wZX1dICR7ZGF0YT8ubWVzc2FnZSB8fCBkZWZhdWx0TWVzc2FnZX1gKVxuICA7KGVycm9yIGFzIGFueSkuY29kZSA9IGRhdGE/LmNvZGUgfHwgJ1VOS05PV05fRVJST1InXG4gIHJldHVybiBlcnJvclxufVxuXG5jbGFzcyBDbG91ZGJhc2VDb250YWluZXJzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IElDb250aWFuZXJDb25maWdcbiAgcHJpdmF0ZSB3YXNtOiBQcm9taXNlPFdlYkFzc2VtYmx5LkV4cG9ydHM+XG4gIHByaXZhdGUgY29udGFpbmVySW5pdFByb21pc2U6IC8qIFByb21pc2U8YW55PiovIGFueSB8IG51bGxcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLndhc21VcmwgJiYgIXRoaXMuY29uZmlnLmpzVXJsICYmICEod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX1gLCAn57y65bCRIHByaXZhdGVsaW5rIHNkayDlnLDlnYAnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy53YXNtVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBnZXRFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy53YXNtVXJsLCB7XG4gICAgICAgIHV0aWxzOiB7XG4gICAgICAgICAgaW5mbyhlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSxcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5qc1VybCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignbG9hZCB3YW1zIGVycm9yLCBmYWxsIGJhY2sgdG8gdXNlIGpzJywgZSlcbiAgICAgICAgICByZXR1cm4gbG9hZEpTRXhwb3J0RnVuY3Rpb24odGhpcy5jb25maWcuanNVcmwpXG4gICAgICAgIH0gaWYgKCh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rKSB7XG4gICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53YXNtID0gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgaW5pdENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuaW5pdENvbnRhaW5lcixcbiAgICAgICAgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuY2FsbENvbnRhaW5lcixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2NhbGxDb250YWluZXInLFxuICAgIH0sXG4gICAgdGl0bGU6ICfosIPnlKjlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggY2FsbENvbnRhaW5lcigpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5Z+f5ZCNICYg6Lev5b6E5piv5ZCm5a2Y5ZyoJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBjYWxsQ29udGFpbmVyKG9wdGlvbnM6IElDYWxsQ29udGFpbmVyT3B0aW9ucywgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGF3YWl0IHRoaXMuaW5pdENvbnRhaW5lcih0aGlzLmNvbmZpZylcbiAgICBjb25zdCBTQ09QRSA9IGAke0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyYFxuICAgIGNvbnN0IHsgY2FsbENvbnRhaW5lciB9OiB7IGNhbGxDb250YWluZXI6IChvcHRpb25zOiBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMpID0+IHZvaWQgfSA9IChhd2FpdCB0aGlzLndhc20pIGFzIGFueVxuICAgIGNvbnN0IHtcbiAgICAgIHVybCxcbiAgICAgIG1ldGhvZCA9ICdHRVQnLFxuICAgICAgaGVhZGVyID0ge30sXG4gICAgICBkYXRhLFxuICAgICAgdGltZW91dCA9IDYwMDAwLFxuICAgICAgZGF0YVR5cGUgPSAnanNvbicsXG4gICAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH1cblxuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnaW52YWxpZCByZXF1ZXN0IHVybCcpXG4gICAgfVxuXG4gICAgaWYgKCFtZXRob2QpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdpbnZhbGlkIHJlcXVlc3QgbWV0aG9kJylcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgZGF0YTogc2VyaWFsaXplUmVxdWVzdEJvZHkoaGVhZGVyLCBkYXRhKSxcbiAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIGRhdGFUeXBlLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZSxcbiAgICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDpnZ4gYnVmZmVyXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGFyYW1zLmRhdGEgIT09IHVuZGVmaW5lZCAmJiAhaXNCdWZmZXIocGFyYW1zLmRhdGEpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuZGF0YSAhPT0gJ3N0cmluZycgJiYgbWV0aG9kID09PSAnR0VUJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcy5kYXRhIHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGxpc3QsIFtrZXksIHZhbHVlXTogW3N0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKSl9YClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGF0YSA9IGxpc3Quam9pbignJicpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgJiYgdHlwZW9mIHBhcmFtcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gcGFyc2VVUkwodXJsKVxuICAgICAgICAgICAgaWYgKHBhcnNlZFVybC5zZWFyY2gpIHtcbiAgICAgICAgICAgICAgcGFyc2VkVXJsLnNlYXJjaCArPSBwYXJhbXMuZGF0YVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGFyc2VkVXJsLnNlYXJjaCA9IGA/JHtwYXJhbXMuZGF0YX1gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMudXJsID0gcGFyc2VkVXJsLmhyZWZcbiAgICAgICAgICAgIHBhcmFtcy5kYXRhID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgICAmJiAoaXNCdWZmZXIocGFyYW1zLmRhdGEpIHx8IHR5cGVvZiBwYXJhbXMuZGF0YSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgJiYgKGRhdGEgYXMgYW55KT8ubGVuZ3RoID4gMTAwMCAqIDEwMjQgKiAxMFxuICAgICAgICApIHtcbiAgICAgICAgICByZWplY3QobmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2JvZHkgdG9vIGxhcmdlJykpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjYWxsQ29udGFpbmVyKHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcbiAgICAgICAgICBmYWlsOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlcyB8fCB7fVxuICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIFNDT1BFLCAnY2FsbCBjb250YWluZXIgZXJyb3InKSlcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIGUpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdENvbnRhaW5lcihjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnIHwgJ2pzVXJsJz4pIHtcbiAgICBjb25zdCB7IGluaXRDb250YWluZXIgfTogeyBpbml0Q29udGFpbmVyOiAob3B0aW9uczogSUluaXRUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcbiAgICBpZiAoIXRoaXMuY29udGFpbmVySW5pdFByb21pc2UpIHtcbiAgICAgIHRoaXMuY29udGFpbmVySW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGluaXRDb250YWluZXIoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgaWYgKFN0cmluZyhyZXMuc3RhdHVzQ29kZSkgIT09ICcyMDAnKSB7XG4gICAgICAgICAgICAgIHJlamVjdChnZW5Db250YWluZXJFcnJvcihyZXMuZGF0YSwgYCR7Q09NUE9ORU5UX05BTUV9LmluaXRDb250YWluZXJgLCAnaW5pdCBjb250YWluZXIgZmFpbCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWlsKHJlcykge1xuICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXJJbml0UHJvbWlzID0gbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlXG4gIH1cbn1cblxuY29uc3QgY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50ID0ge1xuICBuYW1lOiBDT01QT05FTlRfTkFNRSxcbiAgbmFtZXNwYWNlOiAnY29udGFpbmVyJyxcbiAgZW50aXR5KGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckluc3RhbmNlKSB7XG4gICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfT1BFUkFUSU9OLCAnZXZlcnkgY2xvdWRiYXNlIGluc3RhbmNlIHNob3VsZCBoYXMgb25seSBvbmUgY29udGFpbmVyIG9iamVjdCcpXG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENsb3VkYmFzZUNvbnRhaW5lcnMoY29uZmlnKVxuICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UgPSBpbnN0YW5jZVxuICAgIHRoaXMuY2FsbENvbnRhaW5lciA9IGluc3RhbmNlLmNhbGxDb250YWluZXIuYmluZChpbnN0YW5jZSlcblxuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlXG4gIH0sXG59XG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxufSBjYXRjaCAoZSkge31cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29udGFpbmVycyhhcHA6IFBpY2s8SUNsb3VkYmFzZSwgJ3JlZ2lzdGVyQ29tcG9uZW50Jz4pIHtcbiAgdHJ5IHtcbiAgICBhcHAucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXhwb3J0RnVuY3Rpb24odXJsLCBtb2R1bGUsIG1vZGUgPSAnZ28nKSB7XG4gIGFzeW5jIGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZCA9IGZhbHNlKSB7XG4gICAgaWYgKGJyb3RsaUNvbXByZXNzZWQgfHwgIVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCAoYXdhaXQgcmVzcCkuYXJyYXlCdWZmZXIoKVxuICAgICAgY29uc3QgYnVmZmVyID0gYnJvdGxpQ29tcHJlc3NlZCA/IGRlY29tcHJlc3MobmV3IEludDhBcnJheShzb3VyY2UpKSA6IHNvdXJjZVxuICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJ1ZmZlciwgaW1wb3J0T2JqZWN0KVxuICAgIH1cblxuICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QpXG4gIH1cblxuICBsZXQgaW1wb3J0T2JqZWN0ID0ge1xuICAgIGVudjoge1xuICAgICAgbWVtb3J5QmFzZTogMCxcbiAgICAgIHRhYmxlQmFzZTogMCxcbiAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7XG4gICAgICAgIGluaXRpYWw6IDI1NixcbiAgICAgIH0pLFxuICAgICAgLy8gdGFibGU6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7XG4gICAgICAvLyAgIGluaXRpYWw6IDIsXG4gICAgICAvLyAgIGVsZW1lbnQ6ICdhbnlmdW5jJyxcbiAgICAgIC8vIH0pLFxuICAgIH0sXG4gICAgLi4ubW9kdWxlLFxuICB9XG4gIGxldCBnb1xuICBjb25zdCBicm90bGlDb21wcmVzc2VkID0gaXNCcm90bGlDb21wcmVzc2VkKHVybClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGdvID0gbmV3IEdvKClcbiAgICBnby5faW5pdGVkTW9kdWxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZSA9IHJlc29sdmVcbiAgICB9KVxuICAgIGltcG9ydE9iamVjdCA9IHtcbiAgICAgIC4uLmdvLmltcG9ydE9iamVjdCxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5nby5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgICBleHBvcnRNb2R1bGUobW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1c2x0ID0gYXdhaXQgaW5zdGFudGlhdGVTdHJlYW1pbmcoZmV0Y2godXJsKSwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpLFxuICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShudWxsKVxuICAgICAgfSwgNTAwKSwpLFxuICAgIF0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNhbGxDb250YWluZXIsXG4gICAgICBpbml0Q29udGFpbmVyOiAod2luZG93IGFzIGFueSkuaW5pdENvbnRhaW5lcixcbiAgICB9XG4gIH1cblxuICAvLyBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAvLyAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpXG4gIC8vICAgY29uc3QgbW9kdWxlID0gYXdhaXQgZ28uX2luaXRlZE1vZHVsZVByb21pc2VcbiAgLy8gICByZXR1cm4gbW9kdWxlXG4gIC8vIH1cblxuICByZXR1cm4gcmV1c2x0Lmluc3RhbmNlLmV4cG9ydHNcbn1cblxuZnVuY3Rpb24gbG9hZFVtZE1vZHVsZShqc1VybDogc3RyaW5nLCB1bWRNb2R1bGVOYW1lOiBzdHJpbmcsIHRhcmdldERvYzogRG9jdW1lbnQgPSBkb2N1bWVudCkge1xuICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd2luID0gdGFyZ2V0RG9jLmRlZmF1bHRWaWV3XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0YXJnZXREb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLCBqc1VybClcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHVtZE1vZHVsZU5hbWUpXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdpbiwgdW1kTW9kdWxlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUod2luW3VtZE1vZHVsZU5hbWUgYXMgYW55XSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsIHRvIGxvYWQgVU1EIG1vZHVsZSAke3VtZE1vZHVsZU5hbWV9IGZyb20gWyR7anNVcmx9XS5gKVxuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcilcbiAgICB9KVxuXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBtYWluIGJ1bmRsZSBbJHt1bWRNb2R1bGVOYW1lfV0gbG9hZCBmYWlsZWQgZnJvbSBbJHtqc1VybH1dOiAke2U/Lm1lc3NhZ2UgfHwgJyd9YClcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9KVxuICAgIHRhcmdldERvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdClcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZEpTRXhwb3J0RnVuY3Rpb24odXJsKSB7XG4gIHJldHVybiBsb2FkVW1kTW9kdWxlKHVybCwgJ2Nsb3VkYmFzZV9wcml2YXRlX2xpbmsnKVxufVxuXG5mdW5jdGlvbiBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKSB7XG4gIGxldCBicm90bGlDb21wcmVzc2VkID0gZmFsc2VcblxuICBsZXQgcGF0aG5hbWUgPSAnJ1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gcGFyc2VVUkwodXJsKVxuICAgIHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHBhdGhuYW1lID0gdXJsXG4gIH1cblxuICBpZiAoL1xcLmJyJC8udGVzdChwYXRobmFtZSkpIHtcbiAgICBicm90bGlDb21wcmVzc2VkID0gdHJ1ZVxuICB9XG4gIHJldHVybiBicm90bGlDb21wcmVzc2VkXG59XG4iXX0=
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGtEQUFnRTtBQUNoRSxpQ0FBa0U7QUFDbEUseUNBQTRDO0FBR3BDLElBQUEsTUFBTSxHQUF5QixxQkFBUyxPQUFsQyxFQUFFLGtCQUFrQixHQUFLLHFCQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxZQUFZLEdBQWdCLGlCQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNqQyxJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFHeEMsSUFBSSxpQkFBaUIsR0FBYTtJQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFDMUMsQ0FBQyxDQUFBO0FBQ0QsSUFBSSxvQkFBb0IsR0FBYTtJQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7QUFDN0MsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO0lBQzFCLGlCQUFpQixHQUFHO1FBQ2xCLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDN0IsQ0FBQyxDQUFBO0lBQ0Qsb0JBQW9CLEdBQUc7UUFDckIsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM3QixDQUFDLENBQUE7Q0FDRjtLQUFNO0lBQ0wsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDeEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFBO0lBQzVDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQTtDQUNuRDtBQUdEO0lBQWlDLHNDQUFLO0lBRXBD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cm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNhbGxDb250YWluZXJPcHRpb25zLCBJQ29udGlhbmVyQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb250YWluZXInXG5pbXBvcnQgeyBjb25zdGFudHMsIHV0aWxzLCBoZWxwZXJzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5pbXBvcnQgeyBpc0J1ZmZlciwgcGFyc2VVUkwsIHNlcmlhbGl6ZVJlcXVlc3RCb2R5IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IENPTVBPTkVOVF9OQU1FIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmRlY2xhcmUgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5sZXQgZ2V0RXhwb3J0RnVuY3Rpb246IEZ1bmN0aW9uID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2dldEV4cG9ydEZ1bmN0aW9uIOacquWunueOsCcpXG59XG5sZXQgbG9hZEpTRXhwb3J0RnVuY3Rpb246IEZ1bmN0aW9uID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2xvYWRKU0V4cG9ydEZ1bmN0aW9uIOacquWunueOsCcpXG59XG5cbmlmIChnbG9iYWxUaGlzLklTX01QX0JVSUxEKSB7XG4gIGdldEV4cG9ydEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIG5ldyBFcnJvcign5bCP56iL5bqP5LiN5pSv5oyBIHdhc20g5Yqg6L29JylcbiAgfVxuICBsb2FkSlNFeHBvcnRGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgRXJyb3IoJ+Wwj+eoi+W6j+S4jeaUr+aMgeWKqOaAgSBqcyDliqDovb0nKVxuICB9XG59IGVsc2Uge1xuICBjb25zdCBsb2FkZXIgPSByZXF1aXJlKCcuL3V0aWxzL2xvYWRlcicpXG4gIGdldEV4cG9ydEZ1bmN0aW9uID0gbG9hZGVyLmdldEV4cG9ydEZ1bmN0aW9uXG4gIGxvYWRKU0V4cG9ydEZ1bmN0aW9uID0gbG9hZGVyLmxvYWRKU0V4cG9ydEZ1bmN0aW9uXG59XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogYW55XG4gIGNvbnN0cnVjdG9yKHNjb3BlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgbXNnOiBgWyR7c2NvcGV9XSAke21lc3NhZ2V9YCxcbiAgICB9KVxuICAgIHN1cGVyKG1zZylcbiAgICB0aGlzLmNvZGUgPSBFUlJPUlMuSU5WQUxJRF9QQVJBTVNcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucyBleHRlbmRzIElDYWxsQ29udGFpbmVyT3B0aW9ucyB7XG4gIHN1Y2Nlc3M6IChyZXM6IHsgc3RhdHVzQ29kZTogc3RyaW5nIHwgbnVtYmVyOyBoZWFkZXI6IElDYWxsQ29udGFpbmVyT3B0aW9uc1snaGVhZGVyJ107IGRhdGE6IGFueSB9KSA9PiB2b2lkXG4gIGZhaWw6IChyZXM6IHsgZGF0YTogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9IH0pID0+IHZvaWRcbn1cblxuaW50ZXJmYWNlIElJbml0VGNiQ29udGFpbmVyT3B0aW9ucyB7XG4gIGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmZ1bmN0aW9uIGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIHNjb3BlID0gQ09NUE9ORU5UX05BTUUsIGRlZmF1bHRNZXNzYWdlID0gJ2NhbGwgY29udGFpbmVyIGVycm9yJykge1xuICBjb25zdCBlcnJvciA9IGRhdGEgaW5zdGFuY2VvZiBFcnJvciA/IGRhdGEgOiBuZXcgRXJyb3IoYFske3Njb3BlfV0gJHtkYXRhPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlfWApXG4gIDsoZXJyb3IgYXMgYW55KS5jb2RlID0gZGF0YT8uY29kZSB8fCAnVU5LTk9XTl9FUlJPUidcbiAgcmV0dXJuIGVycm9yXG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZGJhc2VDb250YWluZXJzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IElDb250aWFuZXJDb25maWcgJiB7IGpzVXJsPzogeyB2ZW5kZXI/OiBzdHJpbmc7IHZtOiBzdHJpbmcgfSB9XG4gIHByaXZhdGUgd2FzbTogUHJvbWlzZTxXZWJBc3NlbWJseS5FeHBvcnRzPlxuICBwcml2YXRlIGNvbnRhaW5lckluaXRQcm9taXNlOiAvKiBQcm9taXNlPGFueT4qLyBhbnkgfCBudWxsXG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJQ29udGlhbmVyQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBqc1VybDpcbiAgICAgICAgdHlwZW9mIGNvbmZpZy5qc1VybCA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIHZtOiBjb25maWcuanNVcmwsXG4gICAgICAgICAgfVxuICAgICAgICAgIDogKGNvbmZpZy5qc1VybCBhcyBhbnkpLFxuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcud2FzbVVybCAmJiB0aGlzLmNvbmZpZy5wdWJsaWNLZXkpIHtcbiAgICAgIC8vIOmdniB3YW1zIOS4lOaciSBwdWJsaWMga2V5IOWImeWPr+S9v+eUqOm7mOiupOeahCBqcy1zZGvvvIzml6DpnIDmoKHpqoxcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbmZpZy53YXNtVXJsICYmICF0aGlzLmNvbmZpZy5qc1VybD8udm0gJiYgIShnbG9iYWxUaGlzIGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX1gLCAn57y65bCRIHByaXZhdGVsaW5rIHNkayDlnLDlnYAnKVxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCc+PioqKioqKicsIHRoaXMuY29uZmlnKVxuICAgIGRlYnVnZ2VyXG5cbiAgICBpZiAodGhpcy5jb25maWcud2FzbVVybCkge1xuICAgICAgdGhpcy53YXNtID0gZ2V0RXhwb3J0RnVuY3Rpb24odGhpcy5jb25maWcud2FzbVVybCkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdsb2FkIHdhbXMgZXJyb3IsIGZhbGwgYmFjayB0byB1c2UganMnLCBlKVxuICAgICAgICAgIHJldHVybiBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGdsb2JhbFRoaXMgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rKSB7XG4gICAgICAgICAgcmV0dXJuIChnbG9iYWxUaGlzIGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGlua1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5qc1VybCB8fCB0aGlzLmNvbmZpZy5wdWJsaWNLZXkpIHtcbiAgICAgIHRoaXMud2FzbSA9IGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLmpzVXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndhc20gPSBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBpbml0Q29udGFpbmVyOiAoZ2xvYmFsVGhpcyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuaW5pdENvbnRhaW5lcixcbiAgICAgICAgY2FsbENvbnRhaW5lcjogKGdsb2JhbFRoaXMgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rLmNhbGxDb250YWluZXIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdjYWxsQ29udGFpbmVyJyxcbiAgICB9LFxuICAgIHRpdGxlOiAn6LCD55So5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGNhbGxDb250YWluZXIoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOWfn+WQjSAmIOi3r+W+hOaYr+WQpuWtmOWcqCcsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgYXN5bmMgY2FsbENvbnRhaW5lcihvcHRpb25zOiBJQ2FsbENvbnRhaW5lck9wdGlvbnMsIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcbiAgICBhd2FpdCB0aGlzLmluaXRDb250YWluZXIodGhpcy5jb25maWcpXG4gICAgY29uc3QgU0NPUEUgPSBgJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcmBcbiAgICBjb25zdCB7IGNhbGxDb250YWluZXIgfTogeyBjYWxsQ29udGFpbmVyOiAob3B0aW9uczogSUNhbGxUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcbiAgICBjb25zdCB7XG4gICAgICB1cmwsXG4gICAgICBtZXRob2QgPSAnR0VUJyxcbiAgICAgIGhlYWRlciA9IHt9LFxuICAgICAgZGF0YSxcbiAgICAgIHRpbWVvdXQgPSA2MDAwMCxcbiAgICAgIGRhdGFUeXBlID0gJ2pzb24nLFxuICAgICAgcmVzcG9uc2VUeXBlID0gJ3RleHQnLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9XG5cbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2ludmFsaWQgcmVxdWVzdCB1cmwnKVxuICAgIH1cblxuICAgIGlmICghbWV0aG9kKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnaW52YWxpZCByZXF1ZXN0IG1ldGhvZCcpXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgIGRhdGE6IHNlcmlhbGl6ZVJlcXVlc3RCb2R5KGhlYWRlciwgZGF0YSwgbWV0aG9kKSxcbiAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIGRhdGFUeXBlLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZSxcbiAgICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkYXRhXG4gICAgICAgICAgJiYgKGlzQnVmZmVyKHBhcmFtcy5kYXRhKSB8fCB0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICYmIChkYXRhIGFzIGFueSk/Lmxlbmd0aCA+IDEwMDAgKiAxMDI0ICogMTBcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdib2R5IHRvbyBsYXJnZScpKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICBsZXQgeyBkYXRhOiBnZXRCb2R5IH0gPSBwYXJhbXNcbiAgICAgICAgICBpZiAoZ2V0Qm9keSkge1xuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0J1ZmZlcihnZXRCb2R5KSAmJiB0eXBlb2YgZ2V0Qm9keSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBPYmplY3QuZW50cmllcyhnZXRCb2R5IHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChsaXN0LCBba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5dKSA9PiB7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gKVxuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGdldEJvZHkgPSBsaXN0LmpvaW4oJyYnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZVVSTCh1cmwpXG4gICAgICAgICAgICBpZiAocGFyc2VkVXJsLnNlYXJjaCkge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoICs9IGAmJHtwYXJhbXMuZGF0YX1gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoID0gYD8ke3BhcmFtcy5kYXRhfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy51cmwgPSBwYXJzZWRVcmwuaHJlZlxuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsQ29udGFpbmVyKHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcbiAgICAgICAgICBmYWlsOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlcyB8fCB7fVxuICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIFNDT1BFLCAnY2FsbCBjb250YWluZXIgZXJyb3InKSlcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIGUpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdENvbnRhaW5lcihjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnIHwgJ2pzVXJsJz4pIHtcbiAgICBjb25zdCB7IGluaXRDb250YWluZXIgfTogeyBpbml0Q29udGFpbmVyOiAob3B0aW9uczogSUluaXRUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcbiAgICBpZiAoIXRoaXMuY29udGFpbmVySW5pdFByb21pc2UpIHtcbiAgICAgIHRoaXMuY29udGFpbmVySW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGluaXRDb250YWluZXIoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nKHJlcy5zdGF0dXNDb2RlKSAhPT0gJzIwMCcpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhaWw6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChnZW5Db250YWluZXJFcnJvcihyZXMuZGF0YSwgYCR7Q09NUE9ORU5UX05BTUV9LmluaXRDb250YWluZXJgLCAnaW5pdCBjb250YWluZXIgZmFpbCcpKVxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSA9IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbml0UHJvbWlzZVxuICB9XG59XG5cbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIG5hbWVzcGFjZTogJ2NvbnRhaW5lcicsXG4gIGVudGl0eShjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSkge1xuICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX09QRVJBVElPTiwgJ2V2ZXJ5IGNsb3VkYmFzZSBpbnN0YW5jZSBzaG91bGQgaGFzIG9ubHkgb25lIGNvbnRhaW5lciBvYmplY3QnKVxuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBDbG91ZGJhc2VDb250YWluZXJzKGNvbmZpZylcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlID0gaW5zdGFuY2VcbiAgICB0aGlzLmNhbGxDb250YWluZXIgPSBpbnN0YW5jZS5jYWxsQ29udGFpbmVyLmJpbmQoaW5zdGFuY2UpXG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICB9LFxufVxudHJ5IHtcbiAgY2xvdWRiYXNlLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbn0gY2F0Y2ggKGUpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRhaW5lcnMoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUud2FybihlKVxuICB9XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export declare function parseURL(_url: string): HTMLAnchorElement | URL;
2
2
  export declare function isBuffer(buf: any): boolean;
3
- export declare function serializeRequestBody<T>(headers: any, data: T): T | string;
3
+ export declare function serializeRequestBody<T>(headers: any, data: T, method?: string): T | string;
@@ -17,14 +17,36 @@ function isBuffer(buf) {
17
17
  return buf instanceof ArrayBuffer || ArrayBuffer.isView(buf);
18
18
  }
19
19
  exports.isBuffer = isBuffer;
20
- function serializeRequestBody(headers, data) {
20
+ function object2Qs(data) {
21
+ var list = Object.entries(data || {}).reduce(function (list, _a) {
22
+ var key = _a[0], value = _a[1];
23
+ list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)));
24
+ return list;
25
+ }, []);
26
+ if (list.length) {
27
+ return list.join('&');
28
+ }
29
+ }
30
+ function serializeRequestBody(headers, data, method) {
31
+ if (method === void 0) { method = 'POST'; }
21
32
  var res = data;
22
- var contentType_key = 'Content-Type';
33
+ var contentTypeKey = 'Content-Type';
23
34
  if (typeof data === 'object' && !isBuffer(data)) {
24
- if (!headers[contentType_key] && !headers['content-type']) {
25
- headers[contentType_key] = 'application/json';
35
+ if (!headers[contentTypeKey] && !headers['content-type']) {
36
+ headers[contentTypeKey] = 'application/json';
37
+ }
38
+ var contentType = headers[contentTypeKey] || headers['content-type'];
39
+ if (method === 'GET') {
40
+ try {
41
+ return object2Qs(data) || '';
42
+ }
43
+ catch (e) {
44
+ throw new Error(JSON.stringify({
45
+ code: ERRORS.INVALID_PARAMS,
46
+ msg: "[".concat(constants_1.COMPONENT_NAME, ".callContainer] invalid data in query method, ").concat(e.message),
47
+ }));
48
+ }
26
49
  }
27
- var contentType = headers[contentType_key] || headers['content-type'];
28
50
  switch (contentType) {
29
51
  case 'application/json': {
30
52
  try {
@@ -40,13 +62,9 @@ function serializeRequestBody(headers, data) {
40
62
  }
41
63
  case 'application/x-www-form-urlencoded': {
42
64
  try {
43
- var list = Object.entries(data || {}).reduce(function (list, _a) {
44
- var key = _a[0], value = _a[1];
45
- list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)));
46
- return list;
47
- }, []);
48
- if (list.length) {
49
- res = list.join('&');
65
+ var qs_1 = object2Qs(data);
66
+ if (qs_1) {
67
+ res = qs_1;
50
68
  }
51
69
  }
52
70
  catch (e) {
@@ -62,4 +80,4 @@ function serializeRequestBody(headers, data) {
62
80
  return res;
63
81
  }
64
82
  exports.serializeRequestBody = serializeRequestBody;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWdEO0FBQ2hELDBDQUE2QztBQUNyQyxJQUFBLE1BQU0sR0FBSyxxQkFBUyxPQUFkLENBQWM7QUFFNUIsU0FBZ0IsUUFBUSxDQUFDLElBQVk7SUFDbkMsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2IsT0FBTyxDQUFDLENBQUE7S0FDVDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQVBELDRCQU9DO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEdBQVE7SUFDL0IsT0FBTyxHQUFHLFlBQVksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUZELDRCQUVDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUksT0FBTyxFQUFFLElBQU87SUFDdEQsSUFBSSxHQUFHLEdBQWUsSUFBSSxDQUFBO0lBQzFCLElBQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQTtJQUN0QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3pELE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxrQkFBa0IsQ0FBQTtTQUM5QztRQUVELElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUE7UUFFdkUsUUFBUSxXQUFXLEVBQUU7WUFDbkIsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2QixJQUFJO29CQUNGLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO2lCQUMzQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYzt3QkFDM0IsR0FBRyxFQUFFLFdBQUksMEJBQWMsK0VBQXFFLENBQUMsQ0FBQyxPQUFPLENBQUU7cUJBQ3hHLENBQUMsQ0FBRSxDQUFBO2lCQUNMO2dCQUNELE1BQUs7YUFDTjtZQUNELEtBQUssbUNBQW1DLENBQUMsQ0FBQztnQkFDeEMsSUFBSTtvQkFDRixJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJLEVBQUUsRUFBOEI7NEJBQTdCLEdBQUcsUUFBQSxFQUFFLEtBQUssUUFBQTt3QkFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxjQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFFLENBQUMsQ0FBQTt3QkFDcEUsT0FBTyxJQUFJLENBQUE7b0JBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO29CQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDZixHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtxQkFDckI7aUJBQ0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7d0JBQzNCLEdBQUcsRUFBRSxXQUFJLDBCQUFjLCtGQUFxRixDQUFDLENBQUMsT0FBTyxDQUFFO3FCQUN4SCxDQUFDLENBQUUsQ0FBQTtpQkFDTDtnQkFDRCxNQUFLO2FBQ047U0FDRjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBMUNELG9EQTBDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgQ09NUE9ORU5UX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnXG5jb25zdCB7IEVSUk9SUyB9ID0gY29uc3RhbnRzXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVSTChfdXJsOiBzdHJpbmcpIHtcbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgIGEuaHJlZiA9IF91cmxcbiAgICByZXR1cm4gYVxuICB9XG4gIHJldHVybiBuZXcgVVJMKG5ldyBSZXF1ZXN0KF91cmwpLnVybClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVmZmVyKGJ1ZjogYW55KSB7XG4gIHJldHVybiBidWYgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCBBcnJheUJ1ZmZlci5pc1ZpZXcoYnVmKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUmVxdWVzdEJvZHk8VD4oaGVhZGVycywgZGF0YTogVCk6IFQgfCBzdHJpbmcge1xuICBsZXQgcmVzOiBUIHwgc3RyaW5nID0gZGF0YVxuICBjb25zdCBjb250ZW50VHlwZV9rZXkgPSAnQ29udGVudC1UeXBlJ1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICFpc0J1ZmZlcihkYXRhKSkge1xuICAgIGlmICghaGVhZGVyc1tjb250ZW50VHlwZV9rZXldICYmICFoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgaGVhZGVyc1tjb250ZW50VHlwZV9rZXldID0gJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSBoZWFkZXJzW2NvbnRlbnRUeXBlX2tleV0gfHwgaGVhZGVyc1snY29udGVudC10eXBlJ11cblxuICAgIHN3aXRjaCAoY29udGVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nOiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uLCAke2UubWVzc2FnZX1gLFxuICAgICAgICAgIH0pLClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzoge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGxpc3QgPSBPYmplY3QuZW50cmllcyhkYXRhIHx8IHt9KS5yZWR1Y2UoKGxpc3QsIFtrZXksIHZhbHVlXTogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgICAgICAgbGlzdC5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YClcbiAgICAgICAgICAgIHJldHVybiBsaXN0XG4gICAgICAgICAgfSwgW10pXG4gICAgICAgICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgPSBsaXN0LmpvaW4oJyYnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQsJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICB9KSwpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWdEO0FBQ2hELDBDQUE2QztBQUNyQyxJQUFBLE1BQU0sR0FBSyxxQkFBUyxPQUFkLENBQWM7QUFFNUIsU0FBZ0IsUUFBUSxDQUFDLElBQVk7SUFDbkMsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2IsT0FBTyxDQUFDLENBQUE7S0FDVDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQVBELDRCQU9DO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEdBQVE7SUFDL0IsT0FBTyxHQUFHLFlBQVksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUZELDRCQUVDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBSTtJQUNyQixJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJLEVBQUUsRUFBOEI7WUFBN0IsR0FBRyxRQUFBLEVBQUUsS0FBSyxRQUFBO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsY0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBRSxDQUFDLENBQUE7UUFDcEUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDdEI7QUFDSCxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUksT0FBTyxFQUFFLElBQU8sRUFBRSxNQUFlO0lBQWYsdUJBQUEsRUFBQSxlQUFlO0lBQ3ZFLElBQUksR0FBRyxHQUFlLElBQUksQ0FBQTtJQUMxQixJQUFNLGNBQWMsR0FBRyxjQUFjLENBQUE7SUFDckMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN4RCxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsa0JBQWtCLENBQUE7U0FDN0M7UUFFRCxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBRXRFLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTtZQUNwQixJQUFJO2dCQUNGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTthQUM3QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjO29CQUMzQixHQUFHLEVBQUUsV0FBSSwwQkFBYywyREFBaUQsQ0FBQyxDQUFDLE9BQU8sQ0FBRTtpQkFDcEYsQ0FBQyxDQUFFLENBQUE7YUFDTDtTQUNGO1FBRUQsUUFBUSxXQUFXLEVBQUU7WUFDbkIsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2QixJQUFJO29CQUNGLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO2lCQUMzQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYzt3QkFDM0IsR0FBRyxFQUFFLFdBQUksMEJBQWMsK0VBQXFFLENBQUMsQ0FBQyxPQUFPLENBQUU7cUJBQ3hHLENBQUMsQ0FBRSxDQUFBO2lCQUNMO2dCQUNELE1BQUs7YUFDTjtZQUNELEtBQUssbUNBQW1DLENBQUMsQ0FBQztnQkFDeEMsSUFBSTtvQkFDRixJQUFNLElBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQzFCLElBQUksSUFBRSxFQUFFO3dCQUNOLEdBQUcsR0FBRyxJQUFFLENBQUE7cUJBQ1Q7aUJBQ0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7d0JBQzNCLEdBQUcsRUFBRSxXQUFJLDBCQUFjLCtGQUFxRixDQUFDLENBQUMsT0FBTyxDQUFFO3FCQUN4SCxDQUFDLENBQUUsQ0FBQTtpQkFDTDtnQkFDRCxNQUFLO2FBQ047U0FDRjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBbERELG9EQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgQ09NUE9ORU5UX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnXG5jb25zdCB7IEVSUk9SUyB9ID0gY29uc3RhbnRzXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVSTChfdXJsOiBzdHJpbmcpIHtcbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgIGEuaHJlZiA9IF91cmxcbiAgICByZXR1cm4gYVxuICB9XG4gIHJldHVybiBuZXcgVVJMKG5ldyBSZXF1ZXN0KF91cmwpLnVybClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVmZmVyKGJ1ZjogYW55KSB7XG4gIHJldHVybiBidWYgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCBBcnJheUJ1ZmZlci5pc1ZpZXcoYnVmKVxufVxuXG5mdW5jdGlvbiBvYmplY3QyUXMoZGF0YSkge1xuICBjb25zdCBsaXN0ID0gT2JqZWN0LmVudHJpZXMoZGF0YSB8fCB7fSkucmVkdWNlKChsaXN0LCBba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICBsaXN0LnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX1gKVxuICAgIHJldHVybiBsaXN0XG4gIH0sIFtdKVxuICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICByZXR1cm4gbGlzdC5qb2luKCcmJylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUmVxdWVzdEJvZHk8VD4oaGVhZGVycywgZGF0YTogVCwgbWV0aG9kID0gJ1BPU1QnKTogVCB8IHN0cmluZyB7XG4gIGxldCByZXM6IFQgfCBzdHJpbmcgPSBkYXRhXG4gIGNvbnN0IGNvbnRlbnRUeXBlS2V5ID0gJ0NvbnRlbnQtVHlwZSdcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAhaXNCdWZmZXIoZGF0YSkpIHtcbiAgICBpZiAoIWhlYWRlcnNbY29udGVudFR5cGVLZXldICYmICFoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgaGVhZGVyc1tjb250ZW50VHlwZUtleV0gPSAnYXBwbGljYXRpb24vanNvbidcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnNbY29udGVudFR5cGVLZXldIHx8IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddXG5cbiAgICBpZiAobWV0aG9kID09PSAnR0VUJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG9iamVjdDJRcyhkYXRhKSB8fCAnJ1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIGluIHF1ZXJ5IG1ldGhvZCwgJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgfSksKVxuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoY29udGVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nOiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uLCAke2UubWVzc2FnZX1gLFxuICAgICAgICAgIH0pLClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzoge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHFzID0gb2JqZWN0MlFzKGRhdGEpXG4gICAgICAgICAgaWYgKHFzKSB7XG4gICAgICAgICAgICByZXMgPSBxc1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQsJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICB9KSwpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuIl19
@@ -0,0 +1,8 @@
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>;