@eui/core 18.0.0-rc.32 → 18.0.0-rc.33

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.
@@ -1,21 +1,31 @@
1
+ import { inject, PLATFORM_ID } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
1
3
  import { CoreAppActionTypes } from '../actions/app.actions';
2
4
  import * as extendProxy from 'extend';
3
5
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
4
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
7
  const extend = extendProxy.default || extendProxy;
6
- /**
7
- * Utility meta-reducer to load the state from the local storage
8
- * @param reducer the action reducer
9
- */
10
- export function localStorageSync(reducer) {
11
- return cb(reducer, localStorage);
8
+ export function localStorageSync(reducer, platformId) {
9
+ if (platformId) {
10
+ return (reducer) => {
11
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
12
+ };
13
+ }
14
+ else {
15
+ const platformId = inject(PLATFORM_ID, { optional: true });
16
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
17
+ }
12
18
  }
13
- /**
14
- * Utility meta-reducer to load the state from the session storage
15
- * @param reducer the action reducer
16
- */
17
- export function sessionStorageSync(reducer) {
18
- return cb(reducer, sessionStorage);
19
+ export function sessionStorageSync(reducer, platformId) {
20
+ if (platformId) {
21
+ return (reducer) => {
22
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
23
+ };
24
+ }
25
+ else {
26
+ const platformId = inject(PLATFORM_ID, { optional: true });
27
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
28
+ }
19
29
  }
20
30
  // Keys that are allowed to be synced with NgRx state from BrowserStorage
21
31
  const disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];
@@ -42,6 +52,9 @@ const filterAppState = (app) => {
42
52
  * @param storage Type of storage to load the state from
43
53
  */
44
54
  export const loadState = (storage = localStorage) => {
55
+ if (!storage) {
56
+ return undefined;
57
+ }
45
58
  try {
46
59
  // by default falls back to localStorage
47
60
  const serializedState = storage.getItem('state');
@@ -64,28 +77,29 @@ const cb = (reducer, storage) => (state, action) => {
64
77
  // We load the state from a storage and compare the version and userId with the provided ones.
65
78
  // If they are the same, we merge the local state into the initial state.
66
79
  // If there is a mismatch, we don't merge the local state, but update only the initial state.
67
- // load the state from the localStorage
68
- const localState = loadState(storage);
69
- // extract the details about user and app version from the action payload
70
- const payload = action.payload;
71
- const payloadVersion = payload?.version;
72
- if (localState) {
73
- // TODO: Why all these checks here? What is the purpose of this code?
74
- // extract the details about user and app version from the storage state
75
- const localVersion = localState?.app?.version;
76
- // const localUserId = localState.user && localState.user.userId;
77
- const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
78
- // const isUserIdOK = (localUserId === payloadUserId);
79
- // update the entire state with deep merge of states, if the version and user are the same
80
- if (isVersionOK) {
81
- state = extend(true, {}, state, localState);
80
+ if (storage) {
81
+ // load the state from the localStorage
82
+ const localState = loadState(storage);
83
+ // extract the details about user and app version from the action payload
84
+ const payloadVersion = action.payload?.version;
85
+ if (localState) {
86
+ // TODO: Why all these checks here? What is the purpose of this code?
87
+ // extract the details about user and app version from the storage state
88
+ const localVersion = localState?.app?.version;
89
+ // const localUserId = localState.user && localState.user.userId;
90
+ const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
91
+ // const isUserIdOK = (localUserId === payloadUserId);
92
+ // update the entire state with deep merge of states, if the version and user are the same
93
+ if (isVersionOK) {
94
+ state = extend(true, {}, state, localState);
95
+ }
96
+ }
97
+ // update the app version, if defined
98
+ if (payloadVersion) {
99
+ state = { ...state, app: { ...state?.app, version: payloadVersion } };
82
100
  }
83
- }
84
- // update the app version, if defined
85
- if (payloadVersion) {
86
- state = { ...state, app: { ...state?.app, version: payloadVersion } };
87
101
  }
88
102
  }
89
103
  return reducer(state, action);
90
104
  };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQUV6RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCO0lBQzNFLE9BQU8sRUFBRSxDQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QjtJQUM3RSxPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSxNQUFNLGNBQWMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRWpHOzs7R0FHRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBYSxFQUFZLEVBQUU7SUFDL0MsaUVBQWlFO0lBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNaLG1EQUFtRDtTQUNsRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxzREFBc0Q7U0FDckQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ2IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFzQixVQUFtQixZQUFZLEVBQUssRUFBRTtJQUNqRixJQUFJLENBQUM7UUFDRCx3Q0FBd0M7UUFDeEMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsOEJBQThCO1FBQzlCLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFdEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDWCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxFQUFFLEdBQ0osQ0FBc0IsT0FBeUIsRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FDckUsQ0FBQyxLQUFRLEVBQUUsTUFBYyxFQUFLLEVBQUU7SUFDNUIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hELHlEQUF5RDtRQUN6RCw4RkFBOEY7UUFDOUYseUVBQXlFO1FBQ3pFLDZGQUE2RjtRQUU3Rix1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQU0sU0FBUyxDQUFJLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLHlFQUF5RTtRQUN6RSxNQUFNLE9BQU8sR0FBSSxNQUEwQixDQUFDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBRXhDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixxRUFBcUU7WUFDckUsd0VBQXdFO1lBQ3hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDO1lBQzlDLGlFQUFpRTtZQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO1lBQ3hGLHNEQUFzRDtZQUV0RCwwRkFBMEY7WUFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQzFFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBsb2NhbFN0b3JhZ2UpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBzZXNzaW9uU3RvcmFnZSk7XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlID0gbG9jYWxTdG9yYWdlKTogUyA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYnkgZGVmYXVsdCBmYWxscyBiYWNrIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBzdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJyk7XG5cbiAgICAgICAgaWYgKHNlcmlhbGl6ZWRTdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc2VyaWFsaXplIHN0YXRlXG4gICAgICAgIGxldCBzdGF0ZTogUyA9IEpTT04ucGFyc2Uoc2VyaWFsaXplZFN0YXRlKTtcblxuICAgICAgICAvLyBmaWx0ZXIgQXBwU3RhdGUgYW5kIHJlcGxhY2VcbiAgICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCBhcHA6IGZpbHRlckFwcFN0YXRlKHN0YXRlPy5hcHApIH07XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbmNvbnN0IGNiID1cbiAgICA8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPiwgc3RvcmFnZTogU3RvcmFnZSkgPT5cbiAgICAoc3RhdGU6IFMsIGFjdGlvbjogQWN0aW9uKTogUyA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQ29yZUFwcEFjdGlvblR5cGVzLklOSVRfU1RPUkUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgYWN0aW9uIG11c3QgYmUgZGlzcGF0Y2hlZCBmcm9tIGFuIGFwcCBpbml0aWFsaXplclxuICAgICAgICAgICAgLy8gV2UgbG9hZCB0aGUgc3RhdGUgZnJvbSBhIHN0b3JhZ2UgYW5kIGNvbXBhcmUgdGhlIHZlcnNpb24gYW5kIHVzZXJJZCB3aXRoIHRoZSBwcm92aWRlZCBvbmVzLlxuICAgICAgICAgICAgLy8gSWYgdGhleSBhcmUgdGhlIHNhbWUsIHdlIG1lcmdlIHRoZSBsb2NhbCBzdGF0ZSBpbnRvIHRoZSBpbml0aWFsIHN0YXRlLlxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaXNtYXRjaCwgd2UgZG9uJ3QgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlLCBidXQgdXBkYXRlIG9ubHkgdGhlIGluaXRpYWwgc3RhdGUuXG5cbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZTogUyA9IGxvYWRTdGF0ZTxTPihzdG9yYWdlKTtcblxuICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IChhY3Rpb24gYXMgSW5pdFN0b3JlQWN0aW9uKS5wYXlsb2FkO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZFZlcnNpb24gPSBwYXlsb2FkPy52ZXJzaW9uO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoeSBhbGwgdGhlc2UgY2hlY2tzIGhlcmU/IFdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlP1xuICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhlIGRldGFpbHMgYWJvdXQgdXNlciBhbmQgYXBwIHZlcnNpb24gZnJvbSB0aGUgc3RvcmFnZSBzdGF0ZVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBsb2NhbFVzZXJJZCA9IGxvY2FsU3RhdGUudXNlciAmJiBsb2NhbFN0YXRlLnVzZXIudXNlcklkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNWZXJzaW9uT0sgPSAhbG9jYWxWZXJzaW9uIHx8ICFwYXlsb2FkVmVyc2lvbiB8fCBsb2NhbFZlcnNpb24gPT09IHBheWxvYWRWZXJzaW9uO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBlbnRpcmUgc3RhdGUgd2l0aCBkZWVwIG1lcmdlIG9mIHN0YXRlcywgaWYgdGhlIHZlcnNpb24gYW5kIHVzZXIgYXJlIHRoZSBzYW1lXG4gICAgICAgICAgICAgICAgaWYgKGlzVmVyc2lvbk9LKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICBpZiAocGF5bG9hZFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGFwcDogeyAuLi5zdGF0ZT8uYXBwLCB2ZXJzaW9uOiBwYXlsb2FkVmVyc2lvbiB9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQVl6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCLEVBQUUsVUFBb0I7SUFDakcsSUFBRyxVQUFVLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBc0IsT0FBeUIsRUFBbUMsRUFBRTtZQUN2RixPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxFQUFFLENBQUksT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7QUFDTCxDQUFDO0FBWUQsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QixFQUFFLFVBQW9C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QU0sY0FBYyxHQUFJLE1BQTBCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUVwRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLHFFQUFxRTtnQkFDckUsd0VBQXdFO2dCQUN4RSxNQUFNLFlBQVksR0FBRyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztnQkFDOUMsaUVBQWlFO2dCQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO2dCQUN4RixzREFBc0Q7Z0JBRXRELDBGQUEwRjtnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUVELHFDQUFxQztZQUNyQyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHBsYXRmb3JtSWQ6IHVua25vd24pOiAoKHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4pID0+IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMpO1xuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlU3luYzxTIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFM+LCBwbGF0Zm9ybUlkPzogdW5rbm93bik6IEZ1bmN0aW9uIHtcbiAgICBpZihwbGF0Zm9ybUlkKSB7XG4gICAgICAgIHJldHVybiA8VCBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxUPik6IChzdGF0ZTogVCwgYWN0aW9uOiBBY3Rpb24pID0+IFQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNiPFQ+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lELCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gY2I8Uz4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBsb2NhbFN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBtZXRhLXJlZHVjZXIgdG8gbG9hZCB0aGUgc3RhdGUgZnJvbSB0aGUgc2Vzc2lvbiBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocGxhdGZvcm1JZDogdW5rbm93bik6ICgocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPikgPT4gKHN0YXRlOiBTLCBhY3Rpb246IEFjdGlvbikgPT4gUyk7XG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gc2Vzc2lvblN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHBsYXRmb3JtSWQ/OiB1bmtub3duKTogRnVuY3Rpb24ge1xuICAgIGlmKHBsYXRmb3JtSWQpIHtcbiAgICAgICAgcmV0dXJuIDxUIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFQ+KTogKHN0YXRlOiBULCBhY3Rpb246IEFjdGlvbikgPT4gVCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2I8VD4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBzZXNzaW9uU3RvcmFnZSA6IG51bGwpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIGNiPFM+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGxvY2FsU3RvcmFnZSk6IFMgPT4ge1xuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgZmFsbHMgYmFjayB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlID0gc3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpO1xuXG4gICAgICAgIGlmIChzZXJpYWxpemVkU3RhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXNlcmlhbGl6ZSBzdGF0ZVxuICAgICAgICBsZXQgc3RhdGU6IFMgPSBKU09OLnBhcnNlKHNlcmlhbGl6ZWRTdGF0ZSk7XG5cbiAgICAgICAgLy8gZmlsdGVyIEFwcFN0YXRlIGFuZCByZXBsYWNlXG4gICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiBmaWx0ZXJBcHBTdGF0ZShzdGF0ZT8uYXBwKSB9O1xuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59O1xuXG5jb25zdCBjYiA9XG4gICAgPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsKSA9PlxuICAgIChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pOiBTID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb3JlQXBwQWN0aW9uVHlwZXMuSU5JVF9TVE9SRSkge1xuICAgICAgICAgICAgLy8gVGhpcyBhY3Rpb24gbXVzdCBiZSBkaXNwYXRjaGVkIGZyb20gYW4gYXBwIGluaXRpYWxpemVyXG4gICAgICAgICAgICAvLyBXZSBsb2FkIHRoZSBzdGF0ZSBmcm9tIGEgc3RvcmFnZSBhbmQgY29tcGFyZSB0aGUgdmVyc2lvbiBhbmQgdXNlcklkIHdpdGggdGhlIHByb3ZpZGVkIG9uZXMuXG4gICAgICAgICAgICAvLyBJZiB0aGV5IGFyZSB0aGUgc2FtZSwgd2UgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlIGludG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pc21hdGNoLCB3ZSBkb24ndCBtZXJnZSB0aGUgbG9jYWwgc3RhdGUsIGJ1dCB1cGRhdGUgb25seSB0aGUgaW5pdGlhbCBzdGF0ZS5cblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFN0YXRlOiBTID0gbG9hZFN0YXRlPFM+KHN0b3JhZ2UpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWRWZXJzaW9uID0gKGFjdGlvbiBhcyBJbml0U3RvcmVBY3Rpb24pLnBheWxvYWQ/LnZlcnNpb247XG5cbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBXaHkgYWxsIHRoZXNlIGNoZWNrcyBoZXJlPyBXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZT9cbiAgICAgICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBzdG9yYWdlIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgbG9jYWxVc2VySWQgPSBsb2NhbFN0YXRlLnVzZXIgJiYgbG9jYWxTdGF0ZS51c2VyLnVzZXJJZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZlcnNpb25PSyA9ICFsb2NhbFZlcnNpb24gfHwgIXBheWxvYWRWZXJzaW9uIHx8IGxvY2FsVmVyc2lvbiA9PT0gcGF5bG9hZFZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgZW50aXJlIHN0YXRlIHdpdGggZGVlcCBtZXJnZSBvZiBzdGF0ZXMsIGlmIHRoZSB2ZXJzaW9uIGFuZCB1c2VyIGFyZSB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWZXJzaW9uT0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWRWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiB7IC4uLnN0YXRlPy5hcHAsIHZlcnNpb246IHBheWxvYWRWZXJzaW9uIH0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19
@@ -1,4 +1,5 @@
1
- import { Injectable, Optional } from '@angular/core';
1
+ import { Injectable, Optional, Inject, PLATFORM_ID } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
2
3
  import { throwError } from 'rxjs';
3
4
  import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
5
  import { InitStoreAction } from './actions';
@@ -14,23 +15,27 @@ export var BrowserStorageType;
14
15
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
15
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
17
  export class StoreService {
17
- constructor(store, logService) {
18
+ constructor(store, logService, platformId) {
18
19
  this.store = store;
19
20
  this.logService = logService;
21
+ this.platformId = platformId;
20
22
  /**
21
23
  * autoSave handlers to call before saving in local Storage
22
24
  */
23
25
  this._autoSaveHandlers = {};
24
- /** storage instance e.g. localStorage, sessionStorage */
25
- this._storage = localStorage;
26
+ if (isPlatformBrowser(this.platformId)) {
27
+ this._storage = localStorage;
28
+ }
26
29
  }
27
30
  // use init with just version info, to update to user state, UserService.updateState
28
31
  // initializeStore(version?: string, userDetails?: BaseUserDetails) {
29
32
  // this.dispatch(new InitStoreAction({ version, userDetails }));
30
33
  // }
31
34
  init(version, storageType) {
32
- this.dispatch(new InitStoreAction({ version }));
33
- this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
35
+ if (isPlatformBrowser(this.platformId)) {
36
+ this.dispatch(new InitStoreAction({ version }));
37
+ this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
38
+ }
34
39
  }
35
40
  addAutoSaveHandler(stateSlice, handler) {
36
41
  if (!this.store) {
@@ -98,13 +103,13 @@ export class StoreService {
98
103
  });
99
104
  try {
100
105
  const serializedState = JSON.stringify(stateToSave);
101
- this._storage.setItem('state', serializedState);
106
+ this._storage?.setItem('state', serializedState);
102
107
  }
103
108
  catch (err) {
104
109
  // Ignore write errors.
105
110
  }
106
111
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, deps: [{ token: i1.Store, optional: true }, { token: i2.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, deps: [{ token: i1.Store, optional: true }, { token: i2.LogService, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
108
113
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, providedIn: 'root' }); }
109
114
  }
110
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, decorators: [{
@@ -116,5 +121,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
116
121
  type: Optional
117
122
  }] }, { type: i2.LogService, decorators: [{
118
123
  type: Optional
124
+ }] }, { type: undefined, decorators: [{
125
+ type: Inject,
126
+ args: [PLATFORM_ID]
119
127
  }] }] });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0FBRzVDLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDMUIsNkRBQUssQ0FBQTtJQUNMLGlFQUFPLENBQUE7QUFDWCxDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUVELGdGQUFnRjtBQUloRixtSEFBbUg7QUFDbkgsOERBQThEO0FBQzlELE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQzBCLEtBQWUsRUFDZixVQUFzQjtRQUR0QixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRoRDs7V0FFRztRQUNPLHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFDOUQseURBQXlEO1FBQ2pELGFBQVEsR0FBWSxZQUFZLENBQUM7SUFLdEMsQ0FBQztJQUVKLG9GQUFvRjtJQUNwRixxRUFBcUU7SUFDckUsb0VBQW9FO0lBQ3BFLElBQUk7SUFDSixJQUFJLENBQUMsT0FBZ0IsRUFBRSxXQUFnQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxLQUFLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENB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SUFBSSxDQUFDO1lBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDWCx1QkFBdUI7UUFDM0IsQ0FBQztJQUNMLENBQUM7OEdBdEdRLFlBQVk7a0hBQVosWUFBWSxjQUpULE1BQU07OzJGQUlULFlBQVk7a0JBTHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFZUSxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEluaXRTdG9yZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBDb3JlU3RhdGUgfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5leHBvcnQgZW51bSBCcm93c2VyU3RvcmFnZVR5cGUge1xuICAgIGxvY2FsLFxuICAgIHNlc3Npb24sXG59XG5cbi8vIHRvZG8gc2hvdWxkIHN0YXkgaGVyZSBidXQgYWxsIHRoZSBzdG9yZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIG1vdmVkIHVwcGVyIGxldmVsXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgU3RvcmVTZXJ2aWNlPFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBhdXRvU2F2ZSBoYW5kbGVycyB0byBjYWxsIGJlZm9yZSBzYXZpbmcgaW4gbG9jYWwgU3RvcmFnZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfYXV0b1NhdmVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9ID0ge307XG4gICAgLyoqIHN0b3JhZ2UgaW5zdGFuY2UgZS5nLiBsb2NhbFN0b3JhZ2UsIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBfc3RvcmFnZTogU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPFQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSxcbiAgICApIHt9XG5cbiAgICAvLyB1c2UgaW5pdCB3aXRoIGp1c3QgdmVyc2lvbiBpbmZvLCB0byB1cGRhdGUgdG8gdXNlciBzdGF0ZSwgVXNlclNlcnZpY2UudXBkYXRlU3RhdGVcbiAgICAvLyBpbml0aWFsaXplU3RvcmUodmVyc2lvbj86IHN0cmluZywgdXNlckRldGFpbHM/OiBCYXNlVXNlckRldGFpbHMpIHtcbiAgICAvLyAgICAgdGhpcy5kaXNwYXRjaChuZXcgSW5pdFN0b3JlQWN0aW9uKHsgdmVyc2lvbiwgdXNlckRldGFpbHMgfSkpO1xuICAgIC8vIH1cbiAgICBpbml0KHZlcnNpb24/OiBzdHJpbmcsIHN0b3JhZ2VUeXBlPzogQnJvd3NlclN0b3JhZ2VUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2gobmV3IEluaXRTdG9yZUFjdGlvbih7IHZlcnNpb24gfSkpO1xuXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBzdG9yYWdlVHlwZSA9PT0gQnJvd3NlclN0b3JhZ2VUeXBlLnNlc3Npb24gPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcbiAgICB9XG5cbiAgICBhZGRBdXRvU2F2ZUhhbmRsZXIoc3RhdGVTbGljZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ1NlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybignU3RvcmVTZXJ2aWNlLmFkZEF1dG9TYXZlSGFuZGxlcigpIG5vdCBhdmFpbGFibGUgd2l0aG91dCBOR1JYJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXV0b1NhdmVIYW5kbGVyc1tzdGF0ZVNsaWNlXSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaGFuZGxlQXV0b1NhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm94eSB0byBOR1JYIHN0b3JlLmRpc3BhdGNoKClcbiAgICAgKiB0aGF0IGFsbG93cyB0byBpbnRlcmNlcHQgaWYgdGhlIHN0b3JlIGlzIHByZXNlbnRcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBkaXNwYXRjaChhY3Rpb246IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGRpc3BhdGNoQWN0aW9uKHN0YXRlOiBULCBhY3Rpb25LZXk6IHN0cmluZywgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxhbnksIEFjdGlvbj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuYWRkUmVkdWNlcihhY3Rpb25LZXksIHJlZHVjZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBhY3Rpb25LZXksIHBheWxvYWQ6IHN0YXRlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJveHkgdG8gTkdSWCBzdG9yZS5zZWxlY3QoKVxuICAgICAqIHRoYXQgYWxsb3dzIHRvIGludGVyY2VwdCBpZiB0aGUgc3RvcmUgaXMgcHJlc2VudFxuICAgICAqL1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHNlbGVjdChrZXk6IGFueSk6IE9ic2VydmFibGU8VFthbnldPiB7XG4gICAgICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdOR1JYIFN0b3JlIG5vdCBjb25maWd1cmVkJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlcnMgYW5kIHNhdmUgdGhlIHN0YXRlIHdpdGggdGhlIEJyb3dzZXIgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBzdGF0ZSB0eXBlIG9mIENvcmVTdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzYXZlU3RhdGUoc3RhdGU6IENvcmVTdGF0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgc3RhdGVUb1NhdmU6IENvcmVTdGF0ZSA9IHtcbiAgICAgICAgICAgIGFwcDogc3RhdGUuYXBwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGF0ZS51c2VyKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXJJZCwgcHJlZmVyZW5jZXMgfSA9IHN0YXRlLnVzZXI7XG4gICAgICAgICAgICBzdGF0ZVRvU2F2ZS51c2VyID0geyB1c2VySWQsIHByZWZlcmVuY2VzIH07XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzKS5mb3JFYWNoKChzbGljZVN0YXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzW3NsaWNlU3RhdGVdO1xuICAgICAgICAgICAgc3RhdGVUb1NhdmUgPSBPYmplY3QuYXNzaWduKHN0YXRlVG9TYXZlLCB7IFtzbGljZVN0YXRlXTogaGFuZGxlcihzdGF0ZVtzbGljZVN0YXRlXSkgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBKU09OLnN0cmluZ2lmeShzdGF0ZVRvU2F2ZSk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc2VyaWFsaXplZFN0YXRlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgd3JpdGUgZXJyb3JzLlxuICAgICAgICB9XG4gICAgfVxufVxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFHNUMsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQiw2REFBSyxDQUFBO0lBQ0wsaUVBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBRzdCO0FBRUQsZ0ZBQWdGO0FBSWhGLG1IQUFtSDtBQUNuSCw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLFlBQVk7SUFRckIsWUFDMEIsS0FBZSxFQUNmLFVBQXNCLEVBQ2YsVUFBbUI7UUFGMUIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFTO1FBVnBEOztXQUVHO1FBQ08sc0JBQWlCLEdBQWdDLEVBQUUsQ0FBQztRQVMxRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLHFFQUFxRTtJQUNyRSxvRUFBb0U7SUFDcEUsSUFBSTtJQUNKLElB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QUMsVUFBa0IsRUFBRSxFQUFFO1lBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNYLHVCQUF1QjtRQUMzQixDQUFDO0lBQ0wsQ0FBQzs4R0E3R1EsWUFBWSxpR0FXVCxXQUFXO2tIQVhkLFlBQVksY0FKVCxNQUFNOzsyRkFJVCxZQUFZO2tCQUx4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBWVEsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEluaXRTdG9yZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBDb3JlU3RhdGUgfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5leHBvcnQgZW51bSBCcm93c2VyU3RvcmFnZVR5cGUge1xuICAgIGxvY2FsLFxuICAgIHNlc3Npb24sXG59XG5cbi8vIHRvZG8gc2hvdWxkIHN0YXkgaGVyZSBidXQgYWxsIHRoZSBzdG9yZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIG1vdmVkIHVwcGVyIGxldmVsXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgU3RvcmVTZXJ2aWNlPFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBhdXRvU2F2ZSBoYW5kbGVycyB0byBjYWxsIGJlZm9yZSBzYXZpbmcgaW4gbG9jYWwgU3RvcmFnZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfYXV0b1NhdmVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9ID0ge307XG4gICAgLyoqIHN0b3JhZ2UgaW5zdGFuY2UgZS5nLiBsb2NhbFN0b3JhZ2UsIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBfc3RvcmFnZTogU3RvcmFnZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPFQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiB1bmtub3duLFxuICAgICkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVzZSBpbml0IHdpdGgganVzdCB2ZXJzaW9uIGluZm8sIHRvIHVwZGF0ZSB0byB1c2VyIHN0YXRlLCBVc2VyU2VydmljZS51cGRhdGVTdGF0ZVxuICAgIC8vIGluaXRpYWxpemVTdG9yZSh2ZXJzaW9uPzogc3RyaW5nLCB1c2VyRGV0YWlscz86IEJhc2VVc2VyRGV0YWlscykge1xuICAgIC8vICAgICB0aGlzLmRpc3BhdGNoKG5ldyBJbml0U3RvcmVBY3Rpb24oeyB2ZXJzaW9uLCB1c2VyRGV0YWlscyB9KSk7XG4gICAgLy8gfVxuICAgIGluaXQodmVyc2lvbj86IHN0cmluZywgc3RvcmFnZVR5cGU/OiBCcm93c2VyU3RvcmFnZVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobmV3IEluaXRTdG9yZUFjdGlvbih7IHZlcnNpb24gfSkpO1xuXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlID0gc3RvcmFnZVR5cGUgPT09IEJyb3dzZXJTdG9yYWdlVHlwZS5zZXNzaW9uID8gc2Vzc2lvblN0b3JhZ2UgOiBsb2NhbFN0b3JhZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRBdXRvU2F2ZUhhbmRsZXIoc3RhdGVTbGljZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ1NlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybignU3RvcmVTZXJ2aWNlLmFkZEF1dG9TYXZlSGFuZGxlcigpIG5vdCBhdmFpbGFibGUgd2l0aG91dCBOR1JYJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXV0b1NhdmVIYW5kbGVyc1tzdGF0ZVNsaWNlXSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaGFuZGxlQXV0b1NhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm94eSB0byBOR1JYIHN0b3JlLmRpc3BhdGNoKClcbiAgICAgKiB0aGF0IGFsbG93cyB0byBpbnRlcmNlcHQgaWYgdGhlIHN0b3JlIGlzIHByZXNlbnRcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBkaXNwYXRjaChhY3Rpb246IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGRpc3BhdGNoQWN0aW9uKHN0YXRlOiBULCBhY3Rpb25LZXk6IHN0cmluZywgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxhbnksIEFjdGlvbj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuYWRkUmVkdWNlcihhY3Rpb25LZXksIHJlZHVjZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBhY3Rpb25LZXksIHBheWxvYWQ6IHN0YXRlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJveHkgdG8gTkdSWCBzdG9yZS5zZWxlY3QoKVxuICAgICAqIHRoYXQgYWxsb3dzIHRvIGludGVyY2VwdCBpZiB0aGUgc3RvcmUgaXMgcHJlc2VudFxuICAgICAqL1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHNlbGVjdChrZXk6IGFueSk6IE9ic2VydmFibGU8VFthbnldPiB7XG4gICAgICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdOR1JYIFN0b3JlIG5vdCBjb25maWd1cmVkJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlcnMgYW5kIHNhdmUgdGhlIHN0YXRlIHdpdGggdGhlIEJyb3dzZXIgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBzdGF0ZSB0eXBlIG9mIENvcmVTdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzYXZlU3RhdGUoc3RhdGU6IENvcmVTdGF0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgc3RhdGVUb1NhdmU6IENvcmVTdGF0ZSA9IHtcbiAgICAgICAgICAgIGFwcDogc3RhdGUuYXBwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGF0ZS51c2VyKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXJJZCwgcHJlZmVyZW5jZXMgfSA9IHN0YXRlLnVzZXI7XG4gICAgICAgICAgICBzdGF0ZVRvU2F2ZS51c2VyID0geyB1c2VySWQsIHByZWZlcmVuY2VzIH07XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzKS5mb3JFYWNoKChzbGljZVN0YXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzW3NsaWNlU3RhdGVdO1xuICAgICAgICAgICAgc3RhdGVUb1NhdmUgPSBPYmplY3QuYXNzaWduKHN0YXRlVG9TYXZlLCB7IFtzbGljZVN0YXRlXTogaGFuZGxlcihzdGF0ZVtzbGljZVN0YXRlXSkgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBKU09OLnN0cmluZ2lmeShzdGF0ZVRvU2F2ZSk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlPy5zZXRJdGVtKCdzdGF0ZScsIHNlcmlhbGl6ZWRTdGF0ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gSWdub3JlIHdyaXRlIGVycm9ycy5cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -2,9 +2,10 @@ import { of } from 'rxjs';
2
2
  import { StoreService } from './store.service';
3
3
  import { Injectable } from '@angular/core';
4
4
  import * as i0 from "@angular/core";
5
+ export const PLATFORM_BROWSER_ID = 'browser';
5
6
  export class StoreServiceMock extends StoreService {
6
7
  constructor() {
7
- super(null, null);
8
+ super(null, null, PLATFORM_BROWSER_ID);
8
9
  }
9
10
  init() { }
10
11
  addAutoSaveHandler() { }
@@ -19,4 +20,4 @@ export class StoreServiceMock extends StoreService {
19
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreServiceMock, decorators: [{
20
21
  type: Injectable
21
22
  }], ctorParameters: () => [] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS9zdG9yZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFDOUM7UUFDSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFUSxJQUFJLEtBQXFCLENBQUM7SUFFMUIsa0JBQWtCLEtBQXFCLENBQUM7SUFFeEMsY0FBYyxLQUFxQixDQUFDO0lBRXBDLFFBQVEsS0FBcUIsQ0FBQztJQUU5QixNQUFNO1FBQ1gsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs4R0FmUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVTZXJ2aWNlTW9jayBleHRlbmRzIFN0b3JlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXQoKTogdm9pZCB7LyogZW1wdHkgKi99XG5cbiAgICBvdmVycmlkZSBhZGRBdXRvU2F2ZUhhbmRsZXIoKTogdm9pZCB7LyogZW1wdHkgKi99XG5cbiAgICBvdmVycmlkZSBoYW5kbGVBdXRvU2F2ZSgpOiB2b2lkIHsvKiBlbXB0eSAqL31cblxuICAgIG92ZXJyaWRlIGRpc3BhdGNoKCk6IHZvaWQgey8qIGVtcHR5ICovfVxuXG4gICAgb3ZlcnJpZGUgc2VsZWN0KCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS9zdG9yZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRzdDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxZQUFZO0lBQzlDO1FBQ0ksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVEsSUFBSSxLQUFxQixDQUFDO0lBRTFCLGtCQUFrQixLQUFxQixDQUFDO0lBRXhDLGNBQWMsS0FBcUIsQ0FBQztJQUVwQyxRQUFRLEtBQXFCLENBQUM7SUFFOUIsTUFBTTtRQUNYLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OEdBZlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0JST1dTRVJfSUQgPSAnYnJvd3Nlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdG9yZVNlcnZpY2VNb2NrIGV4dGVuZHMgU3RvcmVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIobnVsbCwgbnVsbCwgUExBVEZPUk1fQlJPV1NFUl9JRCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdCgpOiB2b2lkIHsvKiBlbXB0eSAqL31cblxuICAgIG92ZXJyaWRlIGFkZEF1dG9TYXZlSGFuZGxlcigpOiB2b2lkIHsvKiBlbXB0eSAqL31cblxuICAgIG92ZXJyaWRlIGhhbmRsZUF1dG9TYXZlKCk6IHZvaWQgey8qIGVtcHR5ICovfVxuXG4gICAgb3ZlcnJpZGUgZGlzcGF0Y2goKTogdm9pZCB7LyogZW1wdHkgKi99XG5cbiAgICBvdmVycmlkZSBzZWxlY3QoKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG59XG4iXX0=
@@ -2,7 +2,7 @@ import * as i1 from '@eui/base';
2
2
  import { LogLevel, ConsoleAppender, initialAppState, initialUserState, initialNotificationsState, initialI18nState, initialLocaleState, Logger, LoggerMock, xhr, getApiQueue, getApiQueueItem, mergeAll, getI18nLoaderConfig, EuiLazyService, getI18nServiceConfigFromBase, getI18nState, getLastAddedModule, getBrowserDefaultLanguage, EuiEuLanguages, getActiveLang, EuiService, getUserRights, getUserState, getLocaleServiceConfigFromBase, getLocaleState, transformToUxHttpResponse } from '@eui/base';
3
3
  export * from '@eui/base';
4
4
  import * as i0 from '@angular/core';
5
- import { InjectionToken, Injectable, Inject, Injector, NgModule, Optional, APP_INITIALIZER, SkipSelf, ErrorHandler, PLATFORM_ID, LOCALE_ID } from '@angular/core';
5
+ import { InjectionToken, Injectable, Inject, inject, PLATFORM_ID, Injector, NgModule, Optional, APP_INITIALIZER, SkipSelf, ErrorHandler, LOCALE_ID } from '@angular/core';
6
6
  import * as extendProxy from 'extend';
7
7
  import * as i1$1 from '@ngrx/effects';
8
8
  import { createEffect, ofType } from '@ngrx/effects';
@@ -10,11 +10,11 @@ import { merge, fromEvent, throwError, of, forkJoin, from, BehaviorSubject, defe
10
10
  import { mapTo, map, mergeMap, tap, debounceTime, distinctUntilChanged, take, switchMap, catchError, concatMap, filter, takeUntil } from 'rxjs/operators';
11
11
  import * as i1$2 from '@ngx-translate/core';
12
12
  import { TranslateLoader } from '@ngx-translate/core';
13
+ import { isPlatformBrowser, LOCATION_INITIALIZED, DOCUMENT, getLocaleId, registerLocaleData } from '@angular/common';
13
14
  import * as i1$3 from '@ngrx/store';
14
15
  import { createSelector } from '@ngrx/store';
15
16
  import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
16
17
  import { MomentDateAdapter } from '@angular/material-moment-adapter';
17
- import { LOCATION_INITIALIZED, DOCUMENT, isPlatformBrowser, getLocaleId, registerLocaleData } from '@angular/common';
18
18
  import * as i1$5 from '@angular/common/http';
19
19
  import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
20
20
  import * as i1$4 from '@angular/router';
@@ -587,19 +587,27 @@ const coreReducers = Object.assign({}, {
587
587
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
588
588
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
589
589
  const extend = extendProxy.default || extendProxy;
590
- /**
591
- * Utility meta-reducer to load the state from the local storage
592
- * @param reducer the action reducer
593
- */
594
- function localStorageSync(reducer) {
595
- return cb(reducer, localStorage);
590
+ function localStorageSync(reducer, platformId) {
591
+ if (platformId) {
592
+ return (reducer) => {
593
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
594
+ };
595
+ }
596
+ else {
597
+ const platformId = inject(PLATFORM_ID, { optional: true });
598
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
599
+ }
596
600
  }
597
- /**
598
- * Utility meta-reducer to load the state from the session storage
599
- * @param reducer the action reducer
600
- */
601
- function sessionStorageSync(reducer) {
602
- return cb(reducer, sessionStorage);
601
+ function sessionStorageSync(reducer, platformId) {
602
+ if (platformId) {
603
+ return (reducer) => {
604
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
605
+ };
606
+ }
607
+ else {
608
+ const platformId = inject(PLATFORM_ID, { optional: true });
609
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
610
+ }
603
611
  }
604
612
  // Keys that are allowed to be synced with NgRx state from BrowserStorage
605
613
  const disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];
@@ -626,6 +634,9 @@ const filterAppState = (app) => {
626
634
  * @param storage Type of storage to load the state from
627
635
  */
628
636
  const loadState = (storage = localStorage) => {
637
+ if (!storage) {
638
+ return undefined;
639
+ }
629
640
  try {
630
641
  // by default falls back to localStorage
631
642
  const serializedState = storage.getItem('state');
@@ -648,26 +659,27 @@ const cb = (reducer, storage) => (state, action) => {
648
659
  // We load the state from a storage and compare the version and userId with the provided ones.
649
660
  // If they are the same, we merge the local state into the initial state.
650
661
  // If there is a mismatch, we don't merge the local state, but update only the initial state.
651
- // load the state from the localStorage
652
- const localState = loadState(storage);
653
- // extract the details about user and app version from the action payload
654
- const payload = action.payload;
655
- const payloadVersion = payload?.version;
656
- if (localState) {
657
- // TODO: Why all these checks here? What is the purpose of this code?
658
- // extract the details about user and app version from the storage state
659
- const localVersion = localState?.app?.version;
660
- // const localUserId = localState.user && localState.user.userId;
661
- const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
662
- // const isUserIdOK = (localUserId === payloadUserId);
663
- // update the entire state with deep merge of states, if the version and user are the same
664
- if (isVersionOK) {
665
- state = extend(true, {}, state, localState);
662
+ if (storage) {
663
+ // load the state from the localStorage
664
+ const localState = loadState(storage);
665
+ // extract the details about user and app version from the action payload
666
+ const payloadVersion = action.payload?.version;
667
+ if (localState) {
668
+ // TODO: Why all these checks here? What is the purpose of this code?
669
+ // extract the details about user and app version from the storage state
670
+ const localVersion = localState?.app?.version;
671
+ // const localUserId = localState.user && localState.user.userId;
672
+ const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
673
+ // const isUserIdOK = (localUserId === payloadUserId);
674
+ // update the entire state with deep merge of states, if the version and user are the same
675
+ if (isVersionOK) {
676
+ state = extend(true, {}, state, localState);
677
+ }
678
+ }
679
+ // update the app version, if defined
680
+ if (payloadVersion) {
681
+ state = { ...state, app: { ...state?.app, version: payloadVersion } };
666
682
  }
667
- }
668
- // update the app version, if defined
669
- if (payloadVersion) {
670
- state = { ...state, app: { ...state?.app, version: payloadVersion } };
671
683
  }
672
684
  }
673
685
  return reducer(state, action);
@@ -821,23 +833,27 @@ var BrowserStorageType;
821
833
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
822
834
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
823
835
  class StoreService {
824
- constructor(store, logService) {
836
+ constructor(store, logService, platformId) {
825
837
  this.store = store;
826
838
  this.logService = logService;
839
+ this.platformId = platformId;
827
840
  /**
828
841
  * autoSave handlers to call before saving in local Storage
829
842
  */
830
843
  this._autoSaveHandlers = {};
831
- /** storage instance e.g. localStorage, sessionStorage */
832
- this._storage = localStorage;
844
+ if (isPlatformBrowser(this.platformId)) {
845
+ this._storage = localStorage;
846
+ }
833
847
  }
834
848
  // use init with just version info, to update to user state, UserService.updateState
835
849
  // initializeStore(version?: string, userDetails?: BaseUserDetails) {
836
850
  // this.dispatch(new InitStoreAction({ version, userDetails }));
837
851
  // }
838
852
  init(version, storageType) {
839
- this.dispatch(new InitStoreAction({ version }));
840
- this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
853
+ if (isPlatformBrowser(this.platformId)) {
854
+ this.dispatch(new InitStoreAction({ version }));
855
+ this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
856
+ }
841
857
  }
842
858
  addAutoSaveHandler(stateSlice, handler) {
843
859
  if (!this.store) {
@@ -905,13 +921,13 @@ class StoreService {
905
921
  });
906
922
  try {
907
923
  const serializedState = JSON.stringify(stateToSave);
908
- this._storage.setItem('state', serializedState);
924
+ this._storage?.setItem('state', serializedState);
909
925
  }
910
926
  catch (err) {
911
927
  // Ignore write errors.
912
928
  }
913
929
  }
914
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, deps: [{ token: i1$3.Store, optional: true }, { token: LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
930
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, deps: [{ token: i1$3.Store, optional: true }, { token: LogService, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
915
931
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, providedIn: 'root' }); }
916
932
  }
917
933
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: StoreService, decorators: [{
@@ -923,11 +939,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
923
939
  type: Optional
924
940
  }] }, { type: LogService, decorators: [{
925
941
  type: Optional
942
+ }] }, { type: undefined, decorators: [{
943
+ type: Inject,
944
+ args: [PLATFORM_ID]
926
945
  }] }] });
927
946
 
947
+ const PLATFORM_BROWSER_ID = 'browser';
928
948
  class StoreServiceMock extends StoreService {
929
949
  constructor() {
930
- super(null, null);
950
+ super(null, null, PLATFORM_BROWSER_ID);
931
951
  }
932
952
  init() { }
933
953
  addAutoSaveHandler() { }
@@ -4156,9 +4176,10 @@ class AsyncStorageServiceMock extends AsyncStorageService {
4156
4176
  */
4157
4177
  class LocalStorageService extends StorageService {
4158
4178
  static { this.NAME = 'LocalStorageService'; }
4159
- constructor(log) {
4179
+ constructor(log, platformId) {
4160
4180
  super();
4161
4181
  this.log = log;
4182
+ this.platformId = platformId;
4162
4183
  }
4163
4184
  /**
4164
4185
  * the name of the storage service
@@ -4174,15 +4195,17 @@ class LocalStorageService extends StorageService {
4174
4195
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
4175
4196
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4176
4197
  get(key) {
4177
- try {
4178
- const serialized = localStorage.getItem(key);
4179
- return serialized && JSON.parse(serialized);
4180
- }
4181
- catch (err) {
4182
- if (this.log) {
4183
- this.log.error(this.name(), 'get', err);
4198
+ if (isPlatformBrowser(this.platformId)) {
4199
+ try {
4200
+ const serialized = localStorage.getItem(key);
4201
+ return serialized && JSON.parse(serialized);
4202
+ }
4203
+ catch (err) {
4204
+ if (this.log) {
4205
+ this.log.error(this.name(), 'get', err);
4206
+ }
4207
+ return undefined;
4184
4208
  }
4185
- return undefined;
4186
4209
  }
4187
4210
  }
4188
4211
  /**
@@ -4193,13 +4216,15 @@ class LocalStorageService extends StorageService {
4193
4216
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
4194
4217
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4195
4218
  set(key, value) {
4196
- try {
4197
- const serialized = JSON.stringify(value);
4198
- localStorage.setItem(key, serialized);
4199
- }
4200
- catch (err) {
4201
- if (this.log) {
4202
- this.log.error(this.name(), 'set', err);
4219
+ if (isPlatformBrowser(this.platformId)) {
4220
+ try {
4221
+ const serialized = JSON.stringify(value);
4222
+ localStorage.setItem(key, serialized);
4223
+ }
4224
+ catch (err) {
4225
+ if (this.log) {
4226
+ this.log.error(this.name(), 'set', err);
4227
+ }
4203
4228
  }
4204
4229
  }
4205
4230
  }
@@ -4208,22 +4233,27 @@ class LocalStorageService extends StorageService {
4208
4233
  * @param key the associated key
4209
4234
  */
4210
4235
  remove(key) {
4211
- try {
4212
- localStorage.removeItem(key);
4213
- }
4214
- catch (err) {
4215
- if (this.log) {
4216
- this.log.error(this.name(), 'remove', err);
4236
+ if (isPlatformBrowser(this.platformId)) {
4237
+ try {
4238
+ localStorage.removeItem(key);
4239
+ }
4240
+ catch (err) {
4241
+ if (this.log) {
4242
+ this.log.error(this.name(), 'remove', err);
4243
+ }
4217
4244
  }
4218
4245
  }
4219
4246
  }
4220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
4247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: LogService, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
4221
4248
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService }); }
4222
4249
  }
4223
4250
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, decorators: [{
4224
4251
  type: Injectable
4225
4252
  }], ctorParameters: () => [{ type: LogService, decorators: [{
4226
4253
  type: Optional
4254
+ }] }, { type: undefined, decorators: [{
4255
+ type: Inject,
4256
+ args: [PLATFORM_ID]
4227
4257
  }] }] });
4228
4258
 
4229
4259
  /**
@@ -5241,5 +5271,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
5241
5271
  * Generated bundle index. Do not edit.
5242
5272
  */
5243
5273
 
5244
- export { ActivatedRouteAction, AddApiQueueItemAction, AddAppLoadedConfigModulesAction, AddLangParamInterceptor, AlertHttpErrorCallbackFn, ApiQueueService, ApiQueueServiceMock, AsyncStorageService, AsyncStorageServiceMock, BASE_LOGGER_NAME_TOKEN, BASE_NAME_TOKEN, BrowserStorageType, CONFIG_TOKEN, CORE_ROOT_GUARD, CachePreventionInterceptor, ConsoleHttpErrorCallbackFn, CoreAppActionTypes, CoreAppEffects, CoreI18nActionTypes, CoreLocaleActionTypes, CoreModule, CoreModuleEffects, CoreNotificationsActionTypes, CoreUserActionTypes, CorsSecurityInterceptor, CsrfPreventionInterceptor, CssUtils, DYNAMIC_COMPONENT_CONFIG, EUI_CONFIG_TOKEN, EUI_COUNTRIES, EUI_TIMEZONES, EmptyApiQueueAction, ErrorSubClass, EuLoginSessionTimeoutHandlingInterceptor, EuiAppShellService, EuiCoreRootGuardClass, EuiDynamicComponentService, EuiDynamicMenuService, EuiError, EuiGrowlService, EuiLoaderService, EuiPermissionService, EuiTheme, EuiThemeService, EuiTimezoneService, GLOBAL_CONFIG_TOKEN, GlobalErrorHandler, GrowlHttpErrorCallbackFn, HTTP_ERROR_HANDLER_CONFIG_TOKEN, HttpErrorHandlerInterceptor, I18nLoader, I18nResourceImpl, I18nService, InitStoreAction, LANG_PARAM_KEY, LOCALE_ID_MAPPER, LOCAL_FORAGE_SERVICE_CONFIG_TOKEN, LOG_APPENDERS_TOKEN, LOG_LEVEL_TOKEN, LocalForageService, LocalStorageService, LocaleService, LocaleServiceMock, LogHttpErrorCallbackFn, LogModule, LogService, LogServiceMock, MODULE_CONFIG_TOKEN, MODULE_NAME_TOKEN, ROOT_LOG_CONFIG_TOKEN, RemoveApiQueueItemAction, SHOW_CONNECTION_STATUS_TOKEN, SessionStorageService, Status, StorageService, StorageServiceMock, StoreService, StoreServiceMock, UX_ERROR_MAPPING_HANDLER_TOKEN, UpdateAppConnectionAction, UpdateAppStatusAction, UpdateAppVersionAction, UpdateCurrentModuleAction, UpdateI18nStateAction, UpdateLocaleStateAction, UpdateNotificationsListAction, UpdateUserDashboardAction, UpdateUserDetailsAction, UpdateUserPreferencesAction, UpdateUserRightsAction, UpdateUserStateAction, UserService, UserServiceMock, UxRequestErrorModelInterceptor, closestMatchingParent, consumeEvent, corI18nReducers, coreAppReducers, coreLocaleReducers, coreNotificationsReducers, coreUserReducers, createEuiCoreRootGuard, diffDays, diffDaysFromToday, errorCodes, euiCoreRootGuardClass, formatNumber, getGlobalConfig, getHttpErrorHandlingConfig, getModuleConfig, getRootLogConfig, getShowConnectionStatus, getViewElement, handleError, isDefined, loadEuiDynamicEnvironmentConfig, loadState, localForage, localStorageSync, markControlsTouched, markFormGroupTouched, mergeAppHandlerConfigToAppConfig, mergeAppJsonConfigToAppConfig, offset, parentOffsetEl, position, preInitApp, prepareEuiAppConfigToken, coreReducers as reducers, sessionStorageSync, translateConfig, uniqueId, validateEmail };
5274
+ export { ActivatedRouteAction, AddApiQueueItemAction, AddAppLoadedConfigModulesAction, AddLangParamInterceptor, AlertHttpErrorCallbackFn, ApiQueueService, ApiQueueServiceMock, AsyncStorageService, AsyncStorageServiceMock, BASE_LOGGER_NAME_TOKEN, BASE_NAME_TOKEN, BrowserStorageType, CONFIG_TOKEN, CORE_ROOT_GUARD, CachePreventionInterceptor, ConsoleHttpErrorCallbackFn, CoreAppActionTypes, CoreAppEffects, CoreI18nActionTypes, CoreLocaleActionTypes, CoreModule, CoreModuleEffects, CoreNotificationsActionTypes, CoreUserActionTypes, CorsSecurityInterceptor, CsrfPreventionInterceptor, CssUtils, DYNAMIC_COMPONENT_CONFIG, EUI_CONFIG_TOKEN, EUI_COUNTRIES, EUI_TIMEZONES, EmptyApiQueueAction, ErrorSubClass, EuLoginSessionTimeoutHandlingInterceptor, EuiAppShellService, EuiCoreRootGuardClass, EuiDynamicComponentService, EuiDynamicMenuService, EuiError, EuiGrowlService, EuiLoaderService, EuiPermissionService, EuiTheme, EuiThemeService, EuiTimezoneService, GLOBAL_CONFIG_TOKEN, GlobalErrorHandler, GrowlHttpErrorCallbackFn, HTTP_ERROR_HANDLER_CONFIG_TOKEN, HttpErrorHandlerInterceptor, I18nLoader, I18nResourceImpl, I18nService, InitStoreAction, LANG_PARAM_KEY, LOCALE_ID_MAPPER, LOCAL_FORAGE_SERVICE_CONFIG_TOKEN, LOG_APPENDERS_TOKEN, LOG_LEVEL_TOKEN, LocalForageService, LocalStorageService, LocaleService, LocaleServiceMock, LogHttpErrorCallbackFn, LogModule, LogService, LogServiceMock, MODULE_CONFIG_TOKEN, MODULE_NAME_TOKEN, PLATFORM_BROWSER_ID, ROOT_LOG_CONFIG_TOKEN, RemoveApiQueueItemAction, SHOW_CONNECTION_STATUS_TOKEN, SessionStorageService, Status, StorageService, StorageServiceMock, StoreService, StoreServiceMock, UX_ERROR_MAPPING_HANDLER_TOKEN, UpdateAppConnectionAction, UpdateAppStatusAction, UpdateAppVersionAction, UpdateCurrentModuleAction, UpdateI18nStateAction, UpdateLocaleStateAction, UpdateNotificationsListAction, UpdateUserDashboardAction, UpdateUserDetailsAction, UpdateUserPreferencesAction, UpdateUserRightsAction, UpdateUserStateAction, UserService, UserServiceMock, UxRequestErrorModelInterceptor, closestMatchingParent, consumeEvent, corI18nReducers, coreAppReducers, coreLocaleReducers, coreNotificationsReducers, coreUserReducers, createEuiCoreRootGuard, diffDays, diffDaysFromToday, errorCodes, euiCoreRootGuardClass, formatNumber, getGlobalConfig, getHttpErrorHandlingConfig, getModuleConfig, getRootLogConfig, getShowConnectionStatus, getViewElement, handleError, isDefined, loadEuiDynamicEnvironmentConfig, loadState, localForage, localStorageSync, markControlsTouched, markFormGroupTouched, mergeAppHandlerConfigToAppConfig, mergeAppJsonConfigToAppConfig, offset, parentOffsetEl, position, preInitApp, prepareEuiAppConfigToken, coreReducers as reducers, sessionStorageSync, translateConfig, uniqueId, validateEmail };
5245
5275
  //# sourceMappingURL=eui-core.mjs.map