filestack-js
Version:
Official JavaScript library for Filestack
184 lines (182 loc) • 17.7 kB
JavaScript
"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=