@po-ui/ng-sync 15.15.0 → 16.0.0-next.2

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 (127) hide show
  1. package/README.md +3 -3
  2. package/{esm2020 → esm2022}/lib/index.mjs +14 -14
  3. package/{esm2020 → esm2022}/lib/models/index.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/models/po-data-message.model.mjs +56 -56
  5. package/esm2022/lib/models/po-data-transform.model.mjs +23 -0
  6. package/esm2022/lib/models/po-entity/po-entity.model.mjs +217 -0
  7. package/esm2022/lib/models/po-event-sourcing-error-response.model.mjs +21 -0
  8. package/esm2022/lib/models/po-network-status.model.mjs +45 -0
  9. package/{esm2020 → esm2022}/lib/models/po-network-type.enum.mjs +29 -29
  10. package/esm2022/lib/models/po-query-builder/po-query-builder.model.mjs +246 -0
  11. package/{esm2020 → esm2022}/lib/models/po-request-type.enum.mjs +15 -15
  12. package/{esm2020 → esm2022}/lib/po-sync.module.mjs +40 -40
  13. package/{esm2020 → esm2022}/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.mjs +16 -16
  14. package/{esm2020 → esm2022}/lib/services/po-event-sourcing/index.mjs +3 -3
  15. package/{esm2020 → esm2022}/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.mjs +1 -1
  16. package/{esm2020 → esm2022}/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.mjs +1 -1
  17. package/esm2022/lib/services/po-event-sourcing/po-event-sourcing.service.mjs +379 -0
  18. package/{esm2020 → esm2022}/lib/services/po-http-client/interfaces/po-http-header-option.interface.mjs +10 -10
  19. package/{esm2020 → esm2022}/lib/services/po-http-client/interfaces/po-http-request-data.interface.mjs +1 -1
  20. package/{esm2020 → esm2022}/lib/services/po-http-client/interfaces/po-response-api.interface.mjs +1 -1
  21. package/esm2022/lib/services/po-http-client/po-http-client.service.mjs +149 -0
  22. package/{esm2020 → esm2022}/lib/services/po-http-client/po-http-request-type.enum.mjs +24 -24
  23. package/esm2022/lib/services/po-network/po-network.service.mjs +59 -0
  24. package/{esm2020 → esm2022}/lib/services/po-schema/index.mjs +3 -3
  25. package/esm2022/lib/services/po-schema/po-schema-definition/po-schema-definition.service.mjs +78 -0
  26. package/esm2022/lib/services/po-schema/po-schema-util/po-schema-util.model.mjs +124 -0
  27. package/esm2022/lib/services/po-schema/po-schema.service.mjs +176 -0
  28. package/{esm2020 → esm2022}/lib/services/po-sync/interfaces/po-sync-config.interface.mjs +1 -1
  29. package/{esm2020 → esm2022}/lib/services/po-sync/interfaces/po-sync-field-options.interface.mjs +1 -1
  30. package/{esm2020 → esm2022}/lib/services/po-sync/interfaces/po-sync-response.interface.mjs +1 -1
  31. package/{esm2020 → esm2022}/lib/services/po-sync/interfaces/po-sync-schema.interface.mjs +1 -1
  32. package/esm2022/lib/services/po-sync/po-sync.service.mjs +336 -0
  33. package/{esm2020 → esm2022}/lib/utils/utils.mjs +62 -62
  34. package/{esm2020 → esm2022}/po-ui-ng-sync.mjs +4 -4
  35. package/{esm2020 → esm2022}/public-api.mjs +1 -1
  36. package/{fesm2020 → fesm2022}/po-ui-ng-sync.mjs +2004 -1962
  37. package/{fesm2020 → fesm2022}/po-ui-ng-sync.mjs.map +1 -1
  38. package/index.d.ts +5 -5
  39. package/lib/index.d.ts +14 -14
  40. package/lib/models/index.d.ts +5 -5
  41. package/lib/models/po-data-message.model.d.ts +46 -46
  42. package/lib/models/po-data-transform.model.d.ts +52 -52
  43. package/lib/models/po-entity/po-entity.model.d.ts +122 -122
  44. package/lib/models/po-event-sourcing-error-response.model.d.ts +20 -20
  45. package/lib/models/po-network-status.model.d.ts +25 -25
  46. package/lib/models/po-network-type.enum.d.ts +28 -28
  47. package/lib/models/po-query-builder/po-query-builder.model.d.ts +126 -126
  48. package/lib/models/po-request-type.enum.d.ts +14 -14
  49. package/lib/po-sync.module.d.ts +11 -11
  50. package/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.d.ts +11 -11
  51. package/lib/services/po-event-sourcing/index.d.ts +3 -3
  52. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.d.ts +26 -26
  53. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.d.ts +16 -16
  54. package/lib/services/po-event-sourcing/po-event-sourcing.service.d.ts +74 -74
  55. package/lib/services/po-http-client/interfaces/po-http-header-option.interface.d.ts +15 -15
  56. package/lib/services/po-http-client/interfaces/po-http-request-data.interface.d.ts +24 -24
  57. package/lib/services/po-http-client/interfaces/po-response-api.interface.d.ts +14 -14
  58. package/lib/services/po-http-client/po-http-client.service.d.ts +78 -78
  59. package/lib/services/po-http-client/po-http-request-type.enum.d.ts +23 -23
  60. package/lib/services/po-network/po-network.service.d.ts +35 -35
  61. package/lib/services/po-schema/index.d.ts +3 -3
  62. package/lib/services/po-schema/po-schema-definition/po-schema-definition.service.d.ts +51 -51
  63. package/lib/services/po-schema/po-schema-util/po-schema-util.model.d.ts +79 -79
  64. package/lib/services/po-schema/po-schema.service.d.ts +98 -98
  65. package/lib/services/po-sync/interfaces/po-sync-config.interface.d.ts +24 -24
  66. package/lib/services/po-sync/interfaces/po-sync-field-options.interface.d.ts +15 -15
  67. package/lib/services/po-sync/interfaces/po-sync-response.interface.d.ts +20 -20
  68. package/lib/services/po-sync/interfaces/po-sync-schema.interface.d.ts +37 -37
  69. package/lib/services/po-sync/po-sync.service.d.ts +162 -162
  70. package/lib/utils/utils.d.ts +36 -36
  71. package/package.json +10 -16
  72. package/po-ui-ng-sync-16.0.0-next.2.tgz +0 -0
  73. package/public-api.d.ts +1 -1
  74. package/schematics/migrations.json +1 -1
  75. package/schematics/ng-add/index.d.ts +7 -7
  76. package/schematics/ng-add/index.js +31 -31
  77. package/schematics/ng-add/index.spec.d.ts +1 -1
  78. package/schematics/ng-add/index.spec.js +60 -60
  79. package/schematics/ng-generate/schema/index.d.ts +4 -4
  80. package/schematics/ng-generate/schema/index.js +12 -12
  81. package/schematics/ng-generate/schema/index.spec.d.ts +1 -1
  82. package/schematics/ng-generate/schema/index.spec.js +44 -44
  83. package/schematics/ng-generate/schema/schema.d.ts +3 -3
  84. package/schematics/ng-generate/schema/schema.js +2 -2
  85. package/schematics/ng-update/v14/changes.d.ts +2 -2
  86. package/schematics/ng-update/v14/changes.js +13 -13
  87. package/schematics/ng-update/v14/index.d.ts +1 -1
  88. package/schematics/ng-update/v14/index.js +15 -15
  89. package/schematics/ng-update/v15/changes.d.ts +4 -4
  90. package/schematics/ng-update/v15/changes.js +15 -15
  91. package/schematics/ng-update/v15/index.d.ts +1 -1
  92. package/schematics/ng-update/v15/index.js +36 -36
  93. package/schematics/ng-update/v2/changes.d.ts +8 -8
  94. package/schematics/ng-update/v2/changes.js +20 -20
  95. package/schematics/ng-update/v2/index.d.ts +5 -5
  96. package/schematics/ng-update/v2/index.js +101 -101
  97. package/schematics/ng-update/v3/changes.d.ts +2 -2
  98. package/schematics/ng-update/v3/changes.js +14 -14
  99. package/schematics/ng-update/v3/index.d.ts +1 -1
  100. package/schematics/ng-update/v3/index.js +16 -16
  101. package/schematics/ng-update/v4/changes.d.ts +2 -2
  102. package/schematics/ng-update/v4/changes.js +14 -14
  103. package/schematics/ng-update/v4/index.d.ts +1 -1
  104. package/schematics/ng-update/v4/index.js +15 -15
  105. package/schematics/ng-update/v5/changes.d.ts +2 -2
  106. package/schematics/ng-update/v5/changes.js +13 -13
  107. package/schematics/ng-update/v5/index.d.ts +1 -1
  108. package/schematics/ng-update/v5/index.js +15 -15
  109. package/schematics/ng-update/v6/changes.d.ts +2 -2
  110. package/schematics/ng-update/v6/changes.js +13 -13
  111. package/schematics/ng-update/v6/index.d.ts +1 -1
  112. package/schematics/ng-update/v6/index.js +15 -15
  113. package/esm2020/lib/models/po-data-transform.model.mjs +0 -22
  114. package/esm2020/lib/models/po-entity/po-entity.model.mjs +0 -214
  115. package/esm2020/lib/models/po-event-sourcing-error-response.model.mjs +0 -17
  116. package/esm2020/lib/models/po-network-status.model.mjs +0 -44
  117. package/esm2020/lib/models/po-query-builder/po-query-builder.model.mjs +0 -238
  118. package/esm2020/lib/services/po-event-sourcing/po-event-sourcing.service.mjs +0 -372
  119. package/esm2020/lib/services/po-http-client/po-http-client.service.mjs +0 -148
  120. package/esm2020/lib/services/po-network/po-network.service.mjs +0 -56
  121. package/esm2020/lib/services/po-schema/po-schema-definition/po-schema-definition.service.mjs +0 -77
  122. package/esm2020/lib/services/po-schema/po-schema-util/po-schema-util.model.mjs +0 -124
  123. package/esm2020/lib/services/po-schema/po-schema.service.mjs +0 -174
  124. package/esm2020/lib/services/po-sync/po-sync.service.mjs +0 -325
  125. package/fesm2015/po-ui-ng-sync.mjs +0 -2113
  126. package/fesm2015/po-ui-ng-sync.mjs.map +0 -1
  127. package/po-ui-ng-sync-15.15.0.tgz +0 -0
