@igo2/core 1.15.5 → 1.15.6
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/esm2020/igo2-core.mjs +4 -4
- package/esm2020/lib/activity/activity.interceptor.mjs +29 -29
- package/esm2020/lib/activity/activity.module.mjs +29 -29
- package/esm2020/lib/activity/activity.service.mjs +32 -32
- package/esm2020/lib/activity/index.mjs +2 -2
- package/esm2020/lib/analytics/index.mjs +1 -1
- package/esm2020/lib/analytics/shared/analytics.interface.mjs +1 -1
- package/esm2020/lib/analytics/shared/analytics.service.mjs +80 -80
- package/esm2020/lib/analytics/shared/index.mjs +2 -2
- package/esm2020/lib/compression/compressedData.interface.mjs +1 -1
- package/esm2020/lib/compression/compression.service.mjs +139 -139
- package/esm2020/lib/compression/index.mjs +2 -2
- package/esm2020/lib/config/config.interface.mjs +1 -1
- package/esm2020/lib/config/config.module.mjs +22 -22
- package/esm2020/lib/config/config.provider.mjs +20 -20
- package/esm2020/lib/config/config.service.mjs +51 -51
- package/esm2020/lib/config/index.mjs +3 -3
- package/esm2020/lib/config/version.mjs +5 -5
- package/esm2020/lib/core.module.mjs +91 -91
- package/esm2020/lib/gesture/gesture.module.mjs +29 -29
- package/esm2020/lib/gesture/gesture.provider.mjs +15 -15
- package/esm2020/lib/language/index.mjs +1 -1
- package/esm2020/lib/language/language.module.mjs +38 -38
- package/esm2020/lib/language/shared/index.mjs +4 -4
- package/esm2020/lib/language/shared/language.interface.mjs +1 -1
- package/esm2020/lib/language/shared/language.loader.mjs +25 -25
- package/esm2020/lib/language/shared/language.provider.mjs +21 -21
- package/esm2020/lib/language/shared/language.service.mjs +31 -31
- package/esm2020/lib/language/shared/missing-translation.guard.mjs +14 -14
- package/esm2020/lib/media/index.mjs +2 -2
- package/esm2020/lib/media/media.enum.mjs +11 -11
- package/esm2020/lib/media/media.service.mjs +75 -75
- package/esm2020/lib/message/index.mjs +1 -1
- package/esm2020/lib/message/message.module.mjs +55 -55
- package/esm2020/lib/message/shared/index.mjs +3 -3
- package/esm2020/lib/message/shared/message.enum.mjs +9 -9
- package/esm2020/lib/message/shared/message.interface.mjs +1 -1
- package/esm2020/lib/message/shared/message.service.mjs +200 -200
- package/esm2020/lib/network/index.mjs +2 -2
- package/esm2020/lib/network/network.interfaces.mjs +1 -1
- package/esm2020/lib/network/network.service.mjs +59 -59
- package/esm2020/lib/regex/index.mjs +2 -2
- package/esm2020/lib/regex/regex.interface.mjs +1 -1
- package/esm2020/lib/regex/regex.service.mjs +26 -26
- package/esm2020/lib/request/error.interceptor.mjs +65 -65
- package/esm2020/lib/request/error.module.mjs +38 -38
- package/esm2020/lib/request/index.mjs +2 -2
- package/esm2020/lib/request/logging.interceptor.mjs +27 -27
- package/esm2020/lib/request/logging.module.mjs +29 -29
- package/esm2020/lib/route/route.interface.mjs +1 -1
- package/esm2020/lib/route/route.service.mjs +70 -70
- package/esm2020/lib/storage/index.mjs +2 -2
- package/esm2020/lib/storage/storage.interface.mjs +12 -12
- package/esm2020/lib/storage/storage.service.mjs +78 -78
- package/esm2020/public_api.mjs +27 -27
- package/fesm2015/igo2-core.mjs +1328 -1328
- package/fesm2015/igo2-core.mjs.map +1 -1
- package/fesm2020/igo2-core.mjs +1273 -1273
- package/fesm2020/igo2-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/activity/activity.interceptor.d.ts +11 -11
- package/lib/activity/activity.module.d.ts +8 -8
- package/lib/activity/activity.service.d.ts +11 -11
- package/lib/activity/index.d.ts +2 -2
- package/lib/analytics/index.d.ts +1 -1
- package/lib/analytics/shared/analytics.interface.d.ts +6 -6
- package/lib/analytics/shared/analytics.service.d.ts +23 -23
- package/lib/analytics/shared/index.d.ts +2 -2
- package/lib/compression/compressedData.interface.d.ts +5 -5
- package/lib/compression/compression.service.d.ts +15 -15
- package/lib/compression/index.d.ts +2 -2
- package/lib/config/config.interface.d.ts +6 -6
- package/lib/config/config.module.d.ts +8 -8
- package/lib/config/config.provider.d.ts +15 -15
- package/lib/config/config.service.d.ts +18 -18
- package/lib/config/index.d.ts +3 -3
- package/lib/config/version.d.ts +5 -5
- package/lib/core.module.d.ts +19 -19
- package/lib/gesture/gesture.module.d.ts +9 -9
- package/lib/gesture/gesture.provider.d.ts +7 -7
- package/lib/language/index.d.ts +1 -1
- package/lib/language/language.module.d.ts +9 -9
- package/lib/language/shared/index.d.ts +4 -4
- package/lib/language/shared/language.interface.d.ts +3 -3
- package/lib/language/shared/language.loader.d.ts +11 -11
- package/lib/language/shared/language.provider.d.ts +15 -15
- package/lib/language/shared/language.service.d.ts +13 -13
- package/lib/language/shared/missing-translation.guard.d.ts +4 -4
- package/lib/media/index.d.ts +2 -2
- package/lib/media/media.enum.d.ts +9 -9
- package/lib/media/media.service.d.ts +16 -16
- package/lib/message/index.d.ts +1 -1
- package/lib/message/message.module.d.ts +10 -10
- package/lib/message/shared/index.d.ts +4 -4
- package/lib/message/shared/message.enum.d.ts +8 -8
- package/lib/message/shared/message.interface.d.ts +21 -21
- package/lib/message/shared/message.service.d.ts +31 -31
- package/lib/network/index.d.ts +2 -2
- package/lib/network/network.interfaces.d.ts +3 -3
- package/lib/network/network.service.d.ts +21 -21
- package/lib/regex/index.d.ts +2 -2
- package/lib/regex/regex.interface.d.ts +3 -3
- package/lib/regex/regex.service.d.ts +12 -12
- package/lib/request/error.interceptor.d.ts +14 -14
- package/lib/request/error.module.d.ts +9 -9
- package/lib/request/index.d.ts +2 -2
- package/lib/request/logging.interceptor.d.ts +8 -8
- package/lib/request/logging.module.d.ts +8 -8
- package/lib/route/route.interface.d.ts +23 -23
- package/lib/route/route.service.d.ts +19 -19
- package/lib/storage/index.d.ts +2 -2
- package/lib/storage/storage.interface.d.ts +20 -20
- package/lib/storage/storage.service.d.ts +19 -19
- package/package.json +2 -2
- package/public_api.d.ts +24 -24
- package/style/partial/media.scss +80 -80
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
function getNumber(v, endposition, length) {
|
|
5
|
-
/* tslint:disable:no-bitwise*/
|
|
6
|
-
const mask = ((1 << length) - 1);
|
|
7
|
-
return (v >> endposition) & mask;
|
|
8
|
-
/* tslint:enable:no-bitwise*/
|
|
9
|
-
}
|
|
10
|
-
export class CompressionService {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.base64Index = new Map();
|
|
13
|
-
this.indexBase64 = new Map();
|
|
14
|
-
this.generateBase64Index();
|
|
15
|
-
}
|
|
16
|
-
generateBase64Index() {
|
|
17
|
-
// https://fr.wikipedia.org/wiki/Base64
|
|
18
|
-
// A-Z => [0, 25]
|
|
19
|
-
for (let i = 0; i < 26; i++) {
|
|
20
|
-
this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);
|
|
21
|
-
this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));
|
|
22
|
-
}
|
|
23
|
-
// a-z => [26, 51]
|
|
24
|
-
for (let i = 0; i < 26; i++) {
|
|
25
|
-
this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);
|
|
26
|
-
this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));
|
|
27
|
-
}
|
|
28
|
-
// 0-9 => [52, 61]
|
|
29
|
-
for (let i = 0; i < 10; i++) {
|
|
30
|
-
this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);
|
|
31
|
-
this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));
|
|
32
|
-
}
|
|
33
|
-
// + / => [62, 63]
|
|
34
|
-
this.base64Index.set('+', 62);
|
|
35
|
-
this.base64Index.set('/', 63);
|
|
36
|
-
this.indexBase64.set(62, '+');
|
|
37
|
-
this.indexBase64.set(63, '/');
|
|
38
|
-
}
|
|
39
|
-
compressBlob(blob) {
|
|
40
|
-
if (!blob) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const observable = new Observable((observer) => {
|
|
44
|
-
const reader = new FileReader();
|
|
45
|
-
reader.readAsDataURL(blob);
|
|
46
|
-
reader.onload = () => {
|
|
47
|
-
const base64 = reader.result.valueOf();
|
|
48
|
-
const text64 = base64.substr(base64.indexOf(',') + 1);
|
|
49
|
-
const compressed = this.compressStringBase64(text64);
|
|
50
|
-
const compressedData = { length: text64.length,
|
|
51
|
-
type: blob.type,
|
|
52
|
-
object: compressed };
|
|
53
|
-
observer.next(compressedData);
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
return observable;
|
|
57
|
-
}
|
|
58
|
-
decompressBlob(compressedData) {
|
|
59
|
-
/* tslint:disable:no-bitwise*/
|
|
60
|
-
const object = compressedData.object;
|
|
61
|
-
const length = compressedData.length;
|
|
62
|
-
const decompressed = this.decompressStringBase64(object, length);
|
|
63
|
-
const byteCharacters = atob(decompressed);
|
|
64
|
-
const byteNumbers = new Array(byteCharacters.length);
|
|
65
|
-
for (let i = 0; i < byteCharacters.length; i++) {
|
|
66
|
-
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
67
|
-
}
|
|
68
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
69
|
-
const blob = new Blob([byteArray], { type: compressedData.type });
|
|
70
|
-
/* tslint:enable:no-bitwise*/
|
|
71
|
-
return blob;
|
|
72
|
-
}
|
|
73
|
-
compressStringBase64(s) {
|
|
74
|
-
/* tslint:disable:no-bitwise*/
|
|
75
|
-
let out = '';
|
|
76
|
-
let bits = 16;
|
|
77
|
-
let chr = 0;
|
|
78
|
-
let rem = 0;
|
|
79
|
-
for (const c of s) {
|
|
80
|
-
const value = this.base64Index.get(c);
|
|
81
|
-
if (bits > 6) {
|
|
82
|
-
bits -= 6;
|
|
83
|
-
chr += value << bits;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
rem = 6 - bits;
|
|
87
|
-
chr += value >> rem;
|
|
88
|
-
out += String.fromCharCode(chr);
|
|
89
|
-
chr = (value) << (16 - rem);
|
|
90
|
-
bits = 16 - rem;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (s.length % 8 !== 0) {
|
|
94
|
-
out += String.fromCharCode(chr);
|
|
95
|
-
}
|
|
96
|
-
/* tslint:enable:no-bitwise*/
|
|
97
|
-
return String.fromCharCode(9731) + out;
|
|
98
|
-
}
|
|
99
|
-
decompressStringBase64(c, length) {
|
|
100
|
-
/* tslint:disable:no-bitwise*/
|
|
101
|
-
if (!c) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (c.charCodeAt(0) !== 9731) {
|
|
105
|
-
return c;
|
|
106
|
-
}
|
|
107
|
-
let chr = 0;
|
|
108
|
-
let rem = 0;
|
|
109
|
-
let bits = 16;
|
|
110
|
-
let out = '';
|
|
111
|
-
let j = 1;
|
|
112
|
-
let value = c.charCodeAt(j);
|
|
113
|
-
for (let i = 0; i < length; i++) {
|
|
114
|
-
if (bits > 6) {
|
|
115
|
-
bits -= 6;
|
|
116
|
-
chr = getNumber(value, bits, 6);
|
|
117
|
-
out += this.indexBase64.get(chr);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
rem = 6 - bits;
|
|
121
|
-
chr = getNumber(value, 0, bits) << rem;
|
|
122
|
-
value = c.charCodeAt(++j);
|
|
123
|
-
chr += getNumber(value, 16 - rem, rem);
|
|
124
|
-
out += this.indexBase64.get(chr);
|
|
125
|
-
bits = 16 - rem;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return out;
|
|
129
|
-
/* tslint:enable:no-bitwise*/
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
CompressionService.ɵfac = function CompressionService_Factory(t) { return new (t || CompressionService)(); };
|
|
133
|
-
CompressionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CompressionService, factory: CompressionService.ɵfac, providedIn: 'root' });
|
|
134
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompressionService, [{
|
|
135
|
-
type: Injectable,
|
|
136
|
-
args: [{
|
|
137
|
-
providedIn: 'root'
|
|
138
|
-
}]
|
|
139
|
-
}], function () { return []; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
function getNumber(v, endposition, length) {
|
|
5
|
+
/* tslint:disable:no-bitwise*/
|
|
6
|
+
const mask = ((1 << length) - 1);
|
|
7
|
+
return (v >> endposition) & mask;
|
|
8
|
+
/* tslint:enable:no-bitwise*/
|
|
9
|
+
}
|
|
10
|
+
export class CompressionService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.base64Index = new Map();
|
|
13
|
+
this.indexBase64 = new Map();
|
|
14
|
+
this.generateBase64Index();
|
|
15
|
+
}
|
|
16
|
+
generateBase64Index() {
|
|
17
|
+
// https://fr.wikipedia.org/wiki/Base64
|
|
18
|
+
// A-Z => [0, 25]
|
|
19
|
+
for (let i = 0; i < 26; i++) {
|
|
20
|
+
this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);
|
|
21
|
+
this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));
|
|
22
|
+
}
|
|
23
|
+
// a-z => [26, 51]
|
|
24
|
+
for (let i = 0; i < 26; i++) {
|
|
25
|
+
this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);
|
|
26
|
+
this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));
|
|
27
|
+
}
|
|
28
|
+
// 0-9 => [52, 61]
|
|
29
|
+
for (let i = 0; i < 10; i++) {
|
|
30
|
+
this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);
|
|
31
|
+
this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));
|
|
32
|
+
}
|
|
33
|
+
// + / => [62, 63]
|
|
34
|
+
this.base64Index.set('+', 62);
|
|
35
|
+
this.base64Index.set('/', 63);
|
|
36
|
+
this.indexBase64.set(62, '+');
|
|
37
|
+
this.indexBase64.set(63, '/');
|
|
38
|
+
}
|
|
39
|
+
compressBlob(blob) {
|
|
40
|
+
if (!blob) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const observable = new Observable((observer) => {
|
|
44
|
+
const reader = new FileReader();
|
|
45
|
+
reader.readAsDataURL(blob);
|
|
46
|
+
reader.onload = () => {
|
|
47
|
+
const base64 = reader.result.valueOf();
|
|
48
|
+
const text64 = base64.substr(base64.indexOf(',') + 1);
|
|
49
|
+
const compressed = this.compressStringBase64(text64);
|
|
50
|
+
const compressedData = { length: text64.length,
|
|
51
|
+
type: blob.type,
|
|
52
|
+
object: compressed };
|
|
53
|
+
observer.next(compressedData);
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return observable;
|
|
57
|
+
}
|
|
58
|
+
decompressBlob(compressedData) {
|
|
59
|
+
/* tslint:disable:no-bitwise*/
|
|
60
|
+
const object = compressedData.object;
|
|
61
|
+
const length = compressedData.length;
|
|
62
|
+
const decompressed = this.decompressStringBase64(object, length);
|
|
63
|
+
const byteCharacters = atob(decompressed);
|
|
64
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
65
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
66
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
67
|
+
}
|
|
68
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
69
|
+
const blob = new Blob([byteArray], { type: compressedData.type });
|
|
70
|
+
/* tslint:enable:no-bitwise*/
|
|
71
|
+
return blob;
|
|
72
|
+
}
|
|
73
|
+
compressStringBase64(s) {
|
|
74
|
+
/* tslint:disable:no-bitwise*/
|
|
75
|
+
let out = '';
|
|
76
|
+
let bits = 16;
|
|
77
|
+
let chr = 0;
|
|
78
|
+
let rem = 0;
|
|
79
|
+
for (const c of s) {
|
|
80
|
+
const value = this.base64Index.get(c);
|
|
81
|
+
if (bits > 6) {
|
|
82
|
+
bits -= 6;
|
|
83
|
+
chr += value << bits;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
rem = 6 - bits;
|
|
87
|
+
chr += value >> rem;
|
|
88
|
+
out += String.fromCharCode(chr);
|
|
89
|
+
chr = (value) << (16 - rem);
|
|
90
|
+
bits = 16 - rem;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (s.length % 8 !== 0) {
|
|
94
|
+
out += String.fromCharCode(chr);
|
|
95
|
+
}
|
|
96
|
+
/* tslint:enable:no-bitwise*/
|
|
97
|
+
return String.fromCharCode(9731) + out;
|
|
98
|
+
}
|
|
99
|
+
decompressStringBase64(c, length) {
|
|
100
|
+
/* tslint:disable:no-bitwise*/
|
|
101
|
+
if (!c) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (c.charCodeAt(0) !== 9731) {
|
|
105
|
+
return c;
|
|
106
|
+
}
|
|
107
|
+
let chr = 0;
|
|
108
|
+
let rem = 0;
|
|
109
|
+
let bits = 16;
|
|
110
|
+
let out = '';
|
|
111
|
+
let j = 1;
|
|
112
|
+
let value = c.charCodeAt(j);
|
|
113
|
+
for (let i = 0; i < length; i++) {
|
|
114
|
+
if (bits > 6) {
|
|
115
|
+
bits -= 6;
|
|
116
|
+
chr = getNumber(value, bits, 6);
|
|
117
|
+
out += this.indexBase64.get(chr);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
rem = 6 - bits;
|
|
121
|
+
chr = getNumber(value, 0, bits) << rem;
|
|
122
|
+
value = c.charCodeAt(++j);
|
|
123
|
+
chr += getNumber(value, 16 - rem, rem);
|
|
124
|
+
out += this.indexBase64.get(chr);
|
|
125
|
+
bits = 16 - rem;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
/* tslint:enable:no-bitwise*/
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
CompressionService.ɵfac = function CompressionService_Factory(t) { return new (t || CompressionService)(); };
|
|
133
|
+
CompressionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CompressionService, factory: CompressionService.ɵfac, providedIn: 'root' });
|
|
134
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompressionService, [{
|
|
135
|
+
type: Injectable,
|
|
136
|
+
args: [{
|
|
137
|
+
providedIn: 'root'
|
|
138
|
+
}]
|
|
139
|
+
}], function () { return []; }, null); })();
|
|
140
140
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb21wcmVzc2lvbi9jb21wcmVzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQzs7QUFHNUMsU0FBUyxTQUFTLENBQUMsQ0FBUyxFQUFFLFdBQW1CLEVBQUUsTUFBYztJQUMvRCw4QkFBOEI7SUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyw2QkFBNkI7QUFDL0IsQ0FBQztBQUtELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFIUSxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHOUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6Qix1Q0FBdUM7UUFDdkMsaUJBQWlCO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FB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QkFDWixJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUNWLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNmLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDakI7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO1FBQ1gsNkJBQTZCO0lBQy9CLENBQUM7O29GQS9IVSxrQkFBa0I7d0VBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRmpCLE1BQU07dUZBRVAsa0JBQWtCO2NBSDlCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wcmVzc2VkRGF0YSB9IGZyb20gJy4vY29tcHJlc3NlZERhdGEuaW50ZXJmYWNlJztcblxuZnVuY3Rpb24gZ2V0TnVtYmVyKHY6IG51bWJlciwgZW5kcG9zaXRpb246IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gIGNvbnN0IG1hc2sgPSAoKDEgPDwgbGVuZ3RoKSAtIDEpO1xuICByZXR1cm4gKHYgPj4gZW5kcG9zaXRpb24pICYgbWFzaztcbiAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29tcHJlc3Npb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiYXNlNjRJbmRleCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgaW5kZXhCYXNlNjQgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNlNjRJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJhc2U2NEluZGV4KCkge1xuICAgIC8vIGh0dHBzOi8vZnIud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NFxuICAgIC8vIEEtWiA9PiBbMCwgMjVdXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7XG4gICAgICB0aGlzLmJhc2U2NEluZGV4LnNldChTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDApICsgaSksIGkpO1xuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSwgU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIGkpKTtcbiAgICB9XG4gICAgLy8gYS16ID0+IFsyNiwgNTFdXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7XG4gICAgICB0aGlzLmJhc2U2NEluZGV4LnNldChTdHJpbmcuZnJvbUNoYXJDb2RlKCdhJy5jaGFyQ29kZUF0KDApICsgaSksIGkgKyAyNik7XG4gICAgICB0aGlzLmluZGV4QmFzZTY0LnNldChpICsgMjYsIFN0cmluZy5mcm9tQ2hhckNvZGUoJ2EnLmNoYXJDb2RlQXQoMCkgKyBpKSk7XG4gICAgfVxuICAgIC8vIDAtOSA9PiBbNTIsIDYxXVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnMCcuY2hhckNvZGVBdCgwKSArIGkpLCBpICsgNTIpO1xuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSArIDUyLCBTdHJpbmcuZnJvbUNoYXJDb2RlKCcwJy5jaGFyQ29kZUF0KDApICsgaSkpO1xuICAgIH1cbiAgICAvLyArIC8gPT4gWzYyLCA2M11cbiAgICB0aGlzLmJhc2U2NEluZGV4LnNldCgnKycsIDYyKTtcbiAgICB0aGlzLmJhc2U2NEluZGV4LnNldCgnLycsIDYzKTtcbiAgICB0aGlzLmluZGV4QmFzZTY0LnNldCg2MiwgJysnKTtcbiAgICB0aGlzLmluZGV4QmFzZTY0LnNldCg2MywgJy8nKTtcbiAgfVxuXG4gIGNvbXByZXNzQmxvYihibG9iOiBCbG9iKTogT2JzZXJ2YWJsZTxDb21wcmVzc2VkRGF0YT4ge1xuICAgIGlmICghYmxvYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPENvbXByZXNzZWREYXRhPikgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gcmVhZGVyLnJlc3VsdC52YWx1ZU9mKCkgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCB0ZXh0NjQgPSBiYXNlNjQuc3Vic3RyKGJhc2U2NC5pbmRleE9mKCcsJykgKyAxKTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZCA9IHRoaXMuY29tcHJlc3NTdHJpbmdCYXNlNjQodGV4dDY0KTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZERhdGE6IENvbXByZXNzZWREYXRhID0geyBsZW5ndGg6IHRleHQ2NC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogY29tcHJlc3NlZCB9O1xuICAgICAgICBvYnNlcnZlci5uZXh0KGNvbXByZXNzZWREYXRhKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cblxuICBkZWNvbXByZXNzQmxvYihjb21wcmVzc2VkRGF0YTogQ29tcHJlc3NlZERhdGEpOiBCbG9iIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1iaXR3aXNlKi9cbiAgICBjb25zdCBvYmplY3QgPSBjb21wcmVzc2VkRGF0YS5vYmplY3Q7XG4gICAgY29uc3QgbGVuZ3RoID0gY29tcHJlc3NlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGRlY29tcHJlc3NlZDogc3RyaW5nID0gdGhpcy5kZWNvbXByZXNzU3RyaW5nQmFzZTY0KG9iamVjdCwgbGVuZ3RoKTtcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGVjb21wcmVzc2VkKTtcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7dHlwZTogY29tcHJlc3NlZERhdGEudHlwZX0pO1xuICAgIC8qIHRzbGludDplbmFibGU6bm8tYml0d2lzZSovXG4gICAgcmV0dXJuIGJsb2I7XG4gIH1cblxuICBwcml2YXRlIGNvbXByZXNzU3RyaW5nQmFzZTY0KHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gICAgbGV0IG91dCA9ICcnO1xuICAgIGxldCBiaXRzID0gMTY7XG4gICAgbGV0IGNociA9IDA7XG4gICAgbGV0IHJlbSA9IDA7XG4gICAgZm9yIChjb25zdCBjIG9mIHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5iYXNlNjRJbmRleC5nZXQoYyk7XG4gICAgICBpZiAoYml0cyA+IDYpIHtcbiAgICAgICAgYml0cyAtPSA2O1xuICAgICAgICBjaHIgKz0gdmFsdWUgPDwgYml0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbSA9IDYgLSBiaXRzO1xuICAgICAgICBjaHIgKz0gdmFsdWUgPj4gcmVtO1xuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICBjaHIgPSAodmFsdWUpIDw8ICgxNiAtIHJlbSk7XG4gICAgICAgIGJpdHMgPSAxNiAtIHJlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMubGVuZ3RoICUgOCAhPT0gMCkge1xuICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKTtcbiAgICB9XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NzMxKSArIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb21wcmVzc1N0cmluZ0Jhc2U2NChjOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gICAgaWYgKCFjKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGMuY2hhckNvZGVBdCgwKSAhPT0gOTczMSkge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgbGV0IGNociA9IDA7XG4gICAgbGV0IHJlbSA9IDA7XG4gICAgbGV0IGJpdHMgPSAxNjtcbiAgICBsZXQgb3V0ID0gJyc7XG4gICAgbGV0IGogPSAxO1xuICAgIGxldCB2YWx1ZSA9IGMuY2hhckNvZGVBdChqKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYml0cyA+IDYpIHtcbiAgICAgICAgYml0cyAtPSA2O1xuICAgICAgICBjaHIgPSBnZXROdW1iZXIodmFsdWUsIGJpdHMsIDYpO1xuICAgICAgICBvdXQgKz0gdGhpcy5pbmRleEJhc2U2NC5nZXQoY2hyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbSA9IDYgLSBiaXRzO1xuICAgICAgICBjaHIgPSBnZXROdW1iZXIodmFsdWUsIDAsIGJpdHMpIDw8IHJlbTtcbiAgICAgICAgdmFsdWUgPSBjLmNoYXJDb2RlQXQoKytqKTtcbiAgICAgICAgY2hyICs9IGdldE51bWJlcih2YWx1ZSwgMTYgLSByZW0sIHJlbSk7XG4gICAgICAgIG91dCArPSB0aGlzLmluZGV4QmFzZTY0LmdldChjaHIpO1xuICAgICAgICBiaXRzID0gMTYgLSByZW07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbiAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './compressedData.interface';
|
|
2
|
-
export * from './compression.service';
|
|
1
|
+
export * from './compressedData.interface';
|
|
2
|
+
export * from './compression.service';
|
|
3
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcHJlc3Npb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wcmVzc2VkRGF0YS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wcmVzc2lvbi5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb25maWcvY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb25maWdPcHRpb25zIHtcbiAgZGVmYXVsdD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHBhdGg/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { provideConfigOptions, provideConfigLoader } from './config.provider';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class IgoConfigModule {
|
|
5
|
-
static forRoot() {
|
|
6
|
-
return {
|
|
7
|
-
ngModule: IgoConfigModule,
|
|
8
|
-
providers: [provideConfigOptions({}), provideConfigLoader()]
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
IgoConfigModule.ɵfac = function IgoConfigModule_Factory(t) { return new (t || IgoConfigModule)(); };
|
|
13
|
-
IgoConfigModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoConfigModule });
|
|
14
|
-
IgoConfigModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
15
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoConfigModule, [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [],
|
|
19
|
-
declarations: [],
|
|
20
|
-
exports: []
|
|
21
|
-
}]
|
|
22
|
-
}], null, null); })();
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { provideConfigOptions, provideConfigLoader } from './config.provider';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class IgoConfigModule {
|
|
5
|
+
static forRoot() {
|
|
6
|
+
return {
|
|
7
|
+
ngModule: IgoConfigModule,
|
|
8
|
+
providers: [provideConfigOptions({}), provideConfigLoader()]
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
IgoConfigModule.ɵfac = function IgoConfigModule_Factory(t) { return new (t || IgoConfigModule)(); };
|
|
13
|
+
IgoConfigModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoConfigModule });
|
|
14
|
+
IgoConfigModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
15
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoConfigModule, [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [],
|
|
19
|
+
declarations: [],
|
|
20
|
+
exports: []
|
|
21
|
+
}]
|
|
22
|
+
}], null, null); })();
|
|
23
23
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb25maWcvY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFPOUUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztTQUM3RCxDQUFDO0lBQ0osQ0FBQzs7OEVBTlUsZUFBZTtpRUFBZixlQUFlOzt1RkFBZixlQUFlO2NBTDNCLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsRUFBRTtnQkFDWCxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQ29uZmlnT3B0aW9ucywgcHJvdmlkZUNvbmZpZ0xvYWRlciB9IGZyb20gJy4vY29uZmlnLnByb3ZpZGVyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIElnb0NvbmZpZ01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SWdvQ29uZmlnTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJZ29Db25maWdNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlQ29uZmlnT3B0aW9ucyh7fSksIHByb3ZpZGVDb25maWdMb2FkZXIoKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { APP_INITIALIZER, InjectionToken } from '@angular/core';
|
|
2
|
-
import { ConfigService } from './config.service';
|
|
3
|
-
export let CONFIG_OPTIONS = new InjectionToken('configOptions');
|
|
4
|
-
export function provideConfigOptions(options) {
|
|
5
|
-
return {
|
|
6
|
-
provide: CONFIG_OPTIONS,
|
|
7
|
-
useValue: options
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
export function configFactory(configService, options) {
|
|
11
|
-
return () => configService.load(options);
|
|
12
|
-
}
|
|
13
|
-
export function provideConfigLoader() {
|
|
14
|
-
return {
|
|
15
|
-
provide: APP_INITIALIZER,
|
|
16
|
-
useFactory: configFactory,
|
|
17
|
-
multi: true,
|
|
18
|
-
deps: [ConfigService, CONFIG_OPTIONS]
|
|
19
|
-
};
|
|
20
|
-
}
|
|
1
|
+
import { APP_INITIALIZER, InjectionToken } from '@angular/core';
|
|
2
|
+
import { ConfigService } from './config.service';
|
|
3
|
+
export let CONFIG_OPTIONS = new InjectionToken('configOptions');
|
|
4
|
+
export function provideConfigOptions(options) {
|
|
5
|
+
return {
|
|
6
|
+
provide: CONFIG_OPTIONS,
|
|
7
|
+
useValue: options
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function configFactory(configService, options) {
|
|
11
|
+
return () => configService.load(options);
|
|
12
|
+
}
|
|
13
|
+
export function provideConfigLoader() {
|
|
14
|
+
return {
|
|
15
|
+
provide: APP_INITIALIZER,
|
|
16
|
+
useFactory: configFactory,
|
|
17
|
+
multi: true,
|
|
18
|
+
deps: [ConfigService, CONFIG_OPTIONS]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
21
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbmZpZy9jb25maWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFFL0UsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQXNCO0lBQ3pELE9BQU87UUFDTCxPQUFPLEVBQUUsY0FBYztRQUN2QixRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLGFBQTRCLEVBQzVCLE9BQXNCO0lBRXRCLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLGVBQWU7UUFDeEIsVUFBVSxFQUFFLGFBQWE7UUFDekIsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDO0tBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi9jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGxldCBDT05GSUdfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb25maWdPcHRpb25zPignY29uZmlnT3B0aW9ucycpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbmZpZ09wdGlvbnMob3B0aW9uczogQ29uZmlnT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IENPTkZJR19PUFRJT05TLFxuICAgIHVzZVZhbHVlOiBvcHRpb25zXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdGYWN0b3J5KFxuICBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICBvcHRpb25zOiBDb25maWdPcHRpb25zXG4pIHtcbiAgcmV0dXJuICgpID0+IGNvbmZpZ1NlcnZpY2UubG9hZChvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDb25maWdMb2FkZXIoKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ0ZhY3RvcnksXG4gICAgbXVsdGk6IHRydWUsXG4gICAgZGVwczogW0NvbmZpZ1NlcnZpY2UsIENPTkZJR19PUFRJT05TXVxuICB9O1xufVxuIl19
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { throwError } from 'rxjs';
|
|
4
|
-
import { catchError } from 'rxjs/operators';
|
|
5
|
-
import { ObjectUtils } from '@igo2/utils';
|
|
6
|
-
import { version } from './version';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class ConfigService {
|
|
9
|
-
constructor(injector) {
|
|
10
|
-
this.injector = injector;
|
|
11
|
-
this.config = {};
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Use to get the data found in config file
|
|
15
|
-
*/
|
|
16
|
-
getConfig(key) {
|
|
17
|
-
return ObjectUtils.resolve(this.config, key);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* This method loads "[path]" to get all config's variables
|
|
21
|
-
*/
|
|
22
|
-
load(options) {
|
|
23
|
-
const baseConfig = options.default || {};
|
|
24
|
-
if (!options.path) {
|
|
25
|
-
this.config = baseConfig;
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
const http = this.injector.get(HttpClient);
|
|
29
|
-
return new Promise((resolve, _reject) => {
|
|
30
|
-
http
|
|
31
|
-
.get(options.path)
|
|
32
|
-
.pipe(catchError((error) => {
|
|
33
|
-
console.log(`Configuration file ${options.path} could not be read`);
|
|
34
|
-
resolve(true);
|
|
35
|
-
return throwError(error.error || 'Server error');
|
|
36
|
-
}))
|
|
37
|
-
.subscribe((configResponse) => {
|
|
38
|
-
this.config = ObjectUtils.mergeDeep(ObjectUtils.mergeDeep({ version }, baseConfig), configResponse);
|
|
39
|
-
resolve(true);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
ConfigService.ɵfac = function ConfigService_Factory(t) { return new (t || ConfigService)(i0.ɵɵinject(i0.Injector)); };
|
|
45
|
-
ConfigService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigService, factory: ConfigService.ɵfac, providedIn: 'root' });
|
|
46
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfigService, [{
|
|
47
|
-
type: Injectable,
|
|
48
|
-
args: [{
|
|
49
|
-
providedIn: 'root'
|
|
50
|
-
}]
|
|
51
|
-
}], function () { return [{ type: i0.Injector }]; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { throwError } from 'rxjs';
|
|
4
|
+
import { catchError } from 'rxjs/operators';
|
|
5
|
+
import { ObjectUtils } from '@igo2/utils';
|
|
6
|
+
import { version } from './version';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class ConfigService {
|
|
9
|
+
constructor(injector) {
|
|
10
|
+
this.injector = injector;
|
|
11
|
+
this.config = {};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Use to get the data found in config file
|
|
15
|
+
*/
|
|
16
|
+
getConfig(key) {
|
|
17
|
+
return ObjectUtils.resolve(this.config, key);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* This method loads "[path]" to get all config's variables
|
|
21
|
+
*/
|
|
22
|
+
load(options) {
|
|
23
|
+
const baseConfig = options.default || {};
|
|
24
|
+
if (!options.path) {
|
|
25
|
+
this.config = baseConfig;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
const http = this.injector.get(HttpClient);
|
|
29
|
+
return new Promise((resolve, _reject) => {
|
|
30
|
+
http
|
|
31
|
+
.get(options.path)
|
|
32
|
+
.pipe(catchError((error) => {
|
|
33
|
+
console.log(`Configuration file ${options.path} could not be read`);
|
|
34
|
+
resolve(true);
|
|
35
|
+
return throwError(error.error || 'Server error');
|
|
36
|
+
}))
|
|
37
|
+
.subscribe((configResponse) => {
|
|
38
|
+
this.config = ObjectUtils.mergeDeep(ObjectUtils.mergeDeep({ version }, baseConfig), configResponse);
|
|
39
|
+
resolve(true);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ConfigService.ɵfac = function ConfigService_Factory(t) { return new (t || ConfigService)(i0.ɵɵinject(i0.Injector)); };
|
|
45
|
+
ConfigService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigService, factory: ConfigService.ɵfac, providedIn: 'root' });
|
|
46
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfigService, [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{
|
|
49
|
+
providedIn: 'root'
|
|
50
|
+
}]
|
|
51
|
+
}], function () { return [{ type: i0.Injector }]; }, null); })();
|
|
52
52
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29uZmlnL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFLcEMsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUY5QixXQUFNLEdBQVcsRUFBRSxDQUFDO0lBRWEsQ0FBQztJQUUxQzs7T0FFRztJQUNJLFNBQVMsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJO2lCQUNELEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2lCQUNqQixJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLE9BQU8sQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDZCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLGNBQXNCLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUNqQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQzlDLGNBQWMsQ0FDZixDQUFDO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEVBMUNVLGFBQWE7bUVBQWIsYUFBYSxXQUFiLGFBQWEsbUJBRlosTUFBTTt1RkFFUCxhQUFhO2NBSHpCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4vdmVyc2lvbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZzogb2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgLyoqXG4gICAqIFVzZSB0byBnZXQgdGhlIGRhdGEgZm91bmQgaW4gY29uZmlnIGZpbGVcbiAgICovXG4gIHB1YmxpYyBnZXRDb25maWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBPYmplY3RVdGlscy5yZXNvbHZlKHRoaXMuY29uZmlnLCBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGxvYWRzIFwiW3BhdGhdXCIgdG8gZ2V0IGFsbCBjb25maWcncyB2YXJpYWJsZXNcbiAgICovXG4gIHB1YmxpYyBsb2FkKG9wdGlvbnM6IENvbmZpZ09wdGlvbnMpIHtcbiAgICBjb25zdCBiYXNlQ29uZmlnID0gb3B0aW9ucy5kZWZhdWx0IHx8IHt9O1xuICAgIGlmICghb3B0aW9ucy5wYXRoKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBodHRwID0gdGhpcy5pbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIGh0dHBcbiAgICAgICAgLmdldChvcHRpb25zLnBhdGgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYENvbmZpZ3VyYXRpb24gZmlsZSAke29wdGlvbnMucGF0aH0gY291bGQgbm90IGJlIHJlYWRgKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvciB8fCAnU2VydmVyIGVycm9yJyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChjb25maWdSZXNwb25zZTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5jb25maWcgPSBPYmplY3RVdGlscy5tZXJnZURlZXAoXG4gICAgICAgICAgICBPYmplY3RVdGlscy5tZXJnZURlZXAoeyB2ZXJzaW9uIH0sIGJhc2VDb25maWcpLFxuICAgICAgICAgICAgY29uZmlnUmVzcG9uc2VcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './config.service';
|
|
2
|
-
export * from './config.interface';
|
|
3
|
-
export * from './version';
|
|
1
|
+
export * from './config.service';
|
|
2
|
+
export * from './config.interface';
|
|
3
|
+
export * from './version';
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbic7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const version = {
|
|
2
|
-
lib: '1.15.
|
|
3
|
-
releaseDate:
|
|
4
|
-
};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const version = {
|
|
2
|
+
lib: '1.15.6',
|
|
3
|
+
releaseDate: 1713187580855
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb25maWcvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQVk7SUFDOUIsR0FBRyxFQUFFLFFBQVE7SUFDYixXQUFXLEVBQUUsYUFBYTtDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uIHtcbiAgbGliOiBzdHJpbmc7XG4gIHJlbGVhc2VEYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCB2ZXJzaW9uOiBWZXJzaW9uID0ge1xuICBsaWI6ICcxLjE1LjYnLFxuICByZWxlYXNlRGF0ZTogMTcxMzE4NzU4MDg1NVxufTtcbiJdfQ==
|