@po-ui/ng-sync 5.22.1 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
  2. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
  3. package/{esm2015/lib/models/po-data-message.model.js → esm2020/lib/models/po-data-message.model.mjs} +0 -0
  4. package/{esm2015/lib/models/po-data-transform.model.js → esm2020/lib/models/po-data-transform.model.mjs} +0 -0
  5. package/esm2020/lib/models/po-entity/po-entity.model.mjs +214 -0
  6. package/{esm2015/lib/models/po-event-sourcing-error-response.model.js → esm2020/lib/models/po-event-sourcing-error-response.model.mjs} +0 -0
  7. package/{esm2015/lib/models/po-network-status.model.js → esm2020/lib/models/po-network-status.model.mjs} +0 -0
  8. package/{esm2015/lib/models/po-network-type.enum.js → esm2020/lib/models/po-network-type.enum.mjs} +0 -0
  9. package/esm2020/lib/models/po-query-builder/po-query-builder.model.mjs +238 -0
  10. package/{esm2015/lib/models/po-request-type.enum.js → esm2020/lib/models/po-request-type.enum.mjs} +0 -0
  11. package/esm2020/lib/po-sync.module.mjs +45 -0
  12. package/{esm2015/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.js → esm2020/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.mjs} +0 -0
  13. package/{esm2015/lib/services/po-event-sourcing/index.js → esm2020/lib/services/po-event-sourcing/index.mjs} +0 -0
  14. package/{esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.js → esm2020/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.mjs} +0 -0
  15. package/{esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.js → esm2020/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.mjs} +0 -0
  16. package/esm2020/lib/services/po-event-sourcing/po-event-sourcing.service.mjs +372 -0
  17. package/{esm2015/lib/services/po-http-client/interfaces/po-http-header-option.interface.js → esm2020/lib/services/po-http-client/interfaces/po-http-header-option.interface.mjs} +0 -0
  18. package/{esm2015/lib/services/po-http-client/interfaces/po-http-request-data.interface.js → esm2020/lib/services/po-http-client/interfaces/po-http-request-data.interface.mjs} +0 -0
  19. package/{esm2015/lib/services/po-http-client/interfaces/po-response-api.interface.js → esm2020/lib/services/po-http-client/interfaces/po-response-api.interface.mjs} +0 -0
  20. package/esm2020/lib/services/po-http-client/po-http-client.service.mjs +148 -0
  21. package/{esm2015/lib/services/po-http-client/po-http-request-type.enum.js → esm2020/lib/services/po-http-client/po-http-request-type.enum.mjs} +0 -0
  22. package/esm2020/lib/services/po-network/po-network.service.mjs +58 -0
  23. package/{esm2015/lib/services/po-schema/index.js → esm2020/lib/services/po-schema/index.mjs} +0 -0
  24. package/esm2020/lib/services/po-schema/po-schema-definition/po-schema-definition.service.mjs +77 -0
  25. package/{esm2015/lib/services/po-schema/po-schema-util/po-schema-util.model.js → esm2020/lib/services/po-schema/po-schema-util/po-schema-util.model.mjs} +0 -0
  26. package/esm2020/lib/services/po-schema/po-schema.service.mjs +174 -0
  27. package/{esm2015/lib/services/po-sync/interfaces/po-sync-config.interface.js → esm2020/lib/services/po-sync/interfaces/po-sync-config.interface.mjs} +0 -0
  28. package/{esm2015/lib/services/po-sync/interfaces/po-sync-field-options.interface.js → esm2020/lib/services/po-sync/interfaces/po-sync-field-options.interface.mjs} +0 -0
  29. package/{esm2015/lib/services/po-sync/interfaces/po-sync-response.interface.js → esm2020/lib/services/po-sync/interfaces/po-sync-response.interface.mjs} +0 -0
  30. package/{esm2015/lib/services/po-sync/interfaces/po-sync-schema.interface.js → esm2020/lib/services/po-sync/interfaces/po-sync-schema.interface.mjs} +0 -0
  31. package/esm2020/lib/services/po-sync/po-sync.service.mjs +325 -0
  32. package/{esm2015/lib/utils/utils.js → esm2020/lib/utils/utils.mjs} +0 -0
  33. package/esm2020/po-ui-ng-sync.mjs +5 -0
  34. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  35. package/fesm2015/{po-ui-ng-sync.js → po-ui-ng-sync.mjs} +217 -201
  36. package/fesm2015/po-ui-ng-sync.mjs.map +1 -0
  37. package/fesm2020/po-ui-ng-sync.mjs +2018 -0
  38. package/fesm2020/po-ui-ng-sync.mjs.map +1 -0
  39. package/lib/po-sync.module.d.ts +5 -0
  40. package/lib/services/po-event-sourcing/po-event-sourcing.service.d.ts +3 -0
  41. package/lib/services/po-http-client/po-http-client.service.d.ts +3 -0
  42. package/lib/services/po-network/po-network.service.d.ts +3 -0
  43. package/lib/services/po-schema/po-schema-definition/po-schema-definition.service.d.ts +3 -0
  44. package/lib/services/po-schema/po-schema.service.d.ts +3 -0
  45. package/lib/services/po-sync/po-sync.service.d.ts +3 -0
  46. package/package.json +29 -14
  47. package/po-ui-ng-sync-6.1.0.tgz +0 -0
  48. package/po-ui-ng-sync.d.ts +1 -4
  49. package/schematics/migrations.json +5 -0
  50. package/schematics/ng-add/index.js +4 -4
  51. package/schematics/ng-add/index.js.map +1 -1
  52. package/schematics/ng-add/index.spec.js +4 -4
  53. package/schematics/ng-add/index.spec.js.map +1 -1
  54. package/schematics/ng-generate/schema/index.js +2 -2
  55. package/schematics/ng-generate/schema/index.js.map +1 -1
  56. package/schematics/ng-generate/schema/index.spec.js +3 -3
  57. package/schematics/ng-generate/schema/index.spec.js.map +1 -1
  58. package/schematics/ng-update/v2/index.js +6 -6
  59. package/schematics/ng-update/v2/index.js.map +1 -1
  60. package/schematics/ng-update/v3/index.js +1 -1
  61. package/schematics/ng-update/v3/index.js.map +1 -1
  62. package/schematics/ng-update/v4/index.js +1 -1
  63. package/schematics/ng-update/v4/index.js.map +1 -1
  64. package/schematics/ng-update/v5/index.js +1 -1
  65. package/schematics/ng-update/v5/index.js.map +1 -1
  66. package/schematics/ng-update/v6/changes.d.ts +2 -0
  67. package/schematics/ng-update/v6/changes.js +14 -0
  68. package/schematics/ng-update/v6/changes.js.map +1 -0
  69. package/schematics/ng-update/v6/index.d.ts +1 -0
  70. package/schematics/ng-update/v6/index.js +16 -0
  71. package/schematics/ng-update/v6/index.js.map +1 -0
  72. package/bundles/po-ui-ng-sync.umd.js +0 -3002
  73. package/bundles/po-ui-ng-sync.umd.js.map +0 -1
  74. package/esm2015/lib/models/po-entity/po-entity.model.js +0 -229
  75. package/esm2015/lib/models/po-query-builder/po-query-builder.model.js +0 -241
  76. package/esm2015/lib/po-sync.module.js +0 -31
  77. package/esm2015/lib/services/po-event-sourcing/po-event-sourcing.service.js +0 -411
  78. package/esm2015/lib/services/po-http-client/po-http-client.service.js +0 -147
  79. package/esm2015/lib/services/po-network/po-network.service.js +0 -58
  80. package/esm2015/lib/services/po-schema/po-schema-definition/po-schema-definition.service.js +0 -80
  81. package/esm2015/lib/services/po-schema/po-schema.service.js +0 -198
  82. package/esm2015/lib/services/po-sync/po-sync.service.js +0 -336
  83. package/esm2015/po-ui-ng-sync.js +0 -9
  84. package/fesm2015/po-ui-ng-sync.js.map +0 -1
  85. package/po-ui-ng-sync-5.22.1.tgz +0 -0
  86. package/po-ui-ng-sync.metadata.json +0 -1
