@ethlete/query 0.1.0-next.11 → 0.1.0-next.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/auth/auth-provider.types.mjs +1 -1
- package/esm2020/lib/auth/bearer-auth-provider.mjs +9 -1
- package/fesm2015/ethlete-query.mjs +9 -1
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +8 -0
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/auth/auth-provider.types.d.ts +5 -0
- package/lib/auth/bearer-auth-provider.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethlete-query.mjs","sources":["../esm2020/lib/auth/custom-header-auth-provider.mjs","../esm2020/lib/auth/basic-auth-provider.mjs","../esm2020/lib/logger/logger.mjs","../esm2020/lib/request/request.util.mjs","../esm2020/lib/request/request.mjs","../esm2020/lib/auth/auth-provider.utils.mjs","../esm2020/lib/auth/bearer-auth-provider.mjs","../esm2020/lib/gql/gql.mjs","../esm2020/lib/query/query.utils.mjs","../esm2020/lib/query/query.mjs","../esm2020/lib/directives/query.directive.mjs","../esm2020/lib/infinite-query/infinity-query.mjs","../esm2020/lib/infinite-query/infinity-query.utils.mjs","../esm2020/lib/directives/infinity-query.directive.mjs","../esm2020/lib/directives/infinity-query-trigger.directive.mjs","../esm2020/lib/query-store/query-store.mjs","../esm2020/lib/query-client/query-client.utils.mjs","../esm2020/lib/query-client/query-client.mjs","../esm2020/lib/query-form/query-form.mjs","../esm2020/lib/query-form/query-form.utils.mjs","../esm2020/lib/utils/deep-freeze.util.mjs","../esm2020/lib/utils/def.util.mjs","../esm2020/ethlete-query.mjs"],"sourcesContent":["export class CustomHeaderAuthProvider {\n get header() {\n return { [this._config.name]: this._config.value };\n }\n constructor(_config) {\n this._config = _config;\n this.queryClient = null;\n }\n cleanUp() {\n // noop\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2F1dGgvY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFJRCxZQUFvQixPQUF1QztRQUF2QyxZQUFPLEdBQVAsT0FBTyxDQUFnQztRQUYzRCxnQkFBVyxHQUF1QixJQUFJLENBQUM7SUFFdUIsQ0FBQztJQUUvRCxPQUFPO1FBQ0wsT0FBTztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IEF1dGhQcm92aWRlciwgQXV0aFByb3ZpZGVyQ3VzdG9tSGVhZGVyQ29uZmlnIH0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIGdldCBoZWFkZXIoKSB7XG4gICAgcmV0dXJuIHsgW3RoaXMuX2NvbmZpZy5uYW1lXTogdGhpcy5fY29uZmlnLnZhbHVlIH07XG4gIH1cblxuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZykge31cblxuICBjbGVhblVwKCk6IHZvaWQge1xuICAgIC8vIG5vb3BcbiAgfVxufVxuIl19","export class BasicAuthProvider {\n get header() {\n return { Authorization: `Basic ${this._basicAuthString}` };\n }\n get _basicAuthString() {\n return btoa(`${this._config.username}:${this._config.password}`);\n }\n constructor(_config) {\n this._config = _config;\n this.queryClient = null;\n }\n cleanUp() {\n // noop\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtYXV0aC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2Jhc2ljLWF1dGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLE1BQU07UUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUlELFlBQW9CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBRnBELGdCQUFXLEdBQXVCLElBQUksQ0FBQztJQUVnQixDQUFDO0lBRXhELE9BQU87UUFDTCxPQUFPO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyLCBBdXRoUHJvdmlkZXJCYXNpY0NvbmZpZyB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBCYXNpY0F1dGhQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIGdldCBoZWFkZXIoKSB7XG4gICAgcmV0dXJuIHsgQXV0aG9yaXphdGlvbjogYEJhc2ljICR7dGhpcy5fYmFzaWNBdXRoU3RyaW5nfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9iYXNpY0F1dGhTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGJ0b2EoYCR7dGhpcy5fY29uZmlnLnVzZXJuYW1lfToke3RoaXMuX2NvbmZpZy5wYXNzd29yZH1gKTtcbiAgfVxuXG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogQXV0aFByb3ZpZGVyQmFzaWNDb25maWcpIHt9XG5cbiAgY2xlYW5VcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG4gIH1cbn1cbiJdfQ==","export const buildErrorMessage = (code, message) => `[@ethlete\\\\query:${code}] ${message}`;\nexport class QueryError extends Error {\n constructor(code, message, data) {\n super(buildErrorMessage(code, message));\n this.name = 'QueryError';\n this.data = data;\n }\n}\nexport const invalidBaseRouteError = (data) => new QueryError('001', 'The baseRoute must not end with a slash', data);\nexport const invalidRouteError = (data) => new QueryError('002', 'The route must start with a slash', data);\nexport const pathParamsMissingInRouteFunctionError = (data) => new QueryError('003', 'The route is a function but pathParams are missing', data);\nexport const queryStateAlreadyHasKeyError = (data) => new QueryError('004', 'The query state already contains the provided key', data);\nexport const queryStateDoesNotContainKeyError = (data) => new QueryError('005', 'The query state does not contain the provided key', data);\nexport const queryStateCannotTransformError = (data) => new QueryError('006', 'The query state cannot be transformed because it is not loading', data);\nexport const invalidBodyError = (data) => new QueryError('007', 'The body is not valid or upsupported', data);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2xvZ2dlci9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO0FBRTNHLE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUduQyxZQUFZLElBQVksRUFBRSxPQUFlLEVBQUUsSUFBYztRQUN2RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUNyRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUseUNBQXlDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVySCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ3JFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxvREFBb0QsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVwRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQzVELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtREFBbUQsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ2hFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtREFBbUQsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQzlELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxpRUFBaUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGJ1aWxkRXJyb3JNZXNzYWdlID0gKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiBgW0BldGhsZXRlXFxcXHF1ZXJ5OiR7Y29kZX1dICR7bWVzc2FnZX1gO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZGF0YT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKSB7XG4gICAgc3VwZXIoYnVpbGRFcnJvck1lc3NhZ2UoY29kZSwgbWVzc2FnZSkpO1xuICAgIHRoaXMubmFtZSA9ICdRdWVyeUVycm9yJztcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBpbnZhbGlkQmFzZVJvdXRlRXJyb3IgPSAoZGF0YTogdW5rbm93bikgPT5cbiAgbmV3IFF1ZXJ5RXJyb3IoJzAwMScsICdUaGUgYmFzZVJvdXRlIG11c3Qgbm90IGVuZCB3aXRoIGEgc2xhc2gnLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IGludmFsaWRSb3V0ZUVycm9yID0gKGRhdGE6IHVua25vd24pID0+IG5ldyBRdWVyeUVycm9yKCcwMDInLCAnVGhlIHJvdXRlIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoJywgZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yID0gKGRhdGE6IHVua25vd24pID0+XG4gIG5ldyBRdWVyeUVycm9yKCcwMDMnLCAnVGhlIHJvdXRlIGlzIGEgZnVuY3Rpb24gYnV0IHBhdGhQYXJhbXMgYXJlIG1pc3NpbmcnLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5U3RhdGVBbHJlYWR5SGFzS2V5RXJyb3IgPSAoZGF0YTogdW5rbm93bikgPT5cbiAgbmV3IFF1ZXJ5RXJyb3IoJzAwNCcsICdUaGUgcXVlcnkgc3RhdGUgYWxyZWFkeSBjb250YWlucyB0aGUgcHJvdmlkZWQga2V5JywgZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBxdWVyeVN0YXRlRG9lc05vdENvbnRhaW5LZXlFcnJvciA9IChkYXRhOiB1bmtub3duKSA9PlxuICBuZXcgUXVlcnlFcnJvcignMDA1JywgJ1RoZSBxdWVyeSBzdGF0ZSBkb2VzIG5vdCBjb250YWluIHRoZSBwcm92aWRlZCBrZXknLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5U3RhdGVDYW5ub3RUcmFuc2Zvcm1FcnJvciA9IChkYXRhOiB1bmtub3duKSA9PlxuICBuZXcgUXVlcnlFcnJvcignMDA2JywgJ1RoZSBxdWVyeSBzdGF0ZSBjYW5ub3QgYmUgdHJhbnNmb3JtZWQgYmVjYXVzZSBpdCBpcyBub3QgbG9hZGluZycsIGRhdGEpO1xuXG5leHBvcnQgY29uc3QgaW52YWxpZEJvZHlFcnJvciA9IChkYXRhOiB1bmtub3duKSA9PiBuZXcgUXVlcnlFcnJvcignMDA3JywgJ1RoZSBib2R5IGlzIG5vdCB2YWxpZCBvciB1cHN1cHBvcnRlZCcsIGRhdGEpO1xuIl19","import { invalidBaseRouteError, invalidBodyError, invalidRouteError, pathParamsMissingInRouteFunctionError, } from '../logger';\nexport const isRequestError = (error) => error instanceof Object && 'code' in error && 'message' in error;\nexport const isAbortRequestError = (error) => isRequestError(error) && error.code === -1;\nexport const buildRoute = (options) => {\n if (options.base.endsWith('/')) {\n throw invalidBaseRouteError(options.base);\n }\n let route = null;\n if (typeof options.route === 'function') {\n if (!options.pathParams) {\n throw pathParamsMissingInRouteFunctionError(options.route({}));\n }\n route = options.route(options.pathParams);\n }\n else {\n route = options.route ?? null;\n }\n if (route && !route.startsWith('/')) {\n throw invalidRouteError(route);\n }\n if (options.queryParams) {\n const queryString = buildQueryString(options.queryParams);\n if (queryString) {\n route = route ? `${route}?${queryString}` : `/?${queryString}`;\n }\n }\n return `${options.base}${route ?? ''}`;\n};\nexport const buildQueryString = (params) => {\n const validParams = filterInvalidParams(params);\n const queryString = Object.keys(validParams)\n .map((key) => Array.isArray(validParams[key])\n ? buildQueryArrayString(key, validParams[key])\n : `${key}=${encodeURIComponent(validParams[key])}`)\n .join('&');\n return queryString || null;\n};\nexport const buildQueryArrayString = (key, array) => {\n const uriBrackets = encodeURIComponent('[]');\n return array\n .slice()\n .map((item) => `${key}${uriBrackets}=${encodeURIComponent(item)}`)\n .join('&');\n};\nexport const isFetchResponse = (response) => typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'statusText' in response &&\n 'json' in response &&\n typeof response['json'] === 'function';\nexport const filterInvalidParams = (params) => {\n const filteredParams = Object.entries(params)\n .map(([key, value]) => {\n if (!Array.isArray(value)) {\n return [key, value];\n }\n return [key, value.filter((v) => isParamValid(v))];\n })\n .filter(([, value]) => isParamValid(value))\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n return filteredParams;\n};\nexport const isParamValid = (primitive) => {\n if (primitive === undefined || primitive === null || primitive === '') {\n return false;\n }\n if (typeof primitive === 'string' && primitive.trim() === '') {\n return false;\n }\n if (typeof primitive === 'number' && isNaN(primitive)) {\n return false;\n }\n return true;\n};\nexport const extractExpiresInSeconds = (headers) => {\n const cacheControl = headers.get('cache-control');\n const age = headers.get('age');\n const expires = headers.get('expires');\n // In seconds\n let expiresIn = null;\n let maxAge = null;\n if (cacheControl?.includes('no-cache')) {\n return null;\n }\n if (cacheControl?.includes('max-age')) {\n maxAge = parseInt(cacheControl.split('max-age=')[1]);\n }\n else if (cacheControl?.includes('s-maxage')) {\n maxAge = parseInt(cacheControl.split('s-maxage=')[1]);\n }\n if (maxAge && age) {\n const ageSeconds = parseInt(age);\n expiresIn = maxAge - ageSeconds;\n }\n else if (expires) {\n // Used by some apis to tell the response will never expire\n // In this case we let the response expire after 1 hour\n if (expires === '-1') {\n expiresIn = 3600;\n }\n else {\n const expiresDate = new Date(expires);\n // check if the date is valid\n if (expiresDate.toString() !== 'Invalid Date') {\n expiresIn = Math.floor((expiresDate.getTime() - Date.now()) / 1000);\n }\n }\n }\n return expiresIn;\n};\nexport const buildTimestampFromSeconds = (seconds) => {\n if (seconds === null) {\n return null;\n }\n return new Date(Date.now() + seconds * 1000).getTime();\n};\nexport const buildRequestError = async (error, route, requestInit) => {\n if (error instanceof DOMException && error.code === error.ABORT_ERR) {\n const err = {\n code: -1,\n message: 'Request aborted',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (error instanceof SyntaxError) {\n const err = {\n code: -3,\n message: 'Syntax error',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (error instanceof Error) {\n const err = {\n code: -2,\n message: `${error.name}: ${error.message}`,\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (isFetchResponse(error)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let detail = null;\n try {\n detail = await error.json();\n }\n catch {\n // noop\n }\n if (!detail) {\n try {\n detail = await error.text();\n }\n catch {\n // noop\n }\n }\n const err = {\n code: error.status,\n message: error.statusText,\n detail,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n const err = {\n code: 0,\n message: 'Unknown error',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n};\nexport const buildBody = (body) => {\n if (body === undefined || body === null) {\n return null;\n }\n if (typeof body === 'string') {\n return body;\n }\n if (typeof body === 'object') {\n return JSON.stringify(body);\n }\n if (body instanceof FormData) {\n return body;\n }\n throw invalidBodyError(body);\n};\nexport const transformMethod = (method) => {\n if (method === 'GQL_QUERY' || method === 'GQL_MUTATE') {\n return 'POST';\n }\n return method;\n};\nexport const guessContentType = (body) => {\n if (body === null || body === undefined) {\n return null;\n }\n if (typeof body === 'string') {\n return 'text/plain';\n }\n if (body instanceof FormData) {\n return 'multipart/form-data';\n }\n if (typeof body === 'object') {\n return 'application/json';\n }\n return null;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixxQ0FBcUMsR0FDdEMsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUF5QixFQUFFLENBQ3RFLEtBQUssWUFBWSxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBYyxFQUF5QixFQUFFLENBQzNFLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BSzFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN2QixNQUFNLHFDQUFxQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUVELEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztTQUFNO1FBQ0wsS0FBSyxHQUFH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SUFBSSxZQUFZLFFBQVEsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNoRCxJQUFJLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxLQUFLLFlBQVksRUFBRTtRQUNyRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtJQUNoRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFFRCxJQUFJLElBQUksWUFBWSxRQUFRLEVBQUU7UUFDNUIsT0FBTyxxQkFBcUIsQ0FBQztLQUM5QjtJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLE9BQU8sa0JBQWtCLENBQUM7S0FDM0I7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGludmFsaWRCYXNlUm91dGVFcnJvcixcbiAgaW52YWxpZEJvZHlFcnJvcixcbiAgaW52YWxpZFJvdXRlRXJyb3IsXG4gIHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3IsXG59IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBNZXRob2QsIFBhcmFtQXJyYXksIFBhcmFtcywgUXVlcnlQYXJhbXMsIFJlcXVlc3RFcnJvciwgVW5maWx0ZXJlZFBhcmFtUHJpbWl0aXZlIH0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzUmVxdWVzdEVycm9yID0gKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yID0+XG4gIGVycm9yIGluc3RhbmNlb2YgT2JqZWN0ICYmICdjb2RlJyBpbiBlcnJvciAmJiAnbWVzc2FnZScgaW4gZXJyb3I7XG5cbmV4cG9ydCBjb25zdCBpc0Fib3J0UmVxdWVzdEVycm9yID0gKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yID0+XG4gIGlzUmVxdWVzdEVycm9yKGVycm9yKSAmJiBlcnJvci5jb2RlID09PSAtMTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUm91dGUgPSAob3B0aW9uczoge1xuICBiYXNlOiBzdHJpbmc7XG4gIHJvdXRlOiAoKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcpIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xufSkgPT4ge1xuICBpZiAob3B0aW9ucy5iYXNlLmVuZHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkQmFzZVJvdXRlRXJyb3Iob3B0aW9ucy5iYXNlKTtcbiAgfVxuXG4gIGxldCByb3V0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhdGhQYXJhbXMpIHtcbiAgICAgIHRocm93IHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3Iob3B0aW9ucy5yb3V0ZSh7fSkpO1xuICAgIH1cblxuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZShvcHRpb25zLnBhdGhQYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZSA/PyBudWxsO1xuICB9XG5cbiAgaWYgKHJvdXRlICYmICFyb3V0ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkUm91dGVFcnJvcihyb3V0ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYnVpbGRRdWVyeVN0cmluZyhvcHRpb25zLnF1ZXJ5UGFyYW1zKTtcblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgcm91dGUgPSByb3V0ZSA/IGAke3JvdXRlfT8ke3F1ZXJ5U3RyaW5nfWAgOiBgLz8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke29wdGlvbnMuYmFzZX0ke3JvdXRlID8/ICcnfWA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRRdWVyeVN0cmluZyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiB7XG4gIGNvbnN0IHZhbGlkUGFyYW1zID0gZmlsdGVySW52YWxpZFBhcmFtcyhwYXJhbXMpO1xuXG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXModmFsaWRQYXJhbXMpXG4gICAgLm1hcCgoa2V5KSA9PlxuICAgICAgQXJyYXkuaXNBcnJheSh2YWxpZFBhcmFtc1trZXldKVxuICAgICAgICA/IGJ1aWxkUXVlcnlBcnJheVN0cmluZyhrZXksIHZhbGlkUGFyYW1zW2tleV0gYXMgUGFyYW1BcnJheSlcbiAgICAgICAgOiBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbGlkUGFyYW1zW2tleV0gYXMgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbil9YCxcbiAgICApXG4gICAgLmpvaW4oJyYnKTtcblxuICByZXR1cm4gcXVlcnlTdHJpbmcgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5QXJyYXlTdHJpbmcgPSAoa2V5OiBzdHJpbmcsIGFycmF5OiBQYXJhbUFycmF5KSA9PiB7XG4gIGNvbnN0IHVyaUJyYWNrZXRzID0gZW5jb2RlVVJJQ29tcG9uZW50KCdbXScpO1xuXG4gIHJldHVybiBhcnJheVxuICAgIC5zbGljZSgpXG4gICAgLm1hcCgoaXRlbSkgPT4gYCR7a2V5fSR7dXJpQnJhY2tldHN9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0gYXMgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbil9YClcbiAgICAuam9pbignJicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRmV0Y2hSZXNwb25zZSA9IChyZXNwb25zZTogdW5rbm93bik6IHJlc3BvbnNlIGlzIFJlc3BvbnNlID0+XG4gIHR5cGVvZiByZXNwb25zZSA9PT0gJ29iamVjdCcgJiZcbiAgcmVzcG9uc2UgIT09IG51bGwgJiZcbiAgJ3N0YXR1cycgaW4gcmVzcG9uc2UgJiZcbiAgJ3N0YXR1c1RleHQnIGluIHJlc3BvbnNlICYmXG4gICdqc29uJyBpbiByZXNwb25zZSAmJlxuICB0eXBlb2YgKHJlc3BvbnNlIGFzIFJlc3BvbnNlKVsnanNvbiddID09PSAnZnVuY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgZmlsdGVySW52YWxpZFBhcmFtcyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGZpbHRlcmVkUGFyYW1zOiBQYXJhbXMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBba2V5LCB2YWx1ZS5maWx0ZXIoKHYpID0+IGlzUGFyYW1WYWxpZCh2KSldO1xuICAgIH0pXG4gICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiBpc1BhcmFtVmFsaWQodmFsdWUgYXMgVW5maWx0ZXJlZFBhcmFtUHJpbWl0aXZlKSlcbiAgICAucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4uYWNjLCBba2V5IGFzIHN0cmluZ106IHZhbHVlIH0pLCB7fSk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGFyYW1WYWxpZCA9IChwcmltaXRpdmU6IFVuZmlsdGVyZWRQYXJhbVByaW1pdGl2ZSkgPT4ge1xuICBpZiAocHJpbWl0aXZlID09PSB1bmRlZmluZWQgfHwgcHJpbWl0aXZlID09PSBudWxsIHx8IHByaW1pdGl2ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1pdGl2ZSA9PT0gJ3N0cmluZycgJiYgcHJpbWl0aXZlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1pdGl2ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4ocHJpbWl0aXZlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzID0gKGhlYWRlcnM6IEhlYWRlcnMpID0+IHtcbiAgY29uc3QgY2FjaGVDb250cm9sID0gaGVhZGVycy5nZXQoJ2NhY2hlLWNvbnRyb2wnKTtcbiAgY29uc3QgYWdlID0gaGVhZGVycy5nZXQoJ2FnZScpO1xuICBjb25zdCBleHBpcmVzID0gaGVhZGVycy5nZXQoJ2V4cGlyZXMnKTtcblxuICAvLyBJbiBzZWNvbmRzXG4gIGxldCBleHBpcmVzSW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4QWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygnbm8tY2FjaGUnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ21heC1hZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgnbWF4LWFnZT0nKVsxXSk7XG4gIH0gZWxzZSBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygncy1tYXhhZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV0pO1xuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAoZXhwaXJlcykge1xuICAgIC8vIFVzZWQgYnkgc29tZSBhcGlzIHRvIHRlbGwgdGhlIHJlc3BvbnNlIHdpbGwgbmV2ZXIgZXhwaXJlXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGxldCB0aGUgcmVzcG9uc2UgZXhwaXJlIGFmdGVyIDEgaG91clxuICAgIGlmIChleHBpcmVzID09PSAnLTEnKSB7XG4gICAgICBleHBpcmVzSW4gPSAzNjAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleHBpcmVzRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xuXG4gICAgICAvLyBjaGVjayBpZiB0aGUgZGF0ZSBpcyB2YWxpZFxuICAgICAgaWYgKGV4cGlyZXNEYXRlLnRvU3RyaW5nKCkgIT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIGV4cGlyZXNJbiA9IE1hdGguZmxvb3IoKGV4cGlyZXNEYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cGlyZXNJbjtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzID0gKHNlY29uZHM6IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKHNlY29uZHMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDApLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFJlcXVlc3RFcnJvciA9IGFzeW5jIDxFcnJvclJlc3BvbnNlID0gdW5rbm93bj4oXG4gIGVycm9yOiB1bmtub3duLFxuICByb3V0ZTogc3RyaW5nLFxuICByZXF1ZXN0SW5pdD86IFJlcXVlc3RJbml0LFxuKSA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnJvci5jb2RlID09PSBlcnJvci5BQk9SVF9FUlIpIHtcbiAgICBjb25zdCBlcnI6IFJlcXVlc3RFcnJvcjxudWxsPiA9IHtcbiAgICAgIGNvZGU6IC0xLFxuICAgICAgbWVzc2FnZTogJ1JlcXVlc3QgYWJvcnRlZCcsXG4gICAgICBkZXRhaWw6IG51bGwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgY29uc3QgZXJyOiBSZXF1ZXN0RXJyb3I8bnVsbD4gPSB7XG4gICAgICBjb2RlOiAtMyxcbiAgICAgIG1lc3NhZ2U6ICdTeW50YXggZXJyb3InLFxuICAgICAgZGV0YWlsOiBudWxsLFxuICAgICAgcmF3OiBlcnJvcixcbiAgICAgIHJvdXRlLFxuICAgICAgcmVxdWVzdEluaXQsXG4gICAgfTtcblxuICAgIHJldHVybiBlcnI7XG4gIH1cblxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGNvbnN0IGVycjogUmVxdWVzdEVycm9yPG51bGw+ID0ge1xuICAgICAgY29kZTogLTIsXG4gICAgICBtZXNzYWdlOiBgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICBkZXRhaWw6IG51bGwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGlmIChpc0ZldGNoUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBsZXQgZGV0YWlsOiBhbnkgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRldGFpbCA9IGF3YWl0IGVycm9yLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICBpZiAoIWRldGFpbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGV0YWlsID0gYXdhaXQgZXJyb3IudGV4dCgpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlcnI6IFJlcXVlc3RFcnJvcjxFcnJvclJlc3BvbnNlPiA9IHtcbiAgICAgIGNvZGU6IGVycm9yLnN0YXR1cyxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBkZXRhaWwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGNvbnN0IGVycjogUmVxdWVzdEVycm9yPG51bGw+ID0ge1xuICAgIGNvZGU6IDAsXG4gICAgbWVzc2FnZTogJ1Vua25vd24gZXJyb3InLFxuICAgIGRldGFpbDogbnVsbCxcbiAgICByYXc6IGVycm9yLFxuICAgIHJvdXRlLFxuICAgIHJlcXVlc3RJbml0LFxuICB9O1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRCb2R5ID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgaWYgKGJvZHkgPT09IHVuZGVmaW5lZCB8fCBib2R5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICB9XG5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgdGhyb3cgaW52YWxpZEJvZHlFcnJvcihib2R5KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1NZXRob2QgPSAobWV0aG9kOiBNZXRob2QpID0+IHtcbiAgaWYgKG1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgbWV0aG9kID09PSAnR1FMX01VVEFURScpIHtcbiAgICByZXR1cm4gJ1BPU1QnO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZDtcbn07XG5cbmV4cG9ydCBjb25zdCBndWVzc0NvbnRlbnRUeXBlID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3BsYWluJztcbiAgfVxuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vanNvbic7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4iXX0=","import { buildRequestError, buildTimestampFromSeconds, extractExpiresInSeconds } from './request.util';\nexport const request = async (options) => {\n try {\n const response = await fetch(options.route, options.init);\n if (!response.ok) {\n throw response;\n }\n const isJsonResponse = response.headers.get('Content-Type')?.includes('application/json');\n const isTextResponse = response.headers.get('Content-Type')?.includes('text/plain');\n const data = (isJsonResponse ? await response.json() : isTextResponse ? await response.text() : null);\n const expiresInSeconds = options.cacheAdapter\n ? options.cacheAdapter(response.headers)\n : extractExpiresInSeconds(response.headers);\n const expiresInTimestamp = buildTimestampFromSeconds(expiresInSeconds);\n return { data, expiresInTimestamp };\n }\n catch (error) {\n throw await buildRequestError(error, options.route, options.init);\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBc0IsT0FJakQsRUFBRSxFQUFFO0lBQ0gsSUFBSTtRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sUUFBUSxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBGLE1BQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFhLENBQUM7UUFFbEgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsWUFBWTtZQUMzQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsTUFBTSxNQUFNLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuRTtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlQWRhcHRlckZuIH0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcbmltcG9ydCB7IGJ1aWxkUmVxdWVzdEVycm9yLCBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzLCBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyB9IGZyb20gJy4vcmVxdWVzdC51dGlsJztcblxuZXhwb3J0IGNvbnN0IHJlcXVlc3QgPSBhc3luYyA8UmVzcG9uc2UgPSB1bmtub3duPihvcHRpb25zOiB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIGluaXQ/OiBSZXF1ZXN0SW5pdDtcbiAgY2FjaGVBZGFwdGVyPzogQ2FjaGVBZGFwdGVyRm47XG59KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChvcHRpb25zLnJvdXRlLCBvcHRpb25zLmluaXQpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaXNKc29uUmVzcG9uc2UgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJyk/LmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgY29uc3QgaXNUZXh0UmVzcG9uc2UgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJyk/LmluY2x1ZGVzKCd0ZXh0L3BsYWluJyk7XG5cbiAgICBjb25zdCBkYXRhID0gKGlzSnNvblJlc3BvbnNlID8gYXdhaXQgcmVzcG9uc2UuanNvbigpIDogaXNUZXh0UmVzcG9uc2UgPyBhd2FpdCByZXNwb25zZS50ZXh0KCkgOiBudWxsKSBhcyBSZXNwb25zZTtcblxuICAgIGNvbnN0IGV4cGlyZXNJblNlY29uZHMgPSBvcHRpb25zLmNhY2hlQWRhcHRlclxuICAgICAgPyBvcHRpb25zLmNhY2hlQWRhcHRlcihyZXNwb25zZS5oZWFkZXJzKVxuICAgICAgOiBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyhyZXNwb25zZS5oZWFkZXJzKTtcblxuICAgIGNvbnN0IGV4cGlyZXNJblRpbWVzdGFtcCA9IGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMoZXhwaXJlc0luU2Vjb25kcyk7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcmVzSW5UaW1lc3RhbXAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBhd2FpdCBidWlsZFJlcXVlc3RFcnJvcihlcnJvciwgb3B0aW9ucy5yb3V0ZSwgb3B0aW9ucy5pbml0KTtcbiAgfVxufTtcbiJdfQ==","import { BasicAuthProvider } from './basic-auth-provider';\nimport { BearerAuthProvider } from './bearer-auth-provider';\nimport { CustomHeaderAuthProvider } from './custom-header-auth-provider';\nexport const isBasicAuthProvider = (authProvider) => authProvider instanceof BasicAuthProvider;\nexport const isBearerAuthProvider = (authProvider) => authProvider instanceof BearerAuthProvider;\nexport const isCustomHeaderAuthProvider = (authProvider) => authProvider instanceof CustomHeaderAuthProvider;\nexport const decryptBearer = (token) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''));\n return JSON.parse(jsonPayload);\n }\n catch (error) {\n console.error(`Invalid bearer token: ${token}`, error);\n return null;\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxZQUEwQixFQUFxQyxFQUFFLENBQ25HLFlBQVksWUFBWSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFlBQTBCLEVBQXNDLEVBQUUsQ0FDckcsWUFBWSxZQUFZLGtCQUFrQixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsWUFBMEIsRUFBNEMsRUFBRSxDQUNqSCxZQUFZLFlBQVksd0JBQXdCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQW1DLEtBQWEsRUFBRSxFQUFFO0lBQy9FLElBQUk7UUFDRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDVCxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ1osQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQVcsQ0FBQztLQUMxQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkQsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5pbXBvcnQgeyBCYXNpY0F1dGhQcm92aWRlciB9IGZyb20gJy4vYmFzaWMtYXV0aC1wcm92aWRlcic7XG5pbXBvcnQgeyBCZWFyZXJBdXRoUHJvdmlkZXIgfSBmcm9tICcuL2JlYXJlci1hdXRoLXByb3ZpZGVyJztcbmltcG9ydCB7IEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciB9IGZyb20gJy4vY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyJztcblxuZXhwb3J0IGNvbnN0IGlzQmFzaWNBdXRoUHJvdmlkZXIgPSAoYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBhdXRoUHJvdmlkZXIgaXMgQmFzaWNBdXRoUHJvdmlkZXIgPT5cbiAgYXV0aFByb3ZpZGVyIGluc3RhbmNlb2YgQmFzaWNBdXRoUHJvdmlkZXI7XG5cbmV4cG9ydCBjb25zdCBpc0JlYXJlckF1dGhQcm92aWRlciA9IChhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcik6IGF1dGhQcm92aWRlciBpcyBCZWFyZXJBdXRoUHJvdmlkZXIgPT5cbiAgYXV0aFByb3ZpZGVyIGluc3RhbmNlb2YgQmVhcmVyQXV0aFByb3ZpZGVyO1xuXG5leHBvcnQgY29uc3QgaXNDdXN0b21IZWFkZXJBdXRoUHJvdmlkZXIgPSAoYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBhdXRoUHJvdmlkZXIgaXMgQ3VzdG9tSGVhZGVyQXV0aFByb3ZpZGVyID0+XG4gIGF1dGhQcm92aWRlciBpbnN0YW5jZW9mIEN1c3RvbUhlYWRlckF1dGhQcm92aWRlcjtcblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRCZWFyZXIgPSA8UmVzdWx0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHRva2VuOiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgIGNvbnN0IGJhc2U2NCA9IGJhc2U2NFVybC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICAgIGNvbnN0IGpzb25QYXlsb2FkID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgICAgYXRvYihiYXNlNjQpXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcCgoYykgPT4gJyUnICsgKCcwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpXG4gICAgICAgIC5qb2luKCcnKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpIGFzIFJlc3VsdDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGJlYXJlciB0b2tlbjogJHt0b2tlbn1gLCBlcnJvcik7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdfQ==","import { Subject, timer } from 'rxjs';\nimport { buildBody, buildRequestError, buildRoute, request } from '../request';\nimport { decryptBearer } from './auth-provider.utils';\nexport class BearerAuthProvider {\n get header() {\n return { Authorization: `Bearer ${this._token}` };\n }\n constructor(_config) {\n this._config = _config;\n this._refreshToken = null;\n this._refreshTimerSubscription = null;\n this.queryClient = null;\n this.onRefreshInitiation$ = new Subject();\n this.onRefreshSuccess$ = new Subject();\n this.onRefreshFailure$ = new Subject();\n this._token = _config.token;\n this._refreshToken = _config.refreshConfig?.token ?? null;\n if (this._config.refreshConfig) {\n this._setupRefresh(this._config.refreshConfig);\n }\n }\n cleanUp() {\n this._refreshTimerSubscription?.unsubscribe();\n this._refreshTimerSubscription = null;\n }\n _setupRefresh(config) {\n const bearer = decryptBearer(this._token);\n if (!bearer) {\n return;\n }\n const expiresInPropertyName = config.expiresInPropertyName || 'exp';\n const expiresIn = bearer[expiresInPropertyName];\n const fiveMinutes = 5 * 60 * 1000;\n const refreshBuffer = config.refreshBuffer ?? fiveMinutes;\n if (expiresIn === undefined) {\n throw new Error(`Bearer token does not contain an '${expiresInPropertyName}' property`);\n }\n const remainingTime = new Date(expiresIn * 1000).getTime() - refreshBuffer - new Date().getTime();\n const strategy = config.strategy ?? \"beforeExpiration\" /* AuthBearerRefreshStrategy.BeforeExpiration */;\n switch (strategy) {\n case \"beforeExpiration\" /* AuthBearerRefreshStrategy.BeforeExpiration */:\n this._refreshTimerSubscription = timer(remainingTime).subscribe(() => this._refresh(config));\n break;\n }\n }\n async _refresh(config) {\n if (!this._refreshToken) {\n throw new Error('No refresh token found');\n }\n if (!this.queryClient) {\n throw new Error('Query client instance is null');\n }\n const { method, route, requestAdapter, responseAdapter, paramLocation } = config;\n const data = requestAdapter?.(this._refreshToken) ?? { refreshToken: this._refreshToken };\n const fullRoute = buildRoute({\n base: this.queryClient.config.baseRoute,\n route,\n queryParams: paramLocation === 'query' ? data : undefined,\n });\n const requestInit = { body: paramLocation === 'body' ? buildBody(data) : undefined, method };\n this.onRefreshInitiation$.next();\n try {\n const result = await request({\n route: fullRoute,\n init: requestInit,\n });\n const tokens = responseAdapter ? responseAdapter(result.data) : result.data;\n if (!tokens.token) {\n throw new Error('Token not found in response');\n }\n if (!tokens.refreshToken) {\n throw new Error('Refresh token not found in response');\n }\n this._token = tokens.token;\n this._refreshToken = tokens.refreshToken;\n this.onRefreshSuccess$.next(tokens);\n }\n catch (error) {\n if (error instanceof Error) {\n this.onRefreshFailure$.next(await buildRequestError(error, fullRoute, requestInit));\n }\n else {\n this.onRefreshFailure$.next(error);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhcmVyLWF1dGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9iZWFyZXItYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQVE3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QixJQUFJLE1BQU07UUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQVFELFlBQW9CLE9BQWlDO1FBQWpDLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBYjdDLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUNwQyw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBTTlELGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUV2Qyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzNDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FB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QUFDLElBQXNCLENBQUM7WUFFL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUNoRDtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7YUFDeEQ7WUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRXpDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQXFCLENBQUMsQ0FBQzthQUNwRDtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgYnVpbGRCb2R5LCBidWlsZFJlcXVlc3RFcnJvciwgYnVpbGRSb3V0ZSwgcmVxdWVzdCwgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LFxuICBBdXRoUHJvdmlkZXIsXG4gIEF1dGhQcm92aWRlckJlYXJlckNvbmZpZyxcbiAgQmVhcmVyUmVmcmVzaENvbmZpZyxcbiAgVG9rZW5SZXNwb25zZSxcbn0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnR5cGVzJztcbmltcG9ydCB7IGRlY3J5cHRCZWFyZXIgfSBmcm9tICcuL2F1dGgtcHJvdmlkZXIudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQmVhcmVyQXV0aFByb3ZpZGVyIGltcGxlbWVudHMgQXV0aFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBnZXQgaGVhZGVyKCkge1xuICAgIHJldHVybiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLl90b2tlbn1gIH07XG4gIH1cblxuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICBvblJlZnJlc2hJbml0aWF0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIG9uUmVmcmVzaFN1Y2Nlc3MkID0gbmV3IFN1YmplY3Q8VG9rZW5SZXNwb25zZT4oKTtcbiAgb25SZWZyZXNoRmFpbHVyZSQgPSBuZXcgU3ViamVjdDxSZXF1ZXN0RXJyb3I+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlnOiBBdXRoUHJvdmlkZXJCZWFyZXJDb25maWcpIHtcbiAgICB0aGlzLl90b2tlbiA9IF9jb25maWcudG9rZW47XG4gICAgdGhpcy5fcmVmcmVzaFRva2VuID0gX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy50b2tlbiA/PyBudWxsO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnKSB7XG4gICAgICB0aGlzLl9zZXR1cFJlZnJlc2godGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFuVXAoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3JlZnJlc2hUaW1lclN1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFJlZnJlc2goY29uZmlnOiBCZWFyZXJSZWZyZXNoQ29uZmlnKSB7XG4gICAgY29uc3QgYmVhcmVyID0gZGVjcnlwdEJlYXJlcih0aGlzLl90b2tlbik7XG5cbiAgICBpZiAoIWJlYXJlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyZXNJblByb3BlcnR5TmFtZSA9IGNvbmZpZy5leHBpcmVzSW5Qcm9wZXJ0eU5hbWUgfHwgJ2V4cCc7XG4gICAgY29uc3QgZXhwaXJlc0luID0gYmVhcmVyW2V4cGlyZXNJblByb3BlcnR5TmFtZV0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpdmVNaW51dGVzID0gNSAqIDYwICogMTAwMDtcbiAgICBjb25zdCByZWZyZXNoQnVmZmVyID0gY29uZmlnLnJlZnJlc2hCdWZmZXIgPz8gZml2ZU1pbnV0ZXM7XG5cbiAgICBpZiAoZXhwaXJlc0luID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmVhcmVyIHRva2VuIGRvZXMgbm90IGNvbnRhaW4gYW4gJyR7ZXhwaXJlc0luUHJvcGVydHlOYW1lfScgcHJvcGVydHlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZW1haW5pbmdUaW1lID0gbmV3IERhdGUoZXhwaXJlc0luICogMTAwMCkuZ2V0VGltZSgpIC0gcmVmcmVzaEJ1ZmZlciAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSBjb25maWcuc3RyYXRlZ3kgPz8gQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneS5CZWZvcmVFeHBpcmF0aW9uO1xuXG4gICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgY2FzZSBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb246XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUaW1lclN1YnNjcmlwdGlvbiA9IHRpbWVyKHJlbWFpbmluZ1RpbWUpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZWZyZXNoKGNvbmZpZykpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWZyZXNoKGNvbmZpZzogQmVhcmVyUmVmcmVzaENvbmZpZykge1xuICAgIGlmICghdGhpcy5fcmVmcmVzaFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlZnJlc2ggdG9rZW4gZm91bmQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucXVlcnlDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUXVlcnkgY2xpZW50IGluc3RhbmNlIGlzIG51bGwnKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG1ldGhvZCwgcm91dGUsIHJlcXVlc3RBZGFwdGVyLCByZXNwb25zZUFkYXB0ZXIsIHBhcmFtTG9jYXRpb24gfSA9IGNvbmZpZztcblxuICAgIGNvbnN0IGRhdGEgPSByZXF1ZXN0QWRhcHRlcj8uKHRoaXMuX3JlZnJlc2hUb2tlbikgPz8geyByZWZyZXNoVG9rZW46IHRoaXMuX3JlZnJlc2hUb2tlbiB9O1xuXG4gICAgY29uc3QgZnVsbFJvdXRlID0gYnVpbGRSb3V0ZSh7XG4gICAgICBiYXNlOiB0aGlzLnF1ZXJ5Q2xpZW50LmNvbmZpZy5iYXNlUm91dGUsXG4gICAgICByb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbUxvY2F0aW9uID09PSAncXVlcnknID8gZGF0YSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHsgYm9keTogcGFyYW1Mb2NhdGlvbiA9PT0gJ2JvZHknID8gYnVpbGRCb2R5KGRhdGEpIDogdW5kZWZpbmVkLCBtZXRob2QgfTtcblxuICAgIHRoaXMub25SZWZyZXNoSW5pdGlhdGlvbiQubmV4dCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3Qoe1xuICAgICAgICByb3V0ZTogZnVsbFJvdXRlLFxuICAgICAgICBpbml0OiByZXF1ZXN0SW5pdCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0b2tlbnMgPSByZXNwb25zZUFkYXB0ZXIgPyByZXNwb25zZUFkYXB0ZXIocmVzdWx0LmRhdGEpIDogKHJlc3VsdC5kYXRhIGFzIFRva2VuUmVzcG9uc2UpO1xuXG4gICAgICBpZiAoIXRva2Vucy50b2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIG5vdCBmb3VuZCBpbiByZXNwb25zZScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRva2Vucy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWZyZXNoIHRva2VuIG5vdCBmb3VuZCBpbiByZXNwb25zZScpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90b2tlbiA9IHRva2Vucy50b2tlbjtcbiAgICAgIHRoaXMuX3JlZnJlc2hUb2tlbiA9IHRva2Vucy5yZWZyZXNoVG9rZW47XG5cbiAgICAgIHRoaXMub25SZWZyZXNoU3VjY2VzcyQubmV4dCh0b2tlbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aGlzLm9uUmVmcmVzaEZhaWx1cmUkLm5leHQoYXdhaXQgYnVpbGRSZXF1ZXN0RXJyb3IoZXJyb3IsIGZ1bGxSb3V0ZSwgcmVxdWVzdEluaXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25SZWZyZXNoRmFpbHVyZSQubmV4dChlcnJvciBhcyBSZXF1ZXN0RXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","const getOpName = /(query|mutation) ?([\\w\\d-_]+)? ?\\(.*?\\)? \\{/;\nexport const transformGql = (str) => {\n str = Array.isArray(str) ? str.join('') : str;\n const name = getOpName.exec(str);\n return function (variables) {\n const data = { query: str };\n if (variables)\n data['variables'] = JSON.stringify(variables);\n if (name && name.length) {\n const operationName = name[2];\n if (operationName)\n data['operationName'] = name[2];\n }\n return JSON.stringify(data);\n };\n};\nexport const gql = (strings, ...values) => {\n const str = strings.reduce((acc, cur, i) => {\n return acc + cur + (values[i] || '');\n }, '');\n return str;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2dxbC9ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxTQUFTLEdBQUcsNkNBQTZDLENBQUM7QUFFaEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDMUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sVUFBVSxTQUFxRDtRQUNwRSxNQUFNLElBQUksR0FBNEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDckQsSUFBSSxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxhQUFhO2dCQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBNkIsRUFBRSxHQUFHLE1BQWdCLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6QyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRPcE5hbWUgPSAvKHF1ZXJ5fG11dGF0aW9uKSA/KFtcXHdcXGQtX10rKT8gP1xcKC4qP1xcKT8gXFx7LztcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUdxbCA9IChzdHI6IHN0cmluZykgPT4ge1xuICBzdHIgPSBBcnJheS5pc0FycmF5KHN0cikgPyBzdHIuam9pbignJykgOiBzdHI7XG4gIGNvbnN0IG5hbWUgPSBnZXRPcE5hbWUuZXhlYyhzdHIpO1xuICByZXR1cm4gZnVuY3Rpb24gKHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IHF1ZXJ5OiBzdHIgfTtcbiAgICBpZiAodmFyaWFibGVzKSBkYXRhWyd2YXJpYWJsZXMnXSA9IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyk7XG4gICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBuYW1lWzJdO1xuICAgICAgaWYgKG9wZXJhdGlvbk5hbWUpIGRhdGFbJ29wZXJhdGlvbk5hbWUnXSA9IG5hbWVbMl07XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBncWwgPSAoc3RyaW5nczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgY29uc3Qgc3RyID0gc3RyaW5ncy5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XG4gICAgcmV0dXJuIGFjYyArIGN1ciArICh2YWx1ZXNbaV0gfHwgJycpO1xuICB9LCAnJyk7XG4gIHJldHVybiBzdHI7XG59O1xuIl19","import { filter, of, switchMap, takeWhile } from 'rxjs';\nexport function filterSuccess() {\n return function (source) {\n return source.pipe(filter((value) => isQueryStateSuccess(value)));\n };\n}\nexport function filterFailure() {\n return function (source) {\n return source.pipe(filter((value) => isQueryStateFailure(value)));\n };\n}\nexport function filterQueryStates(allowedStates) {\n return function (source) {\n return source.pipe(filter((value) => value && allowedStates.includes(value.type)));\n };\n}\nexport function takeUntilResponse() {\n return function (source) {\n return source.pipe(takeWhile((value) => isQueryStateLoading(value), true));\n };\n}\nexport function filterNull() {\n return function (source) {\n return source.pipe(filter((value) => value !== null));\n };\n}\nexport function switchQueryState() {\n return function (source) {\n return source.pipe(switchMap((value) => value?.state$ ?? of(null)));\n };\n}\nexport const isQueryStateLoading = (state) => state?.type === \"LOADING\" /* QueryStateType.Loading */;\nexport const isQueryStateSuccess = (state) => state?.type === \"SUCCESS\" /* QueryStateType.Success */;\nexport const isQueryStateFailure = (state) => state?.type === \"FAILURE\" /* QueryStateType.Failure */;\nexport const isQueryStateCancelled = (state) => state?.type === \"CANCELLED\" /* QueryStateType.Cancelled */;\nexport const isQueryStatePrepared = (state) => state?.type === \"PREPARED\" /* QueryStateType.Prepared */;\nexport const mergeHeaders = (...headers) => {\n return headers.reduce((acc, headers) => {\n if (!headers) {\n return acc;\n }\n return {\n ...acc,\n ...headers,\n };\n }, {});\n};\nexport const isGqlQueryConfig = (config) => {\n if (!config || typeof config !== 'object' || Array.isArray(config)) {\n return false;\n }\n if (!('query' in config)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXVCcEUsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxVQUlMLE1BQXFCO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQStDLENBQUM7SUFDbEgsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sVUFBdUMsTUFBcUI7UUFDakUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBd0IsQ0FBQztJQUMzRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLGFBQStCO0lBQy9ELE9BQU8sVUFBdUMsTUFBcUI7UUFDakUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWtCLENBQUM7SUFDdEcsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxVQUFnQyxNQUFxQjtRQUMxRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLFVBQWEsTUFBcUI7UUFDdkMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBd0IsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sVUFJTCxNQUFxQjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUd6RCxDQUFDO0lBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBb0MsRUFBb0IsRUFBRSxDQUM1RixLQUFLLEVBQUUsSUFBSSwyQ0FBMkIsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW9DLEVBQW9CLEVBQUUsQ0FDNUYsS0FBSyxFQUFFLElBQUksMkNBQTJCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFvQyxFQUFvQixFQUFFLENBQzVGLEtBQUssRUFBRSxJQUFJLDJDQUEyQixDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBb0MsRUFBc0IsRUFBRSxDQUNoRyxLQUFLLEVBQUUsSUFBSSwrQ0FBNkIsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQW9DLEVBQXFCLEVBQUUsQ0FDOUYsS0FBSyxFQUFFLElBQUksNkNBQTRCLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFpRCxFQUFFLEVBQUU7SUFDbkYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQU05QixNQUFlLEVBQzRELEVBQUU7SUFDN0UsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNsRSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0SGVhZGVycyB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEJhc2VBcmd1bWVudHMsXG4gIENhbmNlbGxlZCxcbiAgRmFpbHVyZSxcbiAgR3FsUXVlcnlDb25maWcsXG4gIExvYWRpbmcsXG4gIFByZXBhcmVkLFxuICBRdWVyeVJhd1Jlc3BvbnNlVHlwZSxcbiAgUXVlcnlSZXNwb25zZVR5cGUsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVEYXRhLFxuICBRdWVyeVN0YXRlUmF3RGF0YSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJvdXRlVHlwZSxcbiAgU3VjY2Vzcyxcbn0gZnJvbSAnLi9xdWVyeS50eXBlcyc7XG5cbnR5cGUgT21pdE51bGw8VD4gPSBUIGV4dGVuZHMgbnVsbCA/IG5ldmVyIDogVDtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclN1Y2Nlc3MoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8XG4gICAgVCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsLFxuICAgIFJlc3BvbnNlIGV4dGVuZHMgUXVlcnlTdGF0ZURhdGE8T21pdE51bGw8VD4+LFxuICAgIFJhd1Jlc3BvbnNlIGV4dGVuZHMgUXVlcnlTdGF0ZVJhd0RhdGE8T21pdE51bGw8VD4+LFxuICA+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHZhbHVlKSkpIGFzIE9ic2VydmFibGU8U3VjY2VzczxSZXNwb25zZSwgUmF3UmVzcG9uc2U+PjtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckZhaWx1cmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gaXNRdWVyeVN0YXRlRmFpbHVyZSh2YWx1ZSkpKSBhcyBPYnNlcnZhYmxlPEZhaWx1cmU+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUXVlcnlTdGF0ZXMoYWxsb3dlZFN0YXRlczogUXVlcnlTdGF0ZVR5cGVbXSkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBRdWVyeVN0YXRlIHwgbnVsbD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKGZpbHRlcigodmFsdWUpID0+IHZhbHVlICYmIGFsbG93ZWRTdGF0ZXMuaW5jbHVkZXModmFsdWUudHlwZSkpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFrZVVudGlsUmVzcG9uc2UoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGU+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZSh0YWtlV2hpbGUoKHZhbHVlKSA9PiBpc1F1ZXJ5U3RhdGVMb2FkaW5nKHZhbHVlKSwgdHJ1ZSkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTnVsbCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIE9taXROdWxsPFQ+ID0+IHZhbHVlICE9PSBudWxsKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzd2l0Y2hRdWVyeVN0YXRlKCkge1xuICByZXR1cm4gZnVuY3Rpb24gPFxuICAgIFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsXG4gICAgUmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJlc3BvbnNlVHlwZTxPbWl0TnVsbDxUPj4sXG4gICAgUmF3UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJhd1Jlc3BvbnNlVHlwZTxPbWl0TnVsbDxUPj4sXG4gID4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKHN3aXRjaE1hcCgodmFsdWUpID0+IHZhbHVlPy5zdGF0ZSQgPz8gb2YobnVsbCkpKSBhcyBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8XG4gICAgICBPbWl0TnVsbDxSZXNwb25zZT4sXG4gICAgICBPbWl0TnVsbDxSYXdSZXNwb25zZT5cbiAgICA+IHwgbnVsbD47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVMb2FkaW5nID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIExvYWRpbmcgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmc7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVTdWNjZXNzID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIFN1Y2Nlc3MgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVGYWlsdXJlID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIEZhaWx1cmUgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmU7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVDYW5jZWxsZWQgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgQ2FuY2VsbGVkID0+XG4gIHN0YXRlPy50eXBlID09PSBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVQcmVwYXJlZCA9IChzdGF0ZTogUXVlcnlTdGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdGF0ZSBpcyBQcmVwYXJlZCA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG5cbmV4cG9ydCBjb25zdCBtZXJnZUhlYWRlcnMgPSAoLi4uaGVhZGVyczogQXJyYXk8UmVxdWVzdEhlYWRlcnMgfCBudWxsIHwgdW5kZWZpbmVkPikgPT4ge1xuICByZXR1cm4gaGVhZGVycy5yZWR1Y2UoKGFjYywgaGVhZGVycykgPT4ge1xuICAgIGlmICghaGVhZGVycykge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uaGVhZGVycyxcbiAgICB9O1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHcWxRdWVyeUNvbmZpZyA9IDxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4gfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4+KFxuICBjb25maWc6IHVua25vd24sXG4pOiBjb25maWcgaXMgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+ID0+IHtcbiAgaWYgKCFjb25maWcgfHwgdHlwZW9mIGNvbmZpZyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3F1ZXJ5JyBpbiBjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19","import { BehaviorSubject, interval, Subject, takeUntil, tap } from 'rxjs';\nimport { transformGql } from '../gql';\nimport { buildBody, guessContentType, isAbortRequestError, isRequestError, request, transformMethod, } from '../request';\nimport { filterSuccess, isGqlQueryConfig, isQueryStateLoading, isQueryStateSuccess, mergeHeaders, takeUntilResponse, } from './query.utils';\nexport class Query {\n get _nextId() {\n return ++this._currentId;\n }\n get state$() {\n return this._state$.asObservable();\n }\n get state() {\n return this._state$.value;\n }\n get isExpired() {\n if (!isQueryStateSuccess(this.state)) {\n return false;\n }\n const ts = this.state.meta.expiresAt;\n if (!ts) {\n return true;\n }\n return ts < Date.now();\n }\n constructor(_client, _queryConfig, _route, _args) {\n this._client = _client;\n this._queryConfig = _queryConfig;\n this._route = _route;\n this._args = _args;\n this._currentId = 0;\n this._abortController = new AbortController();\n this._pollingSubscription = null;\n this._onAbort$ = new Subject();\n this._state$ = new BehaviorSubject({\n type: \"PREPARED\" /* QueryStateType.Prepared */,\n meta: { id: this._currentId },\n });\n }\n clone() {\n return this._client.fetch(this._queryConfig);\n }\n execute(options) {\n if (!this.isExpired && !options?.skipCache && isQueryStateSuccess(this.state)) {\n return this;\n }\n if (this._queryConfig.secure && !this._client.authProvider) {\n throw new Error('Cannot execute secure query without auth provider');\n }\n const id = this._nextId;\n if (isQueryStateLoading(this._state$.value)) {\n this.abort();\n }\n const meta = { id };\n this._state$.next({\n type: \"LOADING\" /* QueryStateType.Loading */,\n meta,\n });\n this._updateUseResultInDependencies();\n let body = null;\n let contentType = null;\n if (isGqlQueryConfig(this._queryConfig)) {\n const queryTemplate = this._queryConfig.query;\n const query = transformGql(queryTemplate);\n contentType = 'application/json';\n body = query(this._args?.variables);\n }\n else {\n body = buildBody(this._args?.body);\n contentType = guessContentType(this._args?.body);\n }\n let authHeader = null;\n if (this._queryConfig.secure) {\n const header = this._client.authProvider?.header;\n if (header) {\n authHeader = header;\n }\n }\n else if (this._client.authProvider?.header) {\n if (this._queryConfig.secure === undefined || this._queryConfig.secure) {\n authHeader = this._client.authProvider.header;\n }\n }\n let headers = mergeHeaders(authHeader, this._args?.headers);\n if (contentType && !headers?.['Content-Type'] && !headers?.['content-type']) {\n if (headers) {\n headers['Content-Type'] = contentType;\n }\n else {\n headers = {\n 'Content-Type': contentType,\n };\n }\n }\n request({\n route: this._route,\n init: {\n method: transformMethod(this._queryConfig.method),\n signal: this._abortController.signal,\n body,\n headers: headers || undefined,\n },\n cacheAdapter: this._client.config.request?.cacheAdapter,\n })\n .then((response) => {\n const isResponseObject = typeof response === 'object';\n const isGql = isGqlQueryConfig(this._queryConfig);\n let responseData = null;\n if (isGql &&\n isResponseObject &&\n !!response.data &&\n typeof response.data === 'object' &&\n 'data' in response.data) {\n responseData = response.data['data'];\n }\n else {\n responseData = response.data;\n }\n const transformedResponse = this._queryConfig.responseTransformer\n ? this._queryConfig.responseTransformer(responseData)\n : responseData;\n this._state$.next({\n type: \"SUCCESS\" /* QueryStateType.Success */,\n response: transformedResponse,\n rawResponse: responseData,\n meta: { ...meta, expiresAt: response.expiresInTimestamp },\n });\n })\n .catch((error) => this._handleExecuteError(error, meta));\n return this;\n }\n abort() {\n this._abortController.abort();\n this._abortController = new AbortController();\n this._onAbort$.next();\n return this;\n }\n poll(config) {\n if (this._pollingSubscription) {\n return this;\n }\n this._pollingSubscription = interval(config.interval)\n .pipe(takeUntil(config.takeUntil))\n .subscribe(() => this.execute({ skipCache: true }));\n return this;\n }\n stopPolling() {\n this._pollingSubscription?.unsubscribe();\n this._pollingSubscription = null;\n return this;\n }\n _updateUseResultInDependencies() {\n if (!this._args?.useResultIn?.length) {\n return;\n }\n this.state$\n .pipe(filterSuccess(), takeUntil(this._onAbort$), takeUntilResponse(), tap((state) => {\n if (!this._args?.useResultIn) {\n return;\n }\n for (const query of this._args.useResultIn) {\n query._state$.next({\n type: \"SUCCESS\" /* QueryStateType.Success */,\n meta: { ...state.meta, id: query._nextId },\n rawResponse: state.rawResponse,\n response: state.response,\n });\n }\n }))\n .subscribe();\n }\n _handleExecuteError(error, meta) {\n if (isAbortRequestError(error)) {\n this._state$.next({\n type: \"CANCELLED\" /* QueryStateType.Cancelled */,\n meta,\n });\n }\n else if (isRequestError(error)) {\n this._state$.next({\n type: \"FAILURE\" /* QueryStateType.Failure */,\n error,\n meta,\n });\n }\n else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFFZCxPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLFlBQVksQ0FBQztBQWFwQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsTUFBTSxPQUFPLEtBQUs7SUFjaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVyQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sRUFBRSxH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UUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2lCQUN6QixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxJQUFvQjtRQUM5RCxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLDRDQUEwQjtnQkFDOUIsSUFBSTthQUNMLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksd0NBQXdCO2dCQUM1QixLQUFLO2dCQUNMLElBQUk7YUFDTCxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRyYW5zZm9ybUdxbCB9IGZyb20gJy4uL2dxbCc7XG5pbXBvcnQgeyBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lciwgUXVlcnlDbGllbnQsIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7XG4gIGJ1aWxkQm9keSxcbiAgZ3Vlc3NDb250ZW50VHlwZSxcbiAgaXNBYm9ydFJlcXVlc3RFcnJvcixcbiAgaXNSZXF1ZXN0RXJyb3IsXG4gIE1ldGhvZCBhcyBNZXRob2RUeXBlLFxuICByZXF1ZXN0LFxuICB0cmFuc2Zvcm1NZXRob2QsXG59IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVNZXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG4gIFJ1blF1ZXJ5T3B0aW9ucyxcbiAgV2l0aFVzZVJlc3VsdEluLFxufSBmcm9tICcuL3F1ZXJ5LnR5cGVzJztcbmltcG9ydCB7XG4gIGZpbHRlclN1Y2Nlc3MsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIG1lcmdlSGVhZGVycyxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4vcXVlcnkudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUXVlcnk8XG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyAoQmFzZUFyZ3VtZW50cyAmIFdpdGhVc2VSZXN1bHRJbjxSZXNwb25zZSwgUmVzcG9uc2VUcmFuc2Zvcm1lcj4pIHwgdW5kZWZpbmVkLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBNZXRob2QgZXh0ZW5kcyBNZXRob2RUeXBlLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcHJpdmF0ZSBfcG9sbGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29uQWJvcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeVN0YXRlPFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4sIFJlc3BvbnNlPj47XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuc3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLnN0YXRlLm1ldGEuZXhwaXJlc0F0O1xuXG4gICAgaWYgKCF0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzIDwgRGF0ZS5ub3coKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfcXVlcnlDb25maWc6XG4gICAgICB8IFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICAgIHByaXZhdGUgX3JvdXRlOiBSb3V0ZSxcbiAgICBwcml2YXRlIF9hcmdzOiBBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlTdGF0ZTxSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+LCBSZXNwb25zZT4+KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudElkIH0sXG4gICAgfSk7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50LmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBNZXRob2QsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgfVxuXG4gIGV4ZWN1dGU8Q29tcHV0ZWRSZXNwb25zZSBleHRlbmRzIFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4+KG9wdGlvbnM/OiBSdW5RdWVyeU9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBpcmVkICYmICFvcHRpb25zPy5za2lwQ2FjaGUgJiYgaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSAmJiAhdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICB0aGlzLmFib3J0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YSA9IHsgaWQgfTtcblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdXBkYXRlVXNlUmVzdWx0SW5EZXBlbmRlbmNpZXMoKTtcblxuICAgIGxldCBib2R5OiBzdHJpbmcgfCBGb3JtRGF0YSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjb250ZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZykpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5VGVtcGxhdGUgPSB0aGlzLl9xdWVyeUNvbmZpZy5xdWVyeTtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdHJhbnNmb3JtR3FsKHF1ZXJ5VGVtcGxhdGUpO1xuXG4gICAgICBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgIGJvZHkgPSBxdWVyeSh0aGlzLl9hcmdzPy52YXJpYWJsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5ID0gYnVpbGRCb2R5KHRoaXMuX2FyZ3M/LmJvZHkpO1xuICAgICAgY29udGVudFR5cGUgPSBndWVzc0NvbnRlbnRUeXBlKHRoaXMuX2FyZ3M/LmJvZHkpO1xuICAgIH1cblxuICAgIGxldCBhdXRoSGVhZGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fcXVlcnlDb25maWcuc2VjdXJlKSB7XG4gICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyPy5oZWFkZXI7XG5cbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgYXV0aEhlYWRlciA9IGhlYWRlcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXI/LmhlYWRlcikge1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSkge1xuICAgICAgICBhdXRoSGVhZGVyID0gdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlci5oZWFkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnMgPSBtZXJnZUhlYWRlcnMoYXV0aEhlYWRlciwgdGhpcy5fYXJncz8uaGVhZGVycyk7XG5cbiAgICBpZiAoY29udGVudFR5cGUgJiYgIWhlYWRlcnM/LlsnQ29udGVudC1UeXBlJ10gJiYgIWhlYWRlcnM/LlsnY29udGVudC10eXBlJ10pIHtcbiAgICAgIGlmIChoZWFkZXJzKSB7XG4gICAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gY29udGVudFR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXF1ZXN0PFJlc3BvbnNlPih7XG4gICAgICByb3V0ZTogdGhpcy5fcm91dGUsXG4gICAgICBpbml0OiB7XG4gICAgICAgIG1ldGhvZDogdHJhbnNmb3JtTWV0aG9kKHRoaXMuX3F1ZXJ5Q29uZmlnLm1ldGhvZCksXG4gICAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzUmVzcG9uc2VPYmplY3QgPSB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnO1xuXG4gICAgICAgIGNvbnN0IGlzR3FsID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZyk7XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlRGF0YTogUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzR3FsICYmXG4gICAgICAgICAgaXNSZXNwb25zZU9iamVjdCAmJlxuICAgICAgICAgICEhcmVzcG9uc2UuZGF0YSAmJlxuICAgICAgICAgIHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICdkYXRhJyBpbiByZXNwb25zZS5kYXRhXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IChyZXNwb25zZS5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVsnZGF0YSddIGFzIFJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEgYXMgUmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFJlc3BvbnNlID0gdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUcmFuc2Zvcm1lclxuICAgICAgICAgID8gdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUcmFuc2Zvcm1lcihyZXNwb25zZURhdGEpXG4gICAgICAgICAgOiByZXNwb25zZURhdGE7XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3MsXG4gICAgICAgICAgcmVzcG9uc2U6IHRyYW5zZm9ybWVkUmVzcG9uc2UgYXMgQ29tcHV0ZWRSZXNwb25zZSxcbiAgICAgICAgICByYXdSZXNwb25zZTogcmVzcG9uc2VEYXRhIGFzIFJlc3BvbnNlLFxuICAgICAgICAgIG1ldGE6IHsgLi4ubWV0YSwgZXhwaXJlc0F0OiByZXNwb25zZS5leHBpcmVzSW5UaW1lc3RhbXAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gdGhpcy5faGFuZGxlRXhlY3V0ZUVycm9yKGVycm9yLCBtZXRhKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9vbkFib3J0JC5uZXh0KCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBvbGwoY29uZmlnOiBQb2xsQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBpbnRlcnZhbChjb25maWcuaW50ZXJ2YWwpXG4gICAgICAucGlwZSh0YWtlVW50aWwoY29uZmlnLnRha2VVbnRpbCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSB9KSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0b3BQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVVzZVJlc3VsdEluRGVwZW5kZW5jaWVzKCkge1xuICAgIGlmICghdGhpcy5fYXJncz8udXNlUmVzdWx0SW4/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyU3VjY2VzcygpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICB0YWtlVW50aWxSZXNwb25zZSgpLFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9hcmdzPy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgdGhpcy5fYXJncy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcXVlcnkuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICAgICAgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBpZDogcXVlcnkuX25leHRJZCB9LFxuICAgICAgICAgICAgICByYXdSZXNwb25zZTogc3RhdGUucmF3UmVzcG9uc2UsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBzdGF0ZS5yZXNwb25zZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVFeGVjdXRlRXJyb3IoZXJyb3I6IHVua25vd24sIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhKSB7XG4gICAgaWYgKGlzQWJvcnRSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZCxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBtZXRhLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19","import { ChangeDetectorRef, Directive, ErrorHandler, Input, TemplateRef, ViewContainerRef, } from '@angular/core';\nimport { tap } from 'rxjs';\nimport { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';\nimport * as i0 from \"@angular/core\";\nexport class QueryDirective {\n get query() {\n return this._query;\n }\n set query(v) {\n this._query = v;\n this._subscribeToQuery();\n }\n get cache() {\n return this._cache;\n }\n set cache(v) {\n this._cache = v;\n }\n constructor(_mainTemplateRef, _viewContainerRef, _errorHandler, _cdr) {\n this._mainTemplateRef = _mainTemplateRef;\n this._viewContainerRef = _viewContainerRef;\n this._errorHandler = _errorHandler;\n this._cdr = _cdr;\n this._isMainViewCreated = false;\n this._subscription = null;\n this._viewContext = {\n $implicit: null,\n query: null,\n raw: null,\n loading: false,\n error: null,\n };\n this._cache = false;\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n ngOnInit() {\n this._renderMainView();\n }\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n _subscribeToQuery() {\n this._subscription?.unsubscribe();\n this._subscription = null;\n if (!this.query) {\n return;\n }\n const sub = this.query.state$.pipe(tap((state) => this._updateView(state))).subscribe();\n this._subscription = sub;\n }\n _updateView(state) {\n if (isQueryStateLoading(state)) {\n this._viewContext.loading = true;\n }\n else {\n this._viewContext.loading = false;\n }\n if (isQueryStateSuccess(state)) {\n this._viewContext.query = state.response;\n this._viewContext.$implicit = state.response;\n this._viewContext.raw = state.rawResponse;\n }\n else if (!this.cache) {\n this._viewContext.query = null;\n this._viewContext.$implicit = null;\n this._viewContext.raw = null;\n }\n if (isQueryStateFailure(state)) {\n this._viewContext.error = state.error;\n this._errorHandler.handleError(state.error);\n }\n else {\n this._viewContext.error = null;\n }\n this._cdr.markForCheck();\n }\n _renderMainView() {\n if (!this._isMainViewCreated) {\n this._isMainViewCreated = true;\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);\n }\n }\n}\nQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: QueryDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ErrorHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: QueryDirective, isStandalone: true, selector: \"[query]\", inputs: { query: \"query\", cache: [\"queryCache\", \"cache\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: QueryDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[query]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ErrorHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { query: [{\n type: Input\n }], cache: [{\n type: Input,\n args: ['queryCache']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsR0FJcEIsTUFBTSxVQUFVLENBQUM7O0FBZ0JsQixNQUFNLE9BQU8sY0FBYztJQVl6QixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQUk7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFHRCxZQUNVLGdCQUE4QyxFQUM5QyxpQkFBbUMsRUFDbkMsYUFBMkIsRUFDM0IsSUFBdUI7UUFIdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBbkN6Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBd0Is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OUQsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs0TEFjSyxLQUFLO3NCQURSLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBpc1F1ZXJ5U3RhdGVGYWlsdXJlLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxuICBRdWVyeVJhd1Jlc3BvbnNlVHlwZSxcbiAgUXVlcnlSZXNwb25zZVR5cGUsXG4gIFF1ZXJ5U3RhdGUsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgUXVlcnlDb250ZXh0PFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+IHtcbiAgJGltcGxpY2l0OiBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgcXVlcnk6IFF1ZXJ5UmVzcG9uc2VUeXBlPFE+O1xuICByYXc6IFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogUmVxdWVzdEVycm9yPHVua25vd24+IHwgbnVsbDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3F1ZXJ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGlyZWN0aXZlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBRdWVyeUNvbnRleHQ8UT4gPSB7XG4gICAgJGltcGxpY2l0OiBudWxsIGFzIFF1ZXJ5UmVzcG9uc2VUeXBlPFE+LFxuICAgIHF1ZXJ5OiBudWxsIGFzIFF1ZXJ5UmVzcG9uc2VUeXBlPFE+LFxuICAgIHJhdzogbnVsbCBhcyBRdWVyeVJhd1Jlc3BvbnNlVHlwZTxRPixcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgfTtcblxuICBASW5wdXQoKVxuICBnZXQgcXVlcnkoKTogUSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG4gIHNldCBxdWVyeSh2OiBRKSB7XG4gICAgdGhpcy5fcXVlcnkgPSB2O1xuXG4gICAgdGhpcy5fc3Vic2NyaWJlVG9RdWVyeSgpO1xuICB9XG4gIHByaXZhdGUgX3F1ZXJ5ITogUTtcblxuICBASW5wdXQoJ3F1ZXJ5Q2FjaGUnKVxuICBnZXQgY2FjaGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG4gIHNldCBjYWNoZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2FjaGUgPSB2O1xuICB9XG4gIHByaXZhdGUgX2NhY2hlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFpblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxRdWVyeUNvbnRleHQ8UT4+LFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICAgIGRpcjogUXVlcnlEaXJlY3RpdmU8UT4sXG4gICAgY3R4OiB1bmtub3duLFxuICApOiBjdHggaXMgUXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1F1ZXJ5KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgaWYgKCF0aGlzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViID0gdGhpcy5xdWVyeS5zdGF0ZSQucGlwZSh0YXAoKHN0YXRlKSA9PiB0aGlzLl91cGRhdGVWaWV3KHN0YXRlKSkpLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gc3ViO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlldyhzdGF0ZTogUXVlcnlTdGF0ZSkge1xuICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnF1ZXJ5ID0gc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlSZXNwb25zZVR5cGU8UT47XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnJhdyA9IHN0YXRlLnJhd1Jlc3BvbnNlIGFzIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnF1ZXJ5ID0gbnVsbCBhcyBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGwgYXMgUXVlcnlSZXNwb25zZVR5cGU8UT47XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yYXcgPSBudWxsIGFzIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICAgIH1cblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBzdGF0ZS5lcnJvcjtcblxuICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck1haW5WaWV3KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNNYWluVmlld0NyZWF0ZWQpIHtcbiAgICAgIHRoaXMuX2lzTWFpblZpZXdDcmVhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX21haW5UZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRleHQpO1xuICAgIH1cbiAgfVxufVxuIl19","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject } from 'rxjs';\nimport { filterSuccess, takeUntilResponse } from '../query';\nexport class InfinityQuery {\n get currentPage$() {\n return this._currentPage$.asObservable();\n }\n get currentPage() {\n return this._currentPage$.getValue();\n }\n get currentCalculatedPage$() {\n return this._currentCalculatedPage$.asObservable();\n }\n get currentCalculatedPage() {\n return this._currentCalculatedPage$.getValue();\n }\n get totalPages$() {\n return this._totalPages$.asObservable();\n }\n get totalPages() {\n return this._totalPages$.getValue();\n }\n get itemsPerPage$() {\n return this._itemsPerPage$.asObservable();\n }\n get itemsPerPage() {\n return this._itemsPerPage$.getValue();\n }\n get currentQuery$() {\n return this._currentQuery$.asObservable();\n }\n get currentQuery() {\n return this._currentQuery$.getValue();\n }\n get data$() {\n return this._data$.asObservable();\n }\n get data() {\n return this._data$.getValue();\n }\n constructor(_config) {\n this._config = _config;\n this._currentPage$ = new BehaviorSubject(null);\n this._currentCalculatedPage$ = new BehaviorSubject(null);\n this._totalPages$ = new BehaviorSubject(null);\n this._itemsPerPage$ = new BehaviorSubject(this._config.limitParam?.value ?? 10);\n this._currentQuery$ = new BehaviorSubject(null);\n this._data$ = new BehaviorSubject([]);\n this._subscriptions = [];\n }\n nextPage() {\n const newPage = (this._currentPage$.value ?? 0) + 1;\n const calculatedPage = this._config?.pageParam?.valueCalculator?.({\n page: newPage,\n totalPages: this.totalPages,\n itemsPerPage: this.itemsPerPage,\n }) ?? newPage;\n const args = this._prepareArgs(this._config, calculatedPage);\n const query = this._config.queryCreator.prepare(args).execute();\n this._handleNewQuery(query);\n this._currentPage$.next(newPage);\n this._currentCalculatedPage$.next(calculatedPage);\n this._currentQuery$.next(query);\n }\n reset(newConfig) {\n this._destroy();\n this._config = { ...this._config, ...(newConfig ?? {}) };\n this._currentPage$.next(null);\n this._currentCalculatedPage$.next(null);\n this._totalPages$.next(null);\n this._itemsPerPage$.next(this._config.limitParam?.value ?? 10);\n this._currentQuery$.next(null);\n this._data$.next([]);\n }\n _destroy() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions = [];\n }\n _handleNewQuery(query) {\n const stateChangesSub = query.state$.pipe(takeUntilResponse(), filterSuccess()).subscribe({\n next: (state) => {\n let newData = this._config?.response.valueExtractor(state.response);\n if (this._config.response.reverse) {\n newData = [...newData].reverse();\n }\n if (this._config.response.appendItemsTo === 'start') {\n newData = [...newData, ...this.data];\n }\n else {\n newData = [...this.data, ...newData];\n }\n this._data$.next(newData);\n const totalPages = this._config.response.totalPagesExtractor?.({\n response: state.response,\n itemsPerPage: this.itemsPerPage,\n }) ??\n state.response?.totalPages ??\n null;\n this._totalPages$.next(totalPages);\n },\n complete: () => {\n this._subscriptions = this._subscriptions.filter((sub) => sub !== stateChangesSub);\n },\n });\n this._subscriptions.push(stateChangesSub);\n }\n _prepareArgs(config, page) {\n const pageParamLocation = this._getPageParamLocation(config?.pageParam?.location);\n const pageArgs = {\n [pageParamLocation]: {\n [config?.pageParam?.key ?? 'page']: page,\n },\n };\n const limitParamLocation = this._getPageParamLocation(config?.limitParam?.location);\n const limitArgs = {\n [limitParamLocation]: {\n [config?.limitParam?.key ?? 'limit']: config?.limitParam?.value ?? 10,\n },\n };\n const defaultConfig = config?.defaultArgs ?? {};\n const mergedArgs = pageParamLocation === limitParamLocation\n ? {\n ...defaultConfig,\n [pageParamLocation]: {\n ...(config?.defaultArgs?.[pageParamLocation] ?? {}),\n ...pageArgs[limitParamLocation],\n ...limitArgs[limitParamLocation],\n },\n }\n : {\n ...defaultConfig,\n [pageParamLocation]: {\n ...(config?.defaultArgs?.[pageParamLocation] ?? {}),\n ...pageArgs[pageParamLocation],\n },\n [limitParamLocation]: {\n ...(config?.defaultArgs?.[limitParamLocation] ?? {}),\n ...limitArgs[limitParamLocation],\n },\n };\n return mergedArgs;\n }\n _getPageParamLocation(location) {\n const loc = location ?? 'query';\n switch (loc) {\n case 'path':\n return 'pathParams';\n case 'query':\n return 'queryParams';\n case 'body':\n return 'body';\n case 'header':\n return 'headers';\n case 'variable':\n return 'variables';\n default:\n throw new Error(`Invalid pageParamLocation: ${loc}`);\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTVFLE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBb0IsT0FBaUY7UUFBakYsWUFBTyxHQUFQLE9BQU8sQ0FBMEU7UUF6RHBGLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3pELDRCQUF1QixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNuRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUN4RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRixtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFlLElBQUksQ0FBQyxDQUFDO1FBQ3pELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBbUIsRUFBNkIsQ0FBQyxDQUFDO1FBRXZGLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztJQWtENEQsQ0FBQztJQUV6RyxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDLElBQUksT0FBTyxDQUFDO1FBRWhCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUU3RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFXLENBQUM7UUFDekUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQ0gsU0FHQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUV6RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUE2QixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFZO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDeEYsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7b0JBQ2pDLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFzQixDQUFDO2lCQUN0RDtnQkFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxPQUFPLEVBQUU7b0JBQ25ELE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBcUIsQ0FBQztpQkFDMUQ7cUJBQU07b0JBQ0wsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFxQixDQUFDO2lCQUMxRDtnQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFMUIsTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDMUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ2hDLENBQUM7b0JBQ0YsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVO29CQUMxQixJQUFJLENBQUM7Z0JBRVAsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQWdGLEVBQUUsSUFBWTtRQUNqSCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRWxGLE1BQU0sUUFBUSxHQUFHO1lBQ2YsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUNuQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUk7YUFDekM7U0FDRixDQUFDO1FBRUYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRixNQUFNLFNBQVMsR0FBRztZQUNoQixDQUFDLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ3BCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRTthQUN0RTtTQUNGLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUVoRCxNQUFNLFVBQVUsR0FDZCxpQkFBaUIsS0FBSyxrQkFBa0I7WUFDdEMsQ0FBQyxDQUFDO2dCQUNFLEdBQUcsYUFBYTtnQkFDaEIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUNuQixHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNuRCxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDL0IsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUM7aUJBQ2pDO2FBQ0Y7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsR0FBRyxhQUFhO2dCQUNoQixDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQ25CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25ELEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2lCQUMvQjtnQkFDRCxDQUFDLGtCQUFrQixDQUFDLEVBQUU7b0JBQ3BCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3BELEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDO2lCQUNqQzthQUNGLENBQUM7UUFFUixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBZ0Q7UUFDNUUsTUFBTSxHQUFHLEdBQUcsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUVoQyxRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLFlBQVksQ0FBQztZQUN0QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxXQUFXLENBQUM7WUFDckI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJTdWNjZXNzLCBRdWVyeVN0YXRlRGF0YSwgdGFrZVVudGlsUmVzcG9uc2UgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvckFyZ3MsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeUNvbmZpZywgSW5maW5pdHlRdWVyeVBhcmFtTG9jYXRpb24gfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnk8XG4gIFF1ZXJ5Q3JlYXRvciBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcixcbiAgUXVlcnkgZXh0ZW5kcyBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlPFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUNyZWF0b3JBcmdzPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxRdWVyeVsnc3RhdGUnXT4sXG4gIEluZmluaXR5UmVzcG9uc2UgZXh0ZW5kcyB1bmtub3duW10sXG4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudENhbGN1bGF0ZWRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsUGFnZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXNQZXJQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5maW5pdHlSZXNwb25zZT4oW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgZ2V0IGN1cnJlbnRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDYWxjdWxhdGVkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFF1ZXJ5JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRRdWVyeSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBkYXRhJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogSW5maW5pdHlRdWVyeUNvbmZpZzxRdWVyeUNyZWF0b3IsIEFyZ3MsIFF1ZXJ5UmVzcG9uc2UsIEluZmluaXR5UmVzcG9uc2U+KSB7fVxuXG4gIG5leHRQYWdlKCkge1xuICAgIGNvbnN0IG5ld1BhZ2UgPSAodGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlID8/IDApICsgMTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUGFnZSA9XG4gICAgICB0aGlzLl9jb25maWc/LnBhZ2VQYXJhbT8udmFsdWVDYWxjdWxhdG9yPy4oe1xuICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICB9KSA/PyBuZXdQYWdlO1xuXG4gICAgY29uc3QgYXJncyA9IHRoaXMuX3ByZXBhcmVBcmdzKHRoaXMuX2NvbmZpZywgY2FsY3VsYXRlZFBhZ2UpO1xuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9jb25maWcucXVlcnlDcmVhdG9yLnByZXBhcmUoYXJncykuZXhlY3V0ZSgpIGFzIFF1ZXJ5O1xuICAgIHRoaXMuX2hhbmRsZU5ld1F1ZXJ5KHF1ZXJ5KTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG5ld1BhZ2UpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChjYWxjdWxhdGVkUGFnZSk7XG4gICAgdGhpcy5fY3VycmVudFF1ZXJ5JC5uZXh0KHF1ZXJ5KTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9kZXN0cm95KCk7XG5cbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX2N1cnJlbnRRdWVyeSQubmV4dChudWxsKTtcblxuICAgIHRoaXMuX2RhdGEkLm5leHQoW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuICB9XG5cbiAgX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOZXdRdWVyeShxdWVyeTogUXVlcnkpIHtcbiAgICBjb25zdCBzdGF0ZUNoYW5nZXNTdWIgPSBxdWVyeS5zdGF0ZSQucGlwZSh0YWtlVW50aWxSZXNwb25zZSgpLCBmaWx0ZXJTdWNjZXNzKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHtcbiAgICAgICAgbGV0IG5ld0RhdGEgPSB0aGlzLl9jb25maWc/LnJlc3BvbnNlLnZhbHVlRXh0cmFjdG9yKHN0YXRlLnJlc3BvbnNlKTtcblxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlc3BvbnNlLnJldmVyc2UpIHtcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLm5ld0RhdGFdLnJldmVyc2UoKSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5hcHBlbmRJdGVtc1RvID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5uZXdEYXRhLCAuLi50aGlzLmRhdGFdIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi50aGlzLmRhdGEsIC4uLm5ld0RhdGFdIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KG5ld0RhdGEpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPVxuICAgICAgICAgIHRoaXMuX2NvbmZpZy5yZXNwb25zZS50b3RhbFBhZ2VzRXh0cmFjdG9yPy4oe1xuICAgICAgICAgICAgcmVzcG9uc2U6IHN0YXRlLnJlc3BvbnNlLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZSxcbiAgICAgICAgICB9KSA/P1xuICAgICAgICAgIHN0YXRlLnJlc3BvbnNlPy50b3RhbFBhZ2VzID8/XG4gICAgICAgICAgbnVsbDtcblxuICAgICAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KHRvdGFsUGFnZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSB0aGlzLl9zdWJzY3JpcHRpb25zLmZpbHRlcigoc3ViKSA9PiBzdWIgIT09IHN0YXRlQ2hhbmdlc1N1Yik7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHN0YXRlQ2hhbmdlc1N1Yik7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlQXJncyhjb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPiwgcGFnZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZVBhcmFtTG9jYXRpb24gPSB0aGlzLl9nZXRQYWdlUGFyYW1Mb2NhdGlvbihjb25maWc/LnBhZ2VQYXJhbT8ubG9jYXRpb24pO1xuXG4gICAgY29uc3QgcGFnZUFyZ3MgPSB7XG4gICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgIFtjb25maWc/LnBhZ2VQYXJhbT8ua2V5ID8/ICdwYWdlJ106IHBhZ2UsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBsaW1pdFBhcmFtTG9jYXRpb24gPSB0aGlzLl9nZXRQYWdlUGFyYW1Mb2NhdGlvbihjb25maWc/LmxpbWl0UGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IGxpbWl0QXJncyA9IHtcbiAgICAgIFtsaW1pdFBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgIFtjb25maWc/LmxpbWl0UGFyYW0/LmtleSA/PyAnbGltaXQnXTogY29uZmlnPy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSBjb25maWc/LmRlZmF1bHRBcmdzID8/IHt9O1xuXG4gICAgY29uc3QgbWVyZ2VkQXJncyA9XG4gICAgICBwYWdlUGFyYW1Mb2NhdGlvbiA9PT0gbGltaXRQYXJhbUxvY2F0aW9uXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyxcbiAgICAgICAgICAgIFtwYWdlUGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgICAgICAgLi4uKGNvbmZpZz8uZGVmYXVsdEFyZ3M/LltwYWdlUGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5wYWdlQXJnc1tsaW1pdFBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbcGFnZVBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtsaW1pdFBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bbGltaXRQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLmxpbWl0QXJnc1tsaW1pdFBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIG1lcmdlZEFyZ3M7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYWdlUGFyYW1Mb2NhdGlvbihsb2NhdGlvbjogSW5maW5pdHlRdWVyeVBhcmFtTG9jYXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsb2MgPSBsb2NhdGlvbiA/PyAncXVlcnknO1xuXG4gICAgc3dpdGNoIChsb2MpIHtcbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgICByZXR1cm4gJ3BhdGhQYXJhbXMnO1xuICAgICAgY2FzZSAncXVlcnknOlxuICAgICAgICByZXR1cm4gJ3F1ZXJ5UGFyYW1zJztcbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgICByZXR1cm4gJ2JvZHknO1xuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgcmV0dXJuICdoZWFkZXJzJztcbiAgICAgIGNhc2UgJ3ZhcmlhYmxlJzpcbiAgICAgICAgcmV0dXJuICd2YXJpYWJsZXMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhZ2VQYXJhbUxvY2F0aW9uOiAke2xvY31gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","export const createInfinityQueryConfig = (config) => config;\nexport const skipPaginationPageParamCalculator = ({ page, itemsPerPage }) => itemsPerPage * (page - 1);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FPdkMsTUFBZ0YsRUFDaEYsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUE4QixFQUFFLEVBQUUsQ0FDdEcsWUFBWSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlTdGF0ZURhdGEgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvckFyZ3MsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeUNvbmZpZywgUGFnZVBhcmFtQ2FsY3VsYXRvck9wdGlvbnMgfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluZmluaXR5UXVlcnlDb25maWcgPSA8XG4gIFF1ZXJ5Q3JlYXRvciBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcixcbiAgUXVlcnkgZXh0ZW5kcyBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlPFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUNyZWF0b3JBcmdzPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxRdWVyeVsnc3RhdGUnXT4sXG4gIEluZmluaXR5UmVzcG9uc2UgZXh0ZW5kcyB1bmtub3duW10sXG4+KFxuICBjb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPixcbikgPT4gY29uZmlnO1xuXG5leHBvcnQgY29uc3Qgc2tpcFBhZ2luYXRpb25QYWdlUGFyYW1DYWxjdWxhdG9yID0gKHsgcGFnZSwgaXRlbXNQZXJQYWdlIH06IFBhZ2VQYXJhbUNhbGN1bGF0b3JPcHRpb25zKSA9PlxuICBpdGVtc1BlclBhZ2UgKiAocGFnZSAtIDEpO1xuIl19","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectorRef, Directive, ErrorHandler, inject, InjectionToken, Input, TemplateRef, ViewContainerRef, } from '@angular/core';\nimport { DestroyService } from '@ethlete/core';\nimport { BehaviorSubject, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { InfinityQuery } from '../infinite-query';\nimport { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess } from '../query';\nimport * as i0 from \"@angular/core\";\nexport const INFINITY_QUERY_TOKEN = new InjectionToken('INFINITY_QUERY_TOKEN');\nexport class InfinityQueryDirective {\n constructor() {\n this._queryConfigChanged$ = new Subject();\n this._viewContext = {\n $implicit: null,\n infinityQuery: null,\n loading: false,\n error: null,\n isFirstLoad: false,\n canLoadMore: false,\n currentPage: null,\n currentCalculatedPage: null,\n totalPages: null,\n itemsPerPage: null,\n };\n this._infinityQueryInstance = null;\n this._destroy$ = inject(DestroyService).destroy$;\n this._cdr = inject(ChangeDetectorRef);\n this._viewContainerRef = inject(ViewContainerRef);\n this._mainTemplateRef = inject((TemplateRef));\n this._errorHandler = inject(ErrorHandler);\n this._data$ = new BehaviorSubject([]);\n this._isMainViewCreated = false;\n }\n get infinityQuery() {\n return this._infinityQuery;\n }\n set infinityQuery(v) {\n this._cleanup();\n this._infinityQuery = v;\n this._infinityQueryInstance = this._setupInfinityQuery(v);\n this._loadNextPage();\n }\n get context() {\n return this._viewContext;\n }\n get instance() {\n return this._infinityQueryInstance;\n }\n get data$() {\n return this._data$.asObservable();\n }\n get data() {\n return this._data$.getValue();\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n ngOnInit() {\n this._renderMainView();\n }\n ngOnDestroy() {\n this.instance?._destroy();\n }\n _setupInfinityQuery(config) {\n const instance = new InfinityQuery(config);\n instance.currentQuery$\n .pipe(switchMap((q) => q?.state$ ?? of(null)), tap((state) => {\n this._viewContext.currentPage = instance.currentPage;\n this._viewContext.totalPages = instance.totalPages;\n this._viewContext.itemsPerPage = instance.itemsPerPage;\n this._viewContext.canLoadMore =\n (instance.totalPages && instance.currentPage && instance.totalPages > instance.currentPage) || false;\n this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;\n if (isQueryStateLoading(state)) {\n this._viewContext.loading = true;\n this._viewContext.error = null;\n this._viewContext.isFirstLoad = this.context.infinityQuery === null;\n }\n else if (isQueryStateFailure(state)) {\n this._viewContext.loading = false;\n this._viewContext.error = state.error;\n this._viewContext.isFirstLoad = false;\n this._errorHandler.handleError(state.error);\n }\n else if (isQueryStateSuccess(state)) {\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.isFirstLoad = false;\n }\n else {\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.infinityQuery = null;\n this._viewContext.$implicit = null;\n this._viewContext.isFirstLoad = false;\n this._viewContext.canLoadMore = false;\n this._viewContext.currentPage = null;\n this._viewContext.itemsPerPage = null;\n this._viewContext.totalPages = null;\n this._data$.next([]);\n }\n this._cdr.markForCheck();\n }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))\n .subscribe();\n instance.data$\n .pipe(tap((data) => {\n this._viewContext.infinityQuery = this._viewContext.$implicit = data;\n this._data$.next(data);\n this._cdr.markForCheck();\n }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))\n .subscribe();\n return instance;\n }\n _loadNextPage() {\n if (!this._infinityQueryInstance) {\n return;\n }\n this._infinityQueryInstance.nextPage();\n }\n _renderMainView() {\n if (!this._isMainViewCreated) {\n this._isMainViewCreated = true;\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);\n }\n }\n _cleanup() {\n this._queryConfigChanged$.next(true);\n this.instance?._destroy();\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.infinityQuery = null;\n this._viewContext.$implicit = null;\n this._viewContext.isFirstLoad = false;\n this._viewContext.canLoadMore = false;\n this._viewContext.currentPage = null;\n this._viewContext.itemsPerPage = null;\n this._viewContext.totalPages = null;\n this._data$.next([]);\n }\n}\nInfinityQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nInfinityQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: InfinityQueryDirective, isStandalone: true, selector: \"[infinityQuery]\", inputs: { infinityQuery: \"infinityQuery\" }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService], exportAs: [\"infinityQuery\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[infinityQuery]',\n exportAs: 'infinityQuery',\n standalone: true,\n providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService],\n }]\n }], propDecorators: { infinityQuery: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBaUIsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBa0J4RyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsc0JBQXNCLENBQUMsQ0FBQztBQVM1RyxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBVW1CLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsaUJBQVksR0FBNEI7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixhQUFhLEVBQUUsSUFBSTtZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxJQUFJO1lBRVgsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZ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RUFBRSxFQUFFLGNBQWMsQ0FBQztpQkFDcEc7OEJBK0JLLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveVNlcnZpY2UgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluZmluaXR5UXVlcnksIEluZmluaXR5UXVlcnlDb25maWcgfSBmcm9tICcuLi9pbmZpbml0ZS1xdWVyeSc7XG5pbXBvcnQgeyBCYXNlQXJndW1lbnRzLCBpc1F1ZXJ5U3RhdGVGYWlsdXJlLCBpc1F1ZXJ5U3RhdGVMb2FkaW5nLCBpc1F1ZXJ5U3RhdGVTdWNjZXNzIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgSW5maW5pdHlRdWVyeUNvbnRleHQ8USBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzLCBhbnksIHVua25vd25bXT4+IHtcbiAgJGltcGxpY2l0OiBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gIGluZmluaXR5UXVlcnk6IFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjx1bmtub3duPiB8IG51bGw7XG5cbiAgaXNGaXJzdExvYWQ6IGJvb2xlYW47XG4gIGNhbkxvYWRNb3JlOiBib29sZWFuO1xuICBjdXJyZW50UGFnZTogbnVtYmVyIHwgbnVsbDtcbiAgY3VycmVudENhbGN1bGF0ZWRQYWdlOiBudW1iZXIgfCBudWxsO1xuICB0b3RhbFBhZ2VzOiBudW1iZXIgfCBudWxsO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBJTkZJTklUWV9RVUVSWV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPGFueT4+KCdJTkZJTklUWV9RVUVSWV9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaW5maW5pdHlRdWVyeV0nLFxuICBleHBvcnRBczogJ2luZmluaXR5UXVlcnknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElORklOSVRZX1FVRVJZX1RPS0VOLCB1c2VFeGlzdGluZzogSW5maW5pdHlRdWVyeURpcmVjdGl2ZSB9LCBEZXN0cm95U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnlEaXJlY3RpdmU8USBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzLCBhbnksIHVua25vd25bXT4+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcnlDb25maWdDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPiA9IHtcbiAgICAkaW1wbGljaXQ6IG51bGwsXG4gICAgaW5maW5pdHlRdWVyeTogbnVsbCxcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcblxuICAgIGlzRmlyc3RMb2FkOiBmYWxzZSxcbiAgICBjYW5Mb2FkTW9yZTogZmFsc2UsXG4gICAgY3VycmVudFBhZ2U6IG51bGwsXG4gICAgY3VycmVudENhbGN1bGF0ZWRQYWdlOiBudWxsLFxuICAgIHRvdGFsUGFnZXM6IG51bGwsXG4gICAgaXRlbXNQZXJQYWdlOiBudWxsLFxuICB9O1xuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5SW5zdGFuY2U6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX3NldHVwSW5maW5pdHlRdWVyeT4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95U2VydmljZSkuZGVzdHJveSQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21haW5UZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPj4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckhhbmRsZXIgPSBpbmplY3QoRXJyb3JIYW5kbGVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10+KFtdKTtcblxuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbmZpbml0eVF1ZXJ5KCk6IFEge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0eVF1ZXJ5O1xuICB9XG4gIHNldCBpbmZpbml0eVF1ZXJ5KHY6IFEpIHtcbiAgICB0aGlzLl9jbGVhbnVwKCk7XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5ID0gdjtcbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UgPSB0aGlzLl9zZXR1cEluZmluaXR5UXVlcnkodik7XG4gICAgdGhpcy5fbG9hZE5leHRQYWdlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfaW5maW5pdHlRdWVyeSE6IFE7XG5cbiAgZ2V0IGNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdDb250ZXh0O1xuICB9XG5cbiAgZ2V0IGluc3RhbmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2U7XG4gIH1cblxuICBnZXQgZGF0YSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmdldFZhbHVlKCk7XG4gIH1cblxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMsIGFueSwgdW5rbm93bltdPj4oXG4gICAgZGlyOiBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFE+LFxuICAgIGN0eDogdW5rbm93bixcbiAgKTogY3R4IGlzIEluZmluaXR5UXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbmNlPy5fZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBJbmZpbml0eVF1ZXJ5KGNvbmZpZzogUSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEluZmluaXR5UXVlcnkoY29uZmlnKTtcblxuICAgIGluc3RhbmNlLmN1cnJlbnRRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHEpID0+IHE/LnN0YXRlJCA/PyBvZihudWxsKSksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UGFnZSA9IGluc3RhbmNlLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBpbnN0YW5jZS50b3RhbFBhZ2VzO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0Lml0ZW1zUGVyUGFnZSA9IGluc3RhbmNlLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9XG4gICAgICAgICAgICAoaW5zdGFuY2UudG90YWxQYWdlcyAmJiBpbnN0YW5jZS5jdXJyZW50UGFnZSAmJiBpbnN0YW5jZS50b3RhbFBhZ2VzID4gaW5zdGFuY2UuY3VycmVudFBhZ2UpIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRDYWxjdWxhdGVkUGFnZSA9IGluc3RhbmNlLmN1cnJlbnRDYWxjdWxhdGVkUGFnZTtcblxuICAgICAgICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IHRoaXMuY29udGV4dC5pbmZpbml0eVF1ZXJ5ID09PSBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gc3RhdGUuZXJyb3I7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KFtdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBpbnN0YW5jZS5kYXRhJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmluZmluaXR5UXVlcnkgPSB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBkYXRhIGFzIFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KGRhdGEpO1xuXG4gICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3F1ZXJ5Q29uZmlnQ2hhbmdlZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgX2xvYWROZXh0UGFnZSgpIHtcbiAgICBpZiAoIXRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTWFpblZpZXcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCkge1xuICAgICAgdGhpcy5faXNNYWluVmlld0NyZWF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cCgpIHtcbiAgICB0aGlzLl9xdWVyeUNvbmZpZ0NoYW5nZWQkLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLmluc3RhbmNlPy5fZGVzdHJveSgpO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgdGhpcy5fZGF0YSQubmV4dChbXSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, ElementRef, inject, Input } from '@angular/core';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { INFINITY_QUERY_TOKEN } from './infinity-query.directive';\nimport * as i0 from \"@angular/core\";\nexport class InfinityQueryTriggerDirective {\n constructor() {\n this._elementRef = inject((ElementRef));\n this._infinityQuery = inject(INFINITY_QUERY_TOKEN);\n this._destroy = new Subject();\n this._observer = null;\n this.click$ = fromEvent(this._elementRef.nativeElement, 'click');\n this.scrollContainerSelector = null;\n }\n ngOnInit() {\n const isInteractive = this._elementRef.nativeElement.hasAttribute('infinityQueryTrigger');\n if (isInteractive) {\n this.click$.pipe(takeUntil(this._destroy)).subscribe(() => this._infinityQuery._loadNextPage());\n }\n else {\n this._setupIntersectionObserver();\n }\n }\n ngOnDestroy() {\n this._destroy.next(true);\n this._destroy.unsubscribe();\n this._observer?.disconnect();\n }\n _setupIntersectionObserver() {\n this._observer = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !this._infinityQuery.context.loading) {\n this._infinityQuery._loadNextPage();\n }\n }, {\n root: this.scrollContainerSelector ? document.querySelector(this.scrollContainerSelector) : null,\n rootMargin: '0px',\n threshold: 1.0,\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n}\nInfinityQueryTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nInfinityQueryTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: InfinityQueryTriggerDirective, isStandalone: true, selector: \"[infinityQueryTrigger], infinity-query-trigger\", inputs: { scrollContainerSelector: \"scrollContainerSelector\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[infinityQueryTrigger], infinity-query-trigger',\n standalone: true,\n }]\n }], propDecorators: { scrollContainerSelector: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnktdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0eS1xdWVyeS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFNVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsY0FBUyxHQUFnQyxJQUFJLENBQUM7UUFFdEQsV0FBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUc1RCw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0tBb0MvQztJQWxDQyxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFMUYsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDakc7YUFBTTtZQUNMLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQ3ZDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxFQUNEO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRyxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsR0FBRztTQUNmLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7MEhBN0NVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBTHpDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0RBQWdEO29CQUMxRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBV0MsdUJBQXVCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElORklOSVRZX1FVRVJZX1RPS0VOIH0gZnJvbSAnLi9pbmZpbml0eS1xdWVyeS5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaW5maW5pdHlRdWVyeVRyaWdnZXJdLCBpbmZpbml0eS1xdWVyeS10cmlnZ2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeVRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5ID0gaW5qZWN0KElORklOSVRZX1FVRVJZX1RPS0VOKTtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY2xpY2skID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJyk7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW50ZXJhY3RpdmUgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdpbmZpbml0eVF1ZXJ5VHJpZ2dlcicpO1xuXG4gICAgaWYgKGlzSW50ZXJhY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faW5maW5pdHlRdWVyeS5fbG9hZE5leHRQYWdlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcblxuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgIXRoaXMuX2luZmluaXR5UXVlcnkuY29udGV4dC5sb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5faW5maW5pdHlRdWVyeS5fbG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IpIDogbnVsbCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgICAgIHRocmVzaG9sZDogMS4wLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0=","export class QueryStore {\n constructor(_config) {\n this._config = _config;\n this._store = new Map();\n this._garbageCollector = null;\n }\n add(id, query) {\n this._store.set(id, query);\n this._initGarbageCollector();\n this._logState(id, query, 'SET');\n }\n get(id) {\n return this._store.get(id) ?? null;\n }\n remove(id) {\n this._store.delete(id);\n this._logState(id, null, 'REMOVE');\n }\n _logState(key, item, operation) {\n if (!this._config?.enableChangeLogging)\n return;\n const stateAsJson = {};\n this._store.forEach((value, key) => {\n stateAsJson[key] = value;\n });\n console.log(`%c[${operation}] ${key}`, 'font-weight: bold');\n console.log({ operation, key, item });\n console.log(stateAsJson);\n }\n _initGarbageCollector() {\n if (this._garbageCollector !== null) {\n return;\n }\n this._logGarbageCollector('Start');\n this._garbageCollector = window.setInterval(() => {\n this._runGarbageCollector();\n }, 15000);\n }\n _stopGarbageCollector() {\n if (this._garbageCollector !== null) {\n window.clearInterval(this._garbageCollector);\n this._garbageCollector = null;\n }\n }\n _runGarbageCollector() {\n this._logGarbageCollector('Collecting...');\n this._store.forEach((item, key) => {\n if (item.isExpired) {\n this.remove(key);\n }\n });\n this._logGarbageCollector('Collection done');\n if (!this._store.size) {\n this._stopGarbageCollector();\n this._logGarbageCollector('Stop');\n }\n }\n _logGarbageCollector(action) {\n if (!this._config?.enableGarbageCollectorLogging)\n return;\n console.log(`%cGC: ${action}`, 'color: yellow; font-weight: bold');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDVSxPQUdQO1FBSE8sWUFBTyxHQUFQLE9BQU8sQ0FHZDtRQVBjLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUM5QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBTzdDLENBQUM7SUFFSixHQUFHLENBQUMsRUFBVSxFQUFFLEtBQWU7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUFrQixFQUFFLElBQXFCLEVBQUUsU0FBaUI7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CO1lBQUUsT0FBTztRQUUvQyxNQUFNLFdBQVcsR0FBNkIsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sU0FBUyxLQUFLLEdBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBQ25DLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7WUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsNkJBQTZCO1lBQUUsT0FBTztRQUV6RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsTUFBTSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbnlRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5JztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5U3RvcmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlRdWVyeT4oKTtcbiAgcHJpdmF0ZSBfZ2FyYmFnZUNvbGxlY3RvcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29uZmlnPzoge1xuICAgICAgZW5hYmxlQ2hhbmdlTG9nZ2luZz86IGJvb2xlYW47XG4gICAgICBlbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZz86IGJvb2xlYW47XG4gICAgfSxcbiAgKSB7fVxuXG4gIGFkZChpZDogc3RyaW5nLCBxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLl9zdG9yZS5zZXQoaWQsIHF1ZXJ5KTtcblxuICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgcXVlcnksICdTRVQnKTtcbiAgfVxuXG4gIGdldChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3RvcmUuZGVsZXRlKGlkKTtcblxuICAgIHRoaXMuX2xvZ1N0YXRlKGlkLCBudWxsLCAnUkVNT1ZFJyk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3Rpb24gZG9uZScpO1xuXG4gICAgaWYgKCF0aGlzLl9zdG9yZS5zaXplKSB7XG4gICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnNvbGUubG9nKGAlY0dDOiAke2FjdGlvbn1gLCAnY29sb3I6IHllbGxvdzsgZm9udC13ZWlnaHQ6IGJvbGQnKTtcbiAgfVxufVxuIl19","export const shouldCacheQuery = (method) => {\n return method === 'GET' || method === 'OPTIONS' || method === 'HEAD' || method === 'GQL_QUERY';\n};\nexport const buildGqlCacheKey = (\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconfig, args) => {\n const { query } = config;\n const variables = args?.variables || {};\n const queryWithoutNewLinesAndWhitespace = query.replace(/\\s/g, '');\n const queryFirst50Chars = queryWithoutNewLinesAndWhitespace.slice(0, 50);\n const queryMiddle25Chars = queryWithoutNewLinesAndWhitespace.slice(queryWithoutNewLinesAndWhitespace.length / 2 - 25, queryWithoutNewLinesAndWhitespace.length / 2 + 25);\n const queryLast50Chars = queryWithoutNewLinesAndWhitespace.slice(-50);\n const vars = JSON.stringify(variables);\n return `${queryFirst50Chars}...${queryMiddle25Chars}...${queryLast50Chars}...${vars}`;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNqRCxPQUFPLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDakcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7QUFDOUIsOERBQThEO0FBQzlELE1BQTBDLEVBQzFDLElBQStCLEVBQy9CLEVBQUU7SUFDRixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO0lBRXhDLE1BQU0saUNBQWlDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbkUsTUFBTSxpQkFBaUIsR0FBRyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsaUNBQWlDLENBQUMsS0FBSyxDQUNoRSxpQ0FBaUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFDakQsaUNBQWlDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ2xELENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkMsT0FBTyxHQUFHLGlCQUFpQixNQUFNLGtCQUFrQixNQUFNLGdCQUFnQixNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3hGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBcmd1bWVudHMsIEdxbFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHsgTWV0aG9kIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmV4cG9ydCBjb25zdCBzaG91bGRDYWNoZVF1ZXJ5ID0gKG1ldGhvZDogTWV0aG9kKSA9PiB7XG4gIHJldHVybiBtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ09QVElPTlMnIHx8IG1ldGhvZCA9PT0gJ0hFQUQnIHx8IG1ldGhvZCA9PT0gJ0dRTF9RVUVSWSc7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRHcWxDYWNoZUtleSA9IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uZmlnOiBHcWxRdWVyeUNvbmZpZzxhbnksIGFueSwgYW55LCBhbnk+LFxuICBhcmdzOiBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gIGNvbnN0IHsgcXVlcnkgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFyaWFibGVzID0gYXJncz8udmFyaWFibGVzIHx8IHt9O1xuXG4gIGNvbnN0IHF1ZXJ5V2l0aG91dE5ld0xpbmVzQW5kV2hpdGVzcGFjZSA9IHF1ZXJ5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG5cbiAgY29uc3QgcXVlcnlGaXJzdDUwQ2hhcnMgPSBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2Uuc2xpY2UoMCwgNTApO1xuICBjb25zdCBxdWVyeU1pZGRsZTI1Q2hhcnMgPSBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2Uuc2xpY2UoXG4gICAgcXVlcnlXaXRob3V0TmV3TGluZXNBbmRXaGl0ZXNwYWNlLmxlbmd0aCAvIDIgLSAyNSxcbiAgICBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2UubGVuZ3RoIC8gMiArIDI1LFxuICApO1xuICBjb25zdCBxdWVyeUxhc3Q1MENoYXJzID0gcXVlcnlXaXRob3V0TmV3TGluZXNBbmRXaGl0ZXNwYWNlLnNsaWNlKC01MCk7XG5cbiAgY29uc3QgdmFycyA9IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyk7XG5cbiAgcmV0dXJuIGAke3F1ZXJ5Rmlyc3Q1MENoYXJzfS4uLiR7cXVlcnlNaWRkbGUyNUNoYXJzfS4uLiR7cXVlcnlMYXN0NTBDaGFyc30uLi4ke3ZhcnN9YDtcbn07XG4iXX0=","import { BehaviorSubject } from 'rxjs';\nimport { isGqlQueryConfig, Query, } from '../query';\nimport { QueryStore } from '../query-store';\nimport { buildRoute } from '../request';\nimport { buildGqlCacheKey, shouldCacheQuery } from './query-client.utils';\nexport class QueryClient {\n get config() {\n return this._clientConfig;\n }\n get authProvider() {\n return this._authProvider;\n }\n constructor(_clientConfig) {\n this._clientConfig = _clientConfig;\n this._authProvider = null;\n this.get = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GET',\n });\n this.post = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'POST',\n });\n this.put = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'PUT',\n });\n this.patch = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'PATCH',\n });\n this.delete = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'DELETE',\n });\n this.gqlQuery = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GQL_QUERY',\n });\n this.gqlMutate = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GQL_MUTATE',\n });\n this.fetch = (queryConfig) => {\n const prepare = (args) => {\n const route = buildRoute({\n base: this._clientConfig.baseRoute,\n route: queryConfig.route,\n pathParams: args?.pathParams,\n queryParams: args?.queryParams,\n });\n const cacheKey = isGqlQueryConfig(queryConfig) ? buildGqlCacheKey(queryConfig, args) : route;\n if (shouldCacheQuery(queryConfig.method)) {\n const existingQuery = this._store.get(cacheKey);\n if (existingQuery) {\n return existingQuery;\n }\n }\n const query = new Query(this, queryConfig, route, args);\n if (shouldCacheQuery(queryConfig.method)) {\n this._store.add(cacheKey, query);\n }\n return query;\n };\n const behaviorSubject = (initialValue = null) => new BehaviorSubject(initialValue);\n return {\n prepare,\n behaviorSubject,\n };\n };\n this.setAuthProvider = (authProvider) => {\n if (this._authProvider) {\n throw new Error('The auth provider is already set. Please call clearAuthProvider() first.');\n }\n this._authProvider = authProvider;\n authProvider.queryClient = this;\n };\n this.clearAuthProvider = () => {\n this._authProvider?.cleanUp();\n this._authProvider = null;\n };\n this._store = new QueryStore({\n enableChangeLogging: _clientConfig.logging?.queryStateChanges,\n enableGarbageCollectorLogging: _clientConfig.logging?.queryStateGarbageCollector,\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2hCLEtBQUssR0FJTixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFPOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUUsTUFBTSxPQUFPLFdBQVc7SUFJdEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQW9CLGFBQWdDO1FBQWhDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQVY1QyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFpQmxELFFBQUcsR0FBRyxDQU1KLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUF5RDtZQUNqRSxHQUFHLFdBQVc7WUFDZCxNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUVMLFNBQUksR0FBRyxDQU1MLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUEwRDtZQUNsRSxHQUFHLFdBQVc7WUFDZCxNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVMLFFBQUcsR0FBRyxDQU1KLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUF5RDtZQUNqRSxH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Q0FBQztZQUMzQixtQkFBbUIsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQjtZQUM3RCw2QkFBNkIsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLDBCQUEwQjtTQUNqRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBeUpGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIFF1ZXJ5LFxuICBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxufSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlIH0gZnJvbSAnLi4vcXVlcnktc3RvcmUnO1xuaW1wb3J0IHsgYnVpbGRSb3V0ZSwgTWV0aG9kIGFzIE1ldGhvZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyLFxuICBRdWVyeUNsaWVudENvbmZpZyxcbiAgUXVlcnlDcmVhdG9yLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSxcbn0gZnJvbSAnLi9xdWVyeS1jbGllbnQudHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRHcWxDYWNoZUtleSwgc2hvdWxkQ2FjaGVRdWVyeSB9IGZyb20gJy4vcXVlcnktY2xpZW50LnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcmU6IFF1ZXJ5U3RvcmU7XG4gIHByaXZhdGUgX2F1dGhQcm92aWRlcjogQXV0aFByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50Q29uZmlnO1xuICB9XG5cbiAgZ2V0IGF1dGhQcm92aWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFByb3ZpZGVyO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xpZW50Q29uZmlnOiBRdWVyeUNsaWVudENvbmZpZykge1xuICAgIHRoaXMuX3N0b3JlID0gbmV3IFF1ZXJ5U3RvcmUoe1xuICAgICAgZW5hYmxlQ2hhbmdlTG9nZ2luZzogX2NsaWVudENvbmZpZy5sb2dnaW5nPy5xdWVyeVN0YXRlQ2hhbmdlcyxcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nOiBfY2xpZW50Q29uZmlnLmxvZ2dpbmc/LnF1ZXJ5U3RhdGVHYXJiYWdlQ29sbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ0dFVCcsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KTtcblxuICBwb3N0ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ1BPU1QnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pO1xuXG4gIHB1dCA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiA9IERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyPFJlc3BvbnNlPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsICdQVVQnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgfSk7XG5cbiAgcGF0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnUEFUQ0gnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICB9KTtcblxuICBkZWxldGUgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnREVMRVRFJywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgIH0pO1xuXG4gIGdxbFF1ZXJ5ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ0dRTF9RVUVSWScsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR1FMX1FVRVJZJyxcbiAgICB9KTtcblxuICBncWxNdXRhdGUgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IEdxbFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnR1FMX01VVEFURScsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR1FMX01VVEFURScsXG4gICAgfSk7XG5cbiAgZmV0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICAgIE1ldGhvZCBleHRlbmRzIE1ldGhvZFR5cGUsXG4gICAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiA9IERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyPFJlc3BvbnNlPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPlxuICAgICAgfCBHcWxRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICk6IFF1ZXJ5Q3JlYXRvcjxBcmd1bWVudHMsIE1ldGhvZCwgUmVzcG9uc2UsIFJvdXRlLCBSZXNwb25zZVRyYW5zZm9ybWVyPiA9PiB7XG4gICAgY29uc3QgcHJlcGFyZSA9IChhcmdzPzogQXJndW1lbnRzKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGJ1aWxkUm91dGUoe1xuICAgICAgICBiYXNlOiB0aGlzLl9jbGllbnRDb25maWcuYmFzZVJvdXRlLFxuICAgICAgICByb3V0ZTogcXVlcnlDb25maWcucm91dGUsXG4gICAgICAgIHBhdGhQYXJhbXM6IChhcmdzIGFzIEJhc2VBcmd1bWVudHMpPy5wYXRoUGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtczogKGFyZ3MgYXMgQmFzZUFyZ3VtZW50cyk/LnF1ZXJ5UGFyYW1zLFxuICAgICAgfSkgYXMgUm91dGU7XG5cbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gaXNHcWxRdWVyeUNvbmZpZyhxdWVyeUNvbmZpZykgPyBidWlsZEdxbENhY2hlS2V5KHF1ZXJ5Q29uZmlnLCBhcmdzKSA6IHJvdXRlO1xuXG4gICAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeShxdWVyeUNvbmZpZy5tZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUXVlcnkgPSB0aGlzLl9zdG9yZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgICAgIGlmIChleGlzdGluZ1F1ZXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nUXVlcnkgYXMgUXVlcnk8UmVzcG9uc2UsIEFyZ3VtZW50cywgUm91dGUsIE1ldGhvZCwgUmVzcG9uc2VUcmFuc2Zvcm1lcj47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnk8UmVzcG9uc2UsIEFyZ3VtZW50cywgUm91dGUsIE1ldGhvZCwgUmVzcG9uc2VUcmFuc2Zvcm1lcj4odGhpcywgcXVlcnlDb25maWcsIHJvdXRlLCBhcmdzKTtcblxuICAgICAgaWYgKHNob3VsZENhY2hlUXVlcnkocXVlcnlDb25maWcubWV0aG9kKSkge1xuICAgICAgICB0aGlzLl9zdG9yZS5hZGQoY2FjaGVLZXksIHF1ZXJ5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgIH07XG5cbiAgICBjb25zdCBiZWhhdmlvclN1YmplY3QgPSA8VCBleHRlbmRzIFJldHVyblR5cGU8dHlwZW9mIHByZXBhcmU+Pihpbml0aWFsVmFsdWU6IFQgfCBudWxsID0gbnVsbCkgPT5cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8VCB8IG51bGw+KGluaXRpYWxWYWx1ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJlcGFyZSxcbiAgICAgIGJlaGF2aW9yU3ViamVjdCxcbiAgICB9IGFzIHVua25vd24gYXMgUXVlcnlDcmVhdG9yPEFyZ3VtZW50cywgTWV0aG9kLCBSZXNwb25zZSwgUm91dGUsIFJlc3BvbnNlVHJhbnNmb3JtZXI+O1xuICB9O1xuXG4gIHNldEF1dGhQcm92aWRlciA9IChhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcikgPT4ge1xuICAgIGlmICh0aGlzLl9hdXRoUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGF1dGggcHJvdmlkZXIgaXMgYWxyZWFkeSBzZXQuIFBsZWFzZSBjYWxsIGNsZWFyQXV0aFByb3ZpZGVyKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyID0gYXV0aFByb3ZpZGVyO1xuICAgIGF1dGhQcm92aWRlci5xdWVyeUNsaWVudCA9IHRoaXM7XG4gIH07XG5cbiAgY2xlYXJBdXRoUHJvdmlkZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyPy5jbGVhblVwKCk7XG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyID0gbnVsbDtcbiAgfTtcbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { combineLatest, concat, debounceTime, distinctUntilChanged, map, startWith, take, tap } from 'rxjs';\nexport class QueryField {\n get control() {\n return this.data.control;\n }\n constructor(data) {\n this.data = data;\n this.changes$ = this._setupChangesObservable();\n this._currentDebounceTimeout = null;\n }\n setValue(value) {\n if (this._currentDebounceTimeout !== null) {\n clearTimeout(this._currentDebounceTimeout);\n }\n if (this.data.debounce) {\n this._currentDebounceTimeout = window.setTimeout(() => {\n this.control.setValue(value);\n }, this.data.debounce);\n }\n else {\n this.control.setValue(value);\n }\n }\n _setupChangesObservable() {\n const obs = this.control.valueChanges.pipe(startWith(this.control.value));\n if (!this.data.debounce) {\n return obs;\n }\n // The initial value should get emitted immediately\n // concat switches to the debounced observable after the first observable is completed\n return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(debounceTime(this.data.debounce)));\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class QueryForm {\n constructor(_fields) {\n this._fields = _fields;\n this._router = inject(Router, { optional: true });\n this._activatedRoute = inject(ActivatedRoute, { optional: true });\n this._defaultValues = this._extractDefaultValues();\n this.form = this._setupFormGroup();\n }\n observe(options) {\n return combineLatest(Object.values(this._fields).map((field) => field.changes$)).pipe(map(() => this.form.getRawValue()), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), tap((values) => {\n if (options?.syncViaUrlQueryParams !== false) {\n this._syncViaUrlQueryParams(values);\n }\n }));\n }\n setFormValueFromUrlQueryParams() {\n if (!this._activatedRoute) {\n throw new Error('Cannot set form value from url query params without ActivatedRoute');\n }\n const queryParams = this._activatedRoute.snapshot.queryParams;\n for (const [key, field] of Object.entries(this._fields)) {\n const value = queryParams[key];\n // We only check using == because the value types can be different (e.g. \"1\" and 1)\n if (value === undefined || value == field.control.value) {\n continue;\n }\n const deserializedValue = field.data.queryParamToValueTransformFn?.(value) ?? value;\n field.setValue(deserializedValue);\n }\n }\n updateFormOnUrlQueryParamsChange() {\n if (!this._activatedRoute) {\n throw new Error('Cannot update form on url query params change without ActivatedRoute');\n }\n return this._activatedRoute.queryParams.pipe(tap(() => this.setFormValueFromUrlQueryParams()));\n }\n _getDefaultValue(key) {\n return this._defaultValues[key] ?? null;\n }\n _isDefaultValue(key, value) {\n const normalizedValue = Array.isArray(value) ? JSON.stringify(value) : value;\n return this._getDefaultValue(key) === normalizedValue;\n }\n _setupFormGroup() {\n const group = new FormGroup({});\n for (const [key, field] of Object.entries(this._fields)) {\n group.addControl(key, field.control);\n }\n return group;\n }\n _extractDefaultValues() {\n const defaultValues = {};\n for (const [key, field] of Object.entries(this._fields)) {\n const value = field.control.value;\n if (value === null || value === undefined) {\n continue;\n }\n if (Array.isArray(value)) {\n defaultValues[key] = JSON.stringify(value);\n }\n else {\n defaultValues[key] = value;\n }\n }\n return defaultValues;\n }\n _syncViaUrlQueryParams(values) {\n if (!this._router || !this._activatedRoute) {\n return;\n }\n const queryParams = structuredClone(this._activatedRoute.snapshot.queryParams);\n for (const [key, value] of Object.entries(values)) {\n if (this._isDefaultValue(key, value) || this._fields[key].data.appendToUrl === false) {\n delete queryParams[key];\n }\n else {\n queryParams[key] = this._fields[key].data.valueToQueryParamTransformFn\n ? this._fields[key].data.valueToQueryParamTransformFn?.(value)\n : value;\n }\n }\n this._router.navigate([], {\n queryParams,\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hILE1BQU0sT0FBTyxVQUFVO0lBR3JCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUlELFlBQW1CLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBUjdDLGFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQU1sQyw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0lBRU4sQ0FBQztJQUVqRCxRQUFRLENBQUMsS0FBZTtRQUN0QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLEVBQUU7WUFDekMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFBRSxJQUFJLENB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QyxJQUFJLENBQUMsNEJBQTRCO29CQUNwRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQzlELENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDWDtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3hCLFdBQVc7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgY29uY2F0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRdWVyeUZpZWxkT3B0aW9ucywgUXVlcnlGb3JtR3JvdXAsIFF1ZXJ5Rm9ybVZhbHVlIH0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5RmllbGQ8VD4ge1xuICBjaGFuZ2VzJCA9IHRoaXMuX3NldHVwQ2hhbmdlc09ic2VydmFibGUoKTtcblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50RGVib3VuY2VUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YTogUXVlcnlGaWVsZE9wdGlvbnM8VD4pIHt9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLmRlYm91bmNlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSwgdGhpcy5kYXRhLmRlYm91bmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5kZWJvdW5jZSkge1xuICAgICAgcmV0dXJuIG9icztcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBzaG91bGQgZ2V0IGVtaXR0ZWQgaW1tZWRpYXRlbHlcbiAgICAvLyBjb25jYXQgc3dpdGNoZXMgdG8gdGhlIGRlYm91bmNlZCBvYnNlcnZhYmxlIGFmdGVyIHRoZSBmaXJzdCBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZFxuICAgIHJldHVybiBjb25jYXQob2JzLnBpcGUodGFrZSgxKSksIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kYXRhLmRlYm91bmNlKSkpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgX3JvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWVzID0gdGhpcy5fZXh0cmFjdERlZmF1bHRWYWx1ZXMoKTtcblxuICBmb3JtID0gdGhpcy5fc2V0dXBGb3JtR3JvdXAoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWVsZHM6IFQpIHt9XG5cbiAgb2JzZXJ2ZShvcHRpb25zPzogeyBzeW5jVmlhVXJsUXVlcnlQYXJhbXM/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkcykubWFwKChmaWVsZCkgPT4gZmllbGQuY2hhbmdlcyQpKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgdGFwKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnN5bmNWaWFVcmxRdWVyeVBhcmFtcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLl9zeW5jVmlhVXJsUXVlcnlQYXJhbXModmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgfSksXG5cbiAgICAgIC8vIFRoaXMgdHlwZSBjYXN0IGlzIG5lZWRlZCBzaW5jZSBuZy1wYWNrYWdyIHdpbGwgYnJlYWsgdGhlIHR5cGUgaW5mZXJlbmNlIG90aGVyd2lzZS5cbiAgICApIGFzIE9ic2VydmFibGU8UXVlcnlGb3JtVmFsdWU8VD4+O1xuICB9XG5cbiAgc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNldCBmb3JtIHZhbHVlIGZyb20gdXJsIHF1ZXJ5IHBhcmFtcyB3aXRob3V0IEFjdGl2YXRlZFJvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlQYXJhbXNba2V5XTtcblxuICAgICAgLy8gV2Ugb25seSBjaGVjayB1c2luZyA9PSBiZWNhdXNlIHRoZSB2YWx1ZSB0eXBlcyBjYW4gYmUgZGlmZmVyZW50IChlLmcuIFwiMVwiIGFuZCAxKVxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gZmllbGQuY29udHJvbC52YWx1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/Lih2YWx1ZSkgPz8gdmFsdWU7XG5cbiAgICAgIGZpZWxkLnNldFZhbHVlKGRlc2VyaWFsaXplZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtT25VcmxRdWVyeVBhcmFtc0NoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgZm9ybSBvbiB1cmwgcXVlcnkgcGFyYW1zIGNoYW5nZSB3aXRob3V0IEFjdGl2YXRlZFJvdXRlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFwKCgpID0+IHRoaXMuc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWVzW2tleV0gPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGVmYXVsdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRm9ybUdyb3VwKCkge1xuICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSBhcyBRdWVyeUZvcm1Hcm91cDxUPik7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBncm91cC5hZGRDb250cm9sKGtleSwgZmllbGQuY29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXh0cmFjdERlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGQuY29udHJvbC52YWx1ZTtcblxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyh2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgaWYgKCF0aGlzLl9yb3V0ZXIgfHwgIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWVzKSkge1xuICAgICAgaWYgKHRoaXMuX2lzRGVmYXVsdFZhbHVlKGtleSwgdmFsdWUpIHx8IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEuYXBwZW5kVG9VcmwgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1trZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEudmFsdWVUb1F1ZXJ5UGFyYW1UcmFuc2Zvcm1GblxuICAgICAgICAgID8gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPy4odmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","export const transformToString = (value) => {\n if (typeof value === 'string') {\n return value;\n }\n return null;\n};\nexport const transformToStringArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToString).filter(Boolean);\n }\n else if (typeof value === 'string') {\n return [transformToString(value)];\n }\n return null;\n};\nexport const transformToNumber = (value) => {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n return null;\n};\nexport const transformToNumberArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToNumber).filter((item) => item !== null);\n }\n else if (typeof value === 'number') {\n return [value];\n }\n return null;\n};\nexport const transformToBoolean = (value) => {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value === 'true' || value === '1';\n }\n return null;\n};\nexport const transformToBooleanArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToBoolean).filter((item) => item !== null);\n }\n else if (typeof value === 'string' || typeof value === 'boolean') {\n return [transformToBoolean(value)];\n }\n return null;\n};\nexport const transformToDate = (value) => {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'string') {\n const date = new Date(value);\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n }\n return null;\n};\nexport const transformToDateArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToDate).filter((item) => item !== null);\n }\n else if (typeof value === 'string' || value instanceof Date) {\n return [transformToDate(value)];\n }\n return null;\n};\nexport const transformToSort = (value) => {\n if (typeof value === 'string') {\n const [active, direction] = value.split(':');\n return {\n active,\n direction: direction,\n };\n }\n return null;\n};\nexport const transformToSortQueryParam = (value) => {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object' && 'active' in value && 'direction' in value) {\n const valAsSort = value;\n return valAsSort.direction ? `${valAsSort.active}:${valAsSort.direction}` : null;\n }\n return null;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3ZELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUM7S0FDakU7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUNwQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQWEsQ0FBQztLQUMvQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDdkQsSUFB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RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQzFELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLEtBQUssSUFBSSxXQUFXLElBQUksS0FBSyxFQUFFO1FBQ25GLE1BQU0sU0FBUyxHQUFHLEtBR2pCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztLQUNsRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9TdHJpbmdBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvU3RyaW5nKS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBbdHJhbnNmb3JtVG9TdHJpbmcodmFsdWUpXSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvTnVtYmVyID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9OdW1iZXJBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvTnVtYmVyKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwpIGFzIG51bWJlcltdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW3ZhbHVlXSBhcyBudW1iZXJbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvQm9vbGVhbiA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvQm9vbGVhbkFycmF5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAodHJhbnNmb3JtVG9Cb29sZWFuKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwpIGFzIGJvb2xlYW5bXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIFt0cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWUpXSBhcyBib29sZWFuW107XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub0RhdGUgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub0RhdGVBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvRGF0ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBudWxsKSBhcyBEYXRlW107XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gW3RyYW5zZm9ybVRvRGF0ZSh2YWx1ZSldIGFzIERhdGVbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvU29ydCA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IFthY3RpdmUsIGRpcmVjdGlvbl0gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzICdhc2MnIHwgJ2Rlc2MnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub1NvcnRRdWVyeVBhcmFtID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdhY3RpdmUnIGluIHZhbHVlICYmICdkaXJlY3Rpb24nIGluIHZhbHVlKSB7XG4gICAgY29uc3QgdmFsQXNTb3J0ID0gdmFsdWUgYXMge1xuICAgICAgYWN0aXZlOiBzdHJpbmc7XG4gICAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICAgIH07XG5cbiAgICByZXR1cm4gdmFsQXNTb3J0LmRpcmVjdGlvbiA/IGAke3ZhbEFzU29ydC5hY3RpdmV9OiR7dmFsQXNTb3J0LmRpcmVjdGlvbn1gIDogbnVsbDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbiJdfQ==","export const deepFreeze = (object) => {\n // check if object is actually an object or frozen\n if (!object || typeof object !== 'object' || Object.isFrozen(object)) {\n return object;\n }\n // Retrieve the property names defined on object\n const propNames = Object.getOwnPropertyNames(object);\n // Freeze properties before freezing self\n for (const name of propNames) {\n const value = object[name];\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mcmVlemUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kZWVwLWZyZWV6ZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFvQyxNQUFTLEVBQUUsRUFBRTtJQUN6RSxrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwRSxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRCx5Q0FBeUM7SUFFekMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUU7UUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0QyxVQUFVLENBQUMsS0FBVSxDQUFDLENBQUM7U0FDeEI7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZGVlcEZyZWV6ZSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9iamVjdDogVCkgPT4ge1xuICAvLyBjaGVjayBpZiBvYmplY3QgaXMgYWN0dWFsbHkgYW4gb2JqZWN0IG9yIGZyb3plblxuICBpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCBPYmplY3QuaXNGcm96ZW4ob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICAvLyBSZXRyaWV2ZSB0aGUgcHJvcGVydHkgbmFtZXMgZGVmaW5lZCBvbiBvYmplY3RcbiAgY29uc3QgcHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTtcblxuICAvLyBGcmVlemUgcHJvcGVydGllcyBiZWZvcmUgZnJlZXppbmcgc2VsZlxuXG4gIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBkZWVwRnJlZXplKHZhbHVlIGFzIFQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKG9iamVjdCk7XG59O1xuIl19","/**\n * Dummy function for providing types while not breaking inference.\n * **This function always returns null.**\n * @see https://github.com/microsoft/TypeScript/issues/26242\n * @returns null\n */\nexport const def = () => null;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvdXRpbHMvZGVmLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBUyxFQUFFLENBQUMsSUFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRHVtbXkgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyB0eXBlcyB3aGlsZSBub3QgYnJlYWtpbmcgaW5mZXJlbmNlLlxuICogKipUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIG51bGwuKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yNjI0MlxuICogQHJldHVybnMgbnVsbFxuICovXG5leHBvcnQgY29uc3QgZGVmID0gPERhdGE+KCkgPT4gbnVsbCBhcyB1bmtub3duIGFzIERhdGE7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRobGV0ZS1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2V0aGxldGUtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ethlete-query.mjs","sources":["../esm2020/lib/auth/custom-header-auth-provider.mjs","../esm2020/lib/auth/basic-auth-provider.mjs","../esm2020/lib/logger/logger.mjs","../esm2020/lib/request/request.util.mjs","../esm2020/lib/request/request.mjs","../esm2020/lib/auth/auth-provider.utils.mjs","../esm2020/lib/auth/bearer-auth-provider.mjs","../esm2020/lib/gql/gql.mjs","../esm2020/lib/query/query.utils.mjs","../esm2020/lib/query/query.mjs","../esm2020/lib/directives/query.directive.mjs","../esm2020/lib/infinite-query/infinity-query.mjs","../esm2020/lib/infinite-query/infinity-query.utils.mjs","../esm2020/lib/directives/infinity-query.directive.mjs","../esm2020/lib/directives/infinity-query-trigger.directive.mjs","../esm2020/lib/query-store/query-store.mjs","../esm2020/lib/query-client/query-client.utils.mjs","../esm2020/lib/query-client/query-client.mjs","../esm2020/lib/query-form/query-form.mjs","../esm2020/lib/query-form/query-form.utils.mjs","../esm2020/lib/utils/deep-freeze.util.mjs","../esm2020/lib/utils/def.util.mjs","../esm2020/ethlete-query.mjs"],"sourcesContent":["export class CustomHeaderAuthProvider {\n get header() {\n return { [this._config.name]: this._config.value };\n }\n constructor(_config) {\n this._config = _config;\n this.queryClient = null;\n }\n cleanUp() {\n // noop\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2F1dGgvY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFJRCxZQUFvQixPQUF1QztRQUF2QyxZQUFPLEdBQVAsT0FBTyxDQUFnQztRQUYzRCxnQkFBVyxHQUF1QixJQUFJLENBQUM7SUFFdUIsQ0FBQztJQUUvRCxPQUFPO1FBQ0wsT0FBTztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IEF1dGhQcm92aWRlciwgQXV0aFByb3ZpZGVyQ3VzdG9tSGVhZGVyQ29uZmlnIH0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIGdldCBoZWFkZXIoKSB7XG4gICAgcmV0dXJuIHsgW3RoaXMuX2NvbmZpZy5uYW1lXTogdGhpcy5fY29uZmlnLnZhbHVlIH07XG4gIH1cblxuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZykge31cblxuICBjbGVhblVwKCk6IHZvaWQge1xuICAgIC8vIG5vb3BcbiAgfVxufVxuIl19","export class BasicAuthProvider {\n get header() {\n return { Authorization: `Basic ${this._basicAuthString}` };\n }\n get _basicAuthString() {\n return btoa(`${this._config.username}:${this._config.password}`);\n }\n constructor(_config) {\n this._config = _config;\n this.queryClient = null;\n }\n cleanUp() {\n // noop\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtYXV0aC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2Jhc2ljLWF1dGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLE1BQU07UUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUlELFlBQW9CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBRnBELGdCQUFXLEdBQXVCLElBQUksQ0FBQztJQUVnQixDQUFDO0lBRXhELE9BQU87UUFDTCxPQUFPO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyLCBBdXRoUHJvdmlkZXJCYXNpY0NvbmZpZyB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBCYXNpY0F1dGhQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIGdldCBoZWFkZXIoKSB7XG4gICAgcmV0dXJuIHsgQXV0aG9yaXphdGlvbjogYEJhc2ljICR7dGhpcy5fYmFzaWNBdXRoU3RyaW5nfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9iYXNpY0F1dGhTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGJ0b2EoYCR7dGhpcy5fY29uZmlnLnVzZXJuYW1lfToke3RoaXMuX2NvbmZpZy5wYXNzd29yZH1gKTtcbiAgfVxuXG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogQXV0aFByb3ZpZGVyQmFzaWNDb25maWcpIHt9XG5cbiAgY2xlYW5VcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG4gIH1cbn1cbiJdfQ==","export const buildErrorMessage = (code, message) => `[@ethlete\\\\query:${code}] ${message}`;\nexport class QueryError extends Error {\n constructor(code, message, data) {\n super(buildErrorMessage(code, message));\n this.name = 'QueryError';\n this.data = data;\n }\n}\nexport const invalidBaseRouteError = (data) => new QueryError('001', 'The baseRoute must not end with a slash', data);\nexport const invalidRouteError = (data) => new QueryError('002', 'The route must start with a slash', data);\nexport const pathParamsMissingInRouteFunctionError = (data) => new QueryError('003', 'The route is a function but pathParams are missing', data);\nexport const queryStateAlreadyHasKeyError = (data) => new QueryError('004', 'The query state already contains the provided key', data);\nexport const queryStateDoesNotContainKeyError = (data) => new QueryError('005', 'The query state does not contain the provided key', data);\nexport const queryStateCannotTransformError = (data) => new QueryError('006', 'The query state cannot be transformed because it is not loading', data);\nexport const invalidBodyError = (data) => new QueryError('007', 'The body is not valid or upsupported', data);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2xvZ2dlci9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO0FBRTNHLE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUduQyxZQUFZLElBQVksRUFBRSxPQUFlLEVBQUUsSUFBYztRQUN2RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUNyRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUseUNBQXlDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVySCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ3JFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxvREFBb0QsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVwRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQzVELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtREFBbUQsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ2hFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxtREFBbUQsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQzlELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxpRUFBaUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGJ1aWxkRXJyb3JNZXNzYWdlID0gKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiBgW0BldGhsZXRlXFxcXHF1ZXJ5OiR7Y29kZX1dICR7bWVzc2FnZX1gO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZGF0YT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKSB7XG4gICAgc3VwZXIoYnVpbGRFcnJvck1lc3NhZ2UoY29kZSwgbWVzc2FnZSkpO1xuICAgIHRoaXMubmFtZSA9ICdRdWVyeUVycm9yJztcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBpbnZhbGlkQmFzZVJvdXRlRXJyb3IgPSAoZGF0YTogdW5rbm93bikgPT5cbiAgbmV3IFF1ZXJ5RXJyb3IoJzAwMScsICdUaGUgYmFzZVJvdXRlIG11c3Qgbm90IGVuZCB3aXRoIGEgc2xhc2gnLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IGludmFsaWRSb3V0ZUVycm9yID0gKGRhdGE6IHVua25vd24pID0+IG5ldyBRdWVyeUVycm9yKCcwMDInLCAnVGhlIHJvdXRlIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoJywgZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yID0gKGRhdGE6IHVua25vd24pID0+XG4gIG5ldyBRdWVyeUVycm9yKCcwMDMnLCAnVGhlIHJvdXRlIGlzIGEgZnVuY3Rpb24gYnV0IHBhdGhQYXJhbXMgYXJlIG1pc3NpbmcnLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5U3RhdGVBbHJlYWR5SGFzS2V5RXJyb3IgPSAoZGF0YTogdW5rbm93bikgPT5cbiAgbmV3IFF1ZXJ5RXJyb3IoJzAwNCcsICdUaGUgcXVlcnkgc3RhdGUgYWxyZWFkeSBjb250YWlucyB0aGUgcHJvdmlkZWQga2V5JywgZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBxdWVyeVN0YXRlRG9lc05vdENvbnRhaW5LZXlFcnJvciA9IChkYXRhOiB1bmtub3duKSA9PlxuICBuZXcgUXVlcnlFcnJvcignMDA1JywgJ1RoZSBxdWVyeSBzdGF0ZSBkb2VzIG5vdCBjb250YWluIHRoZSBwcm92aWRlZCBrZXknLCBkYXRhKTtcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5U3RhdGVDYW5ub3RUcmFuc2Zvcm1FcnJvciA9IChkYXRhOiB1bmtub3duKSA9PlxuICBuZXcgUXVlcnlFcnJvcignMDA2JywgJ1RoZSBxdWVyeSBzdGF0ZSBjYW5ub3QgYmUgdHJhbnNmb3JtZWQgYmVjYXVzZSBpdCBpcyBub3QgbG9hZGluZycsIGRhdGEpO1xuXG5leHBvcnQgY29uc3QgaW52YWxpZEJvZHlFcnJvciA9IChkYXRhOiB1bmtub3duKSA9PiBuZXcgUXVlcnlFcnJvcignMDA3JywgJ1RoZSBib2R5IGlzIG5vdCB2YWxpZCBvciB1cHN1cHBvcnRlZCcsIGRhdGEpO1xuIl19","import { invalidBaseRouteError, invalidBodyError, invalidRouteError, pathParamsMissingInRouteFunctionError, } from '../logger';\nexport const isRequestError = (error) => error instanceof Object && 'code' in error && 'message' in error;\nexport const isAbortRequestError = (error) => isRequestError(error) && error.code === -1;\nexport const buildRoute = (options) => {\n if (options.base.endsWith('/')) {\n throw invalidBaseRouteError(options.base);\n }\n let route = null;\n if (typeof options.route === 'function') {\n if (!options.pathParams) {\n throw pathParamsMissingInRouteFunctionError(options.route({}));\n }\n route = options.route(options.pathParams);\n }\n else {\n route = options.route ?? null;\n }\n if (route && !route.startsWith('/')) {\n throw invalidRouteError(route);\n }\n if (options.queryParams) {\n const queryString = buildQueryString(options.queryParams);\n if (queryString) {\n route = route ? `${route}?${queryString}` : `/?${queryString}`;\n }\n }\n return `${options.base}${route ?? ''}`;\n};\nexport const buildQueryString = (params) => {\n const validParams = filterInvalidParams(params);\n const queryString = Object.keys(validParams)\n .map((key) => Array.isArray(validParams[key])\n ? buildQueryArrayString(key, validParams[key])\n : `${key}=${encodeURIComponent(validParams[key])}`)\n .join('&');\n return queryString || null;\n};\nexport const buildQueryArrayString = (key, array) => {\n const uriBrackets = encodeURIComponent('[]');\n return array\n .slice()\n .map((item) => `${key}${uriBrackets}=${encodeURIComponent(item)}`)\n .join('&');\n};\nexport const isFetchResponse = (response) => typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'statusText' in response &&\n 'json' in response &&\n typeof response['json'] === 'function';\nexport const filterInvalidParams = (params) => {\n const filteredParams = Object.entries(params)\n .map(([key, value]) => {\n if (!Array.isArray(value)) {\n return [key, value];\n }\n return [key, value.filter((v) => isParamValid(v))];\n })\n .filter(([, value]) => isParamValid(value))\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n return filteredParams;\n};\nexport const isParamValid = (primitive) => {\n if (primitive === undefined || primitive === null || primitive === '') {\n return false;\n }\n if (typeof primitive === 'string' && primitive.trim() === '') {\n return false;\n }\n if (typeof primitive === 'number' && isNaN(primitive)) {\n return false;\n }\n return true;\n};\nexport const extractExpiresInSeconds = (headers) => {\n const cacheControl = headers.get('cache-control');\n const age = headers.get('age');\n const expires = headers.get('expires');\n // In seconds\n let expiresIn = null;\n let maxAge = null;\n if (cacheControl?.includes('no-cache')) {\n return null;\n }\n if (cacheControl?.includes('max-age')) {\n maxAge = parseInt(cacheControl.split('max-age=')[1]);\n }\n else if (cacheControl?.includes('s-maxage')) {\n maxAge = parseInt(cacheControl.split('s-maxage=')[1]);\n }\n if (maxAge && age) {\n const ageSeconds = parseInt(age);\n expiresIn = maxAge - ageSeconds;\n }\n else if (expires) {\n // Used by some apis to tell the response will never expire\n // In this case we let the response expire after 1 hour\n if (expires === '-1') {\n expiresIn = 3600;\n }\n else {\n const expiresDate = new Date(expires);\n // check if the date is valid\n if (expiresDate.toString() !== 'Invalid Date') {\n expiresIn = Math.floor((expiresDate.getTime() - Date.now()) / 1000);\n }\n }\n }\n return expiresIn;\n};\nexport const buildTimestampFromSeconds = (seconds) => {\n if (seconds === null) {\n return null;\n }\n return new Date(Date.now() + seconds * 1000).getTime();\n};\nexport const buildRequestError = async (error, route, requestInit) => {\n if (error instanceof DOMException && error.code === error.ABORT_ERR) {\n const err = {\n code: -1,\n message: 'Request aborted',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (error instanceof SyntaxError) {\n const err = {\n code: -3,\n message: 'Syntax error',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (error instanceof Error) {\n const err = {\n code: -2,\n message: `${error.name}: ${error.message}`,\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n if (isFetchResponse(error)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let detail = null;\n try {\n detail = await error.json();\n }\n catch {\n // noop\n }\n if (!detail) {\n try {\n detail = await error.text();\n }\n catch {\n // noop\n }\n }\n const err = {\n code: error.status,\n message: error.statusText,\n detail,\n raw: error,\n route,\n requestInit,\n };\n return err;\n }\n const err = {\n code: 0,\n message: 'Unknown error',\n detail: null,\n raw: error,\n route,\n requestInit,\n };\n return err;\n};\nexport const buildBody = (body) => {\n if (body === undefined || body === null) {\n return null;\n }\n if (typeof body === 'string') {\n return body;\n }\n if (typeof body === 'object') {\n return JSON.stringify(body);\n }\n if (body instanceof FormData) {\n return body;\n }\n throw invalidBodyError(body);\n};\nexport const transformMethod = (method) => {\n if (method === 'GQL_QUERY' || method === 'GQL_MUTATE') {\n return 'POST';\n }\n return method;\n};\nexport const guessContentType = (body) => {\n if (body === null || body === undefined) {\n return null;\n }\n if (typeof body === 'string') {\n return 'text/plain';\n }\n if (body instanceof FormData) {\n return 'multipart/form-data';\n }\n if (typeof body === 'object') {\n return 'application/json';\n }\n return null;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixxQ0FBcUMsR0FDdEMsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUF5QixFQUFFLENBQ3RFLEtBQUssWUFBWSxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBYyxFQUF5QixFQUFFLENBQzNFLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BSzFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN2QixNQUFNLHFDQUFxQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUVELEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztTQUFNO1FBQ0wsS0FBSyxHQUFH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SUFBSSxZQUFZLFFBQVEsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNoRCxJQUFJLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxLQUFLLFlBQVksRUFBRTtRQUNyRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtJQUNoRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFFRCxJQUFJLElBQUksWUFBWSxRQUFRLEVBQUU7UUFDNUIsT0FBTyxxQkFBcUIsQ0FBQztLQUM5QjtJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLE9BQU8sa0JBQWtCLENBQUM7S0FDM0I7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGludmFsaWRCYXNlUm91dGVFcnJvcixcbiAgaW52YWxpZEJvZHlFcnJvcixcbiAgaW52YWxpZFJvdXRlRXJyb3IsXG4gIHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3IsXG59IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBNZXRob2QsIFBhcmFtQXJyYXksIFBhcmFtcywgUXVlcnlQYXJhbXMsIFJlcXVlc3RFcnJvciwgVW5maWx0ZXJlZFBhcmFtUHJpbWl0aXZlIH0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzUmVxdWVzdEVycm9yID0gKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yID0+XG4gIGVycm9yIGluc3RhbmNlb2YgT2JqZWN0ICYmICdjb2RlJyBpbiBlcnJvciAmJiAnbWVzc2FnZScgaW4gZXJyb3I7XG5cbmV4cG9ydCBjb25zdCBpc0Fib3J0UmVxdWVzdEVycm9yID0gKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yID0+XG4gIGlzUmVxdWVzdEVycm9yKGVycm9yKSAmJiBlcnJvci5jb2RlID09PSAtMTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUm91dGUgPSAob3B0aW9uczoge1xuICBiYXNlOiBzdHJpbmc7XG4gIHJvdXRlOiAoKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcpIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xufSkgPT4ge1xuICBpZiAob3B0aW9ucy5iYXNlLmVuZHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkQmFzZVJvdXRlRXJyb3Iob3B0aW9ucy5iYXNlKTtcbiAgfVxuXG4gIGxldCByb3V0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhdGhQYXJhbXMpIHtcbiAgICAgIHRocm93IHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3Iob3B0aW9ucy5yb3V0ZSh7fSkpO1xuICAgIH1cblxuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZShvcHRpb25zLnBhdGhQYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZSA/PyBudWxsO1xuICB9XG5cbiAgaWYgKHJvdXRlICYmICFyb3V0ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkUm91dGVFcnJvcihyb3V0ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYnVpbGRRdWVyeVN0cmluZyhvcHRpb25zLnF1ZXJ5UGFyYW1zKTtcblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgcm91dGUgPSByb3V0ZSA/IGAke3JvdXRlfT8ke3F1ZXJ5U3RyaW5nfWAgOiBgLz8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke29wdGlvbnMuYmFzZX0ke3JvdXRlID8/ICcnfWA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRRdWVyeVN0cmluZyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiB7XG4gIGNvbnN0IHZhbGlkUGFyYW1zID0gZmlsdGVySW52YWxpZFBhcmFtcyhwYXJhbXMpO1xuXG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXModmFsaWRQYXJhbXMpXG4gICAgLm1hcCgoa2V5KSA9PlxuICAgICAgQXJyYXkuaXNBcnJheSh2YWxpZFBhcmFtc1trZXldKVxuICAgICAgICA/IGJ1aWxkUXVlcnlBcnJheVN0cmluZyhrZXksIHZhbGlkUGFyYW1zW2tleV0gYXMgUGFyYW1BcnJheSlcbiAgICAgICAgOiBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbGlkUGFyYW1zW2tleV0gYXMgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbil9YCxcbiAgICApXG4gICAgLmpvaW4oJyYnKTtcblxuICByZXR1cm4gcXVlcnlTdHJpbmcgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5QXJyYXlTdHJpbmcgPSAoa2V5OiBzdHJpbmcsIGFycmF5OiBQYXJhbUFycmF5KSA9PiB7XG4gIGNvbnN0IHVyaUJyYWNrZXRzID0gZW5jb2RlVVJJQ29tcG9uZW50KCdbXScpO1xuXG4gIHJldHVybiBhcnJheVxuICAgIC5zbGljZSgpXG4gICAgLm1hcCgoaXRlbSkgPT4gYCR7a2V5fSR7dXJpQnJhY2tldHN9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0gYXMgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbil9YClcbiAgICAuam9pbignJicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRmV0Y2hSZXNwb25zZSA9IChyZXNwb25zZTogdW5rbm93bik6IHJlc3BvbnNlIGlzIFJlc3BvbnNlID0+XG4gIHR5cGVvZiByZXNwb25zZSA9PT0gJ29iamVjdCcgJiZcbiAgcmVzcG9uc2UgIT09IG51bGwgJiZcbiAgJ3N0YXR1cycgaW4gcmVzcG9uc2UgJiZcbiAgJ3N0YXR1c1RleHQnIGluIHJlc3BvbnNlICYmXG4gICdqc29uJyBpbiByZXNwb25zZSAmJlxuICB0eXBlb2YgKHJlc3BvbnNlIGFzIFJlc3BvbnNlKVsnanNvbiddID09PSAnZnVuY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgZmlsdGVySW52YWxpZFBhcmFtcyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGZpbHRlcmVkUGFyYW1zOiBQYXJhbXMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBba2V5LCB2YWx1ZS5maWx0ZXIoKHYpID0+IGlzUGFyYW1WYWxpZCh2KSldO1xuICAgIH0pXG4gICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiBpc1BhcmFtVmFsaWQodmFsdWUgYXMgVW5maWx0ZXJlZFBhcmFtUHJpbWl0aXZlKSlcbiAgICAucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4uYWNjLCBba2V5IGFzIHN0cmluZ106IHZhbHVlIH0pLCB7fSk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGFyYW1WYWxpZCA9IChwcmltaXRpdmU6IFVuZmlsdGVyZWRQYXJhbVByaW1pdGl2ZSkgPT4ge1xuICBpZiAocHJpbWl0aXZlID09PSB1bmRlZmluZWQgfHwgcHJpbWl0aXZlID09PSBudWxsIHx8IHByaW1pdGl2ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1pdGl2ZSA9PT0gJ3N0cmluZycgJiYgcHJpbWl0aXZlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1pdGl2ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4ocHJpbWl0aXZlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzID0gKGhlYWRlcnM6IEhlYWRlcnMpID0+IHtcbiAgY29uc3QgY2FjaGVDb250cm9sID0gaGVhZGVycy5nZXQoJ2NhY2hlLWNvbnRyb2wnKTtcbiAgY29uc3QgYWdlID0gaGVhZGVycy5nZXQoJ2FnZScpO1xuICBjb25zdCBleHBpcmVzID0gaGVhZGVycy5nZXQoJ2V4cGlyZXMnKTtcblxuICAvLyBJbiBzZWNvbmRzXG4gIGxldCBleHBpcmVzSW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4QWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygnbm8tY2FjaGUnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ21heC1hZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgnbWF4LWFnZT0nKVsxXSk7XG4gIH0gZWxzZSBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygncy1tYXhhZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV0pO1xuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAoZXhwaXJlcykge1xuICAgIC8vIFVzZWQgYnkgc29tZSBhcGlzIHRvIHRlbGwgdGhlIHJlc3BvbnNlIHdpbGwgbmV2ZXIgZXhwaXJlXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGxldCB0aGUgcmVzcG9uc2UgZXhwaXJlIGFmdGVyIDEgaG91clxuICAgIGlmIChleHBpcmVzID09PSAnLTEnKSB7XG4gICAgICBleHBpcmVzSW4gPSAzNjAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleHBpcmVzRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xuXG4gICAgICAvLyBjaGVjayBpZiB0aGUgZGF0ZSBpcyB2YWxpZFxuICAgICAgaWYgKGV4cGlyZXNEYXRlLnRvU3RyaW5nKCkgIT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIGV4cGlyZXNJbiA9IE1hdGguZmxvb3IoKGV4cGlyZXNEYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cGlyZXNJbjtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzID0gKHNlY29uZHM6IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKHNlY29uZHMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDApLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFJlcXVlc3RFcnJvciA9IGFzeW5jIDxFcnJvclJlc3BvbnNlID0gdW5rbm93bj4oXG4gIGVycm9yOiB1bmtub3duLFxuICByb3V0ZTogc3RyaW5nLFxuICByZXF1ZXN0SW5pdD86IFJlcXVlc3RJbml0LFxuKSA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnJvci5jb2RlID09PSBlcnJvci5BQk9SVF9FUlIpIHtcbiAgICBjb25zdCBlcnI6IFJlcXVlc3RFcnJvcjxudWxsPiA9IHtcbiAgICAgIGNvZGU6IC0xLFxuICAgICAgbWVzc2FnZTogJ1JlcXVlc3QgYWJvcnRlZCcsXG4gICAgICBkZXRhaWw6IG51bGwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgY29uc3QgZXJyOiBSZXF1ZXN0RXJyb3I8bnVsbD4gPSB7XG4gICAgICBjb2RlOiAtMyxcbiAgICAgIG1lc3NhZ2U6ICdTeW50YXggZXJyb3InLFxuICAgICAgZGV0YWlsOiBudWxsLFxuICAgICAgcmF3OiBlcnJvcixcbiAgICAgIHJvdXRlLFxuICAgICAgcmVxdWVzdEluaXQsXG4gICAgfTtcblxuICAgIHJldHVybiBlcnI7XG4gIH1cblxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGNvbnN0IGVycjogUmVxdWVzdEVycm9yPG51bGw+ID0ge1xuICAgICAgY29kZTogLTIsXG4gICAgICBtZXNzYWdlOiBgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICBkZXRhaWw6IG51bGwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGlmIChpc0ZldGNoUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBsZXQgZGV0YWlsOiBhbnkgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRldGFpbCA9IGF3YWl0IGVycm9yLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICBpZiAoIWRldGFpbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGV0YWlsID0gYXdhaXQgZXJyb3IudGV4dCgpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlcnI6IFJlcXVlc3RFcnJvcjxFcnJvclJlc3BvbnNlPiA9IHtcbiAgICAgIGNvZGU6IGVycm9yLnN0YXR1cyxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBkZXRhaWwsXG4gICAgICByYXc6IGVycm9yLFxuICAgICAgcm91dGUsXG4gICAgICByZXF1ZXN0SW5pdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVycjtcbiAgfVxuXG4gIGNvbnN0IGVycjogUmVxdWVzdEVycm9yPG51bGw+ID0ge1xuICAgIGNvZGU6IDAsXG4gICAgbWVzc2FnZTogJ1Vua25vd24gZXJyb3InLFxuICAgIGRldGFpbDogbnVsbCxcbiAgICByYXc6IGVycm9yLFxuICAgIHJvdXRlLFxuICAgIHJlcXVlc3RJbml0LFxuICB9O1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRCb2R5ID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgaWYgKGJvZHkgPT09IHVuZGVmaW5lZCB8fCBib2R5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICB9XG5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgdGhyb3cgaW52YWxpZEJvZHlFcnJvcihib2R5KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1NZXRob2QgPSAobWV0aG9kOiBNZXRob2QpID0+IHtcbiAgaWYgKG1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgbWV0aG9kID09PSAnR1FMX01VVEFURScpIHtcbiAgICByZXR1cm4gJ1BPU1QnO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZDtcbn07XG5cbmV4cG9ydCBjb25zdCBndWVzc0NvbnRlbnRUeXBlID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3BsYWluJztcbiAgfVxuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vanNvbic7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4iXX0=","import { buildRequestError, buildTimestampFromSeconds, extractExpiresInSeconds } from './request.util';\nexport const request = async (options) => {\n try {\n const response = await fetch(options.route, options.init);\n if (!response.ok) {\n throw response;\n }\n const isJsonResponse = response.headers.get('Content-Type')?.includes('application/json');\n const isTextResponse = response.headers.get('Content-Type')?.includes('text/plain');\n const data = (isJsonResponse ? await response.json() : isTextResponse ? await response.text() : null);\n const expiresInSeconds = options.cacheAdapter\n ? options.cacheAdapter(response.headers)\n : extractExpiresInSeconds(response.headers);\n const expiresInTimestamp = buildTimestampFromSeconds(expiresInSeconds);\n return { data, expiresInTimestamp };\n }\n catch (error) {\n throw await buildRequestError(error, options.route, options.init);\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBc0IsT0FJakQsRUFBRSxFQUFFO0lBQ0gsSUFBSTtRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sUUFBUSxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBGLE1BQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFhLENBQUM7UUFFbEgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsWUFBWTtZQUMzQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsTUFBTSxNQUFNLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuRTtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlQWRhcHRlckZuIH0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcbmltcG9ydCB7IGJ1aWxkUmVxdWVzdEVycm9yLCBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzLCBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyB9IGZyb20gJy4vcmVxdWVzdC51dGlsJztcblxuZXhwb3J0IGNvbnN0IHJlcXVlc3QgPSBhc3luYyA8UmVzcG9uc2UgPSB1bmtub3duPihvcHRpb25zOiB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIGluaXQ/OiBSZXF1ZXN0SW5pdDtcbiAgY2FjaGVBZGFwdGVyPzogQ2FjaGVBZGFwdGVyRm47XG59KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChvcHRpb25zLnJvdXRlLCBvcHRpb25zLmluaXQpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaXNKc29uUmVzcG9uc2UgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJyk/LmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgY29uc3QgaXNUZXh0UmVzcG9uc2UgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJyk/LmluY2x1ZGVzKCd0ZXh0L3BsYWluJyk7XG5cbiAgICBjb25zdCBkYXRhID0gKGlzSnNvblJlc3BvbnNlID8gYXdhaXQgcmVzcG9uc2UuanNvbigpIDogaXNUZXh0UmVzcG9uc2UgPyBhd2FpdCByZXNwb25zZS50ZXh0KCkgOiBudWxsKSBhcyBSZXNwb25zZTtcblxuICAgIGNvbnN0IGV4cGlyZXNJblNlY29uZHMgPSBvcHRpb25zLmNhY2hlQWRhcHRlclxuICAgICAgPyBvcHRpb25zLmNhY2hlQWRhcHRlcihyZXNwb25zZS5oZWFkZXJzKVxuICAgICAgOiBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyhyZXNwb25zZS5oZWFkZXJzKTtcblxuICAgIGNvbnN0IGV4cGlyZXNJblRpbWVzdGFtcCA9IGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMoZXhwaXJlc0luU2Vjb25kcyk7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcmVzSW5UaW1lc3RhbXAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBhd2FpdCBidWlsZFJlcXVlc3RFcnJvcihlcnJvciwgb3B0aW9ucy5yb3V0ZSwgb3B0aW9ucy5pbml0KTtcbiAgfVxufTtcbiJdfQ==","import { BasicAuthProvider } from './basic-auth-provider';\nimport { BearerAuthProvider } from './bearer-auth-provider';\nimport { CustomHeaderAuthProvider } from './custom-header-auth-provider';\nexport const isBasicAuthProvider = (authProvider) => authProvider instanceof BasicAuthProvider;\nexport const isBearerAuthProvider = (authProvider) => authProvider instanceof BearerAuthProvider;\nexport const isCustomHeaderAuthProvider = (authProvider) => authProvider instanceof CustomHeaderAuthProvider;\nexport const decryptBearer = (token) => {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''));\n return JSON.parse(jsonPayload);\n }\n catch (error) {\n console.error(`Invalid bearer token: ${token}`, error);\n return null;\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxZQUEwQixFQUFxQyxFQUFFLENBQ25HLFlBQVksWUFBWSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFlBQTBCLEVBQXNDLEVBQUUsQ0FDckcsWUFBWSxZQUFZLGtCQUFrQixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsWUFBMEIsRUFBNEMsRUFBRSxDQUNqSCxZQUFZLFlBQVksd0JBQXdCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQW1DLEtBQWEsRUFBRSxFQUFFO0lBQy9FLElBQUk7UUFDRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDVCxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ1osQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQVcsQ0FBQztLQUMxQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkQsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5pbXBvcnQgeyBCYXNpY0F1dGhQcm92aWRlciB9IGZyb20gJy4vYmFzaWMtYXV0aC1wcm92aWRlcic7XG5pbXBvcnQgeyBCZWFyZXJBdXRoUHJvdmlkZXIgfSBmcm9tICcuL2JlYXJlci1hdXRoLXByb3ZpZGVyJztcbmltcG9ydCB7IEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciB9IGZyb20gJy4vY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyJztcblxuZXhwb3J0IGNvbnN0IGlzQmFzaWNBdXRoUHJvdmlkZXIgPSAoYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBhdXRoUHJvdmlkZXIgaXMgQmFzaWNBdXRoUHJvdmlkZXIgPT5cbiAgYXV0aFByb3ZpZGVyIGluc3RhbmNlb2YgQmFzaWNBdXRoUHJvdmlkZXI7XG5cbmV4cG9ydCBjb25zdCBpc0JlYXJlckF1dGhQcm92aWRlciA9IChhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcik6IGF1dGhQcm92aWRlciBpcyBCZWFyZXJBdXRoUHJvdmlkZXIgPT5cbiAgYXV0aFByb3ZpZGVyIGluc3RhbmNlb2YgQmVhcmVyQXV0aFByb3ZpZGVyO1xuXG5leHBvcnQgY29uc3QgaXNDdXN0b21IZWFkZXJBdXRoUHJvdmlkZXIgPSAoYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBhdXRoUHJvdmlkZXIgaXMgQ3VzdG9tSGVhZGVyQXV0aFByb3ZpZGVyID0+XG4gIGF1dGhQcm92aWRlciBpbnN0YW5jZW9mIEN1c3RvbUhlYWRlckF1dGhQcm92aWRlcjtcblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRCZWFyZXIgPSA8UmVzdWx0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHRva2VuOiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgIGNvbnN0IGJhc2U2NCA9IGJhc2U2NFVybC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICAgIGNvbnN0IGpzb25QYXlsb2FkID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgICAgYXRvYihiYXNlNjQpXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcCgoYykgPT4gJyUnICsgKCcwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpXG4gICAgICAgIC5qb2luKCcnKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpIGFzIFJlc3VsdDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGJlYXJlciB0b2tlbjogJHt0b2tlbn1gLCBlcnJvcik7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdfQ==","import { Subject, timer } from 'rxjs';\nimport { buildBody, buildRequestError, buildRoute, request } from '../request';\nimport { decryptBearer } from './auth-provider.utils';\nexport class BearerAuthProvider {\n get header() {\n return { Authorization: `Bearer ${this._token}` };\n }\n constructor(_config) {\n this._config = _config;\n this._refreshToken = null;\n this._refreshTimerSubscription = null;\n this._failureCount = 0;\n this.queryClient = null;\n this.onRefreshInitiation$ = new Subject();\n this.onRefreshSuccess$ = new Subject();\n this.onRefreshFailure$ = new Subject();\n this._token = _config.token;\n this._refreshToken = _config.refreshConfig?.token ?? null;\n if (this._config.refreshConfig) {\n this._setupRefresh(this._config.refreshConfig);\n }\n }\n cleanUp() {\n this._refreshTimerSubscription?.unsubscribe();\n this._refreshTimerSubscription = null;\n }\n _setupRefresh(config) {\n this.cleanUp();\n const bearer = decryptBearer(this._token);\n if (!bearer) {\n return;\n }\n const expiresInPropertyName = config.expiresInPropertyName || 'exp';\n const expiresIn = bearer[expiresInPropertyName];\n const fiveMinutes = 5 * 60 * 1000;\n const refreshBuffer = config.refreshBuffer ?? fiveMinutes;\n if (expiresIn === undefined) {\n throw new Error(`Bearer token does not contain an '${expiresInPropertyName}' property`);\n }\n const remainingTime = new Date(expiresIn * 1000).getTime() - refreshBuffer - new Date().getTime();\n const strategy = config.strategy ?? \"beforeExpiration\" /* AuthBearerRefreshStrategy.BeforeExpiration */;\n switch (strategy) {\n case \"beforeExpiration\" /* AuthBearerRefreshStrategy.BeforeExpiration */:\n this._refreshTimerSubscription = timer(remainingTime).subscribe(() => this._refresh(config));\n break;\n }\n }\n async _refresh(config) {\n if (!this._refreshToken) {\n throw new Error('No refresh token found');\n }\n if (!this.queryClient) {\n throw new Error('Query client instance is null');\n }\n const { method, route, requestAdapter, responseAdapter, paramLocation } = config;\n const data = requestAdapter?.(this._refreshToken) ?? { refreshToken: this._refreshToken };\n const fullRoute = buildRoute({\n base: this.queryClient.config.baseRoute,\n route,\n queryParams: paramLocation === 'query' ? data : undefined,\n });\n const requestInit = { body: paramLocation === 'body' ? buildBody(data) : undefined, method };\n this.onRefreshInitiation$.next();\n try {\n const result = await request({\n route: fullRoute,\n init: requestInit,\n });\n const tokens = responseAdapter ? responseAdapter(result.data) : result.data;\n if (!tokens.token) {\n throw new Error('Token not found in response');\n }\n if (!tokens.refreshToken) {\n throw new Error('Refresh token not found in response');\n }\n this._token = tokens.token;\n this._refreshToken = tokens.refreshToken;\n this.onRefreshSuccess$.next(tokens);\n this._setupRefresh(config);\n this._failureCount = 0;\n }\n catch (error) {\n if (error instanceof Error) {\n this.onRefreshFailure$.next(await buildRequestError(error, fullRoute, requestInit));\n }\n else {\n this.onRefreshFailure$.next(error);\n }\n this._failureCount++;\n if (this._failureCount <= (config.maxRefreshAttempts ?? 3)) {\n this._setupRefresh(config);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhcmVyLWF1dGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9iZWFyZXItYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQVE3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixJQUFJLE1BQU07UUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQVFELFlBQW9CLE9BQWlDO1FBQWpDLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBZDdDLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUNwQyw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBQ3RELGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBTTFCLGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUV2Qyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzNDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUEyQjtRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPO1NBQ1I7UUFFRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxLQUFLLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUF1QixDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksV0FBVyxDQUFDO1FBRTFELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxxQkFBcUIsWUFBWSxDQUFDLENBQUM7U0FDekY7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbEcsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsdUVBQThDLENBQUM7UUFFL0UsUUFBUSxRQUFRLEVBQUU7WUFDaEI7Z0JBQ0UsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUEyQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDM0M7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUVqRixNQUFNLElBQUksR0FBRyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFGLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUztZQUN2QyxLQUFLO1lBQ0wsV0FBVyxFQUFFLGFBQWEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMxRCxDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBZ0IsRUFBRSxJQUFJLEVBQUUsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFMUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUk7WUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQztnQkFDM0IsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQztZQUVILE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsTUFBTSxDQUFDLElBQXNCLENBQUM7WUFFL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUNoRDtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7YUFDeEQ7WUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRXpDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUzQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztTQUN4QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3JGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBcUIsQ0FBQyxDQUFDO2FBQ3BEO1lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXJCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgYnVpbGRCb2R5LCBidWlsZFJlcXVlc3RFcnJvciwgYnVpbGRSb3V0ZSwgcmVxdWVzdCwgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LFxuICBBdXRoUHJvdmlkZXIsXG4gIEF1dGhQcm92aWRlckJlYXJlckNvbmZpZyxcbiAgQmVhcmVyUmVmcmVzaENvbmZpZyxcbiAgVG9rZW5SZXNwb25zZSxcbn0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnR5cGVzJztcbmltcG9ydCB7IGRlY3J5cHRCZWFyZXIgfSBmcm9tICcuL2F1dGgtcHJvdmlkZXIudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQmVhcmVyQXV0aFByb3ZpZGVyIGltcGxlbWVudHMgQXV0aFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcblxuICBnZXQgaGVhZGVyKCkge1xuICAgIHJldHVybiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLl90b2tlbn1gIH07XG4gIH1cblxuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICBvblJlZnJlc2hJbml0aWF0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIG9uUmVmcmVzaFN1Y2Nlc3MkID0gbmV3IFN1YmplY3Q8VG9rZW5SZXNwb25zZT4oKTtcbiAgb25SZWZyZXNoRmFpbHVyZSQgPSBuZXcgU3ViamVjdDxSZXF1ZXN0RXJyb3I+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlnOiBBdXRoUHJvdmlkZXJCZWFyZXJDb25maWcpIHtcbiAgICB0aGlzLl90b2tlbiA9IF9jb25maWcudG9rZW47XG4gICAgdGhpcy5fcmVmcmVzaFRva2VuID0gX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy50b2tlbiA/PyBudWxsO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnKSB7XG4gICAgICB0aGlzLl9zZXR1cFJlZnJlc2godGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFuVXAoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3JlZnJlc2hUaW1lclN1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFJlZnJlc2goY29uZmlnOiBCZWFyZXJSZWZyZXNoQ29uZmlnKSB7XG4gICAgdGhpcy5jbGVhblVwKCk7XG5cbiAgICBjb25zdCBiZWFyZXIgPSBkZWNyeXB0QmVhcmVyKHRoaXMuX3Rva2VuKTtcblxuICAgIGlmICghYmVhcmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwaXJlc0luUHJvcGVydHlOYW1lID0gY29uZmlnLmV4cGlyZXNJblByb3BlcnR5TmFtZSB8fCAnZXhwJztcbiAgICBjb25zdCBleHBpcmVzSW4gPSBiZWFyZXJbZXhwaXJlc0luUHJvcGVydHlOYW1lXSBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZml2ZU1pbnV0ZXMgPSA1ICogNjAgKiAxMDAwO1xuICAgIGNvbnN0IHJlZnJlc2hCdWZmZXIgPSBjb25maWcucmVmcmVzaEJ1ZmZlciA/PyBmaXZlTWludXRlcztcblxuICAgIGlmIChleHBpcmVzSW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCZWFyZXIgdG9rZW4gZG9lcyBub3QgY29udGFpbiBhbiAnJHtleHBpcmVzSW5Qcm9wZXJ0eU5hbWV9JyBwcm9wZXJ0eWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBuZXcgRGF0ZShleHBpcmVzSW4gKiAxMDAwKS5nZXRUaW1lKCkgLSByZWZyZXNoQnVmZmVyIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICBjb25zdCBzdHJhdGVneSA9IGNvbmZpZy5zdHJhdGVneSA/PyBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb247XG5cbiAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEF1dGhCZWFyZXJSZWZyZXNoU3RyYXRlZ3kuQmVmb3JlRXhwaXJhdGlvbjpcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIocmVtYWluaW5nVGltZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2goY29uZmlnKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlZnJlc2goY29uZmlnOiBCZWFyZXJSZWZyZXNoQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLl9yZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVmcmVzaCB0b2tlbiBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5xdWVyeUNsaWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdRdWVyeSBjbGllbnQgaW5zdGFuY2UgaXMgbnVsbCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWV0aG9kLCByb3V0ZSwgcmVxdWVzdEFkYXB0ZXIsIHJlc3BvbnNlQWRhcHRlciwgcGFyYW1Mb2NhdGlvbiB9ID0gY29uZmlnO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcXVlc3RBZGFwdGVyPy4odGhpcy5fcmVmcmVzaFRva2VuKSA/PyB7IHJlZnJlc2hUb2tlbjogdGhpcy5fcmVmcmVzaFRva2VuIH07XG5cbiAgICBjb25zdCBmdWxsUm91dGUgPSBidWlsZFJvdXRlKHtcbiAgICAgIGJhc2U6IHRoaXMucXVlcnlDbGllbnQuY29uZmlnLmJhc2VSb3V0ZSxcbiAgICAgIHJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtTG9jYXRpb24gPT09ICdxdWVyeScgPyBkYXRhIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdEluaXQ6IFJlcXVlc3RJbml0ID0geyBib2R5OiBwYXJhbUxvY2F0aW9uID09PSAnYm9keScgPyBidWlsZEJvZHkoZGF0YSkgOiB1bmRlZmluZWQsIG1ldGhvZCB9O1xuXG4gICAgdGhpcy5vblJlZnJlc2hJbml0aWF0aW9uJC5uZXh0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdCh7XG4gICAgICAgIHJvdXRlOiBmdWxsUm91dGUsXG4gICAgICAgIGluaXQ6IHJlcXVlc3RJbml0LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRva2VucyA9IHJlc3BvbnNlQWRhcHRlciA/IHJlc3BvbnNlQWRhcHRlcihyZXN1bHQuZGF0YSkgOiAocmVzdWx0LmRhdGEgYXMgVG9rZW5SZXNwb25zZSk7XG5cbiAgICAgIGlmICghdG9rZW5zLnRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gbm90IGZvdW5kIGluIHJlc3BvbnNlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdG9rZW5zLnJlZnJlc2hUb2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnJlc2ggdG9rZW4gbm90IGZvdW5kIGluIHJlc3BvbnNlJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3Rva2VuID0gdG9rZW5zLnRva2VuO1xuICAgICAgdGhpcy5fcmVmcmVzaFRva2VuID0gdG9rZW5zLnJlZnJlc2hUb2tlbjtcblxuICAgICAgdGhpcy5vblJlZnJlc2hTdWNjZXNzJC5uZXh0KHRva2Vucyk7XG5cbiAgICAgIHRoaXMuX3NldHVwUmVmcmVzaChjb25maWcpO1xuXG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aGlzLm9uUmVmcmVzaEZhaWx1cmUkLm5leHQoYXdhaXQgYnVpbGRSZXF1ZXN0RXJyb3IoZXJyb3IsIGZ1bGxSb3V0ZSwgcmVxdWVzdEluaXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25SZWZyZXNoRmFpbHVyZSQubmV4dChlcnJvciBhcyBSZXF1ZXN0RXJyb3IpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgaWYgKHRoaXMuX2ZhaWx1cmVDb3VudCA8PSAoY29uZmlnLm1heFJlZnJlc2hBdHRlbXB0cyA/PyAzKSkge1xuICAgICAgICB0aGlzLl9zZXR1cFJlZnJlc2goY29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","const getOpName = /(query|mutation) ?([\\w\\d-_]+)? ?\\(.*?\\)? \\{/;\nexport const transformGql = (str) => {\n str = Array.isArray(str) ? str.join('') : str;\n const name = getOpName.exec(str);\n return function (variables) {\n const data = { query: str };\n if (variables)\n data['variables'] = JSON.stringify(variables);\n if (name && name.length) {\n const operationName = name[2];\n if (operationName)\n data['operationName'] = name[2];\n }\n return JSON.stringify(data);\n };\n};\nexport const gql = (strings, ...values) => {\n const str = strings.reduce((acc, cur, i) => {\n return acc + cur + (values[i] || '');\n }, '');\n return str;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2dxbC9ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxTQUFTLEdBQUcsNkNBQTZDLENBQUM7QUFFaEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDMUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sVUFBVSxTQUFxRDtRQUNwRSxNQUFNLElBQUksR0FBNEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDckQsSUFBSSxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxhQUFhO2dCQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBNkIsRUFBRSxHQUFHLE1BQWdCLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6QyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRPcE5hbWUgPSAvKHF1ZXJ5fG11dGF0aW9uKSA/KFtcXHdcXGQtX10rKT8gP1xcKC4qP1xcKT8gXFx7LztcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUdxbCA9IChzdHI6IHN0cmluZykgPT4ge1xuICBzdHIgPSBBcnJheS5pc0FycmF5KHN0cikgPyBzdHIuam9pbignJykgOiBzdHI7XG4gIGNvbnN0IG5hbWUgPSBnZXRPcE5hbWUuZXhlYyhzdHIpO1xuICByZXR1cm4gZnVuY3Rpb24gKHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IHF1ZXJ5OiBzdHIgfTtcbiAgICBpZiAodmFyaWFibGVzKSBkYXRhWyd2YXJpYWJsZXMnXSA9IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyk7XG4gICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBuYW1lWzJdO1xuICAgICAgaWYgKG9wZXJhdGlvbk5hbWUpIGRhdGFbJ29wZXJhdGlvbk5hbWUnXSA9IG5hbWVbMl07XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBncWwgPSAoc3RyaW5nczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgY29uc3Qgc3RyID0gc3RyaW5ncy5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XG4gICAgcmV0dXJuIGFjYyArIGN1ciArICh2YWx1ZXNbaV0gfHwgJycpO1xuICB9LCAnJyk7XG4gIHJldHVybiBzdHI7XG59O1xuIl19","import { filter, of, switchMap, takeWhile } from 'rxjs';\nexport function filterSuccess() {\n return function (source) {\n return source.pipe(filter((value) => isQueryStateSuccess(value)));\n };\n}\nexport function filterFailure() {\n return function (source) {\n return source.pipe(filter((value) => isQueryStateFailure(value)));\n };\n}\nexport function filterQueryStates(allowedStates) {\n return function (source) {\n return source.pipe(filter((value) => value && allowedStates.includes(value.type)));\n };\n}\nexport function takeUntilResponse() {\n return function (source) {\n return source.pipe(takeWhile((value) => isQueryStateLoading(value), true));\n };\n}\nexport function filterNull() {\n return function (source) {\n return source.pipe(filter((value) => value !== null));\n };\n}\nexport function switchQueryState() {\n return function (source) {\n return source.pipe(switchMap((value) => value?.state$ ?? of(null)));\n };\n}\nexport const isQueryStateLoading = (state) => state?.type === \"LOADING\" /* QueryStateType.Loading */;\nexport const isQueryStateSuccess = (state) => state?.type === \"SUCCESS\" /* QueryStateType.Success */;\nexport const isQueryStateFailure = (state) => state?.type === \"FAILURE\" /* QueryStateType.Failure */;\nexport const isQueryStateCancelled = (state) => state?.type === \"CANCELLED\" /* QueryStateType.Cancelled */;\nexport const isQueryStatePrepared = (state) => state?.type === \"PREPARED\" /* QueryStateType.Prepared */;\nexport const mergeHeaders = (...headers) => {\n return headers.reduce((acc, headers) => {\n if (!headers) {\n return acc;\n }\n return {\n ...acc,\n ...headers,\n };\n }, {});\n};\nexport const isGqlQueryConfig = (config) => {\n if (!config || typeof config !== 'object' || Array.isArray(config)) {\n return false;\n }\n if (!('query' in config)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXVCcEUsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxVQUlMLE1BQXFCO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQStDLENBQUM7SUFDbEgsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sVUFBdUMsTUFBcUI7UUFDakUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBd0IsQ0FBQztJQUMzRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLGFBQStCO0lBQy9ELE9BQU8sVUFBdUMsTUFBcUI7UUFDakUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWtCLENBQUM7SUFDdEcsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxVQUFnQyxNQUFxQjtRQUMxRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLFVBQWEsTUFBcUI7UUFDdkMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBd0IsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sVUFJTCxNQUFxQjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUd6RCxDQUFDO0lBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBb0MsRUFBb0IsRUFBRSxDQUM1RixLQUFLLEVBQUUsSUFBSSwyQ0FBMkIsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW9DLEVBQW9CLEVBQUUsQ0FDNUYsS0FBSyxFQUFFLElBQUksMkNBQTJCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFvQyxFQUFvQixFQUFFLENBQzVGLEtBQUssRUFBRSxJQUFJLDJDQUEyQixDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBb0MsRUFBc0IsRUFBRSxDQUNoRyxLQUFLLEVBQUUsSUFBSSwrQ0FBNkIsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQW9DLEVBQXFCLEVBQUUsQ0FDOUYsS0FBSyxFQUFFLElBQUksNkNBQTRCLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFpRCxFQUFFLEVBQUU7SUFDbkYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQU05QixNQUFlLEVBQzRELEVBQUU7SUFDN0UsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNsRSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0SGVhZGVycyB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEJhc2VBcmd1bWVudHMsXG4gIENhbmNlbGxlZCxcbiAgRmFpbHVyZSxcbiAgR3FsUXVlcnlDb25maWcsXG4gIExvYWRpbmcsXG4gIFByZXBhcmVkLFxuICBRdWVyeVJhd1Jlc3BvbnNlVHlwZSxcbiAgUXVlcnlSZXNwb25zZVR5cGUsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVEYXRhLFxuICBRdWVyeVN0YXRlUmF3RGF0YSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJvdXRlVHlwZSxcbiAgU3VjY2Vzcyxcbn0gZnJvbSAnLi9xdWVyeS50eXBlcyc7XG5cbnR5cGUgT21pdE51bGw8VD4gPSBUIGV4dGVuZHMgbnVsbCA/IG5ldmVyIDogVDtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclN1Y2Nlc3MoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8XG4gICAgVCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsLFxuICAgIFJlc3BvbnNlIGV4dGVuZHMgUXVlcnlTdGF0ZURhdGE8T21pdE51bGw8VD4+LFxuICAgIFJhd1Jlc3BvbnNlIGV4dGVuZHMgUXVlcnlTdGF0ZVJhd0RhdGE8T21pdE51bGw8VD4+LFxuICA+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHZhbHVlKSkpIGFzIE9ic2VydmFibGU8U3VjY2VzczxSZXNwb25zZSwgUmF3UmVzcG9uc2U+PjtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckZhaWx1cmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gaXNRdWVyeVN0YXRlRmFpbHVyZSh2YWx1ZSkpKSBhcyBPYnNlcnZhYmxlPEZhaWx1cmU+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUXVlcnlTdGF0ZXMoYWxsb3dlZFN0YXRlczogUXVlcnlTdGF0ZVR5cGVbXSkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBRdWVyeVN0YXRlIHwgbnVsbD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKGZpbHRlcigodmFsdWUpID0+IHZhbHVlICYmIGFsbG93ZWRTdGF0ZXMuaW5jbHVkZXModmFsdWUudHlwZSkpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFrZVVudGlsUmVzcG9uc2UoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGU+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZSh0YWtlV2hpbGUoKHZhbHVlKSA9PiBpc1F1ZXJ5U3RhdGVMb2FkaW5nKHZhbHVlKSwgdHJ1ZSkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTnVsbCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIE9taXROdWxsPFQ+ID0+IHZhbHVlICE9PSBudWxsKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzd2l0Y2hRdWVyeVN0YXRlKCkge1xuICByZXR1cm4gZnVuY3Rpb24gPFxuICAgIFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsXG4gICAgUmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJlc3BvbnNlVHlwZTxPbWl0TnVsbDxUPj4sXG4gICAgUmF3UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJhd1Jlc3BvbnNlVHlwZTxPbWl0TnVsbDxUPj4sXG4gID4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKHN3aXRjaE1hcCgodmFsdWUpID0+IHZhbHVlPy5zdGF0ZSQgPz8gb2YobnVsbCkpKSBhcyBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8XG4gICAgICBPbWl0TnVsbDxSZXNwb25zZT4sXG4gICAgICBPbWl0TnVsbDxSYXdSZXNwb25zZT5cbiAgICA+IHwgbnVsbD47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVMb2FkaW5nID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIExvYWRpbmcgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmc7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVTdWNjZXNzID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIFN1Y2Nlc3MgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVGYWlsdXJlID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIEZhaWx1cmUgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmU7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVDYW5jZWxsZWQgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgQ2FuY2VsbGVkID0+XG4gIHN0YXRlPy50eXBlID09PSBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVQcmVwYXJlZCA9IChzdGF0ZTogUXVlcnlTdGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdGF0ZSBpcyBQcmVwYXJlZCA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG5cbmV4cG9ydCBjb25zdCBtZXJnZUhlYWRlcnMgPSAoLi4uaGVhZGVyczogQXJyYXk8UmVxdWVzdEhlYWRlcnMgfCBudWxsIHwgdW5kZWZpbmVkPikgPT4ge1xuICByZXR1cm4gaGVhZGVycy5yZWR1Y2UoKGFjYywgaGVhZGVycykgPT4ge1xuICAgIGlmICghaGVhZGVycykge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uaGVhZGVycyxcbiAgICB9O1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHcWxRdWVyeUNvbmZpZyA9IDxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4gfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4+KFxuICBjb25maWc6IHVua25vd24sXG4pOiBjb25maWcgaXMgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+ID0+IHtcbiAgaWYgKCFjb25maWcgfHwgdHlwZW9mIGNvbmZpZyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3F1ZXJ5JyBpbiBjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19","import { BehaviorSubject, interval, Subject, takeUntil, tap } from 'rxjs';\nimport { transformGql } from '../gql';\nimport { buildBody, guessContentType, isAbortRequestError, isRequestError, request, transformMethod, } from '../request';\nimport { filterSuccess, isGqlQueryConfig, isQueryStateLoading, isQueryStateSuccess, mergeHeaders, takeUntilResponse, } from './query.utils';\nexport class Query {\n get _nextId() {\n return ++this._currentId;\n }\n get state$() {\n return this._state$.asObservable();\n }\n get state() {\n return this._state$.value;\n }\n get isExpired() {\n if (!isQueryStateSuccess(this.state)) {\n return false;\n }\n const ts = this.state.meta.expiresAt;\n if (!ts) {\n return true;\n }\n return ts < Date.now();\n }\n constructor(_client, _queryConfig, _route, _args) {\n this._client = _client;\n this._queryConfig = _queryConfig;\n this._route = _route;\n this._args = _args;\n this._currentId = 0;\n this._abortController = new AbortController();\n this._pollingSubscription = null;\n this._onAbort$ = new Subject();\n this._state$ = new BehaviorSubject({\n type: \"PREPARED\" /* QueryStateType.Prepared */,\n meta: { id: this._currentId },\n });\n }\n clone() {\n return this._client.fetch(this._queryConfig);\n }\n execute(options) {\n if (!this.isExpired && !options?.skipCache && isQueryStateSuccess(this.state)) {\n return this;\n }\n if (this._queryConfig.secure && !this._client.authProvider) {\n throw new Error('Cannot execute secure query without auth provider');\n }\n const id = this._nextId;\n if (isQueryStateLoading(this._state$.value)) {\n this.abort();\n }\n const meta = { id };\n this._state$.next({\n type: \"LOADING\" /* QueryStateType.Loading */,\n meta,\n });\n this._updateUseResultInDependencies();\n let body = null;\n let contentType = null;\n if (isGqlQueryConfig(this._queryConfig)) {\n const queryTemplate = this._queryConfig.query;\n const query = transformGql(queryTemplate);\n contentType = 'application/json';\n body = query(this._args?.variables);\n }\n else {\n body = buildBody(this._args?.body);\n contentType = guessContentType(this._args?.body);\n }\n let authHeader = null;\n if (this._queryConfig.secure) {\n const header = this._client.authProvider?.header;\n if (header) {\n authHeader = header;\n }\n }\n else if (this._client.authProvider?.header) {\n if (this._queryConfig.secure === undefined || this._queryConfig.secure) {\n authHeader = this._client.authProvider.header;\n }\n }\n let headers = mergeHeaders(authHeader, this._args?.headers);\n if (contentType && !headers?.['Content-Type'] && !headers?.['content-type']) {\n if (headers) {\n headers['Content-Type'] = contentType;\n }\n else {\n headers = {\n 'Content-Type': contentType,\n };\n }\n }\n request({\n route: this._route,\n init: {\n method: transformMethod(this._queryConfig.method),\n signal: this._abortController.signal,\n body,\n headers: headers || undefined,\n },\n cacheAdapter: this._client.config.request?.cacheAdapter,\n })\n .then((response) => {\n const isResponseObject = typeof response === 'object';\n const isGql = isGqlQueryConfig(this._queryConfig);\n let responseData = null;\n if (isGql &&\n isResponseObject &&\n !!response.data &&\n typeof response.data === 'object' &&\n 'data' in response.data) {\n responseData = response.data['data'];\n }\n else {\n responseData = response.data;\n }\n const transformedResponse = this._queryConfig.responseTransformer\n ? this._queryConfig.responseTransformer(responseData)\n : responseData;\n this._state$.next({\n type: \"SUCCESS\" /* QueryStateType.Success */,\n response: transformedResponse,\n rawResponse: responseData,\n meta: { ...meta, expiresAt: response.expiresInTimestamp },\n });\n })\n .catch((error) => this._handleExecuteError(error, meta));\n return this;\n }\n abort() {\n this._abortController.abort();\n this._abortController = new AbortController();\n this._onAbort$.next();\n return this;\n }\n poll(config) {\n if (this._pollingSubscription) {\n return this;\n }\n this._pollingSubscription = interval(config.interval)\n .pipe(takeUntil(config.takeUntil))\n .subscribe(() => this.execute({ skipCache: true }));\n return this;\n }\n stopPolling() {\n this._pollingSubscription?.unsubscribe();\n this._pollingSubscription = null;\n return this;\n }\n _updateUseResultInDependencies() {\n if (!this._args?.useResultIn?.length) {\n return;\n }\n this.state$\n .pipe(filterSuccess(), takeUntil(this._onAbort$), takeUntilResponse(), tap((state) => {\n if (!this._args?.useResultIn) {\n return;\n }\n for (const query of this._args.useResultIn) {\n query._state$.next({\n type: \"SUCCESS\" /* QueryStateType.Success */,\n meta: { ...state.meta, id: query._nextId },\n rawResponse: state.rawResponse,\n response: state.response,\n });\n }\n }))\n .subscribe();\n }\n _handleExecuteError(error, meta) {\n if (isAbortRequestError(error)) {\n this._state$.next({\n type: \"CANCELLED\" /* QueryStateType.Cancelled */,\n meta,\n });\n }\n else if (isRequestError(error)) {\n this._state$.next({\n type: \"FAILURE\" /* QueryStateType.Failure */,\n error,\n meta,\n });\n }\n else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFFZCxPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLFlBQVksQ0FBQztBQWFwQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsTUFBTSxPQUFPLEtBQUs7SUFjaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVyQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sRUFBRSxH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UUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2lCQUN6QixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxJQUFvQjtRQUM5RCxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLDRDQUEwQjtnQkFDOUIsSUFBSTthQUNMLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksd0NBQXdCO2dCQUM1QixLQUFLO2dCQUNMLElBQUk7YUFDTCxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRyYW5zZm9ybUdxbCB9IGZyb20gJy4uL2dxbCc7XG5pbXBvcnQgeyBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lciwgUXVlcnlDbGllbnQsIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7XG4gIGJ1aWxkQm9keSxcbiAgZ3Vlc3NDb250ZW50VHlwZSxcbiAgaXNBYm9ydFJlcXVlc3RFcnJvcixcbiAgaXNSZXF1ZXN0RXJyb3IsXG4gIE1ldGhvZCBhcyBNZXRob2RUeXBlLFxuICByZXF1ZXN0LFxuICB0cmFuc2Zvcm1NZXRob2QsXG59IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVNZXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG4gIFJ1blF1ZXJ5T3B0aW9ucyxcbiAgV2l0aFVzZVJlc3VsdEluLFxufSBmcm9tICcuL3F1ZXJ5LnR5cGVzJztcbmltcG9ydCB7XG4gIGZpbHRlclN1Y2Nlc3MsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIG1lcmdlSGVhZGVycyxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4vcXVlcnkudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUXVlcnk8XG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyAoQmFzZUFyZ3VtZW50cyAmIFdpdGhVc2VSZXN1bHRJbjxSZXNwb25zZSwgUmVzcG9uc2VUcmFuc2Zvcm1lcj4pIHwgdW5kZWZpbmVkLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBNZXRob2QgZXh0ZW5kcyBNZXRob2RUeXBlLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcHJpdmF0ZSBfcG9sbGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29uQWJvcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeVN0YXRlPFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4sIFJlc3BvbnNlPj47XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuc3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLnN0YXRlLm1ldGEuZXhwaXJlc0F0O1xuXG4gICAgaWYgKCF0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzIDwgRGF0ZS5ub3coKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfcXVlcnlDb25maWc6XG4gICAgICB8IFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICAgIHByaXZhdGUgX3JvdXRlOiBSb3V0ZSxcbiAgICBwcml2YXRlIF9hcmdzOiBBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlTdGF0ZTxSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+LCBSZXNwb25zZT4+KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudElkIH0sXG4gICAgfSk7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50LmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBNZXRob2QsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgfVxuXG4gIGV4ZWN1dGU8Q29tcHV0ZWRSZXNwb25zZSBleHRlbmRzIFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4+KG9wdGlvbnM/OiBSdW5RdWVyeU9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBpcmVkICYmICFvcHRpb25zPy5za2lwQ2FjaGUgJiYgaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSAmJiAhdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICB0aGlzLmFib3J0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YSA9IHsgaWQgfTtcblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdXBkYXRlVXNlUmVzdWx0SW5EZXBlbmRlbmNpZXMoKTtcblxuICAgIGxldCBib2R5OiBzdHJpbmcgfCBGb3JtRGF0YSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjb250ZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZykpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5VGVtcGxhdGUgPSB0aGlzLl9xdWVyeUNvbmZpZy5xdWVyeTtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdHJhbnNmb3JtR3FsKHF1ZXJ5VGVtcGxhdGUpO1xuXG4gICAgICBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgIGJvZHkgPSBxdWVyeSh0aGlzLl9hcmdzPy52YXJpYWJsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5ID0gYnVpbGRCb2R5KHRoaXMuX2FyZ3M/LmJvZHkpO1xuICAgICAgY29udGVudFR5cGUgPSBndWVzc0NvbnRlbnRUeXBlKHRoaXMuX2FyZ3M/LmJvZHkpO1xuICAgIH1cblxuICAgIGxldCBhdXRoSGVhZGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fcXVlcnlDb25maWcuc2VjdXJlKSB7XG4gICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyPy5oZWFkZXI7XG5cbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgYXV0aEhlYWRlciA9IGhlYWRlcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXI/LmhlYWRlcikge1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSkge1xuICAgICAgICBhdXRoSGVhZGVyID0gdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlci5oZWFkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnMgPSBtZXJnZUhlYWRlcnMoYXV0aEhlYWRlciwgdGhpcy5fYXJncz8uaGVhZGVycyk7XG5cbiAgICBpZiAoY29udGVudFR5cGUgJiYgIWhlYWRlcnM/LlsnQ29udGVudC1UeXBlJ10gJiYgIWhlYWRlcnM/LlsnY29udGVudC10eXBlJ10pIHtcbiAgICAgIGlmIChoZWFkZXJzKSB7XG4gICAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gY29udGVudFR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXF1ZXN0PFJlc3BvbnNlPih7XG4gICAgICByb3V0ZTogdGhpcy5fcm91dGUsXG4gICAgICBpbml0OiB7XG4gICAgICAgIG1ldGhvZDogdHJhbnNmb3JtTWV0aG9kKHRoaXMuX3F1ZXJ5Q29uZmlnLm1ldGhvZCksXG4gICAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzUmVzcG9uc2VPYmplY3QgPSB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnO1xuXG4gICAgICAgIGNvbnN0IGlzR3FsID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZyk7XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlRGF0YTogUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzR3FsICYmXG4gICAgICAgICAgaXNSZXNwb25zZU9iamVjdCAmJlxuICAgICAgICAgICEhcmVzcG9uc2UuZGF0YSAmJlxuICAgICAgICAgIHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICdkYXRhJyBpbiByZXNwb25zZS5kYXRhXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IChyZXNwb25zZS5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVsnZGF0YSddIGFzIFJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEgYXMgUmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFJlc3BvbnNlID0gdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUcmFuc2Zvcm1lclxuICAgICAgICAgID8gdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUcmFuc2Zvcm1lcihyZXNwb25zZURhdGEpXG4gICAgICAgICAgOiByZXNwb25zZURhdGE7XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3MsXG4gICAgICAgICAgcmVzcG9uc2U6IHRyYW5zZm9ybWVkUmVzcG9uc2UgYXMgQ29tcHV0ZWRSZXNwb25zZSxcbiAgICAgICAgICByYXdSZXNwb25zZTogcmVzcG9uc2VEYXRhIGFzIFJlc3BvbnNlLFxuICAgICAgICAgIG1ldGE6IHsgLi4ubWV0YSwgZXhwaXJlc0F0OiByZXNwb25zZS5leHBpcmVzSW5UaW1lc3RhbXAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gdGhpcy5faGFuZGxlRXhlY3V0ZUVycm9yKGVycm9yLCBtZXRhKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9vbkFib3J0JC5uZXh0KCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBvbGwoY29uZmlnOiBQb2xsQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBpbnRlcnZhbChjb25maWcuaW50ZXJ2YWwpXG4gICAgICAucGlwZSh0YWtlVW50aWwoY29uZmlnLnRha2VVbnRpbCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSB9KSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0b3BQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVVzZVJlc3VsdEluRGVwZW5kZW5jaWVzKCkge1xuICAgIGlmICghdGhpcy5fYXJncz8udXNlUmVzdWx0SW4/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyU3VjY2VzcygpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICB0YWtlVW50aWxSZXNwb25zZSgpLFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9hcmdzPy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgdGhpcy5fYXJncy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcXVlcnkuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICAgICAgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBpZDogcXVlcnkuX25leHRJZCB9LFxuICAgICAgICAgICAgICByYXdSZXNwb25zZTogc3RhdGUucmF3UmVzcG9uc2UsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBzdGF0ZS5yZXNwb25zZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVFeGVjdXRlRXJyb3IoZXJyb3I6IHVua25vd24sIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhKSB7XG4gICAgaWYgKGlzQWJvcnRSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZCxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBtZXRhLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19","import { ChangeDetectorRef, Directive, ErrorHandler, Input, TemplateRef, ViewContainerRef, } from '@angular/core';\nimport { tap } from 'rxjs';\nimport { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';\nimport * as i0 from \"@angular/core\";\nexport class QueryDirective {\n get query() {\n return this._query;\n }\n set query(v) {\n this._query = v;\n this._subscribeToQuery();\n }\n get cache() {\n return this._cache;\n }\n set cache(v) {\n this._cache = v;\n }\n constructor(_mainTemplateRef, _viewContainerRef, _errorHandler, _cdr) {\n this._mainTemplateRef = _mainTemplateRef;\n this._viewContainerRef = _viewContainerRef;\n this._errorHandler = _errorHandler;\n this._cdr = _cdr;\n this._isMainViewCreated = false;\n this._subscription = null;\n this._viewContext = {\n $implicit: null,\n query: null,\n raw: null,\n loading: false,\n error: null,\n };\n this._cache = false;\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n ngOnInit() {\n this._renderMainView();\n }\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n _subscribeToQuery() {\n this._subscription?.unsubscribe();\n this._subscription = null;\n if (!this.query) {\n return;\n }\n const sub = this.query.state$.pipe(tap((state) => this._updateView(state))).subscribe();\n this._subscription = sub;\n }\n _updateView(state) {\n if (isQueryStateLoading(state)) {\n this._viewContext.loading = true;\n }\n else {\n this._viewContext.loading = false;\n }\n if (isQueryStateSuccess(state)) {\n this._viewContext.query = state.response;\n this._viewContext.$implicit = state.response;\n this._viewContext.raw = state.rawResponse;\n }\n else if (!this.cache) {\n this._viewContext.query = null;\n this._viewContext.$implicit = null;\n this._viewContext.raw = null;\n }\n if (isQueryStateFailure(state)) {\n this._viewContext.error = state.error;\n this._errorHandler.handleError(state.error);\n }\n else {\n this._viewContext.error = null;\n }\n this._cdr.markForCheck();\n }\n _renderMainView() {\n if (!this._isMainViewCreated) {\n this._isMainViewCreated = true;\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);\n }\n }\n}\nQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: QueryDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ErrorHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: QueryDirective, isStandalone: true, selector: \"[query]\", inputs: { query: \"query\", cache: [\"queryCache\", \"cache\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: QueryDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[query]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ErrorHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { query: [{\n type: Input\n }], cache: [{\n type: Input,\n args: ['queryCache']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsR0FJcEIsTUFBTSxVQUFVLENBQUM7O0FBZ0JsQixNQUFNLE9BQU8sY0FBYztJQVl6QixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQUk7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFHRCxZQUNVLGdCQUE4QyxFQUM5QyxpQkFBbUMsRUFDbkMsYUFBMkIsRUFDM0IsSUFBdUI7UUFIdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBbkN6Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBd0Is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OUQsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs0TEFjSyxLQUFLO3NCQURSLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBpc1F1ZXJ5U3RhdGVGYWlsdXJlLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxuICBRdWVyeVJhd1Jlc3BvbnNlVHlwZSxcbiAgUXVlcnlSZXNwb25zZVR5cGUsXG4gIFF1ZXJ5U3RhdGUsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgUXVlcnlDb250ZXh0PFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+IHtcbiAgJGltcGxpY2l0OiBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgcXVlcnk6IFF1ZXJ5UmVzcG9uc2VUeXBlPFE+O1xuICByYXc6IFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogUmVxdWVzdEVycm9yPHVua25vd24+IHwgbnVsbDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3F1ZXJ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGlyZWN0aXZlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBRdWVyeUNvbnRleHQ8UT4gPSB7XG4gICAgJGltcGxpY2l0OiBudWxsIGFzIFF1ZXJ5UmVzcG9uc2VUeXBlPFE+LFxuICAgIHF1ZXJ5OiBudWxsIGFzIFF1ZXJ5UmVzcG9uc2VUeXBlPFE+LFxuICAgIHJhdzogbnVsbCBhcyBRdWVyeVJhd1Jlc3BvbnNlVHlwZTxRPixcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgfTtcblxuICBASW5wdXQoKVxuICBnZXQgcXVlcnkoKTogUSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG4gIHNldCBxdWVyeSh2OiBRKSB7XG4gICAgdGhpcy5fcXVlcnkgPSB2O1xuXG4gICAgdGhpcy5fc3Vic2NyaWJlVG9RdWVyeSgpO1xuICB9XG4gIHByaXZhdGUgX3F1ZXJ5ITogUTtcblxuICBASW5wdXQoJ3F1ZXJ5Q2FjaGUnKVxuICBnZXQgY2FjaGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG4gIHNldCBjYWNoZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2FjaGUgPSB2O1xuICB9XG4gIHByaXZhdGUgX2NhY2hlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFpblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxRdWVyeUNvbnRleHQ8UT4+LFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICAgIGRpcjogUXVlcnlEaXJlY3RpdmU8UT4sXG4gICAgY3R4OiB1bmtub3duLFxuICApOiBjdHggaXMgUXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1F1ZXJ5KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgaWYgKCF0aGlzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViID0gdGhpcy5xdWVyeS5zdGF0ZSQucGlwZSh0YXAoKHN0YXRlKSA9PiB0aGlzLl91cGRhdGVWaWV3KHN0YXRlKSkpLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gc3ViO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlldyhzdGF0ZTogUXVlcnlTdGF0ZSkge1xuICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnF1ZXJ5ID0gc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlSZXNwb25zZVR5cGU8UT47XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnJhdyA9IHN0YXRlLnJhd1Jlc3BvbnNlIGFzIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnF1ZXJ5ID0gbnVsbCBhcyBRdWVyeVJlc3BvbnNlVHlwZTxRPjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGwgYXMgUXVlcnlSZXNwb25zZVR5cGU8UT47XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yYXcgPSBudWxsIGFzIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFE+O1xuICAgIH1cblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBzdGF0ZS5lcnJvcjtcblxuICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck1haW5WaWV3KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNNYWluVmlld0NyZWF0ZWQpIHtcbiAgICAgIHRoaXMuX2lzTWFpblZpZXdDcmVhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX21haW5UZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRleHQpO1xuICAgIH1cbiAgfVxufVxuIl19","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject } from 'rxjs';\nimport { filterSuccess, takeUntilResponse } from '../query';\nexport class InfinityQuery {\n get currentPage$() {\n return this._currentPage$.asObservable();\n }\n get currentPage() {\n return this._currentPage$.getValue();\n }\n get currentCalculatedPage$() {\n return this._currentCalculatedPage$.asObservable();\n }\n get currentCalculatedPage() {\n return this._currentCalculatedPage$.getValue();\n }\n get totalPages$() {\n return this._totalPages$.asObservable();\n }\n get totalPages() {\n return this._totalPages$.getValue();\n }\n get itemsPerPage$() {\n return this._itemsPerPage$.asObservable();\n }\n get itemsPerPage() {\n return this._itemsPerPage$.getValue();\n }\n get currentQuery$() {\n return this._currentQuery$.asObservable();\n }\n get currentQuery() {\n return this._currentQuery$.getValue();\n }\n get data$() {\n return this._data$.asObservable();\n }\n get data() {\n return this._data$.getValue();\n }\n constructor(_config) {\n this._config = _config;\n this._currentPage$ = new BehaviorSubject(null);\n this._currentCalculatedPage$ = new BehaviorSubject(null);\n this._totalPages$ = new BehaviorSubject(null);\n this._itemsPerPage$ = new BehaviorSubject(this._config.limitParam?.value ?? 10);\n this._currentQuery$ = new BehaviorSubject(null);\n this._data$ = new BehaviorSubject([]);\n this._subscriptions = [];\n }\n nextPage() {\n const newPage = (this._currentPage$.value ?? 0) + 1;\n const calculatedPage = this._config?.pageParam?.valueCalculator?.({\n page: newPage,\n totalPages: this.totalPages,\n itemsPerPage: this.itemsPerPage,\n }) ?? newPage;\n const args = this._prepareArgs(this._config, calculatedPage);\n const query = this._config.queryCreator.prepare(args).execute();\n this._handleNewQuery(query);\n this._currentPage$.next(newPage);\n this._currentCalculatedPage$.next(calculatedPage);\n this._currentQuery$.next(query);\n }\n reset(newConfig) {\n this._destroy();\n this._config = { ...this._config, ...(newConfig ?? {}) };\n this._currentPage$.next(null);\n this._currentCalculatedPage$.next(null);\n this._totalPages$.next(null);\n this._itemsPerPage$.next(this._config.limitParam?.value ?? 10);\n this._currentQuery$.next(null);\n this._data$.next([]);\n }\n _destroy() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions = [];\n }\n _handleNewQuery(query) {\n const stateChangesSub = query.state$.pipe(takeUntilResponse(), filterSuccess()).subscribe({\n next: (state) => {\n let newData = this._config?.response.valueExtractor(state.response);\n if (this._config.response.reverse) {\n newData = [...newData].reverse();\n }\n if (this._config.response.appendItemsTo === 'start') {\n newData = [...newData, ...this.data];\n }\n else {\n newData = [...this.data, ...newData];\n }\n this._data$.next(newData);\n const totalPages = this._config.response.totalPagesExtractor?.({\n response: state.response,\n itemsPerPage: this.itemsPerPage,\n }) ??\n state.response?.totalPages ??\n null;\n this._totalPages$.next(totalPages);\n },\n complete: () => {\n this._subscriptions = this._subscriptions.filter((sub) => sub !== stateChangesSub);\n },\n });\n this._subscriptions.push(stateChangesSub);\n }\n _prepareArgs(config, page) {\n const pageParamLocation = this._getPageParamLocation(config?.pageParam?.location);\n const pageArgs = {\n [pageParamLocation]: {\n [config?.pageParam?.key ?? 'page']: page,\n },\n };\n const limitParamLocation = this._getPageParamLocation(config?.limitParam?.location);\n const limitArgs = {\n [limitParamLocation]: {\n [config?.limitParam?.key ?? 'limit']: config?.limitParam?.value ?? 10,\n },\n };\n const defaultConfig = config?.defaultArgs ?? {};\n const mergedArgs = pageParamLocation === limitParamLocation\n ? {\n ...defaultConfig,\n [pageParamLocation]: {\n ...(config?.defaultArgs?.[pageParamLocation] ?? {}),\n ...pageArgs[limitParamLocation],\n ...limitArgs[limitParamLocation],\n },\n }\n : {\n ...defaultConfig,\n [pageParamLocation]: {\n ...(config?.defaultArgs?.[pageParamLocation] ?? {}),\n ...pageArgs[pageParamLocation],\n },\n [limitParamLocation]: {\n ...(config?.defaultArgs?.[limitParamLocation] ?? {}),\n ...limitArgs[limitParamLocation],\n },\n };\n return mergedArgs;\n }\n _getPageParamLocation(location) {\n const loc = location ?? 'query';\n switch (loc) {\n case 'path':\n return 'pathParams';\n case 'query':\n return 'queryParams';\n case 'body':\n return 'body';\n case 'header':\n return 'headers';\n case 'variable':\n return 'variables';\n default:\n throw new Error(`Invalid pageParamLocation: ${loc}`);\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTVFLE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFB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QUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJTdWNjZXNzLCBRdWVyeVN0YXRlRGF0YSwgdGFrZVVudGlsUmVzcG9uc2UgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvckFyZ3MsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeUNvbmZpZywgSW5maW5pdHlRdWVyeVBhcmFtTG9jYXRpb24gfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnk8XG4gIFF1ZXJ5Q3JlYXRvciBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcixcbiAgUXVlcnkgZXh0ZW5kcyBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlPFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUNyZWF0b3JBcmdzPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxRdWVyeVsnc3RhdGUnXT4sXG4gIEluZmluaXR5UmVzcG9uc2UgZXh0ZW5kcyB1bmtub3duW10sXG4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudENhbGN1bGF0ZWRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsUGFnZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXNQZXJQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5maW5pdHlSZXNwb25zZT4oW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgZ2V0IGN1cnJlbnRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDYWxjdWxhdGVkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFF1ZXJ5JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRRdWVyeSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBkYXRhJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogSW5maW5pdHlRdWVyeUNvbmZpZzxRdWVyeUNyZWF0b3IsIEFyZ3MsIFF1ZXJ5UmVzcG9uc2UsIEluZmluaXR5UmVzcG9uc2U+KSB7fVxuXG4gIG5leHRQYWdlKCkge1xuICAgIGNvbnN0IG5ld1BhZ2UgPSAodGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlID8/IDApICsgMTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUGFnZSA9XG4gICAgICB0aGlzLl9jb25maWc/LnBhZ2VQYXJhbT8udmFsdWVDYWxjdWxhdG9yPy4oe1xuICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICB9KSA/PyBuZXdQYWdlO1xuXG4gICAgY29uc3QgYXJncyA9IHRoaXMuX3ByZXBhcmVBcmdzKHRoaXMuX2NvbmZpZywgY2FsY3VsYXRlZFBhZ2UpO1xuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9jb25maWcucXVlcnlDcmVhdG9yLnByZXBhcmUoYXJncykuZXhlY3V0ZSgpIGFzIFF1ZXJ5O1xuICAgIHRoaXMuX2hhbmRsZU5ld1F1ZXJ5KHF1ZXJ5KTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG5ld1BhZ2UpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChjYWxjdWxhdGVkUGFnZSk7XG4gICAgdGhpcy5fY3VycmVudFF1ZXJ5JC5uZXh0KHF1ZXJ5KTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9kZXN0cm95KCk7XG5cbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX2N1cnJlbnRRdWVyeSQubmV4dChudWxsKTtcblxuICAgIHRoaXMuX2RhdGEkLm5leHQoW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuICB9XG5cbiAgX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOZXdRdWVyeShxdWVyeTogUXVlcnkpIHtcbiAgICBjb25zdCBzdGF0ZUNoYW5nZXNTdWIgPSBxdWVyeS5zdGF0ZSQucGlwZSh0YWtlVW50aWxSZXNwb25zZSgpLCBmaWx0ZXJTdWNjZXNzKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHtcbiAgICAgICAgbGV0IG5ld0RhdGEgPSB0aGlzLl9jb25maWc/LnJlc3BvbnNlLnZhbHVlRXh0cmFjdG9yKHN0YXRlLnJlc3BvbnNlKTtcblxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlc3BvbnNlLnJldmVyc2UpIHtcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLm5ld0RhdGFdLnJldmVyc2UoKSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5hcHBlbmRJdGVtc1RvID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5uZXdEYXRhLCAuLi50aGlzLmRhdGFdIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi50aGlzLmRhdGEsIC4uLm5ld0RhdGFdIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KG5ld0RhdGEpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPVxuICAgICAgICAgIHRoaXMuX2NvbmZpZy5yZXNwb25zZS50b3RhbFBhZ2VzRXh0cmFjdG9yPy4oe1xuICAgICAgICAgICAgcmVzcG9uc2U6IHN0YXRlLnJlc3BvbnNlLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZSxcbiAgICAgICAgICB9KSA/P1xuICAgICAgICAgIHN0YXRlLnJlc3BvbnNlPy50b3RhbFBhZ2VzID8/XG4gICAgICAgICAgbnVsbDtcblxuICAgICAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KHRvdGFsUGFnZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSB0aGlzLl9zdWJzY3JpcHRpb25zLmZpbHRlcigoc3ViKSA9PiBzdWIgIT09IHN0YXRlQ2hhbmdlc1N1Yik7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHN0YXRlQ2hhbmdlc1N1Yik7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlQXJncyhjb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPiwgcGFnZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZVBhcmFtTG9jYXRpb24gPSB0aGlzLl9nZXRQYWdlUGFyYW1Mb2NhdGlvbihjb25maWc/LnBhZ2VQYXJhbT8ubG9jYXRpb24pO1xuXG4gICAgY29uc3QgcGFnZUFyZ3MgPSB7XG4gICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgIFtjb25maWc/LnBhZ2VQYXJhbT8ua2V5ID8/ICdwYWdlJ106IHBhZ2UsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBsaW1pdFBhcmFtTG9jYXRpb24gPSB0aGlzLl9nZXRQYWdlUGFyYW1Mb2NhdGlvbihjb25maWc/LmxpbWl0UGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IGxpbWl0QXJncyA9IHtcbiAgICAgIFtsaW1pdFBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgIFtjb25maWc/LmxpbWl0UGFyYW0/LmtleSA/PyAnbGltaXQnXTogY29uZmlnPy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSBjb25maWc/LmRlZmF1bHRBcmdzID8/IHt9O1xuXG4gICAgY29uc3QgbWVyZ2VkQXJncyA9XG4gICAgICBwYWdlUGFyYW1Mb2NhdGlvbiA9PT0gbGltaXRQYXJhbUxvY2F0aW9uXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyxcbiAgICAgICAgICAgIFtwYWdlUGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgICAgICAgLi4uKGNvbmZpZz8uZGVmYXVsdEFyZ3M/LltwYWdlUGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5wYWdlQXJnc1tsaW1pdFBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbcGFnZVBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtsaW1pdFBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bbGltaXRQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLmxpbWl0QXJnc1tsaW1pdFBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIG1lcmdlZEFyZ3M7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYWdlUGFyYW1Mb2NhdGlvbihsb2NhdGlvbjogSW5maW5pdHlRdWVyeVBhcmFtTG9jYXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsb2MgPSBsb2NhdGlvbiA/PyAncXVlcnknO1xuXG4gICAgc3dpdGNoIChsb2MpIHtcbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgICByZXR1cm4gJ3BhdGhQYXJhbXMnO1xuICAgICAgY2FzZSAncXVlcnknOlxuICAgICAgICByZXR1cm4gJ3F1ZXJ5UGFyYW1zJztcbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgICByZXR1cm4gJ2JvZHknO1xuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgcmV0dXJuICdoZWFkZXJzJztcbiAgICAgIGNhc2UgJ3ZhcmlhYmxlJzpcbiAgICAgICAgcmV0dXJuICd2YXJpYWJsZXMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhZ2VQYXJhbUxvY2F0aW9uOiAke2xvY31gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","export const createInfinityQueryConfig = (config) => config;\nexport const skipPaginationPageParamCalculator = ({ page, itemsPerPage }) => itemsPerPage * (page - 1);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FPdkMsTUFBZ0YsRUFDaEYsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUE4QixFQUFFLEVBQUUsQ0FDdEcsWUFBWSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlTdGF0ZURhdGEgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvckFyZ3MsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeUNvbmZpZywgUGFnZVBhcmFtQ2FsY3VsYXRvck9wdGlvbnMgfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluZmluaXR5UXVlcnlDb25maWcgPSA8XG4gIFF1ZXJ5Q3JlYXRvciBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcixcbiAgUXVlcnkgZXh0ZW5kcyBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlPFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUNyZWF0b3JBcmdzPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxRdWVyeVsnc3RhdGUnXT4sXG4gIEluZmluaXR5UmVzcG9uc2UgZXh0ZW5kcyB1bmtub3duW10sXG4+KFxuICBjb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPixcbikgPT4gY29uZmlnO1xuXG5leHBvcnQgY29uc3Qgc2tpcFBhZ2luYXRpb25QYWdlUGFyYW1DYWxjdWxhdG9yID0gKHsgcGFnZSwgaXRlbXNQZXJQYWdlIH06IFBhZ2VQYXJhbUNhbGN1bGF0b3JPcHRpb25zKSA9PlxuICBpdGVtc1BlclBhZ2UgKiAocGFnZSAtIDEpO1xuIl19","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectorRef, Directive, ErrorHandler, inject, InjectionToken, Input, TemplateRef, ViewContainerRef, } from '@angular/core';\nimport { DestroyService } from '@ethlete/core';\nimport { BehaviorSubject, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { InfinityQuery } from '../infinite-query';\nimport { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess } from '../query';\nimport * as i0 from \"@angular/core\";\nexport const INFINITY_QUERY_TOKEN = new InjectionToken('INFINITY_QUERY_TOKEN');\nexport class InfinityQueryDirective {\n constructor() {\n this._queryConfigChanged$ = new Subject();\n this._viewContext = {\n $implicit: null,\n infinityQuery: null,\n loading: false,\n error: null,\n isFirstLoad: false,\n canLoadMore: false,\n currentPage: null,\n currentCalculatedPage: null,\n totalPages: null,\n itemsPerPage: null,\n };\n this._infinityQueryInstance = null;\n this._destroy$ = inject(DestroyService).destroy$;\n this._cdr = inject(ChangeDetectorRef);\n this._viewContainerRef = inject(ViewContainerRef);\n this._mainTemplateRef = inject((TemplateRef));\n this._errorHandler = inject(ErrorHandler);\n this._data$ = new BehaviorSubject([]);\n this._isMainViewCreated = false;\n }\n get infinityQuery() {\n return this._infinityQuery;\n }\n set infinityQuery(v) {\n this._cleanup();\n this._infinityQuery = v;\n this._infinityQueryInstance = this._setupInfinityQuery(v);\n this._loadNextPage();\n }\n get context() {\n return this._viewContext;\n }\n get instance() {\n return this._infinityQueryInstance;\n }\n get data$() {\n return this._data$.asObservable();\n }\n get data() {\n return this._data$.getValue();\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n ngOnInit() {\n this._renderMainView();\n }\n ngOnDestroy() {\n this.instance?._destroy();\n }\n _setupInfinityQuery(config) {\n const instance = new InfinityQuery(config);\n instance.currentQuery$\n .pipe(switchMap((q) => q?.state$ ?? of(null)), tap((state) => {\n this._viewContext.currentPage = instance.currentPage;\n this._viewContext.totalPages = instance.totalPages;\n this._viewContext.itemsPerPage = instance.itemsPerPage;\n this._viewContext.canLoadMore =\n (instance.totalPages && instance.currentPage && instance.totalPages > instance.currentPage) || false;\n this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;\n if (isQueryStateLoading(state)) {\n this._viewContext.loading = true;\n this._viewContext.error = null;\n this._viewContext.isFirstLoad = this.context.infinityQuery === null;\n }\n else if (isQueryStateFailure(state)) {\n this._viewContext.loading = false;\n this._viewContext.error = state.error;\n this._viewContext.isFirstLoad = false;\n this._errorHandler.handleError(state.error);\n }\n else if (isQueryStateSuccess(state)) {\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.isFirstLoad = false;\n }\n else {\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.infinityQuery = null;\n this._viewContext.$implicit = null;\n this._viewContext.isFirstLoad = false;\n this._viewContext.canLoadMore = false;\n this._viewContext.currentPage = null;\n this._viewContext.itemsPerPage = null;\n this._viewContext.totalPages = null;\n this._data$.next([]);\n }\n this._cdr.markForCheck();\n }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))\n .subscribe();\n instance.data$\n .pipe(tap((data) => {\n this._viewContext.infinityQuery = this._viewContext.$implicit = data;\n this._data$.next(data);\n this._cdr.markForCheck();\n }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))\n .subscribe();\n return instance;\n }\n _loadNextPage() {\n if (!this._infinityQueryInstance) {\n return;\n }\n this._infinityQueryInstance.nextPage();\n }\n _renderMainView() {\n if (!this._isMainViewCreated) {\n this._isMainViewCreated = true;\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);\n }\n }\n _cleanup() {\n this._queryConfigChanged$.next(true);\n this.instance?._destroy();\n this._viewContext.loading = false;\n this._viewContext.error = null;\n this._viewContext.infinityQuery = null;\n this._viewContext.$implicit = null;\n this._viewContext.isFirstLoad = false;\n this._viewContext.canLoadMore = false;\n this._viewContext.currentPage = null;\n this._viewContext.itemsPerPage = null;\n this._viewContext.totalPages = null;\n this._data$.next([]);\n }\n}\nInfinityQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nInfinityQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: InfinityQueryDirective, isStandalone: true, selector: \"[infinityQuery]\", inputs: { infinityQuery: \"infinityQuery\" }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService], exportAs: [\"infinityQuery\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[infinityQuery]',\n exportAs: 'infinityQuery',\n standalone: true,\n providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService],\n }]\n }], propDecorators: { infinityQuery: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBaUIsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBa0J4RyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsc0JBQXNCLENBQUMsQ0FBQztBQVM1RyxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBVW1CLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsaUJBQVksR0FBNEI7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixhQUFhLEVBQUUsSUFBSTtZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxJQUFJO1lBRVgsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZ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RUFBRSxFQUFFLGNBQWMsQ0FBQztpQkFDcEc7OEJBK0JLLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveVNlcnZpY2UgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluZmluaXR5UXVlcnksIEluZmluaXR5UXVlcnlDb25maWcgfSBmcm9tICcuLi9pbmZpbml0ZS1xdWVyeSc7XG5pbXBvcnQgeyBCYXNlQXJndW1lbnRzLCBpc1F1ZXJ5U3RhdGVGYWlsdXJlLCBpc1F1ZXJ5U3RhdGVMb2FkaW5nLCBpc1F1ZXJ5U3RhdGVTdWNjZXNzIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgSW5maW5pdHlRdWVyeUNvbnRleHQ8USBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzLCBhbnksIHVua25vd25bXT4+IHtcbiAgJGltcGxpY2l0OiBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gIGluZmluaXR5UXVlcnk6IFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjx1bmtub3duPiB8IG51bGw7XG5cbiAgaXNGaXJzdExvYWQ6IGJvb2xlYW47XG4gIGNhbkxvYWRNb3JlOiBib29sZWFuO1xuICBjdXJyZW50UGFnZTogbnVtYmVyIHwgbnVsbDtcbiAgY3VycmVudENhbGN1bGF0ZWRQYWdlOiBudW1iZXIgfCBudWxsO1xuICB0b3RhbFBhZ2VzOiBudW1iZXIgfCBudWxsO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBJTkZJTklUWV9RVUVSWV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPGFueT4+KCdJTkZJTklUWV9RVUVSWV9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaW5maW5pdHlRdWVyeV0nLFxuICBleHBvcnRBczogJ2luZmluaXR5UXVlcnknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElORklOSVRZX1FVRVJZX1RPS0VOLCB1c2VFeGlzdGluZzogSW5maW5pdHlRdWVyeURpcmVjdGl2ZSB9LCBEZXN0cm95U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnlEaXJlY3RpdmU8USBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzLCBhbnksIHVua25vd25bXT4+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcnlDb25maWdDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPiA9IHtcbiAgICAkaW1wbGljaXQ6IG51bGwsXG4gICAgaW5maW5pdHlRdWVyeTogbnVsbCxcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcblxuICAgIGlzRmlyc3RMb2FkOiBmYWxzZSxcbiAgICBjYW5Mb2FkTW9yZTogZmFsc2UsXG4gICAgY3VycmVudFBhZ2U6IG51bGwsXG4gICAgY3VycmVudENhbGN1bGF0ZWRQYWdlOiBudWxsLFxuICAgIHRvdGFsUGFnZXM6IG51bGwsXG4gICAgaXRlbXNQZXJQYWdlOiBudWxsLFxuICB9O1xuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5SW5zdGFuY2U6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX3NldHVwSW5maW5pdHlRdWVyeT4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95U2VydmljZSkuZGVzdHJveSQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21haW5UZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPj4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckhhbmRsZXIgPSBpbmplY3QoRXJyb3JIYW5kbGVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10+KFtdKTtcblxuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbmZpbml0eVF1ZXJ5KCk6IFEge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0eVF1ZXJ5O1xuICB9XG4gIHNldCBpbmZpbml0eVF1ZXJ5KHY6IFEpIHtcbiAgICB0aGlzLl9jbGVhbnVwKCk7XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5ID0gdjtcbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UgPSB0aGlzLl9zZXR1cEluZmluaXR5UXVlcnkodik7XG4gICAgdGhpcy5fbG9hZE5leHRQYWdlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfaW5maW5pdHlRdWVyeSE6IFE7XG5cbiAgZ2V0IGNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdDb250ZXh0O1xuICB9XG5cbiAgZ2V0IGluc3RhbmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2U7XG4gIH1cblxuICBnZXQgZGF0YSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmdldFZhbHVlKCk7XG4gIH1cblxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMsIGFueSwgdW5rbm93bltdPj4oXG4gICAgZGlyOiBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFE+LFxuICAgIGN0eDogdW5rbm93bixcbiAgKTogY3R4IGlzIEluZmluaXR5UXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbmNlPy5fZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBJbmZpbml0eVF1ZXJ5KGNvbmZpZzogUSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEluZmluaXR5UXVlcnkoY29uZmlnKTtcblxuICAgIGluc3RhbmNlLmN1cnJlbnRRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHEpID0+IHE/LnN0YXRlJCA/PyBvZihudWxsKSksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UGFnZSA9IGluc3RhbmNlLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBpbnN0YW5jZS50b3RhbFBhZ2VzO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0Lml0ZW1zUGVyUGFnZSA9IGluc3RhbmNlLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9XG4gICAgICAgICAgICAoaW5zdGFuY2UudG90YWxQYWdlcyAmJiBpbnN0YW5jZS5jdXJyZW50UGFnZSAmJiBpbnN0YW5jZS50b3RhbFBhZ2VzID4gaW5zdGFuY2UuY3VycmVudFBhZ2UpIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRDYWxjdWxhdGVkUGFnZSA9IGluc3RhbmNlLmN1cnJlbnRDYWxjdWxhdGVkUGFnZTtcblxuICAgICAgICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IHRoaXMuY29udGV4dC5pbmZpbml0eVF1ZXJ5ID09PSBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gc3RhdGUuZXJyb3I7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KFtdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBpbnN0YW5jZS5kYXRhJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmluZmluaXR5UXVlcnkgPSB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBkYXRhIGFzIFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KGRhdGEpO1xuXG4gICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3F1ZXJ5Q29uZmlnQ2hhbmdlZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgX2xvYWROZXh0UGFnZSgpIHtcbiAgICBpZiAoIXRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTWFpblZpZXcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCkge1xuICAgICAgdGhpcy5faXNNYWluVmlld0NyZWF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cCgpIHtcbiAgICB0aGlzLl9xdWVyeUNvbmZpZ0NoYW5nZWQkLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLmluc3RhbmNlPy5fZGVzdHJveSgpO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgdGhpcy5fZGF0YSQubmV4dChbXSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, ElementRef, inject, Input } from '@angular/core';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { INFINITY_QUERY_TOKEN } from './infinity-query.directive';\nimport * as i0 from \"@angular/core\";\nexport class InfinityQueryTriggerDirective {\n constructor() {\n this._elementRef = inject((ElementRef));\n this._infinityQuery = inject(INFINITY_QUERY_TOKEN);\n this._destroy = new Subject();\n this._observer = null;\n this.click$ = fromEvent(this._elementRef.nativeElement, 'click');\n this.scrollContainerSelector = null;\n }\n ngOnInit() {\n const isInteractive = this._elementRef.nativeElement.hasAttribute('infinityQueryTrigger');\n if (isInteractive) {\n this.click$.pipe(takeUntil(this._destroy)).subscribe(() => this._infinityQuery._loadNextPage());\n }\n else {\n this._setupIntersectionObserver();\n }\n }\n ngOnDestroy() {\n this._destroy.next(true);\n this._destroy.unsubscribe();\n this._observer?.disconnect();\n }\n _setupIntersectionObserver() {\n this._observer = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !this._infinityQuery.context.loading) {\n this._infinityQuery._loadNextPage();\n }\n }, {\n root: this.scrollContainerSelector ? document.querySelector(this.scrollContainerSelector) : null,\n rootMargin: '0px',\n threshold: 1.0,\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n}\nInfinityQueryTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nInfinityQueryTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.1.0\", type: InfinityQueryTriggerDirective, isStandalone: true, selector: \"[infinityQueryTrigger], infinity-query-trigger\", inputs: { scrollContainerSelector: \"scrollContainerSelector\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[infinityQueryTrigger], infinity-query-trigger',\n standalone: true,\n }]\n }], propDecorators: { scrollContainerSelector: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnktdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0eS1xdWVyeS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFNVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsY0FBUyxHQUFnQyxJQUFJLENBQUM7UUFFdEQsV0FBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUc1RCw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0tBb0MvQztJQWxDQyxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFMUYsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDakc7YUFBTTtZQUNMLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQ3ZDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxFQUNEO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRyxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsR0FBRztTQUNmLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7MEhBN0NVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBTHpDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0RBQWdEO29CQUMxRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBV0MsdUJBQXVCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElORklOSVRZX1FVRVJZX1RPS0VOIH0gZnJvbSAnLi9pbmZpbml0eS1xdWVyeS5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaW5maW5pdHlRdWVyeVRyaWdnZXJdLCBpbmZpbml0eS1xdWVyeS10cmlnZ2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeVRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5ID0gaW5qZWN0KElORklOSVRZX1FVRVJZX1RPS0VOKTtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY2xpY2skID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJyk7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW50ZXJhY3RpdmUgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdpbmZpbml0eVF1ZXJ5VHJpZ2dlcicpO1xuXG4gICAgaWYgKGlzSW50ZXJhY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faW5maW5pdHlRdWVyeS5fbG9hZE5leHRQYWdlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcblxuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgIXRoaXMuX2luZmluaXR5UXVlcnkuY29udGV4dC5sb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5faW5maW5pdHlRdWVyeS5fbG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IpIDogbnVsbCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgICAgIHRocmVzaG9sZDogMS4wLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0=","export class QueryStore {\n constructor(_config) {\n this._config = _config;\n this._store = new Map();\n this._garbageCollector = null;\n }\n add(id, query) {\n this._store.set(id, query);\n this._initGarbageCollector();\n this._logState(id, query, 'SET');\n }\n get(id) {\n return this._store.get(id) ?? null;\n }\n remove(id) {\n this._store.delete(id);\n this._logState(id, null, 'REMOVE');\n }\n _logState(key, item, operation) {\n if (!this._config?.enableChangeLogging)\n return;\n const stateAsJson = {};\n this._store.forEach((value, key) => {\n stateAsJson[key] = value;\n });\n console.log(`%c[${operation}] ${key}`, 'font-weight: bold');\n console.log({ operation, key, item });\n console.log(stateAsJson);\n }\n _initGarbageCollector() {\n if (this._garbageCollector !== null) {\n return;\n }\n this._logGarbageCollector('Start');\n this._garbageCollector = window.setInterval(() => {\n this._runGarbageCollector();\n }, 15000);\n }\n _stopGarbageCollector() {\n if (this._garbageCollector !== null) {\n window.clearInterval(this._garbageCollector);\n this._garbageCollector = null;\n }\n }\n _runGarbageCollector() {\n this._logGarbageCollector('Collecting...');\n this._store.forEach((item, key) => {\n if (item.isExpired) {\n this.remove(key);\n }\n });\n this._logGarbageCollector('Collection done');\n if (!this._store.size) {\n this._stopGarbageCollector();\n this._logGarbageCollector('Stop');\n }\n }\n _logGarbageCollector(action) {\n if (!this._config?.enableGarbageCollectorLogging)\n return;\n console.log(`%cGC: ${action}`, 'color: yellow; font-weight: bold');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDVSxPQUdQO1FBSE8sWUFBTyxHQUFQLE9BQU8sQ0FHZDtRQVBjLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUM5QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBTzdDLENBQUM7SUFFSixHQUFHLENBQUMsRUFBVSxFQUFFLEtBQWU7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUFrQixFQUFFLElBQXFCLEVBQUUsU0FBaUI7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CO1lBQUUsT0FBTztRQUUvQyxNQUFNLFdBQVcsR0FBNkIsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sU0FBUyxLQUFLLEdBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBQ25DLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7WUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsNkJBQTZCO1lBQUUsT0FBTztRQUV6RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsTUFBTSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbnlRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5JztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5U3RvcmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlRdWVyeT4oKTtcbiAgcHJpdmF0ZSBfZ2FyYmFnZUNvbGxlY3RvcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29uZmlnPzoge1xuICAgICAgZW5hYmxlQ2hhbmdlTG9nZ2luZz86IGJvb2xlYW47XG4gICAgICBlbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZz86IGJvb2xlYW47XG4gICAgfSxcbiAgKSB7fVxuXG4gIGFkZChpZDogc3RyaW5nLCBxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLl9zdG9yZS5zZXQoaWQsIHF1ZXJ5KTtcblxuICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgcXVlcnksICdTRVQnKTtcbiAgfVxuXG4gIGdldChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3RvcmUuZGVsZXRlKGlkKTtcblxuICAgIHRoaXMuX2xvZ1N0YXRlKGlkLCBudWxsLCAnUkVNT1ZFJyk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3Rpb24gZG9uZScpO1xuXG4gICAgaWYgKCF0aGlzLl9zdG9yZS5zaXplKSB7XG4gICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnNvbGUubG9nKGAlY0dDOiAke2FjdGlvbn1gLCAnY29sb3I6IHllbGxvdzsgZm9udC13ZWlnaHQ6IGJvbGQnKTtcbiAgfVxufVxuIl19","export const shouldCacheQuery = (method) => {\n return method === 'GET' || method === 'OPTIONS' || method === 'HEAD' || method === 'GQL_QUERY';\n};\nexport const buildGqlCacheKey = (\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconfig, args) => {\n const { query } = config;\n const variables = args?.variables || {};\n const queryWithoutNewLinesAndWhitespace = query.replace(/\\s/g, '');\n const queryFirst50Chars = queryWithoutNewLinesAndWhitespace.slice(0, 50);\n const queryMiddle25Chars = queryWithoutNewLinesAndWhitespace.slice(queryWithoutNewLinesAndWhitespace.length / 2 - 25, queryWithoutNewLinesAndWhitespace.length / 2 + 25);\n const queryLast50Chars = queryWithoutNewLinesAndWhitespace.slice(-50);\n const vars = JSON.stringify(variables);\n return `${queryFirst50Chars}...${queryMiddle25Chars}...${queryLast50Chars}...${vars}`;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNqRCxPQUFPLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDakcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7QUFDOUIsOERBQThEO0FBQzlELE1BQTBDLEVBQzFDLElBQStCLEVBQy9CLEVBQUU7SUFDRixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO0lBRXhDLE1BQU0saUNBQWlDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbkUsTUFBTSxpQkFBaUIsR0FBRyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsaUNBQWlDLENBQUMsS0FBSyxDQUNoRSxpQ0FBaUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFDakQsaUNBQWlDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ2xELENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkMsT0FBTyxHQUFHLGlCQUFpQixNQUFNLGtCQUFrQixNQUFNLGdCQUFnQixNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3hGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBcmd1bWVudHMsIEdxbFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHsgTWV0aG9kIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmV4cG9ydCBjb25zdCBzaG91bGRDYWNoZVF1ZXJ5ID0gKG1ldGhvZDogTWV0aG9kKSA9PiB7XG4gIHJldHVybiBtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ09QVElPTlMnIHx8IG1ldGhvZCA9PT0gJ0hFQUQnIHx8IG1ldGhvZCA9PT0gJ0dRTF9RVUVSWSc7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRHcWxDYWNoZUtleSA9IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uZmlnOiBHcWxRdWVyeUNvbmZpZzxhbnksIGFueSwgYW55LCBhbnk+LFxuICBhcmdzOiBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gIGNvbnN0IHsgcXVlcnkgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFyaWFibGVzID0gYXJncz8udmFyaWFibGVzIHx8IHt9O1xuXG4gIGNvbnN0IHF1ZXJ5V2l0aG91dE5ld0xpbmVzQW5kV2hpdGVzcGFjZSA9IHF1ZXJ5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG5cbiAgY29uc3QgcXVlcnlGaXJzdDUwQ2hhcnMgPSBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2Uuc2xpY2UoMCwgNTApO1xuICBjb25zdCBxdWVyeU1pZGRsZTI1Q2hhcnMgPSBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2Uuc2xpY2UoXG4gICAgcXVlcnlXaXRob3V0TmV3TGluZXNBbmRXaGl0ZXNwYWNlLmxlbmd0aCAvIDIgLSAyNSxcbiAgICBxdWVyeVdpdGhvdXROZXdMaW5lc0FuZFdoaXRlc3BhY2UubGVuZ3RoIC8gMiArIDI1LFxuICApO1xuICBjb25zdCBxdWVyeUxhc3Q1MENoYXJzID0gcXVlcnlXaXRob3V0TmV3TGluZXNBbmRXaGl0ZXNwYWNlLnNsaWNlKC01MCk7XG5cbiAgY29uc3QgdmFycyA9IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyk7XG5cbiAgcmV0dXJuIGAke3F1ZXJ5Rmlyc3Q1MENoYXJzfS4uLiR7cXVlcnlNaWRkbGUyNUNoYXJzfS4uLiR7cXVlcnlMYXN0NTBDaGFyc30uLi4ke3ZhcnN9YDtcbn07XG4iXX0=","import { BehaviorSubject } from 'rxjs';\nimport { isGqlQueryConfig, Query, } from '../query';\nimport { QueryStore } from '../query-store';\nimport { buildRoute } from '../request';\nimport { buildGqlCacheKey, shouldCacheQuery } from './query-client.utils';\nexport class QueryClient {\n get config() {\n return this._clientConfig;\n }\n get authProvider() {\n return this._authProvider;\n }\n constructor(_clientConfig) {\n this._clientConfig = _clientConfig;\n this._authProvider = null;\n this.get = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GET',\n });\n this.post = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'POST',\n });\n this.put = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'PUT',\n });\n this.patch = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'PATCH',\n });\n this.delete = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'DELETE',\n });\n this.gqlQuery = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GQL_QUERY',\n });\n this.gqlMutate = (queryConfig) => this.fetch({\n ...queryConfig,\n method: 'GQL_MUTATE',\n });\n this.fetch = (queryConfig) => {\n const prepare = (args) => {\n const route = buildRoute({\n base: this._clientConfig.baseRoute,\n route: queryConfig.route,\n pathParams: args?.pathParams,\n queryParams: args?.queryParams,\n });\n const cacheKey = isGqlQueryConfig(queryConfig) ? buildGqlCacheKey(queryConfig, args) : route;\n if (shouldCacheQuery(queryConfig.method)) {\n const existingQuery = this._store.get(cacheKey);\n if (existingQuery) {\n return existingQuery;\n }\n }\n const query = new Query(this, queryConfig, route, args);\n if (shouldCacheQuery(queryConfig.method)) {\n this._store.add(cacheKey, query);\n }\n return query;\n };\n const behaviorSubject = (initialValue = null) => new BehaviorSubject(initialValue);\n return {\n prepare,\n behaviorSubject,\n };\n };\n this.setAuthProvider = (authProvider) => {\n if (this._authProvider) {\n throw new Error('The auth provider is already set. Please call clearAuthProvider() first.');\n }\n this._authProvider = authProvider;\n authProvider.queryClient = this;\n };\n this.clearAuthProvider = () => {\n this._authProvider?.cleanUp();\n this._authProvider = null;\n };\n this._store = new QueryStore({\n enableChangeLogging: _clientConfig.logging?.queryStateChanges,\n enableGarbageCollectorLogging: _clientConfig.logging?.queryStateGarbageCollector,\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2hCLEtBQUssR0FJTixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFPOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUUsTUFBTSxPQUFPLFdBQVc7SUFJdEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQW9CLGFBQWdDO1FBQWhDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQVY1QyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFpQmxELFFBQUcsR0FBRyxDQU1KLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUF5RDtZQUNqRSxHQUFHLFdBQVc7WUFDZCxNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUVMLFNBQUksR0FBRyxDQU1MLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUEwRDtZQUNsRSxHQUFHLFdBQVc7WUFDZCxNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVMLFFBQUcsR0FBRyxDQU1KLFdBQXNGLEVBQ3RGLEVBQUUsQ0FDRixJQUFJLENBQUMsS0FBSyxDQUF5RDtZQUNqRSxH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Q0FBQztZQUMzQixtQkFBbUIsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQjtZQUM3RCw2QkFBNkIsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLDBCQUEwQjtTQUNqRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBeUpGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIFF1ZXJ5LFxuICBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxufSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlIH0gZnJvbSAnLi4vcXVlcnktc3RvcmUnO1xuaW1wb3J0IHsgYnVpbGRSb3V0ZSwgTWV0aG9kIGFzIE1ldGhvZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyLFxuICBRdWVyeUNsaWVudENvbmZpZyxcbiAgUXVlcnlDcmVhdG9yLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSxcbn0gZnJvbSAnLi9xdWVyeS1jbGllbnQudHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRHcWxDYWNoZUtleSwgc2hvdWxkQ2FjaGVRdWVyeSB9IGZyb20gJy4vcXVlcnktY2xpZW50LnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcmU6IFF1ZXJ5U3RvcmU7XG4gIHByaXZhdGUgX2F1dGhQcm92aWRlcjogQXV0aFByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50Q29uZmlnO1xuICB9XG5cbiAgZ2V0IGF1dGhQcm92aWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFByb3ZpZGVyO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xpZW50Q29uZmlnOiBRdWVyeUNsaWVudENvbmZpZykge1xuICAgIHRoaXMuX3N0b3JlID0gbmV3IFF1ZXJ5U3RvcmUoe1xuICAgICAgZW5hYmxlQ2hhbmdlTG9nZ2luZzogX2NsaWVudENvbmZpZy5sb2dnaW5nPy5xdWVyeVN0YXRlQ2hhbmdlcyxcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nOiBfY2xpZW50Q29uZmlnLmxvZ2dpbmc/LnF1ZXJ5U3RhdGVHYXJiYWdlQ29sbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ0dFVCcsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KTtcblxuICBwb3N0ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ1BPU1QnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pO1xuXG4gIHB1dCA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiA9IERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyPFJlc3BvbnNlPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsICdQVVQnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgfSk7XG5cbiAgcGF0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnUEFUQ0gnLCBSZXNwb25zZVRyYW5zZm9ybWVyPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICB9KTtcblxuICBkZWxldGUgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnREVMRVRFJywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgIH0pO1xuXG4gIGdxbFF1ZXJ5ID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgJ0dRTF9RVUVSWScsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR1FMX1FVRVJZJyxcbiAgICB9KTtcblxuICBncWxNdXRhdGUgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IEdxbFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCAnR1FMX01VVEFURScsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR1FMX01VVEFURScsXG4gICAgfSk7XG5cbiAgZmV0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICAgIE1ldGhvZCBleHRlbmRzIE1ldGhvZFR5cGUsXG4gICAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiA9IERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyPFJlc3BvbnNlPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPlxuICAgICAgfCBHcWxRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICk6IFF1ZXJ5Q3JlYXRvcjxBcmd1bWVudHMsIE1ldGhvZCwgUmVzcG9uc2UsIFJvdXRlLCBSZXNwb25zZVRyYW5zZm9ybWVyPiA9PiB7XG4gICAgY29uc3QgcHJlcGFyZSA9IChhcmdzPzogQXJndW1lbnRzKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGJ1aWxkUm91dGUoe1xuICAgICAgICBiYXNlOiB0aGlzLl9jbGllbnRDb25maWcuYmFzZVJvdXRlLFxuICAgICAgICByb3V0ZTogcXVlcnlDb25maWcucm91dGUsXG4gICAgICAgIHBhdGhQYXJhbXM6IChhcmdzIGFzIEJhc2VBcmd1bWVudHMpPy5wYXRoUGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtczogKGFyZ3MgYXMgQmFzZUFyZ3VtZW50cyk/LnF1ZXJ5UGFyYW1zLFxuICAgICAgfSkgYXMgUm91dGU7XG5cbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gaXNHcWxRdWVyeUNvbmZpZyhxdWVyeUNvbmZpZykgPyBidWlsZEdxbENhY2hlS2V5KHF1ZXJ5Q29uZmlnLCBhcmdzKSA6IHJvdXRlO1xuXG4gICAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeShxdWVyeUNvbmZpZy5tZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUXVlcnkgPSB0aGlzLl9zdG9yZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgICAgIGlmIChleGlzdGluZ1F1ZXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nUXVlcnkgYXMgUXVlcnk8UmVzcG9uc2UsIEFyZ3VtZW50cywgUm91dGUsIE1ldGhvZCwgUmVzcG9uc2VUcmFuc2Zvcm1lcj47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnk8UmVzcG9uc2UsIEFyZ3VtZW50cywgUm91dGUsIE1ldGhvZCwgUmVzcG9uc2VUcmFuc2Zvcm1lcj4odGhpcywgcXVlcnlDb25maWcsIHJvdXRlLCBhcmdzKTtcblxuICAgICAgaWYgKHNob3VsZENhY2hlUXVlcnkocXVlcnlDb25maWcubWV0aG9kKSkge1xuICAgICAgICB0aGlzLl9zdG9yZS5hZGQoY2FjaGVLZXksIHF1ZXJ5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgIH07XG5cbiAgICBjb25zdCBiZWhhdmlvclN1YmplY3QgPSA8VCBleHRlbmRzIFJldHVyblR5cGU8dHlwZW9mIHByZXBhcmU+Pihpbml0aWFsVmFsdWU6IFQgfCBudWxsID0gbnVsbCkgPT5cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8VCB8IG51bGw+KGluaXRpYWxWYWx1ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJlcGFyZSxcbiAgICAgIGJlaGF2aW9yU3ViamVjdCxcbiAgICB9IGFzIHVua25vd24gYXMgUXVlcnlDcmVhdG9yPEFyZ3VtZW50cywgTWV0aG9kLCBSZXNwb25zZSwgUm91dGUsIFJlc3BvbnNlVHJhbnNmb3JtZXI+O1xuICB9O1xuXG4gIHNldEF1dGhQcm92aWRlciA9IChhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcikgPT4ge1xuICAgIGlmICh0aGlzLl9hdXRoUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGF1dGggcHJvdmlkZXIgaXMgYWxyZWFkeSBzZXQuIFBsZWFzZSBjYWxsIGNsZWFyQXV0aFByb3ZpZGVyKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyID0gYXV0aFByb3ZpZGVyO1xuICAgIGF1dGhQcm92aWRlci5xdWVyeUNsaWVudCA9IHRoaXM7XG4gIH07XG5cbiAgY2xlYXJBdXRoUHJvdmlkZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyPy5jbGVhblVwKCk7XG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyID0gbnVsbDtcbiAgfTtcbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { combineLatest, concat, debounceTime, distinctUntilChanged, map, startWith, take, tap } from 'rxjs';\nexport class QueryField {\n get control() {\n return this.data.control;\n }\n constructor(data) {\n this.data = data;\n this.changes$ = this._setupChangesObservable();\n this._currentDebounceTimeout = null;\n }\n setValue(value) {\n if (this._currentDebounceTimeout !== null) {\n clearTimeout(this._currentDebounceTimeout);\n }\n if (this.data.debounce) {\n this._currentDebounceTimeout = window.setTimeout(() => {\n this.control.setValue(value);\n }, this.data.debounce);\n }\n else {\n this.control.setValue(value);\n }\n }\n _setupChangesObservable() {\n const obs = this.control.valueChanges.pipe(startWith(this.control.value));\n if (!this.data.debounce) {\n return obs;\n }\n // The initial value should get emitted immediately\n // concat switches to the debounced observable after the first observable is completed\n return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(debounceTime(this.data.debounce)));\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class QueryForm {\n constructor(_fields) {\n this._fields = _fields;\n this._router = inject(Router, { optional: true });\n this._activatedRoute = inject(ActivatedRoute, { optional: true });\n this._defaultValues = this._extractDefaultValues();\n this.form = this._setupFormGroup();\n }\n observe(options) {\n return combineLatest(Object.values(this._fields).map((field) => field.changes$)).pipe(map(() => this.form.getRawValue()), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), tap((values) => {\n if (options?.syncViaUrlQueryParams !== false) {\n this._syncViaUrlQueryParams(values);\n }\n }));\n }\n setFormValueFromUrlQueryParams() {\n if (!this._activatedRoute) {\n throw new Error('Cannot set form value from url query params without ActivatedRoute');\n }\n const queryParams = this._activatedRoute.snapshot.queryParams;\n for (const [key, field] of Object.entries(this._fields)) {\n const value = queryParams[key];\n // We only check using == because the value types can be different (e.g. \"1\" and 1)\n if (value === undefined || value == field.control.value) {\n continue;\n }\n const deserializedValue = field.data.queryParamToValueTransformFn?.(value) ?? value;\n field.setValue(deserializedValue);\n }\n }\n updateFormOnUrlQueryParamsChange() {\n if (!this._activatedRoute) {\n throw new Error('Cannot update form on url query params change without ActivatedRoute');\n }\n return this._activatedRoute.queryParams.pipe(tap(() => this.setFormValueFromUrlQueryParams()));\n }\n _getDefaultValue(key) {\n return this._defaultValues[key] ?? null;\n }\n _isDefaultValue(key, value) {\n const normalizedValue = Array.isArray(value) ? JSON.stringify(value) : value;\n return this._getDefaultValue(key) === normalizedValue;\n }\n _setupFormGroup() {\n const group = new FormGroup({});\n for (const [key, field] of Object.entries(this._fields)) {\n group.addControl(key, field.control);\n }\n return group;\n }\n _extractDefaultValues() {\n const defaultValues = {};\n for (const [key, field] of Object.entries(this._fields)) {\n const value = field.control.value;\n if (value === null || value === undefined) {\n continue;\n }\n if (Array.isArray(value)) {\n defaultValues[key] = JSON.stringify(value);\n }\n else {\n defaultValues[key] = value;\n }\n }\n return defaultValues;\n }\n _syncViaUrlQueryParams(values) {\n if (!this._router || !this._activatedRoute) {\n return;\n }\n const queryParams = structuredClone(this._activatedRoute.snapshot.queryParams);\n for (const [key, value] of Object.entries(values)) {\n if (this._isDefaultValue(key, value) || this._fields[key].data.appendToUrl === false) {\n delete queryParams[key];\n }\n else {\n queryParams[key] = this._fields[key].data.valueToQueryParamTransformFn\n ? this._fields[key].data.valueToQueryParamTransformFn?.(value)\n : value;\n }\n }\n this._router.navigate([], {\n queryParams,\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hILE1BQU0sT0FBTyxVQUFVO0lBR3JCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUlELFlBQW1CLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBUjdDLGFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQU1sQyw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0lBRU4sQ0FBQztJQUVqRCxRQUFRLENBQUMsS0FBZTtRQUN0QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLEVBQUU7WUFDekMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFBRSxJQUFJLENB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QyxJQUFJLENBQUMsNEJBQTRCO29CQUNwRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQzlELENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDWDtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3hCLFdBQVc7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgY29uY2F0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRdWVyeUZpZWxkT3B0aW9ucywgUXVlcnlGb3JtR3JvdXAsIFF1ZXJ5Rm9ybVZhbHVlIH0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5RmllbGQ8VD4ge1xuICBjaGFuZ2VzJCA9IHRoaXMuX3NldHVwQ2hhbmdlc09ic2VydmFibGUoKTtcblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50RGVib3VuY2VUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YTogUXVlcnlGaWVsZE9wdGlvbnM8VD4pIHt9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLmRlYm91bmNlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSwgdGhpcy5kYXRhLmRlYm91bmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5kZWJvdW5jZSkge1xuICAgICAgcmV0dXJuIG9icztcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBzaG91bGQgZ2V0IGVtaXR0ZWQgaW1tZWRpYXRlbHlcbiAgICAvLyBjb25jYXQgc3dpdGNoZXMgdG8gdGhlIGRlYm91bmNlZCBvYnNlcnZhYmxlIGFmdGVyIHRoZSBmaXJzdCBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZFxuICAgIHJldHVybiBjb25jYXQob2JzLnBpcGUodGFrZSgxKSksIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kYXRhLmRlYm91bmNlKSkpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgX3JvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWVzID0gdGhpcy5fZXh0cmFjdERlZmF1bHRWYWx1ZXMoKTtcblxuICBmb3JtID0gdGhpcy5fc2V0dXBGb3JtR3JvdXAoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWVsZHM6IFQpIHt9XG5cbiAgb2JzZXJ2ZShvcHRpb25zPzogeyBzeW5jVmlhVXJsUXVlcnlQYXJhbXM/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkcykubWFwKChmaWVsZCkgPT4gZmllbGQuY2hhbmdlcyQpKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgdGFwKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnN5bmNWaWFVcmxRdWVyeVBhcmFtcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLl9zeW5jVmlhVXJsUXVlcnlQYXJhbXModmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgfSksXG5cbiAgICAgIC8vIFRoaXMgdHlwZSBjYXN0IGlzIG5lZWRlZCBzaW5jZSBuZy1wYWNrYWdyIHdpbGwgYnJlYWsgdGhlIHR5cGUgaW5mZXJlbmNlIG90aGVyd2lzZS5cbiAgICApIGFzIE9ic2VydmFibGU8UXVlcnlGb3JtVmFsdWU8VD4+O1xuICB9XG5cbiAgc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNldCBmb3JtIHZhbHVlIGZyb20gdXJsIHF1ZXJ5IHBhcmFtcyB3aXRob3V0IEFjdGl2YXRlZFJvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlQYXJhbXNba2V5XTtcblxuICAgICAgLy8gV2Ugb25seSBjaGVjayB1c2luZyA9PSBiZWNhdXNlIHRoZSB2YWx1ZSB0eXBlcyBjYW4gYmUgZGlmZmVyZW50IChlLmcuIFwiMVwiIGFuZCAxKVxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gZmllbGQuY29udHJvbC52YWx1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/Lih2YWx1ZSkgPz8gdmFsdWU7XG5cbiAgICAgIGZpZWxkLnNldFZhbHVlKGRlc2VyaWFsaXplZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtT25VcmxRdWVyeVBhcmFtc0NoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgZm9ybSBvbiB1cmwgcXVlcnkgcGFyYW1zIGNoYW5nZSB3aXRob3V0IEFjdGl2YXRlZFJvdXRlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFwKCgpID0+IHRoaXMuc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWVzW2tleV0gPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGVmYXVsdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRm9ybUdyb3VwKCkge1xuICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSBhcyBRdWVyeUZvcm1Hcm91cDxUPik7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBncm91cC5hZGRDb250cm9sKGtleSwgZmllbGQuY29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXh0cmFjdERlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGQuY29udHJvbC52YWx1ZTtcblxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyh2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgaWYgKCF0aGlzLl9yb3V0ZXIgfHwgIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWVzKSkge1xuICAgICAgaWYgKHRoaXMuX2lzRGVmYXVsdFZhbHVlKGtleSwgdmFsdWUpIHx8IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEuYXBwZW5kVG9VcmwgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1trZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEudmFsdWVUb1F1ZXJ5UGFyYW1UcmFuc2Zvcm1GblxuICAgICAgICAgID8gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPy4odmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","export const transformToString = (value) => {\n if (typeof value === 'string') {\n return value;\n }\n return null;\n};\nexport const transformToStringArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToString).filter(Boolean);\n }\n else if (typeof value === 'string') {\n return [transformToString(value)];\n }\n return null;\n};\nexport const transformToNumber = (value) => {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n return null;\n};\nexport const transformToNumberArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToNumber).filter((item) => item !== null);\n }\n else if (typeof value === 'number') {\n return [value];\n }\n return null;\n};\nexport const transformToBoolean = (value) => {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value === 'true' || value === '1';\n }\n return null;\n};\nexport const transformToBooleanArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToBoolean).filter((item) => item !== null);\n }\n else if (typeof value === 'string' || typeof value === 'boolean') {\n return [transformToBoolean(value)];\n }\n return null;\n};\nexport const transformToDate = (value) => {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'string') {\n const date = new Date(value);\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n }\n return null;\n};\nexport const transformToDateArray = (value) => {\n if (Array.isArray(value)) {\n return value.map(transformToDate).filter((item) => item !== null);\n }\n else if (typeof value === 'string' || value instanceof Date) {\n return [transformToDate(value)];\n }\n return null;\n};\nexport const transformToSort = (value) => {\n if (typeof value === 'string') {\n const [active, direction] = value.split(':');\n return {\n active,\n direction: direction,\n };\n }\n return null;\n};\nexport const transformToSortQueryParam = (value) => {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object' && 'active' in value && 'direction' in value) {\n const valAsSort = value;\n return valAsSort.direction ? `${valAsSort.active}:${valAsSort.direction}` : null;\n }\n return null;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3ZELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUM7S0FDakU7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUNwQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQWEsQ0FBQztLQUMvQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDdkQsSUFB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RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQzFELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLEtBQUssSUFBSSxXQUFXLElBQUksS0FBSyxFQUFFO1FBQ25GLE1BQU0sU0FBUyxHQUFHLEtBR2pCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztLQUNsRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9TdHJpbmdBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvU3RyaW5nKS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBbdHJhbnNmb3JtVG9TdHJpbmcodmFsdWUpXSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvTnVtYmVyID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9OdW1iZXJBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvTnVtYmVyKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwpIGFzIG51bWJlcltdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW3ZhbHVlXSBhcyBudW1iZXJbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvQm9vbGVhbiA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvQm9vbGVhbkFycmF5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAodHJhbnNmb3JtVG9Cb29sZWFuKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwpIGFzIGJvb2xlYW5bXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIFt0cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWUpXSBhcyBib29sZWFuW107XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub0RhdGUgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub0RhdGVBcnJheSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKHRyYW5zZm9ybVRvRGF0ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBudWxsKSBhcyBEYXRlW107XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gW3RyYW5zZm9ybVRvRGF0ZSh2YWx1ZSldIGFzIERhdGVbXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvU29ydCA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IFthY3RpdmUsIGRpcmVjdGlvbl0gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzICdhc2MnIHwgJ2Rlc2MnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub1NvcnRRdWVyeVBhcmFtID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdhY3RpdmUnIGluIHZhbHVlICYmICdkaXJlY3Rpb24nIGluIHZhbHVlKSB7XG4gICAgY29uc3QgdmFsQXNTb3J0ID0gdmFsdWUgYXMge1xuICAgICAgYWN0aXZlOiBzdHJpbmc7XG4gICAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICAgIH07XG5cbiAgICByZXR1cm4gdmFsQXNTb3J0LmRpcmVjdGlvbiA/IGAke3ZhbEFzU29ydC5hY3RpdmV9OiR7dmFsQXNTb3J0LmRpcmVjdGlvbn1gIDogbnVsbDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbiJdfQ==","export const deepFreeze = (object) => {\n // check if object is actually an object or frozen\n if (!object || typeof object !== 'object' || Object.isFrozen(object)) {\n return object;\n }\n // Retrieve the property names defined on object\n const propNames = Object.getOwnPropertyNames(object);\n // Freeze properties before freezing self\n for (const name of propNames) {\n const value = object[name];\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mcmVlemUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kZWVwLWZyZWV6ZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFvQyxNQUFTLEVBQUUsRUFBRTtJQUN6RSxrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwRSxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRCx5Q0FBeUM7SUFFekMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUU7UUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0QyxVQUFVLENBQUMsS0FBVSxDQUFDLENBQUM7U0FDeEI7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZGVlcEZyZWV6ZSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9iamVjdDogVCkgPT4ge1xuICAvLyBjaGVjayBpZiBvYmplY3QgaXMgYWN0dWFsbHkgYW4gb2JqZWN0IG9yIGZyb3plblxuICBpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCBPYmplY3QuaXNGcm96ZW4ob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICAvLyBSZXRyaWV2ZSB0aGUgcHJvcGVydHkgbmFtZXMgZGVmaW5lZCBvbiBvYmplY3RcbiAgY29uc3QgcHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTtcblxuICAvLyBGcmVlemUgcHJvcGVydGllcyBiZWZvcmUgZnJlZXppbmcgc2VsZlxuXG4gIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBkZWVwRnJlZXplKHZhbHVlIGFzIFQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKG9iamVjdCk7XG59O1xuIl19","/**\n * Dummy function for providing types while not breaking inference.\n * **This function always returns null.**\n * @see https://github.com/microsoft/TypeScript/issues/26242\n * @returns null\n */\nexport const def = () => null;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvdXRpbHMvZGVmLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBUyxFQUFFLENBQUMsSUFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRHVtbXkgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyB0eXBlcyB3aGlsZSBub3QgYnJlYWtpbmcgaW5mZXJlbmNlLlxuICogKipUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIG51bGwuKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yNjI0MlxuICogQHJldHVybnMgbnVsbFxuICovXG5leHBvcnQgY29uc3QgZGVmID0gPERhdGE+KCkgPT4gbnVsbCBhcyB1bmtub3duIGFzIERhdGE7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRobGV0ZS1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2V0aGxldGUtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|