@eui/core 15.4.1 → 15.4.2
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/LICENSE +296 -296
- package/README.md +26 -26
- package/assets/i18n-eui/bg.json +114 -114
- package/assets/i18n-eui/cs.json +114 -114
- package/assets/i18n-eui/da.json +114 -114
- package/assets/i18n-eui/de.json +114 -114
- package/assets/i18n-eui/el.json +114 -114
- package/assets/i18n-eui/en.json +113 -113
- package/assets/i18n-eui/es.json +114 -114
- package/assets/i18n-eui/et.json +114 -114
- package/assets/i18n-eui/fi.json +114 -114
- package/assets/i18n-eui/fr.json +114 -114
- package/assets/i18n-eui/ga.json +114 -114
- package/assets/i18n-eui/hr.json +114 -114
- package/assets/i18n-eui/hu.json +114 -114
- package/assets/i18n-eui/it.json +114 -114
- package/assets/i18n-eui/lt.json +114 -114
- package/assets/i18n-eui/lv.json +114 -114
- package/assets/i18n-eui/mt.json +114 -114
- package/assets/i18n-eui/nl.json +114 -114
- package/assets/i18n-eui/pl.json +114 -114
- package/assets/i18n-eui/pt.json +114 -114
- package/assets/i18n-eui/ro.json +114 -114
- package/assets/i18n-eui/sk.json +114 -114
- package/assets/i18n-eui/sl.json +114 -114
- package/assets/i18n-eui/sv.json +114 -114
- package/docs/classes/RouterMock.html +5 -5
- package/docs/dependencies.html +7 -95
- package/docs/index.html +59 -36
- package/docs/injectables/CoreAppEffects.html +51 -51
- package/docs/js/menu-wc.js +7 -12
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +1211 -1211
- package/esm2020/eui-core.mjs +4 -4
- package/esm2020/index.mjs +13 -13
- package/esm2020/lib/eui-core.module.mjs +78 -78
- package/esm2020/lib/helpers/date-helpers.mjs +3 -3
- package/esm2020/lib/helpers/dom-helpers.mjs +87 -87
- package/esm2020/lib/helpers/event-helpers.mjs +9 -9
- package/esm2020/lib/helpers/form-helpers.mjs +42 -42
- package/esm2020/lib/helpers/format-helpers.mjs +66 -66
- package/esm2020/lib/helpers/http-helpers.mjs +7 -7
- package/esm2020/lib/helpers/index.mjs +8 -8
- package/esm2020/lib/helpers/utils.mjs +7 -7
- package/esm2020/lib/interceptors/add-lang-param.interceptor.mjs +35 -35
- package/esm2020/lib/interceptors/cache-prevention.interceptor.mjs +21 -21
- package/esm2020/lib/interceptors/cors-security.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/csrf-prevention.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +72 -72
- package/esm2020/lib/interceptors/index.mjs +8 -8
- package/esm2020/lib/interceptors/openid/index.mjs +4 -4
- package/esm2020/lib/interceptors/openid/openid-connect.interceptor.mjs +149 -149
- package/esm2020/lib/interceptors/openid/openid-connect.service.mjs +56 -56
- package/esm2020/lib/interceptors/openid/openid-connect.service.mock.mjs +8 -8
- package/esm2020/lib/interceptors/ux-request-error-model.interceptor.mjs +31 -31
- package/esm2020/lib/services/app/eui-init-app.mjs +29 -29
- package/esm2020/lib/services/app/eui-pre-init-app.mjs +43 -43
- package/esm2020/lib/services/app/eui-startup.mjs +40 -40
- package/esm2020/lib/services/app/factories/log.mjs +55 -55
- package/esm2020/lib/services/app/index.mjs +2 -2
- package/esm2020/lib/services/config/defaults.mjs +68 -68
- package/esm2020/lib/services/config/tokens.mjs +74 -74
- package/esm2020/lib/services/errors/eui.error.mjs +38 -38
- package/esm2020/lib/services/errors/global-error-handler.mjs +24 -24
- package/esm2020/lib/services/errors/http-error-handler-callback-functions.mjs +17 -17
- package/esm2020/lib/services/errors/http-error-handler.interceptor.mjs +55 -55
- package/esm2020/lib/services/errors/index.mjs +5 -5
- package/esm2020/lib/services/i18n/i18n.loader.mjs +198 -198
- package/esm2020/lib/services/i18n/i18n.resource.mjs +43 -43
- package/esm2020/lib/services/i18n/i18n.service.mjs +228 -228
- package/esm2020/lib/services/i18n/i18n.service.mock.mjs +38 -38
- package/esm2020/lib/services/i18n/index.mjs +6 -6
- package/esm2020/lib/services/index.mjs +19 -19
- package/esm2020/lib/services/locale/index.mjs +3 -3
- package/esm2020/lib/services/locale/locale.service.mjs +232 -232
- package/esm2020/lib/services/locale/locale.service.mock.mjs +43 -43
- package/esm2020/lib/services/log/index.mjs +4 -4
- package/esm2020/lib/services/log/log.module.mjs +38 -38
- package/esm2020/lib/services/log/log.service.mjs +51 -51
- package/esm2020/lib/services/log/log.service.mock.mjs +7 -7
- package/esm2020/lib/services/permission/permission.service.mjs +110 -110
- package/esm2020/lib/services/queue/api-queue.service.mjs +137 -137
- package/esm2020/lib/services/queue/api-queue.service.mock.mjs +23 -23
- package/esm2020/lib/services/queue/index.mjs +3 -3
- package/esm2020/lib/services/storage/async-storage.service.mjs +17 -17
- package/esm2020/lib/services/storage/async-storage.service.mock.mjs +22 -22
- package/esm2020/lib/services/storage/index.mjs +8 -8
- package/esm2020/lib/services/storage/local-forage.service.mjs +93 -93
- package/esm2020/lib/services/storage/local-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/session-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/storage.service.mjs +6 -6
- package/esm2020/lib/services/storage/storage.service.mock.mjs +12 -12
- package/esm2020/lib/services/store/actions/app.actions.mjs +74 -74
- package/esm2020/lib/services/store/actions/i18n.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/index.mjs +6 -6
- package/esm2020/lib/services/store/actions/locale.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/notifications.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/user.actions.mjs +39 -39
- package/esm2020/lib/services/store/effects/app.effects.mjs +55 -55
- package/esm2020/lib/services/store/effects/index.mjs +4 -4
- package/esm2020/lib/services/store/index.mjs +6 -6
- package/esm2020/lib/services/store/reducers/app.reducers.mjs +56 -56
- package/esm2020/lib/services/store/reducers/core.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/i18n.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/index.mjs +8 -8
- package/esm2020/lib/services/store/reducers/locale.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/meta.reducers.mjs +89 -89
- package/esm2020/lib/services/store/reducers/notifications.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/user.reducers.mjs +43 -43
- package/esm2020/lib/services/store/store.service.mjs +112 -112
- package/esm2020/lib/services/store/store.service.mock.mjs +22 -22
- package/esm2020/lib/services/user/index.mjs +3 -3
- package/esm2020/lib/services/user/user.service.mjs +64 -64
- package/esm2020/lib/services/user/user.service.mock.mjs +32 -32
- package/esm2020/lib/services/ux-app-shell.service.mjs +690 -690
- package/esm2020/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +63 -63
- package/esm2020/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +66 -66
- package/esm2020/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +99 -99
- package/esm2020/lib/services/ux-error-feedback/ux-error-handler.operator.mjs +16 -16
- package/esm2020/lib/services/ux-timezone.service.mjs +716 -716
- package/fesm2015/eui-core.mjs +4484 -4484
- package/fesm2015/eui-core.mjs.map +1 -1
- package/fesm2020/eui-core.mjs +4538 -4538
- package/fesm2020/eui-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/eui-core.module.d.ts +20 -20
- package/lib/helpers/date-helpers.d.ts +2 -2
- package/lib/helpers/dom-helpers.d.ts +26 -26
- package/lib/helpers/event-helpers.d.ts +1 -1
- package/lib/helpers/form-helpers.d.ts +10 -10
- package/lib/helpers/format-helpers.d.ts +12 -12
- package/lib/helpers/http-helpers.d.ts +2 -2
- package/lib/helpers/index.d.ts +7 -7
- package/lib/helpers/utils.d.ts +6 -6
- package/lib/interceptors/add-lang-param.interceptor.d.ts +16 -16
- package/lib/interceptors/cache-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/cors-security.interceptor.d.ts +8 -8
- package/lib/interceptors/csrf-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts +12 -12
- package/lib/interceptors/index.d.ts +7 -7
- package/lib/interceptors/openid/index.d.ts +3 -3
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts +14 -14
- package/lib/interceptors/openid/openid-connect.service.d.ts +17 -17
- package/lib/interceptors/openid/openid-connect.service.mock.d.ts +5 -5
- package/lib/interceptors/ux-request-error-model.interceptor.d.ts +13 -13
- package/lib/services/app/eui-init-app.d.ts +2 -2
- package/lib/services/app/eui-pre-init-app.d.ts +16 -16
- package/lib/services/app/eui-startup.d.ts +4 -4
- package/lib/services/app/factories/log.d.ts +25 -25
- package/lib/services/app/index.d.ts +1 -1
- package/lib/services/config/defaults.d.ts +11 -11
- package/lib/services/config/tokens.d.ts +19 -19
- package/lib/services/errors/eui.error.d.ts +15 -15
- package/lib/services/errors/global-error-handler.d.ts +10 -10
- package/lib/services/errors/http-error-handler-callback-functions.d.ts +6 -6
- package/lib/services/errors/http-error-handler.interceptor.d.ts +22 -22
- package/lib/services/errors/index.d.ts +4 -4
- package/lib/services/i18n/i18n.loader.d.ts +79 -79
- package/lib/services/i18n/i18n.resource.d.ts +35 -35
- package/lib/services/i18n/i18n.service.d.ts +73 -73
- package/lib/services/i18n/i18n.service.mock.d.ts +19 -19
- package/lib/services/i18n/index.d.ts +4 -4
- package/lib/services/index.d.ts +18 -18
- package/lib/services/locale/index.d.ts +2 -2
- package/lib/services/locale/locale.service.d.ts +68 -68
- package/lib/services/locale/locale.service.mock.d.ts +15 -15
- package/lib/services/log/index.d.ts +3 -3
- package/lib/services/log/log.module.d.ts +15 -15
- package/lib/services/log/log.service.d.ts +27 -27
- package/lib/services/log/log.service.mock.d.ts +4 -4
- package/lib/services/permission/permission.service.d.ts +52 -52
- package/lib/services/queue/api-queue.service.d.ts +76 -76
- package/lib/services/queue/api-queue.service.mock.d.ts +13 -13
- package/lib/services/queue/index.d.ts +2 -2
- package/lib/services/storage/async-storage.service.d.ts +44 -44
- package/lib/services/storage/async-storage.service.mock.d.ts +11 -11
- package/lib/services/storage/index.d.ts +7 -7
- package/lib/services/storage/local-forage.service.d.ts +48 -48
- package/lib/services/storage/local-storage.service.d.ts +34 -34
- package/lib/services/storage/session-storage.service.d.ts +34 -34
- package/lib/services/storage/storage.service.d.ts +28 -28
- package/lib/services/storage/storage.service.mock.d.ts +7 -7
- package/lib/services/store/actions/app.actions.d.ts +82 -82
- package/lib/services/store/actions/i18n.actions.d.ts +11 -11
- package/lib/services/store/actions/index.d.ts +5 -5
- package/lib/services/store/actions/locale.actions.d.ts +11 -11
- package/lib/services/store/actions/notifications.actions.d.ts +10 -10
- package/lib/services/store/actions/user.actions.d.ts +35 -35
- package/lib/services/store/effects/app.effects.d.ts +19 -19
- package/lib/services/store/effects/index.d.ts +3 -3
- package/lib/services/store/index.d.ts +5 -5
- package/lib/services/store/reducers/app.reducers.d.ts +3 -3
- package/lib/services/store/reducers/core.reducers.d.ts +3 -3
- package/lib/services/store/reducers/i18n.reducers.d.ts +3 -3
- package/lib/services/store/reducers/index.d.ts +7 -7
- package/lib/services/store/reducers/locale.reducers.d.ts +3 -3
- package/lib/services/store/reducers/meta.reducers.d.ts +17 -17
- package/lib/services/store/reducers/notifications.reducers.d.ts +3 -3
- package/lib/services/store/reducers/user.reducers.d.ts +3 -3
- package/lib/services/store/store.service.d.ts +43 -43
- package/lib/services/store/store.service.mock.d.ts +12 -12
- package/lib/services/user/index.d.ts +2 -2
- package/lib/services/user/user.service.d.ts +15 -15
- package/lib/services/user/user.service.mock.d.ts +16 -16
- package/lib/services/ux-app-shell.service.d.ts +155 -155
- package/lib/services/ux-dynamic-component/ux-dynamic-component.service.d.ts +36 -36
- package/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.d.ts +14 -14
- package/lib/services/ux-error-feedback/ux-error-feedback.service.d.ts +35 -35
- package/lib/services/ux-error-feedback/ux-error-handler.operator.d.ts +3 -3
- package/lib/services/ux-timezone.service.d.ts +269 -269
- package/package.json +2 -2
- package/docs/overview.html +0 -171
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import { CoreUserActionTypes, } from '../actions/user.actions';
|
|
2
|
-
import { initialUserState } from '@eui/base';
|
|
3
|
-
const updateUser = (state, action) => {
|
|
4
|
-
let fullName = action.payload.fullName;
|
|
5
|
-
if (!fullName) {
|
|
6
|
-
fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();
|
|
7
|
-
}
|
|
8
|
-
return Object.assign({}, state, action.payload, { fullName });
|
|
9
|
-
};
|
|
10
|
-
const updateUserDetails = (state, action) => {
|
|
11
|
-
let fullName = action.payload.fullName;
|
|
12
|
-
if (!fullName) {
|
|
13
|
-
fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();
|
|
14
|
-
}
|
|
15
|
-
// todo should be checked if state.details is really there
|
|
16
|
-
const details = Object.assign({}, state.details, action.payload, { fullName });
|
|
17
|
-
return Object.assign({}, state, details);
|
|
18
|
-
};
|
|
19
|
-
const updateUserPreferences = (state, action) => {
|
|
20
|
-
const preferences = Object.assign({}, state.preferences, action.payload);
|
|
21
|
-
return Object.assign({}, state, { preferences });
|
|
22
|
-
};
|
|
23
|
-
const updateUserRights = (state, action) => Object.assign({}, state, { rights: [...action.payload] });
|
|
24
|
-
const updateUserDashboard = (state, action) => {
|
|
25
|
-
// apply the dashboard to preferences
|
|
26
|
-
const preferences = Object.assign({}, state.preferences, { dashboard: action.payload });
|
|
27
|
-
// update the state
|
|
28
|
-
return { ...state, preferences };
|
|
29
|
-
};
|
|
30
|
-
const actionToReducerMap = {
|
|
31
|
-
[CoreUserActionTypes.UPDATE_USER_DETAILS]: updateUserDetails,
|
|
32
|
-
[CoreUserActionTypes.UPDATE_USER_PREFERENCES]: updateUserPreferences,
|
|
33
|
-
[CoreUserActionTypes.UPDATE_USER_STATE]: updateUser,
|
|
34
|
-
[CoreUserActionTypes.UPDATE_USER_RIGHTS]: updateUserRights,
|
|
35
|
-
[CoreUserActionTypes.UPDATE_USER_DASHBOARD]: updateUserDashboard,
|
|
36
|
-
};
|
|
37
|
-
export const coreUserReducers = (state = initialUserState, action) => {
|
|
38
|
-
if (actionToReducerMap[action.type]) {
|
|
39
|
-
return actionToReducerMap[action.type](state, action);
|
|
40
|
-
}
|
|
41
|
-
return state;
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { CoreUserActionTypes, } from '../actions/user.actions';
|
|
2
|
+
import { initialUserState } from '@eui/base';
|
|
3
|
+
const updateUser = (state, action) => {
|
|
4
|
+
let fullName = action.payload.fullName;
|
|
5
|
+
if (!fullName) {
|
|
6
|
+
fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();
|
|
7
|
+
}
|
|
8
|
+
return Object.assign({}, state, action.payload, { fullName });
|
|
9
|
+
};
|
|
10
|
+
const updateUserDetails = (state, action) => {
|
|
11
|
+
let fullName = action.payload.fullName;
|
|
12
|
+
if (!fullName) {
|
|
13
|
+
fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();
|
|
14
|
+
}
|
|
15
|
+
// todo should be checked if state.details is really there
|
|
16
|
+
const details = Object.assign({}, state.details, action.payload, { fullName });
|
|
17
|
+
return Object.assign({}, state, details);
|
|
18
|
+
};
|
|
19
|
+
const updateUserPreferences = (state, action) => {
|
|
20
|
+
const preferences = Object.assign({}, state.preferences, action.payload);
|
|
21
|
+
return Object.assign({}, state, { preferences });
|
|
22
|
+
};
|
|
23
|
+
const updateUserRights = (state, action) => Object.assign({}, state, { rights: [...action.payload] });
|
|
24
|
+
const updateUserDashboard = (state, action) => {
|
|
25
|
+
// apply the dashboard to preferences
|
|
26
|
+
const preferences = Object.assign({}, state.preferences, { dashboard: action.payload });
|
|
27
|
+
// update the state
|
|
28
|
+
return { ...state, preferences };
|
|
29
|
+
};
|
|
30
|
+
const actionToReducerMap = {
|
|
31
|
+
[CoreUserActionTypes.UPDATE_USER_DETAILS]: updateUserDetails,
|
|
32
|
+
[CoreUserActionTypes.UPDATE_USER_PREFERENCES]: updateUserPreferences,
|
|
33
|
+
[CoreUserActionTypes.UPDATE_USER_STATE]: updateUser,
|
|
34
|
+
[CoreUserActionTypes.UPDATE_USER_RIGHTS]: updateUserRights,
|
|
35
|
+
[CoreUserActionTypes.UPDATE_USER_DASHBOARD]: updateUserDashboard,
|
|
36
|
+
};
|
|
37
|
+
export const coreUserReducers = (state = initialUserState, action) => {
|
|
38
|
+
if (actionToReducerMap[action.type]) {
|
|
39
|
+
return actionToReducerMap[action.type](state, action);
|
|
40
|
+
}
|
|
41
|
+
return state;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvdXNlci5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsbUJBQW1CLEdBT3RCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBZ0IsRUFBRSxNQUE2QixFQUFhLEVBQUU7SUFDOUUsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDdkMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNYLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUMxRjtJQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLE1BQStCLEVBQWEsRUFBRTtJQUN2RixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ1gsUUFBUSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQzFGO0lBQ0QsMERBQTBEO0lBQzFELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWdCLEVBQUUsTUFBbUMsRUFBYSxFQUFFO0lBQy9GLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxNQUE4QixFQUFhLEVBQUUsQ0FDckYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTlELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFnQixFQUFFLE1BQWlDLEVBQUUsRUFBRTtJQUNoRixxQ0FBcUM7SUFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RixtQkFBbUI7SUFDbkIsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQWdGO0lBQ3BHLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsRUFBRSxpQkFBaUI7SUFDNUQsQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLHFCQUFxQjtJQUNwRSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsVUFBVTtJQUNuRCxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsZ0JBQWdCO0lBQzFELENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsRUFBRSxtQkFBbUI7Q0FDbkUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFvRCxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxNQUF1QixFQUFFLEVBQUU7SUFDbkksSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgICBDb3JlVXNlckFjdGlvblR5cGVzLFxuICAgIENvcmVVc2VyQWN0aW9ucyxcbiAgICBVcGRhdGVVc2VyRGFzaGJvYXJkQWN0aW9uLFxuICAgIFVwZGF0ZVVzZXJTdGF0ZUFjdGlvbixcbiAgICBVcGRhdGVVc2VyRGV0YWlsc0FjdGlvbixcbiAgICBVcGRhdGVVc2VyUHJlZmVyZW5jZXNBY3Rpb24sXG4gICAgVXBkYXRlVXNlclJpZ2h0c0FjdGlvbixcbn0gZnJvbSAnLi4vYWN0aW9ucy91c2VyLmFjdGlvbnMnO1xuaW1wb3J0IHsgVXNlclN0YXRlLCBpbml0aWFsVXNlclN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcblxuY29uc3QgdXBkYXRlVXNlciA9IChzdGF0ZTogVXNlclN0YXRlLCBhY3Rpb246IFVwZGF0ZVVzZXJTdGF0ZUFjdGlvbik6IFVzZXJTdGF0ZSA9PiB7XG4gICAgbGV0IGZ1bGxOYW1lID0gYWN0aW9uLnBheWxvYWQuZnVsbE5hbWU7XG4gICAgaWYgKCFmdWxsTmFtZSkge1xuICAgICAgICBmdWxsTmFtZSA9IGAke2FjdGlvbi5wYXlsb2FkLmZpcnN0TmFtZSB8fCAnJ30gJHthY3Rpb24ucGF5bG9hZC5sYXN0TmFtZSB8fCAnJ31gLnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBhY3Rpb24ucGF5bG9hZCwgeyBmdWxsTmFtZSB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVVzZXJEZXRhaWxzID0gKHN0YXRlOiBVc2VyU3RhdGUsIGFjdGlvbjogVXBkYXRlVXNlckRldGFpbHNBY3Rpb24pOiBVc2VyU3RhdGUgPT4ge1xuICAgIGxldCBmdWxsTmFtZSA9IGFjdGlvbi5wYXlsb2FkLmZ1bGxOYW1lO1xuICAgIGlmICghZnVsbE5hbWUpIHtcbiAgICAgICAgZnVsbE5hbWUgPSBgJHthY3Rpb24ucGF5bG9hZC5maXJzdE5hbWUgfHwgJyd9ICR7YWN0aW9uLnBheWxvYWQubGFzdE5hbWUgfHwgJyd9YC50cmltKCk7XG4gICAgfVxuICAgIC8vIHRvZG8gc2hvdWxkIGJlIGNoZWNrZWQgaWYgc3RhdGUuZGV0YWlscyBpcyByZWFsbHkgdGhlcmVcbiAgICBjb25zdCBkZXRhaWxzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZGV0YWlscywgYWN0aW9uLnBheWxvYWQsIHsgZnVsbE5hbWUgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBkZXRhaWxzKTtcbn07XG5cbmNvbnN0IHVwZGF0ZVVzZXJQcmVmZXJlbmNlcyA9IChzdGF0ZTogVXNlclN0YXRlLCBhY3Rpb246IFVwZGF0ZVVzZXJQcmVmZXJlbmNlc0FjdGlvbik6IFVzZXJTdGF0ZSA9PiB7XG4gICAgY29uc3QgcHJlZmVyZW5jZXMgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5wcmVmZXJlbmNlcywgYWN0aW9uLnBheWxvYWQpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyBwcmVmZXJlbmNlcyB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVVzZXJSaWdodHMgPSAoc3RhdGU6IFVzZXJTdGF0ZSwgYWN0aW9uOiBVcGRhdGVVc2VyUmlnaHRzQWN0aW9uKTogVXNlclN0YXRlID0+XG4gICAgT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHsgcmlnaHRzOiBbLi4uYWN0aW9uLnBheWxvYWRdIH0pO1xuXG5jb25zdCB1cGRhdGVVc2VyRGFzaGJvYXJkID0gKHN0YXRlOiBVc2VyU3RhdGUsIGFjdGlvbjogVXBkYXRlVXNlckRhc2hib2FyZEFjdGlvbikgPT4ge1xuICAgIC8vIGFwcGx5IHRoZSBkYXNoYm9hcmQgdG8gcHJlZmVyZW5jZXNcbiAgICBjb25zdCBwcmVmZXJlbmNlcyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnByZWZlcmVuY2VzLCB7IGRhc2hib2FyZDogYWN0aW9uLnBheWxvYWQgfSk7XG4gICAgLy8gdXBkYXRlIHRoZSBzdGF0ZVxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBwcmVmZXJlbmNlcyB9O1xufTtcblxuY29uc3QgYWN0aW9uVG9SZWR1Y2VyTWFwOiB7IFtrZXk6IHN0cmluZ106IChzdGF0ZTogVXNlclN0YXRlLCBhY3Rpb246IENvcmVVc2VyQWN0aW9ucykgPT4gVXNlclN0YXRlIH0gPSB7XG4gICAgW0NvcmVVc2VyQWN0aW9uVHlwZXMuVVBEQVRFX1VTRVJfREVUQUlMU106IHVwZGF0ZVVzZXJEZXRhaWxzLFxuICAgIFtDb3JlVXNlckFjdGlvblR5cGVzLlVQREFURV9VU0VSX1BSRUZFUkVOQ0VTXTogdXBkYXRlVXNlclByZWZlcmVuY2VzLFxuICAgIFtDb3JlVXNlckFjdGlvblR5cGVzLlVQREFURV9VU0VSX1NUQVRFXTogdXBkYXRlVXNlcixcbiAgICBbQ29yZVVzZXJBY3Rpb25UeXBlcy5VUERBVEVfVVNFUl9SSUdIVFNdOiB1cGRhdGVVc2VyUmlnaHRzLFxuICAgIFtDb3JlVXNlckFjdGlvblR5cGVzLlVQREFURV9VU0VSX0RBU0hCT0FSRF06IHVwZGF0ZVVzZXJEYXNoYm9hcmQsXG59O1xuXG5leHBvcnQgY29uc3QgY29yZVVzZXJSZWR1Y2VyczogKHN0YXRlOiBVc2VyU3RhdGUsIGFjdGlvbjogQWN0aW9uKSA9PiBVc2VyU3RhdGUgPSAoc3RhdGUgPSBpbml0aWFsVXNlclN0YXRlLCBhY3Rpb246IENvcmVVc2VyQWN0aW9ucykgPT4ge1xuICAgIGlmIChhY3Rpb25Ub1JlZHVjZXJNYXBbYWN0aW9uLnR5cGVdKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb25Ub1JlZHVjZXJNYXBbYWN0aW9uLnR5cGVdKHN0YXRlLCBhY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG59O1xuIl19
|
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
-
import { InitStoreAction } from './actions/app.actions';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ngrx/store";
|
|
7
|
-
import * as i2 from "../log/index";
|
|
8
|
-
export var BrowserStorageType;
|
|
9
|
-
(function (BrowserStorageType) {
|
|
10
|
-
BrowserStorageType[BrowserStorageType["local"] = 0] = "local";
|
|
11
|
-
BrowserStorageType[BrowserStorageType["session"] = 1] = "session";
|
|
12
|
-
})(BrowserStorageType || (BrowserStorageType = {}));
|
|
13
|
-
// todo should stay here but all the store directory should be moved upper level
|
|
14
|
-
export class StoreService {
|
|
15
|
-
constructor(store, logService) {
|
|
16
|
-
this.store = store;
|
|
17
|
-
this.logService = logService;
|
|
18
|
-
/**
|
|
19
|
-
* autoSave handlers to call before saving in local Storage
|
|
20
|
-
*/
|
|
21
|
-
this._autoSaveHandlers = {};
|
|
22
|
-
/** storage instance e.g. localStorage, sessionStorage */
|
|
23
|
-
this._storage = localStorage;
|
|
24
|
-
}
|
|
25
|
-
// use init with just version info, to update to user state, UserService.updateState
|
|
26
|
-
// initializeStore(version?: string, userDetails?: BaseUserDetails) {
|
|
27
|
-
// this.dispatch(new InitStoreAction({ version, userDetails }));
|
|
28
|
-
// }
|
|
29
|
-
init(version, storageType) {
|
|
30
|
-
this.dispatch(new InitStoreAction({ version }));
|
|
31
|
-
this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
|
|
32
|
-
}
|
|
33
|
-
addAutoSaveHandler(stateSlice, handler) {
|
|
34
|
-
if (!this.store) {
|
|
35
|
-
if (this.logService) {
|
|
36
|
-
this.logService.warn('StoreService.addAutoSaveHandler() not available without NGRX');
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
this._autoSaveHandlers[stateSlice] = handler;
|
|
41
|
-
}
|
|
42
|
-
handleAutoSave() {
|
|
43
|
-
if (!this.store) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
this.store.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((state) => {
|
|
47
|
-
this.saveState(state);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Proxy to NGRX store.dispatch()
|
|
52
|
-
* that allows to intercept if the store is present
|
|
53
|
-
*/
|
|
54
|
-
dispatch(action) {
|
|
55
|
-
if (this.store) {
|
|
56
|
-
return this.store.dispatch(action);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
dispatchAction(state, actionKey, reducer) {
|
|
60
|
-
if (this.store) {
|
|
61
|
-
this.store.addReducer(actionKey, reducer);
|
|
62
|
-
return this.store.dispatch({ type: actionKey, payload: state });
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Proxy to NGRX store.select()
|
|
67
|
-
* that allows to intercept if the store is present
|
|
68
|
-
*/
|
|
69
|
-
select(key) {
|
|
70
|
-
if (!this.store) {
|
|
71
|
-
return throwError(() => new Error('NGRX Store not configured'));
|
|
72
|
-
}
|
|
73
|
-
return this.store.select(key);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* filters and save the state with the Browser storage
|
|
77
|
-
* @param state type of CoreState
|
|
78
|
-
*/
|
|
79
|
-
saveState(state) {
|
|
80
|
-
let stateToSave = {
|
|
81
|
-
app: state.app,
|
|
82
|
-
};
|
|
83
|
-
if (state.user) {
|
|
84
|
-
const { userId, preferences } = state.user;
|
|
85
|
-
stateToSave.user = { userId, preferences };
|
|
86
|
-
}
|
|
87
|
-
Object.keys(this._autoSaveHandlers).forEach((sliceState) => {
|
|
88
|
-
const handler = this._autoSaveHandlers[sliceState];
|
|
89
|
-
stateToSave = Object.assign(stateToSave, { [sliceState]: handler(state[sliceState]) });
|
|
90
|
-
});
|
|
91
|
-
try {
|
|
92
|
-
const serializedState = JSON.stringify(stateToSave);
|
|
93
|
-
this._storage.setItem('state', serializedState);
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
// Ignore write errors.
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/** @nocollapse */ StoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, deps: [{ token: i1.Store, optional: true }, { token: i2.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
-
/** @nocollapse */ StoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, providedIn: 'root' });
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, decorators: [{
|
|
103
|
-
type: Injectable,
|
|
104
|
-
args: [{
|
|
105
|
-
providedIn: 'root',
|
|
106
|
-
}]
|
|
107
|
-
}], ctorParameters: function () { return [{ type: i1.Store, decorators: [{
|
|
108
|
-
type: Optional
|
|
109
|
-
}] }, { type: i2.LogService, decorators: [{
|
|
110
|
-
type: Optional
|
|
111
|
-
}] }]; } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { throwError } from 'rxjs';
|
|
3
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
+
import { InitStoreAction } from './actions/app.actions';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngrx/store";
|
|
7
|
+
import * as i2 from "../log/index";
|
|
8
|
+
export var BrowserStorageType;
|
|
9
|
+
(function (BrowserStorageType) {
|
|
10
|
+
BrowserStorageType[BrowserStorageType["local"] = 0] = "local";
|
|
11
|
+
BrowserStorageType[BrowserStorageType["session"] = 1] = "session";
|
|
12
|
+
})(BrowserStorageType || (BrowserStorageType = {}));
|
|
13
|
+
// todo should stay here but all the store directory should be moved upper level
|
|
14
|
+
export class StoreService {
|
|
15
|
+
constructor(store, logService) {
|
|
16
|
+
this.store = store;
|
|
17
|
+
this.logService = logService;
|
|
18
|
+
/**
|
|
19
|
+
* autoSave handlers to call before saving in local Storage
|
|
20
|
+
*/
|
|
21
|
+
this._autoSaveHandlers = {};
|
|
22
|
+
/** storage instance e.g. localStorage, sessionStorage */
|
|
23
|
+
this._storage = localStorage;
|
|
24
|
+
}
|
|
25
|
+
// use init with just version info, to update to user state, UserService.updateState
|
|
26
|
+
// initializeStore(version?: string, userDetails?: BaseUserDetails) {
|
|
27
|
+
// this.dispatch(new InitStoreAction({ version, userDetails }));
|
|
28
|
+
// }
|
|
29
|
+
init(version, storageType) {
|
|
30
|
+
this.dispatch(new InitStoreAction({ version }));
|
|
31
|
+
this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;
|
|
32
|
+
}
|
|
33
|
+
addAutoSaveHandler(stateSlice, handler) {
|
|
34
|
+
if (!this.store) {
|
|
35
|
+
if (this.logService) {
|
|
36
|
+
this.logService.warn('StoreService.addAutoSaveHandler() not available without NGRX');
|
|
37
|
+
}
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this._autoSaveHandlers[stateSlice] = handler;
|
|
41
|
+
}
|
|
42
|
+
handleAutoSave() {
|
|
43
|
+
if (!this.store) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.store.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((state) => {
|
|
47
|
+
this.saveState(state);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Proxy to NGRX store.dispatch()
|
|
52
|
+
* that allows to intercept if the store is present
|
|
53
|
+
*/
|
|
54
|
+
dispatch(action) {
|
|
55
|
+
if (this.store) {
|
|
56
|
+
return this.store.dispatch(action);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
dispatchAction(state, actionKey, reducer) {
|
|
60
|
+
if (this.store) {
|
|
61
|
+
this.store.addReducer(actionKey, reducer);
|
|
62
|
+
return this.store.dispatch({ type: actionKey, payload: state });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Proxy to NGRX store.select()
|
|
67
|
+
* that allows to intercept if the store is present
|
|
68
|
+
*/
|
|
69
|
+
select(key) {
|
|
70
|
+
if (!this.store) {
|
|
71
|
+
return throwError(() => new Error('NGRX Store not configured'));
|
|
72
|
+
}
|
|
73
|
+
return this.store.select(key);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* filters and save the state with the Browser storage
|
|
77
|
+
* @param state type of CoreState
|
|
78
|
+
*/
|
|
79
|
+
saveState(state) {
|
|
80
|
+
let stateToSave = {
|
|
81
|
+
app: state.app,
|
|
82
|
+
};
|
|
83
|
+
if (state.user) {
|
|
84
|
+
const { userId, preferences } = state.user;
|
|
85
|
+
stateToSave.user = { userId, preferences };
|
|
86
|
+
}
|
|
87
|
+
Object.keys(this._autoSaveHandlers).forEach((sliceState) => {
|
|
88
|
+
const handler = this._autoSaveHandlers[sliceState];
|
|
89
|
+
stateToSave = Object.assign(stateToSave, { [sliceState]: handler(state[sliceState]) });
|
|
90
|
+
});
|
|
91
|
+
try {
|
|
92
|
+
const serializedState = JSON.stringify(stateToSave);
|
|
93
|
+
this._storage.setItem('state', serializedState);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
// Ignore write errors.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** @nocollapse */ StoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, deps: [{ token: i1.Store, optional: true }, { token: i2.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
+
/** @nocollapse */ StoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, providedIn: 'root' });
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreService, decorators: [{
|
|
103
|
+
type: Injectable,
|
|
104
|
+
args: [{
|
|
105
|
+
providedIn: 'root',
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: function () { return [{ type: i1.Store, decorators: [{
|
|
108
|
+
type: Optional
|
|
109
|
+
}] }, { type: i2.LogService, decorators: [{
|
|
110
|
+
type: Optional
|
|
111
|
+
}] }]; } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFHeEQsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQiw2REFBSyxDQUFBO0lBQ0wsaUVBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBRzdCO0FBRUQsZ0ZBQWdGO0FBSWhGLE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQWtDLEtBQWlCLEVBQXdCLFVBQXNCO1FBQS9ELFVBQUssR0FBTCxLQUFLLENBQVk7UUFBd0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVBqRzs7V0FFRztRQUNPLHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFDOUQseURBQXlEO1FBQ2pELGFBQVEsR0FBWSxZQUFZLENBQUM7SUFFMkQsQ0FBQztJQUVyRyxvRkFBb0Y7SUFDcEYscUVBQXFFO0lBQ3JFLG9FQUFvRTtJQUNwRSxJQUFJO0lBQ0osSUFBSSxDQUFDLE9BQWdCLEVBQUUsV0FBZ0M7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQy9GLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFrQixFQUFFLE9BQWlCO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO2FBQ3hGO1lBQ0QsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxNQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVUsRUFBRSxTQUFjLEVBQUUsT0FBbUM7UUFDMUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxHQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDTyxTQUFTLENBQUMsS0FBZ0I7UUFDaEMsSUFBSSxXQUFXLEdBQWM7WUFDekIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2pCLENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDWixNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDM0MsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUM5QztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFO1lBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJO1lBQ0EsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7U0FDbkQ7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLHVCQUF1QjtTQUMxQjtJQUNMLENBQUM7OzRIQTdGUSxZQUFZO2dJQUFaLFlBQVksY0FGVCxNQUFNOzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFTZ0IsUUFBUTs7MEJBQWlDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25SZWR1Y2VyLCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2cvaW5kZXgnO1xuaW1wb3J0IHsgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL2FwcC5hY3Rpb25zJztcbmltcG9ydCB7IENvcmVTdGF0ZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmV4cG9ydCBlbnVtIEJyb3dzZXJTdG9yYWdlVHlwZSB7XG4gICAgbG9jYWwsXG4gICAgc2Vzc2lvbixcbn1cblxuLy8gdG9kbyBzaG91bGQgc3RheSBoZXJlIGJ1dCBhbGwgdGhlIHN0b3JlIGRpcmVjdG9yeSBzaG91bGQgYmUgbW92ZWQgdXBwZXIgbGV2ZWxcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogYXV0b1NhdmUgaGFuZGxlcnMgdG8gY2FsbCBiZWZvcmUgc2F2aW5nIGluIGxvY2FsIFN0b3JhZ2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2F1dG9TYXZlSGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSA9IHt9O1xuICAgIC8qKiBzdG9yYWdlIGluc3RhbmNlIGUuZy4gbG9jYWxTdG9yYWdlLCBzZXNzaW9uU3RvcmFnZSAqL1xuICAgIHByaXZhdGUgX3N0b3JhZ2U6IFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4sIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlKSB7fVxuXG4gICAgLy8gdXNlIGluaXQgd2l0aCBqdXN0IHZlcnNpb24gaW5mbywgdG8gdXBkYXRlIHRvIHVzZXIgc3RhdGUsIFVzZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlXG4gICAgLy8gaW5pdGlhbGl6ZVN0b3JlKHZlcnNpb24/OiBzdHJpbmcsIHVzZXJEZXRhaWxzPzogQmFzZVVzZXJEZXRhaWxzKSB7XG4gICAgLy8gICAgIHRoaXMuZGlzcGF0Y2gobmV3IEluaXRTdG9yZUFjdGlvbih7IHZlcnNpb24sIHVzZXJEZXRhaWxzIH0pKTtcbiAgICAvLyB9XG4gICAgaW5pdCh2ZXJzaW9uPzogc3RyaW5nLCBzdG9yYWdlVHlwZT86IEJyb3dzZXJTdG9yYWdlVHlwZSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKG5ldyBJbml0U3RvcmVBY3Rpb24oeyB2ZXJzaW9uIH0pKTtcblxuICAgICAgICB0aGlzLl9zdG9yYWdlID0gc3RvcmFnZVR5cGUgPT09IEJyb3dzZXJTdG9yYWdlVHlwZS5zZXNzaW9uID8gc2Vzc2lvblN0b3JhZ2UgOiBsb2NhbFN0b3JhZ2U7XG4gICAgfVxuXG4gICAgYWRkQXV0b1NhdmVIYW5kbGVyKHN0YXRlU2xpY2U6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2dTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLndhcm4oJ1N0b3JlU2VydmljZS5hZGRBdXRvU2F2ZUhhbmRsZXIoKSBub3QgYXZhaWxhYmxlIHdpdGhvdXQgTkdSWCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2F1dG9TYXZlSGFuZGxlcnNbc3RhdGVTbGljZV0gPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGhhbmRsZUF1dG9TYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJveHkgdG8gTkdSWCBzdG9yZS5kaXNwYXRjaCgpXG4gICAgICogdGhhdCBhbGxvd3MgdG8gaW50ZXJjZXB0IGlmIHRoZSBzdG9yZSBpcyBwcmVzZW50XG4gICAgICovXG4gICAgZGlzcGF0Y2goYWN0aW9uOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmRpc3BhdGNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwYXRjaEFjdGlvbihzdGF0ZTogYW55LCBhY3Rpb25LZXk6IGFueSwgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxhbnksIEFjdGlvbj4pIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuYWRkUmVkdWNlcihhY3Rpb25LZXksIHJlZHVjZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBhY3Rpb25LZXksIHBheWxvYWQ6IHN0YXRlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJveHkgdG8gTkdSWCBzdG9yZS5zZWxlY3QoKVxuICAgICAqIHRoYXQgYWxsb3dzIHRvIGludGVyY2VwdCBpZiB0aGUgc3RvcmUgaXMgcHJlc2VudFxuICAgICAqL1xuICAgIHNlbGVjdChrZXk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdOR1JYIFN0b3JlIG5vdCBjb25maWd1cmVkJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlcnMgYW5kIHNhdmUgdGhlIHN0YXRlIHdpdGggdGhlIEJyb3dzZXIgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBzdGF0ZSB0eXBlIG9mIENvcmVTdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzYXZlU3RhdGUoc3RhdGU6IENvcmVTdGF0ZSkge1xuICAgICAgICBsZXQgc3RhdGVUb1NhdmU6IENvcmVTdGF0ZSA9IHtcbiAgICAgICAgICAgIGFwcDogc3RhdGUuYXBwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGF0ZS51c2VyKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXJJZCwgcHJlZmVyZW5jZXMgfSA9IHN0YXRlLnVzZXI7XG4gICAgICAgICAgICBzdGF0ZVRvU2F2ZS51c2VyID0geyB1c2VySWQsIHByZWZlcmVuY2VzIH07XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzKS5mb3JFYWNoKChzbGljZVN0YXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9hdXRvU2F2ZUhhbmRsZXJzW3NsaWNlU3RhdGVdO1xuICAgICAgICAgICAgc3RhdGVUb1NhdmUgPSBPYmplY3QuYXNzaWduKHN0YXRlVG9TYXZlLCB7IFtzbGljZVN0YXRlXTogaGFuZGxlcihzdGF0ZVtzbGljZVN0YXRlXSkgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBKU09OLnN0cmluZ2lmeShzdGF0ZVRvU2F2ZSk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc2VyaWFsaXplZFN0YXRlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgd3JpdGUgZXJyb3JzLlxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { of } from 'rxjs';
|
|
2
|
-
import { StoreService } from './store.service';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class StoreServiceMock extends StoreService {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(null, null);
|
|
8
|
-
}
|
|
9
|
-
init() { }
|
|
10
|
-
addAutoSaveHandler() { }
|
|
11
|
-
handleAutoSave() { }
|
|
12
|
-
dispatch() { }
|
|
13
|
-
select() {
|
|
14
|
-
return of({});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/** @nocollapse */ StoreServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
-
/** @nocollapse */ StoreServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock });
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock, decorators: [{
|
|
20
|
-
type: Injectable
|
|
21
|
-
}], ctorParameters: function () { return []; } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { StoreService } from './store.service';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class StoreServiceMock extends StoreService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(null, null);
|
|
8
|
+
}
|
|
9
|
+
init() { }
|
|
10
|
+
addAutoSaveHandler() { }
|
|
11
|
+
handleAutoSave() { }
|
|
12
|
+
dispatch() { }
|
|
13
|
+
select() {
|
|
14
|
+
return of({});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** @nocollapse */ StoreServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
/** @nocollapse */ StoreServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: StoreServiceMock, decorators: [{
|
|
20
|
+
type: Injectable
|
|
21
|
+
}], ctorParameters: function () { return []; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc2VydmljZS5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS9zdG9yZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFDOUM7UUFDSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLEtBQUksQ0FBQztJQUVULGtCQUFrQixLQUFJLENBQUM7SUFFdkIsY0FBYyxLQUFJLENBQUM7SUFFbkIsUUFBUSxLQUFJLENBQUM7SUFFYixNQUFNO1FBQ0YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs7Z0lBZlEsZ0JBQWdCO29JQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVTZXJ2aWNlTW9jayBleHRlbmRzIFN0b3JlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgIGluaXQoKSB7fVxuXG4gICAgYWRkQXV0b1NhdmVIYW5kbGVyKCkge31cblxuICAgIGhhbmRsZUF1dG9TYXZlKCkge31cblxuICAgIGRpc3BhdGNoKCkge31cblxuICAgIHNlbGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './user.service';
|
|
2
|
-
export * from './user.service.mock';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './user.service';
|
|
2
|
+
export * from './user.service.mock';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3VzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLnNlcnZpY2UubW9jayc7XG4iXX0=
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { EuiService, getUserState } from '@eui/base';
|
|
4
|
-
import { UpdateUserStateAction } from '../store/actions';
|
|
5
|
-
import { createSelector } from '@ngrx/store';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../store/store.service";
|
|
8
|
-
// export const USER_API_CONFIG_TOKEN = new InjectionToken<UserApiConfig>('USER_API_CONFIG');
|
|
9
|
-
// export const DEFAULT_USER_PREFERENCES_TOKEN = new InjectionToken<BaseUserPreferences>('DEFAULT_USER_PREFERENCES');
|
|
10
|
-
export class UserService extends EuiService {
|
|
11
|
-
constructor(store) {
|
|
12
|
-
super({ userId: 'annonymous' });
|
|
13
|
-
this.store = store;
|
|
14
|
-
}
|
|
15
|
-
init(userState) {
|
|
16
|
-
super.initEuiService();
|
|
17
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
18
|
-
if (typeof userState === 'object' && userState.hasOwnProperty('userId')) {
|
|
19
|
-
this.updateState(userState);
|
|
20
|
-
return of({ success: true });
|
|
21
|
-
}
|
|
22
|
-
return of({ success: false, error: 'Init object should be instance of BaseUserState' });
|
|
23
|
-
}
|
|
24
|
-
getState(keyOrMapFn) {
|
|
25
|
-
let selector = getUserState;
|
|
26
|
-
let dotNotationToObject = (obj, key) => key.split('.').reduce((slice, i) => slice[i], obj);
|
|
27
|
-
if (keyOrMapFn) {
|
|
28
|
-
switch (typeof keyOrMapFn) {
|
|
29
|
-
case 'function':
|
|
30
|
-
selector = createSelector(getUserState, keyOrMapFn);
|
|
31
|
-
break;
|
|
32
|
-
case 'string':
|
|
33
|
-
selector = createSelector(getUserState, (state) => dotNotationToObject(state, keyOrMapFn));
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return this.store.select(selector);
|
|
38
|
-
}
|
|
39
|
-
updateState(userState, reducer) {
|
|
40
|
-
// if (typeof pathOrReducer === 'string') {
|
|
41
|
-
// let dotNotationToObject = (obj, key) => key.split('.').reduce((obj, i) => obj[i], obj);
|
|
42
|
-
//
|
|
43
|
-
// const customReducer = (state: UserState, action: UpdateUserDetailsAction): UserState => {
|
|
44
|
-
// return Object.assign({}, dotNotationToObject(state, pathOrReducer), action.payload);
|
|
45
|
-
// };
|
|
46
|
-
// this.store.dispatchAction(userState, 'user', customReducer);
|
|
47
|
-
// }
|
|
48
|
-
if (reducer) {
|
|
49
|
-
this.store.dispatchAction(userState, 'user', reducer);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.store.dispatch(new UpdateUserStateAction(userState));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/** @nocollapse */ UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, deps: [{ token: i1.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
|
-
/** @nocollapse */ UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, providedIn: 'root' });
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, decorators: [{
|
|
59
|
-
type: Injectable,
|
|
60
|
-
args: [{
|
|
61
|
-
providedIn: 'root',
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: function () { return [{ type: i1.StoreService }]; } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { EuiService, getUserState } from '@eui/base';
|
|
4
|
+
import { UpdateUserStateAction } from '../store/actions';
|
|
5
|
+
import { createSelector } from '@ngrx/store';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../store/store.service";
|
|
8
|
+
// export const USER_API_CONFIG_TOKEN = new InjectionToken<UserApiConfig>('USER_API_CONFIG');
|
|
9
|
+
// export const DEFAULT_USER_PREFERENCES_TOKEN = new InjectionToken<BaseUserPreferences>('DEFAULT_USER_PREFERENCES');
|
|
10
|
+
export class UserService extends EuiService {
|
|
11
|
+
constructor(store) {
|
|
12
|
+
super({ userId: 'annonymous' });
|
|
13
|
+
this.store = store;
|
|
14
|
+
}
|
|
15
|
+
init(userState) {
|
|
16
|
+
super.initEuiService();
|
|
17
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
18
|
+
if (typeof userState === 'object' && userState.hasOwnProperty('userId')) {
|
|
19
|
+
this.updateState(userState);
|
|
20
|
+
return of({ success: true });
|
|
21
|
+
}
|
|
22
|
+
return of({ success: false, error: 'Init object should be instance of BaseUserState' });
|
|
23
|
+
}
|
|
24
|
+
getState(keyOrMapFn) {
|
|
25
|
+
let selector = getUserState;
|
|
26
|
+
let dotNotationToObject = (obj, key) => key.split('.').reduce((slice, i) => slice[i], obj);
|
|
27
|
+
if (keyOrMapFn) {
|
|
28
|
+
switch (typeof keyOrMapFn) {
|
|
29
|
+
case 'function':
|
|
30
|
+
selector = createSelector(getUserState, keyOrMapFn);
|
|
31
|
+
break;
|
|
32
|
+
case 'string':
|
|
33
|
+
selector = createSelector(getUserState, (state) => dotNotationToObject(state, keyOrMapFn));
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return this.store.select(selector);
|
|
38
|
+
}
|
|
39
|
+
updateState(userState, reducer) {
|
|
40
|
+
// if (typeof pathOrReducer === 'string') {
|
|
41
|
+
// let dotNotationToObject = (obj, key) => key.split('.').reduce((obj, i) => obj[i], obj);
|
|
42
|
+
//
|
|
43
|
+
// const customReducer = (state: UserState, action: UpdateUserDetailsAction): UserState => {
|
|
44
|
+
// return Object.assign({}, dotNotationToObject(state, pathOrReducer), action.payload);
|
|
45
|
+
// };
|
|
46
|
+
// this.store.dispatchAction(userState, 'user', customReducer);
|
|
47
|
+
// }
|
|
48
|
+
if (reducer) {
|
|
49
|
+
this.store.dispatchAction(userState, 'user', reducer);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.store.dispatch(new UpdateUserStateAction(userState));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** @nocollapse */ UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, deps: [{ token: i1.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
|
+
/** @nocollapse */ UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, providedIn: 'root' });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserService, decorators: [{
|
|
59
|
+
type: Injectable,
|
|
60
|
+
args: [{
|
|
61
|
+
providedIn: 'root',
|
|
62
|
+
}]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.StoreService }]; } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy91c2VyL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBb0IsWUFBWSxFQUFhLE1BQU0sV0FBVyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUU3Qyw2RkFBNkY7QUFDN0YscUhBQXFIO0FBS3JILE1BQU0sT0FBTyxXQUE2QyxTQUFRLFVBQXlCO0lBQ3ZGLFlBQXNCLEtBQW1CO1FBQ3JDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRGQsVUFBSyxHQUFMLEtBQUssQ0FBYztJQUV6QyxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVk7UUFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsaURBQWlEO1FBQ2pELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpREFBaUQsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUlELFFBQVEsQ0FBSSxVQUF1QztRQUMvQyxJQUFJLFFBQVEsR0FBUSxZQUFZLENBQUM7UUFDakMsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTNGLElBQUksVUFBVSxFQUFFO1lBQ1osUUFBUSxPQUFPLFVBQVUsRUFBRTtnQkFDdkIsS0FBSyxVQUFVO29CQUNYLFFBQVEsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNwRCxNQUFNO2dCQUNWLEtBQUssUUFBUTtvQkFDVCxRQUFRLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQzNGLE1BQU07YUFDYjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBS0QsV0FBVyxDQUFJLFNBQWdCLEVBQUUsT0FBYTtRQUMxQywyQ0FBMkM7UUFDM0MsOEZBQThGO1FBQzlGLEVBQUU7UUFDRixnR0FBZ0c7UUFDaEcsK0ZBQStGO1FBQy9GLFNBQVM7UUFDVCxtRUFBbUU7UUFDbkUsSUFBSTtRQUVKLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN6RDthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxTQUFnQixDQUFDLENBQUMsQ0FBQztTQUNwRTtJQUNMLENBQUM7OzJIQXJEUSxXQUFXOytIQUFYLFdBQVcsY0FGUixNQUFNOzJGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV1aVNlcnZpY2UsIEV1aVNlcnZpY2VTdGF0dXMsIGdldFVzZXJTdGF0ZSwgVXNlclN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBkYXRlVXNlclN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUvYWN0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuLy8gZXhwb3J0IGNvbnN0IFVTRVJfQVBJX0NPTkZJR19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVc2VyQXBpQ29uZmlnPignVVNFUl9BUElfQ09ORklHJyk7XG4vLyBleHBvcnQgY29uc3QgREVGQVVMVF9VU0VSX1BSRUZFUkVOQ0VTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEJhc2VVc2VyUHJlZmVyZW5jZXM+KCdERUZBVUxUX1VTRVJfUFJFRkVSRU5DRVMnKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2U8VCBleHRlbmRzIFVzZXJTdGF0ZSA9IFVzZXJTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBVc2VyU3RhdGU+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSkge1xuICAgICAgICBzdXBlcih7IHVzZXJJZDogJ2Fubm9ueW1vdXMnIH0pO1xuICAgIH1cblxuICAgIGluaXQodXNlclN0YXRlOiBUKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VyU3RhdGUgPT09ICdvYmplY3QnICYmIHVzZXJTdGF0ZS5oYXNPd25Qcm9wZXJ0eSgndXNlcklkJykpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUodXNlclN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAnSW5pdCBvYmplY3Qgc2hvdWxkIGJlIGluc3RhbmNlIG9mIEJhc2VVc2VyU3RhdGUnIH0pO1xuICAgIH1cblxuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgZ2V0U3RhdGU8YSBleHRlbmRzIGtleW9mIFQ+KGtleT86IGEpOiBPYnNlcnZhYmxlPFRbYV0+O1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IGFueSA9IGdldFVzZXJTdGF0ZTtcbiAgICAgICAgbGV0IGRvdE5vdGF0aW9uVG9PYmplY3QgPSAob2JqLCBrZXkpID0+IGtleS5zcGxpdCgnLicpLnJlZHVjZSgoc2xpY2UsIGkpID0+IHNsaWNlW2ldLCBvYmopO1xuXG4gICAgICAgIGlmIChrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldFVzZXJTdGF0ZSwga2V5T3JNYXBGbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0VXNlclN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3Qoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlPEsgPSBUPih1c2VyU3RhdGU6IFQpO1xuICAgIC8vIHVwZGF0ZVN0YXRlPGEgZXh0ZW5kcyBrZXlvZiBUPihzbGljZTogVFthXSwgcGF0aDogc3RyaW5nKTtcbiAgICB1cGRhdGVTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oc2xpY2U6IFRbYV0sIHJlZHVjZXI6IChzdGF0ZTogYW55LCBhY3Rpb246IFRbYV0pID0+IGFueSk7XG4gICAgdXBkYXRlU3RhdGU8Sz4odXNlclN0YXRlOiBLIHwgVCwgcmVkdWNlcj86IGFueSkge1xuICAgICAgICAvLyBpZiAodHlwZW9mIHBhdGhPclJlZHVjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vICAgICBsZXQgZG90Tm90YXRpb25Ub09iamVjdCA9IChvYmosIGtleSkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChvYmosIGkpID0+IG9ialtpXSwgb2JqKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgIGNvbnN0IGN1c3RvbVJlZHVjZXIgPSAoc3RhdGU6IFVzZXJTdGF0ZSwgYWN0aW9uOiBVcGRhdGVVc2VyRGV0YWlsc0FjdGlvbik6IFVzZXJTdGF0ZSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIHBhdGhPclJlZHVjZXIpLCBhY3Rpb24ucGF5bG9hZCk7XG4gICAgICAgIC8vICAgICB9O1xuICAgICAgICAvLyAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaEFjdGlvbih1c2VyU3RhdGUsICd1c2VyJywgY3VzdG9tUmVkdWNlcik7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaEFjdGlvbih1c2VyU3RhdGUsICd1c2VyJywgcmVkdWNlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVVc2VyU3RhdGVBY3Rpb24odXNlclN0YXRlIGFzIGFueSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|