filestack-js
Version:
Official JavaScript library for Filestack
229 lines (227 loc) • 22.1 kB
JavaScript
/*
* Copyright (c) 2019 by Filestack.
* Some rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var request_1 = require("./request");
var types_1 = require("./types");
var dispatch_1 = require("./dispatch");
jest.mock('./dispatch');
var dispatchSpy = jest.fn(function () { return Promise.resolve('response'); });
// @ts-ignore
dispatch_1.Dispatch.prototype.request.mockImplementation(dispatchSpy);
describe('Request/Request', function () {
var url = 'https://filestack.com';
describe('dispatch', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var fsRequest, response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fsRequest = new request_1.FsRequest();
return [4 /*yield*/, fsRequest.dispatch({ method: types_1.FsHttpMethod.GET })];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({ method: types_1.FsHttpMethod.GET });
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('dispatch with url', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.dispatch(url, { url: url })];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.GET,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('dispatch static method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.dispatch(url, { method: types_1.FsHttpMethod.GET })];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.GET,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static get method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.get(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.GET,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static head method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.head(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.HEAD,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static options method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.options(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.OPTIONS,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static purge method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.purge(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.PURGE,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static delete method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.delete(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.DELETE,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static post method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.post(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.POST,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static put method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.put(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.PUT,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
describe('static path method', function () {
it('should return response', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var response;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request_1.FsRequest.path(url)];
case 1:
response = _a.sent();
expect(dispatchSpy).toHaveBeenCalledWith({
method: types_1.FsHttpMethod.PATH,
url: url,
});
expect(response).toBe('response');
return [2 /*return*/];
}
});
}); });
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9yZXF1ZXN0LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBRUgscUNBQXNDO0FBQ3RDLGlDQUF1QztBQUN2Qyx1Q0FBc0M7QUFFdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV4QixJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQU0sT0FBQSxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUEzQixDQUEyQixDQUFDLENBQUM7QUFDL0QsYUFBYTtBQUNiLG1CQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBTSxHQUFHLEdBQUcsdUJBQXVCLENBQUM7SUFFcEMsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUNuQixFQUFFLENBQUMsd0JBQXdCLEVBQUU7Ozs7O3dCQUNyQixTQUFTLEdBQUcsSUFBSSxtQkFBUyxFQUFFLENBQUM7d0JBQ2pCLHFCQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFBOzt3QkFBakUsUUFBUSxHQUFHLFNBQXNEO3dCQUV2RSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUV2RSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7O2FBQ25DLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFO1FBQzVCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRTs7Ozs0QkFDVixxQkFBTSxtQkFBUyxDQUFDLFFB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QUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtRQUM1QixFQUFFLENBQUMsd0JBQXdCLEVBQUU7Ozs7NEJBQ1YscUJBQU0sbUJBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUE7O3dCQUFuQyxRQUFRLEdBQUcsU0FBd0I7d0JBRXpDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQzs0QkFDdkMsTUFBTSxFQUFFLG9CQUFZLENBQUMsR0FBRzs0QkFDeEIsR0FBRyxFQUFFLEdBQUc7eUJBQ1QsQ0FBQyxDQUFDO3dCQUVILE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Ozs7YUFDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUU7UUFDN0IsRUFBRSxDQUFDLHdCQUF3QixFQUFFOzs7OzRCQUNWLHFCQUFNLG1CQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBcEMsUUFBUSxHQUFHLFNBQXlCO3dCQUUxQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CLENBQUM7NEJBQ3ZDLE1BQU0sRUFBRSxvQkFBWSxDQUFDLElBQUk7NEJBQ3pCLEdBQUcsRUFBRSxHQUFHO3lCQUNULENBQUMsQ0FBQzt3QkFFSCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7O2FBQ25DLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoibGliL3JlcXVlc3QvcmVxdWVzdC5zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOSBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRnNSZXF1ZXN0IH0gZnJvbSAnLi9yZXF1ZXN0JztcbmltcG9ydCB7IEZzSHR0cE1ldGhvZCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICcuL2Rpc3BhdGNoJztcblxuamVzdC5tb2NrKCcuL2Rpc3BhdGNoJyk7XG5cbmNvbnN0IGRpc3BhdGNoU3B5ID0gamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoJ3Jlc3BvbnNlJykpO1xuLy8gQHRzLWlnbm9yZVxuRGlzcGF0Y2gucHJvdG90eXBlLnJlcXVlc3QubW9ja0ltcGxlbWVudGF0aW9uKGRpc3BhdGNoU3B5KTtcblxuZGVzY3JpYmUoJ1JlcXVlc3QvUmVxdWVzdCcsICgpID0+IHtcbiAgY29uc3QgdXJsID0gJ2h0dHBzOi8vZmlsZXN0YWNrLmNvbSc7XG5cbiAgZGVzY3JpYmUoJ2Rpc3BhdGNoJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZnNSZXF1ZXN0ID0gbmV3IEZzUmVxdWVzdCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmc1JlcXVlc3QuZGlzcGF0Y2goeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5HRVQgfSk7XG5cbiAgICAgIGV4cGVjdChkaXNwYXRjaFNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5HRVQgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNwb25zZSkudG9CZSgncmVzcG9uc2UnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Rpc3BhdGNoIHdpdGggdXJsJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3QuZGlzcGF0Y2godXJsLCB7IHVybDogdXJsIH0pO1xuXG4gICAgICBleHBlY3QoZGlzcGF0Y2hTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgbWV0aG9kOiBGc0h0dHBNZXRob2QuR0VULFxuICAgICAgICB1cmw6IHVybCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzcG9uc2UpLnRvQmUoJ3Jlc3BvbnNlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkaXNwYXRjaCBzdGF0aWMgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3QuZGlzcGF0Y2godXJsLCB7IG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCB9KTtcblxuICAgICAgZXhwZWN0KGRpc3BhdGNoU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIGdldCBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEZzUmVxdWVzdC5nZXQodXJsKTtcblxuICAgICAgZXhwZWN0KGRpc3BhdGNoU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIGhlYWQgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3QuaGVhZCh1cmwpO1xuXG4gICAgICBleHBlY3QoZGlzcGF0Y2hTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgbWV0aG9kOiBGc0h0dHBNZXRob2QuSEVBRCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIG9wdGlvbnMgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3Qub3B0aW9ucyh1cmwpO1xuXG4gICAgICBleHBlY3QoZGlzcGF0Y2hTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgbWV0aG9kOiBGc0h0dHBNZXRob2QuT1BUSU9OUyxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIHB1cmdlIG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiByZXNwb25zZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgRnNSZXF1ZXN0LnB1cmdlKHVybCk7XG5cbiAgICAgIGV4cGVjdChkaXNwYXRjaFNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICBtZXRob2Q6IEZzSHR0cE1ldGhvZC5QVVJHRSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIGRlbGV0ZSBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEZzUmVxdWVzdC5kZWxldGUodXJsKTtcblxuICAgICAgZXhwZWN0KGRpc3BhdGNoU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLkRFTEVURSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIHBvc3QgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3QucG9zdCh1cmwpO1xuXG4gICAgICBleHBlY3QoZGlzcGF0Y2hTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgbWV0aG9kOiBGc0h0dHBNZXRob2QuUE9TVCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIHB1dCBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEZzUmVxdWVzdC5wdXQodXJsKTtcblxuICAgICAgZXhwZWN0KGRpc3BhdGNoU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLlBVVCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RhdGljIHBhdGggbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBGc1JlcXVlc3QucGF0aCh1cmwpO1xuXG4gICAgICBleHBlY3QoZGlzcGF0Y2hTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgbWV0aG9kOiBGc0h0dHBNZXRob2QuUEFUSCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKCdyZXNwb25zZScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
;