@esfaenza/extensions 12.2.13 → 13.1.1
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/esfaenza-extensions.d.ts +1 -2
- package/esm2020/esfaenza-extensions.mjs +5 -0
- package/{esm2015/lib/models/CallResult.js → esm2020/lib/models/CallResult.mjs} +0 -0
- package/{esm2015/lib/models/CsvHeaders.js → esm2020/lib/models/CsvHeaders.mjs} +1 -1
- package/{esm2015/lib/models/ExportConsts.js → esm2020/lib/models/ExportConsts.mjs} +0 -0
- package/{esm2015/lib/models/ExtensionsModuleConfig.js → esm2020/lib/models/ExtensionsModuleConfig.mjs} +0 -0
- package/{esm2015/lib/models/GenericItem.js → esm2020/lib/models/GenericItem.mjs} +0 -0
- package/{esm2015/lib/models/TypeCode.js → esm2020/lib/models/TypeCode.mjs} +0 -0
- package/{esm2015/lib/models/providers/base/BaseStorageProvider.js → esm2020/lib/models/providers/base/BaseStorageProvider.mjs} +0 -0
- package/esm2020/lib/models/providers/implementation/DefaultStorageProvider.mjs +79 -0
- package/{esm2015/lib/models/session/base/BaseSessionRetriever.js → esm2020/lib/models/session/base/BaseSessionRetriever.mjs} +0 -0
- package/esm2020/lib/models/session/implementation/DefaultSessionRetriever.mjs +28 -0
- package/esm2020/lib/modules/extensions.full.module.mjs +58 -0
- package/esm2020/lib/modules/extensions.module.mjs +28 -0
- package/esm2020/lib/services/extensions.clipboard.service.mjs +165 -0
- package/esm2020/lib/services/extensions.dates.service.mjs +232 -0
- package/{esm2015/lib/services/extensions.exports.service.js → esm2020/lib/services/extensions.exports.service.mjs} +24 -17
- package/esm2020/lib/services/extensions.hashing.service.mjs +309 -0
- package/esm2020/lib/services/extensions.messages.service.mjs +323 -0
- package/esm2020/lib/services/extensions.storage.service.mjs +103 -0
- package/esm2020/lib/services/extensions.utilities.service.mjs +188 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{esfaenza-extensions.js → esfaenza-extensions.mjs} +120 -75
- package/fesm2015/esfaenza-extensions.mjs.map +1 -0
- package/fesm2020/esfaenza-extensions.mjs +2055 -0
- package/fesm2020/esfaenza-extensions.mjs.map +1 -0
- package/lib/models/CsvHeaders.d.ts +4 -0
- package/lib/models/providers/implementation/DefaultStorageProvider.d.ts +3 -0
- package/lib/models/session/implementation/DefaultSessionRetriever.d.ts +3 -0
- package/lib/modules/extensions.full.module.d.ts +4 -0
- package/lib/modules/extensions.module.d.ts +4 -0
- package/lib/services/extensions.clipboard.service.d.ts +3 -0
- package/lib/services/extensions.dates.service.d.ts +3 -0
- package/lib/services/extensions.exports.service.d.ts +3 -0
- package/lib/services/extensions.hashing.service.d.ts +3 -0
- package/lib/services/extensions.messages.service.d.ts +3 -0
- package/lib/services/extensions.storage.service.d.ts +3 -0
- package/lib/services/extensions.utilities.service.d.ts +3 -0
- package/package.json +22 -10
- package/bundles/esfaenza-extensions.umd.js +0 -2435
- package/bundles/esfaenza-extensions.umd.js.map +0 -1
- package/esfaenza-extensions.metadata.json +0 -1
- package/esm2015/esfaenza-extensions.js +0 -7
- package/esm2015/lib/models/providers/implementation/DefaultStorageProvider.js +0 -79
- package/esm2015/lib/models/session/implementation/DefaultSessionRetriever.js +0 -26
- package/esm2015/lib/modules/extensions.full.module.js +0 -54
- package/esm2015/lib/modules/extensions.module.js +0 -24
- package/esm2015/lib/services/extensions.clipboard.service.js +0 -165
- package/esm2015/lib/services/extensions.dates.service.js +0 -224
- package/esm2015/lib/services/extensions.hashing.service.js +0 -306
- package/esm2015/lib/services/extensions.messages.service.js +0 -317
- package/esm2015/lib/services/extensions.storage.service.js +0 -100
- package/esm2015/lib/services/extensions.utilities.service.js +0 -185
- package/fesm2015/esfaenza-extensions.js.map +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { of } from "rxjs";
|
|
3
|
-
import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
|
|
4
|
-
import { BaseStorageProvider } from "../base/BaseStorageProvider";
|
|
5
|
-
/** Implementazione di default per la classe **BaseStorageProvider** */
|
|
6
|
-
export class DefaultStorageProvider extends BaseStorageProvider {
|
|
7
|
-
/** @ignore Costruttore */
|
|
8
|
-
constructor(session) { super(session); }
|
|
9
|
-
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
10
|
-
setItem(key, value) {
|
|
11
|
-
try {
|
|
12
|
-
localStorage.setItem(key, JSON.stringify(value));
|
|
13
|
-
return of(true);
|
|
14
|
-
}
|
|
15
|
-
catch (_a) {
|
|
16
|
-
// Potrebbe arrivarmi un prefisso di salvataggio nella modalità di default. Questo serve per ripulire le stesse cose con quel prefisso e sperare di liberare spazio
|
|
17
|
-
if (value.savedprefix) {
|
|
18
|
-
console.warn("Spazio del local Storage insufficiente, prova a ripulirlo e risalvare");
|
|
19
|
-
//Pulisco tutte le view con nome che parta per "Hot"
|
|
20
|
-
for (let key in localStorage) {
|
|
21
|
-
if (localStorage.hasOwnProperty(key) && key.startsWith(value.savedprefix))
|
|
22
|
-
delete localStorage[key];
|
|
23
|
-
}
|
|
24
|
-
try {
|
|
25
|
-
localStorage.setItem(key, JSON.stringify(value));
|
|
26
|
-
}
|
|
27
|
-
catch (e) {
|
|
28
|
-
console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return of(false);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
35
|
-
getItem(key) {
|
|
36
|
-
try {
|
|
37
|
-
var ret = JSON.parse(localStorage.getItem(key));
|
|
38
|
-
return of(ret);
|
|
39
|
-
}
|
|
40
|
-
catch (_a) {
|
|
41
|
-
return of(null);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
45
|
-
removeItem(key) {
|
|
46
|
-
try {
|
|
47
|
-
localStorage.removeItem(key);
|
|
48
|
-
return of(true);
|
|
49
|
-
}
|
|
50
|
-
catch (_a) {
|
|
51
|
-
return of(false);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
55
|
-
clear() {
|
|
56
|
-
try {
|
|
57
|
-
localStorage.clear();
|
|
58
|
-
return of(true);
|
|
59
|
-
}
|
|
60
|
-
catch (_a) {
|
|
61
|
-
return of(false);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
65
|
-
getAll() {
|
|
66
|
-
var ret = {};
|
|
67
|
-
for (let key in localStorage) {
|
|
68
|
-
ret[key] = localStorage[key];
|
|
69
|
-
}
|
|
70
|
-
return of(ret);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
DefaultStorageProvider.decorators = [
|
|
74
|
-
{ type: Injectable }
|
|
75
|
-
];
|
|
76
|
-
DefaultStorageProvider.ctorParameters = () => [
|
|
77
|
-
{ type: BaseSessionRetriever }
|
|
78
|
-
];
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFN0b3JhZ2VQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2RlbHMvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9uL0RlZmF1bHRTdG9yYWdlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWxFLHVFQUF1RTtBQUV2RSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBRTFELDBCQUEwQjtJQUMxQixZQUFZLE9BQTZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvRCxzSUFBc0k7SUFDL0gsT0FBTyxDQUFJLEdBQVcsRUFBRSxLQUFRO1FBQ25DLElBQUk7WUFDQSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7UUFDRCxXQUFNO1lBQ0YsbUtBQW1LO1lBQ25LLElBQVUsS0FBTSxDQUFDLFdBQVcsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO2dCQUV0RixvREFBb0Q7Z0JBQ3BELEtBQUssSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFO29CQUMxQixJQUFJLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBTyxLQUFNLENBQUMsV0FBVyxDQUFDO3dCQUM1RSxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEM7Z0JBQ0QsSUFBSTtvQkFDQSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3BEO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEdBQTRHLENBQUMsQ0FBQztpQkFDL0g7YUFDSjtZQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELHNJQUFzSTtJQUMvSCxPQUFPLENBQUksR0FBVztRQUN6QixJQUFJO1lBQ0EsSUFBSSxHQUFHLEdBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7UUFDRCxXQUFNO1lBQ0YsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDTCxDQUFDO0lBRUQsc0lBQXNJO0lBQy9ILFVBQVUsQ0FBQyxHQUFXO1FBQ3pCLElBQUk7WUFDQSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsV0FBTTtZQUNGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELHNJQUFzSTtJQUMvSCxLQUFLO1FBQ1IsSUFBSTtZQUNBLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUNELFdBQU07WUFDRixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxzSUFBc0k7SUFDL0gsTUFBTTtRQUNULElBQUksR0FBRyxHQUFnQyxFQUFFLENBQUM7UUFDMUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUU7WUFDMUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7OztZQXhFSixVQUFVOzs7WUFKRixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gXCIuLi8uLi9zZXNzaW9uL2Jhc2UvQmFzZVNlc3Npb25SZXRyaWV2ZXJcIjtcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VQcm92aWRlciB9IGZyb20gXCIuLi9iYXNlL0Jhc2VTdG9yYWdlUHJvdmlkZXJcIjtcclxuXHJcbi8qKiBJbXBsZW1lbnRhemlvbmUgZGkgZGVmYXVsdCBwZXIgbGEgY2xhc3NlICoqQmFzZVN0b3JhZ2VQcm92aWRlcioqICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRTdG9yYWdlUHJvdmlkZXIgZXh0ZW5kcyBCYXNlU3RvcmFnZVByb3ZpZGVyIHtcclxuXHJcbiAgICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgICBjb25zdHJ1Y3RvcihzZXNzaW9uOiBCYXNlU2Vzc2lvblJldHJpZXZlcikgeyBzdXBlcihzZXNzaW9uKTsgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIEltcGxlbWVudGF6aW9uZSBkaSBEZWZhdWx0IGNvbiBsb2NhbFN0b3JhZ2UuIElkZW50aXR5IHZpZW5lIGlnbm9yYXRhIHBlcmNow6kgZXNzZW5kbyBnacOgIG5lbCBsb2NhbFN0b3JhZ2Ugw6ggZ2nDoCBwZXIgc2l0byAqL1xyXG4gICAgcHVibGljIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIHtcclxuICAgICAgICAgICAgLy8gUG90cmViYmUgYXJyaXZhcm1pIHVuIHByZWZpc3NvIGRpIHNhbHZhdGFnZ2lvIG5lbGxhIG1vZGFsaXTDoCBkaSBkZWZhdWx0LiBRdWVzdG8gc2VydmUgcGVyIHJpcHVsaXJlIGxlIHN0ZXNzZSBjb3NlIGNvbiBxdWVsIHByZWZpc3NvIGUgc3BlcmFyZSBkaSBsaWJlcmFyZSBzcGF6aW9cclxuICAgICAgICAgICAgaWYgKCg8YW55PnZhbHVlKS5zYXZlZHByZWZpeCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiU3BhemlvIGRlbCBsb2NhbCBTdG9yYWdlIGluc3VmZmljaWVudGUsIHByb3ZhIGEgcmlwdWxpcmxvIGUgcmlzYWx2YXJlXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vUHVsaXNjbyB0dXR0ZSBsZSB2aWV3IGNvbiBub21lIGNoZSBwYXJ0YSBwZXIgXCJIb3RcIlxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkuc3RhcnRzV2l0aCgoPGFueT52YWx1ZSkuc2F2ZWRwcmVmaXgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxTdG9yYWdlW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiU3BhemlvIGRlbCBsb2NhbCBTdG9yYWdlIGluc3VmZmljaWVudGUgcGVyIHNhbHZhcmUgaSByaXN1bHRhdGkgZGkgcmljZXJjYSBjb24gc29sbyBmaWx0cmkuIE5vbiBzYWx2byBudWxsYVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBJbXBsZW1lbnRhemlvbmUgZGkgRGVmYXVsdCBjb24gbG9jYWxTdG9yYWdlLiBJZGVudGl0eSB2aWVuZSBpZ25vcmF0YSBwZXJjaMOpIGVzc2VuZG8gZ2nDoCBuZWwgbG9jYWxTdG9yYWdlIMOoIGdpw6AgcGVyIHNpdG8gKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtPFQ+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIHJldCA9IDxUPkpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihyZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgSW1wbGVtZW50YXppb25lIGRpIERlZmF1bHQgY29uIGxvY2FsU3RvcmFnZS4gSWRlbnRpdHkgdmllbmUgaWdub3JhdGEgcGVyY2jDqSBlc3NlbmRvIGdpw6AgbmVsIGxvY2FsU3RvcmFnZSDDqCBnacOgIHBlciBzaXRvICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2gge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBJbXBsZW1lbnRhemlvbmUgZGkgRGVmYXVsdCBjb24gbG9jYWxTdG9yYWdlLiBJZGVudGl0eSB2aWVuZSBpZ25vcmF0YSBwZXJjaMOpIGVzc2VuZG8gZ2nDoCBuZWwgbG9jYWxTdG9yYWdlIMOoIGdpw6AgcGVyIHNpdG8gKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIEltcGxlbWVudGF6aW9uZSBkaSBEZWZhdWx0IGNvbiBsb2NhbFN0b3JhZ2UuIElkZW50aXR5IHZpZW5lIGlnbm9yYXRhIHBlcmNow6kgZXNzZW5kbyBnacOgIG5lbCBsb2NhbFN0b3JhZ2Ugw6ggZ2nDoCBwZXIgc2l0byAqL1xyXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+IHtcclxuICAgICAgICB2YXIgcmV0OiB7IFtpbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldFtrZXldID0gbG9jYWxTdG9yYWdlW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZihyZXQpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { BaseSessionRetriever } from "../base/BaseSessionRetriever";
|
|
3
|
-
/**
|
|
4
|
-
* Implementazione di default per la classe **BaseSessionRetriever**
|
|
5
|
-
*/
|
|
6
|
-
export class DefaultSessionRetriever extends BaseSessionRetriever {
|
|
7
|
-
/**
|
|
8
|
-
* Costruttore
|
|
9
|
-
*
|
|
10
|
-
* @ignore
|
|
11
|
-
*/
|
|
12
|
-
constructor() { super(); }
|
|
13
|
-
/**
|
|
14
|
-
* Ottiene un ID sessione
|
|
15
|
-
*
|
|
16
|
-
* @returns {string} ID sessione
|
|
17
|
-
*/
|
|
18
|
-
getSessionKey() {
|
|
19
|
-
return "DUMMY_SESSION";
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
DefaultSessionRetriever.decorators = [
|
|
23
|
-
{ type: Injectable }
|
|
24
|
-
];
|
|
25
|
-
DefaultSessionRetriever.ctorParameters = () => [];
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFNlc3Npb25SZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvbW9kZWxzL3Nlc3Npb24vaW1wbGVtZW50YXRpb24vRGVmYXVsdFNlc3Npb25SZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVwRTs7R0FFRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxvQkFBb0I7SUFFN0Q7Ozs7T0FJRztJQUNILGdCQUFnQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUI7Ozs7T0FJRztJQUNILGFBQWE7UUFDVCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDOzs7WUFqQkosVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gXCIuLi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyXCI7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXppb25lIGRpIGRlZmF1bHQgcGVyIGxhIGNsYXNzZSAqKkJhc2VTZXNzaW9uUmV0cmlldmVyKipcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRTZXNzaW9uUmV0cmlldmVyIGV4dGVuZHMgQmFzZVNlc3Npb25SZXRyaWV2ZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSB1biBJRCBzZXNzaW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBJRCBzZXNzaW9uZVxyXG4gICAgICovXHJcbiAgICBnZXRTZXNzaW9uS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFwiRFVNTVlfU0VTU0lPTlwiO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { EXT_LOCALE, EXT_FANCY_ALERTS, APPSEARCH_PREFIX, EXT_ALLOW_UTC } from '../tokens';
|
|
4
|
-
// Servizi
|
|
5
|
-
import { ClipboardService } from "../services/extensions.clipboard.service";
|
|
6
|
-
import { DateService } from "../services/extensions.dates.service";
|
|
7
|
-
import { ExportService } from "../services/extensions.exports.service";
|
|
8
|
-
import { HashingService } from "../services/extensions.hashing.service";
|
|
9
|
-
import { MessageService } from "../services/extensions.messages.service";
|
|
10
|
-
import { UtilityService } from "../services/extensions.utilities.service";
|
|
11
|
-
import { StorageService } from '../services/extensions.storage.service';
|
|
12
|
-
// Providers
|
|
13
|
-
import { BaseSessionRetriever } from '../models/session/base/BaseSessionRetriever';
|
|
14
|
-
import { DefaultSessionRetriever } from '../models/session/implementation/DefaultSessionRetriever';
|
|
15
|
-
import { BaseStorageProvider } from '../models/providers/base/BaseStorageProvider';
|
|
16
|
-
import { DefaultStorageProvider } from '../models/providers/implementation/DefaultStorageProvider';
|
|
17
|
-
/**
|
|
18
|
-
* Modulo di estensione che registra autonomamente **TUTTI** i servizi di estensione:
|
|
19
|
-
* ClipboardService,
|
|
20
|
-
* DateService,
|
|
21
|
-
* ExportService,
|
|
22
|
-
* HashingService,
|
|
23
|
-
* MessageService,
|
|
24
|
-
* UtilityService,
|
|
25
|
-
* StorageService,
|
|
26
|
-
*
|
|
27
|
-
* con eventuali provider che utilizzano
|
|
28
|
-
*/
|
|
29
|
-
export class FullExtensionsModule {
|
|
30
|
-
static forRoot(config) {
|
|
31
|
-
return {
|
|
32
|
-
ngModule: FullExtensionsModule,
|
|
33
|
-
providers: [
|
|
34
|
-
ClipboardService,
|
|
35
|
-
DateService,
|
|
36
|
-
ExportService,
|
|
37
|
-
HashingService,
|
|
38
|
-
MessageService,
|
|
39
|
-
UtilityService,
|
|
40
|
-
StorageService,
|
|
41
|
-
{ provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
42
|
-
{ provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
|
|
43
|
-
{ provide: APPSEARCH_PREFIX, useValue: (config === null || config === void 0 ? void 0 : config.appsearch_prefix) || 'Hot' },
|
|
44
|
-
{ provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc },
|
|
45
|
-
{ provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
|
|
46
|
-
{ provide: BaseStorageProvider, useClass: (config === null || config === void 0 ? void 0 : config.storageProvider) || DefaultStorageProvider },
|
|
47
|
-
]
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
FullExtensionsModule.decorators = [
|
|
52
|
-
{ type: NgModule }
|
|
53
|
-
];
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2R1bGVzL2V4dGVuc2lvbnMuZnVsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBSTlELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFGLFVBQVU7QUFDVixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxZQUFZO0FBQ1osT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbkcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFbkc7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBK0I7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEtBQUksT0FBTyxFQUFFO2dCQUM1RCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWSxLQUFJLElBQUksRUFBRTtnQkFDckUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGdCQUFnQixLQUFJLEtBQUssRUFBQztnQkFDekUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLEVBQUM7Z0JBQzFGLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxnQkFBZ0IsS0FBSSx1QkFBdUIsRUFBRTtnQkFDaEcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGVBQWUsS0FBSSxzQkFBc0IsRUFBRTthQUM5RjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFyQkYsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9FeHRlbnNpb25zTW9kdWxlQ29uZmlnJztcclxuaW1wb3J0IHsgRVhUX0xPQ0FMRSwgRVhUX0ZBTkNZX0FMRVJUUywgQVBQU0VBUkNIX1BSRUZJWCwgRVhUX0FMTE9XX1VUQyB9IGZyb20gJy4uL3Rva2Vucyc7XHJcblxyXG4vLyBTZXJ2aXppXHJcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leHRlbnNpb25zLmRhdGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leHRlbnNpb25zLmV4cG9ydHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIYXNoaW5nU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leHRlbnNpb25zLmhhc2hpbmcuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbi8vIFByb3ZpZGVyc1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gJy4uL21vZGVscy9zZXNzaW9uL2Jhc2UvQmFzZVNlc3Npb25SZXRyaWV2ZXInO1xyXG5pbXBvcnQgeyBEZWZhdWx0U2Vzc2lvblJldHJpZXZlciB9IGZyb20gJy4uL21vZGVscy9zZXNzaW9uL2ltcGxlbWVudGF0aW9uL0RlZmF1bHRTZXNzaW9uUmV0cmlldmVyJztcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VQcm92aWRlciB9IGZyb20gJy4uL21vZGVscy9wcm92aWRlcnMvYmFzZS9CYXNlU3RvcmFnZVByb3ZpZGVyJztcclxuaW1wb3J0IHsgRGVmYXVsdFN0b3JhZ2VQcm92aWRlciB9IGZyb20gJy4uL21vZGVscy9wcm92aWRlcnMvaW1wbGVtZW50YXRpb24vRGVmYXVsdFN0b3JhZ2VQcm92aWRlcic7XHJcblxyXG4vKipcclxuICogTW9kdWxvIGRpIGVzdGVuc2lvbmUgY2hlIHJlZ2lzdHJhIGF1dG9ub21hbWVudGUgKipUVVRUSSoqIGkgc2Vydml6aSBkaSBlc3RlbnNpb25lOiBcclxuICogQ2xpcGJvYXJkU2VydmljZSwgXHJcbiAqIERhdGVTZXJ2aWNlLCBcclxuICogRXhwb3J0U2VydmljZSwgXHJcbiAqIEhhc2hpbmdTZXJ2aWNlLCBcclxuICogTWVzc2FnZVNlcnZpY2UsIFxyXG4gKiBVdGlsaXR5U2VydmljZSwgXHJcbiAqIFN0b3JhZ2VTZXJ2aWNlLCBcclxuICogXHJcbiAqIGNvbiBldmVudHVhbGkgcHJvdmlkZXIgY2hlIHV0aWxpenphbm9cclxuICovXHJcbkBOZ01vZHVsZSgpXHJcbmV4cG9ydCBjbGFzcyBGdWxsRXh0ZW5zaW9uc01vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RnVsbEV4dGVuc2lvbnNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBGdWxsRXh0ZW5zaW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQ2xpcGJvYXJkU2VydmljZSxcclxuICAgICAgICBEYXRlU2VydmljZSxcclxuICAgICAgICBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgICAgIEhhc2hpbmdTZXJ2aWNlLFxyXG4gICAgICAgIE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgICAgIFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8ubG9jYWxlIHx8ICdpdC1JVCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9GQU5DWV9BTEVSVFMsIHVzZVZhbHVlOiBjb25maWc/LmZhbmN5X2FsZXJ0cyB8fCB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBUFBTRUFSQ0hfUFJFRklYLCB1c2VWYWx1ZTogY29uZmlnPy5hcHBzZWFyY2hfcHJlZml4IHx8ICdIb3QnfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9BTExPV19VVEMsIHVzZVZhbHVlOiBjb25maWc/LmFsbG93X3V0YyA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmFsbG93X3V0Y30sXHJcbiAgICAgICAgeyBwcm92aWRlOiBCYXNlU2Vzc2lvblJldHJpZXZlciwgdXNlQ2xhc3M6IGNvbmZpZz8uc2Vzc2lvblJldHJpZXZlciB8fCBEZWZhdWx0U2Vzc2lvblJldHJpZXZlciB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQmFzZVN0b3JhZ2VQcm92aWRlciwgdXNlQ2xhc3M6IGNvbmZpZz8uc3RvcmFnZVByb3ZpZGVyIHx8IERlZmF1bHRTdG9yYWdlUHJvdmlkZXIgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
// Modelli
|
|
4
|
-
import { EXT_LOCALE, EXT_FANCY_ALERTS, APPSEARCH_PREFIX, EXT_ALLOW_UTC } from '../tokens';
|
|
5
|
-
/**
|
|
6
|
-
* Modulo di estensione che non registra nessun servizio di estensione, dovranno essere dichiarati 1 per 1 dall'applicazione che li utilizza
|
|
7
|
-
*/
|
|
8
|
-
export class ExtensionsModule {
|
|
9
|
-
static forRoot(config) {
|
|
10
|
-
return {
|
|
11
|
-
ngModule: ExtensionsModule,
|
|
12
|
-
providers: [
|
|
13
|
-
{ provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
14
|
-
{ provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
|
|
15
|
-
{ provide: APPSEARCH_PREFIX, useValue: (config === null || config === void 0 ? void 0 : config.appsearch_prefix) || 'Hot' },
|
|
16
|
-
{ provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc }
|
|
17
|
-
]
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
ExtensionsModule.decorators = [
|
|
22
|
-
{ type: NgModule }
|
|
23
|
-
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzFGOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQStCO1FBQzVDLE9BQU87WUFDTCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sS0FBSSxPQUFPLEVBQUU7Z0JBQzVELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEtBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZ0JBQWdCLEtBQUksS0FBSyxFQUFFO2dCQUMxRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsRUFBRTthQUM1RjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFaRixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBFWFRfTE9DQUxFLCBFWFRfRkFOQ1lfQUxFUlRTLCBBUFBTRUFSQ0hfUFJFRklYLCBFWFRfQUxMT1dfVVRDIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9FeHRlbnNpb25zTW9kdWxlQ29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBNb2R1bG8gZGkgZXN0ZW5zaW9uZSBjaGUgbm9uIHJlZ2lzdHJhIG5lc3N1biBzZXJ2aXppbyBkaSBlc3RlbnNpb25lLCBkb3ZyYW5ubyBlc3NlcmUgZGljaGlhcmF0aSAxIHBlciAxIGRhbGwnYXBwbGljYXppb25lIGNoZSBsaSB1dGlsaXp6YVxyXG4gKi9cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2lvbnNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEV4dGVuc2lvbnNNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEV4dGVuc2lvbnNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBFeHRlbnNpb25zTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9MT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBFWFRfRkFOQ1lfQUxFUlRTLCB1c2VWYWx1ZTogY29uZmlnPy5mYW5jeV9hbGVydHMgfHwgdHJ1ZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQVBQU0VBUkNIX1BSRUZJWCwgdXNlVmFsdWU6IGNvbmZpZz8uYXBwc2VhcmNoX3ByZWZpeCB8fCAnSG90JyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0FMTE9XX1VUQywgdXNlVmFsdWU6IGNvbmZpZz8uYWxsb3dfdXRjID09IG51bGwgPyBmYWxzZSA6IGNvbmZpZz8uYWxsb3dfdXRjIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { Injectable, Inject, Optional } from "@angular/core";
|
|
3
|
-
// Modelli
|
|
4
|
-
import { MessageService } from './extensions.messages.service';
|
|
5
|
-
import { EXT_LOCALE } from "../tokens";
|
|
6
|
-
/**
|
|
7
|
-
* Service che fornisce un accesso base in lettura/scrittura sulla clipboard
|
|
8
|
-
*/
|
|
9
|
-
export class ClipboardService {
|
|
10
|
-
/**
|
|
11
|
-
* Costruttore
|
|
12
|
-
*
|
|
13
|
-
* @ignore
|
|
14
|
-
*/
|
|
15
|
-
constructor(msgService, LOCALE) {
|
|
16
|
-
this.msgService = msgService;
|
|
17
|
-
this.LOCALE = LOCALE;
|
|
18
|
-
/**
|
|
19
|
-
* Oggetto statico di localizzazione per i messaggi di questa Service
|
|
20
|
-
*/
|
|
21
|
-
this.loc = {
|
|
22
|
-
"Unfortunately Firefox doesn't yet support direct Clipboard access if not via extensions, Please use Chrome to do this operation": {
|
|
23
|
-
'en-US': "Unfortunately Firefox doesn't yet support direct Clipboard access if not via extensions, Please use Chrome to do this operation",
|
|
24
|
-
'it-IT': "Mi dispiace ma Firefox non supporta l'accesso diretto alla Clipboard, se non attraverso le estensioni. Si prega di usare Chrome"
|
|
25
|
-
},
|
|
26
|
-
"Generic error during 'copy' command execution": {
|
|
27
|
-
'en-US': "Generic error during 'copy' command execution",
|
|
28
|
-
'it-IT': "Errore generico durante l'esecuzione del comando 'copy'"
|
|
29
|
-
},
|
|
30
|
-
"Error during Clipboard content read operation": {
|
|
31
|
-
'en-US': "Error during Clipboard content read operation",
|
|
32
|
-
'it-IT': "Errore nella lettura del contenuto della Clipboard"
|
|
33
|
-
},
|
|
34
|
-
"Error during Clipboard content copy operation": {
|
|
35
|
-
'en-US': "Error during Clipboard content copy operation",
|
|
36
|
-
'it-IT': "Errore nella scrittura del contenuto nella Clipboard"
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Prende il valore della clipboard.
|
|
42
|
-
* Si può specificare se ci si aspetta una lista o una matrice di valori in modo da ricevere già un risultato utilizzabile
|
|
43
|
-
*
|
|
44
|
-
* @param {'array' | 'matrix'} style Stile dell'output desiderato, se array o matrice
|
|
45
|
-
* @param {Function} valueFoundCallback Callback che questa funzione chiamerà una volta ottenuto i valori richiesti dalla clipboard
|
|
46
|
-
*/
|
|
47
|
-
getClipboard(style, valueFoundCallback) {
|
|
48
|
-
var _a;
|
|
49
|
-
if (navigator.userAgent.indexOf("Firefox") != -1) {
|
|
50
|
-
//https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText
|
|
51
|
-
this.msgService.simpleError(this.loc["Unfortunately Firefox doesn't yet support direct Clipboard access if not via extensions, Please use Chrome to do this operation"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT']);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (window.clipboardData) {
|
|
55
|
-
let data = window.clipboardData.getData("Text");
|
|
56
|
-
var value = style == "array" ? this.getClipboardLines(data) :
|
|
57
|
-
style == "matrix" ? this.getClipboardMatrix(data) : [];
|
|
58
|
-
if (valueFoundCallback)
|
|
59
|
-
valueFoundCallback(value);
|
|
60
|
-
}
|
|
61
|
-
else if (window.navigator.clipboard) {
|
|
62
|
-
window.navigator.permissions.query({ name: 'clipboard-read' }).then(result => {
|
|
63
|
-
if (!(result.state === 'granted' || result.state === 'prompt'))
|
|
64
|
-
if (valueFoundCallback)
|
|
65
|
-
valueFoundCallback([]);
|
|
66
|
-
window.navigator.clipboard.readText()
|
|
67
|
-
.then(t => {
|
|
68
|
-
var value = style == "array" ? this.getClipboardLines(t) :
|
|
69
|
-
style == "matrix" ? this.getClipboardMatrix(t) : [];
|
|
70
|
-
if (valueFoundCallback)
|
|
71
|
-
valueFoundCallback(value);
|
|
72
|
-
})
|
|
73
|
-
.catch(err => {
|
|
74
|
-
var _a;
|
|
75
|
-
this.msgService.simpleError(this.loc["Error during Clipboard content read operation"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT'] + ": " + err);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Ottiene il contenuto della clipboard diviso per righe (separate da newline)
|
|
82
|
-
*
|
|
83
|
-
* @param {string} data contenuto letto dalla clipboard
|
|
84
|
-
*
|
|
85
|
-
* @returns {string[]} Array contenente il testo preso dalla clipboard diviso per riga
|
|
86
|
-
*/
|
|
87
|
-
getClipboardLines(data) {
|
|
88
|
-
return data.trim().split("\r\n");
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Ottiene il contenuto della clipboard diviso per righe (separate da newline) e colonne (separate da tab)
|
|
92
|
-
*
|
|
93
|
-
* @param {string} data contenuto letto dalla clipboard
|
|
94
|
-
*
|
|
95
|
-
* @returns {string[][]} Matrice contenente il testo preso dalla clipboard diviso per riga e colonna
|
|
96
|
-
*/
|
|
97
|
-
getClipboardMatrix(data) {
|
|
98
|
-
var ret = [];
|
|
99
|
-
var rows = data.split("\r\n");
|
|
100
|
-
// A quanto pare ogni valore è separato da un \t... spero che sia uno standard di quando si copia da excel altrimenti ciao
|
|
101
|
-
for (let i = 0; i < rows.length; i++)
|
|
102
|
-
ret.push(rows[i].split('\t').map(t => t.trim()));
|
|
103
|
-
return ret;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Metodo che copia un testo all'interno della clipboard
|
|
107
|
-
*
|
|
108
|
-
* @param {string} text Testo da inserire nella clipboard
|
|
109
|
-
*/
|
|
110
|
-
copyTextToClipboard(text) {
|
|
111
|
-
var _a, _b;
|
|
112
|
-
var textArea = document.createElement("textarea");
|
|
113
|
-
//
|
|
114
|
-
// *** This styling is an extra step which is likely not required. ***
|
|
115
|
-
//
|
|
116
|
-
// Why is it here? To ensure:
|
|
117
|
-
// 1. the element is able to have focus and selection.
|
|
118
|
-
// 2. if element was to flash render it has minimal visual impact.
|
|
119
|
-
// 3. less flakyness with selection and copying which **might** occur if
|
|
120
|
-
// the textarea element is not visible.
|
|
121
|
-
//
|
|
122
|
-
// The likelihood is the element won't even render, not even a flash,
|
|
123
|
-
// so some of these are just precautions. However in IE the element
|
|
124
|
-
// is visible whilst the popup box asking the user for permission for
|
|
125
|
-
// the web page to copy to the clipboard.
|
|
126
|
-
//
|
|
127
|
-
// Place in top-left corner of screen regardless of scroll position.
|
|
128
|
-
textArea.style.position = "fixed";
|
|
129
|
-
textArea.style.top = "0";
|
|
130
|
-
textArea.style.left = "0";
|
|
131
|
-
// Ensure it has a small width and height. Setting to 1px / 1em
|
|
132
|
-
// doesn't work as this gives a negative w/h on some browsers.
|
|
133
|
-
textArea.style.width = "2em";
|
|
134
|
-
textArea.style.height = "2em";
|
|
135
|
-
// We don't need padding, reducing the size if it does flash render.
|
|
136
|
-
textArea.style.padding = "0";
|
|
137
|
-
// Clean up any borders.
|
|
138
|
-
textArea.style.border = "none";
|
|
139
|
-
textArea.style.outline = "none";
|
|
140
|
-
textArea.style.boxShadow = "none";
|
|
141
|
-
// Avoid flash of white box if rendered for any reason.
|
|
142
|
-
textArea.style.background = "transparent";
|
|
143
|
-
textArea.value = text;
|
|
144
|
-
document.body.appendChild(textArea);
|
|
145
|
-
textArea.focus();
|
|
146
|
-
textArea.select();
|
|
147
|
-
try {
|
|
148
|
-
var successful = document.execCommand("copy");
|
|
149
|
-
if (!successful)
|
|
150
|
-
this.msgService.simpleError(this.loc["Generic error during 'copy' command execution"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT']);
|
|
151
|
-
}
|
|
152
|
-
catch (err) {
|
|
153
|
-
this.msgService.simpleError(this.loc["Error during Clipboard content copy operation"][(_b = this.LOCALE) !== null && _b !== void 0 ? _b : 'it-IT'] + ": " + err);
|
|
154
|
-
}
|
|
155
|
-
document.body.removeChild(textArea);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
ClipboardService.decorators = [
|
|
159
|
-
{ type: Injectable }
|
|
160
|
-
];
|
|
161
|
-
ClipboardService.ctorParameters = () => [
|
|
162
|
-
{ type: MessageService },
|
|
163
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [EXT_LOCALE,] }] }
|
|
164
|
-
];
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsVUFBVTtBQUNWLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXZDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXdCekI7Ozs7T0FJRztJQUNILFlBQTJCLFVBQTBCLEVBQTBDLE1BQWM7UUFBbEYsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFBMEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTNCN0c7O1dBRUc7UUFDSyxRQUFHLEdBQUc7WUFDVixpSUFBaUksRUFBRTtnQkFDL0gsT0FBTyxFQUFFLGlJQUFpSTtnQkFDMUksT0FBTyxFQUFFLGlJQUFpSTthQUM3STtZQUNELCtDQUErQyxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsK0NBQStDO2dCQUN4RCxPQUFPLEVBQUUseURBQXlEO2FBQ3JFO1lBQ0QsK0NBQStDLEVBQUU7Z0JBQzdDLE9BQU8sRUFBRSwrQ0FBK0M7Z0JBQ3hELE9BQU8sRUFBRSxvREFBb0Q7YUFDaEU7WUFDRCwrQ0FBK0MsRUFBQztnQkFDNUMsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsT0FBTyxFQUFFLHNEQUFzRDthQUNsRTtTQUNKLENBQUM7SUFPK0csQ0FBQztJQUVsSDs7Ozs7O09BTUc7SUFDSSxZQUFZLENBQUMsS0FBeUIsRUFBRSxrQkFBNEQ7O1FBQ3ZHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxP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QztRQUV0QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxCLElBQUk7WUFDQSxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLElBQUcsQ0FBQyxVQUFVO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxNQUFNLG1DQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDdEg7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxNQUFNLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRSxHQUFHLENBQUMsQ0FBQztTQUM5SDtRQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OztZQTlKSixVQUFVOzs7WUFORixjQUFjO3lDQW9DcUMsUUFBUSxZQUFJLE1BQU0sU0FBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVYVF9MT0NBTEUgfSBmcm9tIFwiLi4vdG9rZW5zXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgdW4gYWNjZXNzbyBiYXNlIGluIGxldHR1cmEvc2NyaXR0dXJhIHN1bGxhIGNsaXBib2FyZFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gZGkgbG9jYWxpenphemlvbmUgcGVyIGkgbWVzc2FnZ2kgZGkgcXVlc3RhIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiTWkgZGlzcGlhY2UgbWEgRmlyZWZveCBub24gc3VwcG9ydGEgbCdhY2Nlc3NvIGRpcmV0dG8gYWxsYSBDbGlwYm9hcmQsIHNlIG5vbiBhdHRyYXZlcnNvIGxlIGVzdGVuc2lvbmkuIFNpIHByZWdhIGRpIHVzYXJlIENocm9tZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiR2VuZXJpYyBlcnJvciBkdXJpbmcgJ2NvcHknIGNvbW1hbmQgZXhlY3V0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIGdlbmVyaWNvIGR1cmFudGUgbCdlc2VjdXppb25lIGRlbCBjb21hbmRvICdjb3B5J1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCByZWFkIG9wZXJhdGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIGxldHR1cmEgZGVsIGNvbnRlbnV0byBkZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIjp7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IGNvcHkgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIHNjcml0dHVyYSBkZWwgY29udGVudXRvIG5lbGxhIENsaXBib2FyZFwiXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoRVhUX0xPQ0FMRSkgcHJpdmF0ZSBMT0NBTEU6IHN0cmluZykgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVuZGUgaWwgdmFsb3JlIGRlbGxhIGNsaXBib2FyZC4gXHJcbiAgICAgKiBTaSBwdcOyIHNwZWNpZmljYXJlIHNlIGNpIHNpIGFzcGV0dGEgdW5hIGxpc3RhIG8gdW5hIG1hdHJpY2UgZGkgdmFsb3JpIGluIG1vZG8gZGEgcmljZXZlcmUgZ2nDoCB1biByaXN1bHRhdG8gdXRpbGl6emFiaWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7J2FycmF5JyB8ICdtYXRyaXgnfSBzdHlsZSBTdGlsZSBkZWxsJ291dHB1dCBkZXNpZGVyYXRvLCBzZSBhcnJheSBvIG1hdHJpY2VcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbHVlRm91bmRDYWxsYmFjayBDYWxsYmFjayBjaGUgcXVlc3RhIGZ1bnppb25lIGNoaWFtZXLDoCB1bmEgdm9sdGEgb3R0ZW51dG8gaSB2YWxvcmkgcmljaGllc3RpIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q2xpcGJvYXJkKHN0eWxlOiAnYXJyYXknIHwgJ21hdHJpeCcsIHZhbHVlRm91bmRDYWxsYmFjayA6ICh2YWx1ZXM6IHN0cmluZ1tdIHwgc3RyaW5nW11bXSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJGaXJlZm94XCIpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIC8vaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NsaXBib2FyZC9yZWFkVGV4dFxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCg8YW55PndpbmRvdykuY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9ICg8YW55PndpbmRvdykuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwiVGV4dFwiKTtcclxuICAgICAgICAgICAgdmFyIHZhbHVlID0gc3R5bGUgPT0gXCJhcnJheVwiPyB0aGlzLmdldENsaXBib2FyZExpbmVzKGRhdGEpIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlID09IFwibWF0cml4XCIgPyB0aGlzLmdldENsaXBib2FyZE1hdHJpeChkYXRhKSA6IFtdO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVGb3VuZENhbGxiYWNrKSB2YWx1ZUZvdW5kQ2FsbGJhY2sodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAoKDxhbnk+d2luZG93KS5uYXZpZ2F0b3IuY2xpcGJvYXJkKSB7XHJcbiAgICAgICAgICAgICg8YW55PndpbmRvdykubmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHsgbmFtZTogJ2NsaXBib2FyZC1yZWFkJyB9KS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShyZXN1bHQuc3RhdGUgPT09ICdncmFudGVkJyB8fCByZXN1bHQuc3RhdGUgPT09ICdwcm9tcHQnKSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVGb3VuZENhbGxiYWNrKSB2YWx1ZUZvdW5kQ2FsbGJhY2soW10pO1xyXG5cclxuICAgICAgICAgICAgICAgICg8YW55PndpbmRvdykubmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4odCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlID09IFwiYXJyYXlcIj8gdGhpcy5nZXRDbGlwYm9hcmRMaW5lcyh0KSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9PSBcIm1hdHJpeFwiID8gdGhpcy5nZXRDbGlwYm9hcmRNYXRyaXgodCkgOiBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRm91bmRDYWxsYmFjaykgdmFsdWVGb3VuZENhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubG9jW1wiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddICsgXCI6IFwiKyBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSBpbCBjb250ZW51dG8gZGVsbGEgY2xpcGJvYXJkIGRpdmlzbyBwZXIgcmlnaGUgKHNlcGFyYXRlIGRhIG5ld2xpbmUpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIGNvbnRlbnV0byBsZXR0byBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ1tdfSBBcnJheSBjb250ZW5lbnRlIGlsIHRlc3RvIHByZXNvIGRhbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2FcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRDbGlwYm9hcmRMaW5lcyhkYXRhOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGEudHJpbSgpLnNwbGl0KFwiXFxyXFxuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSBpbCBjb250ZW51dG8gZGVsbGEgY2xpcGJvYXJkIGRpdmlzbyBwZXIgcmlnaGUgKHNlcGFyYXRlIGRhIG5ld2xpbmUpIGUgY29sb25uZSAoc2VwYXJhdGUgZGEgdGFiKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSBjb250ZW51dG8gbGV0dG8gZGFsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXVtdfSBNYXRyaWNlIGNvbnRlbmVudGUgaWwgdGVzdG8gcHJlc28gZGFsbGEgY2xpcGJvYXJkIGRpdmlzbyBwZXIgcmlnYSBlIGNvbG9ubmFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRDbGlwYm9hcmRNYXRyaXgoZGF0YTogc3RyaW5nKTogc3RyaW5nW11bXSB7XHJcbiAgICAgICAgdmFyIHJldDogc3RyaW5nW11bXSA9IFtdO1xyXG4gICAgICAgIHZhciByb3dzID0gZGF0YS5zcGxpdChcIlxcclxcblwiKTtcclxuXHJcbiAgICAgICAgLy8gQSBxdWFudG8gcGFyZSBvZ25pIHZhbG9yZSDDqCBzZXBhcmF0byBkYSB1biBcXHQuLi4gc3Blcm8gY2hlIHNpYSB1bm8gc3RhbmRhcmQgZGkgcXVhbmRvIHNpIGNvcGlhIGRhIGV4Y2VsIGFsdHJpbWVudGkgY2lhb1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgcmV0LnB1c2gocm93c1tpXS5zcGxpdCgnXFx0JykubWFwKHQgPT4gdC50cmltKCkpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBjb3BpYSB1biB0ZXN0byBhbGwnaW50ZXJubyBkZWxsYSBjbGlwYm9hcmRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgaW5zZXJpcmUgbmVsbGEgY2xpcGJvYXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb3B5VGV4dFRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHZhciB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyAqKiogVGhpcyBzdHlsaW5nIGlzIGFuIGV4dHJhIHN0ZXAgd2hpY2ggaXMgbGlrZWx5IG5vdCByZXF1aXJlZC4gKioqXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBXaHkgaXMgaXQgaGVyZT8gVG8gZW5zdXJlOlxyXG4gICAgICAgIC8vIDEuIHRoZSBlbGVtZW50IGlzIGFibGUgdG8gaGF2ZSBmb2N1cyBhbmQgc2VsZWN0aW9uLlxyXG4gICAgICAgIC8vIDIuIGlmIGVsZW1lbnQgd2FzIHRvIGZsYXNoIHJlbmRlciBpdCBoYXMgbWluaW1hbCB2aXN1YWwgaW1wYWN0LlxyXG4gICAgICAgIC8vIDMuIGxlc3MgZmxha3luZXNzIHdpdGggc2VsZWN0aW9uIGFuZCBjb3B5aW5nIHdoaWNoICoqbWlnaHQqKiBvY2N1ciBpZlxyXG4gICAgICAgIC8vICAgIHRoZSB0ZXh0YXJlYSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gVGhlIGxpa2VsaWhvb2QgaXMgdGhlIGVsZW1lbnQgd29uJ3QgZXZlbiByZW5kZXIsIG5vdCBldmVuIGEgZmxhc2gsXHJcbiAgICAgICAgLy8gc28gc29tZSBvZiB0aGVzZSBhcmUganVzdCBwcmVjYXV0aW9ucy4gSG93ZXZlciBpbiBJRSB0aGUgZWxlbWVudFxyXG4gICAgICAgIC8vIGlzIHZpc2libGUgd2hpbHN0IHRoZSBwb3B1cCBib3ggYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIGZvclxyXG4gICAgICAgIC8vIHRoZSB3ZWIgcGFnZSB0byBjb3B5IHRvIHRoZSBjbGlwYm9hcmQuXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgLy8gUGxhY2UgaW4gdG9wLWxlZnQgY29ybmVyIG9mIHNjcmVlbiByZWdhcmRsZXNzIG9mIHNjcm9sbCBwb3NpdGlvbi5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS50b3AgPSBcIjBcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5sZWZ0ID0gXCIwXCI7XHJcblxyXG4gICAgICAgIC8vIEVuc3VyZSBpdCBoYXMgYSBzbWFsbCB3aWR0aCBhbmQgaGVpZ2h0LiBTZXR0aW5nIHRvIDFweCAvIDFlbVxyXG4gICAgICAgIC8vIGRvZXNuJ3Qgd29yayBhcyB0aGlzIGdpdmVzIGEgbmVnYXRpdmUgdy9oIG9uIHNvbWUgYnJvd3NlcnMuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUud2lkdGggPSBcIjJlbVwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiMmVtXCI7XHJcblxyXG4gICAgICAgIC8vIFdlIGRvbid0IG5lZWQgcGFkZGluZywgcmVkdWNpbmcgdGhlIHNpemUgaWYgaXQgZG9lcyBmbGFzaCByZW5kZXIuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUucGFkZGluZyA9IFwiMFwiO1xyXG5cclxuICAgICAgICAvLyBDbGVhbiB1cCBhbnkgYm9yZGVycy5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5vdXRsaW5lID0gXCJub25lXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYm94U2hhZG93ID0gXCJub25lXCI7XHJcblxyXG4gICAgICAgIC8vIEF2b2lkIGZsYXNoIG9mIHdoaXRlIGJveCBpZiByZW5kZXJlZCBmb3IgYW55IHJlYXNvbi5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5iYWNrZ3JvdW5kID0gXCJ0cmFuc3BhcmVudFwiO1xyXG5cclxuICAgICAgICB0ZXh0QXJlYS52YWx1ZSA9IHRleHQ7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xyXG4gICAgICAgIHRleHRBcmVhLmZvY3VzKCk7XHJcbiAgICAgICAgdGV4dEFyZWEuc2VsZWN0KCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBzdWNjZXNzZnVsID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xyXG4gICAgICAgICAgICBpZighc3VjY2Vzc2Z1bClcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcih0aGlzLmxvY1tcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcih0aGlzLmxvY1tcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCBjb3B5IG9wZXJhdGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSArIFwiOiBcIisgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xyXG4gICAgfVxyXG59Il19
|