@cloudbase/container 2.5.32-beta.0 → 2.5.33-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.
@@ -0,0 +1,105 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.request = void 0;
51
+ var utilities_1 = require("@cloudbase/utilities");
52
+ var constants_1 = require("../constants");
53
+ var index_1 = require("./index");
54
+ var getSdkName = utilities_1.constants.getSdkName, ERRORS = utilities_1.constants.ERRORS;
55
+ function request(_a) {
56
+ var 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, mode = _a.mode;
57
+ return __awaiter(this, void 0, void 0, function () {
58
+ var headers, abortController, done;
59
+ return __generator(this, function (_g) {
60
+ headers = __assign({}, header);
61
+ data = (0, index_1.serializeRequestBody)(headers, data);
62
+ abortController = new AbortController();
63
+ done = false;
64
+ return [2, Promise.race([
65
+ new Promise(function (_, reject) {
66
+ setTimeout(function () {
67
+ var _a;
68
+ var error = new Error('请求超时');
69
+ error.code = 'SERVER_TIMEOUT';
70
+ if (!done) {
71
+ (_a = abortController.abort) === null || _a === void 0 ? void 0 : _a.call(abortController);
72
+ }
73
+ reject(error);
74
+ }, timeout);
75
+ }),
76
+ fetch(url, {
77
+ method: method,
78
+ headers: headers,
79
+ body: data,
80
+ signal: abortController.signal,
81
+ mode: mode,
82
+ }).then(function (response) {
83
+ done = true;
84
+ if (responseType === 'arrayBuffer') {
85
+ return response.arrayBuffer();
86
+ }
87
+ if (dataType === 'json') {
88
+ try {
89
+ return response.json();
90
+ }
91
+ catch (e) {
92
+ throw new Error("[".concat(getSdkName(), "][").concat(ERRORS.INVALID_PARAMS, "][").concat(constants_1.COMPONENT_NAME, ".callContainer] response data must be json"));
93
+ }
94
+ }
95
+ return response.text();
96
+ }, function (e) {
97
+ done = true;
98
+ throw e;
99
+ }),
100
+ ])];
101
+ });
102
+ });
103
+ }
104
+ exports.request = request;
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWdEO0FBQ2hELDBDQUE2QztBQUM3QyxpQ0FBOEM7QUFDdEMsSUFBQSxVQUFVLEdBQWEscUJBQVMsV0FBdEIsRUFBRSxNQUFNLEdBQUsscUJBQVMsT0FBZCxDQUFjO0FBZ0J4QyxTQUFzQixPQUFPLENBQUMsRUFTZDtRQVJkLEdBQUcsU0FBQSxFQUNILGNBQWMsRUFBZCxNQUFNLG1CQUFHLEtBQUssS0FBQSxFQUNkLGNBQVcsRUFBWCxNQUFNLG1CQUFHLEVBQUUsS0FBQSxFQUNYLElBQUksVUFBQSxFQUNKLGVBQWUsRUFBZixPQUFPLG1CQUFHLEtBQUssS0FBQSxFQUNmLGdCQUFpQixFQUFqQixRQUFRLG1CQUFHLE1BQU0sS0FBQSxFQUNqQixvQkFBcUIsRUFBckIsWUFBWSxtQkFBRyxNQUFNLEtBQUEsRUFDckIsSUFBSSxVQUFBOzs7O1lBRUUsT0FBTyxnQkFBUSxNQUFNLENBQUUsQ0FBQTtZQUU3QixJQUFJLEdBQUcsSUFBQSw0QkFBb0IsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFcEMsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7WUFDekMsSUFBSSxHQUFHLEtBQUssQ0FBQTtZQUNoQixXQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLElBQUksT0FBTyxDQUFDLFVBQUMsQ0FBQyxFQUFFLE1BQU07d0JBQ3BCLFVBQVUsQ0FBQzs7NEJBQ1QsSUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQzlCOzRCQUFDLEtBQWEsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7NEJBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0NBQ1QsTUFBQSxlQUFlLENBQUMsS0FBSywrREFBSSxDQUFBOzZCQUMxQjs0QkFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7d0JBQ2YsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO29CQUNiLENBQUMsQ0FBQztvQkFDRixLQUFLLENBQUMsR0FBRyxFQUFFO3dCQUNULE1BQU0sUUFBQTt3QkFDTixPQUFPLFNBQUE7d0JBQ1AsSUFBSSxFQUFFLElBQVc7d0JBQ2pCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsSUFBSSxNQUFBO3FCQUNMLENBQUMsQ0FBQyxJQUFJLENBQ0wsVUFBQyxRQUFRO3dCQUNQLElBQUksR0FBRyxJQUFJLENBQUE7d0JBQ1gsSUFBSSxZQUFZLEtBQUssYUFBYSxFQUFFOzRCQUNsQyxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt5QkFDOUI7d0JBQ0QsSUFBSSxRQUFRLEtBQUssTUFBTSxFQUFFOzRCQUN2QixJQUFJO2dDQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBOzZCQUN2Qjs0QkFBQyxPQUFPLENBQUMsRUFBRTtnQ0FDVixNQUFNLElBQUksS0FBSyxDQUFDLFdBQUksVUFBVSxFQUFFLGVBQUssTUFBTSxDQUFDLGNBQWMsZUFBSywwQkFBYywrQ0FBNEMsQ0FBRSxDQUFBOzZCQUM1SDt5QkFDRjt3QkFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtvQkFDeEIsQ0FBQyxFQUNELFVBQUMsQ0FBQzt3QkFDQSxJQUFJLEdBQUcsSUFBSSxDQUFBO3dCQUNYLE1BQU0sQ0FBQyxDQUFBO29CQUNULENBQUMsQ0FDRjtpQkFDRixDQUFDLEVBQUE7OztDQUNIO0FBdERELDBCQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgQ09NUE9ORU5UX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBzZXJpYWxpemVSZXF1ZXN0Qm9keSB9IGZyb20gJy4vaW5kZXgnXG5jb25zdCB7IGdldFNka05hbWUsIEVSUk9SUyB9ID0gY29uc3RhbnRzXG5cbmludGVyZmFjZSBJUmVxdWVzdFBvcnBzIHtcbiAgdXJsOiBzdHJpbmdcbiAgZGF0YT86IHN0cmluZyB8IG9iamVjdCB8IEFycmF5QnVmZmVyXG4gIGhlYWRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgdGltZW91dD86IG51bWJlclxuICBtZXRob2Q/OiBzdHJpbmdcbiAgZGF0YVR5cGU/OiAnanNvbicgfCBzdHJpbmdcbiAgcmVzcG9uc2VUeXBlPzogJ3RleHQnIHwgJ2FycmF5QnVmZmVyJ1xuICBtb2RlPzogJ2NvcnMnIHwgJ25vLWNvcnMnIHwgJ3NhbWUtb3JpZ2luJ1xufVxuXG4vKipcbiAqIOWwgeijheWvuem9kCB3eC5yZXF1ZXN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXF1ZXN0KHtcbiAgdXJsLFxuICBtZXRob2QgPSAnR0VUJyxcbiAgaGVhZGVyID0ge30sXG4gIGRhdGEsXG4gIHRpbWVvdXQgPSA2MDAwMCxcbiAgZGF0YVR5cGUgPSAnanNvbicsXG4gIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgbW9kZSxcbn06IElSZXF1ZXN0UG9ycHMpIHtcbiAgY29uc3QgaGVhZGVycyA9IHsgLi4uaGVhZGVyIH1cblxuICBkYXRhID0gc2VyaWFsaXplUmVxdWVzdEJvZHkoaGVhZGVycywgZGF0YSlcblxuICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgbGV0IGRvbmUgPSBmYWxzZVxuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ+ivt+axgui2heaXticpXG4gICAgICAgIDsoZXJyb3IgYXMgYW55KS5jb2RlID0gJ1NFUlZFUl9USU1FT1VUJ1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQ/LigpXG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9KSxcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBib2R5OiBkYXRhIGFzIGFueSxcbiAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIG1vZGUsXG4gICAgfSkudGhlbihcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAnYXJyYXlCdWZmZXInKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKClcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YVR5cGUgPT09ICdqc29uJykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbJHtnZXRTZGtOYW1lKCl9XVske0VSUk9SUy5JTlZBTElEX1BBUkFNU31dWyR7Q09NUE9ORU5UX05BTUV9LmNhbGxDb250YWluZXJdIHJlc3BvbnNlIGRhdGEgbXVzdCBiZSBqc29uYCwpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KClcbiAgICAgIH0sXG4gICAgICAoZSkgPT4ge1xuICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9LFxuICAgICksXG4gIF0pXG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare const COMPONENT_NAME = "container";
@@ -0,0 +1,2 @@
1
+ export var COMPONENT_NAME = 'container';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFNLGNBQWMsR0FBRyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09NUE9ORU5UX05BTUUgPSAnY29udGFpbmVyJ1xuIl19
package/dist/esm/index.js CHANGED
@@ -83,124 +83,141 @@ var __rest = (this && this.__rest) || function (s, e) {
83
83
  import { constants, utils, helpers } from '@cloudbase/utilities';
84
84
  import decompress from 'brotli/decompress';
85
85
  import Go from './go_wams_exec';
86
- var getSdkName = constants.getSdkName, ERRORS = constants.ERRORS, COMMUNITY_SITE_URL = constants.COMMUNITY_SITE_URL;
86
+ import { isBuffer, parseURL, serializeRequestBody } from './utils';
87
+ import { request } from './utils/request';
88
+ import { COMPONENT_NAME } from './constants';
89
+ var ERRORS = constants.ERRORS, COMMUNITY_SITE_URL = constants.COMMUNITY_SITE_URL;
87
90
  var execCallback = utils.execCallback, printWarn = utils.printWarn;
88
91
  var catchErrorsDecorator = helpers.catchErrorsDecorator;
89
- var COMPONENT_NAME = 'container';
90
- function request(_a) {
91
- var 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;
92
- return __awaiter(this, void 0, void 0, function () {
93
- var headers, _g, signal, abort;
94
- return __generator(this, function (_h) {
95
- headers = __assign({}, header);
96
- if (typeof data === 'object' && !(data instanceof ArrayBuffer || ArrayBuffer.isView(data))) {
97
- if (!headers['Content-Type'] && !headers['content-type']) {
98
- headers['Content-Type'] = 'application/json';
99
- }
100
- try {
101
- data = JSON.stringify(data);
102
- }
103
- catch (e) {
104
- throw new Error(JSON.stringify({
105
- code: ERRORS.INVALID_PARAMS,
106
- msg: "[".concat(COMPONENT_NAME, ".callContainer] invalid data with content-type: application/json"),
107
- }));
108
- }
109
- }
110
- _g = new AbortController(), signal = _g.signal, abort = _g.abort;
111
- return [2, Promise.race([
112
- new Promise(function (_, reject) {
113
- setTimeout(function () {
114
- var error = new Error('请求超时');
115
- error.code = 'SERVER_TIMEOUT';
116
- reject(error);
117
- abort();
118
- }, timeout);
119
- }),
120
- fetch(url, {
121
- method: method,
122
- headers: headers,
123
- body: data,
124
- signal: signal,
125
- }).then(function (response) {
126
- if (responseType === 'arrayBuffer') {
127
- return response.arrayBuffer();
128
- }
129
- if (dataType === 'json') {
130
- try {
131
- return response.json();
132
- }
133
- catch (e) {
134
- throw new Error("[".concat(getSdkName(), "][").concat(ERRORS.INVALID_PARAMS, "][").concat(COMPONENT_NAME, ".callContainer] response data must be json"));
135
- }
136
- }
137
- return response.text();
138
- }),
139
- ])];
140
- });
141
- });
142
- }
143
92
  var InvalieParamsError = (function (_super) {
144
93
  __extends(InvalieParamsError, _super);
145
94
  function InvalieParamsError(scope, message) {
95
+ var _this = this;
146
96
  var msg = JSON.stringify({
147
97
  code: ERRORS.INVALID_PARAMS,
148
98
  msg: "[".concat(scope, "] ").concat(message),
149
99
  });
150
- return _super.call(this, msg) || this;
100
+ _this = _super.call(this, msg) || this;
101
+ _this.code = ERRORS.INVALID_PARAMS;
102
+ return _this;
151
103
  }
104
+ InvalieParamsError.prototype.toJSON = function () {
105
+ return {
106
+ code: this.code,
107
+ message: this.message,
108
+ };
109
+ };
152
110
  return InvalieParamsError;
153
111
  }(Error));
112
+ function genContainerError(data, scope, defaultMessage) {
113
+ if (scope === void 0) { scope = COMPONENT_NAME; }
114
+ if (defaultMessage === void 0) { defaultMessage = 'call container error'; }
115
+ var error = data instanceof Error ? data : new Error("[".concat(scope, "] ").concat((data === null || data === void 0 ? void 0 : data.message) || defaultMessage));
116
+ error.code = (data === null || data === void 0 ? void 0 : data.code) || 'UNKNOWN_ERROR';
117
+ return error;
118
+ }
154
119
  var CloudbaseContainers = (function () {
155
120
  function CloudbaseContainers(config) {
156
- this.config = config;
157
- if (!this.config.wasmUrl) {
158
- throw new Error(JSON.stringify({
159
- code: ERRORS.INVALID_PARAMS,
160
- msg: "[".concat(COMPONENT_NAME, "] \u7F3A\u5C11 wasmUrl"),
161
- }));
121
+ var _this = this;
122
+ this.config = __assign({}, config);
123
+ if (!this.config.wasmUrl && !this.config.jsUrl && !window.cloudbase_private_link) {
124
+ throw new InvalieParamsError("".concat(COMPONENT_NAME), '缺少 privatelink sdk 地址');
162
125
  }
163
- this.wasm = getExportFunction(this.config.wasmUrl, {
164
- utils: {
165
- info: function (e) {
166
- console.log(e);
126
+ if (this.config.wasmUrl) {
127
+ this.wasm = getExportFunction(this.config.wasmUrl, {
128
+ utils: {
129
+ info: function (e) {
130
+ console.log(e);
131
+ },
132
+ request: request,
167
133
  },
168
- request: request,
169
- },
170
- });
134
+ }).catch(function (e) {
135
+ if (_this.config.jsUrl) {
136
+ console.warn('load wams error, fall back to use js', e);
137
+ return loadJSExportFunction(_this.config.jsUrl);
138
+ }
139
+ if (window.cloudbase_private_link) {
140
+ return window.cloudbase_private_link;
141
+ }
142
+ throw e;
143
+ });
144
+ }
145
+ else if (this.config.jsUrl) {
146
+ this.wasm = loadJSExportFunction(this.config.jsUrl);
147
+ }
148
+ else {
149
+ this.wasm = Promise.resolve({
150
+ initContainer: window.cloudbase_private_link.initContainer,
151
+ callContainer: window.cloudbase_private_link.callContainer,
152
+ });
153
+ }
171
154
  }
172
155
  CloudbaseContainers.prototype.callContainer = function (options, callback) {
173
156
  return __awaiter(this, void 0, void 0, function () {
174
- var callContainer, url, _a, method, _b, header, data, _c, timeout, _d, dataType, _e, responseType, restOptions, res, e_1;
175
- return __generator(this, function (_f) {
176
- switch (_f.label) {
157
+ var SCOPE, callContainer, _a, url, _b, method, _c, header, data, _d, timeout, _e, dataType, _f, responseType, restOptions, res, e_1;
158
+ return __generator(this, function (_g) {
159
+ switch (_g.label) {
177
160
  case 0: return [4, this.initContainer(this.config)];
178
161
  case 1:
179
- _f.sent();
162
+ _g.sent();
163
+ SCOPE = "".concat(COMPONENT_NAME, ".callContainer");
180
164
  return [4, this.wasm];
181
165
  case 2:
182
- callContainer = (_f.sent()).callContainer;
183
- url = options.url, _a = options.method, method = _a === void 0 ? 'GET' : _a, _b = options.header, header = _b === void 0 ? {} : _b, data = options.data, _c = options.timeout, timeout = _c === void 0 ? 60000 : _c, _d = options.dataType, dataType = _d === void 0 ? 'json' : _d, _e = options.responseType, responseType = _e === void 0 ? 'text' : _e, restOptions = __rest(options, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
166
+ callContainer = (_g.sent()).callContainer;
167
+ _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"]);
184
168
  if (!url) {
185
- throw new InvalieParamsError("".concat(COMPONENT_NAME, ".callContainer"), 'invalid request url');
169
+ throw new InvalieParamsError(SCOPE, 'invalid request url');
170
+ }
171
+ if (!method) {
172
+ throw new InvalieParamsError(SCOPE, 'invalid request method');
186
173
  }
187
- _f.label = 3;
174
+ _g.label = 3;
188
175
  case 3:
189
- _f.trys.push([3, 5, , 6]);
176
+ _g.trys.push([3, 5, , 6]);
190
177
  return [4, new Promise(function (resolve, reject) {
191
- var params = __assign({ url: url, method: method, header: header, data: data, timeout: timeout, dataType: dataType, responseType: responseType }, restOptions);
178
+ var params = __assign({ url: url, method: method, header: header, data: serializeRequestBody(header, data), timeout: timeout, dataType: dataType, responseType: responseType }, restOptions);
179
+ if (params.data !== undefined && !isBuffer(params.data)) {
180
+ if (typeof params.data !== 'string' && method === 'GET') {
181
+ try {
182
+ var list = Object.entries(params.data || {}).reduce(function (list, _a) {
183
+ var key = _a[0], value = _a[1];
184
+ list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(String(value))));
185
+ return list;
186
+ }, []);
187
+ if (list.length) {
188
+ params.data = list.join('&');
189
+ }
190
+ }
191
+ catch (e) { }
192
+ }
193
+ if (method === 'GET' && typeof params.data === 'string') {
194
+ var parsedUrl = parseURL(url);
195
+ if (parsedUrl.search) {
196
+ parsedUrl.search += params.data;
197
+ }
198
+ else {
199
+ parsedUrl.search = "?".concat(params.data);
200
+ }
201
+ params.url = parsedUrl.href;
202
+ params.data = undefined;
203
+ }
204
+ }
205
+ if (data
206
+ && (isBuffer(params.data) || typeof params.data === 'string')
207
+ && (data === null || data === void 0 ? void 0 : data.length) > 1000 * 1024 * 10) {
208
+ reject(new InvalieParamsError(SCOPE, 'body too large'));
209
+ return;
210
+ }
192
211
  callContainer(__assign(__assign({}, params), { success: resolve, fail: function (res) {
193
212
  var data = (res || {}).data;
194
- var error = new Error((data === null || data === void 0 ? void 0 : data.message) || 'call container error');
195
- error.code = (data === null || data === void 0 ? void 0 : data.code) || 'UNKNOWN_ERROR';
196
- reject(error);
213
+ reject(genContainerError(data, SCOPE, 'call container error'));
197
214
  } }));
198
215
  })];
199
216
  case 4:
200
- res = _f.sent();
217
+ res = _g.sent();
201
218
  return [2, execCallback(callback, null, res)];
202
219
  case 5:
203
- e_1 = _f.sent();
220
+ e_1 = _g.sent();
204
221
  execCallback(callback, e_1);
205
222
  return [3, 6];
206
223
  case 6: return [2];
@@ -222,18 +239,12 @@ var CloudbaseContainers = (function () {
222
239
  config: config,
223
240
  success: function (res) {
224
241
  if (String(res.statusCode) !== '200') {
225
- reject(new Error(JSON.stringify({
226
- code: 'INIT_ERROR',
227
- msg: "[".concat(COMPONENT_NAME, "] ").concat(res.statusCode, " ").concat(JSON.stringify(res.data)),
228
- })));
242
+ reject(genContainerError(res.data, "".concat(COMPONENT_NAME, ".initContainer"), 'init container fail'));
229
243
  }
230
244
  resolve(res);
231
245
  },
232
246
  fail: function (res) {
233
- reject(new Error(JSON.stringify({
234
- code: 'INIT_ERROR',
235
- msg: "[".concat(COMPONENT_NAME, "] ").concat(JSON.stringify(res.data)),
236
- })));
247
+ reject(genContainerError(res.data, "".concat(COMPONENT_NAME, ".initContainer"), 'init container fail'));
237
248
  this._containerInitPromis = null;
238
249
  },
239
250
  });
@@ -345,32 +356,56 @@ function getExportFunction(url, module, mode) {
345
356
  ])];
346
357
  case 2:
347
358
  _a.sent();
348
- return [2, { callContainer: window.callContainer, initContainer: window.initContainer }];
359
+ return [2, {
360
+ callContainer: window.callContainer,
361
+ initContainer: window.initContainer,
362
+ }];
349
363
  case 3: return [2, reuslt.instance.exports];
350
364
  }
351
365
  });
352
366
  });
353
367
  }
368
+ function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
369
+ if (targetDoc === void 0) { targetDoc = document; }
370
+ return new Promise(function (resolve, reject) {
371
+ var win = targetDoc.defaultView;
372
+ var script = targetDoc.createElement('script');
373
+ script.setAttribute('src', jsUrl);
374
+ script.setAttribute('class', umdModuleName);
375
+ script.addEventListener('load', function () {
376
+ if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
377
+ return resolve(win[umdModuleName]);
378
+ }
379
+ var error = new Error("Fail to load UMD module ".concat(umdModuleName, " from [").concat(jsUrl, "]."));
380
+ return reject(error);
381
+ });
382
+ script.addEventListener('error', function (e) {
383
+ var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
384
+ reject(error);
385
+ });
386
+ targetDoc.body.appendChild(script);
387
+ });
388
+ }
389
+ function loadJSExportFunction(url) {
390
+ return __awaiter(this, void 0, void 0, function () {
391
+ return __generator(this, function (_a) {
392
+ return [2, loadUmdModule(url, 'cloudbase_private_link')];
393
+ });
394
+ });
395
+ }
354
396
  function isBrotliCompressed(url) {
355
397
  var brotliCompressed = false;
356
398
  var pathname = '';
357
399
  try {
358
- var a = document.createElement('a');
359
- a.href = url;
360
- pathname = a.pathname;
400
+ var location_1 = parseURL(url);
401
+ pathname = location_1.pathname;
361
402
  }
362
403
  catch (e) {
363
- try {
364
- var res = new URL(url);
365
- pathname = res === null || res === void 0 ? void 0 : res.pathname;
366
- }
367
- catch (e) {
368
- pathname = url;
369
- }
404
+ pathname = url;
370
405
  }
371
406
  if (/\.br$/.test(pathname)) {
372
407
  brotliCompressed = true;
373
408
  }
374
409
  return brotliCompressed;
375
410
  }
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSXZCLElBQUEsVUFBVSxHQUFpQyxTQUFTLFdBQTFDLEVBQUUsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFjO0FBQ3BELElBQUEsWUFBWSxHQUFnQixLQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLEtBQUssVUFBVixDQUFVO0FBQ2pDLElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFZO0FBRXhDLElBQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQTtBQUtsQyxTQUFlLE9BQU8sQ0FBQyxFQWdCdEI7UUFmQyxHQUFHLFNBQUEsRUFDSCxjQUFjLEVBQWQsTUFBTSxtQkFBRyxLQUFLLEtBQUEsRUFDZCxjQUFXLEVBQVgsTUFBTSxtQkFBRyxFQUFFLEtBQUEsRUFDWCxJQUFJLFVBQUEsRUFDSixlQUFlLEVBQWYsT0FBTyxtQkFBRyxLQUFLLEtBQUEsRUFDZixnQkFBaUIsRUFBakIsUUFBUSxtQkFBRyxNQUFNLEtBQUEsRUFDakIsb0JBQXFCLEVBQXJCLFlBQVksbUJBQUcsTUFBTSxLQUFBOzs7O1lBVWYsT0FBTyxnQkFBUSxNQUFNLENBQUUsQ0FBQTtZQUU3QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxD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QixDQUFBO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDYWxsQ29udGFpbmVyT3B0aW9ucywgSUNvbnRpYW5lckNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29udGFpbmVyJ1xuaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuLy8gaW1wb3J0IGJyb3RsaVByb21pc2UgZnJvbSAnYnJvdGxpLWRlYy13YXNtJyAvLyBJbXBvcnQgdGhlIGRlZmF1bHQgZXhwb3J0XG5pbXBvcnQgZGVjb21wcmVzcyBmcm9tICdicm90bGkvZGVjb21wcmVzcydcblxuaW1wb3J0IEdvIGZyb20gJy4vZ29fd2Ftc19leGVjJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCB7IGdldFNka05hbWUsIEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbmNvbnN0IENPTVBPTkVOVF9OQU1FID0gJ2NvbnRhaW5lcidcblxuLyoqXG4gKiDlsIHoo4Xlr7npvZAgd3gucmVxdWVzdFxuICovXG5hc3luYyBmdW5jdGlvbiByZXF1ZXN0KHtcbiAgdXJsLFxuICBtZXRob2QgPSAnR0VUJyxcbiAgaGVhZGVyID0ge30sXG4gIGRhdGEsXG4gIHRpbWVvdXQgPSA2MDAwMCxcbiAgZGF0YVR5cGUgPSAnanNvbicsXG4gIHJlc3BvbnNlVHlwZSA9ICd0ZXh0Jyxcbn06IHtcbiAgdXJsOiBzdHJpbmdcbiAgZGF0YT86IHN0cmluZyB8IG9iamVjdCB8IEFycmF5QnVmZmVyXG4gIGhlYWRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgdGltZW91dD86IG51bWJlclxuICBtZXRob2Q/OiBzdHJpbmdcbiAgZGF0YVR5cGU/OiAnanNvbicgfCBzdHJpbmdcbiAgcmVzcG9uc2VUeXBlPzogJ3RleHQnIHwgJ2FycmF5QnVmZmVyJ1xufSkge1xuICBjb25zdCBoZWFkZXJzID0geyAuLi5oZWFkZXIgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgIShkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSkge1xuICAgIGlmICghaGVhZGVyc1snQ29udGVudC1UeXBlJ10gJiYgIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uYCxcbiAgICAgIH0pLClcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IHNpZ25hbCwgYWJvcnQgfSA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcign6K+35rGC6LaF5pe2JylcbiAgICAgICAgOyhlcnJvciBhcyBhbnkpLmNvZGUgPSAnU0VSVkVSX1RJTUVPVVQnXG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgYWJvcnQoKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9KSxcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgc2lnbmFsLFxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAnYXJyYXlCdWZmZXInKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpXG4gICAgICB9XG4gICAgICBpZiAoZGF0YVR5cGUgPT09ICdqc29uJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWyR7Z2V0U2RrTmFtZSgpfV1bJHtFUlJPUlMuSU5WQUxJRF9QQVJBTVN9XVske0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyXSByZXNwb25zZSBkYXRhIG11c3QgYmUganNvbmAsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpXG4gICAgfSksXG4gIF0pXG59XG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBtc2cgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICBtc2c6IGBbJHtzY29wZX1dICR7bWVzc2FnZX1gLFxuICAgIH0pXG4gICAgc3VwZXIobXNnKVxuICB9XG59XG5cbmludGVyZmFjZSBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBJQ2FsbENvbnRhaW5lck9wdGlvbnMge1xuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmludGVyZmFjZSBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMge1xuICBjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmNsYXNzIENsb3VkYmFzZUNvbnRhaW5lcnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZ1xuICBwcml2YXRlIHdhc206IFByb21pc2U8V2ViQXNzZW1ibHkuRXhwb3J0cz5cbiAgcHJpdmF0ZSBjb250YWluZXJJbml0UHJvbWlzZTogLyogUHJvbWlzZTxhbnk+Ki8gYW55IHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnXG4gICAgaWYgKCF0aGlzLmNvbmZpZy53YXNtVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfV0g57y65bCRIHdhc21VcmxgLFxuICAgICAgfSksKVxuICAgIH1cbiAgICB0aGlzLndhc20gPSBnZXRFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy53YXNtVXJsLCB7XG4gICAgICB1dGlsczoge1xuICAgICAgICBpbmZvKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2NhbGxDb250YWluZXInLFxuICAgIH0sXG4gICAgdGl0bGU6ICfosIPnlKjlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggY2FsbENvbnRhaW5lcigpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5Z+f5ZCNICYg6Lev5b6E5piv5ZCm5a2Y5ZyoJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBjYWxsQ29udGFpbmVyKG9wdGlvbnM6IElDYWxsQ29udGFpbmVyT3B0aW9ucywgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGF3YWl0IHRoaXMuaW5pdENvbnRhaW5lcih0aGlzLmNvbmZpZylcbiAgICBjb25zdCB7IGNhbGxDb250YWluZXIgfTogeyBjYWxsQ29udGFpbmVyOiAob3B0aW9uczogSUNhbGxUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcblxuICAgIGNvbnN0IHtcbiAgICAgIHVybCxcbiAgICAgIG1ldGhvZCA9ICdHRVQnLFxuICAgICAgaGVhZGVyID0ge30sXG4gICAgICBkYXRhLFxuICAgICAgdGltZW91dCA9IDYwMDAwLFxuICAgICAgZGF0YVR5cGUgPSAnanNvbicsXG4gICAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSBvcHRpb25zXG5cbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcmAsICdpbnZhbGlkIHJlcXVlc3QgdXJsJylcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHVybCwgbWV0aG9kLCBoZWFkZXIsIGRhdGEsIHRpbWVvdXQsIGRhdGFUeXBlLCByZXNwb25zZVR5cGUsIC4uLnJlc3RPcHRpb25zIH1cblxuICAgICAgICBjYWxsQ29udGFpbmVyKHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcbiAgICAgICAgICBmYWlsOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlcyB8fCB7fVxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoZGF0YT8ubWVzc2FnZSB8fCAnY2FsbCBjb250YWluZXIgZXJyb3InKVxuICAgICAgICAgICAgOyhlcnJvciBhcyBhbnkpLmNvZGUgPSBkYXRhPy5jb2RlIHx8ICdVTktOT1dOX0VSUk9SJ1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0Q29udGFpbmVyKGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCc+KSB7XG4gICAgY29uc3QgeyBpbml0Q29udGFpbmVyIH06IHsgaW5pdENvbnRhaW5lcjogKG9wdGlvbnM6IElJbml0VGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpbml0Q29udGFpbmVyKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmcocmVzLnN0YXR1c0NvZGUpICE9PSAnMjAwJykge1xuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnSU5JVF9FUlJPUicsXG4gICAgICAgICAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9XSAke3Jlcy5zdGF0dXNDb2RlfSAke0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhKX1gLFxuICAgICAgICAgICAgICB9KSwpLClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmFpbChyZXMpIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBjb2RlOiAnSU5JVF9FUlJPUicsXG4gICAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfV0gJHtKU09OLnN0cmluZ2lmeShyZXMuZGF0YSl9YCxcbiAgICAgICAgICAgIH0pLCksKVxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVySW5pdFByb21pcyA9IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbml0UHJvbWlzZVxuICB9XG59XG5cbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIG5hbWVzcGFjZTogJ2NvbnRhaW5lcicsXG4gIGVudGl0eShjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSkge1xuICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX09QRVJBVElPTiwgJ2V2ZXJ5IGNsb3VkYmFzZSBpbnN0YW5jZSBzaG91bGQgaGFzIG9ubHkgb25lIGNvbnRhaW5lciBvYmplY3QnKVxuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBDbG91ZGJhc2VDb250YWluZXJzKGNvbmZpZylcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlID0gaW5zdGFuY2VcbiAgICB0aGlzLmNhbGxDb250YWluZXIgPSBpbnN0YW5jZS5jYWxsQ29udGFpbmVyLmJpbmQoaW5zdGFuY2UpXG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICB9LFxufVxudHJ5IHtcbiAgY2xvdWRiYXNlLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbn0gY2F0Y2ggKGUpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRhaW5lcnMoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUud2FybihlKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEV4cG9ydEZ1bmN0aW9uKHVybCwgbW9kdWxlLCBtb2RlID0gJ2dvJykge1xuICBhc3luYyBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZSkge1xuICAgIGlmIChicm90bGlDb21wcmVzc2VkIHx8ICFXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZykge1xuICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgKGF3YWl0IHJlc3ApLmFycmF5QnVmZmVyKClcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGJyb3RsaUNvbXByZXNzZWQgPyBkZWNvbXByZXNzKG5ldyBJbnQ4QXJyYXkoc291cmNlKSkgOiBzb3VyY2VcbiAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShidWZmZXIsIGltcG9ydE9iamVjdClcbiAgICB9XG5cbiAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0KVxuICB9XG5cbiAgbGV0IGltcG9ydE9iamVjdCA9IHtcbiAgICBlbnY6IHtcbiAgICAgIG1lbW9yeUJhc2U6IDAsXG4gICAgICB0YWJsZUJhc2U6IDAsXG4gICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICAgICAgICBpbml0aWFsOiAyNTYsXG4gICAgICB9KSxcbiAgICAgIC8vIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe1xuICAgICAgLy8gICBpbml0aWFsOiAyLFxuICAgICAgLy8gICBlbGVtZW50OiAnYW55ZnVuYycsXG4gICAgICAvLyB9KSxcbiAgICB9LFxuICAgIC4uLm1vZHVsZSxcbiAgfVxuICBsZXQgZ29cbiAgY29uc3QgYnJvdGxpQ29tcHJlc3NlZCA9IGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBnbyA9IG5ldyBHbygpXG4gICAgZ28uX2luaXRlZE1vZHVsZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZ28uX2luaXRlZE1vZHVsZVJlc29sdmUgPSByZXNvbHZlXG4gICAgfSlcbiAgICBpbXBvcnRPYmplY3QgPSB7XG4gICAgICAuLi5nby5pbXBvcnRPYmplY3QsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgICAgZXhwb3J0TW9kdWxlKG1vZHVsZSkge1xuICAgICAgICAgIHJldHVybiBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZShtb2R1bGUpXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldXNsdCA9IGF3YWl0IGluc3RhbnRpYXRlU3RyZWFtaW5nKGZldGNoKHVybCksIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBnby5ydW4ocmV1c2x0Lmluc3RhbmNlKSxcbiAgICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgIH0sIDUwMCksKSxcbiAgICBdKVxuXG4gICAgcmV0dXJuIHsgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNhbGxDb250YWluZXIsIGluaXRDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5pbml0Q29udGFpbmVyIH1cbiAgfVxuXG4gIC8vIGlmIChtb2RlID09PSAnZ28nKSB7XG4gIC8vICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSlcbiAgLy8gICBjb25zdCBtb2R1bGUgPSBhd2FpdCBnby5faW5pdGVkTW9kdWxlUHJvbWlzZVxuICAvLyAgIHJldHVybiBtb2R1bGVcbiAgLy8gfVxuXG4gIHJldHVybiByZXVzbHQuaW5zdGFuY2UuZXhwb3J0c1xufVxuXG5mdW5jdGlvbiBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKSB7XG4gIGxldCBicm90bGlDb21wcmVzc2VkID0gZmFsc2VcblxuICBsZXQgcGF0aG5hbWUgPSAnJ1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICBhLmhyZWYgPSB1cmxcbiAgICBwYXRobmFtZSA9IGEucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBuZXcgVVJMKHVybClcbiAgICAgIHBhdGhuYW1lID0gcmVzPy5wYXRobmFtZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHBhdGhuYW1lID0gdXJsXG4gICAgfVxuICB9XG5cbiAgaWYgKC9cXC5iciQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgYnJvdGxpQ29tcHJlc3NlZCA9IHRydWVcbiAgfVxuICByZXR1cm4gYnJvdGxpQ29tcHJlc3NlZFxufVxuIl19
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBSXBDLElBQUEsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsWUFBWSxHQUFnQixLQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLEtBQUssVUFBVixDQUFVO0FBQ2pDLElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFZO0FBRXhDO0lBQWlDLHNDQUFLO0lBRXBDLDRCQUFZLEtBQUssRUFBRSxPQUFPO1FBQTFCLGlCQU9DO1FBTkMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7WUFDM0IsR0FBRyxFQUFFLFdBQUksS0FBSyxlQUFLLE9BQU8sQ0FBRTtTQUM3QixDQUFDLENBQUE7Z0JBQ0Ysa0JBQU0sR0FBRyxDQUFDO1FBQ1YsS0FBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFBOztJQUNuQyxDQUFDO0lBQ0QsbUNB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Q0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLE9BQU8sS0FBSSxFQUFFLENBQUUsQ0FBQyxDQUFBO1lBQzFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUFBO1FBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsU0FBZSxvQkFBb0IsQ0FBQyxHQUFHOzs7WUFDckMsV0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUE7OztDQUNwRDtBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBRztJQUM3QixJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtJQUU1QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSTtRQUNGLElBQU0sVUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixRQUFRLEdBQUcsVUFBUSxDQUFDLFFBQVEsQ0FBQTtLQUM3QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsUUFBUSxHQUFHLEdBQUcsQ0FBQTtLQUNmO0lBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzFCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtLQUN4QjtJQUNELE9BQU8sZ0JBQWdCLENBQUE7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNhbGxDb250YWluZXJPcHRpb25zLCBJQ29udGlhbmVyQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb250YWluZXInXG5pbXBvcnQgeyBjb25zdGFudHMsIHV0aWxzLCBoZWxwZXJzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG4vLyBpbXBvcnQgYnJvdGxpUHJvbWlzZSBmcm9tICdicm90bGktZGVjLXdhc20nIC8vIEltcG9ydCB0aGUgZGVmYXVsdCBleHBvcnRcbmltcG9ydCBkZWNvbXByZXNzIGZyb20gJ2Jyb3RsaS9kZWNvbXByZXNzJ1xuXG5pbXBvcnQgR28gZnJvbSAnLi9nb193YW1zX2V4ZWMnXG5pbXBvcnQgeyBpc0J1ZmZlciwgcGFyc2VVUkwsIHNlcmlhbGl6ZVJlcXVlc3RCb2R5IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tICcuL3V0aWxzL3JlcXVlc3QnXG5pbXBvcnQgeyBDT01QT05FTlRfTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogYW55XG4gIGNvbnN0cnVjdG9yKHNjb3BlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgbXNnOiBgWyR7c2NvcGV9XSAke21lc3NhZ2V9YCxcbiAgICB9KVxuICAgIHN1cGVyKG1zZylcbiAgICB0aGlzLmNvZGUgPSBFUlJPUlMuSU5WQUxJRF9QQVJBTVNcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucyBleHRlbmRzIElDYWxsQ29udGFpbmVyT3B0aW9ucyB7XG4gIHN1Y2Nlc3M6IChyZXM6IHsgc3RhdHVzQ29kZTogc3RyaW5nIHwgbnVtYmVyOyBoZWFkZXI6IElDYWxsQ29udGFpbmVyT3B0aW9uc1snaGVhZGVyJ107IGRhdGE6IGFueSB9KSA9PiB2b2lkXG4gIGZhaWw6IChyZXM6IHsgZGF0YTogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9IH0pID0+IHZvaWRcbn1cblxuaW50ZXJmYWNlIElJbml0VGNiQ29udGFpbmVyT3B0aW9ucyB7XG4gIGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmZ1bmN0aW9uIGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIHNjb3BlID0gQ09NUE9ORU5UX05BTUUsIGRlZmF1bHRNZXNzYWdlID0gJ2NhbGwgY29udGFpbmVyIGVycm9yJykge1xuICBjb25zdCBlcnJvciA9IGRhdGEgaW5zdGFuY2VvZiBFcnJvciA/IGRhdGEgOiBuZXcgRXJyb3IoYFske3Njb3BlfV0gJHtkYXRhPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlfWApXG4gIDsoZXJyb3IgYXMgYW55KS5jb2RlID0gZGF0YT8uY29kZSB8fCAnVU5LTk9XTl9FUlJPUidcbiAgcmV0dXJuIGVycm9yXG59XG5cbmNsYXNzIENsb3VkYmFzZUNvbnRhaW5lcnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZ1xuICBwcml2YXRlIHdhc206IFByb21pc2U8V2ViQXNzZW1ibHkuRXhwb3J0cz5cbiAgcHJpdmF0ZSBjb250YWluZXJJbml0UHJvbWlzZTogLyogUHJvbWlzZTxhbnk+Ki8gYW55IHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcud2FzbVVybCAmJiAhdGhpcy5jb25maWcuanNVcmwgJiYgISh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKGAke0NPTVBPTkVOVF9OQU1FfWAsICfnvLrlsJEgcHJpdmF0ZWxpbmsgc2RrIOWcsOWdgCcpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLndhc21VcmwpIHtcbiAgICAgIHRoaXMud2FzbSA9IGdldEV4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLndhc21VcmwsIHtcbiAgICAgICAgdXRpbHM6IHtcbiAgICAgICAgICBpbmZvKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICB9LFxuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdsb2FkIHdhbXMgZXJyb3IsIGZhbGwgYmFjayB0byB1c2UganMnLCBlKVxuICAgICAgICAgIHJldHVybiBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICAgICAgfSBpZiAoKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmspIHtcbiAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuanNVcmwpIHtcbiAgICAgIHRoaXMud2FzbSA9IGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLmpzVXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndhc20gPSBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBpbml0Q29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluay5pbml0Q29udGFpbmVyLFxuICAgICAgICBjYWxsQ29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluay5jYWxsQ29udGFpbmVyLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnY2FsbENvbnRhaW5lcicsXG4gICAgfSxcbiAgICB0aXRsZTogJ+iwg+eUqOWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjYWxsQ29udGFpbmVyKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDln5/lkI0gJiDot6/lvoTmmK/lkKblrZjlnKgnLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWAsXG4gICAgXSxcbiAgfSlcbiAgcHVibGljIGFzeW5jIGNhbGxDb250YWluZXIob3B0aW9uczogSUNhbGxDb250YWluZXJPcHRpb25zLCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0Q29udGFpbmVyKHRoaXMuY29uZmlnKVxuICAgIGNvbnN0IFNDT1BFID0gYCR7Q09NUE9ORU5UX05BTUV9LmNhbGxDb250YWluZXJgXG4gICAgY29uc3QgeyBjYWxsQ29udGFpbmVyIH06IHsgY2FsbENvbnRhaW5lcjogKG9wdGlvbnM6IElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgbWV0aG9kID0gJ0dFVCcsXG4gICAgICBoZWFkZXIgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICB0aW1lb3V0ID0gNjAwMDAsXG4gICAgICBkYXRhVHlwZSA9ICdqc29uJyxcbiAgICAgIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgICAgIC4uLnJlc3RPcHRpb25zXG4gICAgfSA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfVxuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdpbnZhbGlkIHJlcXVlc3QgdXJsJylcbiAgICB9XG5cbiAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2ludmFsaWQgcmVxdWVzdCBtZXRob2QnKVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICBkYXRhOiBzZXJpYWxpemVSZXF1ZXN0Qm9keShoZWFkZXIsIGRhdGEpLFxuICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgZGF0YVR5cGUsXG4gICAgICAgICAgcmVzcG9uc2VUeXBlLFxuICAgICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOmdniBidWZmZXJcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPT0gdW5kZWZpbmVkICYmICFpc0J1ZmZlcihwYXJhbXMuZGF0YSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtcy5kYXRhICE9PSAnc3RyaW5nJyAmJiBtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gT2JqZWN0LmVudHJpZXMocGFyYW1zLmRhdGEgfHwge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAobGlzdCwgW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5kYXRhID0gbGlzdC5qb2luKCcmJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWV0aG9kID09PSAnR0VUJyAmJiB0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZVVSTCh1cmwpXG4gICAgICAgICAgICBpZiAocGFyc2VkVXJsLnNlYXJjaCkge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoICs9IHBhcmFtcy5kYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoID0gYD8ke3BhcmFtcy5kYXRhfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy51cmwgPSBwYXJzZWRVcmwuaHJlZlxuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YVxuICAgICAgICAgICYmIChpc0J1ZmZlcihwYXJhbXMuZGF0YSkgfHwgdHlwZW9mIHBhcmFtcy5kYXRhID09PSAnc3RyaW5nJylcbiAgICAgICAgICAmJiAoZGF0YSBhcyBhbnkpPy5sZW5ndGggPiAxMDAwICogMTAyNCAqIDEwXG4gICAgICAgICkge1xuICAgICAgICAgIHJlamVjdChuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnYm9keSB0b28gbGFyZ2UnKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxDb250YWluZXIoe1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICBzdWNjZXNzOiByZXNvbHZlLFxuICAgICAgICAgIGZhaWw6IChyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzIHx8IHt9XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IoZGF0YSwgU0NPUEUsICdjYWxsIGNvbnRhaW5lciBlcnJvcicpKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0Q29udGFpbmVyKGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPikge1xuICAgIGNvbnN0IHsgaW5pdENvbnRhaW5lciB9OiB7IGluaXRDb250YWluZXI6IChvcHRpb25zOiBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMpID0+IHZvaWQgfSA9IChhd2FpdCB0aGlzLndhc20pIGFzIGFueVxuICAgIGlmICghdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSkge1xuICAgICAgdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaW5pdENvbnRhaW5lcih7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nKHJlcy5zdGF0dXNDb2RlKSAhPT0gJzIwMCcpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhaWwocmVzKSB7XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IocmVzLmRhdGEsIGAke0NPTVBPTkVOVF9OQU1FfS5pbml0Q29udGFpbmVyYCwgJ2luaXQgY29udGFpbmVyIGZhaWwnKSlcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckluaXRQcm9taXMgPSBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5pdFByb21pc2VcbiAgfVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBuYW1lc3BhY2U6ICdjb250YWluZXInLFxuICBlbnRpdHkoY29uZmlnOiBJQ29udGlhbmVyQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVySW5zdGFuY2UpIHtcbiAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9PUEVSQVRJT04sICdldmVyeSBjbG91ZGJhc2UgaW5zdGFuY2Ugc2hvdWxkIGhhcyBvbmx5IG9uZSBjb250YWluZXIgb2JqZWN0JylcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2xvdWRiYXNlQ29udGFpbmVycyhjb25maWcpXG4gICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IGluc3RhbmNlXG4gICAgdGhpcy5jYWxsQ29udGFpbmVyID0gaW5zdGFuY2UuY2FsbENvbnRhaW5lci5iaW5kKGluc3RhbmNlKVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgfSxcbn1cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb250YWluZXJzKGFwcDogUGljazxJQ2xvdWRiYXNlLCAncmVnaXN0ZXJDb21wb25lbnQnPikge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHBvcnRGdW5jdGlvbih1cmwsIG1vZHVsZSwgbW9kZSA9ICdnbycpIHtcbiAgYXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkID0gZmFsc2UpIHtcbiAgICBpZiAoYnJvdGxpQ29tcHJlc3NlZCB8fCAhV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IChhd2FpdCByZXNwKS5hcnJheUJ1ZmZlcigpXG4gICAgICBjb25zdCBidWZmZXIgPSBicm90bGlDb21wcmVzc2VkID8gZGVjb21wcmVzcyhuZXcgSW50OEFycmF5KHNvdXJjZSkpIDogc291cmNlXG4gICAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYnVmZmVyLCBpbXBvcnRPYmplY3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdClcbiAgfVxuXG4gIGxldCBpbXBvcnRPYmplY3QgPSB7XG4gICAgZW52OiB7XG4gICAgICBtZW1vcnlCYXNlOiAwLFxuICAgICAgdGFibGVCYXNlOiAwLFxuICAgICAgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgICAgICAgaW5pdGlhbDogMjU2LFxuICAgICAgfSksXG4gICAgICAvLyB0YWJsZTogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtcbiAgICAgIC8vICAgaW5pdGlhbDogMixcbiAgICAgIC8vICAgZWxlbWVudDogJ2FueWZ1bmMnLFxuICAgICAgLy8gfSksXG4gICAgfSxcbiAgICAuLi5tb2R1bGUsXG4gIH1cbiAgbGV0IGdvXG4gIGNvbnN0IGJyb3RsaUNvbXByZXNzZWQgPSBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgZ28gPSBuZXcgR28oKVxuICAgIGdvLl9pbml0ZWRNb2R1bGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgaW1wb3J0T2JqZWN0ID0ge1xuICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLmdvLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgIGV4cG9ydE1vZHVsZShtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gZ28uX2luaXRlZE1vZHVsZVJlc29sdmUobW9kdWxlKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVzbHQgPSBhd2FpdCBpbnN0YW50aWF0ZVN0cmVhbWluZyhmZXRjaCh1cmwpLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSksXG4gICAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICB9LCA1MDApLCksXG4gICAgXSlcblxuICAgIHJldHVybiB7XG4gICAgICBjYWxsQ29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2FsbENvbnRhaW5lcixcbiAgICAgIGluaXRDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5pbml0Q29udGFpbmVyLFxuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChtb2RlID09PSAnZ28nKSB7XG4gIC8vICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSlcbiAgLy8gICBjb25zdCBtb2R1bGUgPSBhd2FpdCBnby5faW5pdGVkTW9kdWxlUHJvbWlzZVxuICAvLyAgIHJldHVybiBtb2R1bGVcbiAgLy8gfVxuXG4gIHJldHVybiByZXVzbHQuaW5zdGFuY2UuZXhwb3J0c1xufVxuXG5mdW5jdGlvbiBsb2FkVW1kTW9kdWxlKGpzVXJsOiBzdHJpbmcsIHVtZE1vZHVsZU5hbWU6IHN0cmluZywgdGFyZ2V0RG9jOiBEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB3aW4gPSB0YXJnZXREb2MuZGVmYXVsdFZpZXdcblxuICAgIGNvbnN0IHNjcmlwdCA9IHRhcmdldERvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIGpzVXJsKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdW1kTW9kdWxlTmFtZSlcbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2luLCB1bWRNb2R1bGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh3aW5bdW1kTW9kdWxlTmFtZSBhcyBhbnldKVxuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEZhaWwgdG8gbG9hZCBVTUQgbW9kdWxlICR7dW1kTW9kdWxlTmFtZX0gZnJvbSBbJHtqc1VybH1dLmApXG4gICAgICByZXR1cm4gcmVqZWN0KGVycm9yKVxuICAgIH0pXG5cbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYG1haW4gYnVuZGxlIFske3VtZE1vZHVsZU5hbWV9XSBsb2FkIGZhaWxlZCBmcm9tIFske2pzVXJsfV06ICR7ZT8ubWVzc2FnZSB8fCAnJ31gKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgdGFyZ2V0RG9jLmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkSlNFeHBvcnRGdW5jdGlvbih1cmwpIHtcbiAgcmV0dXJuIGxvYWRVbWRNb2R1bGUodXJsLCAnY2xvdWRiYXNlX3ByaXZhdGVfbGluaycpXG59XG5cbmZ1bmN0aW9uIGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpIHtcbiAgbGV0IGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZVxuXG4gIGxldCBwYXRobmFtZSA9ICcnXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBwYXJzZVVSTCh1cmwpXG4gICAgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcGF0aG5hbWUgPSB1cmxcbiAgfVxuXG4gIGlmICgvXFwuYnIkLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgIGJyb3RsaUNvbXByZXNzZWQgPSB0cnVlXG4gIH1cbiAgcmV0dXJuIGJyb3RsaUNvbXByZXNzZWRcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export declare function parseURL(_url: string): HTMLAnchorElement | URL;
2
+ export declare function isBuffer(buf: any): boolean;
3
+ export declare function serializeRequestBody<T>(headers: any, data: T): T | string;
@@ -0,0 +1,59 @@
1
+ import { constants } from '@cloudbase/utilities';
2
+ import { COMPONENT_NAME } from '../constants';
3
+ var ERRORS = constants.ERRORS;
4
+ export function parseURL(_url) {
5
+ if (document) {
6
+ var a = document.createElement('a');
7
+ a.href = _url;
8
+ return a;
9
+ }
10
+ return new URL(new Request(_url).url);
11
+ }
12
+ export function isBuffer(buf) {
13
+ return buf instanceof ArrayBuffer || ArrayBuffer.isView(buf);
14
+ }
15
+ export function serializeRequestBody(headers, data) {
16
+ var res = data;
17
+ var contentType_key = 'Content-Type';
18
+ if (typeof data === 'object' && !isBuffer(data)) {
19
+ if (!headers[contentType_key] && !headers['content-type']) {
20
+ headers[contentType_key] = 'application/json';
21
+ }
22
+ var contentType = headers[contentType_key] || headers['content-type'];
23
+ switch (contentType) {
24
+ case 'application/json': {
25
+ try {
26
+ res = JSON.stringify(data);
27
+ }
28
+ catch (e) {
29
+ throw new Error(JSON.stringify({
30
+ code: ERRORS.INVALID_PARAMS,
31
+ msg: "[".concat(COMPONENT_NAME, ".callContainer] invalid data with content-type: application/json, ").concat(e.message),
32
+ }));
33
+ }
34
+ break;
35
+ }
36
+ case 'application/x-www-form-urlencoded': {
37
+ try {
38
+ var list = Object.entries(data || {}).reduce(function (list, _a) {
39
+ var key = _a[0], value = _a[1];
40
+ list.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)));
41
+ return list;
42
+ }, []);
43
+ if (list.length) {
44
+ res = list.join('&');
45
+ }
46
+ }
47
+ catch (e) {
48
+ throw new Error(JSON.stringify({
49
+ code: ERRORS.INVALID_PARAMS,
50
+ msg: "[".concat(COMPONENT_NAME, ".callContainer] invalid data with content-type: application/x-www-form-urlencoded,").concat(e.message),
51
+ }));
52
+ }
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ return res;
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckMsSUFBQSxNQUFNLEdBQUssU0FBUyxPQUFkLENBQWM7QUFFNUIsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFZO0lBQ25DLElBQUksUUFBUSxFQUFFO1FBQ1osSUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNiLE9BQU8sQ0FBQyxDQUFBO0tBQ1Q7SUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVE7SUFDL0IsT0FBTyxHQUFHLFlBQVksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBSSxPQUFPLEVBQUUsSUFBTztJQUN0RCxJQUFJLEdBQUcsR0FBZSxJQUFJLENBQUE7SUFDMUIsSUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFBO0lBQ3RDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDekQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGtCQUFrQixDQUFBO1NBQzlDO1FBRUQsSUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUV2RSxRQUFRLFdBQVcsRUFBRTtZQUNuQixLQUFLLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3ZCLElBQUk7b0JBQ0YsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7aUJBQzNCO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjO3dCQUMzQixHQUFHLEVBQUUsV0FBSSxjQUFjLCtFQUFxRSxDQUFDLENBQUMsT0FBTyxDQUFFO3FCQUN4RyxDQUFDLENBQUUsQ0FBQTtpQkFDTDtnQkFDRCxNQUFLO2FBQ047WUFDRCxLQUFLLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUk7b0JBQ0YsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsSUFBSSxFQUFFLEVBQThCOzRCQUE3QixHQUFHLFFBQUEsRUFBRSxLQUFLLFFBQUE7d0JBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsY0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBRSxDQUFDLENBQUE7d0JBQ3BFLE9BQU8sSUFBSSxDQUFBO29CQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtvQkFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2YsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7cUJBQ3JCO2lCQUNGO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjO3dCQUMzQixHQUFHLEVBQUUsV0FBSSxjQUFjLCtGQUFxRixDQUFDLENBQUMsT0FBTyxDQUFFO3FCQUN4SCxDQUFDLENBQUUsQ0FBQTtpQkFDTDtnQkFDRCxNQUFLO2FBQ047U0FDRjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5pbXBvcnQgeyBDT01QT05FTlRfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cydcbmNvbnN0IHsgRVJST1JTIH0gPSBjb25zdGFudHNcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVVJMKF91cmw6IHN0cmluZykge1xuICBpZiAoZG9jdW1lbnQpIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgYS5ocmVmID0gX3VybFxuICAgIHJldHVybiBhXG4gIH1cbiAgcmV0dXJuIG5ldyBVUkwobmV3IFJlcXVlc3QoX3VybCkudXJsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIoYnVmOiBhbnkpIHtcbiAgcmV0dXJuIGJ1ZiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IEFycmF5QnVmZmVyLmlzVmlldyhidWYpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZXF1ZXN0Qm9keTxUPihoZWFkZXJzLCBkYXRhOiBUKTogVCB8IHN0cmluZyB7XG4gIGxldCByZXM6IFQgfCBzdHJpbmcgPSBkYXRhXG4gIGNvbnN0IGNvbnRlbnRUeXBlX2tleSA9ICdDb250ZW50LVR5cGUnXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgIWlzQnVmZmVyKGRhdGEpKSB7XG4gICAgaWYgKCFoZWFkZXJzW2NvbnRlbnRUeXBlX2tleV0gJiYgIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzW2NvbnRlbnRUeXBlX2tleV0gPSAnYXBwbGljYXRpb24vanNvbidcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnNbY29udGVudFR5cGVfa2V5XSB8fCBoZWFkZXJzWydjb250ZW50LXR5cGUnXVxuXG4gICAgc3dpdGNoIChjb250ZW50VHlwZSkge1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXMgPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyXSBpbnZhbGlkIGRhdGEgd2l0aCBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24sICR7ZS5tZXNzYWdlfWAsXG4gICAgICAgICAgfSksKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbGlzdCA9IE9iamVjdC5lbnRyaWVzKGRhdGEgfHwge30pLnJlZHVjZSgobGlzdCwgW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICBsaXN0LnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX1gKVxuICAgICAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcyA9IGxpc3Quam9pbignJicpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyXSBpbnZhbGlkIGRhdGEgd2l0aCBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCwke2UubWVzc2FnZX1gLFxuICAgICAgICAgIH0pLClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG4iXX0=