@@ -1,229 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { validateParameter } from '../../utils/utils';
3
- import { PoEventSourcingOperation } from '../../services/po-event-sourcing';
4
- import { PoQueryBuilder } from './../po-query-builder/po-query-builder.model';
5
- import { PoSchemaUtil } from '../../services/po-schema';
6
- /**
7
- * @description
8
- *
9
- * Uma instância `PoEntity` representa um *schema* e ela contém métodos que possibilitam manipular seus registros,
10
- * como por exemplo: buscar, criar e remover.
11
- *
12
- * Esta instância pode ser obtida a partir do retorno do método `PoSyncService.getModel('schema name')`.
13
- */
14
- export class PoEntity {
15
- constructor(eventSourcing, schema, poSchemaService) {
16
- this.eventSourcing = eventSourcing;
17
- this.schema = schema;
18
- this.poSchemaService = poSchemaService;
19
- }
20
- /**
21
- * Busca os registros do *schema*, podendo filtrar o resultado a partir do filtro passado e retornando apenas
22
- * os campos definidos.
23
- *
24
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
25
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
26
- *
27
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
28
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
29
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
30
- * Por exemplo, a definição abaixo:
31
- *
32
- * ```
33
- * PoQueryBuilder.select('name age address');
34
- * ```
35
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
36
- *
37
- * ```
38
- * PoQueryBuilder.select('-name -age');
39
- * ```
40
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
41
- */
42
- find(filter, fields) {
43
- const query = new PoQueryBuilder(this.poSchemaService, this.schema);
44
- if (filter) {
45
- query.filter(filter);
46
- }
47
- if (fields) {
48
- query.select(fields);
49
- }
50
- return query;
51
- }
52
- /**
53
- * Busca um registro pelo seu *id*.
54
- *
55
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
56
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
57
- *
58
- * @param {any} id Identificador do registro.
59
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
60
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
61
- * Por exemplo, a definição abaixo:
62
- *
63
- * ```
64
- * PoQueryBuilder.select('name age address');
65
- * ```
66
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
67
- *
68
- * ```
69
- * PoQueryBuilder.select('-name -age');
70
- * ```
71
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
72
- */
73
- findById(id, fields) {
74
- return this.findOne({ [this.schema.idField]: id }, fields);
75
- }
76
- /**
77
- * Semelhante ao método `PoEntity.find()`, porém retorna apenas o primeiro registro encontrado na busca.
78
- *
79
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
80
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
81
- *
82
- * @param {any} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
83
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
84
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
85
- * Por exemplo, a definição abaixo:
86
- *
87
- * ```
88
- * PoQueryBuilder.select('name age address');
89
- * ```
90
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
91
- *
92
- * ```
93
- * PoQueryBuilder.select('-name -age');
94
- * ```
95
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
96
- */
97
- findOne(filter, fields) {
98
- const query = this.find(filter, fields);
99
- query.limit(1);
100
- return query;
101
- }
102
- /**
103
- * Remove um registro.
104
- *
105
- * @param {object} record Registro que será removido.
106
- * @param {string} customRequestId Identificador customizado do comando.
107
- * @returns {Promise} Promessa que é concluída após o registro ser removido.
108
- */
109
- remove(record, customRequestId) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- validateParameter({ record });
112
- const remove = () => __awaiter(this, void 0, void 0, function* () {
113
- const idField = record[this.schema.idField] ? this.schema.idField : PoSchemaUtil.syncInternalIdFieldName;
114
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, record)['serverRecord'];
115
- yield this.poSchemaService.remove(this.schema.name, record[idField]);
116
- yield this.eventSourcing.remove(this.schema.name, serverRecord, customRequestId);
117
- });
118
- return this.poSchemaService.limitedCallWrap(remove);
119
- });
120
- }
121
- /**
122
- * Altera ou inclui um registro.
123
- *
124
- * > O registro será alterado se ele possuir um *id*, caso contrário um novo registro será criado.
125
- *
126
- * @param {object} record Registro que será persistido.
127
- * @param {string} customRequestId Identificador customizado do comando.
128
- * @returns {Promise} Promessa que é concluída após o registro ser alterado ou incluído.
129
- */
130
- save(record, customRequestId) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- validateParameter({ record });
133
- return this.poSchemaService.limitedCallWrap(this.selectSaveType.bind(this, record, true, customRequestId));
134
- });
135
- }
136
- /**
137
- * Salva uma lista de registros em lote.
138
- *
139
- * > Para cada registro da lista, será inserido um novo registro se o mesmo não tiver *id*, caso contrário
140
- * será contado como uma atualização de um registro existente.
141
- *
142
- * @param {Array<object>} records Lista de registros que serão persistidos.
143
- * @param {Array<string> | string} customRequestIds Identificador customizado do comando.
144
- *
145
- * Ao passar uma lista de identificadores, cada índice da lista de identificadores deverá
146
- * corresponder ao índice do registro na lista de registros.
147
- * @returns {Promise<any>} Promessa que é concluída após os registros serem alterados ou incluídos.
148
- */
149
- saveAll(records, customRequestIds) {
150
- return __awaiter(this, void 0, void 0, function* () {
151
- validateParameter({ records });
152
- const saveAll = () => __awaiter(this, void 0, void 0, function* () {
153
- const batchEvents = [];
154
- for (let index = 0; index < records.length; index++) {
155
- const record = records[index];
156
- const sendToEventSourcing = false;
157
- const isNonLocalRecordChanged = yield this.isNonLocalRecordChanged(record);
158
- const updatedRecord = yield this.selectSaveType(record, sendToEventSourcing);
159
- if (isNonLocalRecordChanged) {
160
- const customRequestId = customRequestIds instanceof Array ? customRequestIds[index] : customRequestIds;
161
- const eventOperation = this.createEventOperation(record, updatedRecord, customRequestId);
162
- batchEvents.push(eventOperation);
163
- }
164
- }
165
- yield this.eventSourcing.createBatchEvents(this.schema.name, batchEvents);
166
- });
167
- return this.poSchemaService.limitedCallWrap(saveAll);
168
- });
169
- }
170
- create(newRecord, sendToEventSourcing, customRequestId) {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- const time = new Date().getTime();
173
- const syncProperties = {
174
- [PoSchemaUtil.syncInternalIdFieldName]: time,
175
- SyncInsertedDateTime: time,
176
- SyncUpdatedDateTime: null,
177
- SyncExclusionDateTime: null,
178
- SyncDeleted: false,
179
- SyncStatus: 0
180
- };
181
- const recordWithSyncProperties = Object.assign(Object.assign({}, newRecord), syncProperties);
182
- const recordedData = yield this.poSchemaService.create(this.schema, recordWithSyncProperties);
183
- if (sendToEventSourcing) {
184
- yield this.eventSourcing.create(this.schema.name, recordWithSyncProperties, customRequestId);
185
- }
186
- return recordedData;
187
- });
188
- }
189
- createEventOperation(record, updatedRecord, customRequestId) {
190
- const operation = PoSchemaUtil.getRecordId(record, this.schema)
191
- ? PoEventSourcingOperation.Update
192
- : PoEventSourcingOperation.Insert;
193
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, updatedRecord)['serverRecord'];
194
- return {
195
- record: serverRecord,
196
- customRequestId: customRequestId,
197
- operation: operation
198
- };
199
- }
200
- isNonLocalRecordChanged(updatedRecord) {
201
- return __awaiter(this, void 0, void 0, function* () {
202
- const nonLocalFieldNames = PoSchemaUtil.getNonLocalFieldNames(this.schema);
203
- const record = yield this.poSchemaService.get(this.schema.name, updatedRecord[this.schema.idField]);
204
- return !PoSchemaUtil.isModelsEqual(nonLocalFieldNames, record, updatedRecord);
205
- });
206
- }
207
- selectSaveType(record, sendToEventSourcing, customRequestId) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- const hasId = PoSchemaUtil.getRecordId(record, this.schema);
210
- return hasId
211
- ? yield this.update(record, sendToEventSourcing, customRequestId)
212
- : yield this.create(record, sendToEventSourcing, customRequestId);
213
- });
214
- }
215
- update(updatedRecord, sendToEventSourcing, customRequestId) {
216
- return __awaiter(this, void 0, void 0, function* () {
217
- updatedRecord.SyncUpdatedDateTime = new Date().getTime();
218
- updatedRecord.SyncStatus = 0;
219
- const isNonLocalRecordChanged = yield this.isNonLocalRecordChanged(updatedRecord);
220
- const recordedData = yield this.poSchemaService.update(this.schema, updatedRecord);
221
- if (isNonLocalRecordChanged && sendToEventSourcing) {
222
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, updatedRecord)['serverRecord'];
223
- yield this.eventSourcing.update(this.schema.name, serverRecord, customRequestId);
224
- }
225
- return recordedData;
226
- });
227
- }
228
- }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL21vZGVscy9wby1lbnRpdHkvcG8tZW50aXR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsd0JBQXdCLEVBR3pCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQ1UsYUFBcUMsRUFDckMsTUFBb0IsRUFDcEIsZUFBZ0M7UUFGaEMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0gsSUFBSSxDQUFDLE1BQWUsRUFBRSxNQUFlO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFFBQVEsQ0FBQyxFQUFPLEVBQUUsTUFBZTtRQUMvQixPQUFPLElBQUks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SUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEUsQ0FBQztLQUFBO0lBRWEsTUFBTSxDQUFDLGFBQWtCLEVBQUUsbUJBQTRCLEVBQUUsZUFBd0I7O1lBQzdGLGFBQWEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pELGFBQWEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRW5GLElBQUksdUJBQXVCLElBQUksbUJBQW1CLEVBQUU7Z0JBQ2xELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQzthQUNsRjtZQUVELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmFsaWRhdGVQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5cbmltcG9ydCB7XG4gIFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbixcbiAgUG9FdmVudFNvdXJjaW5nU2VydmljZSxcbiAgUG9FdmVudFNvdXJjaW5nU3VtbWFyeUl0ZW1cbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZXZlbnQtc291cmNpbmcnO1xuaW1wb3J0IHsgUG9RdWVyeUJ1aWxkZXIgfSBmcm9tICcuLy4uL3BvLXF1ZXJ5LWJ1aWxkZXIvcG8tcXVlcnktYnVpbGRlci5tb2RlbCc7XG5pbXBvcnQgeyBQb1NjaGVtYVNlcnZpY2UsIFBvU2NoZW1hVXRpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXNjaGVtYSc7XG5pbXBvcnQgeyBQb1N5bmNTY2hlbWEgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1zeW5jL2ludGVyZmFjZXMvcG8tc3luYy1zY2hlbWEuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBVbWEgaW5zdMOibmNpYSBgUG9FbnRpdHlgIHJlcHJlc2VudGEgdW0gKnNjaGVtYSogZSBlbGEgY29udMOpbSBtw6l0b2RvcyBxdWUgcG9zc2liaWxpdGFtIG1hbmlwdWxhciBzZXVzIHJlZ2lzdHJvcyxcbiAqIGNvbW8gcG9yIGV4ZW1wbG86IGJ1c2NhciwgY3JpYXIgZSByZW1vdmVyLlxuICpcbiAqIEVzdGEgaW5zdMOibmNpYSBwb2RlIHNlciBvYnRpZGEgYSBwYXJ0aXIgZG8gcmV0b3JubyBkbyBtw6l0b2RvIGBQb1N5bmNTZXJ2aWNlLmdldE1vZGVsKCdzY2hlbWEgbmFtZScpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBvRW50aXR5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudFNvdXJjaW5nOiBQb0V2ZW50U291cmNpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NoZW1hOiBQb1N5bmNTY2hlbWEsXG4gICAgcHJpdmF0ZSBwb1NjaGVtYVNlcnZpY2U6IFBvU2NoZW1hU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEJ1c2NhIG9zIHJlZ2lzdHJvcyBkbyAqc2NoZW1hKiwgcG9kZW5kbyBmaWx0cmFyIG8gcmVzdWx0YWRvIGEgcGFydGlyIGRvIGZpbHRybyBwYXNzYWRvIGUgcmV0b3JuYW5kbyBhcGVuYXNcbiAgICogb3MgY2FtcG9zIGRlZmluaWRvcy5cbiAgICpcbiAgICogUGFyYSBxdWUgZXN0YSBidXNjYSBzZWphIGNvbmNsdcOtZGEgw6kgbmVjZXNzw6FyaW8gdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5leGVjKClgLlxuICAgKiBWZWphIG1haXMgZW06IFtQb1F1ZXJ5QnVpbGRlcl0oL2RvY3VtZW50YXRpb24vcG8tcXVlcnktYnVpbGRlcikuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWx0ZXIgT2JqZXRvIHF1ZSBjb250w6ltIG9zIGNhbXBvcyBlIHZhbG9yZXMgYSBzZXJlbSBmaWx0cmFkb3Mgbm8gKnNjaGVtYSouXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZHMgQ2FtcG9zIHF1ZSBzZXLDo28gcmV0b3JuYWRvcyBub3MgcmVnaXN0cm9zLiBFc3RlIGNhbXBvcyBkZXZlbSBlc3RhciBkZW50cm8gZGVcbiAgICogdW1hICpzdHJpbmcqIHNlcGFyYWRvcyBwb3IgZXNwYcOnbyBwb2RlbmRvIHVzYXIgbyBjYXJhY3RlcmUgYC1gIHBhcmEgZXhjbHVpciBjYW1wb3MuXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xuICAgKiBgYGBcbiAgICogSXLDoSByZXRvcm5hciBhcGVuYXMgb3MgY2FtcG9zIGBuYW1lYCwgYGFnZWAgZSBgYWRkcmVzc2AuIEUgcGFyYSBuw6NvIG1vc3RyYXIgdW0gY2FtcG8gb3UgbWFpcyBiYXN0YSBmYXplcjpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnLW5hbWUgLWFnZScpO1xuICAgKiBgYGBcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cbiAgICovXG4gIGZpbmQoZmlsdGVyPzogb2JqZWN0LCBmaWVsZHM/OiBzdHJpbmcpOiBQb1F1ZXJ5QnVpbGRlciB7XG4gICAgY29uc3QgcXVlcnkgPSBuZXcgUG9RdWVyeUJ1aWxkZXIodGhpcy5wb1NjaGVtYVNlcnZpY2UsIHRoaXMuc2NoZW1hKTtcblxuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIHF1ZXJ5LmZpbHRlcihmaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIHF1ZXJ5LnNlbGVjdChmaWVsZHMpO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdXNjYSB1bSByZWdpc3RybyBwZWxvIHNldSAqaWQqLlxuICAgKlxuICAgKiBQYXJhIHF1ZSBlc3RhIGJ1c2NhIHNlamEgY29uY2x1w61kYSDDqSBuZWNlc3PDoXJpbyB1dGlsaXphciBvIG3DqXRvZG8gYFBvUXVlcnlCdWlsZGVyLmV4ZWMoKWAuXG4gICAqIFZlamEgbWFpcyBlbTogW1BvUXVlcnlCdWlsZGVyXSgvZG9jdW1lbnRhdGlvbi9wby1xdWVyeS1idWlsZGVyKS5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IGlkIElkZW50aWZpY2Fkb3IgZG8gcmVnaXN0cm8uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZHMgQ2FtcG9zIHF1ZSBzZXLDo28gcmV0b3JuYWRvcyBub3MgcmVnaXN0cm9zLiBFc3RlIGNhbXBvcyBkZXZlbSBlc3RhciBkZW50cm8gZGVcbiAgICogdW1hICpzdHJpbmcqIHNlcGFyYWRvcyBwb3IgZXNwYcOnbyBwb2RlbmRvIHVzYXIgbyBjYXJhY3RlcmUgYC1gIHBhcmEgZXhjbHVpciBjYW1wb3MuXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xuICAgKiBgYGBcbiAgICogSXLDoSByZXRvcm5hciBhcGVuYXMgb3MgY2FtcG9zIGBuYW1lYCwgYGFnZWAgZSBgYWRkcmVzc2AuIEUgcGFyYSBuw6NvIG1vc3RyYXIgdW0gY2FtcG8gb3UgbWFpcyBiYXN0YSBmYXplcjpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnLW5hbWUgLWFnZScpO1xuICAgKiBgYGBcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cbiAgICovXG4gIGZpbmRCeUlkKGlkOiBhbnksIGZpZWxkcz86IHN0cmluZyk6IFBvUXVlcnlCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5maW5kT25lKHsgW3RoaXMuc2NoZW1hLmlkRmllbGRdOiBpZCB9LCBmaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbWVsaGFudGUgYW8gbcOpdG9kbyBgUG9FbnRpdHkuZmluZCgpYCwgcG9yw6ltIHJldG9ybmEgYXBlbmFzIG8gcHJpbWVpcm8gcmVnaXN0cm8gZW5jb250cmFkbyBuYSBidXNjYS5cbiAgICpcbiAgICogUGFyYSBxdWUgZXN0YSBidXNjYSBzZWphIGNvbmNsdcOtZGEgw6kgbmVjZXNzw6FyaW8gdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5leGVjKClgLlxuICAgKiBWZWphIG1haXMgZW06IFtQb1F1ZXJ5QnVpbGRlcl0oL2RvY3VtZW50YXRpb24vcG8tcXVlcnktYnVpbGRlcikuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBmaWx0ZXIgT2JqZXRvIHF1ZSBjb250w6ltIG9zIGNhbXBvcyBlIHZhbG9yZXMgYSBzZXJlbSBmaWx0cmFkb3Mgbm8gKnNjaGVtYSouXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZHMgQ2FtcG9zIHF1ZSBzZXLDo28gcmV0b3JuYWRvcyBub3MgcmVnaXN0cm9zLiBFc3RlIGNhbXBvcyBkZXZlbSBlc3RhciBkZW50cm8gZGVcbiAgICogdW1hICpzdHJpbmcqIHNlcGFyYWRvcyBwb3IgZXNwYcOnbyBwb2RlbmRvIHVzYXIgbyBjYXJhY3RlcmUgYC1gIHBhcmEgZXhjbHVpciBjYW1wb3MuXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xuICAgKiBgYGBcbiAgICogSXLDoSByZXRvcm5hciBhcGVuYXMgb3MgY2FtcG9zIGBuYW1lYCwgYGFnZWAgZSBgYWRkcmVzc2AuIEUgcGFyYSBuw6NvIG1vc3RyYXIgdW0gY2FtcG8gb3UgbWFpcyBiYXN0YSBmYXplcjpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnLW5hbWUgLWFnZScpO1xuICAgKiBgYGBcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cbiAgICovXG4gIGZpbmRPbmUoZmlsdGVyPzogYW55LCBmaWVsZHM/OiBzdHJpbmcpOiBQb1F1ZXJ5QnVpbGRlciB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmZpbmQoZmlsdGVyLCBmaWVsZHMpO1xuICAgIHF1ZXJ5LmxpbWl0KDEpO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdW0gcmVnaXN0cm8uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIHJlbW92aWRvLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VzdG9tUmVxdWVzdElkIElkZW50aWZpY2Fkb3IgY3VzdG9taXphZG8gZG8gY29tYW5kby5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21lc3NhIHF1ZSDDqSBjb25jbHXDrWRhIGFww7NzIG8gcmVnaXN0cm8gc2VyIHJlbW92aWRvLlxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlKHJlY29yZDogb2JqZWN0LCBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgcmVjb3JkIH0pO1xuXG4gICAgY29uc3QgcmVtb3ZlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaWRGaWVsZCA9IHJlY29yZFt0aGlzLnNjaGVtYS5pZEZpZWxkXSA/IHRoaXMuc2NoZW1hLmlkRmllbGQgOiBQb1NjaGVtYVV0aWwuc3luY0ludGVybmFsSWRGaWVsZE5hbWU7XG4gICAgICBjb25zdCBzZXJ2ZXJSZWNvcmQgPSBQb1NjaGVtYVV0aWwuc2VwYXJhdGVTY2hlbWFGaWVsZHModGhpcy5zY2hlbWEsIHJlY29yZClbJ3NlcnZlclJlY29yZCddO1xuXG4gICAgICBhd2FpdCB0aGlzLnBvU2NoZW1hU2VydmljZS5yZW1vdmUodGhpcy5zY2hlbWEubmFtZSwgcmVjb3JkW2lkRmllbGRdKTtcbiAgICAgIGF3YWl0IHRoaXMuZXZlbnRTb3VyY2luZy5yZW1vdmUodGhpcy5zY2hlbWEubmFtZSwgc2VydmVyUmVjb3JkLCBjdXN0b21SZXF1ZXN0SWQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5wb1NjaGVtYVNlcnZpY2UubGltaXRlZENhbGxXcmFwKHJlbW92ZSk7XG4gIH1cblxuICAvKipcbiAgICogQWx0ZXJhIG91IGluY2x1aSB1bSByZWdpc3Ryby5cbiAgICpcbiAgICogPiBPIHJlZ2lzdHJvIHNlcsOhIGFsdGVyYWRvIHNlIGVsZSBwb3NzdWlyIHVtICppZCosIGNhc28gY29udHLDoXJpbyB1bSBub3ZvIHJlZ2lzdHJvIHNlcsOhIGNyaWFkby5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlY29yZCBSZWdpc3RybyBxdWUgc2Vyw6EgcGVyc2lzdGlkby5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1c3RvbVJlcXVlc3RJZCBJZGVudGlmaWNhZG9yIGN1c3RvbWl6YWRvIGRvIGNvbWFuZG8uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9tZXNzYSBxdWUgw6kgY29uY2x1w61kYSBhcMOzcyBvIHJlZ2lzdHJvIHNlciBhbHRlcmFkbyBvdSBpbmNsdcOtZG8uXG4gICAqL1xuICBhc3luYyBzYXZlKHJlY29yZDogb2JqZWN0LCBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgcmVjb3JkIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMucG9TY2hlbWFTZXJ2aWNlLmxpbWl0ZWRDYWxsV3JhcCh0aGlzLnNlbGVjdFNhdmVUeXBlLmJpbmQodGhpcywgcmVjb3JkLCB0cnVlLCBjdXN0b21SZXF1ZXN0SWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWx2YSB1bWEgbGlzdGEgZGUgcmVnaXN0cm9zIGVtIGxvdGUuXG4gICAqXG4gICAqID4gUGFyYSBjYWRhIHJlZ2lzdHJvIGRhIGxpc3RhLCBzZXLDoSBpbnNlcmlkbyB1bSBub3ZvIHJlZ2lzdHJvIHNlIG8gbWVzbW8gbsOjbyB0aXZlciAqaWQqLCBjYXNvIGNvbnRyw6FyaW9cbiAgICogc2Vyw6EgY29udGFkbyBjb21vIHVtYSBhdHVhbGl6YcOnw6NvIGRlIHVtIHJlZ2lzdHJvIGV4aXN0ZW50ZS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSByZWNvcmRzIExpc3RhIGRlIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIHBlcnNpc3RpZG9zLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz4gfCBzdHJpbmd9IGN1c3RvbVJlcXVlc3RJZHMgSWRlbnRpZmljYWRvciBjdXN0b21pemFkbyBkbyBjb21hbmRvLlxuICAgKlxuICAgKiBBbyBwYXNzYXIgdW1hIGxpc3RhIGRlIGlkZW50aWZpY2Fkb3JlcywgY2FkYSDDrW5kaWNlIGRhIGxpc3RhIGRlIGlkZW50aWZpY2Fkb3JlcyBkZXZlcsOhXG4gICAqIGNvcnJlc3BvbmRlciBhbyDDrW5kaWNlIGRvIHJlZ2lzdHJvIG5hIGxpc3RhIGRlIHJlZ2lzdHJvcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUHJvbWVzc2EgcXVlIMOpIGNvbmNsdcOtZGEgYXDDs3Mgb3MgcmVnaXN0cm9zIHNlcmVtIGFsdGVyYWRvcyBvdSBpbmNsdcOtZG9zLlxuICAgKi9cbiAgYXN5bmMgc2F2ZUFsbChyZWNvcmRzOiBBcnJheTxvYmplY3Q+LCBjdXN0b21SZXF1ZXN0SWRzPzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdmFsaWRhdGVQYXJhbWV0ZXIoeyByZWNvcmRzIH0pO1xuXG4gICAgY29uc3Qgc2F2ZUFsbCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJhdGNoRXZlbnRzID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCByZWNvcmRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzW2luZGV4XTtcbiAgICAgICAgY29uc3Qgc2VuZFRvRXZlbnRTb3VyY2luZyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkID0gYXdhaXQgdGhpcy5pc05vbkxvY2FsUmVjb3JkQ2hhbmdlZChyZWNvcmQpO1xuICAgICAgICBjb25zdCB1cGRhdGVkUmVjb3JkID0gYXdhaXQgdGhpcy5zZWxlY3RTYXZlVHlwZShyZWNvcmQsIHNlbmRUb0V2ZW50U291cmNpbmcpO1xuXG4gICAgICAgIGlmIChpc05vbkxvY2FsUmVjb3JkQ2hhbmdlZCkge1xuICAgICAgICAgIGNvbnN0IGN1c3RvbVJlcXVlc3RJZCA9IGN1c3RvbVJlcXVlc3RJZHMgaW5zdGFuY2VvZiBBcnJheSA/IGN1c3RvbVJlcXVlc3RJZHNbaW5kZXhdIDogY3VzdG9tUmVxdWVzdElkcztcbiAgICAgICAgICBjb25zdCBldmVudE9wZXJhdGlvbiA9IHRoaXMuY3JlYXRlRXZlbnRPcGVyYXRpb24ocmVjb3JkLCB1cGRhdGVkUmVjb3JkLCBjdXN0b21SZXF1ZXN0SWQpO1xuICAgICAgICAgIGJhdGNoRXZlbnRzLnB1c2goZXZlbnRPcGVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuZXZlbnRTb3VyY2luZy5jcmVhdGVCYXRjaEV2ZW50cyh0aGlzLnNjaGVtYS5uYW1lLCBiYXRjaEV2ZW50cyk7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvU2NoZW1hU2VydmljZS5saW1pdGVkQ2FsbFdyYXAoc2F2ZUFsbCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZShuZXdSZWNvcmQ6IGFueSwgc2VuZFRvRXZlbnRTb3VyY2luZzogYm9vbGVhbiwgY3VzdG9tUmVxdWVzdElkPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICBjb25zdCBzeW5jUHJvcGVydGllcyA9IHtcbiAgICAgIFtQb1NjaGVtYVV0aWwuc3luY0ludGVybmFsSWRGaWVsZE5hbWVdOiB0aW1lLFxuICAgICAgU3luY0luc2VydGVkRGF0ZVRpbWU6IHRpbWUsXG4gICAgICBTeW5jVXBkYXRlZERhdGVUaW1lOiBudWxsLFxuICAgICAgU3luY0V4Y2x1c2lvbkRhdGVUaW1lOiBudWxsLFxuICAgICAgU3luY0RlbGV0ZWQ6IGZhbHNlLFxuICAgICAgU3luY1N0YXR1czogMFxuICAgIH07XG4gICAgY29uc3QgcmVjb3JkV2l0aFN5bmNQcm9wZXJ0aWVzID0geyAuLi5uZXdSZWNvcmQsIC4uLnN5bmNQcm9wZXJ0aWVzIH07XG5cbiAgICBjb25zdCByZWNvcmRlZERhdGEgPSBhd2FpdCB0aGlzLnBvU2NoZW1hU2VydmljZS5jcmVhdGUodGhpcy5zY2hlbWEsIHJlY29yZFdpdGhTeW5jUHJvcGVydGllcyk7XG5cbiAgICBpZiAoc2VuZFRvRXZlbnRTb3VyY2luZykge1xuICAgICAgYXdhaXQgdGhpcy5ldmVudFNvdXJjaW5nLmNyZWF0ZSh0aGlzLnNjaGVtYS5uYW1lLCByZWNvcmRXaXRoU3luY1Byb3BlcnRpZXMsIGN1c3RvbVJlcXVlc3RJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZGVkRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnRPcGVyYXRpb24oXG4gICAgcmVjb3JkOiBvYmplY3QsXG4gICAgdXBkYXRlZFJlY29yZDogb2JqZWN0LFxuICAgIGN1c3RvbVJlcXVlc3RJZD86IHN0cmluZ1xuICApOiBQb0V2ZW50U291cmNpbmdTdW1tYXJ5SXRlbSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gUG9TY2hlbWFVdGlsLmdldFJlY29yZElkKHJlY29yZCwgdGhpcy5zY2hlbWEpXG4gICAgICA/IFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbi5VcGRhdGVcbiAgICAgIDogUG9FdmVudFNvdXJjaW5nT3BlcmF0aW9uLkluc2VydDtcblxuICAgIGNvbnN0IHNlcnZlclJlY29yZCA9IFBvU2NoZW1hVXRpbC5zZXBhcmF0ZVNjaGVtYUZpZWxkcyh0aGlzLnNjaGVtYSwgdXBkYXRlZFJlY29yZClbJ3NlcnZlclJlY29yZCddO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY29yZDogc2VydmVyUmVjb3JkLFxuICAgICAgY3VzdG9tUmVxdWVzdElkOiBjdXN0b21SZXF1ZXN0SWQsXG4gICAgICBvcGVyYXRpb246IG9wZXJhdGlvblxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkKHVwZGF0ZWRSZWNvcmQ6IG9iamVjdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG5vbkxvY2FsRmllbGROYW1lcyA9IFBvU2NoZW1hVXRpbC5nZXROb25Mb2NhbEZpZWxkTmFtZXModGhpcy5zY2hlbWEpO1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMucG9TY2hlbWFTZXJ2aWNlLmdldCh0aGlzLnNjaGVtYS5uYW1lLCB1cGRhdGVkUmVjb3JkW3RoaXMuc2NoZW1hLmlkRmllbGRdKTtcblxuICAgIHJldHVybiAhUG9TY2hlbWFVdGlsLmlzTW9kZWxzRXF1YWwobm9uTG9jYWxGaWVsZE5hbWVzLCByZWNvcmQsIHVwZGF0ZWRSZWNvcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWxlY3RTYXZlVHlwZShcbiAgICByZWNvcmQ6IG9iamVjdCxcbiAgICBzZW5kVG9FdmVudFNvdXJjaW5nOiBib29sZWFuLFxuICAgIGN1c3RvbVJlcXVlc3RJZD86IHN0cmluZ1xuICApOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIGNvbnN0IGhhc0lkID0gUG9TY2hlbWFVdGlsLmdldFJlY29yZElkKHJlY29yZCwgdGhpcy5zY2hlbWEpO1xuXG4gICAgcmV0dXJuIGhhc0lkXG4gICAgICA/IGF3YWl0IHRoaXMudXBkYXRlKHJlY29yZCwgc2VuZFRvRXZlbnRTb3VyY2luZywgY3VzdG9tUmVxdWVzdElkKVxuICAgICAgOiBhd2FpdCB0aGlzLmNyZWF0ZShyZWNvcmQsIHNlbmRUb0V2ZW50U291cmNpbmcsIGN1c3RvbVJlcXVlc3RJZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZSh1cGRhdGVkUmVjb3JkOiBhbnksIHNlbmRUb0V2ZW50U291cmNpbmc6IGJvb2xlYW4sIGN1c3RvbVJlcXVlc3RJZD86IHN0cmluZyk6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgdXBkYXRlZFJlY29yZC5TeW5jVXBkYXRlZERhdGVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgdXBkYXRlZFJlY29yZC5TeW5jU3RhdHVzID0gMDtcblxuICAgIGNvbnN0IGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkID0gYXdhaXQgdGhpcy5pc05vbkxvY2FsUmVjb3JkQ2hhbmdlZCh1cGRhdGVkUmVjb3JkKTtcbiAgICBjb25zdCByZWNvcmRlZERhdGEgPSBhd2FpdCB0aGlzLnBvU2NoZW1hU2VydmljZS51cGRhdGUodGhpcy5zY2hlbWEsIHVwZGF0ZWRSZWNvcmQpO1xuXG4gICAgaWYgKGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkICYmIHNlbmRUb0V2ZW50U291cmNpbmcpIHtcbiAgICAgIGNvbnN0IHNlcnZlclJlY29yZCA9IFBvU2NoZW1hVXRpbC5zZXBhcmF0ZVNjaGVtYUZpZWxkcyh0aGlzLnNjaGVtYSwgdXBkYXRlZFJlY29yZClbJ3NlcnZlclJlY29yZCddO1xuICAgICAgYXdhaXQgdGhpcy5ldmVudFNvdXJjaW5nLnVwZGF0ZSh0aGlzLnNjaGVtYS5uYW1lLCBzZXJ2ZXJSZWNvcmQsIGN1c3RvbVJlcXVlc3RJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZGVkRGF0YTtcbiAgfVxufVxuIl19
@@ -1,241 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { validateParameter } from '../../utils/utils';
3
- /**
4
- * @description
5
- *
6
- * Classe utilitária para construir consultas sobre os registros de um *schema*.
7
- *
8
- * A utilização dos métodos desta classe é feita a partir do retorno do método `PoEntity.find()`. Por exemplo,
9
- * para utilizar o método `PoQueryBuilder.page()`, é necessário:
10
- *
11
- * ``` typescript
12
- * PoSyncService.getModel('schema name').find().page(2).exec();
13
- * ```
14
- *
15
- * O `PoQueryBuilder` foi projetado para que os seus métodos sejam
16
- * chamados em cascata e ao final desse encadeamento invocar o método
17
- * `PoQueryBuilder.exec()` para que a busca seja concluída. Por exemplo:
18
- *
19
- * ``` typescript
20
- * PoSyncService
21
- * .getModel('schema name')
22
- * .find()
23
- * .page(2)
24
- * .pageSize(5)
25
- * .sort()
26
- * .exec();
27
- * ```
28
- */
29
- export class PoQueryBuilder {
30
- constructor(poSchemaService, schema) {
31
- this.poSchemaService = poSchemaService;
32
- this.schema = schema;
33
- this._page = 1;
34
- this.filters = {};
35
- }
36
- /**
37
- * Ao final da chamada dos métodos do `PoQueryBuilder` utilizados, este método deve ser chamado para que a busca seja concluída.
38
- *
39
- * @return {Promise<PoResponseApi | object>} Registros do *schema* na qual foi aplicado a consulta.
40
- */
41
- exec() {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- let storageData = yield this.poSchemaService.getAll(this.schema.name);
44
- if (storageData && storageData.length) {
45
- if (Object.keys(this.filters).length) {
46
- storageData = this.applyFilters(storageData);
47
- }
48
- if (this.fields) {
49
- storageData = this.applyFields(this.schema.fields, storageData);
50
- }
51
- if (this._sort) {
52
- storageData = this.order(storageData, this._sort);
53
- }
54
- if (this._limit) {
55
- return storageData[0];
56
- }
57
- else {
58
- return this.paginate(storageData);
59
- }
60
- }
61
- else {
62
- return {
63
- hasNext: false,
64
- items: []
65
- };
66
- }
67
- });
68
- }
69
- /**
70
- * Aplica filtros sobre os registros, baseados nos campos e valores definidos como filtro. Por exemplo:
71
- *
72
- * ```
73
- * PoQueryBuilder.filter({ name: 'Marie', age: 24 });
74
- * ```
75
- * Retorna todos os registros que contenham a propriedade `name` igual a Marie e `age` igual a 24.
76
- *
77
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
78
- *
79
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
80
- */
81
- filter(filter) {
82
- if (filter && typeof filter === 'object') {
83
- this.filters = Object.assign(Object.assign({}, this.filters), filter);
84
- }
85
- else {
86
- throw new Error('Filter must be an object');
87
- }
88
- return this;
89
- }
90
- /**
91
- * Limita o número de registros que serão retornados.
92
- *
93
- * @param {number} limit Número de registros retornados.
94
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
95
- */
96
- limit(limit) {
97
- this._limit = limit;
98
- return this;
99
- }
100
- /**
101
- * Especifica a página de registros que se deseja retornar.
102
- *
103
- * @param {number} page Número da página.
104
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
105
- */
106
- page(page) {
107
- validateParameter({ page });
108
- this._page = page;
109
- return this;
110
- }
111
- /**
112
- * Define quantos elementos serão retornados por página.
113
- *
114
- * @param {number} pageSize Número de registros por página.
115
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
116
- */
117
- pageSize(pageSize) {
118
- validateParameter({ pageSize });
119
- this._pageSize = pageSize;
120
- return this;
121
- }
122
- /**
123
- * Utilizado para definir quais campos do *schema* serão retornados na consulta.
124
- *
125
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
126
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
127
- * Por exemplo, a definição abaixo:
128
- *
129
- * ```
130
- * PoQueryBuilder.select('name age address');
131
- * ```
132
- * Irá retornar apenas os campos `name`, `age` e `address`. Para não retornar um campo ou mais basta fazer:
133
- *
134
- * ```
135
- * PoQueryBuilder.select('-name -age');
136
- * ```
137
- *
138
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
139
- */
140
- select(fields) {
141
- validateParameter({ fields });
142
- this.fields = fields;
143
- return this;
144
- }
145
- /**
146
- * Ordena os registros por um campo.
147
- *
148
- * @param {string} field Campo a ser ordenado. Para ordenar de forma decrescente basta colocar o caractere `-`
149
- * na frente do campo. Por exemplo:
150
- * ```
151
- * PoQueryBuilder.sort('-name');
152
- * ```
153
- *
154
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
155
- */
156
- sort(field) {
157
- validateParameter({ field });
158
- this._sort = field;
159
- return this;
160
- }
161
- /**
162
- * Essa função serve como alias para o `PoQueryBuilder.filter()`. É utilizada somente para dar maior legibilidade ao código.
163
- *
164
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
165
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
166
- */
167
- where(filter) {
168
- return this.filter(filter);
169
- }
170
- applyFields(schemaFields, data) {
171
- const receivedFields = this.fields.split(' ');
172
- let restrictedFields = [];
173
- let selectedFields = [];
174
- [selectedFields, restrictedFields] = this.groupFields(receivedFields);
175
- if (!selectedFields.length && restrictedFields.length) {
176
- selectedFields = [...schemaFields];
177
- }
178
- if (restrictedFields.length) {
179
- selectedFields = this.removeRestrictedFields(restrictedFields, selectedFields);
180
- }
181
- selectedFields = this.removeDuplicate(selectedFields);
182
- return this.removeFieldsData(data, selectedFields);
183
- }
184
- applyFilters(data) {
185
- Object.keys(this.filters).forEach(filterKey => {
186
- data = data.filter(item => item[filterKey] === this.filters[filterKey]);
187
- });
188
- return data;
189
- }
190
- groupFields(receivedFields) {
191
- const restrictedFields = [];
192
- const selectedFields = [];
193
- receivedFields.forEach(fields => {
194
- if (fields.startsWith('-')) {
195
- restrictedFields.push(fields.substring(1));
196
- }
197
- else {
198
- selectedFields.push(fields);
199
- }
200
- });
201
- return [selectedFields, restrictedFields];
202
- }
203
- paginate(data) {
204
- const dataLength = data.length;
205
- const pageSize = this._pageSize || dataLength;
206
- const pages = Math.ceil(dataLength / pageSize);
207
- const begin = this._page * pageSize - pageSize;
208
- const end = begin + pageSize;
209
- return { hasNext: this._page < pages, items: data.slice(begin, end) };
210
- }
211
- order(data, sortingField) {
212
- const descendingOrder = sortingField.startsWith('-');
213
- sortingField = descendingOrder ? sortingField.substr(1) : sortingField;
214
- return data.sort((optionA, optionB) => {
215
- if (optionA[sortingField] > optionB[sortingField]) {
216
- return !descendingOrder ? 1 : -1;
217
- }
218
- if (optionA[sortingField] < optionB[sortingField]) {
219
- return !descendingOrder ? -1 : 1;
220
- }
221
- return 0;
222
- });
223
- }
224
- removeDuplicate(fields) {
225
- return fields.filter((item, position) => fields.indexOf(item) === position);
226
- }
227
- removeFieldsData(data, chosenFields) {
228
- data.forEach(item => {
229
- Object.keys(item).forEach(keyItem => {
230
- if (!chosenFields.includes(keyItem)) {
231
- delete item[keyItem];
232
- }
233
- });
234
- });
235
- return data;
236
- }
237
- removeRestrictedFields(restrictedFields, fields) {
238
- return fields.filter(field => !restrictedFields.includes(field));
239
- }
240
- }
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcXVlcnktYnVpbGRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9tb2RlbHMvcG8tcXVlcnktYnVpbGRlci9wby1xdWVyeS1idWlsZGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU10RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQW9CLGVBQWdDLEVBQVUsTUFBb0I7UUFBOUQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0csSUFBSTs7WUFDUixJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEUsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM5QztnQkFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQ2pFO2dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDZCxXQUFXLEdB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LElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFtQixFQUFFLFlBQTJCO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsZ0JBQTRCLEVBQUUsTUFBa0I7UUFDN0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2YWxpZGF0ZVBhcmFtZXRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcblxuaW1wb3J0IHsgUG9SZXNwb25zZUFwaSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvcG8taHR0cC1jbGllbnQvaW50ZXJmYWNlcy9wby1yZXNwb25zZS1hcGkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvU2NoZW1hU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvcG8tc2NoZW1hJztcbmltcG9ydCB7IFBvU3luY1NjaGVtYSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENsYXNzZSB1dGlsaXTDoXJpYSBwYXJhIGNvbnN0cnVpciBjb25zdWx0YXMgc29icmUgb3MgcmVnaXN0cm9zIGRlIHVtICpzY2hlbWEqLlxuICpcbiAqIEEgdXRpbGl6YcOnw6NvIGRvcyBtw6l0b2RvcyBkZXN0YSBjbGFzc2Ugw6kgZmVpdGEgYSBwYXJ0aXIgZG8gcmV0b3JubyBkbyBtw6l0b2RvIGBQb0VudGl0eS5maW5kKClgLiBQb3IgZXhlbXBsbyxcbiAqIHBhcmEgdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5wYWdlKClgLCDDqSBuZWNlc3PDoXJpbzpcbiAqXG4gKiBgYGAgdHlwZXNjcmlwdFxuICogUG9TeW5jU2VydmljZS5nZXRNb2RlbCgnc2NoZW1hIG5hbWUnKS5maW5kKCkucGFnZSgyKS5leGVjKCk7XG4gKiBgYGBcbiAqXG4gKiBPIGBQb1F1ZXJ5QnVpbGRlcmAgZm9pIHByb2pldGFkbyBwYXJhIHF1ZSBvcyBzZXVzIG3DqXRvZG9zIHNlamFtXG4gKiBjaGFtYWRvcyBlbSBjYXNjYXRhIGUgYW8gZmluYWwgZGVzc2UgZW5jYWRlYW1lbnRvIGludm9jYXIgbyBtw6l0b2RvXG4gKiBgUG9RdWVyeUJ1aWxkZXIuZXhlYygpYCBwYXJhIHF1ZSBhIGJ1c2NhIHNlamEgY29uY2x1w61kYS4gUG9yIGV4ZW1wbG86XG4gKlxuICogYGBgIHR5cGVzY3JpcHRcbiAqIFBvU3luY1NlcnZpY2VcbiAqICAgLmdldE1vZGVsKCdzY2hlbWEgbmFtZScpXG4gKiAgIC5maW5kKClcbiAqICAgLnBhZ2UoMilcbiAqICAgLnBhZ2VTaXplKDUpXG4gKiAgIC5zb3J0KClcbiAqICAgLmV4ZWMoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUG9RdWVyeUJ1aWxkZXIge1xuICBwcml2YXRlIGZpZWxkczogc3RyaW5nO1xuICBwcml2YXRlIGZpbHRlcnM6IGFueTtcblxuICBwcml2YXRlIF9saW1pdDogbnVtYmVyO1xuICBwcml2YXRlIF9wYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgX3BhZ2VTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgX3NvcnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvU2NoZW1hU2VydmljZTogUG9TY2hlbWFTZXJ2aWNlLCBwcml2YXRlIHNjaGVtYTogUG9TeW5jU2NoZW1hKSB7XG4gICAgdGhpcy5fcGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzID0ge307XG4gIH1cblxuICAvKipcbiAgICogQW8gZmluYWwgZGEgY2hhbWFkYSBkb3MgbcOpdG9kb3MgZG8gYFBvUXVlcnlCdWlsZGVyYCB1dGlsaXphZG9zLCBlc3RlIG3DqXRvZG8gZGV2ZSBzZXIgY2hhbWFkbyBwYXJhIHF1ZSBhIGJ1c2NhIHNlamEgY29uY2x1w61kYS5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZTxQb1Jlc3BvbnNlQXBpIHwgb2JqZWN0Pn0gUmVnaXN0cm9zIGRvICpzY2hlbWEqIG5hIHF1YWwgZm9pIGFwbGljYWRvIGEgY29uc3VsdGEuXG4gICAqL1xuICBhc3luYyBleGVjKCk6IFByb21pc2U8UG9SZXNwb25zZUFwaSB8IG9iamVjdD4ge1xuICAgIGxldCBzdG9yYWdlRGF0YSA9IGF3YWl0IHRoaXMucG9TY2hlbWFTZXJ2aWNlLmdldEFsbCh0aGlzLnNjaGVtYS5uYW1lKTtcblxuICAgIGlmIChzdG9yYWdlRGF0YSAmJiBzdG9yYWdlRGF0YS5sZW5ndGgpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpLmxlbmd0aCkge1xuICAgICAgICBzdG9yYWdlRGF0YSA9IHRoaXMuYXBwbHlGaWx0ZXJzKHN0b3JhZ2VEYXRhKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpZWxkcykge1xuICAgICAgICBzdG9yYWdlRGF0YSA9IHRoaXMuYXBwbHlGaWVsZHModGhpcy5zY2hlbWEuZmllbGRzLCBzdG9yYWdlRGF0YSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fc29ydCkge1xuICAgICAgICBzdG9yYWdlRGF0YSA9IHRoaXMub3JkZXIoc3RvcmFnZURhdGEsIHRoaXMuX3NvcnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2VEYXRhWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGUoc3RvcmFnZURhdGEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoYXNOZXh0OiBmYWxzZSxcbiAgICAgICAgaXRlbXM6IFtdXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgZmlsdHJvcyBzb2JyZSBvcyByZWdpc3Ryb3MsIGJhc2VhZG9zIG5vcyBjYW1wb3MgZSB2YWxvcmVzIGRlZmluaWRvcyBjb21vIGZpbHRyby4gUG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBQb1F1ZXJ5QnVpbGRlci5maWx0ZXIoeyBuYW1lOiAnTWFyaWUnLCBhZ2U6IDI0IH0pO1xuICAgKiBgYGBcbiAgICogUmV0b3JuYSB0b2RvcyBvcyByZWdpc3Ryb3MgcXVlIGNvbnRlbmhhbSBhIHByb3ByaWVkYWRlIGBuYW1lYCBpZ3VhbCBhIE1hcmllIGUgYGFnZWAgaWd1YWwgYSAyNC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbHRlciBPYmpldG8gcXVlIGNvbnTDqW0gb3MgY2FtcG9zIGUgdmFsb3JlcyBhIHNlcmVtIGZpbHRyYWRvcyBubyAqc2NoZW1hKi5cbiAgICpcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxuICAgKi9cbiAgZmlsdGVyKGZpbHRlcj86IG9iamVjdCk6IFBvUXVlcnlCdWlsZGVyIHtcbiAgICBpZiAoZmlsdGVyICYmIHR5cGVvZiBmaWx0ZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSB7IC4uLnRoaXMuZmlsdGVycywgLi4uZmlsdGVyIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTGltaXRhIG8gbsO6bWVybyBkZSByZWdpc3Ryb3MgcXVlIHNlcsOjbyByZXRvcm5hZG9zLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgTsO6bWVybyBkZSByZWdpc3Ryb3MgcmV0b3JuYWRvcy5cbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxuICAgKi9cbiAgbGltaXQobGltaXQ6IG51bWJlcik6IFBvUXVlcnlCdWlsZGVyIHtcbiAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzcGVjaWZpY2EgYSBww6FnaW5hIGRlIHJlZ2lzdHJvcyBxdWUgc2UgZGVzZWphIHJldG9ybmFyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZSBOw7ptZXJvIGRhIHDDoWdpbmEuXG4gICAqIEByZXR1cm5zIHtQb1F1ZXJ5QnVpbGRlcn0gT2JqZXRvIHF1ZSBwb3NzaWJpbGl0YSBlbmNhZGVhciB1bSBub3ZvIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cbiAgICovXG4gIHBhZ2UocGFnZTogbnVtYmVyKTogUG9RdWVyeUJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgcGFnZSB9KTtcblxuICAgIHRoaXMuX3BhZ2UgPSBwYWdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBxdWFudG9zIGVsZW1lbnRvcyBzZXLDo28gcmV0b3JuYWRvcyBwb3IgcMOhZ2luYS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplIE7Dum1lcm8gZGUgcmVnaXN0cm9zIHBvciBww6FnaW5hLlxuICAgKiBAcmV0dXJucyB7UG9RdWVyeUJ1aWxkZXJ9IE9iamV0byBxdWUgcG9zc2liaWxpdGEgZW5jYWRlYXIgdW0gbm92byBtw6l0b2RvIGRvIGBQb1F1ZXJ5QnVpbGRlcmAuXG4gICAqL1xuICBwYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKTogUG9RdWVyeUJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgcGFnZVNpemUgfSk7XG5cbiAgICB0aGlzLl9wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFV0aWxpemFkbyBwYXJhIGRlZmluaXIgcXVhaXMgY2FtcG9zIGRvICpzY2hlbWEqIHNlcsOjbyByZXRvcm5hZG9zIG5hIGNvbnN1bHRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGRzIENhbXBvcyBxdWUgc2Vyw6NvIHJldG9ybmFkb3Mgbm9zIHJlZ2lzdHJvcy4gRXN0ZSBjYW1wb3MgZGV2ZW0gZXN0YXIgZGVudHJvIGRlXG4gICAqIHVtYSAqc3RyaW5nKiBzZXBhcmFkb3MgcG9yIGVzcGHDp28gcG9kZW5kbyB1c2FyIG8gY2FyYWN0ZXJlIGAtYCBwYXJhIGV4Y2x1aXIgY2FtcG9zLlxuICAgKiBQb3IgZXhlbXBsbywgYSBkZWZpbmnDp8OjbyBhYmFpeG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zZWxlY3QoJ25hbWUgYWdlIGFkZHJlc3MnKTtcbiAgICogYGBgXG4gICAqIElyw6EgcmV0b3JuYXIgYXBlbmFzIG9zIGNhbXBvcyBgbmFtZWAsIGBhZ2VgIGUgYGFkZHJlc3NgLiBQYXJhIG7Do28gcmV0b3JuYXIgdW0gY2FtcG8gb3UgbWFpcyBiYXN0YSBmYXplcjpcbiAgICpcbiAgICogYGBgXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnLW5hbWUgLWFnZScpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxuICAgKi9cbiAgc2VsZWN0KGZpZWxkczogc3RyaW5nKTogUG9RdWVyeUJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgZmllbGRzIH0pO1xuXG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogT3JkZW5hIG9zIHJlZ2lzdHJvcyBwb3IgdW0gY2FtcG8uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCBDYW1wbyBhIHNlciBvcmRlbmFkby4gUGFyYSBvcmRlbmFyIGRlIGZvcm1hIGRlY3Jlc2NlbnRlIGJhc3RhIGNvbG9jYXIgbyBjYXJhY3RlcmUgYC1gXG4gICAqIG5hIGZyZW50ZSBkbyBjYW1wby4gUG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zb3J0KCctbmFtZScpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxuICAgKi9cbiAgc29ydChmaWVsZDogc3RyaW5nKTogUG9RdWVyeUJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgZmllbGQgfSk7XG5cbiAgICB0aGlzLl9zb3J0ID0gZmllbGQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRXNzYSBmdW7Dp8OjbyBzZXJ2ZSBjb21vIGFsaWFzIHBhcmEgbyBgUG9RdWVyeUJ1aWxkZXIuZmlsdGVyKClgLiDDiSB1dGlsaXphZGEgc29tZW50ZSBwYXJhIGRhciBtYWlvciBsZWdpYmlsaWRhZGUgYW8gY8OzZGlnby5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbHRlciBPYmpldG8gcXVlIGNvbnTDqW0gb3MgY2FtcG9zIGUgdmFsb3JlcyBhIHNlcmVtIGZpbHRyYWRvcyBubyAqc2NoZW1hKi5cbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxuICAgKi9cbiAgd2hlcmUoZmlsdGVyOiBvYmplY3QpOiBQb1F1ZXJ5QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZpbHRlcik7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmllbGRzKHNjaGVtYUZpZWxkczogQXJyYXk8YW55PiwgZGF0YTogQXJyYXk8b2JqZWN0Pik6IEFycmF5PG9iamVjdD4ge1xuICAgIGNvbnN0IHJlY2VpdmVkRmllbGRzID0gdGhpcy5maWVsZHMuc3BsaXQoJyAnKTtcbiAgICBsZXQgcmVzdHJpY3RlZEZpZWxkcyA9IFtdO1xuICAgIGxldCBzZWxlY3RlZEZpZWxkcyA9IFtdO1xuXG4gICAgW3NlbGVjdGVkRmllbGRzLCByZXN0cmljdGVkRmllbGRzXSA9IHRoaXMuZ3JvdXBGaWVsZHMocmVjZWl2ZWRGaWVsZHMpO1xuXG4gICAgaWYgKCFzZWxlY3RlZEZpZWxkcy5sZW5ndGggJiYgcmVzdHJpY3RlZEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHNlbGVjdGVkRmllbGRzID0gWy4uLnNjaGVtYUZpZWxkc107XG4gICAgfVxuXG4gICAgaWYgKHJlc3RyaWN0ZWRGaWVsZHMubGVuZ3RoKSB7XG4gICAgICBzZWxlY3RlZEZpZWxkcyA9IHRoaXMucmVtb3ZlUmVzdHJpY3RlZEZpZWxkcyhyZXN0cmljdGVkRmllbGRzLCBzZWxlY3RlZEZpZWxkcyk7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRGaWVsZHMgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZShzZWxlY3RlZEZpZWxkcyk7XG5cbiAgICByZXR1cm4gdGhpcy5yZW1vdmVGaWVsZHNEYXRhKGRhdGEsIHNlbGVjdGVkRmllbGRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKGRhdGE6IEFycmF5PG9iamVjdD4pOiBBcnJheTxvYmplY3Q+IHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpLmZvckVhY2goZmlsdGVyS2V5ID0+IHtcbiAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+IGl0ZW1bZmlsdGVyS2V5XSA9PT0gdGhpcy5maWx0ZXJzW2ZpbHRlcktleV0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwRmllbGRzKHJlY2VpdmVkRmllbGRzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8QXJyYXk8c3RyaW5nPj4ge1xuICAgIGNvbnN0IHJlc3RyaWN0ZWRGaWVsZHMgPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEZpZWxkcyA9IFtdO1xuXG4gICAgcmVjZWl2ZWRGaWVsZHMuZm9yRWFjaChmaWVsZHMgPT4ge1xuICAgICAgaWYgKGZpZWxkcy5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgcmVzdHJpY3RlZEZpZWxkcy5wdXNoKGZpZWxkcy5zdWJzdHJpbmcoMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRGaWVsZHMucHVzaChmaWVsZHMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBbc2VsZWN0ZWRGaWVsZHMsIHJlc3RyaWN0ZWRGaWVsZHNdO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWdpbmF0ZShkYXRhOiBBcnJheTxhbnk+KTogeyBoYXNOZXh0OiBib29sZWFuOyBpdGVtczogQXJyYXk8YW55PiB9IHtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLl9wYWdlU2l6ZSB8fCBkYXRhTGVuZ3RoO1xuXG4gICAgY29uc3QgcGFnZXMgPSBNYXRoLmNlaWwoZGF0YUxlbmd0aCAvIHBhZ2VTaXplKTtcbiAgICBjb25zdCBiZWdpbiA9IHRoaXMuX3BhZ2UgKiBwYWdlU2l6ZSAtIHBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IGJlZ2luICsgcGFnZVNpemU7XG5cbiAgICByZXR1cm4geyBoYXNOZXh0OiB0aGlzLl9wYWdlIDwgcGFnZXMsIGl0ZW1zOiBkYXRhLnNsaWNlKGJlZ2luLCBlbmQpIH07XG4gIH1cblxuICBwcml2YXRlIG9yZGVyKGRhdGE6IEFycmF5PGFueT4sIHNvcnRpbmdGaWVsZDogc3RyaW5nKTogQXJyYXk8YW55PiB7XG4gICAgY29uc3QgZGVzY2VuZGluZ09yZGVyID0gc29ydGluZ0ZpZWxkLnN0YXJ0c1dpdGgoJy0nKTtcbiAgICBzb3J0aW5nRmllbGQgPSBkZXNjZW5kaW5nT3JkZXIgPyBzb3J0aW5nRmllbGQuc3Vic3RyKDEpIDogc29ydGluZ0ZpZWxkO1xuXG4gICAgcmV0dXJuIGRhdGEuc29ydCgob3B0aW9uQSwgb3B0aW9uQikgPT4ge1xuICAgICAgaWYgKG9wdGlvbkFbc29ydGluZ0ZpZWxkXSA+IG9wdGlvbkJbc29ydGluZ0ZpZWxkXSkge1xuICAgICAgICByZXR1cm4gIWRlc2NlbmRpbmdPcmRlciA/IDEgOiAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbkFbc29ydGluZ0ZpZWxkXSA8IG9wdGlvbkJbc29ydGluZ0ZpZWxkXSkge1xuICAgICAgICByZXR1cm4gIWRlc2NlbmRpbmdPcmRlciA/IC0xIDogMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUR1cGxpY2F0ZShmaWVsZHMpOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoaXRlbSwgcG9zaXRpb24pID0+IGZpZWxkcy5pbmRleE9mKGl0ZW0pID09PSBwb3NpdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUZpZWxkc0RhdGEoZGF0YTogQXJyYXk8b2JqZWN0PiwgY2hvc2VuRmllbGRzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8b2JqZWN0PiB7XG4gICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChrZXlJdGVtID0+IHtcbiAgICAgICAgaWYgKCFjaG9zZW5GaWVsZHMuaW5jbHVkZXMoa2V5SXRlbSkpIHtcbiAgICAgICAgICBkZWxldGUgaXRlbVtrZXlJdGVtXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlc3RyaWN0ZWRGaWVsZHMocmVzdHJpY3RlZEZpZWxkczogQXJyYXk8YW55PiwgZmllbGRzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gIXJlc3RyaWN0ZWRGaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbiAgfVxufVxuIl19
@@ -1,31 +0,0 @@
1
- import { HttpClientModule } from '@angular/common/http';
2
- import { NgModule } from '@angular/core';
3
- import { Network } from '@ionic-native/network/ngx';
4
- import { PoEventSourcingService } from './services/po-event-sourcing/po-event-sourcing.service';
5
- import { PoHttpClientService } from './services/po-http-client/po-http-client.service';
6
- import { PoNetworkService } from './services/po-network/po-network.service';
7
- import { PoSchemaDefinitionService } from './services/po-schema/po-schema-definition/po-schema-definition.service';
8
- import { PoSchemaService } from './services/po-schema/po-schema.service';
9
- import { PoSyncService } from './services/po-sync/po-sync.service';
10
- /**
11
- * @description
12
- *
13
- * Módulo do componente PoSync responsável pela sincronia de dados com backends
14
- */
15
- export class PoSyncModule {
16
- }
17
- PoSyncModule.decorators = [
18
- { type: NgModule, args: [{
19
- providers: [
20
- PoEventSourcingService,
21
- PoNetworkService,
22
- PoSchemaDefinitionService,
23
- PoSchemaService,
24
- PoSyncService,
25
- PoHttpClientService,
26
- Network
27
- ],
28
- imports: [HttpClientModule]
29
- },] }
30
- ];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvcG8tc3luYy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRTs7OztHQUlHO0FBYUgsTUFBTSxPQUFPLFlBQVk7OztZQVp4QixRQUFRLFNBQUM7Z0JBQ1IsU0FBUyxFQUFFO29CQUNULHNCQUFzQjtvQkFDdEIsZ0JBQWdCO29CQUNoQix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixtQkFBbUI7b0JBQ25CLE9BQU87aUJBQ1I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvbmV0d29yay9uZ3gnO1xuXG5pbXBvcnQgeyBQb0V2ZW50U291cmNpbmdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1ldmVudC1zb3VyY2luZy9wby1ldmVudC1zb3VyY2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvSHR0cENsaWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWh0dHAtY2xpZW50L3BvLWh0dHAtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9OZXR3b3JrU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbmV0d29yay9wby1uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS1kZWZpbml0aW9uL3BvLXNjaGVtYS1kZWZpbml0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9TY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1zY2hlbWEvcG8tc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9TeW5jU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tc3luYy9wby1zeW5jLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE3Ds2R1bG8gZG8gY29tcG9uZW50ZSBQb1N5bmMgcmVzcG9uc8OhdmVsIHBlbGEgc2luY3JvbmlhIGRlIGRhZG9zIGNvbSBiYWNrZW5kc1xuICovXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBQb0V2ZW50U291cmNpbmdTZXJ2aWNlLFxuICAgIFBvTmV0d29ya1NlcnZpY2UsXG4gICAgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSxcbiAgICBQb1NjaGVtYVNlcnZpY2UsXG4gICAgUG9TeW5jU2VydmljZSxcbiAgICBQb0h0dHBDbGllbnRTZXJ2aWNlLFxuICAgIE5ldHdvcmtcbiAgXSxcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBvU3luY01vZHVsZSB7fVxuIl19