@po-ui/ng-sync 5.22.2 → 5.22.3

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.
Files changed (108) hide show
  1. package/README.md +22 -22
  2. package/bundles/po-ui-ng-sync.umd.js +2915 -2915
  3. package/bundles/po-ui-ng-sync.umd.js.map +1 -1
  4. package/esm2015/lib/index.js +15 -15
  5. package/esm2015/lib/models/index.js +6 -6
  6. package/esm2015/lib/models/po-data-message.model.js +57 -57
  7. package/esm2015/lib/models/po-data-transform.model.js +22 -22
  8. package/esm2015/lib/models/po-entity/po-entity.model.js +229 -229
  9. package/esm2015/lib/models/po-event-sourcing-error-response.model.js +17 -17
  10. package/esm2015/lib/models/po-network-status.model.js +44 -44
  11. package/esm2015/lib/models/po-network-type.enum.js +30 -30
  12. package/esm2015/lib/models/po-query-builder/po-query-builder.model.js +241 -241
  13. package/esm2015/lib/models/po-request-type.enum.js +16 -16
  14. package/esm2015/lib/po-sync.module.js +31 -31
  15. package/esm2015/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.js +17 -17
  16. package/esm2015/lib/services/po-event-sourcing/index.js +4 -4
  17. package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.js +2 -2
  18. package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.js +2 -2
  19. package/esm2015/lib/services/po-event-sourcing/po-event-sourcing.service.js +411 -411
  20. package/esm2015/lib/services/po-http-client/interfaces/po-http-header-option.interface.js +11 -11
  21. package/esm2015/lib/services/po-http-client/interfaces/po-http-request-data.interface.js +2 -2
  22. package/esm2015/lib/services/po-http-client/interfaces/po-response-api.interface.js +2 -2
  23. package/esm2015/lib/services/po-http-client/po-http-client.service.js +147 -147
  24. package/esm2015/lib/services/po-http-client/po-http-request-type.enum.js +25 -25
  25. package/esm2015/lib/services/po-network/po-network.service.js +58 -58
  26. package/esm2015/lib/services/po-schema/index.js +4 -4
  27. package/esm2015/lib/services/po-schema/po-schema-definition/po-schema-definition.service.js +80 -80
  28. package/esm2015/lib/services/po-schema/po-schema-util/po-schema-util.model.js +124 -124
  29. package/esm2015/lib/services/po-schema/po-schema.service.js +198 -198
  30. package/esm2015/lib/services/po-sync/interfaces/po-sync-config.interface.js +2 -2
  31. package/esm2015/lib/services/po-sync/interfaces/po-sync-field-options.interface.js +2 -2
  32. package/esm2015/lib/services/po-sync/interfaces/po-sync-response.interface.js +2 -2
  33. package/esm2015/lib/services/po-sync/interfaces/po-sync-schema.interface.js +2 -2
  34. package/esm2015/lib/services/po-sync/po-sync.service.js +336 -336
  35. package/esm2015/lib/utils/utils.js +63 -63
  36. package/esm2015/po-ui-ng-sync.js +8 -8
  37. package/esm2015/public-api.js +2 -2
  38. package/fesm2015/po-ui-ng-sync.js +2047 -2047
  39. package/fesm2015/po-ui-ng-sync.js.map +1 -1
  40. package/lib/index.d.ts +14 -14
  41. package/lib/models/index.d.ts +5 -5
  42. package/lib/models/po-data-message.model.d.ts +46 -46
  43. package/lib/models/po-data-transform.model.d.ts +52 -52
  44. package/lib/models/po-entity/po-entity.model.d.ts +122 -122
  45. package/lib/models/po-event-sourcing-error-response.model.d.ts +20 -20
  46. package/lib/models/po-network-status.model.d.ts +25 -25
  47. package/lib/models/po-network-type.enum.d.ts +28 -28
  48. package/lib/models/po-query-builder/po-query-builder.model.d.ts +126 -126
  49. package/lib/models/po-request-type.enum.d.ts +14 -14
  50. package/lib/po-sync.module.d.ts +7 -7
  51. package/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.d.ts +11 -11
  52. package/lib/services/po-event-sourcing/index.d.ts +3 -3
  53. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.d.ts +26 -26
  54. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.d.ts +16 -16
  55. package/lib/services/po-event-sourcing/po-event-sourcing.service.d.ts +71 -71
  56. package/lib/services/po-http-client/interfaces/po-http-header-option.interface.d.ts +15 -15
  57. package/lib/services/po-http-client/interfaces/po-http-request-data.interface.d.ts +24 -24
  58. package/lib/services/po-http-client/interfaces/po-response-api.interface.d.ts +14 -14
  59. package/lib/services/po-http-client/po-http-client.service.d.ts +75 -75
  60. package/lib/services/po-http-client/po-http-request-type.enum.d.ts +23 -23
  61. package/lib/services/po-network/po-network.service.d.ts +33 -33
  62. package/lib/services/po-schema/index.d.ts +3 -3
  63. package/lib/services/po-schema/po-schema-definition/po-schema-definition.service.d.ts +48 -48
  64. package/lib/services/po-schema/po-schema-util/po-schema-util.model.d.ts +79 -79
  65. package/lib/services/po-schema/po-schema.service.d.ts +95 -95
  66. package/lib/services/po-sync/interfaces/po-sync-config.interface.d.ts +24 -24
  67. package/lib/services/po-sync/interfaces/po-sync-field-options.interface.d.ts +15 -15
  68. package/lib/services/po-sync/interfaces/po-sync-response.interface.d.ts +20 -20
  69. package/lib/services/po-sync/interfaces/po-sync-schema.interface.d.ts +37 -37
  70. package/lib/services/po-sync/po-sync.service.d.ts +159 -159
  71. package/lib/utils/utils.d.ts +36 -36
  72. package/package.json +4 -4
  73. package/po-ui-ng-sync-5.22.3.tgz +0 -0
  74. package/po-ui-ng-sync.d.ts +8 -8
  75. package/public-api.d.ts +1 -1
  76. package/schematics/README.md +169 -169
  77. package/schematics/collection.json +15 -15
  78. package/schematics/migrations.json +25 -25
  79. package/schematics/ng-add/index.d.ts +7 -7
  80. package/schematics/ng-add/index.js +33 -33
  81. package/schematics/ng-add/index.spec.d.ts +1 -1
  82. package/schematics/ng-add/index.spec.js +62 -62
  83. package/schematics/ng-add/schema.json +7 -7
  84. package/schematics/ng-generate/schema/files/__path__/__name@dasherize__/__name@dasherize__.constants.ts.template +13 -13
  85. package/schematics/ng-generate/schema/index.d.ts +4 -4
  86. package/schematics/ng-generate/schema/index.js +12 -12
  87. package/schematics/ng-generate/schema/index.spec.d.ts +1 -1
  88. package/schematics/ng-generate/schema/index.spec.js +44 -44
  89. package/schematics/ng-generate/schema/schema.d.ts +3 -3
  90. package/schematics/ng-generate/schema/schema.js +2 -2
  91. package/schematics/ng-generate/schema/schema.json +31 -31
  92. package/schematics/ng-update/v2/changes.d.ts +8 -8
  93. package/schematics/ng-update/v2/changes.js +20 -20
  94. package/schematics/ng-update/v2/index.d.ts +5 -5
  95. package/schematics/ng-update/v2/index.js +101 -101
  96. package/schematics/ng-update/v3/changes.d.ts +2 -2
  97. package/schematics/ng-update/v3/changes.js +14 -14
  98. package/schematics/ng-update/v3/index.d.ts +1 -1
  99. package/schematics/ng-update/v3/index.js +16 -16
  100. package/schematics/ng-update/v4/changes.d.ts +2 -2
  101. package/schematics/ng-update/v4/changes.js +14 -14
  102. package/schematics/ng-update/v4/index.d.ts +1 -1
  103. package/schematics/ng-update/v4/index.js +15 -15
  104. package/schematics/ng-update/v5/changes.d.ts +2 -2
  105. package/schematics/ng-update/v5/changes.js +13 -13
  106. package/schematics/ng-update/v5/index.d.ts +1 -1
  107. package/schematics/ng-update/v5/index.js +15 -15
  108. package/po-ui-ng-sync-5.22.2.tgz +0 -0
