@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,137 +1,137 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { of, forkJoin } from 'rxjs';
|
|
3
|
-
import { tap, switchMap, take, map, catchError, concatMap } from 'rxjs/operators';
|
|
4
|
-
import { getApiQueue, getApiQueueItem } from '@eui/base';
|
|
5
|
-
import { AddApiQueueItemAction, RemoveApiQueueItemAction, EmptyApiQueueAction } from '../store/index';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../store/store.service";
|
|
8
|
-
import * as i2 from "@angular/common/http";
|
|
9
|
-
import * as i3 from "../log/log.service";
|
|
10
|
-
export class ApiQueueService {
|
|
11
|
-
constructor(store, http, logService) {
|
|
12
|
-
this.store = store;
|
|
13
|
-
this.http = http;
|
|
14
|
-
this.logService = logService;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Adds an item in the queue by dispatching an action to the store.
|
|
18
|
-
* @param id - The id of the item inside the queue.
|
|
19
|
-
* WARNING if matches any other queue item id will overwrite it.
|
|
20
|
-
* @param item - an item for Queue
|
|
21
|
-
*/
|
|
22
|
-
addQueueItem(id, item) {
|
|
23
|
-
const allowedMethods = ['post', 'put', 'get'];
|
|
24
|
-
if (allowedMethods.indexOf(item.method) < 0) {
|
|
25
|
-
throw new Error(`[ApiQueue] method "${item.method}" is not allowed`);
|
|
26
|
-
}
|
|
27
|
-
this.store.dispatch(new AddApiQueueItemAction({ id, item }));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Subscribes to the store to retrieve queue and then converts the queue object to an array of items.
|
|
31
|
-
* @return An Observable of array of all items inside the current queue (ApiQueueItem[])
|
|
32
|
-
*/
|
|
33
|
-
getQueue() {
|
|
34
|
-
return this.store.select(getApiQueue).pipe(take(1), map((queue) => {
|
|
35
|
-
const queueArray = queue && Object.values(queue);
|
|
36
|
-
if (!queueArray || queueArray.length < 1) {
|
|
37
|
-
this.logService.warn('No items in the queue exist.');
|
|
38
|
-
}
|
|
39
|
-
return queueArray;
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Subscribes to the store to retrieve an item from the queue.
|
|
44
|
-
* @param id - id of the item inside the queue
|
|
45
|
-
* @return An Observable of ApiQueueItem type
|
|
46
|
-
*/
|
|
47
|
-
getQueueItem(id) {
|
|
48
|
-
return this.store.select(getApiQueueItem(id)).pipe(take(1), map((queue) => {
|
|
49
|
-
if (!queue) {
|
|
50
|
-
this.logService.warn(`Queue item with id "${id}" does not exist`);
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
return queue;
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Removes a given item from the queue.
|
|
58
|
-
* @param id - id of the item inside the queue
|
|
59
|
-
*/
|
|
60
|
-
removeQueueItem(id) {
|
|
61
|
-
this.store.dispatch(new RemoveApiQueueItemAction(id));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Removes all items placed in the queue.
|
|
65
|
-
*/
|
|
66
|
-
removeAllQueueItem() {
|
|
67
|
-
this.store.dispatch(new EmptyApiQueueAction(null));
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Process an item from the queue.
|
|
71
|
-
* @param id - id of the item inside the queue
|
|
72
|
-
* @return An Observable of type any
|
|
73
|
-
*/
|
|
74
|
-
processQueueItem(id) {
|
|
75
|
-
return this.store.select(getApiQueueItem(id)).pipe(take(1), switchMap((queue) => {
|
|
76
|
-
if (!queue) {
|
|
77
|
-
this.logService.warn(`Queue item with id "${id}" does not exist`);
|
|
78
|
-
return of(null);
|
|
79
|
-
}
|
|
80
|
-
return this.buildHttpRequest(id, queue);
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Process all the items inside the queue.
|
|
85
|
-
* @param [continueOnError=true] - in case of an item request fails continue with the rest in queue
|
|
86
|
-
* @return An Observable with an array which contains all responses from all items in queue.
|
|
87
|
-
*/
|
|
88
|
-
processAllQueueItems(continueOnError = true) {
|
|
89
|
-
return this.store.select(getApiQueue).pipe(map((queue) => Object.entries(queue).map(([key, value]) => this.buildHttpRequest(key, value).pipe(catchError((error) => {
|
|
90
|
-
this.logService.error(`Queue Item with id ${key} failed.`, error.message, error.stack);
|
|
91
|
-
if (!continueOnError) {
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
return of(error);
|
|
95
|
-
})))), switchMap((obsQueue) => forkJoin(Array.from(obsQueue))));
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Process all items in queue after it order them based on their timestamp. Beware that order
|
|
99
|
-
* matter in execution of Http Request in queue. When a request completes only then next will begin. Emission
|
|
100
|
-
* or Http response follows order.
|
|
101
|
-
* @param [ascending=true] - sets the order of queue items based on timestamp
|
|
102
|
-
*/
|
|
103
|
-
processAllQueueItemsSequential(ascending = true) {
|
|
104
|
-
return this.store.select(getApiQueue).pipe(concatMap((queue) => Object.entries(queue)
|
|
105
|
-
.sort((a, b) => (ascending ? this.sortOnTimestamp(a, b) : this.sortOnTimestamp(b, a)))
|
|
106
|
-
.map(([id, item]) => this.buildHttpRequest(id, item))));
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Short dates ascending based on input
|
|
110
|
-
* @param a - Date one
|
|
111
|
-
* @param b - Date two
|
|
112
|
-
*
|
|
113
|
-
* @beta
|
|
114
|
-
*/
|
|
115
|
-
sortOnTimestamp(a, b) {
|
|
116
|
-
return +new Date(a[1].timestamp) - +new Date(b[1].timestamp);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* build and HttpRequest Observable based on the given queue.
|
|
120
|
-
* After successful request completion removes the item from the queue.
|
|
121
|
-
* @param id - id of the item inside the queue
|
|
122
|
-
* @param item - the item of the queue that matches the id.
|
|
123
|
-
* @return An Observable of HttpClient Request
|
|
124
|
-
*/
|
|
125
|
-
buildHttpRequest(id, item) {
|
|
126
|
-
return this.http[item.method.toLowerCase()](item.uri, item.payload).pipe(tap(() => this.removeQueueItem(id)));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/** @nocollapse */ ApiQueueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: i3.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
130
|
-
/** @nocollapse */ ApiQueueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, providedIn: 'root' });
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, decorators: [{
|
|
132
|
-
type: Injectable,
|
|
133
|
-
args: [{
|
|
134
|
-
providedIn: 'root',
|
|
135
|
-
}]
|
|
136
|
-
}], ctorParameters: function () { return [{ type: i1.StoreService }, { type: i2.HttpClient }, { type: i3.LogService }]; } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXF1ZXVlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3F1ZXVlL2FwaS1xdWV1ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUt0RyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUFzQixLQUFtQixFQUFZLElBQWdCLEVBQVksVUFBc0I7UUFBakYsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUUzRzs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBa0I7UUFDdkMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxNQUFNLGtCQUFrQixDQUFDLENBQUM7U0FDeEU7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFx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QyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQWtCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDOzsrSEF2SlEsZUFBZTttSUFBZixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCB0YWtlLCBtYXAsIGNhdGNoRXJyb3IsIGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZ2V0QXBpUXVldWUsIGdldEFwaVF1ZXVlSXRlbSwgQXBpUXVldWUsIEFwaVF1ZXVlSXRlbSB9IGZyb20gJ0BldWkvYmFzZSc7XHJcblxyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBZGRBcGlRdWV1ZUl0ZW1BY3Rpb24sIFJlbW92ZUFwaVF1ZXVlSXRlbUFjdGlvbiwgRW1wdHlBcGlRdWV1ZUFjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2luZGV4JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSwgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsIHByb3RlY3RlZCBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlKSB7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhbiBpdGVtIGluIHRoZSBxdWV1ZSBieSBkaXNwYXRjaGluZyBhbiBhY3Rpb24gdG8gdGhlIHN0b3JlLlxyXG4gICAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBpdGVtIGluc2lkZSB0aGUgcXVldWUuXHJcbiAgICAgKiBXQVJOSU5HIGlmIG1hdGNoZXMgYW55IG90aGVyIHF1ZXVlIGl0ZW0gaWQgd2lsbCBvdmVyd3JpdGUgaXQuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSAtIGFuIGl0ZW0gZm9yIFF1ZXVlXHJcbiAgICAgKi9cclxuICAgIGFkZFF1ZXVlSXRlbShpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBhbGxvd2VkTWV0aG9kcyA9IFsncG9zdCcsICdwdXQnLCAnZ2V0J107XHJcblxyXG4gICAgICAgIGlmIChhbGxvd2VkTWV0aG9kcy5pbmRleE9mKGl0ZW0ubWV0aG9kKSA8IDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbQXBpUXVldWVdIG1ldGhvZCBcIiR7aXRlbS5tZXRob2R9XCIgaXMgbm90IGFsbG93ZWRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEFkZEFwaVF1ZXVlSXRlbUFjdGlvbih7IGlkLCBpdGVtIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIHN0b3JlIHRvIHJldHJpZXZlIHF1ZXVlIGFuZCB0aGVuIGNvbnZlcnRzIHRoZSBxdWV1ZSBvYmplY3QgdG8gYW4gYXJyYXkgb2YgaXRlbXMuXHJcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgYXJyYXkgb2YgYWxsIGl0ZW1zIGluc2lkZSB0aGUgY3VycmVudCBxdWV1ZSAoQXBpUXVldWVJdGVtW10pXHJcbiAgICAgKi9cclxuICAgIGdldFF1ZXVlKCk6IE9ic2VydmFibGU8QXBpUXVldWVJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxdWV1ZUFycmF5ID0gcXVldWUgJiYgT2JqZWN0LnZhbHVlczxBcGlRdWV1ZUl0ZW0+KHF1ZXVlKTtcclxuICAgICAgICAgICAgICAgIGlmICghcXVldWVBcnJheSB8fCBxdWV1ZUFycmF5Lmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybignTm8gaXRlbXMgaW4gdGhlIHF1ZXVlIGV4aXN0LicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBxdWV1ZUFycmF5O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHRoZSBzdG9yZSB0byByZXRyaWV2ZSBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlLlxyXG4gICAgICogQHBhcmFtIGlkIC0gaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZVxyXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIEFwaVF1ZXVlSXRlbSB0eXBlXHJcbiAgICAgKi9cclxuICAgIGdldFF1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWVJdGVtKGlkKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWFwKChxdWV1ZTogQXBpUXVldWVJdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLndhcm4oYFF1ZXVlIGl0ZW0gd2l0aCBpZCBcIiR7aWR9XCIgZG9lcyBub3QgZXhpc3RgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBxdWV1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGl0ZW0gZnJvbSB0aGUgcXVldWUuXHJcbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZVF1ZXVlSXRlbShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVtb3ZlQXBpUXVldWVJdGVtQWN0aW9uKGlkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGFsbCBpdGVtcyBwbGFjZWQgaW4gdGhlIHF1ZXVlLlxyXG4gICAgICovXHJcbiAgICByZW1vdmVBbGxRdWV1ZUl0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgRW1wdHlBcGlRdWV1ZUFjdGlvbihudWxsKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuXHJcbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXHJcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgdHlwZSBhbnlcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1F1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWVJdGVtKGlkKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKChxdWV1ZTogQXBpUXVldWVJdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLndhcm4oYFF1ZXVlIGl0ZW0gd2l0aCBpZCBcIiR7aWR9XCIgZG9lcyBub3QgZXhpc3RgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRIdHRwUmVxdWVzdChpZCwgcXVldWUpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzIGFsbCB0aGUgaXRlbXMgaW5zaWRlIHRoZSBxdWV1ZS5cclxuICAgICAqIEBwYXJhbSBbY29udGludWVPbkVycm9yPXRydWVdIC0gaW4gY2FzZSBvZiBhbiBpdGVtIHJlcXVlc3QgZmFpbHMgY29udGludWUgd2l0aCB0aGUgcmVzdCBpbiBxdWV1ZVxyXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIHdpdGggYW4gYXJyYXkgd2hpY2ggY29udGFpbnMgYWxsIHJlc3BvbnNlcyBmcm9tIGFsbCBpdGVtcyBpbiBxdWV1ZS5cclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXMoY29udGludWVPbkVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PlxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocXVldWUpLm1hcCgoW2tleSwgdmFsdWVdKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRIdHRwUmVxdWVzdChrZXksIHZhbHVlKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5lcnJvcihgUXVldWUgSXRlbSB3aXRoIGlkICR7a2V5fSBmYWlsZWQuYCwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29udGludWVPbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgob2JzUXVldWU6IE9ic2VydmFibGU8YW55PltdKSA9PiBmb3JrSm9pbihBcnJheS5mcm9tKG9ic1F1ZXVlKSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3MgYWxsIGl0ZW1zIGluIHF1ZXVlIGFmdGVyIGl0IG9yZGVyIHRoZW0gYmFzZWQgb24gdGhlaXIgdGltZXN0YW1wLiBCZXdhcmUgdGhhdCBvcmRlclxyXG4gICAgICogbWF0dGVyIGluIGV4ZWN1dGlvbiBvZiBIdHRwIFJlcXVlc3QgaW4gcXVldWUuIFdoZW4gYSByZXF1ZXN0IGNvbXBsZXRlcyBvbmx5IHRoZW4gbmV4dCB3aWxsIGJlZ2luLiBFbWlzc2lvblxyXG4gICAgICogb3IgSHR0cCByZXNwb25zZSBmb2xsb3dzIG9yZGVyLlxyXG4gICAgICogQHBhcmFtIFthc2NlbmRpbmc9dHJ1ZV0gLSBzZXRzIHRoZSBvcmRlciBvZiBxdWV1ZSBpdGVtcyBiYXNlZCBvbiB0aW1lc3RhbXBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXNTZXF1ZW50aWFsKGFzY2VuZGluZzogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRBcGlRdWV1ZSkucGlwZShcclxuICAgICAgICAgICAgY29uY2F0TWFwKChxdWV1ZTogQXBpUXVldWUpID0+XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhxdWV1ZSlcclxuICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gKGFzY2VuZGluZyA/IHRoaXMuc29ydE9uVGltZXN0YW1wKGEsIGIpIDogdGhpcy5zb3J0T25UaW1lc3RhbXAoYiwgYSkpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtpZCwgaXRlbV0pID0+IHRoaXMuYnVpbGRIdHRwUmVxdWVzdChpZCwgaXRlbSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvcnQgZGF0ZXMgYXNjZW5kaW5nIGJhc2VkIG9uIGlucHV0XHJcbiAgICAgKiBAcGFyYW0gYSAtIERhdGUgb25lXHJcbiAgICAgKiBAcGFyYW0gYiAtIERhdGUgdHdvXHJcbiAgICAgKlxyXG4gICAgICogQGJldGFcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHNvcnRPblRpbWVzdGFtcChhOiBbc3RyaW5nLCBBcGlRdWV1ZUl0ZW1dLCBiOiBbc3RyaW5nLCBBcGlRdWV1ZUl0ZW1dKSB7XHJcbiAgICAgICAgcmV0dXJuICtuZXcgRGF0ZShhWzFdLnRpbWVzdGFtcCkgLSArbmV3IERhdGUoYlsxXS50aW1lc3RhbXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnVpbGQgYW5kIEh0dHBSZXF1ZXN0IE9ic2VydmFibGUgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXVlLlxyXG4gICAgICogQWZ0ZXIgc3VjY2Vzc2Z1bCByZXF1ZXN0IGNvbXBsZXRpb24gcmVtb3ZlcyB0aGUgaXRlbSBmcm9tIHRoZSBxdWV1ZS5cclxuICAgICAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBpdGVtIGluc2lkZSB0aGUgcXVldWVcclxuICAgICAqIEBwYXJhbSBpdGVtIC0gdGhlIGl0ZW0gb2YgdGhlIHF1ZXVlIHRoYXQgbWF0Y2hlcyB0aGUgaWQuXHJcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgSHR0cENsaWVudCBSZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYnVpbGRIdHRwUmVxdWVzdChpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBbaXRlbS5tZXRob2QudG9Mb3dlckNhc2UoKV0oaXRlbS51cmksIGl0ZW0ucGF5bG9hZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5yZW1vdmVRdWV1ZUl0ZW0oaWQpKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of, forkJoin } from 'rxjs';
|
|
3
|
+
import { tap, switchMap, take, map, catchError, concatMap } from 'rxjs/operators';
|
|
4
|
+
import { getApiQueue, getApiQueueItem } from '@eui/base';
|
|
5
|
+
import { AddApiQueueItemAction, RemoveApiQueueItemAction, EmptyApiQueueAction } from '../store/index';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../store/store.service";
|
|
8
|
+
import * as i2 from "@angular/common/http";
|
|
9
|
+
import * as i3 from "../log/log.service";
|
|
10
|
+
export class ApiQueueService {
|
|
11
|
+
constructor(store, http, logService) {
|
|
12
|
+
this.store = store;
|
|
13
|
+
this.http = http;
|
|
14
|
+
this.logService = logService;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Adds an item in the queue by dispatching an action to the store.
|
|
18
|
+
* @param id - The id of the item inside the queue.
|
|
19
|
+
* WARNING if matches any other queue item id will overwrite it.
|
|
20
|
+
* @param item - an item for Queue
|
|
21
|
+
*/
|
|
22
|
+
addQueueItem(id, item) {
|
|
23
|
+
const allowedMethods = ['post', 'put', 'get'];
|
|
24
|
+
if (allowedMethods.indexOf(item.method) < 0) {
|
|
25
|
+
throw new Error(`[ApiQueue] method "${item.method}" is not allowed`);
|
|
26
|
+
}
|
|
27
|
+
this.store.dispatch(new AddApiQueueItemAction({ id, item }));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Subscribes to the store to retrieve queue and then converts the queue object to an array of items.
|
|
31
|
+
* @return An Observable of array of all items inside the current queue (ApiQueueItem[])
|
|
32
|
+
*/
|
|
33
|
+
getQueue() {
|
|
34
|
+
return this.store.select(getApiQueue).pipe(take(1), map((queue) => {
|
|
35
|
+
const queueArray = queue && Object.values(queue);
|
|
36
|
+
if (!queueArray || queueArray.length < 1) {
|
|
37
|
+
this.logService.warn('No items in the queue exist.');
|
|
38
|
+
}
|
|
39
|
+
return queueArray;
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Subscribes to the store to retrieve an item from the queue.
|
|
44
|
+
* @param id - id of the item inside the queue
|
|
45
|
+
* @return An Observable of ApiQueueItem type
|
|
46
|
+
*/
|
|
47
|
+
getQueueItem(id) {
|
|
48
|
+
return this.store.select(getApiQueueItem(id)).pipe(take(1), map((queue) => {
|
|
49
|
+
if (!queue) {
|
|
50
|
+
this.logService.warn(`Queue item with id "${id}" does not exist`);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return queue;
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Removes a given item from the queue.
|
|
58
|
+
* @param id - id of the item inside the queue
|
|
59
|
+
*/
|
|
60
|
+
removeQueueItem(id) {
|
|
61
|
+
this.store.dispatch(new RemoveApiQueueItemAction(id));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Removes all items placed in the queue.
|
|
65
|
+
*/
|
|
66
|
+
removeAllQueueItem() {
|
|
67
|
+
this.store.dispatch(new EmptyApiQueueAction(null));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Process an item from the queue.
|
|
71
|
+
* @param id - id of the item inside the queue
|
|
72
|
+
* @return An Observable of type any
|
|
73
|
+
*/
|
|
74
|
+
processQueueItem(id) {
|
|
75
|
+
return this.store.select(getApiQueueItem(id)).pipe(take(1), switchMap((queue) => {
|
|
76
|
+
if (!queue) {
|
|
77
|
+
this.logService.warn(`Queue item with id "${id}" does not exist`);
|
|
78
|
+
return of(null);
|
|
79
|
+
}
|
|
80
|
+
return this.buildHttpRequest(id, queue);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Process all the items inside the queue.
|
|
85
|
+
* @param [continueOnError=true] - in case of an item request fails continue with the rest in queue
|
|
86
|
+
* @return An Observable with an array which contains all responses from all items in queue.
|
|
87
|
+
*/
|
|
88
|
+
processAllQueueItems(continueOnError = true) {
|
|
89
|
+
return this.store.select(getApiQueue).pipe(map((queue) => Object.entries(queue).map(([key, value]) => this.buildHttpRequest(key, value).pipe(catchError((error) => {
|
|
90
|
+
this.logService.error(`Queue Item with id ${key} failed.`, error.message, error.stack);
|
|
91
|
+
if (!continueOnError) {
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
return of(error);
|
|
95
|
+
})))), switchMap((obsQueue) => forkJoin(Array.from(obsQueue))));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Process all items in queue after it order them based on their timestamp. Beware that order
|
|
99
|
+
* matter in execution of Http Request in queue. When a request completes only then next will begin. Emission
|
|
100
|
+
* or Http response follows order.
|
|
101
|
+
* @param [ascending=true] - sets the order of queue items based on timestamp
|
|
102
|
+
*/
|
|
103
|
+
processAllQueueItemsSequential(ascending = true) {
|
|
104
|
+
return this.store.select(getApiQueue).pipe(concatMap((queue) => Object.entries(queue)
|
|
105
|
+
.sort((a, b) => (ascending ? this.sortOnTimestamp(a, b) : this.sortOnTimestamp(b, a)))
|
|
106
|
+
.map(([id, item]) => this.buildHttpRequest(id, item))));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Short dates ascending based on input
|
|
110
|
+
* @param a - Date one
|
|
111
|
+
* @param b - Date two
|
|
112
|
+
*
|
|
113
|
+
* @beta
|
|
114
|
+
*/
|
|
115
|
+
sortOnTimestamp(a, b) {
|
|
116
|
+
return +new Date(a[1].timestamp) - +new Date(b[1].timestamp);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* build and HttpRequest Observable based on the given queue.
|
|
120
|
+
* After successful request completion removes the item from the queue.
|
|
121
|
+
* @param id - id of the item inside the queue
|
|
122
|
+
* @param item - the item of the queue that matches the id.
|
|
123
|
+
* @return An Observable of HttpClient Request
|
|
124
|
+
*/
|
|
125
|
+
buildHttpRequest(id, item) {
|
|
126
|
+
return this.http[item.method.toLowerCase()](item.uri, item.payload).pipe(tap(() => this.removeQueueItem(id)));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** @nocollapse */ ApiQueueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: i3.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
130
|
+
/** @nocollapse */ ApiQueueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, providedIn: 'root' });
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiQueueService, decorators: [{
|
|
132
|
+
type: Injectable,
|
|
133
|
+
args: [{
|
|
134
|
+
providedIn: 'root',
|
|
135
|
+
}]
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i1.StoreService }, { type: i2.HttpClient }, { type: i3.LogService }]; } });
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXF1ZXVlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3F1ZXVlL2FwaS1xdWV1ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUt0RyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUFzQixLQUFtQixFQUFZLElBQWdCLEVBQVksVUFBc0I7UUFBakYsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUUzRzs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBa0I7UUFDdkMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxNQUFNLGtCQUFrQixDQUFDLENBQUM7U0FDeEU7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFx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QyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQWtCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDOzsrSEF2SlEsZUFBZTttSUFBZixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCB0YWtlLCBtYXAsIGNhdGNoRXJyb3IsIGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldEFwaVF1ZXVlLCBnZXRBcGlRdWV1ZUl0ZW0sIEFwaVF1ZXVlLCBBcGlRdWV1ZUl0ZW0gfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBZGRBcGlRdWV1ZUl0ZW1BY3Rpb24sIFJlbW92ZUFwaVF1ZXVlSXRlbUFjdGlvbiwgRW1wdHlBcGlRdWV1ZUFjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2luZGV4JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBpUXVldWVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSwgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsIHByb3RlY3RlZCBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlKSB7fVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbiBpdGVtIGluIHRoZSBxdWV1ZSBieSBkaXNwYXRjaGluZyBhbiBhY3Rpb24gdG8gdGhlIHN0b3JlLlxuICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlLlxuICAgICAqIFdBUk5JTkcgaWYgbWF0Y2hlcyBhbnkgb3RoZXIgcXVldWUgaXRlbSBpZCB3aWxsIG92ZXJ3cml0ZSBpdC5cbiAgICAgKiBAcGFyYW0gaXRlbSAtIGFuIGl0ZW0gZm9yIFF1ZXVlXG4gICAgICovXG4gICAgYWRkUXVldWVJdGVtKGlkOiBzdHJpbmcsIGl0ZW06IEFwaVF1ZXVlSXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxvd2VkTWV0aG9kcyA9IFsncG9zdCcsICdwdXQnLCAnZ2V0J107XG5cbiAgICAgICAgaWYgKGFsbG93ZWRNZXRob2RzLmluZGV4T2YoaXRlbS5tZXRob2QpIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbQXBpUXVldWVdIG1ldGhvZCBcIiR7aXRlbS5tZXRob2R9XCIgaXMgbm90IGFsbG93ZWRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEFkZEFwaVF1ZXVlSXRlbUFjdGlvbih7IGlkLCBpdGVtIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHRoZSBzdG9yZSB0byByZXRyaWV2ZSBxdWV1ZSBhbmQgdGhlbiBjb252ZXJ0cyB0aGUgcXVldWUgb2JqZWN0IHRvIGFuIGFycmF5IG9mIGl0ZW1zLlxuICAgICAqIEByZXR1cm4gQW4gT2JzZXJ2YWJsZSBvZiBhcnJheSBvZiBhbGwgaXRlbXMgaW5zaWRlIHRoZSBjdXJyZW50IHF1ZXVlIChBcGlRdWV1ZUl0ZW1bXSlcbiAgICAgKi9cbiAgICBnZXRRdWV1ZSgpOiBPYnNlcnZhYmxlPEFwaVF1ZXVlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRBcGlRdWV1ZSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKHF1ZXVlOiBBcGlRdWV1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXVlQXJyYXkgPSBxdWV1ZSAmJiBPYmplY3QudmFsdWVzPEFwaVF1ZXVlSXRlbT4ocXVldWUpO1xuICAgICAgICAgICAgICAgIGlmICghcXVldWVBcnJheSB8fCBxdWV1ZUFycmF5Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLndhcm4oJ05vIGl0ZW1zIGluIHRoZSBxdWV1ZSBleGlzdC4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVldWVBcnJheTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byB0aGUgc3RvcmUgdG8gcmV0cmlldmUgYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIEFwaVF1ZXVlSXRlbSB0eXBlXG4gICAgICovXG4gICAgZ2V0UXVldWVJdGVtKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFwaVF1ZXVlSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWVJdGVtKGlkKSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKHF1ZXVlOiBBcGlRdWV1ZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS53YXJuKGBRdWV1ZSBpdGVtIHdpdGggaWQgXCIke2lkfVwiIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVldWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBnaXZlbiBpdGVtIGZyb20gdGhlIHF1ZXVlLlxuICAgICAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBpdGVtIGluc2lkZSB0aGUgcXVldWVcbiAgICAgKi9cbiAgICByZW1vdmVRdWV1ZUl0ZW0oaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZW1vdmVBcGlRdWV1ZUl0ZW1BY3Rpb24oaWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBpdGVtcyBwbGFjZWQgaW4gdGhlIHF1ZXVlLlxuICAgICAqL1xuICAgIHJlbW92ZUFsbFF1ZXVlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgRW1wdHlBcGlRdWV1ZUFjdGlvbihudWxsKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlLlxuICAgICAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBpdGVtIGluc2lkZSB0aGUgcXVldWVcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgdHlwZSBhbnlcbiAgICAgKi9cbiAgICBwcm9jZXNzUXVldWVJdGVtKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWVJdGVtKGlkKSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHF1ZXVlOiBBcGlRdWV1ZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS53YXJuKGBRdWV1ZSBpdGVtIHdpdGggaWQgXCIke2lkfVwiIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEh0dHBSZXF1ZXN0KGlkLCBxdWV1ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgYWxsIHRoZSBpdGVtcyBpbnNpZGUgdGhlIHF1ZXVlLlxuICAgICAqIEBwYXJhbSBbY29udGludWVPbkVycm9yPXRydWVdIC0gaW4gY2FzZSBvZiBhbiBpdGVtIHJlcXVlc3QgZmFpbHMgY29udGludWUgd2l0aCB0aGUgcmVzdCBpbiBxdWV1ZVxuICAgICAqIEByZXR1cm4gQW4gT2JzZXJ2YWJsZSB3aXRoIGFuIGFycmF5IHdoaWNoIGNvbnRhaW5zIGFsbCByZXNwb25zZXMgZnJvbSBhbGwgaXRlbXMgaW4gcXVldWUuXG4gICAgICovXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXMoY29udGludWVPbkVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFwaVF1ZXVlKS5waXBlKFxuICAgICAgICAgICAgbWFwKChxdWV1ZTogQXBpUXVldWUpID0+XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocXVldWUpLm1hcCgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkSHR0cFJlcXVlc3Qoa2V5LCB2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5lcnJvcihgUXVldWUgSXRlbSB3aXRoIGlkICR7a2V5fSBmYWlsZWQuYCwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2spO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvYnNRdWV1ZTogT2JzZXJ2YWJsZTxhbnk+W10pID0+IGZvcmtKb2luKEFycmF5LmZyb20ob2JzUXVldWUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGFsbCBpdGVtcyBpbiBxdWV1ZSBhZnRlciBpdCBvcmRlciB0aGVtIGJhc2VkIG9uIHRoZWlyIHRpbWVzdGFtcC4gQmV3YXJlIHRoYXQgb3JkZXJcbiAgICAgKiBtYXR0ZXIgaW4gZXhlY3V0aW9uIG9mIEh0dHAgUmVxdWVzdCBpbiBxdWV1ZS4gV2hlbiBhIHJlcXVlc3QgY29tcGxldGVzIG9ubHkgdGhlbiBuZXh0IHdpbGwgYmVnaW4uIEVtaXNzaW9uXG4gICAgICogb3IgSHR0cCByZXNwb25zZSBmb2xsb3dzIG9yZGVyLlxuICAgICAqIEBwYXJhbSBbYXNjZW5kaW5nPXRydWVdIC0gc2V0cyB0aGUgb3JkZXIgb2YgcXVldWUgaXRlbXMgYmFzZWQgb24gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXNTZXF1ZW50aWFsKGFzY2VuZGluZzogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpLnBpcGUoXG4gICAgICAgICAgICBjb25jYXRNYXAoKHF1ZXVlOiBBcGlRdWV1ZSkgPT5cbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhxdWV1ZSlcbiAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IChhc2NlbmRpbmcgPyB0aGlzLnNvcnRPblRpbWVzdGFtcChhLCBiKSA6IHRoaXMuc29ydE9uVGltZXN0YW1wKGIsIGEpKSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2lkLCBpdGVtXSkgPT4gdGhpcy5idWlsZEh0dHBSZXF1ZXN0KGlkLCBpdGVtKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG9ydCBkYXRlcyBhc2NlbmRpbmcgYmFzZWQgb24gaW5wdXRcbiAgICAgKiBAcGFyYW0gYSAtIERhdGUgb25lXG4gICAgICogQHBhcmFtIGIgLSBEYXRlIHR3b1xuICAgICAqXG4gICAgICogQGJldGFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc29ydE9uVGltZXN0YW1wKGE6IFtzdHJpbmcsIEFwaVF1ZXVlSXRlbV0sIGI6IFtzdHJpbmcsIEFwaVF1ZXVlSXRlbV0pIHtcbiAgICAgICAgcmV0dXJuICtuZXcgRGF0ZShhWzFdLnRpbWVzdGFtcCkgLSArbmV3IERhdGUoYlsxXS50aW1lc3RhbXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJ1aWxkIGFuZCBIdHRwUmVxdWVzdCBPYnNlcnZhYmxlIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWV1ZS5cbiAgICAgKiBBZnRlciBzdWNjZXNzZnVsIHJlcXVlc3QgY29tcGxldGlvbiByZW1vdmVzIHRoZSBpdGVtIGZyb20gdGhlIHF1ZXVlLlxuICAgICAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBpdGVtIGluc2lkZSB0aGUgcXVldWVcbiAgICAgKiBAcGFyYW0gaXRlbSAtIHRoZSBpdGVtIG9mIHRoZSBxdWV1ZSB0aGF0IG1hdGNoZXMgdGhlIGlkLlxuICAgICAqIEByZXR1cm4gQW4gT2JzZXJ2YWJsZSBvZiBIdHRwQ2xpZW50IFJlcXVlc3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGJ1aWxkSHR0cFJlcXVlc3QoaWQ6IHN0cmluZywgaXRlbTogQXBpUXVldWVJdGVtKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFtpdGVtLm1ldGhvZC50b0xvd2VyQ2FzZSgpXShpdGVtLnVyaSwgaXRlbS5wYXlsb2FkKS5waXBlKHRhcCgoKSA9PiB0aGlzLnJlbW92ZVF1ZXVlSXRlbShpZCkpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { ApiQueueService } from './api-queue.service';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
export class ApiQueueServiceMock extends ApiQueueService {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(null, null, null);
|
|
6
|
-
}
|
|
7
|
-
getQueue() {
|
|
8
|
-
return of([]);
|
|
9
|
-
}
|
|
10
|
-
getQueueItem(id) {
|
|
11
|
-
return of(null);
|
|
12
|
-
}
|
|
13
|
-
removeAllQueueItem() { }
|
|
14
|
-
processAllQueueItems() {
|
|
15
|
-
return of({});
|
|
16
|
-
}
|
|
17
|
-
addQueueItem() { }
|
|
18
|
-
removeQueueItem() { }
|
|
19
|
-
processQueueItem() {
|
|
20
|
-
return of({});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ApiQueueService } from './api-queue.service';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
export class ApiQueueServiceMock extends ApiQueueService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(null, null, null);
|
|
6
|
+
}
|
|
7
|
+
getQueue() {
|
|
8
|
+
return of([]);
|
|
9
|
+
}
|
|
10
|
+
getQueueItem(id) {
|
|
11
|
+
return of(null);
|
|
12
|
+
}
|
|
13
|
+
removeAllQueueItem() { }
|
|
14
|
+
processAllQueueItems() {
|
|
15
|
+
return of({});
|
|
16
|
+
}
|
|
17
|
+
addQueueItem() { }
|
|
18
|
+
removeQueueItem() { }
|
|
19
|
+
processQueueItem() {
|
|
20
|
+
return of({});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXF1ZXVlLnNlcnZpY2UubW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcXVldWUvYXBpLXF1ZXVlLnNlcnZpY2UubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUNwRDtRQUNJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxRQUFRO1FBQ0osT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELFlBQVksQ0FBQyxFQUFVO1FBQ25CLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxrQkFBa0IsS0FBVSxDQUFDO0lBQzdCLG9CQUFvQjtRQUNoQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsWUFBWSxLQUFVLENBQUM7SUFDdkIsZUFBZSxLQUFVLENBQUM7SUFDMUIsZ0JBQWdCO1FBQ1osT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpUXVldWVTZXJ2aWNlIH0gZnJvbSAnLi9hcGktcXVldWUuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpUXVldWVJdGVtIH0gZnJvbSAnQGV1aS9iYXNlJztcblxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZU1vY2sgZXh0ZW5kcyBBcGlRdWV1ZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihudWxsLCBudWxsLCBudWxsKTtcbiAgICB9XG4gICAgZ2V0UXVldWUoKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgICBnZXRRdWV1ZUl0ZW0oaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXBpUXVldWVJdGVtPiB7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgcmVtb3ZlQWxsUXVldWVJdGVtKCk6IHZvaWQge31cbiAgICBwcm9jZXNzQWxsUXVldWVJdGVtcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cbiAgICBhZGRRdWV1ZUl0ZW0oKTogdm9pZCB7fVxuICAgIHJlbW92ZVF1ZXVlSXRlbSgpOiB2b2lkIHt9XG4gICAgcHJvY2Vzc1F1ZXVlSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './api-queue.service';
|
|
2
|
-
export * from './api-queue.service.mock';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './api-queue.service';
|
|
2
|
+
export * from './api-queue.service.mock';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3F1ZXVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpLXF1ZXVlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktcXVldWUuc2VydmljZS5tb2NrJztcbiJdfQ==
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { StorageService } from './storage.service';
|
|
2
|
-
/**
|
|
3
|
-
* Generic asynchronous storage service. Concrete asynchronous storage services must extend this class
|
|
4
|
-
*/
|
|
5
|
-
export class AsyncStorageService extends StorageService {
|
|
6
|
-
setAsync(key, value) {
|
|
7
|
-
this.set(key, value).subscribe(() => { });
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* asynchronous helper for remove function
|
|
11
|
-
* @param key the associated key
|
|
12
|
-
*/
|
|
13
|
-
removeAsync(key) {
|
|
14
|
-
this.remove(key).subscribe(() => { });
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { StorageService } from './storage.service';
|
|
2
|
+
/**
|
|
3
|
+
* Generic asynchronous storage service. Concrete asynchronous storage services must extend this class
|
|
4
|
+
*/
|
|
5
|
+
export class AsyncStorageService extends StorageService {
|
|
6
|
+
setAsync(key, value) {
|
|
7
|
+
this.set(key, value).subscribe(() => { });
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* asynchronous helper for remove function
|
|
11
|
+
* @param key the associated key
|
|
12
|
+
*/
|
|
13
|
+
removeAsync(key) {
|
|
14
|
+
this.remove(key).subscribe(() => { });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL2FzeW5jLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGNBQWM7SUFxQzVELFFBQVEsQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEdlbmVyaWMgYXN5bmNocm9ub3VzIHN0b3JhZ2Ugc2VydmljZS4gQ29uY3JldGUgYXN5bmNocm9ub3VzIHN0b3JhZ2Ugc2VydmljZXMgbXVzdCBleHRlbmQgdGhpcyBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXN5bmNTdG9yYWdlU2VydmljZSBleHRlbmRzIFN0b3JhZ2VTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiByZWZsZWN0cyB0aGUgcmVhZGluZXNzIG9mIHRoZSBzdG9yYWdlXG4gICAgICogQHJldHVybnMgb25lIHRpbWUgZW1pc3Npb24gT2JzZXJ2YWJsZTxhbnk+XG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZHkoKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogcmV0cmlldmUgYW4gb2JqZWN0IGZyb20gYXN5bmMgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHJldHVybnMgb25lIHRpbWUgZW1pc3Npb24gT2JzZXJ2YWJsZSBvZiB2YWx1ZVxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PjtcbiAgICBhYnN0cmFjdCBnZXQ8VD4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+O1xuXG4gICAgLyoqXG4gICAgICogc2V0cyBhbiBvYmplY3QgaW4gYXN5bmMgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcbiAgICAgKiBAcmV0dXJucyBvbmUgdGltZSBlbWlzc2lvbiBPYnNlcnZhYmxlXG4gICAgICovXG4gICAgYWJzdHJhY3Qgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGFic3RyYWN0IHNldDxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiByZW1vdmVzIGFuIG9iamVjdCBmcm9tIGFzeW5jIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEByZXR1cm5zIG9uZSB0aW1lIGVtaXNzaW9uIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByZW1vdmUoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBhc3luY2hyb25vdXMgaGVscGVyIGZvciBzZXQgZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAgICovXG4gICAgc2V0QXN5bmMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldEFzeW5jPFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldChrZXksIHZhbHVlKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGFzeW5jaHJvbm91cyBoZWxwZXIgZm9yIHJlbW92ZSBmdW5jdGlvblxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICovXG4gICAgcmVtb3ZlQXN5bmMoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { AsyncStorageService } from './async-storage.service';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
export class AsyncStorageServiceMock extends AsyncStorageService {
|
|
4
|
-
ready() {
|
|
5
|
-
return of({});
|
|
6
|
-
}
|
|
7
|
-
name() {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
get() {
|
|
11
|
-
return of({});
|
|
12
|
-
}
|
|
13
|
-
set() {
|
|
14
|
-
return of({});
|
|
15
|
-
}
|
|
16
|
-
remove() {
|
|
17
|
-
return of({});
|
|
18
|
-
}
|
|
19
|
-
setAsync() { }
|
|
20
|
-
removeAsync() { }
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { AsyncStorageService } from './async-storage.service';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
export class AsyncStorageServiceMock extends AsyncStorageService {
|
|
4
|
+
ready() {
|
|
5
|
+
return of({});
|
|
6
|
+
}
|
|
7
|
+
name() {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
get() {
|
|
11
|
+
return of({});
|
|
12
|
+
}
|
|
13
|
+
set() {
|
|
14
|
+
return of({});
|
|
15
|
+
}
|
|
16
|
+
remove() {
|
|
17
|
+
return of({});
|
|
18
|
+
}
|
|
19
|
+
setAsync() { }
|
|
20
|
+
removeAsync() { }
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3RvcmFnZS5zZXJ2aWNlLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2UvYXN5bmMtc3RvcmFnZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQzVELEtBQUs7UUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxHQUFHO1FBQ0MsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXLEtBQVUsQ0FBQztDQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2FzeW5jLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgQXN5bmNTdG9yYWdlU2VydmljZU1vY2sgZXh0ZW5kcyBBc3luY1N0b3JhZ2VTZXJ2aWNlIHtcbiAgICByZWFkeSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cblxuICAgIG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuXG4gICAgc2V0KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuXG4gICAgc2V0QXN5bmMoKTogdm9pZCB7fVxuXG4gICAgcmVtb3ZlQXN5bmMoKTogdm9pZCB7fVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './storage.service';
|
|
2
|
-
export * from './storage.service.mock';
|
|
3
|
-
export * from './async-storage.service';
|
|
4
|
-
export * from './async-storage.service.mock';
|
|
5
|
-
export * from './local-storage.service';
|
|
6
|
-
export * from './session-storage.service';
|
|
7
|
-
export * from './local-forage.service';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './storage.service';
|
|
2
|
+
export * from './storage.service.mock';
|
|
3
|
+
export * from './async-storage.service';
|
|
4
|
+
export * from './async-storage.service.mock';
|
|
5
|
+
export * from './local-storage.service';
|
|
6
|
+
export * from './session-storage.service';
|
|
7
|
+
export * from './local-forage.service';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlLm1vY2snO1xuZXhwb3J0ICogZnJvbSAnLi9hc3luYy1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hc3luYy1zdG9yYWdlLnNlcnZpY2UubW9jayc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWwtZm9yYWdlLnNlcnZpY2UnO1xuIl19
|