@cloudbase/container 2.5.29-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -0
- package/.eslintrc.js +15 -0
- package/LICENSE +202 -0
- package/dist/cjs/go_wams_exec.d.ts +2 -0
- package/dist/cjs/go_wams_exec.js +538 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +383 -0
- package/dist/esm/go_wams_exec.d.ts +2 -0
- package/dist/esm/go_wams_exec.js +536 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +376 -0
- package/package.json +38 -0
- package/src/go_wams_exec.ts +590 -0
- package/src/index.ts +330 -0
- package/tsconfig.esm.json +16 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
28
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
29
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
30
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
31
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
|
+
};
|
|
33
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
34
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
35
|
+
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
+
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;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
73
|
+
var t = {};
|
|
74
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
75
|
+
t[p] = s[p];
|
|
76
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
77
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
78
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
79
|
+
t[p[i]] = s[p[i]];
|
|
80
|
+
}
|
|
81
|
+
return t;
|
|
82
|
+
};
|
|
83
|
+
import { constants, utils, helpers } from '@cloudbase/utilities';
|
|
84
|
+
import decompress from 'brotli/decompress';
|
|
85
|
+
import Go from './go_wams_exec';
|
|
86
|
+
var getSdkName = constants.getSdkName, ERRORS = constants.ERRORS, COMMUNITY_SITE_URL = constants.COMMUNITY_SITE_URL;
|
|
87
|
+
var execCallback = utils.execCallback, printWarn = utils.printWarn;
|
|
88
|
+
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
|
+
var InvalieParamsError = (function (_super) {
|
|
144
|
+
__extends(InvalieParamsError, _super);
|
|
145
|
+
function InvalieParamsError(scope, message) {
|
|
146
|
+
var msg = JSON.stringify({
|
|
147
|
+
code: ERRORS.INVALID_PARAMS,
|
|
148
|
+
msg: "[".concat(scope, "] ").concat(message),
|
|
149
|
+
});
|
|
150
|
+
return _super.call(this, msg) || this;
|
|
151
|
+
}
|
|
152
|
+
return InvalieParamsError;
|
|
153
|
+
}(Error));
|
|
154
|
+
var CloudbaseContainers = (function () {
|
|
155
|
+
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
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
this.wasm = getExportFunction(this.config.wasmUrl, {
|
|
164
|
+
utils: {
|
|
165
|
+
info: function (e) {
|
|
166
|
+
console.log(e);
|
|
167
|
+
},
|
|
168
|
+
request: request,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
CloudbaseContainers.prototype.callContainer = function (options, callback) {
|
|
173
|
+
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) {
|
|
177
|
+
case 0: return [4, this.initContainer(this.config)];
|
|
178
|
+
case 1:
|
|
179
|
+
_f.sent();
|
|
180
|
+
return [4, this.wasm];
|
|
181
|
+
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"]);
|
|
184
|
+
if (!url) {
|
|
185
|
+
throw new InvalieParamsError("".concat(COMPONENT_NAME, ".callContainer"), 'invalid request url');
|
|
186
|
+
}
|
|
187
|
+
_f.label = 3;
|
|
188
|
+
case 3:
|
|
189
|
+
_f.trys.push([3, 5, , 6]);
|
|
190
|
+
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);
|
|
192
|
+
callContainer(__assign(__assign({}, params), { success: resolve, fail: function (res) {
|
|
193
|
+
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);
|
|
197
|
+
} }));
|
|
198
|
+
})];
|
|
199
|
+
case 4:
|
|
200
|
+
res = _f.sent();
|
|
201
|
+
return [2, execCallback(callback, null, res)];
|
|
202
|
+
case 5:
|
|
203
|
+
e_1 = _f.sent();
|
|
204
|
+
execCallback(callback, e_1);
|
|
205
|
+
return [3, 6];
|
|
206
|
+
case 6: return [2];
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
CloudbaseContainers.prototype.initContainer = function (config) {
|
|
212
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
213
|
+
var initContainer;
|
|
214
|
+
return __generator(this, function (_a) {
|
|
215
|
+
switch (_a.label) {
|
|
216
|
+
case 0: return [4, this.wasm];
|
|
217
|
+
case 1:
|
|
218
|
+
initContainer = (_a.sent()).initContainer;
|
|
219
|
+
if (!this.containerInitPromise) {
|
|
220
|
+
this.containerInitPromise = new Promise(function (resolve, reject) {
|
|
221
|
+
initContainer({
|
|
222
|
+
config: config,
|
|
223
|
+
success: function (res) {
|
|
224
|
+
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
|
+
})));
|
|
229
|
+
}
|
|
230
|
+
resolve(res);
|
|
231
|
+
},
|
|
232
|
+
fail: function (res) {
|
|
233
|
+
reject(new Error(JSON.stringify({
|
|
234
|
+
code: 'INIT_ERROR',
|
|
235
|
+
msg: "[".concat(COMPONENT_NAME, "] ").concat(JSON.stringify(res.data)),
|
|
236
|
+
})));
|
|
237
|
+
this._containerInitPromis = null;
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return [2, this.containerInitPromise];
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
__decorate([
|
|
248
|
+
catchErrorsDecorator({
|
|
249
|
+
customInfo: {
|
|
250
|
+
className: 'Cloudbase',
|
|
251
|
+
methodName: 'callContainer',
|
|
252
|
+
},
|
|
253
|
+
title: '调用失败',
|
|
254
|
+
messages: [
|
|
255
|
+
'请确认以下各项:',
|
|
256
|
+
' 1 - 调用 callContainer() 的语法或参数是否正确',
|
|
257
|
+
' 2 - 域名 & 路径是否存在',
|
|
258
|
+
"\u5982\u679C\u95EE\u9898\u4F9D\u7136\u5B58\u5728\uFF0C\u5EFA\u8BAE\u5230\u5B98\u65B9\u95EE\u7B54\u793E\u533A\u63D0\u95EE\u6216\u5BFB\u627E\u5E2E\u52A9\uFF1A".concat(COMMUNITY_SITE_URL),
|
|
259
|
+
],
|
|
260
|
+
}),
|
|
261
|
+
__metadata("design:type", Function),
|
|
262
|
+
__metadata("design:paramtypes", [Object, Function]),
|
|
263
|
+
__metadata("design:returntype", Promise)
|
|
264
|
+
], CloudbaseContainers.prototype, "callContainer", null);
|
|
265
|
+
return CloudbaseContainers;
|
|
266
|
+
}());
|
|
267
|
+
var component = {
|
|
268
|
+
name: COMPONENT_NAME,
|
|
269
|
+
namespace: 'container',
|
|
270
|
+
entity: function (config) {
|
|
271
|
+
if (this.containerInstance) {
|
|
272
|
+
printWarn(ERRORS.INVALID_OPERATION, 'every cloudbase instance should has only one container object');
|
|
273
|
+
return this.containerInstance;
|
|
274
|
+
}
|
|
275
|
+
var instance = new CloudbaseContainers(config);
|
|
276
|
+
this.containerInstance = instance;
|
|
277
|
+
this.callContainer = instance.callContainer.bind(instance);
|
|
278
|
+
return this.containerInstance;
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
try {
|
|
282
|
+
cloudbase.registerComponent(component);
|
|
283
|
+
}
|
|
284
|
+
catch (e) { }
|
|
285
|
+
export function registerContainers(app) {
|
|
286
|
+
try {
|
|
287
|
+
app.registerComponent(component);
|
|
288
|
+
}
|
|
289
|
+
catch (e) {
|
|
290
|
+
console.warn(e);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function getExportFunction(url, module, mode) {
|
|
294
|
+
if (mode === void 0) { mode = 'go'; }
|
|
295
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
296
|
+
function instantiateStreaming(resp, importObject, brotliCompressed) {
|
|
297
|
+
if (brotliCompressed === void 0) { brotliCompressed = false; }
|
|
298
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
299
|
+
var source, buffer;
|
|
300
|
+
return __generator(this, function (_a) {
|
|
301
|
+
switch (_a.label) {
|
|
302
|
+
case 0:
|
|
303
|
+
if (!(brotliCompressed || !WebAssembly.instantiateStreaming)) return [3, 3];
|
|
304
|
+
return [4, resp];
|
|
305
|
+
case 1: return [4, (_a.sent()).arrayBuffer()];
|
|
306
|
+
case 2:
|
|
307
|
+
source = _a.sent();
|
|
308
|
+
buffer = brotliCompressed ? decompress(new Int8Array(source)) : source;
|
|
309
|
+
return [2, WebAssembly.instantiate(buffer, importObject)];
|
|
310
|
+
case 3: return [2, WebAssembly.instantiateStreaming(resp, importObject)];
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
var importObject, go, brotliCompressed, reuslt;
|
|
316
|
+
return __generator(this, function (_a) {
|
|
317
|
+
switch (_a.label) {
|
|
318
|
+
case 0:
|
|
319
|
+
importObject = __assign({ env: {
|
|
320
|
+
memoryBase: 0,
|
|
321
|
+
tableBase: 0,
|
|
322
|
+
memory: new WebAssembly.Memory({
|
|
323
|
+
initial: 256,
|
|
324
|
+
}),
|
|
325
|
+
} }, module);
|
|
326
|
+
brotliCompressed = isBrotliCompressed(url);
|
|
327
|
+
if (mode === 'go') {
|
|
328
|
+
go = new Go();
|
|
329
|
+
go._initedModulePromise = new Promise(function (resolve) {
|
|
330
|
+
go._initedModuleResolve = resolve;
|
|
331
|
+
});
|
|
332
|
+
importObject = __assign(__assign({}, go.importObject), { env: __assign(__assign({}, go.importObject.env), { exportModule: function (module) {
|
|
333
|
+
return go._initedModuleResolve(module);
|
|
334
|
+
} }) });
|
|
335
|
+
}
|
|
336
|
+
return [4, instantiateStreaming(fetch(url), importObject, brotliCompressed)];
|
|
337
|
+
case 1:
|
|
338
|
+
reuslt = _a.sent();
|
|
339
|
+
if (!(mode === 'go')) return [3, 3];
|
|
340
|
+
return [4, Promise.race([
|
|
341
|
+
go.run(reuslt.instance),
|
|
342
|
+
new Promise(function (resolve) { return setTimeout(function () {
|
|
343
|
+
resolve(null);
|
|
344
|
+
}, 500); }),
|
|
345
|
+
])];
|
|
346
|
+
case 2:
|
|
347
|
+
_a.sent();
|
|
348
|
+
return [2, { callContainer: window.callContainer, initContainer: window.initContainer }];
|
|
349
|
+
case 3: return [2, reuslt.instance.exports];
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
function isBrotliCompressed(url) {
|
|
355
|
+
var brotliCompressed = false;
|
|
356
|
+
var pathname = '';
|
|
357
|
+
try {
|
|
358
|
+
var a = document.createElement('a');
|
|
359
|
+
a.href = url;
|
|
360
|
+
pathname = a.pathname;
|
|
361
|
+
}
|
|
362
|
+
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
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (/\.br$/.test(pathname)) {
|
|
372
|
+
brotliCompressed = true;
|
|
373
|
+
}
|
|
374
|
+
return brotliCompressed;
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSXZCLElBQUEsVUFBVSxHQUFpQyxTQUFTLFdBQTFDLEVBQUUsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFjO0FBQ3BELElBQUEsWUFBWSxHQUFnQixLQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLEtBQUssVUFBVixDQUFVO0FBQ2pDLElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFZO0FBRXhDLElBQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQTtBQUtsQyxTQUFlLE9BQU8sQ0FBQyxFQWdCdEI7UUFmQyxHQUFHLFNBQUEsRUFDSCxjQUFjLEVBQWQsTUFBTSxtQkFBRyxLQUFLLEtBQUEsRUFDZCxjQUFXLEVBQVgsTUFBTSxtQkFBRyxFQUFFLEtBQUEsRUFDWCxJQUFJLFVBQUEsRUFDSixlQUFlLEVBQWYsT0FBTyxtQkFBRyxLQUFLLEtBQUEsRUFDZixnQkFBaUIsRUFBakIsUUFBUSxtQkFBRyxNQUFNLEtBQUEsRUFDakIsb0JBQXFCLEVBQXJCLFlBQVksbUJBQUcsTUFBTSxLQUFBOzs7O1lBVWYsT0FBTyxnQkFBUSxNQUFNLENBQUUsQ0FBQTtZQUU3QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxD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QixDQUFBO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDYWxsQ29udGFpbmVyT3B0aW9ucywgSUNvbnRpYW5lckNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29udGFpbmVyJ1xuaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuLy8gaW1wb3J0IGJyb3RsaVByb21pc2UgZnJvbSAnYnJvdGxpLWRlYy13YXNtJyAvLyBJbXBvcnQgdGhlIGRlZmF1bHQgZXhwb3J0XG5pbXBvcnQgZGVjb21wcmVzcyBmcm9tICdicm90bGkvZGVjb21wcmVzcydcblxuaW1wb3J0IEdvIGZyb20gJy4vZ29fd2Ftc19leGVjJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCB7IGdldFNka05hbWUsIEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbmNvbnN0IENPTVBPTkVOVF9OQU1FID0gJ2NvbnRhaW5lcidcblxuLyoqXG4gKiDlsIHoo4Xlr7npvZAgd3gucmVxdWVzdFxuICovXG5hc3luYyBmdW5jdGlvbiByZXF1ZXN0KHtcbiAgdXJsLFxuICBtZXRob2QgPSAnR0VUJyxcbiAgaGVhZGVyID0ge30sXG4gIGRhdGEsXG4gIHRpbWVvdXQgPSA2MDAwMCxcbiAgZGF0YVR5cGUgPSAnanNvbicsXG4gIHJlc3BvbnNlVHlwZSA9ICd0ZXh0Jyxcbn06IHtcbiAgdXJsOiBzdHJpbmdcbiAgZGF0YT86IHN0cmluZyB8IG9iamVjdCB8IEFycmF5QnVmZmVyXG4gIGhlYWRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgdGltZW91dD86IG51bWJlclxuICBtZXRob2Q/OiBzdHJpbmdcbiAgZGF0YVR5cGU/OiAnanNvbicgfCBzdHJpbmdcbiAgcmVzcG9uc2VUeXBlPzogJ3RleHQnIHwgJ2FycmF5QnVmZmVyJ1xufSkge1xuICBjb25zdCBoZWFkZXJzID0geyAuLi5oZWFkZXIgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgIShkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSkge1xuICAgIGlmICghaGVhZGVyc1snQ29udGVudC1UeXBlJ10gJiYgIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcl0gaW52YWxpZCBkYXRhIHdpdGggY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uYCxcbiAgICAgIH0pLClcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IHNpZ25hbCwgYWJvcnQgfSA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcign6K+35rGC6LaF5pe2JylcbiAgICAgICAgOyhlcnJvciBhcyBhbnkpLmNvZGUgPSAnU0VSVkVSX1RJTUVPVVQnXG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgYWJvcnQoKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9KSxcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgc2lnbmFsLFxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAnYXJyYXlCdWZmZXInKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpXG4gICAgICB9XG4gICAgICBpZiAoZGF0YVR5cGUgPT09ICdqc29uJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWyR7Z2V0U2RrTmFtZSgpfV1bJHtFUlJPUlMuSU5WQUxJRF9QQVJBTVN9XVske0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyXSByZXNwb25zZSBkYXRhIG11c3QgYmUganNvbmAsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpXG4gICAgfSksXG4gIF0pXG59XG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBtc2cgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICBtc2c6IGBbJHtzY29wZX1dICR7bWVzc2FnZX1gLFxuICAgIH0pXG4gICAgc3VwZXIobXNnKVxuICB9XG59XG5cbmludGVyZmFjZSBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBJQ2FsbENvbnRhaW5lck9wdGlvbnMge1xuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmludGVyZmFjZSBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMge1xuICBjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmNsYXNzIENsb3VkYmFzZUNvbnRhaW5lcnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZ1xuICBwcml2YXRlIHdhc206IFByb21pc2U8V2ViQXNzZW1ibHkuRXhwb3J0cz5cbiAgcHJpdmF0ZSBjb250YWluZXJJbml0UHJvbWlzZTogLyogUHJvbWlzZTxhbnk+Ki8gYW55IHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnXG4gICAgaWYgKCF0aGlzLmNvbmZpZy53YXNtVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfV0g57y65bCRIHdhc21VcmxgLFxuICAgICAgfSksKVxuICAgIH1cbiAgICB0aGlzLndhc20gPSBnZXRFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy53YXNtVXJsLCB7XG4gICAgICB1dGlsczoge1xuICAgICAgICBpbmZvKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2NhbGxDb250YWluZXInLFxuICAgIH0sXG4gICAgdGl0bGU6ICfosIPnlKjlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggY2FsbENvbnRhaW5lcigpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5Z+f5ZCNICYg6Lev5b6E5piv5ZCm5a2Y5ZyoJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBjYWxsQ29udGFpbmVyKG9wdGlvbnM6IElDYWxsQ29udGFpbmVyT3B0aW9ucywgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGF3YWl0IHRoaXMuaW5pdENvbnRhaW5lcih0aGlzLmNvbmZpZylcbiAgICBjb25zdCB7IGNhbGxDb250YWluZXIgfTogeyBjYWxsQ29udGFpbmVyOiAob3B0aW9uczogSUNhbGxUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcblxuICAgIGNvbnN0IHtcbiAgICAgIHVybCxcbiAgICAgIG1ldGhvZCA9ICdHRVQnLFxuICAgICAgaGVhZGVyID0ge30sXG4gICAgICBkYXRhLFxuICAgICAgdGltZW91dCA9IDYwMDAwLFxuICAgICAgZGF0YVR5cGUgPSAnanNvbicsXG4gICAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSBvcHRpb25zXG5cbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcmAsICdpbnZhbGlkIHJlcXVlc3QgdXJsJylcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHVybCwgbWV0aG9kLCBoZWFkZXIsIGRhdGEsIHRpbWVvdXQsIGRhdGFUeXBlLCByZXNwb25zZVR5cGUsIC4uLnJlc3RPcHRpb25zIH1cblxuICAgICAgICBjYWxsQ29udGFpbmVyKHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcbiAgICAgICAgICBmYWlsOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlcyB8fCB7fVxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoZGF0YT8ubWVzc2FnZSB8fCAnY2FsbCBjb250YWluZXIgZXJyb3InKVxuICAgICAgICAgICAgOyhlcnJvciBhcyBhbnkpLmNvZGUgPSBkYXRhPy5jb2RlIHx8ICdVTktOT1dOX0VSUk9SJ1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0Q29udGFpbmVyKGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCc+KSB7XG4gICAgY29uc3QgeyBpbml0Q29udGFpbmVyIH06IHsgaW5pdENvbnRhaW5lcjogKG9wdGlvbnM6IElJbml0VGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpbml0Q29udGFpbmVyKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmcocmVzLnN0YXR1c0NvZGUpICE9PSAnMjAwJykge1xuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnSU5JVF9FUlJPUicsXG4gICAgICAgICAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9XSAke3Jlcy5zdGF0dXNDb2RlfSAke0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhKX1gLFxuICAgICAgICAgICAgICB9KSwpLClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmFpbChyZXMpIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBjb2RlOiAnSU5JVF9FUlJPUicsXG4gICAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfV0gJHtKU09OLnN0cmluZ2lmeShyZXMuZGF0YSl9YCxcbiAgICAgICAgICAgIH0pLCksKVxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVySW5pdFByb21pcyA9IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbml0UHJvbWlzZVxuICB9XG59XG5cbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIG5hbWVzcGFjZTogJ2NvbnRhaW5lcicsXG4gIGVudGl0eShjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSkge1xuICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX09QRVJBVElPTiwgJ2V2ZXJ5IGNsb3VkYmFzZSBpbnN0YW5jZSBzaG91bGQgaGFzIG9ubHkgb25lIGNvbnRhaW5lciBvYmplY3QnKVxuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBDbG91ZGJhc2VDb250YWluZXJzKGNvbmZpZylcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlID0gaW5zdGFuY2VcbiAgICB0aGlzLmNhbGxDb250YWluZXIgPSBpbnN0YW5jZS5jYWxsQ29udGFpbmVyLmJpbmQoaW5zdGFuY2UpXG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICB9LFxufVxudHJ5IHtcbiAgY2xvdWRiYXNlLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbn0gY2F0Y2ggKGUpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRhaW5lcnMoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUud2FybihlKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEV4cG9ydEZ1bmN0aW9uKHVybCwgbW9kdWxlLCBtb2RlID0gJ2dvJykge1xuICBhc3luYyBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZSkge1xuICAgIGlmIChicm90bGlDb21wcmVzc2VkIHx8ICFXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZykge1xuICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgKGF3YWl0IHJlc3ApLmFycmF5QnVmZmVyKClcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGJyb3RsaUNvbXByZXNzZWQgPyBkZWNvbXByZXNzKG5ldyBJbnQ4QXJyYXkoc291cmNlKSkgOiBzb3VyY2VcbiAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShidWZmZXIsIGltcG9ydE9iamVjdClcbiAgICB9XG5cbiAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0KVxuICB9XG5cbiAgbGV0IGltcG9ydE9iamVjdCA9IHtcbiAgICBlbnY6IHtcbiAgICAgIG1lbW9yeUJhc2U6IDAsXG4gICAgICB0YWJsZUJhc2U6IDAsXG4gICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICAgICAgICBpbml0aWFsOiAyNTYsXG4gICAgICB9KSxcbiAgICAgIC8vIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe1xuICAgICAgLy8gICBpbml0aWFsOiAyLFxuICAgICAgLy8gICBlbGVtZW50OiAnYW55ZnVuYycsXG4gICAgICAvLyB9KSxcbiAgICB9LFxuICAgIC4uLm1vZHVsZSxcbiAgfVxuICBsZXQgZ29cbiAgY29uc3QgYnJvdGxpQ29tcHJlc3NlZCA9IGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBnbyA9IG5ldyBHbygpXG4gICAgZ28uX2luaXRlZE1vZHVsZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZ28uX2luaXRlZE1vZHVsZVJlc29sdmUgPSByZXNvbHZlXG4gICAgfSlcbiAgICBpbXBvcnRPYmplY3QgPSB7XG4gICAgICAuLi5nby5pbXBvcnRPYmplY3QsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgICAgZXhwb3J0TW9kdWxlKG1vZHVsZSkge1xuICAgICAgICAgIHJldHVybiBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZShtb2R1bGUpXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldXNsdCA9IGF3YWl0IGluc3RhbnRpYXRlU3RyZWFtaW5nKGZldGNoKHVybCksIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBnby5ydW4ocmV1c2x0Lmluc3RhbmNlKSxcbiAgICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgIH0sIDUwMCksKSxcbiAgICBdKVxuXG4gICAgcmV0dXJuIHsgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNhbGxDb250YWluZXIsIGluaXRDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5pbml0Q29udGFpbmVyIH1cbiAgfVxuXG4gIC8vIGlmIChtb2RlID09PSAnZ28nKSB7XG4gIC8vICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSlcbiAgLy8gICBjb25zdCBtb2R1bGUgPSBhd2FpdCBnby5faW5pdGVkTW9kdWxlUHJvbWlzZVxuICAvLyAgIHJldHVybiBtb2R1bGVcbiAgLy8gfVxuXG4gIHJldHVybiByZXVzbHQuaW5zdGFuY2UuZXhwb3J0c1xufVxuXG5mdW5jdGlvbiBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKSB7XG4gIGxldCBicm90bGlDb21wcmVzc2VkID0gZmFsc2VcblxuICBsZXQgcGF0aG5hbWUgPSAnJ1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICBhLmhyZWYgPSB1cmxcbiAgICBwYXRobmFtZSA9IGEucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBuZXcgVVJMKHVybClcbiAgICAgIHBhdGhuYW1lID0gcmVzPy5wYXRobmFtZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHBhdGhuYW1lID0gdXJsXG4gICAgfVxuICB9XG5cbiAgaWYgKC9cXC5iciQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgYnJvdGxpQ29tcHJlc3NlZCA9IHRydWVcbiAgfVxuICByZXR1cm4gYnJvdGxpQ29tcHJlc3NlZFxufVxuIl19
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cloudbase/container",
|
|
3
|
+
"version": "2.5.29-beta.0",
|
|
4
|
+
"description": "cloudbase javascript sdk functions componets",
|
|
5
|
+
"main": "dist/cjs/index.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"tsc": "rm -rf dist/ && tsc -p tsconfig.esm.json && tsc -p tsconfig.json",
|
|
9
|
+
"lint": "eslint --fix \"./src/**/*.ts\"",
|
|
10
|
+
"build": "npm run lint && npm run tsc",
|
|
11
|
+
"precommit": "npm run lint"
|
|
12
|
+
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/TencentCloudBase/cloudbase-js-sdk"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"cloudbase",
|
|
22
|
+
"tcb",
|
|
23
|
+
"javascript",
|
|
24
|
+
"typescript",
|
|
25
|
+
"web",
|
|
26
|
+
"serverless"
|
|
27
|
+
],
|
|
28
|
+
"author": "",
|
|
29
|
+
"license": "Apache-2.0",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@cloudbase/adapter-interface": "^0.4.1",
|
|
32
|
+
"@cloudbase/types": "^2.5.25-beta.0",
|
|
33
|
+
"@cloudbase/utilities": "^2.5.25-beta.0",
|
|
34
|
+
"brotli": "^1.3.3",
|
|
35
|
+
"brotli-dec-wasm": "^2.0.1"
|
|
36
|
+
},
|
|
37
|
+
"gitHead": "efa0e6aa8adf5d7af0b938b419c242abf269f3e4"
|
|
38
|
+
}
|