@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.
@@ -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
+ }