UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

181 lines (179 loc) 17.5 kB
/* * 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. */ import { FsHttpMethod } from './types'; import { Dispatch } from './dispatch'; import { RequestAdapter } from './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(new 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 = 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: 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: 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: 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: 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: 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: 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: 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: FsHttpMethod.PATH, url: url, data: data })); }; return FsRequest; }()); export { FsRequest }; export default FsRequest; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE9BQU8sRUFBb0IsWUFBWSxFQUFjLE1BQU0sU0FBUyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0g7SUE2QkU7Ozs7O09BS0c7SUFDSCxtQkFBWSxNQUF5QjtRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNZLHFCQUFXLEdBQTFCO1FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDdkIsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFFSSw0QkFBUSxHQUFmLFVBQWdCLE1BQXdCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNXLGtCQUFRLEdBQXRCLFVBQXVCLEdBQVcsRUFBRSxNQUF3QjtRQUMxRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FB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LElBQVUsRUFBRSxNQUF5QjtRQUNuRSxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBQSxFQUFFLElBQUksTUFBQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFDSCxnQkFBQztBQUFELENBaE1BLEFBZ01DLElBQUE7O0FBRUQsZUFBZSxTQUFTLENBQUMiLCJmaWxlIjoibGliL3JlcXVlc3QvcmVxdWVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggYnkgRmlsZXN0YWNrXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IEZzUmVxdWVzdE9wdGlvbnMsIEZzSHR0cE1ldGhvZCwgRnNSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICcuL2Rpc3BhdGNoJztcbmltcG9ydCB7IFJlcXVlc3RBZGFwdGVyIH0gZnJvbSAnLi9yZXF1ZXN0X2FkYXB0ZXIubm9kZSc7XG5cbi8qKlxuICogTWFpbiBpc29tb3JwaGljIEZpbGVzdGFjayByZXF1ZXN0IGxpYnJhcnlcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRnNSZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBGc1JlcXVlc3Qge1xuICAvKipcbiAgICogUmVxdWVzdCBzdGF0aWMgaW5zdGFuY2VcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHN0YXRpY1xuICAgKiBAdHlwZSB7RnNSZXF1ZXN0fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogRnNSZXF1ZXN0O1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJlcXVlc3Qgb3B0aW9uc1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UmVxdWVzdE9wdGlvbnN9XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgZGVmYXVsdHM6IEZzUmVxdWVzdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgRGlzcGF0Y2hlclxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7RGlzcGF0Y2h9XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgZGlzcGF0Y2hlcjogRGlzcGF0Y2g7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUmVxdWVzdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uc30gW2NvbmZpZ11cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnPzogRnNSZXF1ZXN0T3B0aW9ucykge1xuXG4gICAgdGhpcy5kZWZhdWx0cyA9IGNvbmZpZztcbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBuZXcgRGlzcGF0Y2gobmV3IFJlcXVlc3RBZGFwdGVyKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgc3RhdGljIEZzUmVxdWVzdCBpbnN0YW5jZVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAc3RhdGljXG4gICAqIEByZXR1cm5zXG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldEluc3RhbmNlKCkge1xuICAgIGlmICghRnNSZXF1ZXN0Lmluc3RhbmNlKSB7XG4gICAgICBGc1JlcXVlc3QuaW5zdGFuY2UgPSBuZXcgRnNSZXF1ZXN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEZzUmVxdWVzdC5pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gcmVxdWVzdCB3aXRoIGdpdmVuIGFkYXB0ZXJcbiAgICpcbiAgICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uc30gY29uZmlnXG4gICAqIEByZXR1cm5zXG4gICAqIEBtZW1iZXJvZiBSZXF1ZXN0XG4gICAqL1xuXG4gIHB1YmxpYyBkaXNwYXRjaChjb25maWc6IEZzUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBpZiAoIWNvbmZpZy5tZXRob2QpIHtcbiAgICAgIGNvbmZpZy5tZXRob2QgPSBGc0h0dHBNZXRob2QuR0VUO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIucmVxdWVzdChPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRzLCBjb25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkaXNwYXRjaCh1cmw6IHN0cmluZywgY29uZmlnOiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyB1cmwgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIEdFVCByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQodXJsOiBzdHJpbmcsIGNvbmZpZz86IEZzUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEZzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gRnNSZXF1ZXN0LmdldEluc3RhbmNlKCkuZGlzcGF0Y2goT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnIHx8IHt9LCB7IG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCwgdXJsIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBIRUFEIHJlcXVlc3RcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7RnNSZXF1ZXN0T3B0aW9uc30gY29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZzUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhlYWQodXJsOiBzdHJpbmcsIGNvbmZpZz86IEZzUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEZzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gRnNSZXF1ZXN0LmdldEluc3RhbmNlKCkuZGlzcGF0Y2goT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnIHx8IHt9LCB7IG1ldGhvZDogRnNIdHRwTWV0aG9kLkhFQUQsIHVybCB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggT1BUSU9OUyByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IGNvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvcHRpb25zKHVybDogc3RyaW5nLCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5PUFRJT05TLCB1cmwgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIFBVUkdFIHJlcXVlc3RcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7RnNSZXF1ZXN0T3B0aW9uc30gY29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZzUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHB1cmdlKHVybDogc3RyaW5nLCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5QVVJHRSwgdXJsIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBERUxFVEUgcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBjb25maWdcbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVsZXRlKHVybDogc3RyaW5nLCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5ERUxFVEUsIHVybCB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggUE9TVCByZXF1ZXN0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0geyp9IFtkYXRhXVxuICAgKiBAcGFyYW0ge0ZzUmVxdWVzdE9wdGlvbnN9IFtjb25maWddXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZzUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgRnNSZXF1ZXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBvc3QodXJsOiBzdHJpbmcsIGRhdGE/OiBhbnksIGNvbmZpZz86IEZzUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEZzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gRnNSZXF1ZXN0LmdldEluc3RhbmNlKCkuZGlzcGF0Y2goT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnIHx8IHt9LCB7IG1ldGhvZDogRnNIdHRwTWV0aG9kLlBPU1QsIHVybCwgZGF0YSB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggUFVUIHJlcXVlc3RcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7Kn0gW2RhdGFdXG4gICAqIEBwYXJhbSB7RnNSZXF1ZXN0T3B0aW9uc30gW2NvbmZpZ11cbiAgICogQHJldHVybnMge1Byb21pc2U8RnNSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBGc1JlcXVlc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcHV0KHVybDogc3RyaW5nLCBkYXRhPzogYW55LCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5QVVQsIHVybCwgZGF0YSB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggUEFUQ0ggcmVxdWVzdFxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHsqfSBbZGF0YV1cbiAgICogQHBhcmFtIHtGc1JlcXVlc3RPcHRpb25zfSBbY29uZmlnXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGc1Jlc3BvbnNlPn1cbiAgICogQG1lbWJlcm9mIEZzUmVxdWVzdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXRoKHVybDogc3RyaW5nLCBkYXRhPzogYW55LCBjb25maWc/OiBGc1JlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxGc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIEZzUmVxdWVzdC5nZXRJbnN0YW5jZSgpLmRpc3BhdGNoKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyB8fCB7fSwgeyBtZXRob2Q6IEZzSHR0cE1ldGhvZC5QQVRILCB1cmwsIGRhdGEgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZzUmVxdWVzdDtcbiJdfQ==