UNPKG

@orbit/record-cache

Version:

Orbit base classes used to access and maintain a set of records.

112 lines 17.1 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RecordCache = void 0; const core_1 = require("@orbit/core"); const data_1 = require("@orbit/data"); const records_1 = require("@orbit/records"); const { assert } = core_1.Orbit; let RecordCache = class RecordCache { constructor(settings) { assert('RecordCache requires a `schema` setting to be constructed', !!settings.schema); const { name, schema, keyMap } = settings; this._name = name; this._schema = schema; this._keyMap = keyMap; let { validatorFor, validators } = settings; const autoValidate = settings.autoValidate !== false; if (!autoValidate) { assert('RecordCache should not be constructed with a `validatorFor` or `validators` if `autoValidate === false`', validators === undefined && validatorFor === undefined); } else if (validatorFor !== undefined) { assert('RecordCache can be constructed with either a `validatorFor` or `validators`, but not both', validators === undefined); } else { validatorFor = (0, records_1.buildRecordValidatorFor)({ validators }); } this._validatorFor = validatorFor; if (settings.queryBuilder === undefined || settings.transformBuilder === undefined) { let normalizer = settings.normalizer; if (normalizer === undefined) { normalizer = new records_1.StandardRecordNormalizer({ schema, keyMap, validateInputs: autoValidate }); } if (settings.queryBuilder === undefined) { settings.queryBuilder = new records_1.RecordQueryBuilder({ schema, normalizer, validatorFor }); } if (settings.transformBuilder === undefined) { settings.transformBuilder = new records_1.RecordTransformBuilder({ schema, normalizer, validatorFor }); } } this._queryBuilder = settings.queryBuilder; this._transformBuilder = settings.transformBuilder; this._defaultQueryOptions = settings.defaultQueryOptions; this._defaultTransformOptions = settings.defaultTransformOptions; } get name() { return this._name; } get schema() { return this._schema; } get keyMap() { return this._keyMap; } get validatorFor() { return this._validatorFor; } get queryBuilder() { return this._queryBuilder; } get transformBuilder() { return this._transformBuilder; } get defaultQueryOptions() { return this._defaultQueryOptions; } set defaultQueryOptions(options) { this._defaultQueryOptions = options; } get defaultTransformOptions() { return this._defaultTransformOptions; } set defaultTransformOptions(options) { this._defaultTransformOptions = options; } getQueryOptions(query, expression) { return (0, data_1.requestOptionsForSource)([ this._defaultQueryOptions, query.options, expression === null || expression === void 0 ? void 0 : expression.options ], this._name); } getTransformOptions(transform, operation) { return (0, data_1.requestOptionsForSource)([ this._defaultTransformOptions, transform.options, operation === null || operation === void 0 ? void 0 : operation.options ], this._name); } }; RecordCache = __decorate([ core_1.evented ], RecordCache); exports.RecordCache = RecordCache; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlY29yZC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxzQ0FBc0Q7QUFDdEQsc0NBSXFCO0FBQ3JCLDRDQWF3QjtBQUd4QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBSyxDQUFDO0FBNkN6QixJQUFzQixXQUFXLEdBQWpDLE1BQXNCLFdBQVc7SUFpQi9CLFlBQ0UsUUFLQztRQUVELE1BQU0sQ0FDSiwyREFBMkQsRUFDM0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ2xCLENBQUM7UUFFRixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFFMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFFdEIsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUM7UUFFckQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLENBQ0oseUdBQXlHLEVBQ3pHLFVBQVUsS0FBSyxTQUFTLElBQUksWUFBWSxLQUFLLFNBQVMsQ0FDdkQsQ0FBQztTQUNIO2FBQU0sSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQ3JDLE1BQU0sQ0FDSiwyRkFBMkYsRUFDM0YsVUFBVSxLQUFLLFNBQVMsQ0FDekIsQ0FBQztTQUNIO2FBQU07WUFDTCxZQUFZLEdBQUcsSUFBQSxpQ0FBdUIsRUFBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDeEQ7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUVsQyxJQUNF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LGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JiaXQsIGV2ZW50ZWQsIEV2ZW50ZWQgfSBmcm9tICdAb3JiaXQvY29yZSc7XG5pbXBvcnQge1xuICBEZWZhdWx0UmVxdWVzdE9wdGlvbnMsXG4gIFJlcXVlc3RPcHRpb25zLFxuICByZXF1ZXN0T3B0aW9uc0ZvclNvdXJjZVxufSBmcm9tICdAb3JiaXQvZGF0YSc7XG5pbXBvcnQge1xuICBSZWNvcmRLZXlNYXAsXG4gIFJlY29yZE9wZXJhdGlvbixcbiAgUmVjb3JkU2NoZW1hLFxuICBSZWNvcmRRdWVyeUJ1aWxkZXIsXG4gIFJlY29yZFRyYW5zZm9ybUJ1aWxkZXIsXG4gIFJlY29yZFF1ZXJ5RXhwcmVzc2lvbixcbiAgUmVjb3JkUXVlcnksXG4gIFJlY29yZFRyYW5zZm9ybSxcbiAgUmVjb3JkTm9ybWFsaXplcixcbiAgU3RhbmRhcmRSZWNvcmROb3JtYWxpemVyLFxuICBTdGFuZGFyZFJlY29yZFZhbGlkYXRvcixcbiAgYnVpbGRSZWNvcmRWYWxpZGF0b3JGb3Jcbn0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBTdGFuZGFyZFZhbGlkYXRvciwgVmFsaWRhdG9yRm9yRm4gfSBmcm9tICdAb3JiaXQvdmFsaWRhdG9ycyc7XG5jb25zdCB7IGFzc2VydCB9ID0gT3JiaXQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkQ2FjaGVRdWVyeU9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0T3B0aW9ucyB7XG4gIHJhaXNlTm90Rm91bmRFeGNlcHRpb25zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRDYWNoZVRyYW5zZm9ybU9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0T3B0aW9ucyB7XG4gIHJhaXNlTm90Rm91bmRFeGNlcHRpb25zPzogYm9vbGVhbjtcbiAgdXNlQnVmZmVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRDYWNoZVNldHRpbmdzPFxuICBRdWVyeU9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0T3B0aW9ucyA9IFJlY29yZENhY2hlUXVlcnlPcHRpb25zLFxuICBUcmFuc2Zvcm1PcHRpb25zIGV4dGVuZHMgUmVxdWVzdE9wdGlvbnMgPSBSZWNvcmRDYWNoZVRyYW5zZm9ybU9wdGlvbnMsXG4gIFF1ZXJ5QnVpbGRlciA9IFJlY29yZFF1ZXJ5QnVpbGRlcixcbiAgVHJhbnNmb3JtQnVpbGRlciA9IFJlY29yZFRyYW5zZm9ybUJ1aWxkZXJcbj4ge1xuICBuYW1lPzogc3RyaW5nO1xuICBzY2hlbWE6IFJlY29yZFNjaGVtYTtcbiAga2V5TWFwPzogUmVjb3JkS2V5TWFwO1xuICBub3JtYWxpemVyPzogUmVjb3JkTm9ybWFsaXplcjtcbiAgdmFsaWRhdG9yRm9yPzogVmFsaWRhdG9yRm9yRm48U3RhbmRhcmRWYWxpZGF0b3IgfCBTdGFuZGFyZFJlY29yZFZhbGlkYXRvcj47XG4gIHZhbGlkYXRvcnM/OiBEaWN0PFN0YW5kYXJkVmFsaWRhdG9yIHwgU3RhbmRhcmRSZWNvcmRWYWxpZGF0b3I+O1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiBhbGwgcmVxdWVzdHMuXG4gICAqXG4gICAqIElmIHRydWUsIGJ1aWxkcyBhIGB2YWxpZGF0b3JGb3JgIGZ1bmN0aW9uIGlmIG9uZSBoYXMgbm90IGJlZW4gcHJvdmlkZWQuXG4gICAqIFRoaXMgd2lsbCBpbmNsdWRlIHN0YW5kYXJkIHZhbGlkYXRvcnMgYXMgd2VsbCBhcyBhbnkgY3VzdG9tIGB2YWxpZGF0b3JzYFxuICAgKiB0aGF0IG1heSBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b1ZhbGlkYXRlPzogYm9vbGVhbjtcblxuICBxdWVyeUJ1aWxkZXI/OiBRdWVyeUJ1aWxkZXI7XG4gIHRyYW5zZm9ybUJ1aWxkZXI/OiBUcmFuc2Zvcm1CdWlsZGVyO1xuICBkZWZhdWx0UXVlcnlPcHRpb25zPzogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFF1ZXJ5T3B0aW9ucz47XG4gIGRlZmF1bHRUcmFuc2Zvcm1PcHRpb25zPzogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFRyYW5zZm9ybU9wdGlvbnM+O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRDYWNoZSBleHRlbmRzIEV2ZW50ZWQge31cblxuQGV2ZW50ZWRcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZWNvcmRDYWNoZTxcbiAgUXVlcnlPcHRpb25zIGV4dGVuZHMgUmVxdWVzdE9wdGlvbnMgPSBSZWNvcmRDYWNoZVF1ZXJ5T3B0aW9ucyxcbiAgVHJhbnNmb3JtT3B0aW9ucyBleHRlbmRzIFJlcXVlc3RPcHRpb25zID0gUmVjb3JkQ2FjaGVUcmFuc2Zvcm1PcHRpb25zLFxuICBRdWVyeUJ1aWxkZXIgPSBSZWNvcmRRdWVyeUJ1aWxkZXIsXG4gIFRyYW5zZm9ybUJ1aWxkZXIgPSBSZWNvcmRUcmFuc2Zvcm1CdWlsZGVyXG4+IHtcbiAgcHJvdGVjdGVkIF9uYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2tleU1hcD86IFJlY29yZEtleU1hcDtcbiAgcHJvdGVjdGVkIF9zY2hlbWE6IFJlY29yZFNjaGVtYTtcbiAgcHJvdGVjdGVkIF9xdWVyeUJ1aWxkZXI6IFF1ZXJ5QnVpbGRlcjtcbiAgcHJvdGVjdGVkIF90cmFuc2Zvcm1CdWlsZGVyOiBUcmFuc2Zvcm1CdWlsZGVyO1xuICBwcm90ZWN0ZWQgX3ZhbGlkYXRvckZvcj86IFZhbGlkYXRvckZvckZuPFxuICAgIFN0YW5kYXJkVmFsaWRhdG9yIHwgU3RhbmRhcmRSZWNvcmRWYWxpZGF0b3JcbiAgPjtcbiAgcHJvdGVjdGVkIF9kZWZhdWx0UXVlcnlPcHRpb25zPzogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFF1ZXJ5T3B0aW9ucz47XG4gIHByb3RlY3RlZCBfZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnM/OiBEZWZhdWx0UmVxdWVzdE9wdGlvbnM8VHJhbnNmb3JtT3B0aW9ucz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2V0dGluZ3M6IFJlY29yZENhY2hlU2V0dGluZ3M8XG4gICAgICBRdWVyeU9wdGlvbnMsXG4gICAgICBUcmFuc2Zvcm1PcHRpb25zLFxuICAgICAgUXVlcnlCdWlsZGVyLFxuICAgICAgVHJhbnNmb3JtQnVpbGRlclxuICAgID5cbiAgKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgJ1JlY29yZENhY2hlIHJlcXVpcmVzIGEgYHNjaGVtYWAgc2V0dGluZyB0byBiZSBjb25zdHJ1Y3RlZCcsXG4gICAgICAhIXNldHRpbmdzLnNjaGVtYVxuICAgICk7XG5cbiAgICBjb25zdCB7IG5hbWUsIHNjaGVtYSwga2V5TWFwIH0gPSBzZXR0aW5ncztcblxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl9rZXlNYXAgPSBrZXlNYXA7XG5cbiAgICBsZXQgeyB2YWxpZGF0b3JGb3IsIHZhbGlkYXRvcnMgfSA9IHNldHRpbmdzO1xuICAgIGNvbnN0IGF1dG9WYWxpZGF0ZSA9IHNldHRpbmdzLmF1dG9WYWxpZGF0ZSAhPT0gZmFsc2U7XG5cbiAgICBpZiAoIWF1dG9WYWxpZGF0ZSkge1xuICAgICAgYXNzZXJ0KFxuICAgICAgICAnUmVjb3JkQ2FjaGUgc2hvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEgYHZhbGlkYXRvckZvcmAgb3IgYHZhbGlkYXRvcnNgIGlmIGBhdXRvVmFsaWRhdGUgPT09IGZhbHNlYCcsXG4gICAgICAgIHZhbGlkYXRvcnMgPT09IHVuZGVmaW5lZCAmJiB2YWxpZGF0b3JGb3IgPT09IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHZhbGlkYXRvckZvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NlcnQoXG4gICAgICAgICdSZWNvcmRDYWNoZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBlaXRoZXIgYSBgdmFsaWRhdG9yRm9yYCBvciBgdmFsaWRhdG9yc2AsIGJ1dCBub3QgYm90aCcsXG4gICAgICAgIHZhbGlkYXRvcnMgPT09IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdG9yRm9yID0gYnVpbGRSZWNvcmRWYWxpZGF0b3JGb3IoeyB2YWxpZGF0b3JzIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbGlkYXRvckZvciA9IHZhbGlkYXRvckZvcjtcblxuICAgIGlmIChcbiAgICAgIHNldHRpbmdzLnF1ZXJ5QnVpbGRlciA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICBzZXR0aW5ncy50cmFuc2Zvcm1CdWlsZGVyID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGxldCBub3JtYWxpemVyID0gc2V0dGluZ3Mubm9ybWFsaXplcjtcblxuICAgICAgaWYgKG5vcm1hbGl6ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub3JtYWxpemVyID0gbmV3IFN0YW5kYXJkUmVjb3JkTm9ybWFsaXplcih7XG4gICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgIGtleU1hcCxcbiAgICAgICAgICB2YWxpZGF0ZUlucHV0czogYXV0b1ZhbGlkYXRlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2V0dGluZ3MucXVlcnlCdWlsZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKHNldHRpbmdzIGFzIGFueSkucXVlcnlCdWlsZGVyID0gbmV3IFJlY29yZFF1ZXJ5QnVpbGRlcih7XG4gICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgIG5vcm1hbGl6ZXIsXG4gICAgICAgICAgdmFsaWRhdG9yRm9yXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2V0dGluZ3MudHJhbnNmb3JtQnVpbGRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChzZXR0aW5ncyBhcyBhbnkpLnRyYW5zZm9ybUJ1aWxkZXIgPSBuZXcgUmVjb3JkVHJhbnNmb3JtQnVpbGRlcih7XG4gICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgIG5vcm1hbGl6ZXIsXG4gICAgICAgICAgdmFsaWRhdG9yRm9yXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXJ5QnVpbGRlciA9IHNldHRpbmdzLnF1ZXJ5QnVpbGRlciBhcyBRdWVyeUJ1aWxkZXI7XG4gICAgdGhpcy5fdHJhbnNmb3JtQnVpbGRlciA9IHNldHRpbmdzLnRyYW5zZm9ybUJ1aWxkZXIgYXMgVHJhbnNmb3JtQnVpbGRlcjtcblxuICAgIHRoaXMuX2RlZmF1bHRRdWVyeU9wdGlvbnMgPSBzZXR0aW5ncy5kZWZhdWx0UXVlcnlPcHRpb25zO1xuICAgIHRoaXMuX2RlZmF1bHRUcmFuc2Zvcm1PcHRpb25zID0gc2V0dGluZ3MuZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnM7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgZ2V0IHNjaGVtYSgpOiBSZWNvcmRTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBnZXQga2V5TWFwKCk6IFJlY29yZEtleU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2tleU1hcDtcbiAgfVxuXG4gIGdldCB2YWxpZGF0b3JGb3IoKTpcbiAgICB8IFZhbGlkYXRvckZvckZuPFN0YW5kYXJkVmFsaWRhdG9yIHwgU3RhbmRhcmRSZWNvcmRWYWxpZGF0b3I+XG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JGb3I7XG4gIH1cblxuICBnZXQgcXVlcnlCdWlsZGVyKCk6IFF1ZXJ5QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5QnVpbGRlcjtcbiAgfVxuXG4gIGdldCB0cmFuc2Zvcm1CdWlsZGVyKCk6IFRyYW5zZm9ybUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1CdWlsZGVyO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRRdWVyeU9wdGlvbnMoKTogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFF1ZXJ5T3B0aW9ucz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0UXVlcnlPcHRpb25zO1xuICB9XG5cbiAgc2V0IGRlZmF1bHRRdWVyeU9wdGlvbnMoXG4gICAgb3B0aW9uczogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFF1ZXJ5T3B0aW9ucz4gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5fZGVmYXVsdFF1ZXJ5T3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBnZXQgZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnMoKTpcbiAgICB8IERlZmF1bHRSZXF1ZXN0T3B0aW9uczxUcmFuc2Zvcm1PcHRpb25zPlxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnM7XG4gIH1cblxuICBzZXQgZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnMoXG4gICAgb3B0aW9uczogRGVmYXVsdFJlcXVlc3RPcHRpb25zPFRyYW5zZm9ybU9wdGlvbnM+IHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuX2RlZmF1bHRUcmFuc2Zvcm1PcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGdldFF1ZXJ5T3B0aW9ucyhcbiAgICBxdWVyeTogUmVjb3JkUXVlcnksXG4gICAgZXhwcmVzc2lvbj86IFJlY29yZFF1ZXJ5RXhwcmVzc2lvblxuICApOiBRdWVyeU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZXF1ZXN0T3B0aW9uc0ZvclNvdXJjZTxRdWVyeU9wdGlvbnM+KFxuICAgICAgW1xuICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlPcHRpb25zLFxuICAgICAgICBxdWVyeS5vcHRpb25zIGFzIFF1ZXJ5T3B0aW9ucyB8IHVuZGVmaW5lZCxcbiAgICAgICAgZXhwcmVzc2lvbj8ub3B0aW9ucyBhcyBRdWVyeU9wdGlvbnMgfCB1bmRlZmluZWRcbiAgICAgIF0sXG4gICAgICB0aGlzLl9uYW1lXG4gICAgKTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybU9wdGlvbnMoXG4gICAgdHJhbnNmb3JtOiBSZWNvcmRUcmFuc2Zvcm0sXG4gICAgb3BlcmF0aW9uPzogUmVjb3JkT3BlcmF0aW9uXG4gICk6IFRyYW5zZm9ybU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZXF1ZXN0T3B0aW9uc0ZvclNvdXJjZShcbiAgICAgIFtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFRyYW5zZm9ybU9wdGlvbnMsXG4gICAgICAgIHRyYW5zZm9ybS5vcHRpb25zIGFzIFRyYW5zZm9ybU9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICAgICAgIG9wZXJhdGlvbj8ub3B0aW9ucyBhcyBUcmFuc2Zvcm1PcHRpb25zIHwgdW5kZWZpbmVkXG4gICAgICBdLFxuICAgICAgdGhpcy5fbmFtZVxuICAgICk7XG4gIH1cbn1cbiJdfQ==