@@ -1,56 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { Network } from '@capacitor/network';
4
- import { PoNetworkStatus } from './../../models';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * @description
8
- *
9
- * O `PoNetworkService` é utilizado para verificar o status e o tipo da conexão de rede do dispositivo.
10
- */
11
- export class PoNetworkService {
12
- constructor() {
13
- this.initNetwork();
14
- }
15
- /**
16
- * Retorna as propriedades tipo e status da conexão do dispositivo no momento da chamada.
17
- *
18
- * @returns {PoNetworkStatus} Instância de [PoNetworkStatus](/documentation/po-network-status) com as
19
- * propriedades da conexão.
20
- */
21
- getConnectionStatus() {
22
- this.poNetworkStatus = new PoNetworkStatus(this.networkType);
23
- return this.poNetworkStatus;
24
- }
25
- /**
26
- * Notifica as mudanças no tipo de conexão de rede do dispositivo.
27
- *
28
- * @returns {Observable<{ status: boolean, type: string }>} Observable com as propriedades da conexão.
29
- */
30
- onChange() {
31
- return this.networkTypeNow.asObservable();
32
- }
33
- initNetwork() {
34
- this.networkTypeNow = new Subject();
35
- this.initSubscriber();
36
- }
37
- async getStatus() {
38
- return await Network.getStatus();
39
- }
40
- async initSubscriber() {
41
- const networkStatus = await this.getStatus();
42
- this.networkType = networkStatus.connected ? networkStatus.connectionType : 'none';
43
- this.networkTypeNow.next({ status: networkStatus.connected, type: this.networkType });
44
- /* istanbul ignore next */
45
- Network.addListener('networkStatusChange', status => {
46
- this.networkType = status.connected ? status.connectionType : 'none';
47
- this.networkTypeNow.next({ status: status.connected, type: this.networkType });
48
- });
49
- }
50
- }
51
- PoNetworkService.ɵfac = function PoNetworkService_Factory(t) { return new (t || PoNetworkService)(); };
52
- PoNetworkService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoNetworkService, factory: PoNetworkService.ɵfac });
53
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoNetworkService, [{
54
- type: Injectable
55
- }], function () { return []; }, null); })();
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbmV0d29yay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL3NlcnZpY2VzL3BvLW5ldHdvcmsvcG8tbmV0d29yay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFnQyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFakQ7Ozs7R0FJRztBQUdILE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFDRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVM7UUFDckIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFdEYsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnRkFoRFUsZ0JBQWdCO3NFQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnQGNhcGFjaXRvci9uZXR3b3JrJztcclxuXHJcbmltcG9ydCB7IFBvTmV0d29ya1N0YXR1cyB9IGZyb20gJy4vLi4vLi4vbW9kZWxzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogTyBgUG9OZXR3b3JrU2VydmljZWAgw6kgdXRpbGl6YWRvIHBhcmEgdmVyaWZpY2FyIG8gc3RhdHVzIGUgbyB0aXBvIGRhIGNvbmV4w6NvIGRlIHJlZGUgZG8gZGlzcG9zaXRpdm8uXHJcbiAqL1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUG9OZXR3b3JrU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBuZXR3b3JrVHlwZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgbmV0d29ya1R5cGVOb3c6IFN1YmplY3Q8eyBzdGF0dXM6IGJvb2xlYW47IHR5cGU6IHN0cmluZyB9PjtcclxuICBwcml2YXRlIHBvTmV0d29ya1N0YXR1czogUG9OZXR3b3JrU3RhdHVzO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdE5ldHdvcmsoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgYXMgcHJvcHJpZWRhZGVzIHRpcG8gZSBzdGF0dXMgZGEgY29uZXjDo28gZG8gZGlzcG9zaXRpdm8gbm8gbW9tZW50byBkYSBjaGFtYWRhLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge1BvTmV0d29ya1N0YXR1c30gSW5zdMOibmNpYSBkZSBbUG9OZXR3b3JrU3RhdHVzXSgvZG9jdW1lbnRhdGlvbi9wby1uZXR3b3JrLXN0YXR1cykgY29tIGFzXHJcbiAgICogcHJvcHJpZWRhZGVzIGRhIGNvbmV4w6NvLlxyXG4gICAqL1xyXG4gIGdldENvbm5lY3Rpb25TdGF0dXMoKTogUG9OZXR3b3JrU3RhdHVzIHtcclxuICAgIHRoaXMucG9OZXR3b3JrU3RhdHVzID0gbmV3IFBvTmV0d29ya1N0YXR1cyh0aGlzLm5ldHdvcmtUeXBlKTtcclxuICAgIHJldHVybiB0aGlzLnBvTmV0d29ya1N0YXR1cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vdGlmaWNhIGFzIG11ZGFuw6dhcyBubyB0aXBvIGRlIGNvbmV4w6NvIGRlIHJlZGUgZG8gZGlzcG9zaXRpdm8uXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx7IHN0YXR1czogYm9vbGVhbiwgdHlwZTogc3RyaW5nIH0+fSBPYnNlcnZhYmxlIGNvbSBhcyBwcm9wcmllZGFkZXMgZGEgY29uZXjDo28uXHJcbiAgICovXHJcbiAgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTx7IHN0YXR1czogYm9vbGVhbjsgdHlwZTogc3RyaW5nIH0+IHtcclxuICAgIHJldHVybiB0aGlzLm5ldHdvcmtUeXBlTm93LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TmV0d29yaygpIHtcclxuICAgIHRoaXMubmV0d29ya1R5cGVOb3cgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgdGhpcy5pbml0U3Vic2NyaWJlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRTdGF0dXMoKSB7XHJcbiAgICByZXR1cm4gYXdhaXQgTmV0d29yay5nZXRTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaW5pdFN1YnNjcmliZXIoKSB7XHJcbiAgICBjb25zdCBuZXR3b3JrU3RhdHVzID0gYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgIHRoaXMubmV0d29ya1R5cGUgPSBuZXR3b3JrU3RhdHVzLmNvbm5lY3RlZCA/IG5ldHdvcmtTdGF0dXMuY29ubmVjdGlvblR5cGUgOiAnbm9uZSc7XHJcbiAgICB0aGlzLm5ldHdvcmtUeXBlTm93Lm5leHQoeyBzdGF0dXM6IG5ldHdvcmtTdGF0dXMuY29ubmVjdGVkLCB0eXBlOiB0aGlzLm5ldHdvcmtUeXBlIH0pO1xyXG5cclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICBOZXR3b3JrLmFkZExpc3RlbmVyKCduZXR3b3JrU3RhdHVzQ2hhbmdlJywgc3RhdHVzID0+IHtcclxuICAgICAgdGhpcy5uZXR3b3JrVHlwZSA9IHN0YXR1cy5jb25uZWN0ZWQgPyBzdGF0dXMuY29ubmVjdGlvblR5cGUgOiAnbm9uZSc7XHJcbiAgICAgIHRoaXMubmV0d29ya1R5cGVOb3cubmV4dCh7IHN0YXR1czogc3RhdHVzLmNvbm5lY3RlZCwgdHlwZTogdGhpcy5uZXR3b3JrVHlwZSB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,77 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { PoSchemaUtil } from './../po-schema-util/po-schema-util.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@po-ui/ng-storage";
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
- async update(updatedSchema) {
59
- let schemas = await this.getAll();
60
- const replaceUpdatedSchema = schema => {
61
- if (schema.name === updatedSchema.name) {
62
- return updatedSchema;
63
- }
64
- else {
65
- return schema;
66
- }
67
- };
68
- schemas = schemas.map(replaceUpdatedSchema);
69
- return this.saveAll(schemas);
70
- }
71
- }
72
- PoSchemaDefinitionService.ɵfac = function PoSchemaDefinitionService_Factory(t) { return new (t || PoSchemaDefinitionService)(i0.ɵɵinject(i1.PoStorageService)); };
73
- PoSchemaDefinitionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoSchemaDefinitionService, factory: PoSchemaDefinitionService.ɵfac });
74
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSchemaDefinitionService, [{
75
- type: Injectable
76
- }], function () { return [{ type: i1.PoStorageService }]; }, null); })();
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9zZXJ2aWNlcy9wby1zY2hlbWEvcG8tc2NoZW1hLWRlZmluaXRpb24vcG8tc2NoZW1hLWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBR3hFOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRW5EOzs7Ozs7O09BT0c7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLFVBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE9BQTRCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBMkI7UUFDdEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsRUFBRTtZQUNwQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtnQkFDdEMsT0FBTyxhQUFhLENBQUM7YUFDdEI7aUJBQU07Z0JBQ0wsT0FBTyxNQUFNLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7O2tHQTlEVSx5QkFBeUI7K0VBQXpCLHlCQUF5QixXQUF6Qix5QkFBeUI7dUZBQXpCLHlCQUF5QjtjQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUG9TdG9yYWdlU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1zdG9yYWdlJztcclxuXHJcbmltcG9ydCB7IFBvU2NoZW1hVXRpbCB9IGZyb20gJy4vLi4vcG8tc2NoZW1hLXV0aWwvcG8tc2NoZW1hLXV0aWwubW9kZWwnO1xyXG5pbXBvcnQgeyBQb1N5bmNTY2hlbWEgfSBmcm9tICcuLy4uLy4uL3BvLXN5bmMvaW50ZXJmYWNlcy9wby1zeW5jLXNjaGVtYS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzUHJpdmF0ZVxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogU2VydmnDp28gcXVlIGRpc3BvbmliaWxpemEgbcOpdG9kb3MgcXVlIHBlcm1pdGUgb3BlcmFyIHNvYnJlIGFzIGRlZmluacOnw7VlcyBkb3MgKnNjaGVtYXMqLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb1N0b3JhZ2U6IFBvU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryw7NpIGEgY2hhdmUgZG8gKnN0b3JhZ2UqIHF1ZSBjb250w6ltIGFzIGRlZmluacOnw7VlcyBkb3MgKnNjaGVtYXMqLlxyXG4gICAqXHJcbiAgICogPiBQYXJhIHF1ZSBuw6NvIHZlbmhhbSBvY29ycmVyIGVycm9zIGVtIGHDp8O1ZXMgcXVlIGRlcGVuZGFtIGRhcyBkZWZpbmnDp8O1ZXMgZG9zICpzY2hlbWFzKixcclxuICAgKiByZWNvbWVuZGEtc2UgdXRpbGl6YXIgbyBtw6l0b2RvIGBwcmVwYXJlKClgIGVtIHNlZ3VpZGEuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYSBjaGF2ZSByZWZlcmVudGUgYXMgZGVmaW5pw6fDtWVzIGRvcyAqc2NoZW1hcyogZm9yIGRlc3RydcOtZGEuXHJcbiAgICovXHJcbiAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnBvU3RvcmFnZS5yZW1vdmUoUG9TY2hlbWFVdGlsLnN5bmNTY2hlbWFzTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdXNjYSB1bSAqc2NoZW1hKiBhIHBhcnRpciBkbyBub21lIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXHJcbiAgICogQHJldHVybnMge1Byb21pc2U8UG9TeW5jU2NoZW1hPn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gbyAqc2NoZW1hKiBmb3IgcmV0b3JuYWRvLlxyXG4gICAqL1xyXG4gIGdldChzY2hlbWFOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFBvU3luY1NjaGVtYT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLmdldEl0ZW1CeUZpZWxkKFBvU2NoZW1hVXRpbC5zeW5jU2NoZW1hc05hbWUsICduYW1lJywgc2NoZW1hTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIHVtYSBwcm9tZXNzYSBjb20gYSBsaXN0YSBkb3MgKnNjaGVtYXMqIGRlZmluaWRvcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PFBvU3luY1NjaGVtYT4+fSBQcm9tZXNzYSBxdWUgw6kgcmVzb2x2aWRhIHF1YW5kbyBhIGxpc3RhIGRvcyAqc2NoZW1hcyogZGVmaW5pZG9zIGZvciByZXRvcm5hZGEuXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFByb21pc2U8QXJyYXk8UG9TeW5jU2NoZW1hPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLmdldChQb1NjaGVtYVV0aWwuc3luY1NjaGVtYXNOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhIHVtYSBsaXN0YSBkZSAqc2NoZW1hcyouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0FycmF5PFBvU3luY1NjaGVtYT59IHNjaGVtYXMgTGlzdGEgZGUgc2NoZW1hcyBxdWUgc2Vyw6NvIHNhbHZvcy5cclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxQb1N5bmNTY2hlbWE+Pn0gUHJvbWVzc2EgcXVlIMOpIHJlc29sdmlkYSBxdWFuZG8gYSBsaXN0YSBkZSAqc2NoZW1hcyogZm9yIHNhbHZhLlxyXG4gICAqL1xyXG4gIHNhdmVBbGwoc2NoZW1hczogQXJyYXk8UG9TeW5jU2NoZW1hPik6IFByb21pc2U8QXJyYXk8UG9TeW5jU2NoZW1hPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9TdG9yYWdlLnNldChQb1NjaGVtYVV0aWwuc3luY1NjaGVtYXNOYW1lLCBzY2hlbWFzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIHVtICpzY2hlbWEqIGEgcGFydGlyIGRvICpzY2hlbWEgbmFtZSouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gdXBkYXRlZFNjaGVtYSAqKlNjaGVtYSogcXVlIHNlcsOhIGF0dWFsaXphZG8uXHJcbiAgICovXHJcbiAgYXN5bmMgdXBkYXRlKHVwZGF0ZWRTY2hlbWE6IFBvU3luY1NjaGVtYSkge1xyXG4gICAgbGV0IHNjaGVtYXMgPSBhd2FpdCB0aGlzLmdldEFsbCgpO1xyXG5cclxuICAgIGNvbnN0IHJlcGxhY2VVcGRhdGVkU2NoZW1hID0gc2NoZW1hID0+IHtcclxuICAgICAgaWYgKHNjaGVtYS5uYW1lID09PSB1cGRhdGVkU2NoZW1hLm5hbWUpIHtcclxuICAgICAgICByZXR1cm4gdXBkYXRlZFNjaGVtYTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gc2NoZW1hO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHNjaGVtYXMgPSBzY2hlbWFzLm1hcChyZXBsYWNlVXBkYXRlZFNjaGVtYSk7XHJcbiAgICByZXR1cm4gdGhpcy5zYXZlQWxsKHNjaGVtYXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,124 +0,0 @@
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=
@@ -1,174 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { PoSchemaUtil } from './po-schema-util/po-schema-util.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./po-schema-definition/po-schema-definition.service";
5
- import * as i2 from "@po-ui/ng-storage";
6
- /**
7
- * @docsPrivate
8
- *
9
- * @description
10
- *
11
- * Serviço que realiza as operações nos `schemas`.
12
- */
13
- export class PoSchemaService {
14
- constructor(poSchemaDefinitionService, poStorage) {
15
- this.poSchemaDefinitionService = poSchemaDefinitionService;
16
- this.poStorage = poStorage;
17
- }
18
- /**
19
- * Retorna o id a partir de uma chave de um *schema*.
20
- *
21
- * @param {string} schemaKey Chave do *schema* em que será realizada a busca do id.
22
- */
23
- static getIdByRecordKey(schemaKey) {
24
- return schemaKey.split(':')[1];
25
- }
26
- /**
27
- * Retorna a chave do *schema* informado.
28
- *
29
- * @param {string} schemaName Nome do *schema*.
30
- * @param {any} recordId Id do registro.
31
- * @param {boolean} isLocalKey Indica se é uma chave local.
32
- */
33
- static getRecordKey(schemaName, recordId, isLocalKey = false) {
34
- return isLocalKey ? `${schemaName}_local:${recordId}` : `${schemaName}:${recordId}`;
35
- }
36
- /**
37
- * Verifica se o dado informado é uma chave de um *schema*.
38
- *
39
- * @param {string} data Dado que será verificado se é uma chave de um *schema*.
40
- * @param {string} schemaName Nome do *schema*.
41
- */
42
- static isSchemaKey(data, schemaName) {
43
- return data ? data.startsWith(`${schemaName}:`) : false;
44
- }
45
- /**
46
- * Cria um novo registro para o *schema* informado.
47
- *
48
- * @param {PoSyncSchema} schema **Schema* em que será criado o registro.
49
- * @param {object} newRecord Registro que será criado.
50
- */
51
- async create(schema, newRecord) {
52
- const id = PoSchemaUtil.getRecordId(newRecord, schema);
53
- return this.save(schema, newRecord, id);
54
- }
55
- /**
56
- * Destrói as chaves do *storage* que contém os registros dos *schemas*.
57
- *
58
- * @returns {Promise<void>} Promessa que é resolvida quando as chaves referentes aos *schemas* forem destruídas.
59
- */
60
- async destroySchemasRecords() {
61
- const schemas = await this.poSchemaDefinitionService.getAll();
62
- const storageKeys = await this.poStorage.keys();
63
- for (const key of storageKeys) {
64
- const schemaKey = schemas.find(schema => PoSchemaService.isSchemaKey(key, schema.name));
65
- if (schemaKey) {
66
- const id = PoSchemaService.getIdByRecordKey(key);
67
- await this.remove(schemaKey.name, id);
68
- }
69
- }
70
- }
71
- /**
72
- * Retorna o registro referente ao *schema* informado.
73
- *
74
- * @param {string} schemaName Nome do *schema*.
75
- * @param {any} recordId Id do registro.
76
- */
77
- async get(schemaName, recordId) {
78
- const isLocalRecord = true;
79
- const localRecord = await this.getRecord(schemaName, recordId, isLocalRecord);
80
- const record = await this.getRecord(schemaName, recordId);
81
- return Object.assign(record, localRecord);
82
- }
83
- /**
84
- * Retorna todos os registros referente ao *schema* informado.
85
- *
86
- * @param {string} schemaName Nome do *schema*.
87
- */
88
- async getAll(schemaName) {
89
- const storageKeys = await this.poStorage.keys();
90
- const schemaRecords = [];
91
- for (const key of storageKeys) {
92
- if (PoSchemaService.isSchemaKey(key, schemaName)) {
93
- const id = PoSchemaService.getIdByRecordKey(key);
94
- schemaRecords.push(await this.get(schemaName, id));
95
- }
96
- }
97
- return schemaRecords;
98
- }
99
- /**
100
- * Aguarda a liberação do recurso limitado, posteriormente o envolve em um comportamento
101
- * de bloqueio e desbloqueio.
102
- *
103
- * @param {Function} limitedResource Função que será envolvida no comportamento de bloqueio e desbloqueio.
104
- */
105
- limitedCallWrap(limitedResource) {
106
- return this.poStorage.limitedCallWrap(limitedResource);
107
- }
108
- /**
109
- * Remove um registro de um *schema* informado.
110
- *
111
- * @param {string} schemaName Nome do *schema*.
112
- * @param {any} recordId Id do registro.
113
- */
114
- async remove(schemaName, recordId) {
115
- const recordKey = PoSchemaService.getRecordKey(schemaName, recordId);
116
- const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
117
- await this.poStorage.remove(recordKey);
118
- await this.poStorage.remove(localRecordKey);
119
- }
120
- /**
121
- * Atualiza um registro de um *schema* informado.
122
- *
123
- * @param {PoSyncSchema} schema **Schema* referente ao registro que será alterado.
124
- * @param {object} record Registro que será atualizado.
125
- * @param {any} recordId Id do registro que deseja ser alterado. Deve ser utilizado em casos em que o id foi alterado.
126
- */
127
- async update(schema, record, recordId) {
128
- const id = PoSchemaUtil.getRecordId(record, schema);
129
- if (recordId) {
130
- record = await this.updateRecordId(schema.name, record, recordId);
131
- }
132
- return this.save(schema, record, id);
133
- }
134
- /**
135
- * Atualiza todos os registros de um *schema*.
136
- *
137
- * @param {PoSyncSchema} schema **Schema* referente aos registros que serão alterados.
138
- * @param {Array<object>} records Lista de registros que serão alterados.
139
- */
140
- async updateAll(schema, records) {
141
- for (const record of records) {
142
- await this.update(schema, record);
143
- }
144
- }
145
- async getRecord(schemaName, recordId, isLocalRecord = false) {
146
- return (await this.poStorage.get(PoSchemaService.getRecordKey(schemaName, recordId, isLocalRecord))) || {};
147
- }
148
- async save(schema, record, recordId) {
149
- const { serverRecord, localRecord } = PoSchemaUtil.separateSchemaFields(schema, record);
150
- const recordKey = PoSchemaService.getRecordKey(schema.name, recordId);
151
- await this.poStorage.set(recordKey, serverRecord);
152
- await this.saveLocalFields(schema.name, localRecord, recordId);
153
- return record;
154
- }
155
- async saveLocalFields(schemaName, localFields, recordId) {
156
- const containsLocalFields = Object.keys(localFields).length;
157
- if (containsLocalFields) {
158
- const localRecordKey = PoSchemaService.getRecordKey(schemaName, recordId, true);
159
- await this.poStorage.set(localRecordKey, localFields);
160
- }
161
- }
162
- async updateRecordId(schemaName, record, recordId) {
163
- const isLocalRecord = true;
164
- const localRecord = await this.getRecord(schemaName, recordId, isLocalRecord);
165
- await this.remove(schemaName, recordId);
166
- return Object.assign(record, localRecord);
167
- }
168
- }
169
- PoSchemaService.ɵfac = function PoSchemaService_Factory(t) { return new (t || PoSchemaService)(i0.ɵɵinject(i1.PoSchemaDefinitionService), i0.ɵɵinject(i2.PoStorageService)); };
170
- PoSchemaService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoSchemaService, factory: PoSchemaService.ɵfac });
171
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSchemaService, [{
172
- type: Injectable
173
- }], function () { return [{ type: i1.PoSchemaDefinitionService }, { type: i2.PoStorageService }]; }, null); })();
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tc2NoZW1hL3BvLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBR3JFOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLHlCQUFvRCxFQUFVLFNBQTJCO1FBQXpGLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFakg7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUMvQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBa0IsRUFBRSxRQUFhLEVBQUUsYUFBc0IsS0FBSztRQUN4RixPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLFVBQVUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMs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QVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUvRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFrQixFQUFFLFdBQW1CLEVBQUUsUUFBUTtRQUM3RSxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTVELElBQUksbUJBQW1CLEVBQUU7WUFDdkIsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRO1FBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztRQUUzQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM5RSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7OEVBbkxVLGVBQWU7cUVBQWYsZUFBZSxXQUFmLGVBQWU7dUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUG9TdG9yYWdlU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1zdG9yYWdlJztcclxuXHJcbmltcG9ydCB7IFBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuL3BvLXNjaGVtYS1kZWZpbml0aW9uL3BvLXNjaGVtYS1kZWZpbml0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb1NjaGVtYVV0aWwgfSBmcm9tICcuL3BvLXNjaGVtYS11dGlsL3BvLXNjaGVtYS11dGlsLm1vZGVsJztcclxuaW1wb3J0IHsgUG9TeW5jU2NoZW1hIH0gZnJvbSAnLi4vcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtc2NoZW1hLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQGRvY3NQcml2YXRlXHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBTZXJ2acOnbyBxdWUgcmVhbGl6YSBhcyBvcGVyYcOnw7VlcyBub3MgYHNjaGVtYXNgLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUG9TY2hlbWFTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2U6IFBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2UsIHByaXZhdGUgcG9TdG9yYWdlOiBQb1N0b3JhZ2VTZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIG8gaWQgYSBwYXJ0aXIgZGUgdW1hIGNoYXZlIGRlIHVtICpzY2hlbWEqLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYUtleSBDaGF2ZSBkbyAqc2NoZW1hKiBlbSBxdWUgc2Vyw6EgcmVhbGl6YWRhIGEgYnVzY2EgZG8gaWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0SWRCeVJlY29yZEtleShzY2hlbWFLZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc2NoZW1hS2V5LnNwbGl0KCc6JylbMV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIGEgY2hhdmUgZG8gKnNjaGVtYSogaW5mb3JtYWRvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYU5hbWUgTm9tZSBkbyAqc2NoZW1hKi5cclxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0xvY2FsS2V5IEluZGljYSBzZSDDqSB1bWEgY2hhdmUgbG9jYWwuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWU6IHN0cmluZywgcmVjb3JkSWQ6IGFueSwgaXNMb2NhbEtleTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpc0xvY2FsS2V5ID8gYCR7c2NoZW1hTmFtZX1fbG9jYWw6JHtyZWNvcmRJZH1gIDogYCR7c2NoZW1hTmFtZX06JHtyZWNvcmRJZH1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpY2Egc2UgbyBkYWRvIGluZm9ybWFkbyDDqSB1bWEgY2hhdmUgZGUgdW0gKnNjaGVtYSouXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSBEYWRvIHF1ZSBzZXLDoSB2ZXJpZmljYWRvIHNlIMOpIHVtYSBjaGF2ZSBkZSB1bSAqc2NoZW1hKi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGlzU2NoZW1hS2V5KGRhdGE6IHN0cmluZywgc2NoZW1hTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZGF0YSA/IGRhdGEuc3RhcnRzV2l0aChgJHtzY2hlbWFOYW1lfTpgKSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JpYSB1bSBub3ZvIHJlZ2lzdHJvIHBhcmEgbyAqc2NoZW1hKiBpbmZvcm1hZG8uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiBlbSBxdWUgc2Vyw6EgY3JpYWRvIG8gcmVnaXN0cm8uXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JlY29yZCBSZWdpc3RybyBxdWUgc2Vyw6EgY3JpYWRvLlxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZShzY2hlbWE6IFBvU3luY1NjaGVtYSwgbmV3UmVjb3JkOiBvYmplY3QpOiBQcm9taXNlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgaWQgPSBQb1NjaGVtYVV0aWwuZ2V0UmVjb3JkSWQobmV3UmVjb3JkLCBzY2hlbWEpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2F2ZShzY2hlbWEsIG5ld1JlY29yZCwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzdHLDs2kgYXMgY2hhdmVzIGRvICpzdG9yYWdlKiBxdWUgY29udMOpbSBvcyByZWdpc3Ryb3MgZG9zICpzY2hlbWFzKi5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBQcm9tZXNzYSBxdWUgw6kgcmVzb2x2aWRhIHF1YW5kbyBhcyBjaGF2ZXMgcmVmZXJlbnRlcyBhb3MgKnNjaGVtYXMqIGZvcmVtIGRlc3RydcOtZGFzLlxyXG4gICAqL1xyXG4gIGFzeW5jIGRlc3Ryb3lTY2hlbWFzUmVjb3JkcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHNjaGVtYXMgPSBhd2FpdCB0aGlzLnBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2UuZ2V0QWxsKCk7XHJcbiAgICBjb25zdCBzdG9yYWdlS2V5cyA9IGF3YWl0IHRoaXMucG9TdG9yYWdlLmtleXMoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzdG9yYWdlS2V5cykge1xyXG4gICAgICBjb25zdCBzY2hlbWFLZXkgPSBzY2hlbWFzLmZpbmQoc2NoZW1hID0+IFBvU2NoZW1hU2VydmljZS5pc1NjaGVtYUtleShrZXksIHNjaGVtYS5uYW1lKSk7XHJcblxyXG4gICAgICBpZiAoc2NoZW1hS2V5KSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0SWRCeVJlY29yZEtleShrZXkpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlKHNjaGVtYUtleS5uYW1lLCBpZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldG9ybmEgbyByZWdpc3RybyByZWZlcmVudGUgYW8gKnNjaGVtYSogaW5mb3JtYWRvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYU5hbWUgTm9tZSBkbyAqc2NoZW1hKi5cclxuICAgKiBAcGFyYW0ge2FueX0gcmVjb3JkSWQgSWQgZG8gcmVnaXN0cm8uXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0KHNjaGVtYU5hbWU6IHN0cmluZywgcmVjb3JkSWQ6IGFueSk6IFByb21pc2U8b2JqZWN0PiB7XHJcbiAgICBjb25zdCBpc0xvY2FsUmVjb3JkID0gdHJ1ZTtcclxuICAgIGNvbnN0IGxvY2FsUmVjb3JkID0gYXdhaXQgdGhpcy5nZXRSZWNvcmQoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIGlzTG9jYWxSZWNvcmQpO1xyXG4gICAgY29uc3QgcmVjb3JkID0gYXdhaXQgdGhpcy5nZXRSZWNvcmQoc2NoZW1hTmFtZSwgcmVjb3JkSWQpO1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJlY29yZCwgbG9jYWxSZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSB0b2RvcyBvcyByZWdpc3Ryb3MgcmVmZXJlbnRlIGFvICpzY2hlbWEqIGluZm9ybWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFOYW1lIE5vbWUgZG8gKnNjaGVtYSouXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0QWxsKHNjaGVtYU5hbWU6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8b2JqZWN0Pj4ge1xyXG4gICAgY29uc3Qgc3RvcmFnZUtleXMgPSBhd2FpdCB0aGlzLnBvU3RvcmFnZS5rZXlzKCk7XHJcbiAgICBjb25zdCBzY2hlbWFSZWNvcmRzID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc3RvcmFnZUtleXMpIHtcclxuICAgICAgaWYgKFBvU2NoZW1hU2VydmljZS5pc1NjaGVtYUtleShrZXksIHNjaGVtYU5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0SWRCeVJlY29yZEtleShrZXkpO1xyXG4gICAgICAgIHNjaGVtYVJlY29yZHMucHVzaChhd2FpdCB0aGlzLmdldChzY2hlbWFOYW1lLCBpZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHNjaGVtYVJlY29yZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZ3VhcmRhIGEgbGliZXJhw6fDo28gZG8gcmVjdXJzbyBsaW1pdGFkbywgcG9zdGVyaW9ybWVudGUgbyBlbnZvbHZlIGVtIHVtIGNvbXBvcnRhbWVudG9cclxuICAgKiBkZSBibG9xdWVpbyBlIGRlc2Jsb3F1ZWlvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbGltaXRlZFJlc291cmNlIEZ1bsOnw6NvIHF1ZSBzZXLDoSBlbnZvbHZpZGEgbm8gY29tcG9ydGFtZW50byBkZSBibG9xdWVpbyBlIGRlc2Jsb3F1ZWlvLlxyXG4gICAqL1xyXG4gIGxpbWl0ZWRDYWxsV3JhcChsaW1pdGVkUmVzb3VyY2U6IEZ1bmN0aW9uKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnBvU3RvcmFnZS5saW1pdGVkQ2FsbFdyYXAobGltaXRlZFJlc291cmNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSB1bSByZWdpc3RybyBkZSB1bSAqc2NoZW1hKiBpbmZvcm1hZG8uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZW1hTmFtZSBOb21lIGRvICpzY2hlbWEqLlxyXG4gICAqIEBwYXJhbSB7YW55fSByZWNvcmRJZCBJZCBkbyByZWdpc3Ryby5cclxuICAgKi9cclxuICBhc3luYyByZW1vdmUoc2NoZW1hTmFtZTogc3RyaW5nLCByZWNvcmRJZDogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlY29yZEtleSA9IFBvU2NoZW1hU2VydmljZS5nZXRSZWNvcmRLZXkoc2NoZW1hTmFtZSwgcmVjb3JkSWQpO1xyXG4gICAgY29uc3QgbG9jYWxSZWNvcmRLZXkgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWUsIHJlY29yZElkLCB0cnVlKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnBvU3RvcmFnZS5yZW1vdmUocmVjb3JkS2V5KTtcclxuICAgIGF3YWl0IHRoaXMucG9TdG9yYWdlLnJlbW92ZShsb2NhbFJlY29yZEtleSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHVhbGl6YSB1bSByZWdpc3RybyBkZSB1bSAqc2NoZW1hKiBpbmZvcm1hZG8uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BvU3luY1NjaGVtYX0gc2NoZW1hICoqU2NoZW1hKiByZWZlcmVudGUgYW8gcmVnaXN0cm8gcXVlIHNlcsOhIGFsdGVyYWRvLlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIGF0dWFsaXphZG8uXHJcbiAgICogQHBhcmFtIHthbnl9IHJlY29yZElkIElkIGRvIHJlZ2lzdHJvIHF1ZSBkZXNlamEgc2VyIGFsdGVyYWRvLiBEZXZlIHNlciB1dGlsaXphZG8gZW0gY2Fzb3MgZW0gcXVlIG8gaWQgZm9pIGFsdGVyYWRvLlxyXG4gICAqL1xyXG4gIGFzeW5jIHVwZGF0ZShzY2hlbWE6IFBvU3luY1NjaGVtYSwgcmVjb3JkOiBvYmplY3QsIHJlY29yZElkPzogYW55KTogUHJvbWlzZTxvYmplY3Q+IHtcclxuICAgIGNvbnN0IGlkID0gUG9TY2hlbWFVdGlsLmdldFJlY29yZElkKHJlY29yZCwgc2NoZW1hKTtcclxuXHJcbiAgICBpZiAocmVjb3JkSWQpIHtcclxuICAgICAgcmVjb3JkID0gYXdhaXQgdGhpcy51cGRhdGVSZWNvcmRJZChzY2hlbWEubmFtZSwgcmVjb3JkLCByZWNvcmRJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2F2ZShzY2hlbWEsIHJlY29yZCwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXR1YWxpemEgdG9kb3Mgb3MgcmVnaXN0cm9zIGRlIHVtICpzY2hlbWEqLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQb1N5bmNTY2hlbWF9IHNjaGVtYSAqKlNjaGVtYSogcmVmZXJlbnRlIGFvcyByZWdpc3Ryb3MgcXVlIHNlcsOjbyBhbHRlcmFkb3MuXHJcbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSByZWNvcmRzIExpc3RhIGRlIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIGFsdGVyYWRvcy5cclxuICAgKi9cclxuICBhc3luYyB1cGRhdGVBbGwoc2NoZW1hOiBQb1N5bmNTY2hlbWEsIHJlY29yZHM6IEFycmF5PG9iamVjdD4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGUoc2NoZW1hLCByZWNvcmQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWNvcmQoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIGlzTG9jYWxSZWNvcmQgPSBmYWxzZSk6IFByb21pc2U8b2JqZWN0PiB7XHJcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMucG9TdG9yYWdlLmdldChQb1NjaGVtYVNlcnZpY2UuZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWUsIHJlY29yZElkLCBpc0xvY2FsUmVjb3JkKSkpIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlKHNjaGVtYTogUG9TeW5jU2NoZW1hLCByZWNvcmQ6IG9iamVjdCwgcmVjb3JkSWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZXJ2ZXJSZWNvcmQsIGxvY2FsUmVjb3JkIH0gPSBQb1NjaGVtYVV0aWwuc2VwYXJhdGVTY2hlbWFGaWVsZHMoc2NoZW1hLCByZWNvcmQpO1xyXG4gICAgY29uc3QgcmVjb3JkS2V5ID0gUG9TY2hlbWFTZXJ2aWNlLmdldFJlY29yZEtleShzY2hlbWEubmFtZSwgcmVjb3JkSWQpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMucG9TdG9yYWdlLnNldChyZWNvcmRLZXksIHNlcnZlclJlY29yZCk7XHJcbiAgICBhd2FpdCB0aGlzLnNhdmVMb2NhbEZpZWxkcyhzY2hlbWEubmFtZSwgbG9jYWxSZWNvcmQsIHJlY29yZElkKTtcclxuXHJcbiAgICByZXR1cm4gcmVjb3JkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlTG9jYWxGaWVsZHMoc2NoZW1hTmFtZTogc3RyaW5nLCBsb2NhbEZpZWxkczogb2JqZWN0LCByZWNvcmRJZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgY29udGFpbnNMb2NhbEZpZWxkcyA9IE9iamVjdC5rZXlzKGxvY2FsRmllbGRzKS5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGNvbnRhaW5zTG9jYWxGaWVsZHMpIHtcclxuICAgICAgY29uc3QgbG9jYWxSZWNvcmRLZXkgPSBQb1NjaGVtYVNlcnZpY2UuZ2V0UmVjb3JkS2V5KHNjaGVtYU5hbWUsIHJlY29yZElkLCB0cnVlKTtcclxuICAgICAgYXdhaXQgdGhpcy5wb1N0b3JhZ2Uuc2V0KGxvY2FsUmVjb3JkS2V5LCBsb2NhbEZpZWxkcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJlY29yZElkKHNjaGVtYU5hbWUsIHJlY29yZCwgcmVjb3JkSWQpIHtcclxuICAgIGNvbnN0IGlzTG9jYWxSZWNvcmQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGxvY2FsUmVjb3JkID0gYXdhaXQgdGhpcy5nZXRSZWNvcmQoc2NoZW1hTmFtZSwgcmVjb3JkSWQsIGlzTG9jYWxSZWNvcmQpO1xyXG4gICAgYXdhaXQgdGhpcy5yZW1vdmUoc2NoZW1hTmFtZSwgcmVjb3JkSWQpO1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJlY29yZCwgbG9jYWxSZWNvcmQpO1xyXG4gIH1cclxufVxyXG4iXX0=