@christianriedl/utils 1.0.13 → 1.0.15
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/dist/helper.js +8 -6
- package/dist/helper.js.map +1 -1
- package/dist/logger/src/iLogger.d.ts +62 -0
- package/dist/logger/src/iLogger.js +10 -0
- package/dist/logger/src/iLogger.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/src/helper.d.ts +28 -0
- package/dist/utils/src/helper.js +144 -0
- package/dist/utils/src/helper.js.map +1 -0
- package/dist/utils/src/iLocalStorage.d.ts +7 -0
- package/dist/utils/src/iLocalStorage.js +2 -0
- package/dist/utils/src/iLocalStorage.js.map +1 -0
- package/dist/utils/src/index.d.ts +4 -0
- package/dist/utils/src/index.js +5 -0
- package/dist/utils/src/index.js.map +1 -0
- package/dist/utils/src/localStorage.d.ts +20 -0
- package/dist/utils/src/localStorage.js +57 -0
- package/dist/utils/src/localStorage.js.map +1 -0
- package/dist/utils/src/reactiveStorage.d.ts +18 -0
- package/dist/utils/src/reactiveStorage.js +49 -0
- package/dist/utils/src/reactiveStorage.js.map +1 -0
- package/dist/utils/src/registerServiceWorker.d.ts +31 -0
- package/dist/utils/src/registerServiceWorker.js +251 -0
- package/dist/utils/src/registerServiceWorker.js.map +1 -0
- package/package.json +1 -1
package/dist/helper.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { LogLevel } from './iLogger';
|
|
1
2
|
const dec = [1, 10, 100, 1000, 10000, 100000, 1000000];
|
|
2
3
|
const ms1970m1d1 = 62135596800000;
|
|
3
4
|
export class Helper {
|
|
@@ -142,20 +143,21 @@ export class Helper {
|
|
|
142
143
|
}
|
|
143
144
|
static createNullLogger() {
|
|
144
145
|
return {
|
|
145
|
-
/*
|
|
146
146
|
minLogLevel: LogLevel.Trace, countAll: 0, countEnabled: 0, name: 'NullLogger',
|
|
147
|
-
error: (msg: string) => { }, warning: (msg: string) => { }, info: (msg: string) => { }, trace: (msg: string) => { },
|
|
148
|
-
log: (sev: LogLevel, msg: string) => { }, performance: (msg: string) => { }, startPerformance: () => { }
|
|
149
|
-
*/
|
|
150
|
-
minLogLevel: 0, countAll: 0, countEnabled: 0, name: 'NullLogger',
|
|
151
147
|
error: (msg) => { }, warning: (msg) => { }, info: (msg) => { }, trace: (msg) => { },
|
|
152
148
|
log: (sev, msg) => { }, performance: (msg) => { }, startPerformance: () => { }
|
|
149
|
+
/*
|
|
150
|
+
minLogLevel: 0, countAll: 0, countEnabled: 0, name: 'NullLogger',
|
|
151
|
+
error: (msg: string) => { }, warning: (msg: string) => { }, info: (msg: string) => { }, trace: (msg: string) => { },
|
|
152
|
+
log: (sev: number, msg: string) => { }, performance: (msg: string) => { }, startPerformance: () => { }
|
|
153
|
+
*/
|
|
153
154
|
};
|
|
154
155
|
}
|
|
155
156
|
static createDummyReactive() {
|
|
156
157
|
return {
|
|
157
158
|
ref: (t) => { return { value: t }; },
|
|
158
|
-
reactive: (obj) => { return obj; }
|
|
159
|
+
reactive: (obj) => { return obj; },
|
|
160
|
+
toRaw: (obj) => { return obj; }
|
|
159
161
|
};
|
|
160
162
|
}
|
|
161
163
|
}
|
package/dist/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
Trace = 0,
|
|
3
|
+
Debug = 1,
|
|
4
|
+
Information = 2,
|
|
5
|
+
Warning = 3,
|
|
6
|
+
Error = 4,
|
|
7
|
+
Critical = 5
|
|
8
|
+
}
|
|
9
|
+
export interface ILoggerEntry {
|
|
10
|
+
uniqueId: number;
|
|
11
|
+
logLevel: LogLevel;
|
|
12
|
+
now: Date;
|
|
13
|
+
categoryName: string;
|
|
14
|
+
message: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ILoggerEntryEx extends ILoggerEntry {
|
|
17
|
+
timeAsc: string;
|
|
18
|
+
severityAsc: string;
|
|
19
|
+
styleObject: any;
|
|
20
|
+
}
|
|
21
|
+
export interface ILoggerInfo {
|
|
22
|
+
name: string;
|
|
23
|
+
countAll: number;
|
|
24
|
+
countEnabled: number;
|
|
25
|
+
minLogLevel: LogLevel;
|
|
26
|
+
}
|
|
27
|
+
export interface ILogger extends ILoggerInfo {
|
|
28
|
+
trace(msg: string): void;
|
|
29
|
+
info(msg: string): void;
|
|
30
|
+
warning(msg: string): void;
|
|
31
|
+
error(msg: string): void;
|
|
32
|
+
log(severity: LogLevel, msg: string): void;
|
|
33
|
+
startPerformance(): void;
|
|
34
|
+
performance(msg: string): void;
|
|
35
|
+
}
|
|
36
|
+
export interface IProviderInfo extends ILoggerInfo {
|
|
37
|
+
info: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ILoggerProvider extends IProviderInfo {
|
|
40
|
+
log(logEntry: ILoggerEntry, formatedMessage: string): void;
|
|
41
|
+
}
|
|
42
|
+
export interface ILoggerQueueEntries {
|
|
43
|
+
lastUniqueId: number;
|
|
44
|
+
readPointerStart: number;
|
|
45
|
+
readPointerNext: number;
|
|
46
|
+
writePointer: number;
|
|
47
|
+
size: number;
|
|
48
|
+
firstTime: Date;
|
|
49
|
+
lastTime: Date;
|
|
50
|
+
minLogLevel: LogLevel;
|
|
51
|
+
entries: ILoggerEntry[];
|
|
52
|
+
}
|
|
53
|
+
export interface ILoggerService {
|
|
54
|
+
name: string;
|
|
55
|
+
getLoggers(): Promise<ILoggerInfo[]>;
|
|
56
|
+
getProviders(): Promise<IProviderInfo[]>;
|
|
57
|
+
setLoggerLevel(logger: string, level: LogLevel): Promise<boolean>;
|
|
58
|
+
setProviderLevel(provider: string, level: LogLevel): Promise<boolean>;
|
|
59
|
+
getQueuedLogs(minLogLevel: LogLevel, maxCount: number, maxMinutes: number, reverse: boolean, trimCategory: boolean, readPointer: number): Promise<ILoggerQueueEntries>;
|
|
60
|
+
clearCounter(): Promise<boolean>;
|
|
61
|
+
clearQueue(): Promise<boolean>;
|
|
62
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var LogLevel;
|
|
2
|
+
(function (LogLevel) {
|
|
3
|
+
LogLevel[LogLevel["Trace"] = 0] = "Trace";
|
|
4
|
+
LogLevel[LogLevel["Debug"] = 1] = "Debug";
|
|
5
|
+
LogLevel[LogLevel["Information"] = 2] = "Information";
|
|
6
|
+
LogLevel[LogLevel["Warning"] = 3] = "Warning";
|
|
7
|
+
LogLevel[LogLevel["Error"] = 4] = "Error";
|
|
8
|
+
LogLevel[LogLevel["Critical"] = 5] = "Critical";
|
|
9
|
+
})(LogLevel || (LogLevel = {}));
|
|
10
|
+
//# sourceMappingURL=iLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iLogger.js","sourceRoot":"","sources":["../../../../logger/src/iLogger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,qDAAe,CAAA;IACf,6CAAW,CAAA;IACX,yCAAS,CAAA;IACT,+CAAY,CAAA;AAChB,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOC,CAAC;AAQF,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IAChB,6CAAW,CAAA;IACX,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,yCAAK,CAAA;IACL,uCAAI,CAAA;IACJ,iDAAS,CAAA;IACT,2CAAM,CAAA;IACN,2CAAM,CAAA;AACV,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AACD,MAAM,CAAN,IAAY,OAMX;AAND,WAAY,OAAO;IACf,2CAAW,CAAA;IACX,yCAAM,CAAA;IACN,qCAAI,CAAA;IACJ,iCAAE,CAAA;IACF,6CAAQ,CAAA;AACZ,CAAC,EANW,OAAO,KAAP,OAAO,QAMlB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare type Dictionary<T> = {
|
|
2
|
+
[key: string]: T;
|
|
3
|
+
};
|
|
4
|
+
export interface IValueText {
|
|
5
|
+
value: number;
|
|
6
|
+
text: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class Helper {
|
|
9
|
+
static fromMilliseconds1970(ms: number): Date;
|
|
10
|
+
static toTicks(dt: Date): number;
|
|
11
|
+
static toUnixTime(dt: Date): number;
|
|
12
|
+
static fromTicks(ticks: number): Date;
|
|
13
|
+
static fromUnixTime(unixTime: number): Date;
|
|
14
|
+
static toUTC(dt: Date): Date;
|
|
15
|
+
static toLocal(dt: Date): Date;
|
|
16
|
+
static round(value: number, digits: number | undefined): string;
|
|
17
|
+
static formatTime(dt: Date, withSeconds?: boolean): string;
|
|
18
|
+
static formatDayTime(dt: Date, withSeconds?: boolean): string;
|
|
19
|
+
private static padNumber2;
|
|
20
|
+
static toColor(red: number, green: number, blue: number): string;
|
|
21
|
+
static generateUUID(): string;
|
|
22
|
+
static deepCompare(o: any, p: any): boolean;
|
|
23
|
+
static isMobileDevice(): boolean;
|
|
24
|
+
static wait(ms: number): Promise<void>;
|
|
25
|
+
static enumToString(en: any, value: unknown): string;
|
|
26
|
+
static stringToEnum(en: any, value: unknown): number;
|
|
27
|
+
static getEnumOptions(en: any): IValueText[];
|
|
28
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const dec = [1, 10, 100, 1000, 10000, 100000, 1000000];
|
|
2
|
+
const ms1970m1d1 = 62135596800000;
|
|
3
|
+
export class Helper {
|
|
4
|
+
static fromMilliseconds1970(ms) {
|
|
5
|
+
ms = ms - ms1970m1d1;
|
|
6
|
+
return new Date(ms); // 1.1.1970 utc in ms
|
|
7
|
+
}
|
|
8
|
+
static toTicks(dt) {
|
|
9
|
+
return ((dt.getTime() * 10000) + 621355968000000000);
|
|
10
|
+
}
|
|
11
|
+
static toUnixTime(dt) {
|
|
12
|
+
return Math.round(dt.getTime() / 1000);
|
|
13
|
+
}
|
|
14
|
+
static fromTicks(ticks) {
|
|
15
|
+
return new Date((ticks - 621355968000000000) / 1000);
|
|
16
|
+
}
|
|
17
|
+
static fromUnixTime(unixTime) {
|
|
18
|
+
return new Date(unixTime * 1000);
|
|
19
|
+
}
|
|
20
|
+
static toUTC(dt) {
|
|
21
|
+
return new Date(dt.getUTCFullYear(), dt.getUTCMonth(), dt.getUTCDate(), dt.getUTCHours(), dt.getUTCMinutes(), dt.getUTCSeconds());
|
|
22
|
+
}
|
|
23
|
+
static toLocal(dt) {
|
|
24
|
+
let d = dt.getTime() - dt.getTimezoneOffset() * 60000;
|
|
25
|
+
return new Date(d);
|
|
26
|
+
}
|
|
27
|
+
static round(value, digits) {
|
|
28
|
+
if (!digits) {
|
|
29
|
+
digits = 0;
|
|
30
|
+
}
|
|
31
|
+
value = Math.round(value * dec[digits]) / dec[digits];
|
|
32
|
+
return value.toString();
|
|
33
|
+
}
|
|
34
|
+
static formatTime(dt, withSeconds) {
|
|
35
|
+
let s = Helper.padNumber2(dt.getHours()) + ':' + Helper.padNumber2(dt.getMinutes());
|
|
36
|
+
if (withSeconds) {
|
|
37
|
+
s = s + ':' + this.padNumber2(dt.getSeconds());
|
|
38
|
+
}
|
|
39
|
+
return s;
|
|
40
|
+
}
|
|
41
|
+
static formatDayTime(dt, withSeconds) {
|
|
42
|
+
let s = dt.getDate() + ' ' + Helper.padNumber2(dt.getHours()) + ':' + Helper.padNumber2(dt.getMinutes());
|
|
43
|
+
if (withSeconds) {
|
|
44
|
+
s = s + ':' + this.padNumber2(dt.getSeconds());
|
|
45
|
+
}
|
|
46
|
+
return s;
|
|
47
|
+
}
|
|
48
|
+
static padNumber2(num, radix) {
|
|
49
|
+
let s = num.toString(radix);
|
|
50
|
+
if (s.length < 2)
|
|
51
|
+
s = '0' + s;
|
|
52
|
+
return s;
|
|
53
|
+
}
|
|
54
|
+
static toColor(red, green, blue) {
|
|
55
|
+
return '#' + Helper.padNumber2(red, 16) + Helper.padNumber2(green, 16) + Helper.padNumber2(blue, 16);
|
|
56
|
+
}
|
|
57
|
+
static generateUUID() {
|
|
58
|
+
var d = new Date().getTime();
|
|
59
|
+
d += performance.now(); //use high-precision timer if available
|
|
60
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
61
|
+
var r = (d + Math.random() * 16) % 16 | 0;
|
|
62
|
+
d = Math.floor(d / 16);
|
|
63
|
+
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
static deepCompare(o, p) {
|
|
67
|
+
if (typeof o == 'undefined' || typeof p == 'undefined') {
|
|
68
|
+
return typeof o == typeof p;
|
|
69
|
+
}
|
|
70
|
+
var i, keysO = Object.keys(o).sort(), keysP = Object.keys(p).sort();
|
|
71
|
+
if (keysO.length !== keysP.length)
|
|
72
|
+
return false; //not the same nr of keys
|
|
73
|
+
if (keysO.join('') !== keysP.join(''))
|
|
74
|
+
return false; //different keys
|
|
75
|
+
for (i = 0; i < keysO.length; ++i) {
|
|
76
|
+
if (o[keysO[i]] instanceof Array) {
|
|
77
|
+
if (!(p[keysO[i]] instanceof Array))
|
|
78
|
+
return false;
|
|
79
|
+
//if (compareObjects(o[keysO[i]], p[keysO[i]] === false) return false
|
|
80
|
+
//would work, too, and perhaps is a better fit, still, this is easy, too
|
|
81
|
+
if (p[keysO[i]].sort().join('') !== o[keysO[i]].sort().join(''))
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
else if (o[keysO[i]] instanceof Date) {
|
|
85
|
+
if (!(p[keysO[i]] instanceof Date))
|
|
86
|
+
return false;
|
|
87
|
+
if (('' + o[keysO[i]]) !== ('' + p[keysO[i]]))
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
else if (o[keysO[i]] instanceof Function) {
|
|
91
|
+
if (!(p[keysO[i]] instanceof Function))
|
|
92
|
+
return false;
|
|
93
|
+
//ignore functions, or check them regardless?
|
|
94
|
+
}
|
|
95
|
+
else if (o[keysO[i]] instanceof Object) {
|
|
96
|
+
if (!(p[keysO[i]] instanceof Object))
|
|
97
|
+
return false;
|
|
98
|
+
if (o[keysO[i]] === o) { //self reference?
|
|
99
|
+
if (p[keysO[i]] !== p)
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
else if (Helper.deepCompare(o[keysO[i]], p[keysO[i]]) === false)
|
|
103
|
+
return false; //WARNING: does not deal with circular refs other than ^^
|
|
104
|
+
}
|
|
105
|
+
else if (o[keysO[i]] !== p[keysO[i]]) //change !== to != for loose comparison
|
|
106
|
+
return false; //not the same value
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
static isMobileDevice() {
|
|
111
|
+
return (typeof window.orientation !== "undefined");
|
|
112
|
+
}
|
|
113
|
+
static wait(ms) {
|
|
114
|
+
return new Promise(r => setTimeout(r, ms));
|
|
115
|
+
}
|
|
116
|
+
static enumToString(en, value) {
|
|
117
|
+
if (typeof value === 'string')
|
|
118
|
+
return value;
|
|
119
|
+
if (typeof value === 'number')
|
|
120
|
+
return en[value];
|
|
121
|
+
return '';
|
|
122
|
+
}
|
|
123
|
+
static stringToEnum(en, value) {
|
|
124
|
+
if (typeof value === 'string') {
|
|
125
|
+
return en[value];
|
|
126
|
+
//const e = en as { [key: string]: number };
|
|
127
|
+
//return e[value];
|
|
128
|
+
}
|
|
129
|
+
if (typeof value === 'number')
|
|
130
|
+
return value;
|
|
131
|
+
return -1;
|
|
132
|
+
}
|
|
133
|
+
static getEnumOptions(en) {
|
|
134
|
+
const options = [];
|
|
135
|
+
for (const key in en) {
|
|
136
|
+
const val = en[key];
|
|
137
|
+
if (typeof val === 'number') {
|
|
138
|
+
options.push({ value: val, text: key });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return options;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ILocalStorage {
|
|
2
|
+
getItem(name: string): string | null;
|
|
3
|
+
getItemString(name: string, def?: string): string;
|
|
4
|
+
getItemNumber(name: string, def?: number): number;
|
|
5
|
+
getItemBoolean(name: string, def?: boolean): boolean;
|
|
6
|
+
setItem(name: string, value: string | number | boolean | null): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iLocalStorage.js","sourceRoot":"","sources":["../../../src/iLocalStorage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ILocalStorage } from './iLocalStorage';
|
|
2
|
+
export * from './iLocalStorage';
|
|
3
|
+
export declare class LocalStorageDummy implements ILocalStorage {
|
|
4
|
+
prefix: string;
|
|
5
|
+
constructor(prefix: string);
|
|
6
|
+
getItem(name: string): string | null;
|
|
7
|
+
getItemString(name: string, def?: string): string;
|
|
8
|
+
getItemNumber(name: string, def?: number): number;
|
|
9
|
+
getItemBoolean(name: string, def?: boolean): boolean;
|
|
10
|
+
setItem(name: string, value: string | number | boolean | null): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class LocalStorage implements ILocalStorage {
|
|
13
|
+
prefix: string;
|
|
14
|
+
constructor(prefix: string);
|
|
15
|
+
getItem(name: string): string | null;
|
|
16
|
+
getItemString(name: string, def?: string): string;
|
|
17
|
+
getItemNumber(name: string, def?: number): number;
|
|
18
|
+
getItemBoolean(name: string, def?: boolean): boolean;
|
|
19
|
+
setItem(name: string, value: string | number | boolean | null): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export * from './iLocalStorage';
|
|
2
|
+
export class LocalStorageDummy {
|
|
3
|
+
prefix = "";
|
|
4
|
+
constructor(prefix) {
|
|
5
|
+
if (prefix)
|
|
6
|
+
this.prefix = prefix + '_';
|
|
7
|
+
}
|
|
8
|
+
getItem(name) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
getItemString(name, def) {
|
|
12
|
+
return def ? def : "";
|
|
13
|
+
}
|
|
14
|
+
getItemNumber(name, def) {
|
|
15
|
+
return def ? def : 0;
|
|
16
|
+
}
|
|
17
|
+
getItemBoolean(name, def) {
|
|
18
|
+
return def ? def : false;
|
|
19
|
+
}
|
|
20
|
+
setItem(name, value) {
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class LocalStorage {
|
|
24
|
+
prefix = "";
|
|
25
|
+
constructor(prefix) {
|
|
26
|
+
if (prefix)
|
|
27
|
+
this.prefix = prefix + '_';
|
|
28
|
+
}
|
|
29
|
+
getItem(name) {
|
|
30
|
+
return window.localStorage.getItem(this.prefix + name);
|
|
31
|
+
}
|
|
32
|
+
getItemString(name, def) {
|
|
33
|
+
let str = window.localStorage.getItem(this.prefix + name);
|
|
34
|
+
if (str === null) {
|
|
35
|
+
if (def)
|
|
36
|
+
this.setItem(name, def);
|
|
37
|
+
str = def ? def : "";
|
|
38
|
+
}
|
|
39
|
+
return str;
|
|
40
|
+
}
|
|
41
|
+
getItemNumber(name, def) {
|
|
42
|
+
const str = window.localStorage.getItem(this.prefix + name);
|
|
43
|
+
if (str === null)
|
|
44
|
+
return def ? def : 0;
|
|
45
|
+
return Number(str);
|
|
46
|
+
}
|
|
47
|
+
getItemBoolean(name, def) {
|
|
48
|
+
const str = window.localStorage.getItem(this.prefix + name);
|
|
49
|
+
if (str === null)
|
|
50
|
+
return def ? def : false;
|
|
51
|
+
return str === "true";
|
|
52
|
+
}
|
|
53
|
+
setItem(name, value) {
|
|
54
|
+
window.localStorage.setItem(this.prefix + name, (value ? value.toString() : null));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=localStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localStorage.js","sourceRoot":"","sources":["../../../src/localStorage.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAEhC,MAAM,OAAO,iBAAiB;IAC1B,MAAM,GAAG,EAAE,CAAC;IACZ,YAAY,MAAc;QACtB,IAAI,MAAM;YACN,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,aAAa,CAAC,IAAY,EAAE,GAAY;QACpC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC;IACD,aAAa,CAAC,IAAY,EAAE,GAAY;QACpC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,cAAc,CAAC,IAAY,EAAE,GAAa;QACtC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,KAAuC;IAC7D,CAAC;CACJ;AACD,MAAM,OAAO,YAAY;IACrB,MAAM,GAAG,EAAE,CAAC;IACZ,YAAY,MAAc;QACtB,IAAI,MAAM;YACN,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,IAAY;QAChB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,aAAa,CAAC,IAAY,EAAE,GAAY;QACpC,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC1D,IAAI,GAAG,KAAK,IAAI,EAAE;YACd,IAAI,GAAG;gBACH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SACxB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACD,aAAa,CAAC,IAAY,EAAE,GAAY;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5D,IAAI,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,cAAc,CAAC,IAAY,EAAE,GAAa;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5D,IAAI,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7B,OAAO,GAAG,KAAK,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,KAAuC;QACzD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC,CAAC;IACjG,CAAC;CACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ILocalStorage } from './iLocalStorage';
|
|
2
|
+
declare type Dictionary<T> = {
|
|
3
|
+
[key: string]: T;
|
|
4
|
+
};
|
|
5
|
+
export declare class ReactiveStorageItem {
|
|
6
|
+
storage: ILocalStorage;
|
|
7
|
+
name: string;
|
|
8
|
+
value: import("vue").Ref<string | number | boolean>;
|
|
9
|
+
constructor(localStorage: ILocalStorage, name: string, val: string | number | boolean);
|
|
10
|
+
}
|
|
11
|
+
export declare class ReactiveStorage {
|
|
12
|
+
storage: ILocalStorage;
|
|
13
|
+
items: Dictionary<ReactiveStorageItem>;
|
|
14
|
+
constructor(localStorage: ILocalStorage);
|
|
15
|
+
setItem(name: string, val: string | number | boolean): void;
|
|
16
|
+
getItem(name: string): string | number | boolean | undefined;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ref, watchEffect } from 'vue';
|
|
2
|
+
export class ReactiveStorageItem {
|
|
3
|
+
storage;
|
|
4
|
+
name;
|
|
5
|
+
value = ref(null);
|
|
6
|
+
constructor(localStorage, name, val) {
|
|
7
|
+
this.storage = localStorage;
|
|
8
|
+
this.name = name;
|
|
9
|
+
const existingValue = localStorage.getItem(name);
|
|
10
|
+
if (existingValue == null) {
|
|
11
|
+
this.value.value = val;
|
|
12
|
+
localStorage.setItem(name, val);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
if (typeof val === 'string')
|
|
16
|
+
this.value.value = localStorage.getItemString(name);
|
|
17
|
+
if (typeof val === 'number')
|
|
18
|
+
this.value.value = localStorage.getItemNumber(name);
|
|
19
|
+
if (typeof val === 'boolean')
|
|
20
|
+
this.value.value = localStorage.getItemBoolean(name);
|
|
21
|
+
}
|
|
22
|
+
watchEffect(() => {
|
|
23
|
+
this.storage.setItem(this.name, this.value.value);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class ReactiveStorage {
|
|
28
|
+
storage;
|
|
29
|
+
items = {};
|
|
30
|
+
constructor(localStorage) {
|
|
31
|
+
this.storage = localStorage;
|
|
32
|
+
}
|
|
33
|
+
setItem(name, val) {
|
|
34
|
+
let item = this.items[name];
|
|
35
|
+
if (item) {
|
|
36
|
+
item.value.value = val;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
item = new ReactiveStorageItem(this.storage, name, val);
|
|
40
|
+
this.items[name] = item;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getItem(name) {
|
|
44
|
+
let item = this.items[name];
|
|
45
|
+
if (item)
|
|
46
|
+
return item.value.value;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=reactiveStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactiveStorage.js","sourceRoot":"","sources":["../../../src/reactiveStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAIvC,MAAM,OAAO,mBAAmB;IAC5B,OAAO,CAAgB;IACvB,IAAI,CAAS;IACb,KAAK,GAAG,GAAG,CAA4B,IAAI,CAAC,CAAC;IAE7C,YAAY,YAA2B,EAAE,IAAY,EAAE,GAA8B;QACjF,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAE,IAAI,CAAC,CAAC;QAClD,IAAI,aAAa,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACvB,YAAY,CAAC,OAAO,CAAE,IAAI,EAAE,GAAG,CAAC,CAAC;SACpC;aACI;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,KAAK,SAAS;gBACxB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC5D;QACD,WAAW,CAAE,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,OAAO,eAAe;IACxB,OAAO,CAAgB;IACvB,KAAK,GAAoC,EAAE,CAAC;IAE5C,YAAY,YAA2B;QACnC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;IAChC,CAAC;IAED,OAAO,CAAE,IAAY,EAAE,GAA8B;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;SAC1B;aACI;YACD,IAAI,GAAG,IAAI,mBAAmB,CAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC3B;IACL,CAAC;IACD,OAAO,CAAE,IAAY;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,CAAC;CACJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ILogger } from '../../logger/src/iLogger';
|
|
2
|
+
export interface IHook {
|
|
3
|
+
log: ILogger;
|
|
4
|
+
online(value: boolean): void;
|
|
5
|
+
ready(): void;
|
|
6
|
+
updated(): void;
|
|
7
|
+
cached(): void;
|
|
8
|
+
registered(): void;
|
|
9
|
+
error(reason: any): void;
|
|
10
|
+
subscribed?(isSubscribed: boolean): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class RegisterServiceWorker {
|
|
13
|
+
applicationServerPublicKey: string | undefined;
|
|
14
|
+
isOnline: boolean;
|
|
15
|
+
isSubscribed?: boolean;
|
|
16
|
+
static instance: RegisterServiceWorker;
|
|
17
|
+
private _rsw;
|
|
18
|
+
private _hook;
|
|
19
|
+
constructor(hook: IHook, applicationServerPublicKey?: string);
|
|
20
|
+
get registration(): ServiceWorkerRegistration;
|
|
21
|
+
register(swUrl: string, scope?: string): void;
|
|
22
|
+
private registerValidSW;
|
|
23
|
+
private processMessage;
|
|
24
|
+
notify(msg: any): void;
|
|
25
|
+
private checkValidServiceWorker;
|
|
26
|
+
unregister(): void;
|
|
27
|
+
getSubscription(): Promise<PushSubscription | null>;
|
|
28
|
+
subscribeUser(): Promise<PushSubscription>;
|
|
29
|
+
unsubscribeUser(): Promise<PushSubscription>;
|
|
30
|
+
private static urlB64ToUint8Array;
|
|
31
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
// Register a service worker to serve assets from local cache.
|
|
2
|
+
// This lets the app load faster on subsequent visits in production, and gives
|
|
3
|
+
// it offline capabilities. However, it also means that developers (and users)
|
|
4
|
+
// will only see deployed updates on the "N+1" visit to a page, since previously
|
|
5
|
+
// cached resources are updated in the background.
|
|
6
|
+
const isLocalhost = Boolean(window.location.hostname === 'localhost' ||
|
|
7
|
+
// [::1] is the IPv6 localhost address.
|
|
8
|
+
window.location.hostname === '[::1]' ||
|
|
9
|
+
// 127.0.0.1/8 is considered localhost for IPv4.
|
|
10
|
+
window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));
|
|
11
|
+
export class RegisterServiceWorker {
|
|
12
|
+
applicationServerPublicKey;
|
|
13
|
+
isOnline;
|
|
14
|
+
isSubscribed;
|
|
15
|
+
static instance;
|
|
16
|
+
_rsw = null;
|
|
17
|
+
_hook;
|
|
18
|
+
constructor(hook, applicationServerPublicKey) {
|
|
19
|
+
RegisterServiceWorker.instance = this;
|
|
20
|
+
this._hook = hook;
|
|
21
|
+
this.isOnline = navigator.onLine;
|
|
22
|
+
this.applicationServerPublicKey = applicationServerPublicKey;
|
|
23
|
+
this._hook.online(this.isOnline);
|
|
24
|
+
window.ononline = (ev) => {
|
|
25
|
+
this._hook.online(true);
|
|
26
|
+
this.isOnline = true;
|
|
27
|
+
};
|
|
28
|
+
window.onoffline = (ev) => {
|
|
29
|
+
this._hook.online(false);
|
|
30
|
+
this.isOnline = false;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
get registration() {
|
|
34
|
+
return this._rsw;
|
|
35
|
+
}
|
|
36
|
+
register(swUrl, scope) {
|
|
37
|
+
const self = this;
|
|
38
|
+
if ('serviceWorker' in navigator) {
|
|
39
|
+
this._hook.log.info('Register service worker');
|
|
40
|
+
window.addEventListener('load', () => {
|
|
41
|
+
if (isLocalhost) {
|
|
42
|
+
// This is running on localhost. Lets check if a service worker still exists or not.
|
|
43
|
+
self.checkValidServiceWorker(swUrl);
|
|
44
|
+
navigator.serviceWorker.ready
|
|
45
|
+
.then(() => {
|
|
46
|
+
this._hook.ready();
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Is not local host. Just register service worker
|
|
51
|
+
self.registerValidSW(swUrl, scope);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
registerValidSW(swUrl, scope) {
|
|
57
|
+
const self = this;
|
|
58
|
+
navigator.serviceWorker
|
|
59
|
+
.register(swUrl, { scope: scope })
|
|
60
|
+
.then(registration => {
|
|
61
|
+
self._rsw = registration;
|
|
62
|
+
if (navigator.serviceWorker.onmessage != null) {
|
|
63
|
+
navigator.serviceWorker.addEventListener('message', (swevent) => {
|
|
64
|
+
const reply = self.processMessage(swevent.data);
|
|
65
|
+
if (swevent.ports !== null)
|
|
66
|
+
swevent.ports[0].postMessage(reply);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
registration.onupdatefound = () => {
|
|
70
|
+
const installingWorker = registration.installing;
|
|
71
|
+
self._hook.log.info('Update found');
|
|
72
|
+
if (installingWorker !== null) {
|
|
73
|
+
installingWorker.onstatechange = () => {
|
|
74
|
+
if (installingWorker) {
|
|
75
|
+
self._hook.log.info('State changed ' + installingWorker.state);
|
|
76
|
+
if (installingWorker.state === 'installed') {
|
|
77
|
+
if (navigator.serviceWorker.controller) {
|
|
78
|
+
// At this point, the old content will have been purged and
|
|
79
|
+
// the fresh content will have been added to the cache.
|
|
80
|
+
// It's the perfect time to display a "New content is
|
|
81
|
+
// available; please refresh." message in your web app.
|
|
82
|
+
self._hook.updated();
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// At this point, everything has been precached.
|
|
86
|
+
// It's the perfect time to display a
|
|
87
|
+
// "Content is cached for offline use." message.
|
|
88
|
+
self._hook.cached();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
self._hook.log.info('Registered at scope ' + registration.scope);
|
|
96
|
+
self._hook.registered();
|
|
97
|
+
})
|
|
98
|
+
.catch(error => {
|
|
99
|
+
self._hook.error(error);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
processMessage(msgObj) {
|
|
103
|
+
try {
|
|
104
|
+
this._hook.log.info("Message " + JSON.stringify(msgObj));
|
|
105
|
+
if (msgObj.type === 1) {
|
|
106
|
+
this.notify(msgObj.message);
|
|
107
|
+
return "received";
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
this._hook.log.warning("Message " + JSON.stringify(err));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
notify(msg) {
|
|
115
|
+
if (!("Notification" in window)) {
|
|
116
|
+
alert("This browser does not support desktop notification");
|
|
117
|
+
}
|
|
118
|
+
else if (Notification.permission === "granted") {
|
|
119
|
+
// If it's okay let's create a notification
|
|
120
|
+
const notification = new Notification(msg);
|
|
121
|
+
}
|
|
122
|
+
else if (Notification.permission !== "denied") {
|
|
123
|
+
Notification.requestPermission(function (permission) {
|
|
124
|
+
// If the user accepts, let's create a notification
|
|
125
|
+
if (permission === "granted") {
|
|
126
|
+
const notification = new Notification(msg);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
checkValidServiceWorker(swUrl) {
|
|
132
|
+
// Check if the service worker can be found.
|
|
133
|
+
const self = this;
|
|
134
|
+
fetch(swUrl)
|
|
135
|
+
.then(response => {
|
|
136
|
+
// Ensure service worker exists, and that we really are getting a JS file.
|
|
137
|
+
if (response.status === 404 || response.headers.get('content-type').indexOf('javascript') === -1) {
|
|
138
|
+
// No service worker found.
|
|
139
|
+
self._hook.error(`Service worker not found at ${swUrl}`);
|
|
140
|
+
self.unregister();
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Service worker found. Proceed as normal.
|
|
144
|
+
this.registerValidSW(swUrl);
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
.catch(error => {
|
|
148
|
+
if (!navigator.onLine) {
|
|
149
|
+
self._hook.online(false);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
self._hook.error(error);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
unregister() {
|
|
157
|
+
if ('serviceWorker' in navigator) {
|
|
158
|
+
this._hook.log.info('Unregister service worker');
|
|
159
|
+
navigator.serviceWorker.ready
|
|
160
|
+
.then(registration => registration.unregister());
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
getSubscription() {
|
|
164
|
+
this._hook.log.trace('get subscription');
|
|
165
|
+
const self = this;
|
|
166
|
+
const promise = new Promise(function (resolve, reject) {
|
|
167
|
+
if (self._rsw === null) {
|
|
168
|
+
reject(new Error('No service worker registered'));
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
self.registration.pushManager.getSubscription()
|
|
172
|
+
.then(subscription => {
|
|
173
|
+
resolve(subscription);
|
|
174
|
+
self.isSubscribed = subscription !== null;
|
|
175
|
+
if (self._hook.subscribed)
|
|
176
|
+
self._hook.subscribed(self.isSubscribed);
|
|
177
|
+
})
|
|
178
|
+
.catch(error => reject(error));
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return promise;
|
|
182
|
+
}
|
|
183
|
+
subscribeUser() {
|
|
184
|
+
this._hook.log.info('subscribe user');
|
|
185
|
+
const self = this;
|
|
186
|
+
const promise = new Promise(function (resolve, reject) {
|
|
187
|
+
if (!self.applicationServerPublicKey) {
|
|
188
|
+
reject(new Error("Application server public key missing"));
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const applicationServerKey = RegisterServiceWorker.urlB64ToUint8Array(self.applicationServerPublicKey);
|
|
192
|
+
if (self._rsw === null) {
|
|
193
|
+
reject(new Error('No service worker registered'));
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const options = {
|
|
197
|
+
userVisibleOnly: true,
|
|
198
|
+
applicationServerKey: applicationServerKey
|
|
199
|
+
};
|
|
200
|
+
self.registration.pushManager.subscribe(options)
|
|
201
|
+
.then(subscription => {
|
|
202
|
+
resolve(subscription);
|
|
203
|
+
self.isSubscribed = subscription !== null;
|
|
204
|
+
if (self._hook.subscribed)
|
|
205
|
+
self._hook.subscribed(self.isSubscribed);
|
|
206
|
+
})
|
|
207
|
+
.catch(err => reject(err));
|
|
208
|
+
});
|
|
209
|
+
return promise;
|
|
210
|
+
}
|
|
211
|
+
unsubscribeUser() {
|
|
212
|
+
this._hook.log.info('unsubscribe user');
|
|
213
|
+
const self = this;
|
|
214
|
+
const promise = new Promise(function (resolve, reject) {
|
|
215
|
+
if (self._rsw === null) {
|
|
216
|
+
reject(new Error('No service worker registered'));
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
self.registration.pushManager.getSubscription()
|
|
220
|
+
.then(subscription => {
|
|
221
|
+
if (subscription !== null) {
|
|
222
|
+
subscription.unsubscribe()
|
|
223
|
+
.then((res) => {
|
|
224
|
+
resolve(subscription);
|
|
225
|
+
if (res) {
|
|
226
|
+
self.isSubscribed = false;
|
|
227
|
+
if (self._hook.subscribed)
|
|
228
|
+
self._hook.subscribed(self.isSubscribed);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
})
|
|
233
|
+
.catch(error => reject(error));
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
return promise;
|
|
237
|
+
}
|
|
238
|
+
static urlB64ToUint8Array(base64String) {
|
|
239
|
+
const padding = '='.repeat((4 - base64String.length % 4) % 4);
|
|
240
|
+
const base64 = (base64String + padding)
|
|
241
|
+
.replace(/\-/g, '+')
|
|
242
|
+
.replace(/_/g, '/');
|
|
243
|
+
const rawData = window.atob(base64);
|
|
244
|
+
const outputArray = new Uint8Array(rawData.length);
|
|
245
|
+
for (let i = 0; i < rawData.length; ++i) {
|
|
246
|
+
outputArray[i] = rawData.charCodeAt(i);
|
|
247
|
+
}
|
|
248
|
+
return outputArray;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=registerServiceWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerServiceWorker.js","sourceRoot":"","sources":["../../../src/registerServiceWorker.ts"],"names":[],"mappings":"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"}
|