UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

184 lines (182 loc) 17.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FsRequest = void 0; /* * Copyright (c) 2018 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. */ var types_1 = require("./types"); var dispatch_1 = require("./dispatch"); var request_adapter_node_1 = require("./request_adapter.node"); /** * Main isomorphic Filestack request library * * @export * @class FsRequest */ var FsRequest = /** @class */ (function () { /** * Creates an instance of Request. * * @param {RequestOptions} [config] * @memberof FsRequest */ function FsRequest(config) { this.defaults = config; this.dispatcher = new dispatch_1.Dispatch(new request_adapter_node_1.RequestAdapter()); } /** * Returns static FsRequest instance * * @private * @static * @returns * @memberof FsRequest */ FsRequest.getInstance = function () { if (!FsRequest.instance) { FsRequest.instance = new FsRequest(); } return FsRequest.instance; }; /** * Run request with given adapter * * @param {RequestOptions} config * @returns * @memberof Request */ FsRequest.prototype.dispatch = function (config) { if (!config.method) { config.method = types_1.FsHttpMethod.GET; } return this.dispatcher.request(Object.assign({}, this.defaults, config)); }; /** * Dispatch request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.dispatch = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { url: url })); }; /** * Dispatch GET request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.get = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.GET, url: url })); }; /** * Dispatch HEAD request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.head = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.HEAD, url: url })); }; /** * Dispatch OPTIONS request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.options = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.OPTIONS, url: url })); }; /** * Dispatch PURGE request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.purge = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.PURGE, url: url })); }; /** * Dispatch DELETE request * * @static * @param {string} url * @param {FsRequestOptions} config * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.delete = function (url, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.DELETE, url: url })); }; /** * Dispatch POST request * * @static * @param {string} url * @param {*} [data] * @param {FsRequestOptions} [config] * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.post = function (url, data, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.POST, url: url, data: data })); }; /** * Dispatch PUT request * * @static * @param {string} url * @param {*} [data] * @param {FsRequestOptions} [config] * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.put = function (url, data, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.PUT, url: url, data: data })); }; /** * Dispatch PATCH request * * @static * @param {string} url * @param {*} [data] * @param {FsRequestOptions} [config] * @returns {Promise<FsResponse>} * @memberof FsRequest */ FsRequest.path = function (url, data, config) { return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: types_1.FsHttpMethod.PATH, url: url, data: data })); }; return FsRequest; }()); exports.FsRequest = FsRequest; exports.default = FsRequest; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILGlDQUFxRTtBQUNyRSx1Q0FBc0M7QUFDdEMsK0RBQXdEO0FBRXhEOzs7OztHQUtHO0FBQ0g7SUE2QkU7Ozs7O09BS0c7SUFDSCxtQkFBWSxNQUF5QjtRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLHFDQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ1kscUJBQVcsR0FBMUI7UUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUN2QixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7U0FDdEM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUVJLDRCQUFRLEdBQWYsVUFBZ0IsTUFBd0I7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxvQkFBWSxDQUFDLEdBQUcsQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNXLGtCQUFRLEdBQXRCLFVBQXVCLEdBQVcsRUFBRSxNQUF3QjtRQUMxRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBQSxFQUFF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QUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsb0JBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFBLEVBQUUsSUFBSSxNQUFBLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUNILGdCQUFDO0FBQUQsQ0FoTUEsQUFnTUMsSUFBQTtBQWhNWSw4QkFBUztBQWtNdEIsa0JBQWUsU0FBUyxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L3JlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFja1xuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBGc1JlcXVlc3RPcHRpb25zLCBGc0h0dHBNZXRob2QsIEZzUmVzcG9uc2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnLi9kaXNwYXRjaCc7XG5pbXBvcnQgeyBSZXF1ZXN0QWRhcHRlciB9IGZyb20gJy4vcmVxdWVzdF9hZGFwdGVyLm5vZGUnO1xuXG4vKipcbiAqIE1haW4gaXNvbW9ycGhpYyBGaWxlc3RhY2sgcmVxdWVzdCBsaWJyYXJ5XG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIEZzUmVxdWVzdFxuICovXG5leHBvcnQgY2xhc3MgRnNSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFJlcXVlc3Qgc3RhdGljIGluc3RhbmNlXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBzdGF0aWNcbiAgICogQHR5cGUge0ZzUmVxdWVzdH1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEZzUmVxdWVzdDtcblxuICAvKipcbiAgICogRGVmYXVsdCByZXF1ZXN0IG9wdGlvbnNcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1JlcXVlc3RPcHRpb25zfVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGRlZmF1bHRzOiBGc1JlcXVlc3RPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IERpc3BhdGNoZXJcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge0Rpc3BhdGNofVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGRpc3BhdGNoZXI6IERpc3BhdGNoO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdE9wdGlvbnN9IFtjb25maWddXG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IEZzUmVxdWVzdE9wdGlvbnMpIHtcblxuICAgIHRoaXMuZGVmYXVsdHMgPSBjb25maWc7XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gbmV3IERpc3BhdGNoKG5ldyBSZXF1ZXN0QWRhcHRlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0YXRpYyBGc1JlcXVlc3QgaW5zdGFuY2VcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHN0YXRpY1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRJbnN0YW5jZSgpIHtcbiAgICBpZiAoIUZzUmVxdWVzdC5pbnN0YW5jZSkge1xuICAgICAgRnNSZXF1ZXN0Lmluc3RhbmNlID0gbmV3IEZzUmVxdWVzdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBGc1JlcXVlc3QuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHJlcXVlc3Qgd2l0aCBnaXZlbiBhZGFwdGVyXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgUmVxdWVzdFxuICAgKi9cblxuICBwdWJsaWMgZGlzcGF0Y2goY29uZmlnOiBGc1JlcXVlc3RPcHRpb25zKSB7XG4gICAgaWYgKCFjb25maWcubWV0aG9kKSB7XG4gICAgICBjb25maWcubWV0aG9kID0gRnNIdHRwTWV0aG9kLkdFVDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLnJlcXVlc3QoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0cywgY29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBjb25maWdcbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGlzcGF0Y2godXJsOiBzdHJpbmcsIGNvbmZpZzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgdXJsIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBHRVQgcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBjb25maWdcbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5HRVQsIHVybCB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggSEVBRCByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoZWFkKHVybDogc3RyaW5nLCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5IRUFELCB1cmwgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIE9QVElPTlMgcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBjb25maWdcbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb3B0aW9ucyh1cmw6IHN0cmluZywgY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgbWV0aG9kOiBGc0h0dHBNZXRob2QuT1BUSU9OUywgdXJsIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBQVVJHRSByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwdXJnZSh1cmw6IHN0cmluZywgY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgbWV0aG9kOiBGc0h0dHBNZXRob2QuUFVSR0UsIHVybCB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggREVMRVRFIHJlcXVlc3RcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7RnNSZXF1ZXN0T3B0aW9uc30gY29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZzUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlbGV0ZSh1cmw6IHN0cmluZywgY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgbWV0aG9kOiBGc0h0dHBNZXRob2QuREVMRVRFLCB1cmwgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIFBPU1QgcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHsqfSBbZGF0YV1cbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBbY29uZmlnXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwb3N0KHVybDogc3RyaW5nLCBkYXRhPzogYW55LCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5QT1NULCB1cmwsIGRhdGEgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIFBVVCByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0geyp9IFtkYXRhXVxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IFtjb25maWddXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZzUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHB1dCh1cmw6IHN0cmluZywgZGF0YT86IGFueSwgY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgbWV0aG9kOiBGc0h0dHBNZXRob2QuUFVULCB1cmwsIGRhdGEgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIFBBVENIIHJlcXVlc3RcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7Kn0gW2RhdGFdXG4gICAqIEBwYXJhbSB7RnNSZXF1ZXN0T3B0aW9uc30gW2NvbmZpZ11cbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGF0aCh1cmw6IHN0cmluZywgZGF0YT86IGFueSwgY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8RnNSZXNwb25zZT4ge1xuICAgIHJldHVybiBGc1JlcXVlc3QuZ2V0SW5zdGFuY2UoKS5kaXNwYXRjaChPYmplY3QuYXNzaWduKHt9LCBjb25maWcgfHwge30sIHsgbWV0aG9kOiBGc0h0dHBNZXRob2QuUEFUSCwgdXJsLCBkYXRhIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBGc1JlcXVlc3Q7XG4iXX0=