@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.
- package/README.md +22 -22
- package/bundles/po-ui-ng-sync.umd.js +2915 -2915
- package/bundles/po-ui-ng-sync.umd.js.map +1 -1
- package/esm2015/lib/index.js +15 -15
- package/esm2015/lib/models/index.js +6 -6
- package/esm2015/lib/models/po-data-message.model.js +57 -57
- package/esm2015/lib/models/po-data-transform.model.js +22 -22
- package/esm2015/lib/models/po-entity/po-entity.model.js +229 -229
- package/esm2015/lib/models/po-event-sourcing-error-response.model.js +17 -17
- package/esm2015/lib/models/po-network-status.model.js +44 -44
- package/esm2015/lib/models/po-network-type.enum.js +30 -30
- package/esm2015/lib/models/po-query-builder/po-query-builder.model.js +241 -241
- package/esm2015/lib/models/po-request-type.enum.js +16 -16
- package/esm2015/lib/po-sync.module.js +31 -31
- package/esm2015/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.js +17 -17
- package/esm2015/lib/services/po-event-sourcing/index.js +4 -4
- package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.js +2 -2
- package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.js +2 -2
- package/esm2015/lib/services/po-event-sourcing/po-event-sourcing.service.js +411 -411
- package/esm2015/lib/services/po-http-client/interfaces/po-http-header-option.interface.js +11 -11
- package/esm2015/lib/services/po-http-client/interfaces/po-http-request-data.interface.js +2 -2
- package/esm2015/lib/services/po-http-client/interfaces/po-response-api.interface.js +2 -2
- package/esm2015/lib/services/po-http-client/po-http-client.service.js +147 -147
- package/esm2015/lib/services/po-http-client/po-http-request-type.enum.js +25 -25
- package/esm2015/lib/services/po-network/po-network.service.js +58 -58
- package/esm2015/lib/services/po-schema/index.js +4 -4
- package/esm2015/lib/services/po-schema/po-schema-definition/po-schema-definition.service.js +80 -80
- package/esm2015/lib/services/po-schema/po-schema-util/po-schema-util.model.js +124 -124
- package/esm2015/lib/services/po-schema/po-schema.service.js +198 -198
- package/esm2015/lib/services/po-sync/interfaces/po-sync-config.interface.js +2 -2
- package/esm2015/lib/services/po-sync/interfaces/po-sync-field-options.interface.js +2 -2
- package/esm2015/lib/services/po-sync/interfaces/po-sync-response.interface.js +2 -2
- package/esm2015/lib/services/po-sync/interfaces/po-sync-schema.interface.js +2 -2
- package/esm2015/lib/services/po-sync/po-sync.service.js +336 -336
- package/esm2015/lib/utils/utils.js +63 -63
- package/esm2015/po-ui-ng-sync.js +8 -8
- package/esm2015/public-api.js +2 -2
- package/fesm2015/po-ui-ng-sync.js +2047 -2047
- package/fesm2015/po-ui-ng-sync.js.map +1 -1
- package/lib/index.d.ts +14 -14
- package/lib/models/index.d.ts +5 -5
- package/lib/models/po-data-message.model.d.ts +46 -46
- package/lib/models/po-data-transform.model.d.ts +52 -52
- package/lib/models/po-entity/po-entity.model.d.ts +122 -122
- package/lib/models/po-event-sourcing-error-response.model.d.ts +20 -20
- package/lib/models/po-network-status.model.d.ts +25 -25
- package/lib/models/po-network-type.enum.d.ts +28 -28
- package/lib/models/po-query-builder/po-query-builder.model.d.ts +126 -126
- package/lib/models/po-request-type.enum.d.ts +14 -14
- package/lib/po-sync.module.d.ts +7 -7
- package/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.d.ts +11 -11
- package/lib/services/po-event-sourcing/index.d.ts +3 -3
- package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.d.ts +26 -26
- package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.d.ts +16 -16
- package/lib/services/po-event-sourcing/po-event-sourcing.service.d.ts +71 -71
- package/lib/services/po-http-client/interfaces/po-http-header-option.interface.d.ts +15 -15
- package/lib/services/po-http-client/interfaces/po-http-request-data.interface.d.ts +24 -24
- package/lib/services/po-http-client/interfaces/po-response-api.interface.d.ts +14 -14
- package/lib/services/po-http-client/po-http-client.service.d.ts +75 -75
- package/lib/services/po-http-client/po-http-request-type.enum.d.ts +23 -23
- package/lib/services/po-network/po-network.service.d.ts +33 -33
- package/lib/services/po-schema/index.d.ts +3 -3
- package/lib/services/po-schema/po-schema-definition/po-schema-definition.service.d.ts +48 -48
- package/lib/services/po-schema/po-schema-util/po-schema-util.model.d.ts +79 -79
- package/lib/services/po-schema/po-schema.service.d.ts +95 -95
- package/lib/services/po-sync/interfaces/po-sync-config.interface.d.ts +24 -24
- package/lib/services/po-sync/interfaces/po-sync-field-options.interface.d.ts +15 -15
- package/lib/services/po-sync/interfaces/po-sync-response.interface.d.ts +20 -20
- package/lib/services/po-sync/interfaces/po-sync-schema.interface.d.ts +37 -37
- package/lib/services/po-sync/po-sync.service.d.ts +159 -159
- package/lib/utils/utils.d.ts +36 -36
- package/package.json +4 -4
- package/po-ui-ng-sync-5.22.3.tgz +0 -0
- package/po-ui-ng-sync.d.ts +8 -8
- package/public-api.d.ts +1 -1
- package/schematics/README.md +169 -169
- package/schematics/collection.json +15 -15
- package/schematics/migrations.json +25 -25
- package/schematics/ng-add/index.d.ts +7 -7
- package/schematics/ng-add/index.js +33 -33
- package/schematics/ng-add/index.spec.d.ts +1 -1
- package/schematics/ng-add/index.spec.js +62 -62
- package/schematics/ng-add/schema.json +7 -7
- package/schematics/ng-generate/schema/files/__path__/__name@dasherize__/__name@dasherize__.constants.ts.template +13 -13
- package/schematics/ng-generate/schema/index.d.ts +4 -4
- package/schematics/ng-generate/schema/index.js +12 -12
- package/schematics/ng-generate/schema/index.spec.d.ts +1 -1
- package/schematics/ng-generate/schema/index.spec.js +44 -44
- package/schematics/ng-generate/schema/schema.d.ts +3 -3
- package/schematics/ng-generate/schema/schema.js +2 -2
- package/schematics/ng-generate/schema/schema.json +31 -31
- package/schematics/ng-update/v2/changes.d.ts +8 -8
- package/schematics/ng-update/v2/changes.js +20 -20
- package/schematics/ng-update/v2/index.d.ts +5 -5
- package/schematics/ng-update/v2/index.js +101 -101
- package/schematics/ng-update/v3/changes.d.ts +2 -2
- package/schematics/ng-update/v3/changes.js +14 -14
- package/schematics/ng-update/v3/index.d.ts +1 -1
- package/schematics/ng-update/v3/index.js +16 -16
- package/schematics/ng-update/v4/changes.d.ts +2 -2
- package/schematics/ng-update/v4/changes.js +14 -14
- package/schematics/ng-update/v4/index.d.ts +1 -1
- package/schematics/ng-update/v4/index.js +15 -15
- package/schematics/ng-update/v5/changes.d.ts +2 -2
- package/schematics/ng-update/v5/changes.js +13 -13
- package/schematics/ng-update/v5/index.d.ts +1 -1
- package/schematics/ng-update/v5/index.js +15 -15
- package/po-ui-ng-sync-5.22.2.tgz +0 -0
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { PoStorageService } from '@po-ui/ng-storage';
|
|
4
|
-
import { PoSchemaUtil } from './../po-schema-util/po-schema-util.model';
|
|
5
|
-
/**
|
|
6
|
-
* @docsPrivate
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
*
|
|
10
|
-
* Serviço que disponibiliza métodos que permite operar sobre as definições dos *schemas*.
|
|
11
|
-
*/
|
|
12
|
-
export class PoSchemaDefinitionService {
|
|
13
|
-
constructor(poStorage) {
|
|
14
|
-
this.poStorage = poStorage;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Destrói a chave do *storage* que contém as definições dos *schemas*.
|
|
18
|
-
*
|
|
19
|
-
* > Para que não venham ocorrer erros em ações que dependam das definições dos *schemas*,
|
|
20
|
-
* recomenda-se utilizar o método `prepare()` em seguida.
|
|
21
|
-
*
|
|
22
|
-
* @returns {Promise<void>} Promessa que é resolvida quando a chave referente as definições dos *schemas* for destruída.
|
|
23
|
-
*/
|
|
24
|
-
destroy() {
|
|
25
|
-
return this.poStorage.remove(PoSchemaUtil.syncSchemasName);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Busca um *schema* a partir do nome informado.
|
|
29
|
-
*
|
|
30
|
-
* @param {string} schemaName Nome do *schema*.
|
|
31
|
-
* @returns {Promise<PoSyncSchema>} Promessa que é resolvida quando o *schema* for retornado.
|
|
32
|
-
*/
|
|
33
|
-
get(schemaName) {
|
|
34
|
-
return this.poStorage.getItemByField(PoSchemaUtil.syncSchemasName, 'name', schemaName);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Retorna uma promessa com a lista dos *schemas* definidos.
|
|
38
|
-
*
|
|
39
|
-
* @returns {Promise<Array<PoSyncSchema>>} Promessa que é resolvida quando a lista dos *schemas* definidos for retornada.
|
|
40
|
-
*/
|
|
41
|
-
getAll() {
|
|
42
|
-
return this.poStorage.get(PoSchemaUtil.syncSchemasName);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Salva uma lista de *schemas*.
|
|
46
|
-
*
|
|
47
|
-
* @param {Array<PoSyncSchema>} schemas Lista de schemas que serão salvos.
|
|
48
|
-
* @returns {Promise<Array<PoSyncSchema>>} Promessa que é resolvida quando a lista de *schemas* for salva.
|
|
49
|
-
*/
|
|
50
|
-
saveAll(schemas) {
|
|
51
|
-
return this.poStorage.set(PoSchemaUtil.syncSchemasName, schemas);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Atualiza um *schema* a partir do *schema name*.
|
|
55
|
-
*
|
|
56
|
-
* @param {PoSyncSchema} updatedSchema **Schema* que será atualizado.
|
|
57
|
-
*/
|
|
58
|
-
update(updatedSchema) {
|
|
59
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
let schemas = yield this.getAll();
|
|
61
|
-
const replaceUpdatedSchema = schema => {
|
|
62
|
-
if (schema.name === updatedSchema.name) {
|
|
63
|
-
return updatedSchema;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
return schema;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
schemas = schemas.map(replaceUpdatedSchema);
|
|
70
|
-
return this.saveAll(schemas);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
PoSchemaDefinitionService.decorators = [
|
|
75
|
-
{ type: Injectable }
|
|
76
|
-
];
|
|
77
|
-
PoSchemaDefinitionService.ctorParameters = () => [
|
|
78
|
-
{ type: PoStorageService }
|
|
79
|
-
];
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { PoStorageService } from '@po-ui/ng-storage';
|
|
4
|
+
import { PoSchemaUtil } from './../po-schema-util/po-schema-util.model';
|
|
5
|
+
/**
|
|
6
|
+
* @docsPrivate
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
*
|
|
10
|
+
* Serviço que disponibiliza métodos que permite operar sobre as definições dos *schemas*.
|
|
11
|
+
*/
|
|
12
|
+
export class PoSchemaDefinitionService {
|
|
13
|
+
constructor(poStorage) {
|
|
14
|
+
this.poStorage = poStorage;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Destrói a chave do *storage* que contém as definições dos *schemas*.
|
|
18
|
+
*
|
|
19
|
+
* > Para que não venham ocorrer erros em ações que dependam das definições dos *schemas*,
|
|
20
|
+
* recomenda-se utilizar o método `prepare()` em seguida.
|
|
21
|
+
*
|
|
22
|
+
* @returns {Promise<void>} Promessa que é resolvida quando a chave referente as definições dos *schemas* for destruída.
|
|
23
|
+
*/
|
|
24
|
+
destroy() {
|
|
25
|
+
return this.poStorage.remove(PoSchemaUtil.syncSchemasName);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Busca um *schema* a partir do nome informado.
|
|
29
|
+
*
|
|
30
|
+
* @param {string} schemaName Nome do *schema*.
|
|
31
|
+
* @returns {Promise<PoSyncSchema>} Promessa que é resolvida quando o *schema* for retornado.
|
|
32
|
+
*/
|
|
33
|
+
get(schemaName) {
|
|
34
|
+
return this.poStorage.getItemByField(PoSchemaUtil.syncSchemasName, 'name', schemaName);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retorna uma promessa com a lista dos *schemas* definidos.
|
|
38
|
+
*
|
|
39
|
+
* @returns {Promise<Array<PoSyncSchema>>} Promessa que é resolvida quando a lista dos *schemas* definidos for retornada.
|
|
40
|
+
*/
|
|
41
|
+
getAll() {
|
|
42
|
+
return this.poStorage.get(PoSchemaUtil.syncSchemasName);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Salva uma lista de *schemas*.
|
|
46
|
+
*
|
|
47
|
+
* @param {Array<PoSyncSchema>} schemas Lista de schemas que serão salvos.
|
|
48
|
+
* @returns {Promise<Array<PoSyncSchema>>} Promessa que é resolvida quando a lista de *schemas* for salva.
|
|
49
|
+
*/
|
|
50
|
+
saveAll(schemas) {
|
|
51
|
+
return this.poStorage.set(PoSchemaUtil.syncSchemasName, schemas);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Atualiza um *schema* a partir do *schema name*.
|
|
55
|
+
*
|
|
56
|
+
* @param {PoSyncSchema} updatedSchema **Schema* que será atualizado.
|
|
57
|
+
*/
|
|
58
|
+
update(updatedSchema) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
let schemas = yield this.getAll();
|
|
61
|
+
const replaceUpdatedSchema = schema => {
|
|
62
|
+
if (schema.name === updatedSchema.name) {
|
|
63
|
+
return updatedSchema;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return schema;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
schemas = schemas.map(replaceUpdatedSchema);
|
|
70
|
+
return this.saveAll(schemas);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
PoSchemaDefinitionService.decorators = [
|
|
75
|
+
{ type: Injectable }
|
|
76
|
+
];
|
|
77
|
+
PoSchemaDefinitionService.ctorParameters = () => [
|
|
78
|
+
{ type: PoStorageService }
|
|
79
|
+
];
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9zZXJ2aWNlcy9wby1zY2hlbWEvcG8tc2NoZW1hLWRlZmluaXRpb24vcG8tc2NoZW1hLWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHeEU7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkQ7Ozs7Ozs7T0FPRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsVUFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsT0FBNEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0csTUFBTSxDQUFDLGFBQTJCOztZQUN0QyxJQUFJLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVsQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtvQkFDdEMsT0FBTyxhQUFhLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNMLE9BQU8sTUFBTSxDQUFDO2lCQUNmO1lBQ0gsQ0FBQyxDQUFDO1lBRUYsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBOzs7WUEvREYsVUFBVTs7O1lBWkYsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUG9TdG9yYWdlU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1zdG9yYWdlJztcclxuXHJcbmltcG9ydCB7IFBvU2NoZW1hVXRpbCB9IGZyb20gJy4vLi4vcG8tc2NoZW1hLXV0aWwvcG8tc2NoZW1hLXV0aWwubW9kZWwnO1xyXG5pbXBvcnQgeyBQb1N5bmNTY2hlbWEgfSBmcm9tICcuLy4uLy4uL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzUHJpdmF0ZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogU2VydmnDp28gcXVlIGRpc3BvbmliaWxpemEgbcOpdG9kb3MgcXVlIHBlcm1pdGUgb3BlcmFyIHNvYnJlIGFzIGRlZmluacOnw7VlcyBkb3MgKnNjaGVtYXMqLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb1N0b3JhZ2U6IFBvU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryw7NpIGEgY2hhdmUgZG8gKnN0b3JhZ2UqIHF1ZSBjb250w6ltIGFzIGRlZmluacOnw7VlcyBkb3MgKnNjaGVtYXMqLlxyXG4gICAqXHJcbiAgICogPiBQYXJhIHF1ZSBuw6NvIHZlbmhhbSBvY29ycmVyIGVycm9zIGVtIGHDp8O1ZXMgcXVlIGRlcGVuZGFtIGRhcyBkZWZpbmnDp8O1ZXMgZG9zICpzY2hlbWFzKixcclxuICAgKiByZWNvbWVuZGEtc2UgdXRpbGl6YXIgbyBtw6l0b2RvIGBwcmVwYXJlKClgIGVtIHNlZ3VpZGEuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYSBjaGF2ZSByZWZlcmVudGUgYXMgZGVmaW5pw6fDtWVzIGRvcyAqc2NoZW1hcyogZm9yIGRlc3RydcOtZGEuXHJcbiAgICovXHJcbiAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnBvU3RvcmFnZS5yZW1vdmUoUG9TY2hlbWFVdGlsLnN5bmNTY2hlbWFzTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdXNjYSB1bSAqc2NoZW1hKiBhIHBhcnRpciBkbyBub21lIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXHJcbiAgICogQHJldHVybnMge1Byb21pc2U8UG9TeW5jU2NoZW1hPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gbyAqc2NoZW1hKiBmb3IgcmV0b3JuYWRvLlxyXG4gICAqL1xyXG4gIGdldChzY2hlbWFOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFBvU3luY1NjaGVtYT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLmdldEl0ZW1CeUZpZWxkKFBvU2NoZW1hVXRpbC5zeW5jU2NoZW1hc05hbWUsICduYW1lJywgc2NoZW1hTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIHVtYSBwcm9tZXNzYSBjb20gYSBsaXN0YSBkb3MgKnNjaGVtYXMqIGRlZmluaWRvcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PFBvU3luY1NjaGVtYT4+fSBQcm9tZXNzYSBxdWUgw6kgcmVzb2x2aWRhIHF1YW5kbyBhIGxpc3RhIGRvcyAqc2NoZW1hcyogZGVmaW5pZG9zIGZvciByZXRvcm5hZGEuXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFByb21pc2U8QXJyYXk8UG9TeW5jU2NoZW1hPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLmdldChQb1NjaGVtYVV0aWwuc3luY1NjaGVtYXNOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhIHVtYSBsaXN0YSBkZSAqc2NoZW1hcyouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0FycmF5PFBvU3luY1NjaGVtYT59IHNjaGVtYXMgTGlzdGEgZGUgc2NoZW1hcyBxdWUgc2Vyw6NvIHNhbHZvcy5cclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxQb1N5bmNTY2hlbWE+Pn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYSBsaXN0YSBkZSAqc2NoZW1hcyogZm9yIHNhbHZhLlxyXG4gICAqL1xyXG4gIHNhdmVBbGwoc2NoZW1hczogQXJyYXk8UG9TeW5jU2NoZW1hPik6IFByb21pc2U8QXJyYXk8UG9TeW5jU2NoZW1hPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLnNldChQb1NjaGVtYVV0aWwuc3luY1NjaGVtYXNOYW1lLCBzY2hlbWFzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIHVtICpzY2hlbWEqIGEgcGFydGlyIGRvICpzY2hlbWEgbmFtZSouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gdXBkYXRlZFNjaGVtYSAqKlNjaGVtYSogcXVlIHNlcsOhIGF0dWFsaXphZG8uXHJcbiAgICovXHJcbiAgYXN5bmMgdXBkYXRlKHVwZGF0ZWRTY2hlbWE6IFBvU3luY1NjaGVtYSkge1xyXG4gICAgbGV0IHNjaGVtYXMgPSBhd2FpdCB0aGlzLmdldEFsbCgpO1xyXG5cclxuICAgIGNvbnN0IHJlcGxhY2VVcGRhdGVkU2NoZW1hID0gc2NoZW1hID0+IHtcclxuICAgICAgaWYgKHNjaGVtYS5uYW1lID09PSB1cGRhdGVkU2NoZW1hLm5hbWUpIHtcclxuICAgICAgICByZXR1cm4gdXBkYXRlZFNjaGVtYTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gc2NoZW1hO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHNjaGVtYXMgPSBzY2hlbWFzLm1hcChyZXBsYWNlVXBkYXRlZFNjaGVtYSk7XHJcbiAgICByZXR1cm4gdGhpcy5zYXZlQWxsKHNjaGVtYXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @docsPrivate
|
|
3
|
-
*
|
|
4
|
-
* @description
|
|
5
|
-
*
|
|
6
|
-
* Serviço utilitário para operações no PoSyncSchema.
|
|
7
|
-
*/
|
|
8
|
-
export class PoSchemaUtil {
|
|
9
|
-
/**
|
|
10
|
-
* Verica se existem campos locais no *schema* informado.
|
|
11
|
-
*
|
|
12
|
-
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
13
|
-
*
|
|
14
|
-
* @returns {boolean} Valor do tipo *boolean* que indica se existem campos locais no *schema* informado.
|
|
15
|
-
*/
|
|
16
|
-
static containsLocalFields(schema) {
|
|
17
|
-
if (schema.fields) {
|
|
18
|
-
return !!schema.fields.find(field => typeof field === 'object' && field.local);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Retorna o valor atual do `lastSync` para determinado *schema*.
|
|
23
|
-
*
|
|
24
|
-
* @param {Array<PoSyncSchema>} storageSchemas Lista de *schemas* a serem pesquisados.
|
|
25
|
-
* @param {string} schemaName Nome do *schema* que se deseja ler o lastSync.
|
|
26
|
-
*
|
|
27
|
-
* @returns {string} Retorna uma *string* com o valor da última sincronização.
|
|
28
|
-
*/
|
|
29
|
-
static getLastSync(storageSchemas, schemaName) {
|
|
30
|
-
if (storageSchemas) {
|
|
31
|
-
const schemaFound = storageSchemas.find(schema => schema.name === schemaName);
|
|
32
|
-
return schemaFound && schemaFound.lastSync ? schemaFound.lastSync : PoSchemaUtil.defaultLastSync;
|
|
33
|
-
}
|
|
34
|
-
return PoSchemaUtil.defaultLastSync;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Retorna a lista de campos locais definidos no *schema*.
|
|
38
|
-
*
|
|
39
|
-
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
40
|
-
*/
|
|
41
|
-
static getLocalFieldNames(schema) {
|
|
42
|
-
if (schema.fields) {
|
|
43
|
-
return schema.fields.reduce((fieldsAccumulator, currentField) => {
|
|
44
|
-
if (typeof currentField === 'object' && currentField.local) {
|
|
45
|
-
fieldsAccumulator.push(currentField.name);
|
|
46
|
-
}
|
|
47
|
-
return fieldsAccumulator;
|
|
48
|
-
}, []);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Retorna a lista de campos não locais definidos no *schema*.
|
|
53
|
-
*
|
|
54
|
-
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
55
|
-
*/
|
|
56
|
-
static getNonLocalFieldNames(schema) {
|
|
57
|
-
if (schema.fields) {
|
|
58
|
-
return schema.fields.reduce((fieldsAccumulator, currentField) => {
|
|
59
|
-
if (typeof currentField === 'string' || !currentField.local) {
|
|
60
|
-
fieldsAccumulator.push(typeof currentField === 'string' ? currentField : currentField.name);
|
|
61
|
-
}
|
|
62
|
-
return fieldsAccumulator;
|
|
63
|
-
}, []);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Retorna o `id` referente ao registro do *schema* informado.
|
|
68
|
-
*
|
|
69
|
-
* @param {object} record Registro que será buscado o id.
|
|
70
|
-
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
71
|
-
*/
|
|
72
|
-
static getRecordId(record, schema) {
|
|
73
|
-
return record[schema.idField] || record[PoSchemaUtil.syncInternalIdFieldName];
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Retorna a url correspondente do `PoSyncSchema` dependendo do tipo da requisição `PoRequestType`.
|
|
77
|
-
*
|
|
78
|
-
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
79
|
-
* @param {PoRequestType} requestType Tipo da requisição.
|
|
80
|
-
*/
|
|
81
|
-
static getUrl(schema, requestType) {
|
|
82
|
-
return schema[`${requestType}UrlApi`];
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Compara se dois objetos são iguais baseado na lista de campos.
|
|
86
|
-
*
|
|
87
|
-
* @param {Array<string>} fields Lista de campos a serem considerados na comparação.
|
|
88
|
-
* @param {any} model1 Objeto 1 a ser comparado.
|
|
89
|
-
* @param {any} model2 Objeto 2 a ser comparado.
|
|
90
|
-
*/
|
|
91
|
-
static isModelsEqual(fields, model1, model2) {
|
|
92
|
-
if (fields) {
|
|
93
|
-
return fields.every(field => JSON.stringify(model1[field]) === JSON.stringify(model2[field]));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Retorna uma lista com dois objetos referentes ao registro informado.
|
|
98
|
-
* O primeiro é o registro com os campos que vão para o servidor e o segundo é com os campos locais.
|
|
99
|
-
*
|
|
100
|
-
* @param {PoSyncSchema} schema **Schema* do registro.
|
|
101
|
-
* @param {object} record Registro que será realizada a separação dos campos locais e do servidor.
|
|
102
|
-
*/
|
|
103
|
-
static separateSchemaFields(schema, record) {
|
|
104
|
-
const localFields = PoSchemaUtil.getLocalFieldNames(schema);
|
|
105
|
-
const localRecord = {};
|
|
106
|
-
const serverRecord = {};
|
|
107
|
-
Object.keys(record).forEach(field => {
|
|
108
|
-
if (localFields.includes(field)) {
|
|
109
|
-
localRecord[field] = record[field];
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
serverRecord[field] = record[field];
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
return { serverRecord, localRecord };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/** Valor `default` para o campo `lastSync`. */
|
|
119
|
-
PoSchemaUtil.defaultLastSync = new Date(-8640000000000000).toISOString();
|
|
120
|
-
/** Nome da chave do identificador interno do sync. */
|
|
121
|
-
PoSchemaUtil.syncInternalIdFieldName = 'SyncInternalId';
|
|
122
|
-
/** Nome da chave no `storage` para os Schemas. */
|
|
123
|
-
PoSchemaUtil.syncSchemasName = 'SyncSchemas';
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLXV0aWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS11dGlsL3BvLXNjaGVtYS11dGlsLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBVXZCOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFvQjtRQUNwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQW1DLEVBQUUsVUFBa0I7UUFDL0UsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDOUUsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztTQUNsRztRQUNELE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFvQjtRQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlC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b250ZW50IjpbImltcG9ydCB7IFBvUmVxdWVzdFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcG8tcmVxdWVzdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUG9TeW5jRmllbGRPcHRpb25zIH0gZnJvbSAnLi4vLi4vcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtZmllbGQtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9TeW5jU2NoZW1hIH0gZnJvbSAnLi4vLi4vcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtc2NoZW1hLmludGVyZmFjZSc7XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogU2VydmnDp28gdXRpbGl0w6FyaW8gcGFyYSBvcGVyYcOnw7VlcyBubyBQb1N5bmNTY2hlbWEuXG4gKi9cbmV4cG9ydCBjbGFzcyBQb1NjaGVtYVV0aWwge1xuICAvKiogVmFsb3IgYGRlZmF1bHRgIHBhcmEgbyBjYW1wbyBgbGFzdFN5bmNgLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXN0U3luYzogc3RyaW5nID0gbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgLyoqIE5vbWUgZGEgY2hhdmUgZG8gaWRlbnRpZmljYWRvciBpbnRlcm5vIGRvIHN5bmMuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgc3luY0ludGVybmFsSWRGaWVsZE5hbWU6IHN0cmluZyA9ICdTeW5jSW50ZXJuYWxJZCc7XG5cbiAgLyoqIE5vbWUgZGEgY2hhdmUgbm8gYHN0b3JhZ2VgIHBhcmEgb3MgU2NoZW1hcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzeW5jU2NoZW1hc05hbWU6IHN0cmluZyA9ICdTeW5jU2NoZW1hcyc7XG5cbiAgLyoqXG4gICAqIFZlcmljYSBzZSBleGlzdGVtIGNhbXBvcyBsb2NhaXMgbm8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBhIHNlciBwcm9jZXNzYWRvLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVmFsb3IgZG8gdGlwbyAqYm9vbGVhbiogcXVlIGluZGljYSBzZSBleGlzdGVtIGNhbXBvcyBsb2NhaXMgbm8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb250YWluc0xvY2FsRmllbGRzKHNjaGVtYTogUG9TeW5jU2NoZW1hKTogYm9vbGVhbiB7XG4gICAgaWYgKHNjaGVtYS5maWVsZHMpIHtcbiAgICAgIHJldHVybiAhIXNjaGVtYS5maWVsZHMuZmluZChmaWVsZCA9PiB0eXBlb2YgZmllbGQgPT09ICdvYmplY3QnICYmIGZpZWxkLmxvY2FsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBvIHZhbG9yIGF0dWFsIGRvIGBsYXN0U3luY2AgcGFyYSBkZXRlcm1pbmFkbyAqc2NoZW1hKi5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxQb1N5bmNTY2hlbWE+fSBzdG9yYWdlU2NoZW1hcyBMaXN0YSBkZSAqc2NoZW1hcyogYSBzZXJlbSBwZXNxdWlzYWRvcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYU5hbWUgTm9tZSBkbyAqc2NoZW1hKiBxdWUgc2UgZGVzZWphIGxlciBvIGxhc3RTeW5jLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXRvcm5hIHVtYSAqc3RyaW5nKiBjb20gbyB2YWxvciBkYSDDumx0aW1hIHNpbmNyb25pemHDp8Ojby5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TGFzdFN5bmMoc3RvcmFnZVNjaGVtYXM6IEFycmF5PFBvU3luY1NjaGVtYT4sIHNjaGVtYU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHN0b3JhZ2VTY2hlbWFzKSB7XG4gICAgICBjb25zdCBzY2hlbWFGb3VuZCA9IHN0b3JhZ2VTY2hlbWFzLmZpbmQoc2NoZW1hID0+IHNjaGVtYS5uYW1lID09PSBzY2hlbWFOYW1lKTtcbiAgICAgIHJldHVybiBzY2hlbWFGb3VuZCAmJiBzY2hlbWFGb3VuZC5sYXN0U3luYyA/IHNjaGVtYUZvdW5kLmxhc3RTeW5jIDogUG9TY2hlbWFVdGlsLmRlZmF1bHRMYXN0U3luYztcbiAgICB9XG4gICAgcmV0dXJuIFBvU2NoZW1hVXRpbC5kZWZhdWx0TGFzdFN5bmM7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhIGxpc3RhIGRlIGNhbXBvcyBsb2NhaXMgZGVmaW5pZG9zIG5vICpzY2hlbWEqLlxuICAgKlxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBhIHNlciBwcm9jZXNzYWRvLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRMb2NhbEZpZWxkTmFtZXMoc2NoZW1hOiBQb1N5bmNTY2hlbWEpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoc2NoZW1hLmZpZWxkcykge1xuICAgICAgcmV0dXJuIHNjaGVtYS5maWVsZHMucmVkdWNlKChmaWVsZHNBY2N1bXVsYXRvcjogQXJyYXk8c3RyaW5nPiwgY3VycmVudEZpZWxkOiBzdHJpbmcgfCBQb1N5bmNGaWVsZE9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RmllbGQgPT09ICdvYmplY3QnICYmIGN1cnJlbnRGaWVsZC5sb2NhbCkge1xuICAgICAgICAgIGZpZWxkc0FjY3VtdWxhdG9yLnB1c2goY3VycmVudEZpZWxkLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZHNBY2N1bXVsYXRvcjtcbiAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhIGxpc3RhIGRlIGNhbXBvcyBuw6NvIGxvY2FpcyBkZWZpbmlkb3Mgbm8gKnNjaGVtYSouXG4gICAqXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIGEgc2VyIHByb2Nlc3NhZG8uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE5vbkxvY2FsRmllbGROYW1lcyhzY2hlbWE6IFBvU3luY1NjaGVtYSk6IEFycmF5PHN0cmluZz4ge1xuICAgIGlmIChzY2hlbWEuZmllbGRzKSB7XG4gICAgICByZXR1cm4gc2NoZW1hLmZpZWxkcy5yZWR1Y2UoKGZpZWxkc0FjY3VtdWxhdG9yOiBBcnJheTxzdHJpbmc+LCBjdXJyZW50RmllbGQ6IHN0cmluZyB8IFBvU3luY0ZpZWxkT3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRGaWVsZCA9PT0gJ3N0cmluZycgfHwgIWN1cnJlbnRGaWVsZC5sb2NhbCkge1xuICAgICAgICAgIGZpZWxkc0FjY3VtdWxhdG9yLnB1c2godHlwZW9mIGN1cnJlbnRGaWVsZCA9PT0gJ3N0cmluZycgPyBjdXJyZW50RmllbGQgOiBjdXJyZW50RmllbGQubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkc0FjY3VtdWxhdG9yO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIG8gYGlkYCByZWZlcmVudGUgYW8gcmVnaXN0cm8gZG8gKnNjaGVtYSogaW5mb3JtYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVjb3JkIFJlZ2lzdHJvIHF1ZSBzZXLDoSBidXNjYWRvIG8gaWQuXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIGEgc2VyIHByb2Nlc3NhZG8uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFJlY29yZElkKHJlY29yZDogb2JqZWN0LCBzY2hlbWE6IFBvU3luY1NjaGVtYSkge1xuICAgIHJldHVybiByZWNvcmRbc2NoZW1hLmlkRmllbGRdIHx8IHJlY29yZFtQb1NjaGVtYVV0aWwuc3luY0ludGVybmFsSWRGaWVsZE5hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYSB1cmwgY29ycmVzcG9uZGVudGUgZG8gYFBvU3luY1NjaGVtYWAgZGVwZW5kZW5kbyBkbyB0aXBvIGRhIHJlcXVpc2nDp8OjbyBgUG9SZXF1ZXN0VHlwZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIGEgc2VyIHByb2Nlc3NhZG8uXG4gICAqIEBwYXJhbSB7UG9SZXF1ZXN0VHlwZX0gcmVxdWVzdFR5cGUgVGlwbyBkYSByZXF1aXNpw6fDo28uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFVybChzY2hlbWE6IFBvU3luY1NjaGVtYSwgcmVxdWVzdFR5cGU6IFBvUmVxdWVzdFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBzY2hlbWFbYCR7cmVxdWVzdFR5cGV9VXJsQXBpYF07XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyYSBzZSBkb2lzIG9iamV0b3Mgc8OjbyBpZ3VhaXMgYmFzZWFkbyBuYSBsaXN0YSBkZSBjYW1wb3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmllbGRzIExpc3RhIGRlIGNhbXBvcyBhIHNlcmVtIGNvbnNpZGVyYWRvcyBuYSBjb21wYXJhw6fDo28uXG4gICAqIEBwYXJhbSB7YW55fSBtb2RlbDEgT2JqZXRvIDEgYSBzZXIgY29tcGFyYWRvLlxuICAgKiBAcGFyYW0ge2FueX0gbW9kZWwyIE9iamV0byAyIGEgc2VyIGNvbXBhcmFkby5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNNb2RlbHNFcXVhbChmaWVsZHM6IEFycmF5PHN0cmluZz4sIG1vZGVsMTogYW55LCBtb2RlbDI6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIHJldHVybiBmaWVsZHMuZXZlcnkoZmllbGQgPT4gSlNPTi5zdHJpbmdpZnkobW9kZWwxW2ZpZWxkXSkgPT09IEpTT04uc3RyaW5naWZ5KG1vZGVsMltmaWVsZF0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSB1bWEgbGlzdGEgY29tIGRvaXMgb2JqZXRvcyByZWZlcmVudGVzIGFvIHJlZ2lzdHJvIGluZm9ybWFkby5cbiAgICogTyBwcmltZWlybyDDqSBvIHJlZ2lzdHJvIGNvbSBvcyBjYW1wb3MgcXVlIHbDo28gcGFyYSBvIHNlcnZpZG9yIGUgbyBzZWd1bmRvIMOpIGNvbSBvcyBjYW1wb3MgbG9jYWlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBkbyByZWdpc3Ryby5cbiAgICogQHBhcmFtIHtvYmplY3R9IHJlY29yZCBSZWdpc3RybyBxdWUgc2Vyw6EgcmVhbGl6YWRhIGEgc2VwYXJhw6fDo28gZG9zIGNhbXBvcyBsb2NhaXMgZSBkbyBzZXJ2aWRvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VwYXJhdGVTY2hlbWFGaWVsZHMoXG4gICAgc2NoZW1hOiBQb1N5bmNTY2hlbWEsXG4gICAgcmVjb3JkOiBvYmplY3RcbiAgKTogeyBzZXJ2ZXJSZWNvcmQ6IG9iamVjdDsgbG9jYWxSZWNvcmQ6IG9iamVjdCB9IHtcbiAgICBjb25zdCBsb2NhbEZpZWxkcyA9IFBvU2NoZW1hVXRpbC5nZXRMb2NhbEZpZWxkTmFtZXMoc2NoZW1hKTtcbiAgICBjb25zdCBsb2NhbFJlY29yZCA9IHt9O1xuICAgIGNvbnN0IHNlcnZlclJlY29yZCA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMocmVjb3JkKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChsb2NhbEZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpIHtcbiAgICAgICAgbG9jYWxSZWNvcmRbZmllbGRdID0gcmVjb3JkW2ZpZWxkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcnZlclJlY29yZFtmaWVsZF0gPSByZWNvcmRbZmllbGRdO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgc2VydmVyUmVjb3JkLCBsb2NhbFJlY29yZCB9O1xuICB9XG59XG4iXX0=
|
|
1
|
+
/**
|
|
2
|
+
* @docsPrivate
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
*
|
|
6
|
+
* Serviço utilitário para operações no PoSyncSchema.
|
|
7
|
+
*/
|
|
8
|
+
export class PoSchemaUtil {
|
|
9
|
+
/**
|
|
10
|
+
* Verica se existem campos locais no *schema* informado.
|
|
11
|
+
*
|
|
12
|
+
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
13
|
+
*
|
|
14
|
+
* @returns {boolean} Valor do tipo *boolean* que indica se existem campos locais no *schema* informado.
|
|
15
|
+
*/
|
|
16
|
+
static containsLocalFields(schema) {
|
|
17
|
+
if (schema.fields) {
|
|
18
|
+
return !!schema.fields.find(field => typeof field === 'object' && field.local);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Retorna o valor atual do `lastSync` para determinado *schema*.
|
|
23
|
+
*
|
|
24
|
+
* @param {Array<PoSyncSchema>} storageSchemas Lista de *schemas* a serem pesquisados.
|
|
25
|
+
* @param {string} schemaName Nome do *schema* que se deseja ler o lastSync.
|
|
26
|
+
*
|
|
27
|
+
* @returns {string} Retorna uma *string* com o valor da última sincronização.
|
|
28
|
+
*/
|
|
29
|
+
static getLastSync(storageSchemas, schemaName) {
|
|
30
|
+
if (storageSchemas) {
|
|
31
|
+
const schemaFound = storageSchemas.find(schema => schema.name === schemaName);
|
|
32
|
+
return schemaFound && schemaFound.lastSync ? schemaFound.lastSync : PoSchemaUtil.defaultLastSync;
|
|
33
|
+
}
|
|
34
|
+
return PoSchemaUtil.defaultLastSync;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retorna a lista de campos locais definidos no *schema*.
|
|
38
|
+
*
|
|
39
|
+
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
40
|
+
*/
|
|
41
|
+
static getLocalFieldNames(schema) {
|
|
42
|
+
if (schema.fields) {
|
|
43
|
+
return schema.fields.reduce((fieldsAccumulator, currentField) => {
|
|
44
|
+
if (typeof currentField === 'object' && currentField.local) {
|
|
45
|
+
fieldsAccumulator.push(currentField.name);
|
|
46
|
+
}
|
|
47
|
+
return fieldsAccumulator;
|
|
48
|
+
}, []);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retorna a lista de campos não locais definidos no *schema*.
|
|
53
|
+
*
|
|
54
|
+
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
55
|
+
*/
|
|
56
|
+
static getNonLocalFieldNames(schema) {
|
|
57
|
+
if (schema.fields) {
|
|
58
|
+
return schema.fields.reduce((fieldsAccumulator, currentField) => {
|
|
59
|
+
if (typeof currentField === 'string' || !currentField.local) {
|
|
60
|
+
fieldsAccumulator.push(typeof currentField === 'string' ? currentField : currentField.name);
|
|
61
|
+
}
|
|
62
|
+
return fieldsAccumulator;
|
|
63
|
+
}, []);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Retorna o `id` referente ao registro do *schema* informado.
|
|
68
|
+
*
|
|
69
|
+
* @param {object} record Registro que será buscado o id.
|
|
70
|
+
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
71
|
+
*/
|
|
72
|
+
static getRecordId(record, schema) {
|
|
73
|
+
return record[schema.idField] || record[PoSchemaUtil.syncInternalIdFieldName];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Retorna a url correspondente do `PoSyncSchema` dependendo do tipo da requisição `PoRequestType`.
|
|
77
|
+
*
|
|
78
|
+
* @param {PoSyncSchema} schema **Schema* a ser processado.
|
|
79
|
+
* @param {PoRequestType} requestType Tipo da requisição.
|
|
80
|
+
*/
|
|
81
|
+
static getUrl(schema, requestType) {
|
|
82
|
+
return schema[`${requestType}UrlApi`];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Compara se dois objetos são iguais baseado na lista de campos.
|
|
86
|
+
*
|
|
87
|
+
* @param {Array<string>} fields Lista de campos a serem considerados na comparação.
|
|
88
|
+
* @param {any} model1 Objeto 1 a ser comparado.
|
|
89
|
+
* @param {any} model2 Objeto 2 a ser comparado.
|
|
90
|
+
*/
|
|
91
|
+
static isModelsEqual(fields, model1, model2) {
|
|
92
|
+
if (fields) {
|
|
93
|
+
return fields.every(field => JSON.stringify(model1[field]) === JSON.stringify(model2[field]));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Retorna uma lista com dois objetos referentes ao registro informado.
|
|
98
|
+
* O primeiro é o registro com os campos que vão para o servidor e o segundo é com os campos locais.
|
|
99
|
+
*
|
|
100
|
+
* @param {PoSyncSchema} schema **Schema* do registro.
|
|
101
|
+
* @param {object} record Registro que será realizada a separação dos campos locais e do servidor.
|
|
102
|
+
*/
|
|
103
|
+
static separateSchemaFields(schema, record) {
|
|
104
|
+
const localFields = PoSchemaUtil.getLocalFieldNames(schema);
|
|
105
|
+
const localRecord = {};
|
|
106
|
+
const serverRecord = {};
|
|
107
|
+
Object.keys(record).forEach(field => {
|
|
108
|
+
if (localFields.includes(field)) {
|
|
109
|
+
localRecord[field] = record[field];
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
serverRecord[field] = record[field];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return { serverRecord, localRecord };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Valor `default` para o campo `lastSync`. */
|
|
119
|
+
PoSchemaUtil.defaultLastSync = new Date(-8640000000000000).toISOString();
|
|
120
|
+
/** Nome da chave do identificador interno do sync. */
|
|
121
|
+
PoSchemaUtil.syncInternalIdFieldName = 'SyncInternalId';
|
|
122
|
+
/** Nome da chave no `storage` para os Schemas. */
|
|
123
|
+
PoSchemaUtil.syncSchemasName = 'SyncSchemas';
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLXV0aWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS11dGlsL3BvLXNjaGVtYS11dGlsLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBVXZCOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFvQjtRQUNwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQW1DLEVBQUUsVUFBa0I7UUFDL0UsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDOUUsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztTQUNsRztRQUNELE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFvQjtRQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlC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b250ZW50IjpbImltcG9ydCB7IFBvUmVxdWVzdFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcG8tcmVxdWVzdC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQb1N5bmNGaWVsZE9wdGlvbnMgfSBmcm9tICcuLi8uLi9wby1zeW5jL2ludGVyZmFjZXMvcG8tc3luYy1maWVsZC1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvU3luY1NjaGVtYSB9IGZyb20gJy4uLy4uL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzUHJpdmF0ZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogU2VydmnDp28gdXRpbGl0w6FyaW8gcGFyYSBvcGVyYcOnw7VlcyBubyBQb1N5bmNTY2hlbWEuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUG9TY2hlbWFVdGlsIHtcclxuICAvKiogVmFsb3IgYGRlZmF1bHRgIHBhcmEgbyBjYW1wbyBgbGFzdFN5bmNgLiAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdExhc3RTeW5jOiBzdHJpbmcgPSBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMCkudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgLyoqIE5vbWUgZGEgY2hhdmUgZG8gaWRlbnRpZmljYWRvciBpbnRlcm5vIGRvIHN5bmMuICovXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzeW5jSW50ZXJuYWxJZEZpZWxkTmFtZTogc3RyaW5nID0gJ1N5bmNJbnRlcm5hbElkJztcclxuXHJcbiAgLyoqIE5vbWUgZGEgY2hhdmUgbm8gYHN0b3JhZ2VgIHBhcmEgb3MgU2NoZW1hcy4gKi9cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHN5bmNTY2hlbWFzTmFtZTogc3RyaW5nID0gJ1N5bmNTY2hlbWFzJztcclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWNhIHNlIGV4aXN0ZW0gY2FtcG9zIGxvY2FpcyBubyAqc2NoZW1hKiBpbmZvcm1hZG8uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBhIHNlciBwcm9jZXNzYWRvLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFZhbG9yIGRvIHRpcG8gKmJvb2xlYW4qIHF1ZSBpbmRpY2Egc2UgZXhpc3RlbSBjYW1wb3MgbG9jYWlzIG5vICpzY2hlbWEqIGluZm9ybWFkby5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNvbnRhaW5zTG9jYWxGaWVsZHMoc2NoZW1hOiBQb1N5bmNTY2hlbWEpOiBib29sZWFuIHtcclxuICAgIGlmIChzY2hlbWEuZmllbGRzKSB7XHJcbiAgICAgIHJldHVybiAhIXNjaGVtYS5maWVsZHMuZmluZChmaWVsZCA9PiB0eXBlb2YgZmllbGQgPT09ICdvYmplY3QnICYmIGZpZWxkLmxvY2FsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgbyB2YWxvciBhdHVhbCBkbyBgbGFzdFN5bmNgIHBhcmEgZGV0ZXJtaW5hZG8gKnNjaGVtYSouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0FycmF5PFBvU3luY1NjaGVtYT59IHN0b3JhZ2VTY2hlbWFzIExpc3RhIGRlICpzY2hlbWFzKiBhIHNlcmVtIHBlc3F1aXNhZG9zLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSogcXVlIHNlIGRlc2VqYSBsZXIgbyBsYXN0U3luYy5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldG9ybmEgdW1hICpzdHJpbmcqIGNvbSBvIHZhbG9yIGRhIMO6bHRpbWEgc2luY3Jvbml6YcOnw6NvLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TGFzdFN5bmMoc3RvcmFnZVNjaGVtYXM6IEFycmF5PFBvU3luY1NjaGVtYT4sIHNjaGVtYU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoc3RvcmFnZVNjaGVtYXMpIHtcclxuICAgICAgY29uc3Qgc2NoZW1hRm91bmQgPSBzdG9yYWdlU2NoZW1hcy5maW5kKHNjaGVtYSA9PiBzY2hlbWEubmFtZSA9PT0gc2NoZW1hTmFtZSk7XHJcbiAgICAgIHJldHVybiBzY2hlbWFGb3VuZCAmJiBzY2hlbWFGb3VuZC5sYXN0U3luYyA/IHNjaGVtYUZvdW5kLmxhc3RTeW5jIDogUG9TY2hlbWFVdGlsLmRlZmF1bHRMYXN0U3luYztcclxuICAgIH1cclxuICAgIHJldHVybiBQb1NjaGVtYVV0aWwuZGVmYXVsdExhc3RTeW5jO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBhIGxpc3RhIGRlIGNhbXBvcyBsb2NhaXMgZGVmaW5pZG9zIG5vICpzY2hlbWEqLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQb1N5bmNTY2hlbWF9IHNjaGVtYSAqKlNjaGVtYSogYSBzZXIgcHJvY2Vzc2Fkby5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldExvY2FsRmllbGROYW1lcyhzY2hlbWE6IFBvU3luY1NjaGVtYSk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgaWYgKHNjaGVtYS5maWVsZHMpIHtcclxuICAgICAgcmV0dXJuIHNjaGVtYS5maWVsZHMucmVkdWNlKChmaWVsZHNBY2N1bXVsYXRvcjogQXJyYXk8c3RyaW5nPiwgY3VycmVudEZpZWxkOiBzdHJpbmcgfCBQb1N5bmNGaWVsZE9wdGlvbnMpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRGaWVsZCA9PT0gJ29iamVjdCcgJiYgY3VycmVudEZpZWxkLmxvY2FsKSB7XHJcbiAgICAgICAgICBmaWVsZHNBY2N1bXVsYXRvci5wdXNoKGN1cnJlbnRGaWVsZC5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkc0FjY3VtdWxhdG9yO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIGEgbGlzdGEgZGUgY2FtcG9zIG7Do28gbG9jYWlzIGRlZmluaWRvcyBubyAqc2NoZW1hKi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UG9TeW5jU2NoZW1hfSBzY2hlbWEgKipTY2hlbWEqIGEgc2VyIHByb2Nlc3NhZG8uXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXROb25Mb2NhbEZpZWxkTmFtZXMoc2NoZW1hOiBQb1N5bmNTY2hlbWEpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIGlmIChzY2hlbWEuZmllbGRzKSB7XHJcbiAgICAgIHJldHVybiBzY2hlbWEuZmllbGRzLnJlZHVjZSgoZmllbGRzQWNjdW11bGF0b3I6IEFycmF5PHN0cmluZz4sIGN1cnJlbnRGaWVsZDogc3RyaW5nIHwgUG9TeW5jRmllbGRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RmllbGQgPT09ICdzdHJpbmcnIHx8ICFjdXJyZW50RmllbGQubG9jYWwpIHtcclxuICAgICAgICAgIGZpZWxkc0FjY3VtdWxhdG9yLnB1c2godHlwZW9mIGN1cnJlbnRGaWVsZCA9PT0gJ3N0cmluZycgPyBjdXJyZW50RmllbGQgOiBjdXJyZW50RmllbGQubmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWVsZHNBY2N1bXVsYXRvcjtcclxuICAgICAgfSwgW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBvIGBpZGAgcmVmZXJlbnRlIGFvIHJlZ2lzdHJvIGRvICpzY2hlbWEqIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIGJ1c2NhZG8gbyBpZC5cclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBhIHNlciBwcm9jZXNzYWRvLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UmVjb3JkSWQocmVjb3JkOiBvYmplY3QsIHNjaGVtYTogUG9TeW5jU2NoZW1hKSB7XHJcbiAgICByZXR1cm4gcmVjb3JkW3NjaGVtYS5pZEZpZWxkXSB8fCByZWNvcmRbUG9TY2hlbWFVdGlsLnN5bmNJbnRlcm5hbElkRmllbGROYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgYSB1cmwgY29ycmVzcG9uZGVudGUgZG8gYFBvU3luY1NjaGVtYWAgZGVwZW5kZW5kbyBkbyB0aXBvIGRhIHJlcXVpc2nDp8OjbyBgUG9SZXF1ZXN0VHlwZWAuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBhIHNlciBwcm9jZXNzYWRvLlxyXG4gICAqIEBwYXJhbSB7UG9SZXF1ZXN0VHlwZX0gcmVxdWVzdFR5cGUgVGlwbyBkYSByZXF1aXNpw6fDo28uXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXRVcmwoc2NoZW1hOiBQb1N5bmNTY2hlbWEsIHJlcXVlc3RUeXBlOiBQb1JlcXVlc3RUeXBlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzY2hlbWFbYCR7cmVxdWVzdFR5cGV9VXJsQXBpYF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wYXJhIHNlIGRvaXMgb2JqZXRvcyBzw6NvIGlndWFpcyBiYXNlYWRvIG5hIGxpc3RhIGRlIGNhbXBvcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmllbGRzIExpc3RhIGRlIGNhbXBvcyBhIHNlcmVtIGNvbnNpZGVyYWRvcyBuYSBjb21wYXJhw6fDo28uXHJcbiAgICogQHBhcmFtIHthbnl9IG1vZGVsMSBPYmpldG8gMSBhIHNlciBjb21wYXJhZG8uXHJcbiAgICogQHBhcmFtIHthbnl9IG1vZGVsMiBPYmpldG8gMiBhIHNlciBjb21wYXJhZG8uXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBpc01vZGVsc0VxdWFsKGZpZWxkczogQXJyYXk8c3RyaW5nPiwgbW9kZWwxOiBhbnksIG1vZGVsMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZmllbGRzKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZHMuZXZlcnkoZmllbGQgPT4gSlNPTi5zdHJpbmdpZnkobW9kZWwxW2ZpZWxkXSkgPT09IEpTT04uc3RyaW5naWZ5KG1vZGVsMltmaWVsZF0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgdW1hIGxpc3RhIGNvbSBkb2lzIG9iamV0b3MgcmVmZXJlbnRlcyBhbyByZWdpc3RybyBpbmZvcm1hZG8uXHJcbiAgICogTyBwcmltZWlybyDDqSBvIHJlZ2lzdHJvIGNvbSBvcyBjYW1wb3MgcXVlIHbDo28gcGFyYSBvIHNlcnZpZG9yIGUgbyBzZWd1bmRvIMOpIGNvbSBvcyBjYW1wb3MgbG9jYWlzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQb1N5bmNTY2hlbWF9IHNjaGVtYSAqKlNjaGVtYSogZG8gcmVnaXN0cm8uXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlY29yZCBSZWdpc3RybyBxdWUgc2Vyw6EgcmVhbGl6YWRhIGEgc2VwYXJhw6fDo28gZG9zIGNhbXBvcyBsb2NhaXMgZSBkbyBzZXJ2aWRvci5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHNlcGFyYXRlU2NoZW1hRmllbGRzKFxyXG4gICAgc2NoZW1hOiBQb1N5bmNTY2hlbWEsXHJcbiAgICByZWNvcmQ6IG9iamVjdFxyXG4gICk6IHsgc2VydmVyUmVjb3JkOiBvYmplY3Q7IGxvY2FsUmVjb3JkOiBvYmplY3QgfSB7XHJcbiAgICBjb25zdCBsb2NhbEZpZWxkcyA9IFBvU2NoZW1hVXRpbC5nZXRMb2NhbEZpZWxkTmFtZXMoc2NoZW1hKTtcclxuICAgIGNvbnN0IGxvY2FsUmVjb3JkID0ge307XHJcbiAgICBjb25zdCBzZXJ2ZXJSZWNvcmQgPSB7fTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhyZWNvcmQpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBpZiAobG9jYWxGaWVsZHMuaW5jbHVkZXMoZmllbGQpKSB7XHJcbiAgICAgICAgbG9jYWxSZWNvcmRbZmllbGRdID0gcmVjb3JkW2ZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXJ2ZXJSZWNvcmRbZmllbGRdID0gcmVjb3JkW2ZpZWxkXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHsgc2VydmVyUmVjb3JkLCBsb2NhbFJlY29yZCB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|