UNPKG

comic-vine-sdk

Version:

A JS/TS client for the Comic Vine API

107 lines 13.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UrlBuilder = void 0; const index_js_1 = require("../resources/index.js"); const index_js_2 = require("../utils/index.js"); const isDefined = (value) => { return value != null; }; class UrlBuilder { constructor(apiKey, baseUrl) { this.apiKey = apiKey; this.baseUrl = baseUrl; } getParam(key, value) { if (value) { return { name: (0, index_js_2.toSnakeCase)(key), value }; } return undefined; } getFormatParm() { return { name: 'format', value: `json` }; } getApiKeyParm() { return { name: 'api_key', value: this.apiKey }; } getSortParam(sort) { if (sort) { return { name: 'sort', value: `${sort.field}:${sort.direction}` }; } return undefined; } getLimitParam(limit) { if (limit) { return this.getParam('limit', limit); } return undefined; } getOffsetParam(offset) { if (offset) { return this.getParam('offset', offset); } return undefined; } getFieldListParams(fieldList) { if (fieldList) { return { name: 'field_list', value: fieldList .map((field) => (0, index_js_2.toSnakeCase)(field)) .join(','), }; } return undefined; } getFilterParams(filter) { if (filter) { const snakeCaseFilter = (0, index_js_2.convertCamelCaseToSnakeCase)(filter); const filterParams = Object.entries(snakeCaseFilter).map(([key, value]) => `${key}:${value}`); return { name: 'filter', value: filterParams.join(',') }; } return undefined; } buildUrl(urlInput, queryParams) { const url = new URL(urlInput, this.baseUrl); const urlSearchParams = new URLSearchParams(queryParams .filter(isDefined) .map((param) => [param.name, param.value.toString()])); url.search = urlSearchParams.toString(); return url.toString(); } /** * @param resourceType A unique identifier for the resource type * @param id A unique identifier for the resource * @returns A url for requesting the resource * @example https://comicvine.gamespot.com/api/issue/4000-719442?format=json&api_key=123abc */ retrieve(resourceType, id, options) { const resource = (0, index_js_1.getResource)(resourceType); const urlInput = `${resource.detailName}/${resourceType}-${id}`; const queryParams = [ this.getFormatParm(), this.getApiKeyParm(), this.getFieldListParams(options === null || options === void 0 ? void 0 : options.fieldList), ]; return this.buildUrl(urlInput, queryParams); } /** * @param resourceType A unique identifier for the resource type * @returns A url for requesting a list of resources * @example https://comicvine.gamespot.com/api/issues?format=json&api_key=123abc */ list(resourceType, options) { const urlInput = (0, index_js_1.getResource)(resourceType).listName; const queryParams = [ this.getFormatParm(), this.getApiKeyParm(), this.getLimitParam(options === null || options === void 0 ? void 0 : options.limit), this.getOffsetParam(options === null || options === void 0 ? void 0 : options.offset), this.getSortParam(options === null || options === void 0 ? void 0 : options.sort), this.getFieldListParams(options === null || options === void 0 ? void 0 : options.fieldList), this.getFilterParams(options === null || options === void 0 ? void 0 : options.filter), ]; return this.buildUrl(urlInput, queryParams); } } exports.UrlBuilder = UrlBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvdXJsLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQWtFO0FBRWxFLGdEQUE2RTtBQUU3RSxNQUFNLFNBQVMsR0FBRyxDQUFJLEtBQVEsRUFBMkIsRUFBRTtJQUN6RCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBT0YsTUFBYSxVQUFVO0lBQ3JCLFlBQ1UsTUFBYyxFQUNkLE9BQWU7UUFEZixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUN0QixDQUFDO0lBRUksUUFBUSxDQUFDLEdBQVcsRUFBRSxLQUFrQztRQUM5RCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFBLHNCQUFXLEVBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBVztRQUM5QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNwRSxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFjO1FBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQWU7UUFDcEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxrQkFBa0IsQ0FBTSxTQUE0QjtRQUMxRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTztnQkFDTCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLFNBQVM7cUJBQ2IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHNCQUFXLEVBQUMsS0FBMEIsQ0FBQyxDQUFDO3FCQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ2IsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sZUFBZSxDQUFhLE1BQThCO1FBQ2hFLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLGVBQWUsR0FDbkIsSUFBQSxzQ0FBMkIsRUFBMEIsTUFBTSxDQUFDLENBQUM7WUFDL0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBVSxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQy9ELENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUNwQyxDQUFDO1lBRUYsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLFFBQVEsQ0FDZCxRQUFnQixFQUNoQixXQUEwQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUN6QyxXQUFXO2FBQ1IsTUFBTSxDQUFDLFNBQVMsQ0FBQzthQUNqQixHQUFHLENBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFFRixHQUFHLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV4QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQ04sWUFBMEIsRUFDMUIsRUFBVSxFQUNWLE9BQThCO1FBRTlCLE1BQU0sUUFBUSxHQUFHLElBQUEsc0JBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxNQUFNLFFBQVEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FDRixZQUEwQixFQUMxQixPQUEyQztRQUUzQyxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFXLEVBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUM7U0FDdEMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBbklELGdDQW1JQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFJlc291cmNlLCBSZXNvdXJjZVR5cGUgfSBmcm9tICcuLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmV0cmlldmVPcHRpb25zLCBMaXN0T3B0aW9ucywgU29ydCB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHRvU25ha2VDYXNlLCBjb252ZXJ0Q2FtZWxDYXNlVG9TbmFrZUNhc2UgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcyc7XG5cbmNvbnN0IGlzRGVmaW5lZCA9IDxUPih2YWx1ZTogVCk6IHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+ID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGw7XG59O1xuXG5pbnRlcmZhY2UgUXVlcnlQYXJhbSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFVybEJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaUtleTogc3RyaW5nLFxuICAgIHByaXZhdGUgYmFzZVVybDogc3RyaW5nLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHsgbmFtZTogdG9TbmFrZUNhc2Uoa2V5KSwgdmFsdWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JtYXRQYXJtKCkge1xuICAgIHJldHVybiB7IG5hbWU6ICdmb3JtYXQnLCB2YWx1ZTogYGpzb25gIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFwaUtleVBhcm0oKSB7XG4gICAgcmV0dXJuIHsgbmFtZTogJ2FwaV9rZXknLCB2YWx1ZTogdGhpcy5hcGlLZXkgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFBhcmFtKHNvcnQ/OiBTb3J0KSB7XG4gICAgaWYgKHNvcnQpIHtcbiAgICAgIHJldHVybiB7IG5hbWU6ICdzb3J0JywgdmFsdWU6IGAke3NvcnQuZmllbGR9OiR7c29ydC5kaXJlY3Rpb259YCB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldExpbWl0UGFyYW0obGltaXQ/OiBudW1iZXIpIHtcbiAgICBpZiAobGltaXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFBhcmFtKCdsaW1pdCcsIGxpbWl0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPZmZzZXRQYXJhbShvZmZzZXQ/OiBudW1iZXIpIHtcbiAgICBpZiAob2Zmc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQYXJhbSgnb2Zmc2V0Jywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZExpc3RQYXJhbXM8S2V5PihmaWVsZExpc3Q6IEtleVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGZpZWxkTGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2ZpZWxkX2xpc3QnLFxuICAgICAgICB2YWx1ZTogZmllbGRMaXN0XG4gICAgICAgICAgLm1hcCgoZmllbGQpID0+IHRvU25ha2VDYXNlKGZpZWxkIGFzIHVua25vd24gYXMgc3RyaW5nKSlcbiAgICAgICAgICAuam9pbignLCcpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJQYXJhbXM8RmlsdGVyVHlwZT4oZmlsdGVyOiBGaWx0ZXJUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgY29uc3Qgc25ha2VDYXNlRmlsdGVyID1cbiAgICAgICAgY29udmVydENhbWVsQ2FzZVRvU25ha2VDYXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PihmaWx0ZXIpO1xuICAgICAgY29uc3QgZmlsdGVyUGFyYW1zID0gT2JqZWN0LmVudHJpZXM8dW5rbm93bj4oc25ha2VDYXNlRmlsdGVyKS5tYXAoXG4gICAgICAgIChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHt2YWx1ZX1gLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHsgbmFtZTogJ2ZpbHRlcicsIHZhbHVlOiBmaWx0ZXJQYXJhbXMuam9pbignLCcpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwoXG4gICAgdXJsSW5wdXQ6IHN0cmluZyxcbiAgICBxdWVyeVBhcmFtczogQXJyYXk8UXVlcnlQYXJhbSB8IHVuZGVmaW5lZD4sXG4gICkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodXJsSW5wdXQsIHRoaXMuYmFzZVVybCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICAgIHF1ZXJ5UGFyYW1zXG4gICAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKVxuICAgICAgICAubWFwPFtzdHJpbmcsIHN0cmluZ10+KChwYXJhbSkgPT4gW3BhcmFtLm5hbWUsIHBhcmFtLnZhbHVlLnRvU3RyaW5nKCldKSxcbiAgICApO1xuXG4gICAgdXJsLnNlYXJjaCA9IHVybFNlYXJjaFBhcmFtcy50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIHR5cGVcbiAgICogQHBhcmFtIGlkIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZVxuICAgKiBAcmV0dXJucyBBIHVybCBmb3IgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcbiAgICogQGV4YW1wbGUgaHR0cHM6Ly9jb21pY3ZpbmUuZ2FtZXNwb3QuY29tL2FwaS9pc3N1ZS80MDAwLTcxOTQ0Mj9mb3JtYXQ9anNvbiZhcGlfa2V5PTEyM2FiY1xuICAgKi9cbiAgcmV0cmlldmU8S2V5PihcbiAgICByZXNvdXJjZVR5cGU6IFJlc291cmNlVHlwZSxcbiAgICBpZDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBSZXRyaWV2ZU9wdGlvbnM8S2V5PixcbiAgKSB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBnZXRSZXNvdXJjZShyZXNvdXJjZVR5cGUpO1xuICAgIGNvbnN0IHVybElucHV0ID0gYCR7cmVzb3VyY2UuZGV0YWlsTmFtZX0vJHtyZXNvdXJjZVR5cGV9LSR7aWR9YDtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IFtcbiAgICAgIHRoaXMuZ2V0Rm9ybWF0UGFybSgpLFxuICAgICAgdGhpcy5nZXRBcGlLZXlQYXJtKCksXG4gICAgICB0aGlzLmdldEZpZWxkTGlzdFBhcmFtcyhvcHRpb25zPy5maWVsZExpc3QpLFxuICAgIF07XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRVcmwodXJsSW5wdXQsIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSB0eXBlXG4gICAqIEByZXR1cm5zIEEgdXJsIGZvciByZXF1ZXN0aW5nIGEgbGlzdCBvZiByZXNvdXJjZXNcbiAgICogQGV4YW1wbGUgaHR0cHM6Ly9jb21pY3ZpbmUuZ2FtZXNwb3QuY29tL2FwaS9pc3N1ZXM/Zm9ybWF0PWpzb24mYXBpX2tleT0xMjNhYmNcbiAgICovXG4gIGxpc3Q8UmVzb3VyY2UsIEZpbHRlclR5cGU+KFxuICAgIHJlc291cmNlVHlwZTogUmVzb3VyY2VUeXBlLFxuICAgIG9wdGlvbnM/OiBMaXN0T3B0aW9uczxSZXNvdXJjZSwgRmlsdGVyVHlwZT4sXG4gICkge1xuICAgIGNvbnN0IHVybElucHV0ID0gZ2V0UmVzb3VyY2UocmVzb3VyY2VUeXBlKS5saXN0TmFtZTtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IFtcbiAgICAgIHRoaXMuZ2V0Rm9ybWF0UGFybSgpLFxuICAgICAgdGhpcy5nZXRBcGlLZXlQYXJtKCksXG4gICAgICB0aGlzLmdldExpbWl0UGFyYW0ob3B0aW9ucz8ubGltaXQpLFxuICAgICAgdGhpcy5nZXRPZmZzZXRQYXJhbShvcHRpb25zPy5vZmZzZXQpLFxuICAgICAgdGhpcy5nZXRTb3J0UGFyYW0ob3B0aW9ucz8uc29ydCksXG4gICAgICB0aGlzLmdldEZpZWxkTGlzdFBhcmFtcyhvcHRpb25zPy5maWVsZExpc3QpLFxuICAgICAgdGhpcy5nZXRGaWx0ZXJQYXJhbXMob3B0aW9ucz8uZmlsdGVyKSxcbiAgICBdO1xuICAgIHJldHVybiB0aGlzLmJ1aWxkVXJsKHVybElucHV0LCBxdWVyeVBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==