UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

229 lines (227 loc) 22.1 kB
"use strict"; /* * 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