@@ -1,198 +1,198 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { PoStorageService } from '@po-ui/ng-storage';
4
- import { PoSchemaDefinitionService } from './po-schema-definition/po-schema-definition.service';
5
- import { PoSchemaUtil } from './po-schema-util/po-schema-util.model';
6
- /**
7
- * @docsPrivate
8
- *
9
- * @description
10
- *
11
- * Serviço que realiza as operações nos `schemas`.
12
- */
13
- export class PoSchemaService {
14
- constructor(poSchemaDefinitionService, poStorage) {
15
- this.poSchemaDefinitionService = poSchemaDefinitionService;
16
- this.poStorage = poStorage;
17
- }
18
- /**
19
- * Retorna o id a partir de uma chave de um *schema*.
20
- *
21
- * @param {string} schemaKey Chave do *schema* em que será realizada a busca do id.
22
- */
23
- static getIdByRecordKey(schemaKey) {
24
- return schemaKey.split(':')[1];
25
- }
26
- /**
27
- * Retorna a chave do *schema* informado.
28
- *
29
- * @param {string} schemaName Nome do *schema*.
30
- * @param {any} recordId Id do registro.
31
- * @param {boolean} isLocalKey Indica se é uma chave local.
32
- */
33
- static getRecordKey(schemaName, recordId, isLocalKey = false) {
34
- return isLocalKey ? `${schemaName}_local:${recordId}` : `${schemaName}:${recordId}`;
35
- }
36
- /**
37
- * Verifica se o dado informado é uma chave de um *schema*.
38
- *
39
- * @param {string} data Dado que será verificado se é uma chave de um *schema*.
40
- * @param {string} schemaName Nome do *schema*.
41
- */
42
- static isSchemaKey(data, schemaName) {
43
- return data ? data.startsWith(`${schemaName}:`) : false;
44
- }
45
- /**
46
- * Cria um novo registro para o *schema* informado.
47
- *
48
- * @param {PoSyncSchema} schema **Schema* em que será criado o registro.
49
- * @param {object} newRecord Registro que será criado.
50
- */
51
- create(schema, newRecord) {
52
- return __awaiter(this, void 0, void 0, function* () {
53
- const id = PoSchemaUtil.getRecordId(newRecord, schema);
54
- return this.save(schema, newRecord, id);
55
- });
56
- }
57
- /**
58
- * Destrói as chaves do *storage* que contém os registros dos *schemas*.
59
- *
60
- * @returns {Promise<void>} Promessa que é resolvida quando as chaves referentes aos *schemas* forem destruídas.
61
- */
62
- destroySchemasRecords() {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const schemas = yield this.poSchemaDefinitionService.getAll();
65
- const storageKeys = yield this.poStorage.keys();
66
- for (const key of storageKeys) {
67
- const schemaKey = schemas.find(schema => PoSchemaService.isSchemaKey(key, schema.name));
68
- if (schemaKey) {
69
- const id = PoSchemaService.getIdByRecordKey(key);
70
- yield this.remove(schemaKey.name, id);
71
- }
72
- }
73
- });
74
- }
75
- /**
76
- * Retorna o registro referente ao *schema* informado.
77
- *
78
- * @param {string} schemaName Nome do *schema*.
79
- * @param {any} recordId Id do registro.
80
- */
81
- get(schemaName, recordId) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- const isLocalRecord = true;
84
- const localRecord = yield this.getRecord(schemaName, recordId, isLocalRecord);
85
- const record = yield this.getRecord(schemaName, recordId);
86
- return Object.assign(record, localRecord);
87
- });
88
- }
89
- /**
90
- * Retorna todos os registros referente ao *schema* informado.
91
- *
92
- * @param {string} schemaName Nome do *schema*.
93
- */
94
- getAll(schemaName) {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- const storageKeys = yield this.poStorage.keys();
97
- const schemaRecords = [];
98
- for (const key of storageKeys) {
99
- if (PoSchemaService.isSchemaKey(key, schemaName)) {
100
- const id = PoSchemaService.getIdByRecordKey(key);
101
- schemaRecords.push(yield this.get(schemaName, id));
102
- }
103
- }
104
- return schemaRecords;
105
- });
106
- }
107
- /**
108
- * Aguarda a liberação do recurso limitado, posteriormente o envolve em um comportamento
109
- * de bloqueio e desbloqueio.
110
- *
111
- * @param {Function} limitedResource Função que será envolvida no comportamento de bloqueio e desbloqueio.
112
- */
113
- limitedCallWrap(limitedResource) {
114
- return this.poStorage.limitedCallWrap(limitedResource);
115
- }
116
- /**
117
- * Remove um registro de um *schema* informado.
118
- *
119
- * @param {string} schemaName Nome do *schema*.
120
- * @param {any} recordId Id do registro.
121
- */
122
- remove(schemaName, recordId) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const recordKey = PoSchemaService.getRecordKey(schemaName, recordId);
125
- const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
126
- yield this.poStorage.remove(recordKey);
127
- yield this.poStorage.remove(localRecordKey);
128
- });
129
- }
130
- /**
131
- * Atualiza um registro de um *schema* informado.
132
- *
133
- * @param {PoSyncSchema} schema **Schema* referente ao registro que será alterado.
134
- * @param {object} record Registro que será atualizado.
135
- * @param {any} recordId Id do registro que deseja ser alterado. Deve ser utilizado em casos em que o id foi alterado.
136
- */
137
- update(schema, record, recordId) {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- const id = PoSchemaUtil.getRecordId(record, schema);
140
- if (recordId) {
141
- record = yield this.updateRecordId(schema.name, record, recordId);
142
- }
143
- return this.save(schema, record, id);
144
- });
145
- }
146
- /**
147
- * Atualiza todos os registros de um *schema*.
148
- *
149
- * @param {PoSyncSchema} schema **Schema* referente aos registros que serão alterados.
150
- * @param {Array<object>} records Lista de registros que serão alterados.
151
- */
152
- updateAll(schema, records) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- for (const record of records) {
155
- yield this.update(schema, record);
156
- }
157
- });
158
- }
159
- getRecord(schemaName, recordId, isLocalRecord = false) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- return (yield this.poStorage.get(PoSchemaService.getRecordKey(schemaName, recordId, isLocalRecord))) || {};
162
- });
163
- }
164
- save(schema, record, recordId) {
165
- return __awaiter(this, void 0, void 0, function* () {
166
- const { serverRecord, localRecord } = PoSchemaUtil.separateSchemaFields(schema, record);
167
- const recordKey = PoSchemaService.getRecordKey(schema.name, recordId);
168
- yield this.poStorage.set(recordKey, serverRecord);
169
- yield this.saveLocalFields(schema.name, localRecord, recordId);
170
- return record;
171
- });
172
- }
173
- saveLocalFields(schemaName, localFields, recordId) {
174
- return __awaiter(this, void 0, void 0, function* () {
175
- const containsLocalFields = Object.keys(localFields).length;
176
- if (containsLocalFields) {
177
- const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
178
- yield this.poStorage.set(localRecordKey, localFields);
179
- }
180
- });
181
- }
182
- updateRecordId(schemaName, record, recordId) {
183
- return __awaiter(this, void 0, void 0, function* () {
184
- const isLocalRecord = true;
185
- const localRecord = yield this.getRecord(schemaName, recordId, isLocalRecord);
186
- yield this.remove(schemaName, recordId);
187
- return Object.assign(record, localRecord);
188
- });
189
- }
190
- }
191
- PoSchemaService.decorators = [
192
- { type: Injectable }
193
- ];
194
- PoSchemaService.ctorParameters = () => [
195
- { type: PoSchemaDefinitionService },
196
- { type: PoStorageService }
197
- ];
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdyRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQix5QkFBb0QsRUFBVSxTQUEyQjtRQUF6Riw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRWpIOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBaUI7UUFDL0MsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQWtCLEVBQUUsUUFBYSxFQUFFLGFBQXNCLEtBQUs7UUFDeEYsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVksRUFBRSxVQUFrQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVB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LENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFYSxlQUFlLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFFBQVE7O1lBQzdFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFNUQsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUM7S0FBQTtJQUVhLGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVE7O1lBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztZQUUzQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM5RSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXhDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsQ0FBQztLQUFBOzs7WUFwTEYsVUFBVTs7O1lBWEYseUJBQXlCO1lBRnpCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9TdG9yYWdlU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1zdG9yYWdlJztcblxuaW1wb3J0IHsgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSB9IGZyb20gJy4vcG8tc2NoZW1hLWRlZmluaXRpb24vcG8tc2NoZW1hLWRlZmluaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb1NjaGVtYVV0aWwgfSBmcm9tICcuL3BvLXNjaGVtYS11dGlsL3BvLXNjaGVtYS11dGlsLm1vZGVsJztcbmltcG9ydCB7IFBvU3luY1NjaGVtYSB9IGZyb20gJy4uL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIFNlcnZpw6dvIHF1ZSByZWFsaXphIGFzIG9wZXJhw6fDtWVzIG5vcyBgc2NoZW1hc2AuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQb1NjaGVtYVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2U6IFBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2UsIHByaXZhdGUgcG9TdG9yYWdlOiBQb1N0b3JhZ2VTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIG8gaWQgYSBwYXJ0aXIgZGUgdW1hIGNoYXZlIGRlIHVtICpzY2hlbWEqLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hS2V5IENoYXZlIGRvICpzY2hlbWEqIGVtIHF1ZSBzZXLDoSByZWFsaXphZGEgYSBidXNjYSBkbyBpZC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldElkQnlSZWNvcmRLZXkoc2NoZW1hS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzY2hlbWFLZXkuc3BsaXQoJzonKVsxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGEgY2hhdmUgZG8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbEtleSBJbmRpY2Egc2Ugw6kgdW1hIGNoYXZlIGxvY2FsLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWU6IHN0cmluZywgcmVjb3JkSWQ6IGFueSwgaXNMb2NhbEtleTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXNMb2NhbEtleSA/IGAke3NjaGVtYU5hbWV9X2xvY2FsOiR7cmVjb3JkSWR9YCA6IGAke3NjaGVtYU5hbWV9OiR7cmVjb3JkSWR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBvIGRhZG8gaW5mb3JtYWRvIMOpIHVtYSBjaGF2ZSBkZSB1bSAqc2NoZW1hKi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgRGFkbyBxdWUgc2Vyw6EgdmVyaWZpY2FkbyBzZSDDqSB1bWEgY2hhdmUgZGUgdW0gKnNjaGVtYSouXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBpc1NjaGVtYUtleShkYXRhOiBzdHJpbmcsIHNjaGVtYU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRhID8gZGF0YS5zdGFydHNXaXRoKGAke3NjaGVtYU5hbWV9OmApIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JpYSB1bSBub3ZvIHJlZ2lzdHJvIHBhcmEgbyAqc2NoZW1hKiBpbmZvcm1hZG8uXG4gICAqXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIGVtIHF1ZSBzZXLDoSBjcmlhZG8gbyByZWdpc3Ryby5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JlY29yZCBSZWdpc3RybyBxdWUgc2Vyw6EgY3JpYWRvLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKHNjaGVtYTogUG9TeW5jU2NoZW1hLCBuZXdSZWNvcmQ6IG9iamVjdCk6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgY29uc3QgaWQgPSBQb1NjaGVtYVV0aWwuZ2V0UmVjb3JkSWQobmV3UmVjb3JkLCBzY2hlbWEpO1xuICAgIHJldHVybiB0aGlzLnNhdmUoc2NoZW1hLCBuZXdSZWNvcmQsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0csOzaSBhcyBjaGF2ZXMgZG8gKnN0b3JhZ2UqIHF1ZSBjb250w6ltIG9zIHJlZ2lzdHJvcyBkb3MgKnNjaGVtYXMqLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYXMgY2hhdmVzIHJlZmVyZW50ZXMgYW9zICpzY2hlbWFzKiBmb3JlbSBkZXN0cnXDrWRhcy5cbiAgICovXG4gIGFzeW5jIGRlc3Ryb3lTY2hlbWFzUmVjb3JkcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzY2hlbWFzID0gYXdhaXQgdGhpcy5wb1NjaGVtYURlZmluaXRpb25TZXJ2aWNlLmdldEFsbCgpO1xuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gYXdhaXQgdGhpcy5wb1N0b3JhZ2Uua2V5cygpO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc3RvcmFnZUtleXMpIHtcbiAgICAgIGNvbnN0IHNjaGVtYUtleSA9IHNjaGVtYXMuZmluZChzY2hlbWEgPT4gUG9TY2hlbWFTZXJ2aWNlLmlzU2NoZW1hS2V5KGtleSwgc2NoZW1hLm5hbWUpKTtcblxuICAgICAgaWYgKHNjaGVtYUtleSkge1xuICAgICAgICBjb25zdCBpZCA9IFBvU2NoZW1hU2VydmljZS5nZXRJZEJ5UmVjb3JkS2V5KGtleSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlKHNjaGVtYUtleS5uYW1lLCBpZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgbyByZWdpc3RybyByZWZlcmVudGUgYW8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXG4gICAqL1xuICBhc3luYyBnZXQoc2NoZW1hTmFtZTogc3RyaW5nLCByZWNvcmRJZDogYW55KTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICBjb25zdCBpc0xvY2FsUmVjb3JkID0gdHJ1ZTtcbiAgICBjb25zdCBsb2NhbFJlY29yZCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkKTtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLmdldFJlY29yZChzY2hlbWFOYW1lLCByZWNvcmRJZCk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZWNvcmQsIGxvY2FsUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIHRvZG9zIG9zIHJlZ2lzdHJvcyByZWZlcmVudGUgYW8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsKHNjaGVtYU5hbWU6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8b2JqZWN0Pj4ge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gYXdhaXQgdGhpcy5wb1N0b3JhZ2Uua2V5cygpO1xuICAgIGNvbnN0IHNjaGVtYVJlY29yZHMgPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIHN0b3JhZ2VLZXlzKSB7XG4gICAgICBpZiAoUG9TY2hlbWFTZXJ2aWNlLmlzU2NoZW1hS2V5KGtleSwgc2NoZW1hTmFtZSkpIHtcbiAgICAgICAgY29uc3QgaWQgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0SWRCeVJlY29yZEtleShrZXkpO1xuICAgICAgICBzY2hlbWFSZWNvcmRzLnB1c2goYXdhaXQgdGhpcy5nZXQoc2NoZW1hTmFtZSwgaWQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hUmVjb3JkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZ3VhcmRhIGEgbGliZXJhw6fDo28gZG8gcmVjdXJzbyBsaW1pdGFkbywgcG9zdGVyaW9ybWVudGUgbyBlbnZvbHZlIGVtIHVtIGNvbXBvcnRhbWVudG9cbiAgICogZGUgYmxvcXVlaW8gZSBkZXNibG9xdWVpby5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbGltaXRlZFJlc291cmNlIEZ1bsOnw6NvIHF1ZSBzZXLDoSBlbnZvbHZpZGEgbm8gY29tcG9ydGFtZW50byBkZSBibG9xdWVpbyBlIGRlc2Jsb3F1ZWlvLlxuICAgKi9cbiAgbGltaXRlZENhbGxXcmFwKGxpbWl0ZWRSZXNvdXJjZTogRnVuY3Rpb24pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnBvU3RvcmFnZS5saW1pdGVkQ2FsbFdyYXAobGltaXRlZFJlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdW0gcmVnaXN0cm8gZGUgdW0gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXG4gICAqL1xuICBhc3luYyByZW1vdmUoc2NoZW1hTmFtZTogc3RyaW5nLCByZWNvcmRJZDogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZWNvcmRLZXkgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWUsIHJlY29yZElkKTtcbiAgICBjb25zdCBsb2NhbFJlY29yZEtleSA9IFBvU2NoZW1hU2VydmljZS5nZXRSZWNvcmRLZXkoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIHRydWUpO1xuXG4gICAgYXdhaXQgdGhpcy5wb1N0b3JhZ2UucmVtb3ZlKHJlY29yZEtleSk7XG4gICAgYXdhaXQgdGhpcy5wb1N0b3JhZ2UucmVtb3ZlKGxvY2FsUmVjb3JkS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHVhbGl6YSB1bSByZWdpc3RybyBkZSB1bSAqc2NoZW1hKiBpbmZvcm1hZG8uXG4gICAqXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIHJlZmVyZW50ZSBhbyByZWdpc3RybyBxdWUgc2Vyw6EgYWx0ZXJhZG8uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIGF0dWFsaXphZG8uXG4gICAqIEBwYXJhbSB7YW55fSByZWNvcmRJZCBJZCBkbyByZWdpc3RybyBxdWUgZGVzZWphIHNlciBhbHRlcmFkby4gRGV2ZSBzZXIgdXRpbGl6YWRvIGVtIGNhc29zIGVtIHF1ZSBvIGlkIGZvaSBhbHRlcmFkby5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZShzY2hlbWE6IFBvU3luY1NjaGVtYSwgcmVjb3JkOiBvYmplY3QsIHJlY29yZElkPzogYW55KTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICBjb25zdCBpZCA9IFBvU2NoZW1hVXRpbC5nZXRSZWNvcmRJZChyZWNvcmQsIHNjaGVtYSk7XG5cbiAgICBpZiAocmVjb3JkSWQpIHtcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMudXBkYXRlUmVjb3JkSWQoc2NoZW1hLm5hbWUsIHJlY29yZCwgcmVjb3JkSWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNhdmUoc2NoZW1hLCByZWNvcmQsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHVhbGl6YSB0b2RvcyBvcyByZWdpc3Ryb3MgZGUgdW0gKnNjaGVtYSouXG4gICAqXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIHJlZmVyZW50ZSBhb3MgcmVnaXN0cm9zIHF1ZSBzZXLDo28gYWx0ZXJhZG9zLlxuICAgKiBAcGFyYW0ge0FycmF5PG9iamVjdD59IHJlY29yZHMgTGlzdGEgZGUgcmVnaXN0cm9zIHF1ZSBzZXLDo28gYWx0ZXJhZG9zLlxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQWxsKHNjaGVtYTogUG9TeW5jU2NoZW1hLCByZWNvcmRzOiBBcnJheTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGUoc2NoZW1hLCByZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkID0gZmFsc2UpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5wb1N0b3JhZ2UuZ2V0KFBvU2NoZW1hU2VydmljZS5nZXRSZWNvcmRLZXkoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIGlzTG9jYWxSZWNvcmQpKSkgfHwge307XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmUoc2NoZW1hOiBQb1N5bmNTY2hlbWEsIHJlY29yZDogb2JqZWN0LCByZWNvcmRJZDogYW55KSB7XG4gICAgY29uc3QgeyBzZXJ2ZXJSZWNvcmQsIGxvY2FsUmVjb3JkIH0gPSBQb1NjaGVtYVV0aWwuc2VwYXJhdGVTY2hlbWFGaWVsZHMoc2NoZW1hLCByZWNvcmQpO1xuICAgIGNvbnN0IHJlY29yZEtleSA9IFBvU2NoZW1hU2VydmljZS5nZXRSZWNvcmRLZXkoc2NoZW1hLm5hbWUsIHJlY29yZElkKTtcblxuICAgIGF3YWl0IHRoaXMucG9TdG9yYWdlLnNldChyZWNvcmRLZXksIHNlcnZlclJlY29yZCk7XG4gICAgYXdhaXQgdGhpcy5zYXZlTG9jYWxGaWVsZHMoc2NoZW1hLm5hbWUsIGxvY2FsUmVjb3JkLCByZWNvcmRJZCk7XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlTG9jYWxGaWVsZHMoc2NoZW1hTmFtZTogc3RyaW5nLCBsb2NhbEZpZWxkczogb2JqZWN0LCByZWNvcmRJZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRhaW5zTG9jYWxGaWVsZHMgPSBPYmplY3Qua2V5cyhsb2NhbEZpZWxkcykubGVuZ3RoO1xuXG4gICAgaWYgKGNvbnRhaW5zTG9jYWxGaWVsZHMpIHtcbiAgICAgIGNvbnN0IGxvY2FsUmVjb3JkS2V5ID0gUG9TY2hlbWFTZXJ2aWNlLmdldFJlY29yZEtleShzY2hlbWFOYW1lLCByZWNvcmRJZCwgdHJ1ZSk7XG4gICAgICBhd2FpdCB0aGlzLnBvU3RvcmFnZS5zZXQobG9jYWxSZWNvcmRLZXksIGxvY2FsRmllbGRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJlY29yZElkKHNjaGVtYU5hbWUsIHJlY29yZCwgcmVjb3JkSWQpIHtcbiAgICBjb25zdCBpc0xvY2FsUmVjb3JkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvY2FsUmVjb3JkID0gYXdhaXQgdGhpcy5nZXRSZWNvcmQoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIGlzTG9jYWxSZWNvcmQpO1xuICAgIGF3YWl0IHRoaXMucmVtb3ZlKHNjaGVtYU5hbWUsIHJlY29yZElkKTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJlY29yZCwgbG9jYWxSZWNvcmQpO1xuICB9XG59XG4iXX0=
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { PoStorageService } from '@po-ui/ng-storage';
4
+ import { PoSchemaDefinitionService } from './po-schema-definition/po-schema-definition.service';
5
+ import { PoSchemaUtil } from './po-schema-util/po-schema-util.model';
6
+ /**
7
+ * @docsPrivate
8
+ *
9
+ * @description
10
+ *
11
+ * Serviço que realiza as operações nos `schemas`.
12
+ */
13
+ export class PoSchemaService {
14
+ constructor(poSchemaDefinitionService, poStorage) {
15
+ this.poSchemaDefinitionService = poSchemaDefinitionService;
16
+ this.poStorage = poStorage;
17
+ }
18
+ /**
19
+ * Retorna o id a partir de uma chave de um *schema*.
20
+ *
21
+ * @param {string} schemaKey Chave do *schema* em que será realizada a busca do id.
22
+ */
23
+ static getIdByRecordKey(schemaKey) {
24
+ return schemaKey.split(':')[1];
25
+ }
26
+ /**
27
+ * Retorna a chave do *schema* informado.
28
+ *
29
+ * @param {string} schemaName Nome do *schema*.
30
+ * @param {any} recordId Id do registro.
31
+ * @param {boolean} isLocalKey Indica se é uma chave local.
32
+ */
33
+ static getRecordKey(schemaName, recordId, isLocalKey = false) {
34
+ return isLocalKey ? `${schemaName}_local:${recordId}` : `${schemaName}:${recordId}`;
35
+ }
36
+ /**
37
+ * Verifica se o dado informado é uma chave de um *schema*.
38
+ *
39
+ * @param {string} data Dado que será verificado se é uma chave de um *schema*.
40
+ * @param {string} schemaName Nome do *schema*.
41
+ */
42
+ static isSchemaKey(data, schemaName) {
43
+ return data ? data.startsWith(`${schemaName}:`) : false;
44
+ }
45
+ /**
46
+ * Cria um novo registro para o *schema* informado.
47
+ *
48
+ * @param {PoSyncSchema} schema **Schema* em que será criado o registro.
49
+ * @param {object} newRecord Registro que será criado.
50
+ */
51
+ create(schema, newRecord) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const id = PoSchemaUtil.getRecordId(newRecord, schema);
54
+ return this.save(schema, newRecord, id);
55
+ });
56
+ }
57
+ /**
58
+ * Destrói as chaves do *storage* que contém os registros dos *schemas*.
59
+ *
60
+ * @returns {Promise<void>} Promessa que é resolvida quando as chaves referentes aos *schemas* forem destruídas.
61
+ */
62
+ destroySchemasRecords() {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const schemas = yield this.poSchemaDefinitionService.getAll();
65
+ const storageKeys = yield this.poStorage.keys();
66
+ for (const key of storageKeys) {
67
+ const schemaKey = schemas.find(schema => PoSchemaService.isSchemaKey(key, schema.name));
68
+ if (schemaKey) {
69
+ const id = PoSchemaService.getIdByRecordKey(key);
70
+ yield this.remove(schemaKey.name, id);
71
+ }
72
+ }
73
+ });
74
+ }
75
+ /**
76
+ * Retorna o registro referente ao *schema* informado.
77
+ *
78
+ * @param {string} schemaName Nome do *schema*.
79
+ * @param {any} recordId Id do registro.
80
+ */
81
+ get(schemaName, recordId) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const isLocalRecord = true;
84
+ const localRecord = yield this.getRecord(schemaName, recordId, isLocalRecord);
85
+ const record = yield this.getRecord(schemaName, recordId);
86
+ return Object.assign(record, localRecord);
87
+ });
88
+ }
89
+ /**
90
+ * Retorna todos os registros referente ao *schema* informado.
91
+ *
92
+ * @param {string} schemaName Nome do *schema*.
93
+ */
94
+ getAll(schemaName) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const storageKeys = yield this.poStorage.keys();
97
+ const schemaRecords = [];
98
+ for (const key of storageKeys) {
99
+ if (PoSchemaService.isSchemaKey(key, schemaName)) {
100
+ const id = PoSchemaService.getIdByRecordKey(key);
101
+ schemaRecords.push(yield this.get(schemaName, id));
102
+ }
103
+ }
104
+ return schemaRecords;
105
+ });
106
+ }
107
+ /**
108
+ * Aguarda a liberação do recurso limitado, posteriormente o envolve em um comportamento
109
+ * de bloqueio e desbloqueio.
110
+ *
111
+ * @param {Function} limitedResource Função que será envolvida no comportamento de bloqueio e desbloqueio.
112
+ */
113
+ limitedCallWrap(limitedResource) {
114
+ return this.poStorage.limitedCallWrap(limitedResource);
115
+ }
116
+ /**
117
+ * Remove um registro de um *schema* informado.
118
+ *
119
+ * @param {string} schemaName Nome do *schema*.
120
+ * @param {any} recordId Id do registro.
121
+ */
122
+ remove(schemaName, recordId) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const recordKey = PoSchemaService.getRecordKey(schemaName, recordId);
125
+ const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
126
+ yield this.poStorage.remove(recordKey);
127
+ yield this.poStorage.remove(localRecordKey);
128
+ });
129
+ }
130
+ /**
131
+ * Atualiza um registro de um *schema* informado.
132
+ *
133
+ * @param {PoSyncSchema} schema **Schema* referente ao registro que será alterado.
134
+ * @param {object} record Registro que será atualizado.
135
+ * @param {any} recordId Id do registro que deseja ser alterado. Deve ser utilizado em casos em que o id foi alterado.
136
+ */
137
+ update(schema, record, recordId) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const id = PoSchemaUtil.getRecordId(record, schema);
140
+ if (recordId) {
141
+ record = yield this.updateRecordId(schema.name, record, recordId);
142
+ }
143
+ return this.save(schema, record, id);
144
+ });
145
+ }
146
+ /**
147
+ * Atualiza todos os registros de um *schema*.
148
+ *
149
+ * @param {PoSyncSchema} schema **Schema* referente aos registros que serão alterados.
150
+ * @param {Array<object>} records Lista de registros que serão alterados.
151
+ */
152
+ updateAll(schema, records) {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ for (const record of records) {
155
+ yield this.update(schema, record);
156
+ }
157
+ });
158
+ }
159
+ getRecord(schemaName, recordId, isLocalRecord = false) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ return (yield this.poStorage.get(PoSchemaService.getRecordKey(schemaName, recordId, isLocalRecord))) || {};
162
+ });
163
+ }
164
+ save(schema, record, recordId) {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ const { serverRecord, localRecord } = PoSchemaUtil.separateSchemaFields(schema, record);
167
+ const recordKey = PoSchemaService.getRecordKey(schema.name, recordId);
168
+ yield this.poStorage.set(recordKey, serverRecord);
169
+ yield this.saveLocalFields(schema.name, localRecord, recordId);
170
+ return record;
171
+ });
172
+ }
173
+ saveLocalFields(schemaName, localFields, recordId) {
174
+ return __awaiter(this, void 0, void 0, function* () {
175
+ const containsLocalFields = Object.keys(localFields).length;
176
+ if (containsLocalFields) {
177
+ const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
178
+ yield this.poStorage.set(localRecordKey, localFields);
179
+ }
180
+ });
181
+ }
182
+ updateRecordId(schemaName, record, recordId) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ const isLocalRecord = true;
185
+ const localRecord = yield this.getRecord(schemaName, recordId, isLocalRecord);
186
+ yield this.remove(schemaName, recordId);
187
+ return Object.assign(record, localRecord);
188
+ });
189
+ }
190
+ }
191
+ PoSchemaService.decorators = [
192
+ { type: Injectable }
193
+ ];
194
+ PoSchemaService.ctorParameters = () => [
195
+ { type: PoSchemaDefinitionService },
196
+ { type: PoStorageService }
197
+ ];
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdyRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQix5QkFBb0QsRUFBVSxTQUEyQjtRQUF6Riw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRWpIOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBaUI7UUFDL0MsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQWtCLEVBQUUsUUFBYSxFQUFFLGFBQXNCLEtBQUs7UUFDeEYsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVksRUFBRSxVQUFrQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVB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LENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFYSxlQUFlLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFFBQVE7O1lBQzdFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFNUQsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUM7S0FBQTtJQUVhLGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVE7O1lBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztZQUUzQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM5RSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXhDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsQ0FBQztLQUFBOzs7WUFwTEYsVUFBVTs7O1lBWEYseUJBQXlCO1lBRnpCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBvU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAcG8tdWkvbmctc3RvcmFnZSc7XHJcblxyXG5pbXBvcnQgeyBQb1NjaGVtYURlZmluaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wby1zY2hlbWEtZGVmaW5pdGlvbi9wby1zY2hlbWEtZGVmaW5pdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9TY2hlbWFVdGlsIH0gZnJvbSAnLi9wby1zY2hlbWEtdXRpbC9wby1zY2hlbWEtdXRpbC5tb2RlbCc7XHJcbmltcG9ydCB7IFBvU3luY1NjaGVtYSB9IGZyb20gJy4uL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzUHJpdmF0ZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogU2VydmnDp28gcXVlIHJlYWxpemEgYXMgb3BlcmHDp8O1ZXMgbm9zIGBzY2hlbWFzYC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFBvU2NoZW1hU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb1NjaGVtYURlZmluaXRpb25TZXJ2aWNlOiBQb1NjaGVtYURlZmluaXRpb25TZXJ2aWNlLCBwcml2YXRlIHBvU3RvcmFnZTogUG9TdG9yYWdlU2VydmljZSkge31cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBvIGlkIGEgcGFydGlyIGRlIHVtYSBjaGF2ZSBkZSB1bSAqc2NoZW1hKi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFLZXkgQ2hhdmUgZG8gKnNjaGVtYSogZW0gcXVlIHNlcsOhIHJlYWxpemFkYSBhIGJ1c2NhIGRvIGlkLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGdldElkQnlSZWNvcmRLZXkoc2NoZW1hS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHNjaGVtYUtleS5zcGxpdCgnOicpWzFdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBhIGNoYXZlIGRvICpzY2hlbWEqIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXHJcbiAgICogQHBhcmFtIHthbnl9IHJlY29yZElkIElkIGRvIHJlZ2lzdHJvLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbEtleSBJbmRpY2Egc2Ugw6kgdW1hIGNoYXZlIGxvY2FsLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGdldFJlY29yZEtleShzY2hlbWFOYW1lOiBzdHJpbmcsIHJlY29yZElkOiBhbnksIGlzTG9jYWxLZXk6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXNMb2NhbEtleSA/IGAke3NjaGVtYU5hbWV9X2xvY2FsOiR7cmVjb3JkSWR9YCA6IGAke3NjaGVtYU5hbWV9OiR7cmVjb3JkSWR9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNlIG8gZGFkbyBpbmZvcm1hZG8gw6kgdW1hIGNoYXZlIGRlIHVtICpzY2hlbWEqLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgRGFkbyBxdWUgc2Vyw6EgdmVyaWZpY2FkbyBzZSDDqSB1bWEgY2hhdmUgZGUgdW0gKnNjaGVtYSouXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYU5hbWUgTm9tZSBkbyAqc2NoZW1hKi5cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBpc1NjaGVtYUtleShkYXRhOiBzdHJpbmcsIHNjaGVtYU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRhdGEgPyBkYXRhLnN0YXJ0c1dpdGgoYCR7c2NoZW1hTmFtZX06YCkgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyaWEgdW0gbm92byByZWdpc3RybyBwYXJhIG8gKnNjaGVtYSogaW5mb3JtYWRvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQb1N5bmNTY2hlbWF9IHNjaGVtYSAqKlNjaGVtYSogZW0gcXVlIHNlcsOhIGNyaWFkbyBvIHJlZ2lzdHJvLlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdSZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIGNyaWFkby5cclxuICAgKi9cclxuICBhc3luYyBjcmVhdGUoc2NoZW1hOiBQb1N5bmNTY2hlbWEsIG5ld1JlY29yZDogb2JqZWN0KTogUHJvbWlzZTxvYmplY3Q+IHtcclxuICAgIGNvbnN0IGlkID0gUG9TY2hlbWFVdGlsLmdldFJlY29yZElkKG5ld1JlY29yZCwgc2NoZW1hKTtcclxuICAgIHJldHVybiB0aGlzLnNhdmUoc2NoZW1hLCBuZXdSZWNvcmQsIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryw7NpIGFzIGNoYXZlcyBkbyAqc3RvcmFnZSogcXVlIGNvbnTDqW0gb3MgcmVnaXN0cm9zIGRvcyAqc2NoZW1hcyouXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYXMgY2hhdmVzIHJlZmVyZW50ZXMgYW9zICpzY2hlbWFzKiBmb3JlbSBkZXN0cnXDrWRhcy5cclxuICAgKi9cclxuICBhc3luYyBkZXN0cm95U2NoZW1hc1JlY29yZHMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzY2hlbWFzID0gYXdhaXQgdGhpcy5wb1NjaGVtYURlZmluaXRpb25TZXJ2aWNlLmdldEFsbCgpO1xyXG4gICAgY29uc3Qgc3RvcmFnZUtleXMgPSBhd2FpdCB0aGlzLnBvU3RvcmFnZS5rZXlzKCk7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc3RvcmFnZUtleXMpIHtcclxuICAgICAgY29uc3Qgc2NoZW1hS2V5ID0gc2NoZW1hcy5maW5kKHNjaGVtYSA9PiBQb1NjaGVtYVNlcnZpY2UuaXNTY2hlbWFLZXkoa2V5LCBzY2hlbWEubmFtZSkpO1xyXG5cclxuICAgICAgaWYgKHNjaGVtYUtleSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gUG9TY2hlbWFTZXJ2aWNlLmdldElkQnlSZWNvcmRLZXkoa2V5KTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZShzY2hlbWFLZXkubmFtZSwgaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIG8gcmVnaXN0cm8gcmVmZXJlbnRlIGFvICpzY2hlbWEqIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXHJcbiAgICogQHBhcmFtIHthbnl9IHJlY29yZElkIElkIGRvIHJlZ2lzdHJvLlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldChzY2hlbWFOYW1lOiBzdHJpbmcsIHJlY29yZElkOiBhbnkpOiBQcm9taXNlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgaXNMb2NhbFJlY29yZCA9IHRydWU7XHJcbiAgICBjb25zdCBsb2NhbFJlY29yZCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkKTtcclxuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkKTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZWNvcmQsIGxvY2FsUmVjb3JkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgdG9kb3Mgb3MgcmVnaXN0cm9zIHJlZmVyZW50ZSBhbyAqc2NoZW1hKiBpbmZvcm1hZG8uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEFsbChzY2hlbWFOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PG9iamVjdD4+IHtcclxuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gYXdhaXQgdGhpcy5wb1N0b3JhZ2Uua2V5cygpO1xyXG4gICAgY29uc3Qgc2NoZW1hUmVjb3JkcyA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIHN0b3JhZ2VLZXlzKSB7XHJcbiAgICAgIGlmIChQb1NjaGVtYVNlcnZpY2UuaXNTY2hlbWFLZXkoa2V5LCBzY2hlbWFOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gUG9TY2hlbWFTZXJ2aWNlLmdldElkQnlSZWNvcmRLZXkoa2V5KTtcclxuICAgICAgICBzY2hlbWFSZWNvcmRzLnB1c2goYXdhaXQgdGhpcy5nZXQoc2NoZW1hTmFtZSwgaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzY2hlbWFSZWNvcmRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWd1YXJkYSBhIGxpYmVyYcOnw6NvIGRvIHJlY3Vyc28gbGltaXRhZG8sIHBvc3Rlcmlvcm1lbnRlIG8gZW52b2x2ZSBlbSB1bSBjb21wb3J0YW1lbnRvXHJcbiAgICogZGUgYmxvcXVlaW8gZSBkZXNibG9xdWVpby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpbWl0ZWRSZXNvdXJjZSBGdW7Dp8OjbyBxdWUgc2Vyw6EgZW52b2x2aWRhIG5vIGNvbXBvcnRhbWVudG8gZGUgYmxvcXVlaW8gZSBkZXNibG9xdWVpby5cclxuICAgKi9cclxuICBsaW1pdGVkQ2FsbFdyYXAobGltaXRlZFJlc291cmNlOiBGdW5jdGlvbik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wb1N0b3JhZ2UubGltaXRlZENhbGxXcmFwKGxpbWl0ZWRSZXNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdW0gcmVnaXN0cm8gZGUgdW0gKnNjaGVtYSogaW5mb3JtYWRvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYU5hbWUgTm9tZSBkbyAqc2NoZW1hKi5cclxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXHJcbiAgICovXHJcbiAgYXN5bmMgcmVtb3ZlKHNjaGVtYU5hbWU6IHN0cmluZywgcmVjb3JkSWQ6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCByZWNvcmRLZXkgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWUsIHJlY29yZElkKTtcclxuICAgIGNvbnN0IGxvY2FsUmVjb3JkS2V5ID0gUG9TY2hlbWFTZXJ2aWNlLmdldFJlY29yZEtleShzY2hlbWFOYW1lLCByZWNvcmRJZCwgdHJ1ZSk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5wb1N0b3JhZ2UucmVtb3ZlKHJlY29yZEtleSk7XHJcbiAgICBhd2FpdCB0aGlzLnBvU3RvcmFnZS5yZW1vdmUobG9jYWxSZWNvcmRLZXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXR1YWxpemEgdW0gcmVnaXN0cm8gZGUgdW0gKnNjaGVtYSogaW5mb3JtYWRvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQb1N5bmNTY2hlbWF9IHNjaGVtYSAqKlNjaGVtYSogcmVmZXJlbnRlIGFvIHJlZ2lzdHJvIHF1ZSBzZXLDoSBhbHRlcmFkby5cclxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVjb3JkIFJlZ2lzdHJvIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxyXG4gICAqIEBwYXJhbSB7YW55fSByZWNvcmRJZCBJZCBkbyByZWdpc3RybyBxdWUgZGVzZWphIHNlciBhbHRlcmFkby4gRGV2ZSBzZXIgdXRpbGl6YWRvIGVtIGNhc29zIGVtIHF1ZSBvIGlkIGZvaSBhbHRlcmFkby5cclxuICAgKi9cclxuICBhc3luYyB1cGRhdGUoc2NoZW1hOiBQb1N5bmNTY2hlbWEsIHJlY29yZDogb2JqZWN0LCByZWNvcmRJZD86IGFueSk6IFByb21pc2U8b2JqZWN0PiB7XHJcbiAgICBjb25zdCBpZCA9IFBvU2NoZW1hVXRpbC5nZXRSZWNvcmRJZChyZWNvcmQsIHNjaGVtYSk7XHJcblxyXG4gICAgaWYgKHJlY29yZElkKSB7XHJcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMudXBkYXRlUmVjb3JkSWQoc2NoZW1hLm5hbWUsIHJlY29yZCwgcmVjb3JkSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnNhdmUoc2NoZW1hLCByZWNvcmQsIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIHRvZG9zIG9zIHJlZ2lzdHJvcyBkZSB1bSAqc2NoZW1hKi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIHJlZmVyZW50ZSBhb3MgcmVnaXN0cm9zIHF1ZSBzZXLDo28gYWx0ZXJhZG9zLlxyXG4gICAqIEBwYXJhbSB7QXJyYXk8b2JqZWN0Pn0gcmVjb3JkcyBMaXN0YSBkZSByZWdpc3Ryb3MgcXVlIHNlcsOjbyBhbHRlcmFkb3MuXHJcbiAgICovXHJcbiAgYXN5bmMgdXBkYXRlQWxsKHNjaGVtYTogUG9TeW5jU2NoZW1hLCByZWNvcmRzOiBBcnJheTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlKHNjaGVtYSwgcmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkID0gZmFsc2UpOiBQcm9taXNlPG9iamVjdD4ge1xyXG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnBvU3RvcmFnZS5nZXQoUG9TY2hlbWFTZXJ2aWNlLmdldFJlY29yZEtleShzY2hlbWFOYW1lLCByZWNvcmRJZCwgaXNMb2NhbFJlY29yZCkpKSB8fCB7fTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2F2ZShzY2hlbWE6IFBvU3luY1NjaGVtYSwgcmVjb3JkOiBvYmplY3QsIHJlY29yZElkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VydmVyUmVjb3JkLCBsb2NhbFJlY29yZCB9ID0gUG9TY2hlbWFVdGlsLnNlcGFyYXRlU2NoZW1hRmllbGRzKHNjaGVtYSwgcmVjb3JkKTtcclxuICAgIGNvbnN0IHJlY29yZEtleSA9IFBvU2NoZW1hU2VydmljZS5nZXRSZWNvcmRLZXkoc2NoZW1hLm5hbWUsIHJlY29yZElkKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnBvU3RvcmFnZS5zZXQocmVjb3JkS2V5LCBzZXJ2ZXJSZWNvcmQpO1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlTG9jYWxGaWVsZHMoc2NoZW1hLm5hbWUsIGxvY2FsUmVjb3JkLCByZWNvcmRJZCk7XHJcblxyXG4gICAgcmV0dXJuIHJlY29yZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2F2ZUxvY2FsRmllbGRzKHNjaGVtYU5hbWU6IHN0cmluZywgbG9jYWxGaWVsZHM6IG9iamVjdCwgcmVjb3JkSWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGNvbnRhaW5zTG9jYWxGaWVsZHMgPSBPYmplY3Qua2V5cyhsb2NhbEZpZWxkcykubGVuZ3RoO1xyXG5cclxuICAgIGlmIChjb250YWluc0xvY2FsRmllbGRzKSB7XHJcbiAgICAgIGNvbnN0IGxvY2FsUmVjb3JkS2V5ID0gUG9TY2hlbWFTZXJ2aWNlLmdldFJlY29yZEtleShzY2hlbWFOYW1lLCByZWNvcmRJZCwgdHJ1ZSk7XHJcbiAgICAgIGF3YWl0IHRoaXMucG9TdG9yYWdlLnNldChsb2NhbFJlY29yZEtleSwgbG9jYWxGaWVsZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVSZWNvcmRJZChzY2hlbWFOYW1lLCByZWNvcmQsIHJlY29yZElkKSB7XHJcbiAgICBjb25zdCBpc0xvY2FsUmVjb3JkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBsb2NhbFJlY29yZCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkKHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkKTtcclxuICAgIGF3YWl0IHRoaXMucmVtb3ZlKHNjaGVtYU5hbWUsIHJlY29yZElkKTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZWNvcmQsIGxvY2FsUmVjb3JkKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL3NlcnZpY2VzL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvRGF0YVRyYW5zZm9ybSB9IGZyb20gJy4vLi4vLi4vLi4vbW9kZWxzL3BvLWRhdGEtdHJhbnNmb3JtLm1vZGVsJztcbmltcG9ydCB7IFBvTmV0d29ya1R5cGUgfSBmcm9tICcuLy4uLy4uLy4uL21vZGVscy9wby1uZXR3b3JrLXR5cGUuZW51bSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb1N5bmNTZXJ2aWNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIHBhcmEgYSBkZWZpbmnDp8OjbyBkYXMgY29uZmlndXJhw6fDtWVzIGRvIHNpbmNyb25pc21vLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9TeW5jQ29uZmlnIHtcbiAgLyoqXG4gICAqIENsYXNzZSB1c2FkYSBwYXJhIGEgdHJhc2Zvcm1hw6fDo28gZG9zIGRhZG9zIG5hcyByZXF1aXNpw6fDtWVzLlxuICAgKlxuICAgKiA+IFZlamEgbWFpcyBkZXRhbGhlcyBlbSBbRnVuZGFtZW50b3MgZG8gUE8gU3luYyAtIEFkYXB0YW5kbyBhIHJlc3Bvc3RhIGRhIEFQSSBwYXJhIG8gcGFkcsOjbyBkbyBQTyBVSV0oL2d1aWRlcy9zeW5jLWZ1bmRhbWVudGFscykuXG4gICAqL1xuICBkYXRhVHJhbnNmb3JtPzogUG9EYXRhVHJhbnNmb3JtO1xuXG4gIC8qKlxuICAgKiBUZW1wbyBlbSBzZWd1bmRvcyBkbyBzaWNyb25pc21vIHBlcmnDs2RpY28uXG4gICAqIENhc28gbsOjbyBzZWphIGRlZmluaWRvLCBvIHNpbmNyb25pc21vIHBlcmnDs2RpY28gZXN0YXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqL1xuICBwZXJpb2Q/OiBudW1iZXI7XG5cbiAgLyoqIFRpcG9zIGRlIGNvbmV4w7VlcyBwZXJtaXRpZGFzIHBhcmEgbyBzaW5jcm9uaXNtby4gKi9cbiAgdHlwZTogUG9OZXR3b3JrVHlwZSB8IEFycmF5PFBvTmV0d29ya1R5cGU+O1xufVxuIl19
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL3NlcnZpY2VzL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvRGF0YVRyYW5zZm9ybSB9IGZyb20gJy4vLi4vLi4vLi4vbW9kZWxzL3BvLWRhdGEtdHJhbnNmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgUG9OZXR3b3JrVHlwZSB9IGZyb20gJy4vLi4vLi4vLi4vbW9kZWxzL3BvLW5ldHdvcmstdHlwZS5lbnVtJztcclxuXHJcbi8qKlxyXG4gKiBAdXNlZEJ5IFBvU3luY1NlcnZpY2VcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBwYXJhIGEgZGVmaW5pw6fDo28gZGFzIGNvbmZpZ3VyYcOnw7VlcyBkbyBzaW5jcm9uaXNtby5cclxuICovXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY0NvbmZpZyB7XHJcbiAgLyoqXHJcbiAgICogQ2xhc3NlIHVzYWRhIHBhcmEgYSB0cmFzZm9ybWHDp8OjbyBkb3MgZGFkb3MgbmFzIHJlcXVpc2nDp8O1ZXMuXHJcbiAgICpcclxuICAgKiA+IFZlamEgbWFpcyBkZXRhbGhlcyBlbSBbRnVuZGFtZW50b3MgZG8gUE8gU3luYyAtIEFkYXB0YW5kbyBhIHJlc3Bvc3RhIGRhIEFQSSBwYXJhIG8gcGFkcsOjbyBkbyBQTyBVSV0oL2d1aWRlcy9zeW5jLWZ1bmRhbWVudGFscykuXHJcbiAgICovXHJcbiAgZGF0YVRyYW5zZm9ybT86IFBvRGF0YVRyYW5zZm9ybTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGVtcG8gZW0gc2VndW5kb3MgZG8gc2ljcm9uaXNtbyBwZXJpw7NkaWNvLlxyXG4gICAqIENhc28gbsOjbyBzZWphIGRlZmluaWRvLCBvIHNpbmNyb25pc21vIHBlcmnDs2RpY28gZXN0YXLDoSBkZXNhYmlsaXRhZG8uXHJcbiAgICovXHJcbiAgcGVyaW9kPzogbnVtYmVyO1xyXG5cclxuICAvKiogVGlwb3MgZGUgY29uZXjDtWVzIHBlcm1pdGlkYXMgcGFyYSBvIHNpbmNyb25pc21vLiAqL1xyXG4gIHR5cGU6IFBvTmV0d29ya1R5cGUgfCBBcnJheTxQb05ldHdvcmtUeXBlPjtcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9zZXJ2aWNlcy9wby1zeW5jL2ludGVyZmFjZXMvcG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdXNlZEJ5IFBvU3luY1NlcnZpY2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBJbnRlcmZhY2UgcXVlIGlyw6EgbWFwZWFyIGFzIGNvbmZpZ3VyYcOnw7VlcyBkb3MgY2FtcG9zIGRvIGBQb1N5bmNTY2hlbWFgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY0ZpZWxkT3B0aW9ucyB7XG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgaW5mb3JtYSBvIG5vbWUgZG8gY2FtcG8uICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogUHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgc2UgbyBjYW1wbyBzZXLDoSBhcGVuYXMgcGFyYSBhcm1hemVuYW1lbnRvIGxvY2FsXG4gICAqIG91IHNlIGRldmUgc2VyIGVudmlhZG8gcGFyYSBvIHNlcnZpZG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWw/OiBib29sZWFuO1xufVxuIl19
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9zZXJ2aWNlcy9wby1zeW5jL2ludGVyZmFjZXMvcG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEB1c2VkQnkgUG9TeW5jU2VydmljZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogSW50ZXJmYWNlIHF1ZSBpcsOhIG1hcGVhciBhcyBjb25maWd1cmHDp8O1ZXMgZG9zIGNhbXBvcyBkbyBgUG9TeW5jU2NoZW1hYC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9TeW5jRmllbGRPcHRpb25zIHtcclxuICAvKiogUHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgbyBub21lIGRvIGNhbXBvLiAqL1xyXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSBpbmZvcm1hIHNlIG8gY2FtcG8gc2Vyw6EgYXBlbmFzIHBhcmEgYXJtYXplbmFtZW50byBsb2NhbFxyXG4gICAqIG91IHNlIGRldmUgc2VyIGVudmlhZG8gcGFyYSBvIHNlcnZpZG9yLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGxvY2FsPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtcmVzcG9uc2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBQb0V2ZW50U291cmNpbmdFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3BvLWV2ZW50LXNvdXJjaW5nLWVycm9yLXJlc3BvbnNlLm1vZGVsJztcbmltcG9ydCB7IFBvSHR0cFJlcXVlc3REYXRhIH0gZnJvbSAnLi4vLi4vcG8taHR0cC1jbGllbnQvaW50ZXJmYWNlcy9wby1odHRwLXJlcXVlc3QtZGF0YS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEB1c2VkQnkgUG9TeW5jU2VydmljZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIERlZmluZSBhIHJlc3Bvc3RhIGRvcyBldmVudG9zIGVudmlhZG9zIGFvIHNlcnZpZG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY1Jlc3BvbnNlIHtcbiAgLyoqIElkZW50aWZpY2Fkb3IgZG8gZXZlbnRvIG5hIGZpbGEuICovXG4gIGlkOiBudW1iZXI7XG5cbiAgLyoqIElkZW50aWZpY2Fkb3IgY3VzdG9taXphZG8gZG8gcmVnaXN0cm8uICovXG4gIGN1c3RvbVJlcXVlc3RJZD86IHN0cmluZztcblxuICAvKiogRGFkb3MgZGEgcmVxdWlzacOnw6NvLiAqL1xuICByZXF1ZXN0OiBQb0h0dHBSZXF1ZXN0RGF0YTtcblxuICAvKiogUmVzcG9zdGEgcmV0b3JuYWRhIGFww7NzIGEgdGVudGF0aXZhIGRlIGVudmlvIHBhcmEgbyBzZXJ2aWRvci4gKi9cbiAgcmVzcG9uc2U6IEh0dHBSZXNwb25zZTxPYmplY3Q+IHwgSHR0cEVycm9yUmVzcG9uc2UgfCBQb0V2ZW50U291cmNpbmdFcnJvclJlc3BvbnNlO1xufVxuIl19
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtcmVzcG9uc2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgUG9FdmVudFNvdXJjaW5nRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9wby1ldmVudC1zb3VyY2luZy1lcnJvci1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IFBvSHR0cFJlcXVlc3REYXRhIH0gZnJvbSAnLi4vLi4vcG8taHR0cC1jbGllbnQvaW50ZXJmYWNlcy9wby1odHRwLXJlcXVlc3QtZGF0YS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEB1c2VkQnkgUG9TeW5jU2VydmljZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogRGVmaW5lIGEgcmVzcG9zdGEgZG9zIGV2ZW50b3MgZW52aWFkb3MgYW8gc2Vydmlkb3IuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY1Jlc3BvbnNlIHtcclxuICAvKiogSWRlbnRpZmljYWRvciBkbyBldmVudG8gbmEgZmlsYS4gKi9cclxuICBpZDogbnVtYmVyO1xyXG5cclxuICAvKiogSWRlbnRpZmljYWRvciBjdXN0b21pemFkbyBkbyByZWdpc3Ryby4gKi9cclxuICBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBEYWRvcyBkYSByZXF1aXNpw6fDo28uICovXHJcbiAgcmVxdWVzdDogUG9IdHRwUmVxdWVzdERhdGE7XHJcblxyXG4gIC8qKiBSZXNwb3N0YSByZXRvcm5hZGEgYXDDs3MgYSB0ZW50YXRpdmEgZGUgZW52aW8gcGFyYSBvIHNlcnZpZG9yLiAqL1xyXG4gIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8T2JqZWN0PiB8IEh0dHBFcnJvclJlc3BvbnNlIHwgUG9FdmVudFNvdXJjaW5nRXJyb3JSZXNwb25zZTtcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1zY2hlbWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL3NlcnZpY2VzL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvU3luY0ZpZWxkT3B0aW9ucyB9IGZyb20gJy4vcG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb1N5bmNTZXJ2aWNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIHF1ZSBpcsOhIG1hcGVhciBhcyBpbmZvcm1hw6fDtWVzIGRvcyByZWN1cnNvcywgcHJpbmNpcGFsbWVudGUgc3VhIG9yaWdlbSBlIGFzIGluZm9ybWHDp8O1ZXMgcXVlIHNlcsOjbyByZXRvcm5hZGFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY1NjaGVtYSB7XG4gIC8qKiBOb21lIGRhIHByb3ByaWVkYWRlIHF1ZSBpbmZvcm1hIGEgZGF0YSBkZSBjcmlhw6fDo28gZG8gcmVnaXN0cm8uICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdEZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRhIHByb3ByaWVkYWRlIHF1ZSBpbmZvcm1hIGEgZGF0YSBkZSBkZWxlw6fDo28uICovXG4gIHJlYWRvbmx5IGRlbGV0ZWRBdEZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRhIHByb3ByaWVkYWRlIHF1ZSBpbmZvcm1hIHNlIG8gcmVnaXN0cm8gZm9pIGV4Y2x1w61kby4gKi9cbiAgcmVhZG9ubHkgZGVsZXRlZEZpZWxkOiBzdHJpbmc7XG5cbiAgLyoqIEVuZGVyZcOnbyBkbyBlbmRwb2ludCBwYXJhIGV4Y2x1aXIgcmVnaXN0cm9zLiAqL1xuICByZWFkb25seSBkZWxldGVVcmxBcGk/OiBzdHJpbmc7XG5cbiAgLyoqIEVuZGVyZcOnbyBkbyBlbmRwb2ludCBxdWUgcHJvdmVyw6EgYXBlbmFzIGRhZG9zIGFsdGVyYWRvcyBubyBzZXJ2aWRvci4gKi9cbiAgcmVhZG9ubHkgZGlmZlVybEFwaTogc3RyaW5nO1xuXG4gIC8qKiBDYW1wb3MgcXVlIHNlcsOjbyByZXRvcm5hZG9zIHBlbGEgQVBJLiAqL1xuICByZWFkb25seSBmaWVsZHM6IEFycmF5PHN0cmluZyB8IFBvU3luY0ZpZWxkT3B0aW9ucz47XG5cbiAgLyoqIEVuZGVyZcOnbyBkbyBlbmRwb2ludCBxdWUgdXRpbGl6YSBvIG3DqXRvZG8gR0VUIHF1ZSBwcm92ZXLDoSBvcyBkYWRvcy4gKi9cbiAgcmVhZG9ubHkgZ2V0VXJsQXBpOiBzdHJpbmc7XG5cbiAgLyoqIE5vbWUgZGEgcHJvcHJpZWRhZGUgcmVmZXJlbnRlIGFvIGlkZW50aWZpY2Fkb3Igw7puaWNvIHBhcmEgb3MgaXRlbnMgZG8gKnNjaGVtYSouICovXG4gIHJlYWRvbmx5IGlkRmllbGQ6IHN0cmluZztcblxuICAvKiogSWRlbnRpZmnDp8OjbyBwYXJhIHJlcHJlc2VudGFyIG8gKnNjaGVtYSouICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogUXVhbnRpZGFkZSBkZSBpdGVucyBwb3IgcMOhZ2luYSBxdWUgc2Vyw6EgZW52aWFkbyBwZWxhIEFQSS4gKi9cbiAgcmVhZG9ubHkgcGFnZVNpemU6IG51bWJlcjtcblxuICAvKiogRW5kZXJlw6dvIGRvIGVuZHBvaW50IHF1ZSB1dGlsaXphIG8gbcOpdG9kbyBQVVQgcGFyYSBhdHVhbGl6YXIgcmVnaXN0cm9zLiAqL1xuICByZWFkb25seSBwYXRjaFVybEFwaT86IHN0cmluZztcblxuICAvKiogRW5kZXJlw6dvIGRvIGVuZHBvaW50IHF1ZSB1dGlsaXphIG8gbcOpdG9kbyBQT1NUIHBhcmEgaW5jbHVpciBvcyByZWdpc3Ryb3MuICovXG4gIHJlYWRvbmx5IHBvc3RVcmxBcGk/OiBzdHJpbmc7XG5cbiAgLyoqIE5vbWUgZGEgcHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgYSBkYXRhIGRlIGF0dWFsaXphw6fDo28gZG8gcmVnaXN0cm8uICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdEZpZWxkPzogc3RyaW5nO1xuXG4gIC8vIERhdGEvSG9yYSBkYSDDumx0aW1hIHZleiBxdWUgYSBzaW5jcm9uaWEgYWNvbnRlY2V1IHBhcmEgZXNzZSAqc2NoZW1hKi5cbiAgbGFzdFN5bmM/OiBzdHJpbmc7XG59XG4iXX0=
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy1zY2hlbWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL3NlcnZpY2VzL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvU3luY0ZpZWxkT3B0aW9ucyB9IGZyb20gJy4vcG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQHVzZWRCeSBQb1N5bmNTZXJ2aWNlXHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBJbnRlcmZhY2UgcXVlIGlyw6EgbWFwZWFyIGFzIGluZm9ybWHDp8O1ZXMgZG9zIHJlY3Vyc29zLCBwcmluY2lwYWxtZW50ZSBzdWEgb3JpZ2VtIGUgYXMgaW5mb3JtYcOnw7VlcyBxdWUgc2Vyw6NvIHJldG9ybmFkYXMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvU3luY1NjaGVtYSB7XHJcbiAgLyoqIE5vbWUgZGEgcHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgYSBkYXRhIGRlIGNyaWHDp8OjbyBkbyByZWdpc3Ryby4gKi9cclxuICByZWFkb25seSBjcmVhdGVkQXRGaWVsZD86IHN0cmluZztcclxuXHJcbiAgLyoqIE5vbWUgZGEgcHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgYSBkYXRhIGRlIGRlbGXDp8Ojby4gKi9cclxuICByZWFkb25seSBkZWxldGVkQXRGaWVsZD86IHN0cmluZztcclxuXHJcbiAgLyoqIE5vbWUgZGEgcHJvcHJpZWRhZGUgcXVlIGluZm9ybWEgc2UgbyByZWdpc3RybyBmb2kgZXhjbHXDrWRvLiAqL1xyXG4gIHJlYWRvbmx5IGRlbGV0ZWRGaWVsZDogc3RyaW5nO1xyXG5cclxuICAvKiogRW5kZXJlw6dvIGRvIGVuZHBvaW50IHBhcmEgZXhjbHVpciByZWdpc3Ryb3MuICovXHJcbiAgcmVhZG9ubHkgZGVsZXRlVXJsQXBpPzogc3RyaW5nO1xyXG5cclxuICAvKiogRW5kZXJlw6dvIGRvIGVuZHBvaW50IHF1ZSBwcm92ZXLDoSBhcGVuYXMgZGFkb3MgYWx0ZXJhZG9zIG5vIHNlcnZpZG9yLiAqL1xyXG4gIHJlYWRvbmx5IGRpZmZVcmxBcGk6IHN0cmluZztcclxuXHJcbiAgLyoqIENhbXBvcyBxdWUgc2Vyw6NvIHJldG9ybmFkb3MgcGVsYSBBUEkuICovXHJcbiAgcmVhZG9ubHkgZmllbGRzOiBBcnJheTxzdHJpbmcgfCBQb1N5bmNGaWVsZE9wdGlvbnM+O1xyXG5cclxuICAvKiogRW5kZXJlw6dvIGRvIGVuZHBvaW50IHF1ZSB1dGlsaXphIG8gbcOpdG9kbyBHRVQgcXVlIHByb3ZlcsOhIG9zIGRhZG9zLiAqL1xyXG4gIHJlYWRvbmx5IGdldFVybEFwaTogc3RyaW5nO1xyXG5cclxuICAvKiogTm9tZSBkYSBwcm9wcmllZGFkZSByZWZlcmVudGUgYW8gaWRlbnRpZmljYWRvciDDum5pY28gcGFyYSBvcyBpdGVucyBkbyAqc2NoZW1hKi4gKi9cclxuICByZWFkb25seSBpZEZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBJZGVudGlmacOnw6NvIHBhcmEgcmVwcmVzZW50YXIgbyAqc2NoZW1hKi4gKi9cclxuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBRdWFudGlkYWRlIGRlIGl0ZW5zIHBvciBww6FnaW5hIHF1ZSBzZXLDoSBlbnZpYWRvIHBlbGEgQVBJLiAqL1xyXG4gIHJlYWRvbmx5IHBhZ2VTaXplOiBudW1iZXI7XHJcblxyXG4gIC8qKiBFbmRlcmXDp28gZG8gZW5kcG9pbnQgcXVlIHV0aWxpemEgbyBtw6l0b2RvIFBVVCBwYXJhIGF0dWFsaXphciByZWdpc3Ryb3MuICovXHJcbiAgcmVhZG9ubHkgcGF0Y2hVcmxBcGk/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBFbmRlcmXDp28gZG8gZW5kcG9pbnQgcXVlIHV0aWxpemEgbyBtw6l0b2RvIFBPU1QgcGFyYSBpbmNsdWlyIG9zIHJlZ2lzdHJvcy4gKi9cclxuICByZWFkb25seSBwb3N0VXJsQXBpPzogc3RyaW5nO1xyXG5cclxuICAvKiogTm9tZSBkYSBwcm9wcmllZGFkZSBxdWUgaW5mb3JtYSBhIGRhdGEgZGUgYXR1YWxpemHDp8OjbyBkbyByZWdpc3Ryby4gKi9cclxuICByZWFkb25seSB1cGRhdGVkQXRGaWVsZD86IHN0cmluZztcclxuXHJcbiAgLy8gRGF0YS9Ib3JhIGRhIMO6bHRpbWEgdmV6IHF1ZSBhIHNpbmNyb25pYSBhY29udGVjZXUgcGFyYSBlc3NlICpzY2hlbWEqLlxyXG4gIGxhc3RTeW5jPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==