UNPKG

@datorama/akita-ng-entity-service

Version:
1 lines 71.4 kB
{"version":3,"file":"datorama-akita-ng-entity-service.mjs","sources":["../esm2020/lib/action-factory.mjs","../esm2020/lib/helpers.mjs","../esm2020/lib/ng-entity-service-notifier.mjs","../esm2020/lib/ng-entity-service.config.mjs","../esm2020/lib/ng-entity-service.loader.mjs","../esm2020/lib/ng-entity.service.mjs","../esm2020/datorama-akita-ng-entity-service.mjs"],"sourcesContent":["export function successAction(storeName, notifier) {\n    return function ({ payload, method, successMsg }) {\n        notifier.dispatch({\n            type: 'success',\n            storeName,\n            payload,\n            method: method,\n            successMsg\n        });\n    };\n}\nexport function errorAction(storeName, notifier) {\n    return function ({ payload, method, errorMsg }) {\n        notifier.dispatch({\n            type: 'error',\n            storeName,\n            payload,\n            method: method,\n            errorMsg\n        });\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1lbnRpdHktc2VydmljZS9zcmMvbGliL2FjdGlvbi1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxhQUFhLENBQzNCLFNBQWlCLEVBQ2pCLFFBQWlDO0lBRWpDLE9BQU8sVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQzlDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTO1lBQ1QsT0FBTztZQUNQLE1BQU0sRUFBRSxNQUFPO1lBQ2YsVUFBVTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFpQixFQUNqQixRQUFpQztJQUVqQyxPQUFPLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsU0FBUztZQUNULE9BQU87WUFDUCxNQUFNLEVBQUUsTUFBTztZQUNmLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U2VydmljZUFjdGlvbiwgTmdFbnRpdHlTZXJ2aWNlTm90aWZpZXIgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3NBY3Rpb24oXG4gIHN0b3JlTmFtZTogc3RyaW5nLFxuICBub3RpZmllcjogTmdFbnRpdHlTZXJ2aWNlTm90aWZpZXJcbik6IChwYXJhbXM6IFBhcnRpYWw8RW50aXR5U2VydmljZUFjdGlvbj4pID0+IHZvaWQge1xuICByZXR1cm4gZnVuY3Rpb24gKHsgcGF5bG9hZCwgbWV0aG9kLCBzdWNjZXNzTXNnIH0pIHtcbiAgICBub3RpZmllci5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICBzdG9yZU5hbWUsXG4gICAgICBwYXlsb2FkLFxuICAgICAgbWV0aG9kOiBtZXRob2QhLFxuICAgICAgc3VjY2Vzc01zZ1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JBY3Rpb24oXG4gIHN0b3JlTmFtZTogc3RyaW5nLFxuICBub3RpZmllcjogTmdFbnRpdHlTZXJ2aWNlTm90aWZpZXJcbik6IChwYXJhbXM6IFBhcnRpYWw8RW50aXR5U2VydmljZUFjdGlvbj4pID0+IHZvaWQge1xuICByZXR1cm4gZnVuY3Rpb24gKHsgcGF5bG9hZCwgbWV0aG9kLCBlcnJvck1zZyB9KSB7XG4gICAgbm90aWZpZXIuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgIHN0b3JlTmFtZSxcbiAgICAgIHBheWxvYWQsXG4gICAgICBtZXRob2Q6IG1ldGhvZCEsXG4gICAgICBlcnJvck1zZ1xuICAgIH0pO1xuICB9O1xufVxuIl19","import { isNumber, isString } from '@datorama/akita';\nexport function isID(idOrConfig) {\n    return isNumber(idOrConfig) || isString(idOrConfig);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWVudGl0eS1zZXJ2aWNlL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE1BQU0sVUFBVSxJQUFJLENBQUMsVUFBZTtJQUNsQyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lEKGlkT3JDb25maWc6IGFueSkge1xuICByZXR1cm4gaXNOdW1iZXIoaWRPckNvbmZpZykgfHwgaXNTdHJpbmcoaWRPckNvbmZpZyk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { filter, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport var HttpMethod;\n(function (HttpMethod) {\n    HttpMethod[\"GET\"] = \"GET\";\n    HttpMethod[\"POST\"] = \"POST\";\n    HttpMethod[\"PUT\"] = \"PUT\";\n    HttpMethod[\"PATCH\"] = \"PATCH\";\n    HttpMethod[\"DELETE\"] = \"DELETE\";\n})(HttpMethod || (HttpMethod = {}));\nexport const ofType = (type) => filter((action) => action.type === type);\nexport const filterMethod = (method) => filter((action) => action.method === method);\nexport const filterStore = (name) => filter((action) => action.storeName === name);\nexport class NgEntityServiceNotifier {\n    constructor() {\n        this.dispatcher = new Subject();\n        this.action$ = this.dispatcher.asObservable();\n    }\n    dispatch(event) {\n        this.dispatcher.next(event);\n    }\n}\nNgEntityServiceNotifier.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgEntityServiceNotifier.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceNotifier, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceNotifier, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2Utbm90aWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1lbnRpdHktc2VydmljZS9zcmMvbGliL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3ZDLE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIseUJBQVcsQ0FBQTtJQUNYLDJCQUFhLENBQUE7SUFDYix5QkFBVyxDQUFBO0lBQ1gsNkJBQWUsQ0FBQTtJQUNmLCtCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQVdELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQTJCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7QUFFMUcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBNEMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBMkIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztBQUVoSixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQTJCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7QUFHaEgsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVVLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUN4RCxZQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUsxQztJQUhDLFFBQVEsQ0FBQyxLQUEwQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQURWLE1BQU07MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1zZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBIdHRwTWV0aG9kIHtcbiAgR0VUID0gJ0dFVCcsXG4gIFBPU1QgPSAnUE9TVCcsXG4gIFBVVCA9ICdQVVQnLFxuICBQQVRDSCA9ICdQQVRDSCcsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuZXhwb3J0IHR5cGUgRW50aXR5U2VydmljZUFjdGlvbiA9IHtcbiAgc3RvcmVOYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEFjdGlvblR5cGU7XG4gIHBheWxvYWQ6IGFueTtcbiAgbWV0aG9kOiBIdHRwTWV0aG9kO1xufSAmIE1zZztcblxuZXhwb3J0IGNvbnN0IG9mVHlwZSA9ICh0eXBlOiBBY3Rpb25UeXBlKSA9PiBmaWx0ZXIoKGFjdGlvbjogRW50aXR5U2VydmljZUFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09IHR5cGUpO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyTWV0aG9kID0gKG1ldGhvZDogSHR0cE1ldGhvZCB8IGtleW9mIHR5cGVvZiBIdHRwTWV0aG9kKSA9PiBmaWx0ZXIoKGFjdGlvbjogRW50aXR5U2VydmljZUFjdGlvbikgPT4gYWN0aW9uLm1ldGhvZCA9PT0gbWV0aG9kKTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclN0b3JlID0gKG5hbWU6IHN0cmluZykgPT4gZmlsdGVyKChhY3Rpb246IEVudGl0eVNlcnZpY2VBY3Rpb24pID0+IGFjdGlvbi5zdG9yZU5hbWUgPT09IG5hbWUpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5nRW50aXR5U2VydmljZU5vdGlmaWVyIHtcbiAgcHJpdmF0ZSBkaXNwYXRjaGVyID0gbmV3IFN1YmplY3Q8RW50aXR5U2VydmljZUFjdGlvbj4oKTtcbiAgYWN0aW9uJCA9IHRoaXMuZGlzcGF0Y2hlci5hc09ic2VydmFibGUoKTtcblxuICBkaXNwYXRjaChldmVudDogRW50aXR5U2VydmljZUFjdGlvbikge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nimport { isObject } from '@datorama/akita';\nimport { HttpMethod } from './ng-entity-service-notifier';\nexport const NG_ENTITY_SERVICE_CONFIG = new InjectionToken('NgEntityServiceGlobalConfig');\nexport const defaultConfig = {\n    httpMethods: {\n        GET: HttpMethod.GET,\n        POST: HttpMethod.POST,\n        PATCH: HttpMethod.PATCH,\n        PUT: HttpMethod.PUT,\n        DELETE: HttpMethod.DELETE,\n    },\n};\nexport function mergeDeep(target, ...sources) {\n    if (!sources.length)\n        return target;\n    const source = sources.shift();\n    if (isObject(target) && isObject(source)) {\n        for (const key in source) {\n            if (isObject(source[key])) {\n                if (!target[key])\n                    Object.assign(target, { [key]: {} });\n                mergeDeep(target[key], source[key]);\n            }\n            else {\n                Object.assign(target, { [key]: source[key] });\n            }\n        }\n    }\n    return mergeDeep(target, ...sources);\n}\nexport function NgEntityServiceConfig(config = {}) {\n    return function (constructor) {\n        if (config.baseUrl) {\n            constructor['baseUrl'] = config.baseUrl;\n        }\n        if (config.resourceName) {\n            constructor['resourceName'] = config.resourceName;\n        }\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2UuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctZW50aXR5LXNlcnZpY2Uvc3JjL2xpYi9uZy1lbnRpdHktc2VydmljZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBYzFELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUE4Qiw2QkFBNkIsQ0FBQyxDQUFDO0FBRXZILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0M7SUFDeEQsV0FBVyxFQUFFO1FBQ1gsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHO1FBQ25CLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtRQUNyQixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHO1FBQ25CLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtLQUMxQjtDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU87SUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDbkMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRS9CLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDL0M7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxTQUFnQyxFQUFFO0lBQ3RFLE9BQU8sVUFBVSxXQUFXO1FBQzFCLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNsQixXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUN6QztRQUVELElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUN2QixXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNuRDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgSHR0cE1ldGhvZCB9IGZyb20gJy4vbmctZW50aXR5LXNlcnZpY2Utbm90aWZpZXInO1xuaW1wb3J0IHsgTmdFbnRpdHlTZXJ2aWNlUGFyYW1zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdFbnRpdHlTZXJ2aWNlR2xvYmFsQ29uZmlnIHtcbiAgYmFzZVVybD86IHN0cmluZztcbiAgaHR0cE1ldGhvZHM/OiBQYXJ0aWFsPHtcbiAgICBHRVQ6IEh0dHBNZXRob2Q7XG4gICAgUE9TVDogSHR0cE1ldGhvZDtcbiAgICBQQVRDSDogSHR0cE1ldGhvZDtcbiAgICBQVVQ6IEh0dHBNZXRob2Q7XG4gICAgREVMRVRFOiBIdHRwTWV0aG9kO1xuICB9Pjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HX0VOVElUWV9TRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0VudGl0eVNlcnZpY2VHbG9iYWxDb25maWc+KCdOZ0VudGl0eVNlcnZpY2VHbG9iYWxDb25maWcnKTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWc6IE5nRW50aXR5U2VydmljZUdsb2JhbENvbmZpZyA9IHtcbiAgaHR0cE1ldGhvZHM6IHtcbiAgICBHRVQ6IEh0dHBNZXRob2QuR0VULFxuICAgIFBPU1Q6IEh0dHBNZXRob2QuUE9TVCxcbiAgICBQQVRDSDogSHR0cE1ldGhvZC5QQVRDSCxcbiAgICBQVVQ6IEh0dHBNZXRob2QuUFVULFxuICAgIERFTEVURTogSHR0cE1ldGhvZC5ERUxFVEUsXG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcykge1xuICBpZiAoIXNvdXJjZXMubGVuZ3RoKSByZXR1cm4gdGFyZ2V0O1xuICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG5cbiAgaWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuICAgICAgICBpZiAoIXRhcmdldFtrZXldKSBPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XToge30gfSk7XG4gICAgICAgIG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZURlZXAodGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE5nRW50aXR5U2VydmljZUNvbmZpZyhjb25maWc6IE5nRW50aXR5U2VydmljZVBhcmFtcyA9IHt9KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY29uc3RydWN0b3IpIHtcbiAgICBpZiAoY29uZmlnLmJhc2VVcmwpIHtcbiAgICAgIGNvbnN0cnVjdG9yWydiYXNlVXJsJ10gPSBjb25maWcuYmFzZVVybDtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnJlc291cmNlTmFtZSkge1xuICAgICAgY29uc3RydWN0b3JbJ3Jlc291cmNlTmFtZSddID0gY29uZmlnLnJlc291cmNlTmFtZTtcbiAgICB9XG4gIH07XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { isFunction } from '@datorama/akita';\nimport { filter, map, ReplaySubject } from 'rxjs';\nimport { HttpMethod } from './ng-entity-service-notifier';\nimport * as i0 from \"@angular/core\";\nexport class NgEntityServiceLoader {\n    constructor() {\n        this.dispatcher = new ReplaySubject(1);\n        this.loading$ = this.dispatcher.asObservable();\n    }\n    dispatch(event) {\n        this.dispatcher.next(event);\n    }\n    loadersFor(name) {\n        const filterStore = filter(({ storeName }) => (name ? storeName === name : true));\n        const filterMethod = (mthd) => filter(({ method }) => {\n            return isFunction(mthd) ? mthd(method) : method === mthd;\n        });\n        const actionBased = (current) => this.loading$.pipe(filterStore, filterMethod(current), map((action) => action.loading));\n        const idBased = (id, mthd) => this.loading$.pipe(filterStore, filterMethod(mthd), filter((action) => action.entityId === id), map((action) => action.loading));\n        return {\n            get$: actionBased(HttpMethod.GET),\n            add$: actionBased(HttpMethod.POST),\n            update$: actionBased((method) => method === HttpMethod.PUT || method === HttpMethod.PATCH),\n            delete$: actionBased(HttpMethod.DELETE),\n            getEntity: (id) => idBased(id, HttpMethod.GET),\n            updateEntity: (id) => idBased(id, (method) => method === HttpMethod.PUT || method === HttpMethod.PATCH),\n            deleteEntity: (id) => idBased(id, HttpMethod.DELETE),\n        };\n    }\n}\nNgEntityServiceLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgEntityServiceLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceLoader, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.4\", ngImport: i0, type: NgEntityServiceLoader, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctZW50aXR5LXNlcnZpY2Uvc3JjL2xpYi9uZy1lbnRpdHktc2VydmljZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLGVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBUSxDQUFDLENBQUMsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXNDM0M7SUFwQ0MsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFhO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQVMsRUFBRSxFQUFFO1lBQzNCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFTCxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQTJDLEVBQUUsRUFBRSxDQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsV0FBVyxFQUNYLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUM7UUFFSixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQU8sRUFBRSxJQUF3QyxFQUFFLEVBQUUsQ0FDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLFdBQVcsRUFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQ2xCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsRUFDMUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUM7UUFFSixPQUFPO1lBQ0wsSUFBSSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ2pDLElBQUksRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNsQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMxRixPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDdkMsU0FBUyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDbkQsWUFBWSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM1RyxZQUFZLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUMxRCxDQUFDO0lBQ0osQ0FBQzs7a0hBdkNVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRFIsTUFBTTsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBNZXRob2QgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyJztcblxuZXhwb3J0IHR5cGUgRXZlbnQgPSB7IG1ldGhvZDogSHR0cE1ldGhvZDsgbG9hZGluZzogYm9vbGVhbjsgc3RvcmVOYW1lOiBzdHJpbmc7IGVudGl0eUlkPzogYW55IH07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTmdFbnRpdHlTZXJ2aWNlTG9hZGVyIHtcbiAgcHJpdmF0ZSBkaXNwYXRjaGVyID0gbmV3IFJlcGxheVN1YmplY3Q8RXZlbnQ+KDEpO1xuICBsb2FkaW5nJCA9IHRoaXMuZGlzcGF0Y2hlci5hc09ic2VydmFibGUoKTtcblxuICBkaXNwYXRjaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChldmVudCk7XG4gIH1cblxuICBsb2FkZXJzRm9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJTdG9yZSA9IGZpbHRlcigoeyBzdG9yZU5hbWUgfTogRXZlbnQpID0+IChuYW1lID8gc3RvcmVOYW1lID09PSBuYW1lIDogdHJ1ZSkpO1xuICAgIGNvbnN0IGZpbHRlck1ldGhvZCA9IChtdGhkKSA9PlxuICAgICAgZmlsdGVyKCh7IG1ldGhvZCB9OiBFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihtdGhkKSA/IG10aGQobWV0aG9kKSA6IG1ldGhvZCA9PT0gbXRoZDtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYWN0aW9uQmFzZWQgPSAoY3VycmVudDogKChtZXRob2QpID0+IGJvb2xlYW4pIHwgSHR0cE1ldGhvZCkgPT5cbiAgICAgIHRoaXMubG9hZGluZyQucGlwZShcbiAgICAgICAgZmlsdGVyU3RvcmUsXG4gICAgICAgIGZpbHRlck1ldGhvZChjdXJyZW50KSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IGFjdGlvbi5sb2FkaW5nKVxuICAgICAgKTtcblxuICAgIGNvbnN0IGlkQmFzZWQgPSAoaWQ6IGFueSwgbXRoZDogKChtZXRob2QpID0+IGJvb2xlYW4pIHwgSHR0cE1ldGhvZCkgPT5cbiAgICAgIHRoaXMubG9hZGluZyQucGlwZShcbiAgICAgICAgZmlsdGVyU3RvcmUsXG4gICAgICAgIGZpbHRlck1ldGhvZChtdGhkKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5lbnRpdHlJZCA9PT0gaWQpLFxuICAgICAgICBtYXAoKGFjdGlvbikgPT4gYWN0aW9uLmxvYWRpbmcpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCQ6IGFjdGlvbkJhc2VkKEh0dHBNZXRob2QuR0VUKSxcbiAgICAgIGFkZCQ6IGFjdGlvbkJhc2VkKEh0dHBNZXRob2QuUE9TVCksXG4gICAgICB1cGRhdGUkOiBhY3Rpb25CYXNlZCgobWV0aG9kKSA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGUkOiBhY3Rpb25CYXNlZChIdHRwTWV0aG9kLkRFTEVURSksXG4gICAgICBnZXRFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkdFVCksXG4gICAgICB1cGRhdGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCAobWV0aG9kKSA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkRFTEVURSksXG4gICAgfTtcbiAgfVxufVxuIl19","import { HttpClient } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { EntityService, isDefined } from '@datorama/akita';\nimport { catchError, finalize, isObservable, of, switchMap, tap, throwError } from 'rxjs';\nimport { errorAction, successAction } from './action-factory';\nimport { isID } from './helpers';\nimport { HttpMethod, NgEntityServiceNotifier } from './ng-entity-service-notifier';\nimport { defaultConfig, mergeDeep, NG_ENTITY_SERVICE_CONFIG } from './ng-entity-service.config';\nimport { NgEntityServiceLoader } from './ng-entity-service.loader';\nexport const mapResponse = (config) => switchMap((res) => {\n    const mappedResponse = config?.mapResponseFn ? config.mapResponseFn(res) : res;\n    return isObservable(mappedResponse) ? mappedResponse : of(mappedResponse);\n});\nexport class NgEntityService extends EntityService {\n    constructor(store, config = {}) {\n        super();\n        this.store = store;\n        this.config = config;\n        this.http = inject(HttpClient);\n        this.loader = inject(NgEntityServiceLoader);\n        this.notifier = inject(NgEntityServiceNotifier);\n        const globalConfig = inject(NG_ENTITY_SERVICE_CONFIG);\n        this.mergedConfig = mergeDeep({}, defaultConfig, globalConfig, this.getDecoratorConfig(), config);\n        this.baseUrl = this.mergedConfig.baseUrl;\n        this.httpMethodMap = this.mergedConfig.httpMethods;\n        this.dispatchSuccess = successAction(this.store.storeName, this.notifier);\n        this.dispatchError = errorAction(this.store.storeName, this.notifier);\n    }\n    get api() {\n        if (!this.baseUrl) {\n            throw new Error(`baseUrl of ${this.constructor.name} is not defined.`);\n        }\n        return `${this.baseUrl}/${this.resourceName}`;\n    }\n    get resourceName() {\n        return this.mergedConfig.resourceName || this.store.storeName;\n    }\n    setBaseUrl(baseUrl) {\n        this.baseUrl = baseUrl;\n    }\n    getHttp() {\n        return this.http;\n    }\n    getConfig() {\n        return this.mergedConfig;\n    }\n    get(idOrConfig, config) {\n        const method = this.getHttpMethod(HttpMethod.GET);\n        const isSingle = isID(idOrConfig);\n        const entityId = isSingle ? idOrConfig : undefined;\n        const conf = (!isSingle ? idOrConfig : config) || {};\n        const url = this.resolveUrl(conf, entityId);\n        this.loader.dispatch({\n            method,\n            loading: true,\n            entityId,\n            storeName: this.store.storeName,\n        });\n        return this.http.request(method, url, conf).pipe(mapResponse(conf), tap((data) => {\n            if (!conf.skipWrite) {\n                if (isSingle) {\n                    this.store.upsert(entityId, data, (id, newState) => ({ id, ...newState }));\n                }\n                else {\n                    if (conf.append) {\n                        this.store.add(data);\n                    }\n                    else if (conf.upsert) {\n                        this.store.upsertMany(data);\n                    }\n                    else {\n                        this.store.set(data);\n                    }\n                }\n            }\n            this.dispatchSuccess({\n                method,\n                payload: data,\n                successMsg: conf.successMsg,\n            });\n        }), catchError((error) => this.handleError(method, error, conf.errorMsg)), finalize(() => {\n            this.loader.dispatch({\n                method,\n                loading: false,\n                entityId,\n                storeName: this.store.storeName,\n            });\n        }));\n    }\n    /**\n     * Add a new entity - Creates a POST request\n     *\n     * @example\n     * service.add(entity).subscribe()\n     * service.add(entity, config).subscribe()\n     */\n    add(entity, config) {\n        const url = this.resolveUrl(config);\n        const method = this.getHttpMethod(HttpMethod.POST);\n        this.loader.dispatch({\n            method,\n            loading: true,\n            storeName: this.store.storeName,\n        });\n        const configWithBody = { ...config, ...{ body: entity } };\n        return this.http.request(method, url, configWithBody).pipe(mapResponse(config), tap((responseEntity) => {\n            if (!config || (config && !config.skipWrite)) {\n                this.store.add(responseEntity, config);\n            }\n            this.dispatchSuccess({\n                method,\n                payload: responseEntity,\n                successMsg: config && config.successMsg,\n            });\n        }), catchError((error) => this.handleError(method, error, config && config.errorMsg)), finalize(() => {\n            this.loader.dispatch({\n                method,\n                loading: false,\n                storeName: this.store.storeName,\n            });\n        }));\n    }\n    /**\n     * Update an entity - Creates a PUT/PATCH request\n     *\n     * @example\n     * service.update(id, entity).subscribe()\n     * service.update(id, entity, config).subscribe()\n     */\n    update(id, entity, config) {\n        const url = this.resolveUrl(config, id);\n        const method = (config && config.method) || this.getHttpMethod(HttpMethod.PUT);\n        this.loader.dispatch({\n            method,\n            loading: true,\n            entityId: id,\n            storeName: this.store.storeName,\n        });\n        const configWithBody = { ...config, ...{ body: entity } };\n        return this.http.request(method, url, configWithBody).pipe(mapResponse(config), tap((responseEntity) => {\n            if (!config || (config && !config.skipWrite)) {\n                this.store.update(id, responseEntity);\n            }\n            this.dispatchSuccess({\n                method,\n                payload: responseEntity,\n                successMsg: config && config.successMsg,\n            });\n        }), catchError((error) => this.handleError(method, error, config && config.errorMsg)), finalize(() => {\n            this.loader.dispatch({\n                method,\n                loading: false,\n                entityId: id,\n                storeName: this.store.storeName,\n            });\n        }));\n    }\n    /**\n     * Delete an entity - Creates a DELETE request\n     *\n     * @example\n     * service.delete(id).subscribe()\n     * service.delete(id, config).subscribe()\n     */\n    delete(id, config) {\n        const url = this.resolveUrl(config, id);\n        const method = this.getHttpMethod(HttpMethod.DELETE);\n        this.loader.dispatch({\n            method,\n            loading: true,\n            entityId: id,\n            storeName: this.store.storeName,\n        });\n        return this.http.request(method, url, config).pipe(mapResponse(config), tap((res) => {\n            if (!config || (config && !config.skipWrite)) {\n                this.store.remove(id);\n            }\n            this.dispatchSuccess({\n                method,\n                payload: res,\n                successMsg: config && config.successMsg,\n            });\n        }), catchError((error) => this.handleError(method, error, config && config.errorMsg)), finalize(() => {\n            this.loader.dispatch({\n                method,\n                loading: false,\n                entityId: id,\n                storeName: this.store.storeName,\n            });\n        }));\n    }\n    /**\n     * Gets the mapped HttpMethod.\n     *\n     * The default HttpMethod can be changed like so:\n     * ```ts\n     * {\n     *   provide: NG_ENTITY_SERVICE_CONFIG,\n     *   useValue: {\n     *     httpMethods: {\n     *       PUT: HttpMethod.PATCH,\n     *     },\n     *   } as NgEntityServiceGlobalConfig,\n     * }\n     * ```\n     *\n     * @param type HttpMethod to get the user configured HttpMethod for\n     * @returns User configured HttpMethod for the method, else the default HttpMethod\n     */\n    getHttpMethod(type) {\n        let httpMethod;\n        if (this.httpMethodMap) {\n            httpMethod = this.httpMethodMap[type];\n        }\n        if (!httpMethod) {\n            throw new Error('Unknown HttpMethod');\n        }\n        return httpMethod;\n    }\n    /**\n     * Gets the value given via the NgEntityServiceConfig decorator\n     *\n     * ```ts\n     * @NgEntityServiceConfig({\n     *   baseUrl: 'foo',\n     *   resourceName: 'bar',\n     * })\n     * ```\n     *\n     * @param key The property key\n     * @returns The value of the given decorator key\n     */\n    getDecoratorValue(key) {\n        return this.constructor[key];\n    }\n    getDecoratorConfig() {\n        const config = {};\n        const baseUrl = this.getDecoratorValue('baseUrl');\n        if (baseUrl) {\n            config.baseUrl = baseUrl;\n        }\n        const resourceName = this.getDecoratorValue('resourceName');\n        if (resourceName) {\n            config.resourceName = resourceName;\n        }\n        return config;\n    }\n    resolveUrl(config, id) {\n        const { url, urlPostfix } = Object(config);\n        let final = this.api;\n        if (url) {\n            return url;\n        }\n        if (isDefined(id)) {\n            final += `/${id}`;\n        }\n        if (urlPostfix) {\n            final += `/${urlPostfix}`;\n        }\n        return final;\n    }\n    handleError(method, error, errorMsg) {\n        this.dispatchError({\n            method,\n            errorMsg,\n            payload: error,\n        });\n        return throwError(error);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1lbnRpdHktc2VydmljZS9zcmMvbGliL25nLWVudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQXNELFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBdUIsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQStCLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHbkUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUksTUFBc0IsRUFBRSxFQUFFLENBQ3ZELFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ2hCLE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUUvRSxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLE9BQU8sZUFBNkMsU0FBUSxhQUFnQjtJQW9CaEYsWUFBK0IsS0FBcUIsRUFBVyxTQUFnQyxFQUFFO1FBQy9GLEtBQUssRUFBRSxDQUFDO1FBRHFCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBNEI7UUFFL0YsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7U0FDeEU7UUFFRCxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFrQkQsR0FBRyxDQUFJLFVBQTRDLEVBQUUsTUFBeUI7UUFDNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUUsVUFBMkIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLFVBQStCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNuQixNQUFNO1lBQ04sT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRO1lBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztTQUNoQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM5QyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNuQixJQUFJLFFBQVEsRUFBRTtvQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDbkY7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN0Qjt5QkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUM3Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDdEI7aUJBQ0Y7YUFDRjtZQUVELElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ25CLE1BQU07Z0JBQ04sT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzVCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNyRSxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLE1BQU07Z0JBQ04sT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUTtnQkFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUFJLE1BQXdCLEVBQUUsTUFBeUI7UUFDeEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNuQixNQUFNO1lBQ04sT0FBTyxFQUFFLElBQUk7WUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1NBQ2hDLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTFELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3hELFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFDbkIsR0FBRyxDQUFDLENBQUMsY0FBbUIsRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ25CLE1BQU07Z0JBQ04sT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFVBQVUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVU7YUFDeEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNqRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLE1BQU07Z0JBQ04sT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUzthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBSSxFQUFnQixFQUFFLE1BQWlDLEVBQUUsTUFBNEI7UUFDekYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ25CLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztTQUNoQyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUUxRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUN4RCxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQ25CLEdBQUcsQ0FBQyxDQUFDLGNBQW1CLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsY0FBcUIsQ0FBQyxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDbkIsTUFBTTtnQkFDTixPQUFPLEVBQUUsY0FBYztnQkFDdkIsVUFBVSxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVTthQUN4QyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ2pGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDbkIsTUFBTTtnQkFDTixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsRUFBRTtnQkFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNjLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBSSxFQUFnQixFQUFFLE1BQTRCO1FBQ3RELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ25CLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztTQUNoQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNoRCxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQ25CLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNuQixNQUFNO2dCQUNOLE9BQU8sRUFBRSxHQUFHO2dCQUNaLFVBQVUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVU7YUFDeEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNqRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLE1BQU07Z0JBQ04sT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBVTthQUNqQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDYyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDTyxhQUFhLENBQUMsSUFBZ0I7UUFDdEMsSUFBSSxVQUFtQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ssaUJBQWlCLENBQUMsR0FBZ0M7UUFDeEQsT0FBUSxJQUFJLENBQUMsV0FBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLE1BQU0sTUFBTSxHQUEwQixFQUFFLENBQUM7UUFFekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDMUI7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDcEM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRVMsVUFBVSxDQUFDLE1BQW1CLEVBQUUsRUFBUTtRQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQWUsQ0FBQztRQUN6RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXJCLElBQUksR0FBRyxFQUFFO1lBQ1AsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pCLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQ25CO1FBRUQsSUFBSSxVQUFVLEVBQUU7WUFDZCxLQUFLLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztTQUMzQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLFdBQVcsQ0FBQyxNQUFrQixFQUFFLEtBQVUsRUFBRSxRQUFpQjtRQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLE1BQU07WUFDTixRQUFRO1lBQ1IsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlLCBFbnRpdHlTdGF0ZSwgRW50aXR5U3RvcmUsIGdldEVudGl0eVR5cGUsIGdldElEVHlwZSwgaXNEZWZpbmVkIH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXJyb3JBY3Rpb24sIHN1Y2Nlc3NBY3Rpb24gfSBmcm9tICcuL2FjdGlvbi1mYWN0b3J5JztcbmltcG9ydCB7IGlzSUQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZUFjdGlvbiwgSHR0cE1ldGhvZCwgTmdFbnRpdHlTZXJ2aWNlTm90aWZpZXIgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyJztcbmltcG9ydCB7IGRlZmF1bHRDb25maWcsIG1lcmdlRGVlcCwgTmdFbnRpdHlTZXJ2aWNlR2xvYmFsQ29uZmlnLCBOR19FTlRJVFlfU0VSVklDRV9DT05GSUcgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLmNvbmZpZyc7XG5pbXBvcnQgeyBOZ0VudGl0eVNlcnZpY2VMb2FkZXIgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLmxvYWRlcic7XG5pbXBvcnQgeyBIdHRwQWRkQ29uZmlnLCBIdHRwQ29uZmlnLCBIdHRwRGVsZXRlQ29uZmlnLCBIdHRwR2V0Q29uZmlnLCBIdHRwVXBkYXRlQ29uZmlnLCBOZ0VudGl0eVNlcnZpY2VQYXJhbXMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IG1hcFJlc3BvbnNlID0gPFQ+KGNvbmZpZz86IEh0dHBDb25maWc8VD4pID0+XG4gIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgY29uc3QgbWFwcGVkUmVzcG9uc2UgPSBjb25maWc/Lm1hcFJlc3BvbnNlRm4gPyBjb25maWcubWFwUmVzcG9uc2VGbihyZXMpIDogcmVzO1xuXG4gICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShtYXBwZWRSZXNwb25zZSkgPyBtYXBwZWRSZXNwb25zZSA6IG9mKG1hcHBlZFJlc3BvbnNlKTtcbiAgfSk7XG5cbmV4cG9ydCBjbGFzcyBOZ0VudGl0eVNlcnZpY2U8UyBleHRlbmRzIEVudGl0eVN0YXRlID0gYW55PiBleHRlbmRzIEVudGl0eVNlcnZpY2U8Uz4ge1xuICBiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxvYWRlcjogTmdFbnRpdHlTZXJ2aWNlTG9hZGVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmllcjogTmdFbnRpdHlTZXJ2aWNlTm90aWZpZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVyZ2VkQ29uZmlnOiBOZ0VudGl0eVNlcnZpY2VQYXJhbXMgJiBOZ0VudGl0eVNlcnZpY2VHbG9iYWxDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cE1ldGhvZE1hcDpcbiAgICB8IFBhcnRpYWw8e1xuICAgICAgICBHRVQ6IEh0dHBNZXRob2Q7XG4gICAgICAgIFBPU1Q6IEh0dHBNZXRob2Q7XG4gICAgICAgIFBBVENIOiBIdHRwTWV0aG9kO1xuICAgICAgICBQVVQ6IEh0dHBNZXRob2Q7XG4gICAgICAgIERFTEVURTogSHR0cE1ldGhvZDtcbiAgICAgIH0+XG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaFN1Y2Nlc3M6IChhY3Rpb246IFBhcnRpYWw8RW50aXR5U2VydmljZUFjdGlvbj4pID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGF0Y2hFcnJvcjogKGFjdGlvbjogUGFydGlhbDxFbnRpdHlTZXJ2aWNlQWN0aW9uPikgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IEVudGl0eVN0b3JlPFM+LCByZWFkb25seSBjb25maWc6IE5nRW50aXR5U2VydmljZVBhcmFtcyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgdGhpcy5sb2FkZXIgPSBpbmplY3QoTmdFbnRpdHlTZXJ2aWNlTG9hZGVyKTtcbiAgICB0aGlzLm5vdGlmaWVyID0gaW5qZWN0KE5nRW50aXR5U2VydmljZU5vdGlmaWVyKTtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSBpbmplY3QoTkdfRU5USVRZX1NFUlZJQ0VfQ09ORklHKTtcbiAgICB0aGlzLm1lcmdlZENvbmZpZyA9IG1lcmdlRGVlcCh7fSwgZGVmYXVsdENvbmZpZywgZ2xvYmFsQ29uZmlnLCB0aGlzLmdldERlY29yYXRvckNvbmZpZygpLCBjb25maWcpO1xuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMubWVyZ2VkQ29uZmlnLmJhc2VVcmw7XG4gICAgdGhpcy5odHRwTWV0aG9kTWFwID0gdGhpcy5tZXJnZWRDb25maWcuaHR0cE1ldGhvZHM7XG5cbiAgICB0aGlzLmRpc3BhdGNoU3VjY2VzcyA9IHN1Y2Nlc3NBY3Rpb24odGhpcy5zdG9yZS5zdG9yZU5hbWUsIHRoaXMubm90aWZpZXIpO1xuICAgIHRoaXMuZGlzcGF0Y2hFcnJvciA9IGVycm9yQWN0aW9uKHRoaXMuc3RvcmUuc3RvcmVOYW1lLCB0aGlzLm5vdGlmaWVyKTtcbiAgfVxuXG4gIGdldCBhcGkoKSB7XG4gICAgaWYgKCF0aGlzLmJhc2VVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYmFzZVVybCBvZiAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gaXMgbm90IGRlZmluZWQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLnJlc291cmNlTmFtZX1gO1xuICB9XG5cbiAgZ2V0IHJlc291cmNlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRDb25maWcucmVzb3VyY2VOYW1lIHx8IHRoaXMuc3RvcmUuc3RvcmVOYW1lO1xuICB9XG5cbiAgc2V0QmFzZVVybChiYXNlVXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICB9XG5cbiAgZ2V0SHR0cCgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwO1xuICB9XG5cbiAgZ2V0Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb25lIGVudGl0eSAtIENyZWF0ZXMgYSBHRVQgcmVxdWVzdFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBzZXJ2aWNlLmdldChpZCkuc3Vic2NyaWJlKClcbiAgICogc2VydmljZS5nZXQoaWQsIHsgaGVhZGVycywgcGFyYW1zLCB1cmwgfSkuc3Vic2NyaWJlKClcbiAgICovXG4gIGdldDxUPihpZD86IGdldElEVHlwZTxTPiwgY29uZmlnPzogSHR0cEdldENvbmZpZzxUPik6IE9ic2VydmFibGU8VD47XG4gIC8qKlxuICAgKiBHZXQgYWxsIGVudGl0aWVzIC0gQ3JlYXRlcyBhIEdFVCByZXF1ZXN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKClcbiAgICogc2VydmljZS5nZXQoeyBoZWFkZXJzLCBwYXJhbXMsIHVybCB9KS5zdWJzY3JpYmUoKVxuICAgKi9cbiAgZ2V0PFQ+KGNvbmZpZz86IEh0dHBHZXRDb25maWc8VD4pOiBPYnNlcnZhYmxlPFQ+O1xuICBnZXQ8VD4oaWRPckNvbmZpZz86IGdldElEVHlwZTxTPiB8IEh0dHBHZXRDb25maWc8VD4sIGNvbmZpZz86IEh0dHBHZXRDb25maWc8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldEh0dHBNZXRob2QoSHR0cE1ldGhvZC5HRVQpO1xuICAgIGNvbnN0IGlzU2luZ2xlID0gaXNJRChpZE9yQ29uZmlnKTtcbiAgICBjb25zdCBlbnRpdHlJZCA9IGlzU2luZ2xlID8gKGlkT3JDb25maWcgYXMgZ2V0SURUeXBlPFM+KSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb25mID0gKCFpc1NpbmdsZSA/IChpZE9yQ29uZmlnIGFzIEh0dHBHZXRDb25maWc8VD4pIDogY29uZmlnKSB8fCB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwoY29uZiwgZW50aXR5SWQpO1xuXG4gICAgdGhpcy5sb2FkZXIuZGlzcGF0Y2goe1xuICAgICAgbWV0aG9kLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIGVudGl0eUlkLFxuICAgICAgc3RvcmVOYW1lOiB0aGlzLnN0b3JlLnN0b3JlTmFtZSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChtZXRob2QsIHVybCwgY29uZikucGlwZShcbiAgICAgIG1hcFJlc3BvbnNlKGNvbmYpLFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFjb25mLnNraXBXcml0ZSkge1xuICAgICAgICAgIGlmIChpc1NpbmdsZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cHNlcnQoZW50aXR5SWQgYXMgYW55LCBkYXRhLCAoaWQsIG5ld1N0YXRlKSA9PiAoeyBpZCwgLi4ubmV3U3RhdGUgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY29uZi5hcHBlbmQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZS5hZGQoZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmYudXBzZXJ0KSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUudXBzZXJ0TWFueShkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hTdWNjZXNzKHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICBzdWNjZXNzTXNnOiBjb25mLnN1Y2Nlc3NNc2csXG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihtZXRob2QsIGVycm9yLCBjb25mLmVycm9yTXNnKSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyLmRpc3BhdGNoKHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgc3RvcmVOYW1lOiB0aGlzLnN0b3JlLnN0b3JlTmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGVudGl0eSAtIENyZWF0ZXMgYSBQT1NUIHJlcXVlc3RcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogc2VydmljZS5hZGQoZW50aXR5KS5zdWJzY3JpYmUoKVxuICAgKiBzZXJ2aWNlLmFkZChlbnRpdHksIGNvbmZpZykuc3Vic2NyaWJlKClcbiAgICovXG4gIGFkZDxUPihlbnRpdHk6IGdldEVudGl0eVR5cGU8Uz4sIGNvbmZpZz86IEh0dHBBZGRDb25maWc8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwoY29uZmlnKTtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldEh0dHBNZXRob2QoSHR0cE1ldGhvZC5QT1NUKTtcblxuICAgIHRoaXMubG9hZGVyLmRpc3BhdGNoKHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmUuc3RvcmVOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29uZmlnV2l0aEJvZHkgPSB7IC4uLmNvbmZpZywgLi4ueyBib2R5OiBlbnRpdHkgfSB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBjb25maWdXaXRoQm9keSkucGlwZShcbiAgICAgIG1hcFJlc3BvbnNlKGNvbmZpZyksXG4gICAgICB0YXAoKHJlc3BvbnNlRW50aXR5OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFjb25maWcgfHwgKGNvbmZpZyAmJiAhY29uZmlnLnNraXBXcml0ZSkpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmFkZChyZXNwb25zZUVudGl0eSwgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BhdGNoU3VjY2Vzcyh7XG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBheWxvYWQ6IHJlc3BvbnNlRW50aXR5LFxuICAgICAgICAgIHN1Y2Nlc3NNc2c6IGNvbmZpZyAmJiBjb25maWcuc3VjY2Vzc01zZyxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKG1ldGhvZCwgZXJyb3IsIGNvbmZpZyAmJiBjb25maWcuZXJyb3JNc2cpKSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkZXIuZGlzcGF0Y2goe1xuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmUuc3RvcmVOYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZW50aXR5IC0gQ3JlYXRlcyBhIFBVVC9QQVRDSCByZXF1ZXN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHNlcnZpY2UudXBkYXRlKGlkLCBlbnRpdHkpLnN1YnNjcmliZSgpXG4gICAqIHNlcnZpY2UudXBkYXRlKGlkLCBlbnRpdHksIGNvbmZpZykuc3Vic2NyaWJlKClcbiAgICovXG4gIHVwZGF0ZTxUPihpZDogZ2V0SURUeXBlPFM+LCBlbnRpdHk6IFBhcnRpYWw8Z2V0RW50aXR5VHlwZTxTPj4sIGNvbmZpZz86IEh0dHBVcGRhdGVDb25maWc8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwoY29uZmlnLCBpZCk7XG4gICAgY29uc3QgbWV0aG9kID0gKGNvbmZpZyAmJiBjb25maWcubWV0aG9kKSB8fCB0aGlzLmdldEh0dHBNZXRob2QoSHR0cE1ldGhvZC5QVVQpO1xuXG4gICAgdGhpcy5sb2FkZXIuZGlzcGF0Y2goe1xuICAgICAgbWV0aG9kLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIGVudGl0eUlkOiBpZCxcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZS5zdG9yZU5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25maWdXaXRoQm9keSA9IHsgLi4uY29uZmlnLCAuLi57IGJvZHk6IGVudGl0eSB9IH07XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QobWV0aG9kLCB1cmwsIGNvbmZpZ1dpdGhCb2R5KS5waXBlKFxuICAgICAgbWFwUmVzcG9uc2UoY29uZmlnKSxcbiAgICAgIHRhcCgocmVzcG9uc2VFbnRpdHk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpZyB8fCAoY29uZmlnICYmICFjb25maWcuc2tpcFdyaXRlKSkge1xuICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGlkLCByZXNwb25zZUVudGl0eSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hTdWNjZXNzKHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgcGF5bG9hZDogcmVzcG9uc2VFbnRpdHksXG4gICAgICAgICAgc3VjY2Vzc01zZzogY29uZmlnICYmIGNvbmZpZy5zdWNjZXNzTXNnLFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IobWV0aG9kLCBlcnJvciwgY29uZmlnICYmIGNvbmZpZy5lcnJvck1zZykpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRlci5kaXNwYXRjaCh7XG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIGVudGl0eUlkOiBpZCxcbiAgICAgICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmUuc3RvcmVOYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBlbnRpdHkgLSBDcmVhdGVzIGEgREVMRVRFIHJlcXVlc3RcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSgpXG4gICAqIHNlcnZpY2UuZGVsZXRlKGlkLCBjb25maWcpLnN1YnNjcmliZSgpXG4gICAqL1xuICBkZWxldGU8VD4oaWQ6IGdldElEVHlwZTxTPiwgY29uZmlnPzogSHR0cERlbGV0ZUNvbmZpZzxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb2x2ZVVybChjb25maWcsIGlkKTtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldEh0dHBNZXRob2QoSHR0cE1ldGhvZC5ERUxFVEUpO1xuXG4gICAgdGhpcy5sb2FkZXIuZGlzcGF0Y2goe1xuICAgICAgbWV0aG9kLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIGVudGl0eUlkOiBpZCxcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZS5zdG9yZU5hbWUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QobWV0aG9kLCB1cmwsIGNvbmZpZykucGlwZShcbiAgICAgIG1hcFJlc3BvbnNlKGNvbmZpZyksXG4gICAgICB0YXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICghY29uZmlnIHx8IChjb25maWcgJiYgIWNvbmZpZy5za2lwV3JpdGUpKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5yZW1vdmUoaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hTdWNjZXNzKHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgcGF5bG9hZDogcmVzLFxuICAgICAgICAgIHN1Y2Nlc3NNc2c6IGNvbmZpZyAmJiBjb25maWcuc3VjY2Vzc01zZyxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKG1ldGhvZCwgZXJyb3IsIGNvbmZpZyAmJiBjb25maWcuZXJyb3JNc2cpKSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkZXIuZGlzcGF0Y2goe1xuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICBlbnRpdHlJZDogaWQsXG4gICAgICAgICAgc3RvcmVOYW1lOiB0aGlzLnN0b3JlLnN0b3JlTmFtZSEsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbWFwcGVkIEh0dHBNZXRob2QuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IEh0dHBNZXRob2QgY2FuIGJlIGNoYW5nZWQgbGlrZSBzbzpcbiAgICogYGBgdHNcbiAgICoge1xuICAgKiAgIHByb3ZpZGU6IE5HX0VOVElUWV9TRVJWSUNFX0NPTkZJRyxcbiAgICogICB1c2VWYWx1ZToge1xuICAgKiAgICAgaHR0cE1ldGhvZHM6IHtcbiAgICogICAgICAgUFVUOiBIdHRwTWV0aG9kLlBBVENILFxuICAgKiAgICAgfSxcbiAgICogICB9IGFzIE5nRW50aXR5U2VydmljZUdsb2JhbENvbmZpZyxcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHR5cGUgSHR0cE1ldGhvZCB0byBnZXQgdGhlIHVzZXIgY29uZmlndXJlZCBIdHRwTWV0aG9kIGZvclxuICAgKiBAcmV0dXJucyBVc2VyIGNvbmZpZ3VyZWQgSHR0cE1ldGhvZCBmb3IgdGhlIG1ldGhvZCwgZWxzZSB0aGUgZGVmYXVsdCBIdHRwTWV0aG9kXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SHR0cE1ldGhvZCh0eXBlOiBIdHRwTWV0aG9kKSB7XG4gICAgbGV0IGh0dHBNZXRob2QhOiBIdHRwTWV0aG9kIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmh0dHBNZXRob2RNYXApIHtcbiAgICAgIGh0dHBNZXRob2QgPSB0aGlzLmh0dHBNZXRob2RNYXBbdHlwZV07XG4gICAgfVxuICAgIGlmICghaHR0cE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIEh0dHBNZXRob2QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHR0cE1ldGhvZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBnaXZlbiB2aWEgdGhlIE5nRW50aXR5U2VydmljZUNvbmZpZyBkZWNvcmF0b3JcbiAgICpcbiAgICogYGBgdHNcbiAgICogQE5nRW50aXR5U2VydmljZUNvbmZpZyh7XG4gICAqICAgYmFzZVVybDogJ2ZvbycsXG4gICAqICAgcmVzb3VyY2VOYW1lOiAnYmFyJyxcbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgVGhlIHByb3BlcnR5IGtleVxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGdpdmVuIGRlY29yYXRvciBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2V0RGVjb3JhdG9yVmFsdWUoa2V5OiBrZXlvZiBOZ0VudGl0eVNlcnZpY2VQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpW2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVjb3JhdG9yQ29uZmlnKCkge1xuICAgIGNvbnN0IGNvbmZpZzogTmdFbnRpdHlTZXJ2aWNlUGFyYW1zID0ge307XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5nZXREZWNvcmF0b3JWYWx1ZSgnYmFzZVVybCcpO1xuICAgIGlmIChiYXNlVXJsKSB7XG4gICAgICBjb25maWcuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gdGhpcy5nZXREZWNvcmF0b3JWYWx1ZSgncmVzb3VyY2VOYW1lJyk7XG4gICAgaWYgKHJlc291cmNlTmFtZSkge1xuICAgICAgY29uZmlnLnJlc291cmNlTmFtZSA9IHJlc291cmNlTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVVcmwoY29uZmlnPzogSHR0cENvbmZpZywgaWQ/OiBhbnkpIHtcbiAgICBjb25zdCB7IHVybCwgdXJsUG9zdGZpeCB9ID0gT2JqZWN0KGNvbmZpZykgYXMgSHR0cENvbmZpZztcbiAgICBsZXQgZmluYWwgPSB0aGlzLmFwaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgaWYgKGlzRGVmaW5lZChpZCkpIHtcbiAgICAgIGZpbmFsICs9IGAvJHtpZH1gO1xuICAgIH1cblxuICAgIGlmICh1cmxQb3N0Zml4KSB7XG4gICAgICBmaW5hbCArPSBgLyR7dXJsUG9zdGZpeH1gO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5hbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVFcnJvcihtZXRob2Q6IEh0dHBNZXRob2QsIGVycm9yOiBhbnksIGVycm9yTXNnPzogc3RyaW5nKTogYW55IHtcbiAgICB0aGlzLmRpc3BhdGNoRXJyb3Ioe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXJyb3JNc2csXG4gICAgICBwYXlsb2FkOiBlcnJvcixcbiAgICB9KTtcblxuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtYWtpdGEtbmctZW50aXR5LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1lbnRpdHktc2VydmljZS9zcmMvZGF0b3JhbWEtYWtpdGEtbmctZW50aXR5LXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}