@dbg-riskit/common 15.0.1 → 16.0.0
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/esm2022/lib/error.types.mjs +19 -0
- package/esm2022/lib/indexeddb/indexed.db.array.subject.mjs +31 -0
- package/esm2022/lib/indexeddb/indexed.db.store.mjs +121 -0
- package/esm2022/lib/indexeddb/indexed.db.subject.mjs +62 -0
- package/esm2022/lib/indexeddb/subject.subscription.mjs +31 -0
- package/esm2022/lib/replay.subject.ext.mjs +23 -0
- package/{fesm2020 → fesm2022}/dbg-riskit-common.mjs +16 -7
- package/{fesm2020 → fesm2022}/dbg-riskit-common.mjs.map +1 -1
- package/lib/common.types.d.ts +8 -8
- package/package.json +5 -11
- package/esm2020/lib/error.types.mjs +0 -19
- package/esm2020/lib/indexeddb/indexed.db.array.subject.mjs +0 -30
- package/esm2020/lib/indexeddb/indexed.db.store.mjs +0 -118
- package/esm2020/lib/indexeddb/indexed.db.subject.mjs +0 -61
- package/esm2020/lib/indexeddb/subject.subscription.mjs +0 -29
- package/esm2020/lib/replay.subject.ext.mjs +0 -21
- package/fesm2015/dbg-riskit-common.mjs +0 -749
- package/fesm2015/dbg-riskit-common.mjs.map +0 -1
- /package/{esm2020 → esm2022}/dbg-riskit-common.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/base64.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common.functions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/date.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/global.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/indexeddb/polyfill.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/indexeddb/request.wrappers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logger.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/random.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/rxjs.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/string.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/uid.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/user.info.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class ErrorType {
|
|
2
|
+
static NETWORK = new ErrorType();
|
|
3
|
+
static REQUEST = new ErrorType();
|
|
4
|
+
static AUTH = new ErrorType();
|
|
5
|
+
static ERROR = new ErrorType();
|
|
6
|
+
isError() {
|
|
7
|
+
return this === ErrorType.ERROR;
|
|
8
|
+
}
|
|
9
|
+
isNetworkError() {
|
|
10
|
+
return this === ErrorType.NETWORK;
|
|
11
|
+
}
|
|
12
|
+
isRequestError() {
|
|
13
|
+
return this === ErrorType.REQUEST;
|
|
14
|
+
}
|
|
15
|
+
isAuthError() {
|
|
16
|
+
return this === ErrorType.AUTH;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9jb21tb24vc3JjL2xpYi9lcnJvci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztJQUVYLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNqQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDakMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUUvQixPQUFPO1FBQ1YsT0FBTyxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRU0sY0FBYztRQUNqQixPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXJyb3JUeXBlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgTkVUV09SSyA9IG5ldyBFcnJvclR5cGUoKTtcbiAgICBwdWJsaWMgc3RhdGljIFJFUVVFU1QgPSBuZXcgRXJyb3JUeXBlKCk7XG4gICAgcHVibGljIHN0YXRpYyBBVVRIID0gbmV3IEVycm9yVHlwZSgpO1xuICAgIHB1YmxpYyBzdGF0aWMgRVJST1IgPSBuZXcgRXJyb3JUeXBlKCk7XG5cbiAgICBwdWJsaWMgaXNFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMgPT09IEVycm9yVHlwZS5FUlJPUjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOZXR3b3JrRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09PSBFcnJvclR5cGUuTkVUV09SSztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNSZXF1ZXN0RXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09PSBFcnJvclR5cGUuUkVRVUVTVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBdXRoRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09PSBFcnJvclR5cGUuQVVUSDtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgZXJyb3JUeXBlOiBFcnJvclR5cGU7XG4gICAgdHJhY2VfaWQ/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
2
|
+
import { IndexedDBReplaySubject } from './indexed.db.subject';
|
|
3
|
+
export class IndexedDBArrayReplaySubject extends IndexedDBReplaySubject {
|
|
4
|
+
partitionSize;
|
|
5
|
+
constructor(partitionSize, dbName, version) {
|
|
6
|
+
super(dbName, null, version);
|
|
7
|
+
this.partitionSize = partitionSize;
|
|
8
|
+
}
|
|
9
|
+
get lastValue() {
|
|
10
|
+
return this.storage.all.pipe(map((items) => {
|
|
11
|
+
if (!items || items.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return items.reduce((result, subItems) => {
|
|
15
|
+
return result.concat(subItems);
|
|
16
|
+
}, []);
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
next(value) {
|
|
20
|
+
const rows = [];
|
|
21
|
+
for (let i = 0; i <= value.length / this.partitionSize; i++) {
|
|
22
|
+
rows[i] = value.slice(i * this.partitionSize, (i + 1) * this.partitionSize);
|
|
23
|
+
}
|
|
24
|
+
this.storage.bulkReplace(rows).subscribe(() => {
|
|
25
|
+
this._next(value);
|
|
26
|
+
}, (err) => {
|
|
27
|
+
super.error(err);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZC5kYi5hcnJheS5zdWJqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvY29tbW9uL3NyYy9saWIvaW5kZXhlZGRiL2luZGV4ZWQuZGIuYXJyYXkuc3ViamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsTUFBTSxPQUFPLDJCQUErQixTQUFRLHNCQUEyQjtJQUV2QztJQUFwQyxZQUFvQyxhQUFxQixFQUFFLE1BQWMsRUFBRSxPQUFnQjtRQUN2RixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQURHLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBRXpELENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQ2YsQ0FBQyxNQUFXLEVBQUUsUUFBYSxFQUFFLEVBQUU7Z0JBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBVTtRQUNsQixNQUFNLElBQUksR0FBVSxFQUFFLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDL0U7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQ3BDLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luZGV4ZWREQlJlcGxheVN1YmplY3R9IGZyb20gJy4vaW5kZXhlZC5kYi5zdWJqZWN0JztcblxuZXhwb3J0IGNsYXNzIEluZGV4ZWREQkFycmF5UmVwbGF5U3ViamVjdDxUPiBleHRlbmRzIEluZGV4ZWREQlJlcGxheVN1YmplY3Q8VFtdPiB7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwYXJ0aXRpb25TaXplOiBudW1iZXIsIGRiTmFtZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKGRiTmFtZSwgbnVsbCwgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYXN0VmFsdWUoKTogT2JzZXJ2YWJsZTxUW10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuYWxsLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zOiBUW11bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQ6IFRbXSwgc3ViSXRlbXM6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5jb25jYXQoc3ViSXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSBhcyBUW10pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dCh2YWx1ZTogVFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvd3M6IFRbXVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHZhbHVlLmxlbmd0aCAvIHRoaXMucGFydGl0aW9uU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByb3dzW2ldID0gdmFsdWUuc2xpY2UoaSAqIHRoaXMucGFydGl0aW9uU2l6ZSwgKGkgKyAxKSAqIHRoaXMucGFydGl0aW9uU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yYWdlLmJ1bGtSZXBsYWNlKHJvd3MpLnN1YnNjcmliZShcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgc3VwZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { defer, Observable, of, zip } from 'rxjs';
|
|
2
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { toString } from '../string.utils';
|
|
4
|
+
import { indexedDB } from './polyfill';
|
|
5
|
+
import { cursorRequestToStream, requestToObservable } from './request.wrappers';
|
|
6
|
+
export class IndexedDbStore {
|
|
7
|
+
dbName;
|
|
8
|
+
key;
|
|
9
|
+
version;
|
|
10
|
+
_bakValue = [];
|
|
11
|
+
constructor(dbName, key, version) {
|
|
12
|
+
this.dbName = dbName;
|
|
13
|
+
this.key = key;
|
|
14
|
+
this.version = version;
|
|
15
|
+
}
|
|
16
|
+
get indexedDB() {
|
|
17
|
+
const request = indexedDB.open(this.dbName, this.version || 1);
|
|
18
|
+
let db;
|
|
19
|
+
let close = false;
|
|
20
|
+
request.onupgradeneeded = (ev) => {
|
|
21
|
+
db = ev.target.result;
|
|
22
|
+
let params = { autoIncrement: true };
|
|
23
|
+
if (this.key != null) {
|
|
24
|
+
params = { keyPath: toString(this.key) };
|
|
25
|
+
}
|
|
26
|
+
db.createObjectStore(this.dbName, params);
|
|
27
|
+
if (close) {
|
|
28
|
+
db.close();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return requestToObservable(request, (ev) => {
|
|
32
|
+
db = ev.target.result;
|
|
33
|
+
if (close) {
|
|
34
|
+
db.close();
|
|
35
|
+
}
|
|
36
|
+
return db;
|
|
37
|
+
}, () => {
|
|
38
|
+
close = true;
|
|
39
|
+
if (db) {
|
|
40
|
+
db.close();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
add(value) {
|
|
45
|
+
return this.bulkAdd([value]).pipe(map((savedValue) => savedValue ? savedValue[0] : null));
|
|
46
|
+
}
|
|
47
|
+
bulkAdd(value) {
|
|
48
|
+
if (!indexedDB) {
|
|
49
|
+
this._bakValue = this._bakValue.concat(value);
|
|
50
|
+
return of(this._bakValue);
|
|
51
|
+
}
|
|
52
|
+
return this.readWriteStore.pipe(switchMap((store) => {
|
|
53
|
+
return this._saveBulk(store, value);
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
replace(value) {
|
|
57
|
+
return this.bulkReplace([value]).pipe(map((savedValue) => savedValue ? savedValue[0] : null));
|
|
58
|
+
}
|
|
59
|
+
bulkReplace(value) {
|
|
60
|
+
if (!indexedDB) {
|
|
61
|
+
this._bakValue = value;
|
|
62
|
+
return of(this._bakValue);
|
|
63
|
+
}
|
|
64
|
+
return this._clear().pipe(switchMap((store) => {
|
|
65
|
+
return this._saveBulk(store, value);
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
clear() {
|
|
69
|
+
if (!indexedDB) {
|
|
70
|
+
this._bakValue = [];
|
|
71
|
+
return of(void 0);
|
|
72
|
+
}
|
|
73
|
+
return this._clear().pipe(map(() => void 0));
|
|
74
|
+
}
|
|
75
|
+
get readWriteStore() {
|
|
76
|
+
return this.indexedDB.pipe(map((db) => {
|
|
77
|
+
const tx = db.transaction(this.dbName, 'readwrite');
|
|
78
|
+
return tx.objectStore(this.dbName);
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
_clear() {
|
|
82
|
+
return this.readWriteStore.pipe(switchMap((store) => {
|
|
83
|
+
const request = store.clear();
|
|
84
|
+
return requestToObservable(request, () => store);
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
_saveBulk(store, items) {
|
|
88
|
+
return defer(() => {
|
|
89
|
+
const requests = [of(null)];
|
|
90
|
+
if (items != null) {
|
|
91
|
+
items.forEach((item) => {
|
|
92
|
+
requests.push(requestToObservable(store.add(item), () => null));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return zip(...requests);
|
|
96
|
+
}).pipe(map(() => {
|
|
97
|
+
return items;
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
get all() {
|
|
101
|
+
if (!indexedDB) {
|
|
102
|
+
return of(this._bakValue);
|
|
103
|
+
}
|
|
104
|
+
return this.indexedDB.pipe(switchMap((db) => new Observable((subscriber) => {
|
|
105
|
+
const tx = db.transaction(this.dbName, 'readonly');
|
|
106
|
+
const store = tx.objectStore(this.dbName);
|
|
107
|
+
const req = store.openCursor();
|
|
108
|
+
const items = [];
|
|
109
|
+
return cursorRequestToStream(req, tx, (cursor) => {
|
|
110
|
+
return cursor.value;
|
|
111
|
+
})
|
|
112
|
+
.subscribe((item) => items.push(item), (err) => {
|
|
113
|
+
subscriber.error(err);
|
|
114
|
+
}, () => {
|
|
115
|
+
subscriber.next(items);
|
|
116
|
+
subscriber.complete();
|
|
117
|
+
});
|
|
118
|
+
})));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZC5kYi5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2NvbW1vbi9zcmMvbGliL2luZGV4ZWRkYi9pbmRleGVkLmRiLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBYyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxNQUFNLE9BQU8sY0FBYztJQUdhO0lBQ0E7SUFDQTtJQUo1QixTQUFTLEdBQVEsRUFBRSxDQUFDO0lBRTVCLFlBQW9DLE1BQWMsRUFDZCxHQUFtQixFQUNuQixPQUFnQjtRQUZoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUNwRCxDQUFDO0lBRUQsSUFBWSxTQUFTO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBZSxDQUFDO1FBRXBCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVsQixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBeUIsRUFBRSxFQUFFO1lBQ3BELEVBQUUsR0FBSSxFQUFFLENBQUMsTUFBMkIsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxNQUFN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RSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZlciwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmliZXIsIHppcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICcuLi9zdHJpbmcudXRpbHMnO1xuaW1wb3J0IHtpbmRleGVkREJ9IGZyb20gJy4vcG9seWZpbGwnO1xuaW1wb3J0IHtjdXJzb3JSZXF1ZXN0VG9TdHJlYW0sIHJlcXVlc3RUb09ic2VydmFibGV9IGZyb20gJy4vcmVxdWVzdC53cmFwcGVycyc7XG5cbmV4cG9ydCBjbGFzcyBJbmRleGVkRGJTdG9yZTxUPiB7XG4gICAgcHJpdmF0ZSBfYmFrVmFsdWU6IFRbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGJOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkga2V5OiBrZXlvZiBUIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uPzogbnVtYmVyKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaW5kZXhlZERCKCk6IE9ic2VydmFibGU8SURCRGF0YWJhc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKHRoaXMuZGJOYW1lLCB0aGlzLnZlcnNpb24gfHwgMSk7XG4gICAgICAgIGxldCBkYjogSURCRGF0YWJhc2U7XG5cbiAgICAgICAgbGV0IGNsb3NlID0gZmFsc2U7XG5cbiAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXY6IElEQlZlcnNpb25DaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgZGIgPSAoZXYudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcbiAgICAgICAgICAgIGxldCBwYXJhbXM6IElEQk9iamVjdFN0b3JlUGFyYW1ldGVycyA9IHthdXRvSW5jcmVtZW50OiB0cnVlfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0ge2tleVBhdGg6IHRvU3RyaW5nKHRoaXMua2V5KX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLmRiTmFtZSwgcGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgICAgICAgZGIuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFRvT2JzZXJ2YWJsZShyZXF1ZXN0LFxuICAgICAgICAgICAgKGV2OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGRiID0gKGV2LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkYjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2xvc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGQodmFsdWU6IFQpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1bGtBZGQoW3ZhbHVlXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoc2F2ZWRWYWx1ZTogVFtdKSA9PiBzYXZlZFZhbHVlID8gc2F2ZWRWYWx1ZVswXSA6IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1bGtBZGQodmFsdWU6IFRbXSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIGlmICghaW5kZXhlZERCKSB7XG4gICAgICAgICAgICB0aGlzLl9iYWtWYWx1ZSA9IHRoaXMuX2Jha1ZhbHVlLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fYmFrVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRXcml0ZVN0b3JlLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHN0b3JlOiBJREJPYmplY3RTdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zYXZlQnVsayhzdG9yZSwgdmFsdWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVwbGFjZSh2YWx1ZTogVCk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVsa1JlcGxhY2UoW3ZhbHVlXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoc2F2ZWRWYWx1ZTogVFtdKSA9PiBzYXZlZFZhbHVlID8gc2F2ZWRWYWx1ZVswXSA6IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1bGtSZXBsYWNlKHZhbHVlOiBUW10pOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICBpZiAoIWluZGV4ZWREQikge1xuICAgICAgICAgICAgdGhpcy5fYmFrVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLl9iYWtWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoc3RvcmU6IElEQk9iamVjdFN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmVCdWxrKHN0b3JlLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpbmRleGVkREIpIHtcbiAgICAgICAgICAgIHRoaXMuX2Jha1ZhbHVlID0gW107XG4gICAgICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2xlYXIoKS5waXBlKG1hcCgoKSA9PiB2b2lkIDApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCByZWFkV3JpdGVTdG9yZSgpOiBPYnNlcnZhYmxlPElEQk9iamVjdFN0b3JlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ZWREQi5waXBlKFxuICAgICAgICAgICAgbWFwKChkYjogSURCRGF0YWJhc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKHRoaXMuZGJOYW1lLCAncmVhZHdyaXRlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR4Lm9iamVjdFN0b3JlKHRoaXMuZGJOYW1lKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYXIoKTogT2JzZXJ2YWJsZTxJREJPYmplY3RTdG9yZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkV3JpdGVTdG9yZS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChzdG9yZTogSURCT2JqZWN0U3RvcmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFRvT2JzZXJ2YWJsZShyZXF1ZXN0LCAoKSA9PiBzdG9yZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NhdmVCdWxrKHN0b3JlOiBJREJPYmplY3RTdG9yZSwgaXRlbXM6IFRbXSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiBkZWZlcihcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0czogQXJyYXk8T2JzZXJ2YWJsZTxudWxsPj4gPSBbb2YobnVsbCldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IFQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLnB1c2gocmVxdWVzdFRvT2JzZXJ2YWJsZShzdG9yZS5hZGQoaXRlbSksICgpID0+IG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHppcCguLi5yZXF1ZXN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICBpZiAoIWluZGV4ZWREQikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2Jha1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ZWREQi5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChkYjogSURCRGF0YWJhc2UpID0+IG5ldyBPYnNlcnZhYmxlKFxuICAgICAgICAgICAgICAgIChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFRbXT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbih0aGlzLmRiTmFtZSwgJ3JlYWRvbmx5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUodGhpcy5kYk5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zOiBUW10gPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Vyc29yUmVxdWVzdFRvU3RyZWFtKHJlcSwgdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3Vyc29yOiBJREJDdXJzb3JXaXRoVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Vyc29yLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IFQpID0+IGl0ZW1zLnB1c2goaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ObjectUnsubscribedError, Subject, Subscription } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { IndexedDbStore } from './indexed.db.store';
|
|
4
|
+
import { SubjectSubscription } from './subject.subscription';
|
|
5
|
+
export class IndexedDBReplaySubject extends Subject {
|
|
6
|
+
storage;
|
|
7
|
+
constructor(dbName, key, version) {
|
|
8
|
+
super();
|
|
9
|
+
this.storage = new IndexedDbStore(dbName, key, version);
|
|
10
|
+
}
|
|
11
|
+
get hasData() {
|
|
12
|
+
return this.lastValue.pipe(map((val) => {
|
|
13
|
+
return val != null;
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
get lastValue() {
|
|
17
|
+
return this.storage.all.pipe(map((value) => value ? value[0] : null));
|
|
18
|
+
}
|
|
19
|
+
next(value) {
|
|
20
|
+
this.storage.replace(value).subscribe((storedValue) => {
|
|
21
|
+
if (storedValue != null) {
|
|
22
|
+
this._next(storedValue);
|
|
23
|
+
}
|
|
24
|
+
}, (err) => {
|
|
25
|
+
super.error(err);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
_next(value) {
|
|
29
|
+
super.next(value);
|
|
30
|
+
}
|
|
31
|
+
_subscribe(subscriber) {
|
|
32
|
+
let subscription;
|
|
33
|
+
switch (true) {
|
|
34
|
+
case this.closed:
|
|
35
|
+
throw new ObjectUnsubscribedError();
|
|
36
|
+
case this.hasError:
|
|
37
|
+
case this.isStopped:
|
|
38
|
+
subscription = Subscription.EMPTY;
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
this.observers.push(subscriber);
|
|
42
|
+
subscription = new SubjectSubscription(this, subscriber);
|
|
43
|
+
}
|
|
44
|
+
const result = new Subscription();
|
|
45
|
+
result.add(subscription);
|
|
46
|
+
result.add(this.lastValue.subscribe((value) => {
|
|
47
|
+
if (value != null) {
|
|
48
|
+
subscriber.next(value);
|
|
49
|
+
}
|
|
50
|
+
if (this.hasError) {
|
|
51
|
+
subscriber.error(this.thrownError);
|
|
52
|
+
}
|
|
53
|
+
else if (this.isStopped) {
|
|
54
|
+
subscriber.complete();
|
|
55
|
+
}
|
|
56
|
+
}, (err) => {
|
|
57
|
+
subscriber.error(err);
|
|
58
|
+
}));
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZC5kYi5zdWJqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvY29tbW9uL3NyYy9saWIvaW5kZXhlZGRiL2luZGV4ZWQuZGIuc3ViamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQWMsT0FBTyxFQUFjLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE1BQU0sT0FBTyxzQkFBMEIsU0FBUSxPQUFVO0lBQzNDLE9BQU8sQ0FBb0I7SUFFckMsWUFBbUIsTUFBYyxFQUFFLEdBQW1CLEVBQUUsT0FBZ0I7UUFDcEUsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBYSxFQUFFLEVBQUU7WUFDN0MsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVNLElBQUksQ0FBQyxLQUFRO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FDakMsQ0FBQyxXQUFxQixFQUFFLEVBQUU7WUFDdEIsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0wsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVTLEtBQUssQ0FBQyxLQUFRO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxVQUF5QjtRQUN2QyxJQUFJLFlBQTBCLENBQUM7UUFFL0IsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLElBQUksQ0FBQyxNQUFNO2dCQUNaLE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3hDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxTQUFTO2dCQUNmLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1Y7Z0JBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hDLFlBQVksR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNoRTtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUMvQixDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtnQkFDZixVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzFCO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNmLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDdkIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09iamVjdFVuc3Vic2NyaWJlZEVycm9yLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpYmVyLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5kZXhlZERiU3RvcmV9IGZyb20gJy4vaW5kZXhlZC5kYi5zdG9yZSc7XG5pbXBvcnQge1N1YmplY3RTdWJzY3JpcHRpb259IGZyb20gJy4vc3ViamVjdC5zdWJzY3JpcHRpb24nO1xuXG5leHBvcnQgY2xhc3MgSW5kZXhlZERCUmVwbGF5U3ViamVjdDxUPiBleHRlbmRzIFN1YmplY3Q8VD4ge1xuICAgIHByb3RlY3RlZCBzdG9yYWdlOiBJbmRleGVkRGJTdG9yZTxUPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihkYk5hbWU6IHN0cmluZywga2V5OiBrZXlvZiBUIHwgbnVsbCwgdmVyc2lvbj86IG51bWJlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBuZXcgSW5kZXhlZERiU3RvcmU8VD4oZGJOYW1lLCBrZXksIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzRGF0YSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlLnBpcGUobWFwKCh2YWw6IFQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsICE9IG51bGw7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhc3RWYWx1ZSgpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuYWxsLnBpcGUobWFwKCh2YWx1ZTogVFtdKSA9PiB2YWx1ZSA/IHZhbHVlWzBdIDogbnVsbCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5yZXBsYWNlKHZhbHVlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoc3RvcmVkVmFsdWU6IFQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlZFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dChzdG9yZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBzdXBlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9uZXh0KHZhbHVlOiBUKSB7XG4gICAgICAgIHN1cGVyLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBfc3Vic2NyaWJlKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VD4pOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIHRoaXMuY2xvc2VkOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPYmplY3RVbnN1YnNjcmliZWRFcnJvcigpO1xuICAgICAgICAgICAgY2FzZSB0aGlzLmhhc0Vycm9yOlxuICAgICAgICAgICAgY2FzZSB0aGlzLmlzU3RvcHBlZDpcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3RTdWJzY3JpcHRpb24odGhpcywgc3Vic2NyaWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHJlc3VsdC5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgcmVzdWx0LmFkZCh0aGlzLmxhc3RWYWx1ZS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAodmFsdWU6IFQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHRoaXMudGhyb3duRXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Subscription } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* We need this JSDoc comment for affecting ESDoc.
|
|
4
|
+
*/
|
|
5
|
+
export class SubjectSubscription extends Subscription {
|
|
6
|
+
subject;
|
|
7
|
+
subscriber;
|
|
8
|
+
closed = false;
|
|
9
|
+
constructor(subject, subscriber) {
|
|
10
|
+
super();
|
|
11
|
+
this.subject = subject;
|
|
12
|
+
this.subscriber = subscriber;
|
|
13
|
+
}
|
|
14
|
+
unsubscribe() {
|
|
15
|
+
if (this.closed || this.subject == null) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.closed = true;
|
|
19
|
+
const subject = this.subject;
|
|
20
|
+
const observers = subject.observers;
|
|
21
|
+
this.subject = null;
|
|
22
|
+
if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const subscriberIndex = observers.indexOf(this.subscriber);
|
|
26
|
+
if (subscriberIndex !== -1) {
|
|
27
|
+
observers.splice(subscriberIndex, 1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdC5zdWJzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9jb21tb24vc3JjL2xpYi9pbmRleGVkZGIvc3ViamVjdC5zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQXVCLFNBQVEsWUFBWTtJQUcxQjtJQUFtQztJQUZ0RCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQTBCLE9BQTBCLEVBQVMsVUFBdUI7UUFDaEYsS0FBSyxFQUFFLENBQUM7UUFEYyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQWE7SUFFcEYsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRXBDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzdFLE9BQU87U0FDVjtRQUVELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNELElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZlciwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBXZSBuZWVkIHRoaXMgSlNEb2MgY29tbWVudCBmb3IgYWZmZWN0aW5nIEVTRG9jLlxuICovXG5leHBvcnQgY2xhc3MgU3ViamVjdFN1YnNjcmlwdGlvbjxUPiBleHRlbmRzIFN1YnNjcmlwdGlvbiB7XG4gICAgcHVibGljIGNsb3NlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBzdWJqZWN0OiBTdWJqZWN0PFQ+IHwgbnVsbCwgcHVibGljIHN1YnNjcmliZXI6IE9ic2VydmVyPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQgfHwgdGhpcy5zdWJqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5zdWJqZWN0O1xuICAgICAgICBjb25zdCBvYnNlcnZlcnMgPSBzdWJqZWN0Lm9ic2VydmVycztcblxuICAgICAgICB0aGlzLnN1YmplY3QgPSBudWxsO1xuXG4gICAgICAgIGlmICghb2JzZXJ2ZXJzIHx8IG9ic2VydmVycy5sZW5ndGggPT09IDAgfHwgc3ViamVjdC5pc1N0b3BwZWQgfHwgc3ViamVjdC5jbG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXJJbmRleCA9IG9ic2VydmVycy5pbmRleE9mKHRoaXMuc3Vic2NyaWJlcik7XG5cbiAgICAgICAgaWYgKHN1YnNjcmliZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIG9ic2VydmVycy5zcGxpY2Uoc3Vic2NyaWJlckluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs';
|
|
2
|
+
export class ReplaySubjectExt extends ReplaySubject {
|
|
3
|
+
_hasData = false;
|
|
4
|
+
_lastValue;
|
|
5
|
+
oldNext;
|
|
6
|
+
constructor(bufferSize, windowTime, scheduler) {
|
|
7
|
+
super(bufferSize, windowTime, scheduler);
|
|
8
|
+
this.oldNext = this.next;
|
|
9
|
+
this.next = this.nextAndStoreValue;
|
|
10
|
+
}
|
|
11
|
+
nextAndStoreValue(value) {
|
|
12
|
+
this._lastValue = value;
|
|
13
|
+
this._hasData = true;
|
|
14
|
+
this.oldNext(value);
|
|
15
|
+
}
|
|
16
|
+
get hasData() {
|
|
17
|
+
return this._hasData;
|
|
18
|
+
}
|
|
19
|
+
get lastValue() {
|
|
20
|
+
return this._lastValue;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5LnN1YmplY3QuZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvY29tbW9uL3NyYy9saWIvcmVwbGF5LnN1YmplY3QuZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRWxELE1BQU0sT0FBTyxnQkFBb0IsU0FBUSxhQUFnQjtJQUU3QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFVBQVUsQ0FBSztJQUNOLE9BQU8sQ0FBcUI7SUFFN0MsWUFBbUIsVUFBbUIsRUFBRSxVQUFtQixFQUFFLFNBQXlCO1FBQ2xGLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUN2QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBUTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZXBsYXlTdWJqZWN0LCBTY2hlZHVsZXJMaWtlfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFJlcGxheVN1YmplY3RFeHQ8VD4gZXh0ZW5kcyBSZXBsYXlTdWJqZWN0PFQ+IHtcblxuICAgIHByaXZhdGUgX2hhc0RhdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9sYXN0VmFsdWU/OiBUO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2xkTmV4dDogKHZhbHVlOiBUKSA9PiB2b2lkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGJ1ZmZlclNpemU/OiBudW1iZXIsIHdpbmRvd1RpbWU/OiBudW1iZXIsIHNjaGVkdWxlcj86IFNjaGVkdWxlckxpa2UpIHtcbiAgICAgICAgc3VwZXIoYnVmZmVyU2l6ZSwgd2luZG93VGltZSwgc2NoZWR1bGVyKTtcblxuICAgICAgICB0aGlzLm9sZE5leHQgPSB0aGlzLm5leHQ7XG4gICAgICAgIHRoaXMubmV4dCA9IHRoaXMubmV4dEFuZFN0b3JlVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRBbmRTdG9yZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9oYXNEYXRhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbGROZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0RhdGEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGFzdFZhbHVlKCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -41,6 +41,10 @@ function extractResult() {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
class ErrorType {
|
|
44
|
+
static NETWORK = new ErrorType();
|
|
45
|
+
static REQUEST = new ErrorType();
|
|
46
|
+
static AUTH = new ErrorType();
|
|
47
|
+
static ERROR = new ErrorType();
|
|
44
48
|
isError() {
|
|
45
49
|
return this === ErrorType.ERROR;
|
|
46
50
|
}
|
|
@@ -54,10 +58,6 @@ class ErrorType {
|
|
|
54
58
|
return this === ErrorType.AUTH;
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
|
-
ErrorType.NETWORK = new ErrorType();
|
|
58
|
-
ErrorType.REQUEST = new ErrorType();
|
|
59
|
-
ErrorType.AUTH = new ErrorType();
|
|
60
|
-
ErrorType.ERROR = new ErrorType();
|
|
61
61
|
|
|
62
62
|
const CONTENT_TYPE = {
|
|
63
63
|
APPLICATION_FORM: 'application/x-www-form-urlencoded',
|
|
@@ -205,11 +205,14 @@ function cursorRequestToStream(request, tx, result, tearDown) {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
class IndexedDbStore {
|
|
208
|
+
dbName;
|
|
209
|
+
key;
|
|
210
|
+
version;
|
|
211
|
+
_bakValue = [];
|
|
208
212
|
constructor(dbName, key, version) {
|
|
209
213
|
this.dbName = dbName;
|
|
210
214
|
this.key = key;
|
|
211
215
|
this.version = version;
|
|
212
|
-
this._bakValue = [];
|
|
213
216
|
}
|
|
214
217
|
get indexedDB() {
|
|
215
218
|
const request = indexedDB.open(this.dbName, this.version || 1);
|
|
@@ -321,11 +324,13 @@ class IndexedDbStore {
|
|
|
321
324
|
* We need this JSDoc comment for affecting ESDoc.
|
|
322
325
|
*/
|
|
323
326
|
class SubjectSubscription extends Subscription {
|
|
327
|
+
subject;
|
|
328
|
+
subscriber;
|
|
329
|
+
closed = false;
|
|
324
330
|
constructor(subject, subscriber) {
|
|
325
331
|
super();
|
|
326
332
|
this.subject = subject;
|
|
327
333
|
this.subscriber = subscriber;
|
|
328
|
-
this.closed = false;
|
|
329
334
|
}
|
|
330
335
|
unsubscribe() {
|
|
331
336
|
if (this.closed || this.subject == null) {
|
|
@@ -346,6 +351,7 @@ class SubjectSubscription extends Subscription {
|
|
|
346
351
|
}
|
|
347
352
|
|
|
348
353
|
class IndexedDBReplaySubject extends Subject {
|
|
354
|
+
storage;
|
|
349
355
|
constructor(dbName, key, version) {
|
|
350
356
|
super();
|
|
351
357
|
this.storage = new IndexedDbStore(dbName, key, version);
|
|
@@ -403,6 +409,7 @@ class IndexedDBReplaySubject extends Subject {
|
|
|
403
409
|
}
|
|
404
410
|
|
|
405
411
|
class IndexedDBArrayReplaySubject extends IndexedDBReplaySubject {
|
|
412
|
+
partitionSize;
|
|
406
413
|
constructor(partitionSize, dbName, version) {
|
|
407
414
|
super(dbName, null, version);
|
|
408
415
|
this.partitionSize = partitionSize;
|
|
@@ -431,9 +438,11 @@ class IndexedDBArrayReplaySubject extends IndexedDBReplaySubject {
|
|
|
431
438
|
}
|
|
432
439
|
|
|
433
440
|
class ReplaySubjectExt extends ReplaySubject {
|
|
441
|
+
_hasData = false;
|
|
442
|
+
_lastValue;
|
|
443
|
+
oldNext;
|
|
434
444
|
constructor(bufferSize, windowTime, scheduler) {
|
|
435
445
|
super(bufferSize, windowTime, scheduler);
|
|
436
|
-
this._hasData = false;
|
|
437
446
|
this.oldNext = this.next;
|
|
438
447
|
this.next = this.nextAndStoreValue;
|
|
439
448
|
}
|