active-connect-ng2 0.1.0 → 0.1.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.
@@ -1,16 +1,42 @@
1
1
  import { NgModule } from '@angular/core';
2
+ import { NgxIndexedDBModule } from 'ngx-indexed-db';
2
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-indexed-db";
5
+ const dbConfig = {
6
+ name: 'activeconnect_cache',
7
+ version: 1,
8
+ objectStoresMeta: [
9
+ {
10
+ store: 'outbound',
11
+ storeConfig: { keyPath: 'method', autoIncrement: false },
12
+ storeSchema: [
13
+ { name: 'method', keypath: 'method', options: { unique: true } },
14
+ { name: 'data', keypath: 'data', options: { unique: false } },
15
+ {
16
+ name: 'globalHash',
17
+ keypath: 'globalHash',
18
+ options: { unique: false },
19
+ },
20
+ {
21
+ name: 'specificHash',
22
+ keypath: 'specificHash',
23
+ options: { unique: false },
24
+ },
25
+ ],
26
+ },
27
+ ],
28
+ };
3
29
  export class ActiveConnectNg2Module {
4
30
  }
5
31
  ActiveConnectNg2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
7
- ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
32
+ ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [i1.NgxIndexedDBModule], exports: [NgxIndexedDBModule] });
33
+ ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [NgxIndexedDBModule.forRoot(dbConfig), NgxIndexedDBModule] });
8
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, decorators: [{
9
35
  type: NgModule,
10
36
  args: [{
11
37
  declarations: [],
12
- imports: [],
13
- exports: [],
38
+ imports: [NgxIndexedDBModule.forRoot(dbConfig)],
39
+ exports: [NgxIndexedDBModule],
14
40
  }]
15
41
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWNvbm5lY3QtbmcyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjdGl2ZS1jb25uZWN0LW5nMi9zcmMvbGliL2FjdGl2ZS1jb25uZWN0LW5nMi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLHNCQUFzQjs7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCO29IQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2ZUNvbm5lY3ROZzJNb2R1bGUge31cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWNvbm5lY3QtbmcyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjdGl2ZS1jb25uZWN0LW5nMi9zcmMvbGliL2FjdGl2ZS1jb25uZWN0LW5nMi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRTlELE1BQU0sUUFBUSxHQUFhO0lBQ3pCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLENBQUM7SUFDVixnQkFBZ0IsRUFBRTtRQUNoQjtZQUNFLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRTtZQUN4RCxXQUFXLEVBQUU7Z0JBQ1gsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNoRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzdEO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixPQUFPLEVBQUUsWUFBWTtvQkFDckIsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtpQkFDM0I7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLE9BQU8sRUFBRSxjQUFjO29CQUN2QixPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2lCQUMzQjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFPRixNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO29IQUF0QixzQkFBc0IsOENBRnZCLGtCQUFrQjtvSEFFakIsc0JBQXNCLFlBSHZCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDcEMsa0JBQWtCOzJGQUVqQixzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neEluZGV4ZWREQk1vZHVsZSwgREJDb25maWcgfSBmcm9tICduZ3gtaW5kZXhlZC1kYic7XG5cbmNvbnN0IGRiQ29uZmlnOiBEQkNvbmZpZyA9IHtcbiAgbmFtZTogJ2FjdGl2ZWNvbm5lY3RfY2FjaGUnLFxuICB2ZXJzaW9uOiAxLFxuICBvYmplY3RTdG9yZXNNZXRhOiBbXG4gICAge1xuICAgICAgc3RvcmU6ICdvdXRib3VuZCcsXG4gICAgICBzdG9yZUNvbmZpZzogeyBrZXlQYXRoOiAnbWV0aG9kJywgYXV0b0luY3JlbWVudDogZmFsc2UgfSxcbiAgICAgIHN0b3JlU2NoZW1hOiBbXG4gICAgICAgIHsgbmFtZTogJ21ldGhvZCcsIGtleXBhdGg6ICdtZXRob2QnLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sXG4gICAgICAgIHsgbmFtZTogJ2RhdGEnLCBrZXlwYXRoOiAnZGF0YScsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZ2xvYmFsSGFzaCcsXG4gICAgICAgICAga2V5cGF0aDogJ2dsb2JhbEhhc2gnLFxuICAgICAgICAgIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3NwZWNpZmljSGFzaCcsXG4gICAgICAgICAga2V5cGF0aDogJ3NwZWNpZmljSGFzaCcsXG4gICAgICAgICAgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbTmd4SW5kZXhlZERCTW9kdWxlLmZvclJvb3QoZGJDb25maWcpXSxcbiAgZXhwb3J0czogW05neEluZGV4ZWREQk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2ZUNvbm5lY3ROZzJNb2R1bGUge31cbiJdfQ==
@@ -1,14 +1,17 @@
1
1
  import { JsonParser } from './json/json-parser';
2
2
  export class WebsocketClient {
3
- constructor(url, supportsCache) {
3
+ constructor(url, supportsCache, dbService) {
4
4
  this.url = url;
5
5
  this.supportsCache = supportsCache;
6
+ this.dbService = dbService;
6
7
  this.requestStack = [];
7
8
  this._token = '';
8
9
  this.connectionEstablishedOnce = false;
9
10
  this.messageId = 0;
10
11
  this.expectedMethods = new Map();
11
12
  this.closed = false;
13
+ if (supportsCache)
14
+ this.initCache();
12
15
  if (!url) {
13
16
  let protocol;
14
17
  let port;
@@ -26,7 +29,7 @@ export class WebsocketClient {
26
29
  }
27
30
  this.url = protocol + '//' + document.location.hostname + port + '/wss';
28
31
  }
29
- this.connect(this.url + (supportsCache ? '?cache=true' : ''));
32
+ this.connect(this.url);
30
33
  }
31
34
  connect(url) {
32
35
  if (!this.subject) {
@@ -162,7 +165,7 @@ export class WebsocketClient {
162
165
  else {
163
166
  const out = WebsocketClient.outbounds.get(method);
164
167
  if (out) {
165
- out(value, globalHash, specificHash);
168
+ out(value, globalHash, specificHash, this);
166
169
  }
167
170
  else {
168
171
  const handle = WebsocketClient.handles.get(method);
@@ -178,13 +181,22 @@ export class WebsocketClient {
178
181
  }
179
182
  }
180
183
  handleOutboundCacheRequest(method) {
181
- const item = localStorage.getItem('ac_oc_' + method);
182
- if (item) {
183
- const data = JSON.parse(item);
184
- this.send('___cache', {
185
- method,
186
- globalHash: data.globalHash || null,
187
- specificHash: data.specificHash || null,
184
+ if (this.dbService) {
185
+ this.dbService.getByKey('outbound', method).subscribe((item) => {
186
+ if (item) {
187
+ this.send('___cache', {
188
+ method,
189
+ globalHash: item.globalHash || null,
190
+ specificHash: item.specificHash || null,
191
+ });
192
+ }
193
+ else {
194
+ this.send('___cache', {
195
+ method,
196
+ globalHash: null,
197
+ specificHash: null,
198
+ });
199
+ }
188
200
  });
189
201
  }
190
202
  else {
@@ -193,6 +205,7 @@ export class WebsocketClient {
193
205
  globalHash: null,
194
206
  specificHash: null,
195
207
  });
208
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
196
209
  }
197
210
  }
198
211
  static expectOutbound(method, callback) {
@@ -273,9 +286,10 @@ export class WebsocketClient {
273
286
  this.closed = true;
274
287
  this.ws.close();
275
288
  }
289
+ initCache() { }
276
290
  }
277
291
  WebsocketClient.resetRequestedStateCallbacks = [];
278
292
  WebsocketClient.outbounds = new Map();
279
293
  WebsocketClient.handles = new Map();
280
294
  WebsocketClient.onSuccessHandlers = [];
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsR0FBWSxFQUFVLGFBQXVCO1FBQTdDLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBVTtRQThCekQsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFFekIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQTRCWiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFzQzNDLGNBQVMsR0FBVyxDQUFDLENBQUM7UUF3Q3RCLG9CQUFlLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7UUF3THBFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFqVXBCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLFFBQVEsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDO1lBQ1QsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsS0FBSyxRQUFRLENBQUMsQ0FBQztvQkFDYixRQUFRLEdBQUcsTUFBTSxDQUFDO29CQUNsQixJQUFJLEdBQUcsTUFBTSxDQUFDO29CQUNkLE1BQU07aUJBQ1A7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ1AsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDakIsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUN6RTtRQUNELElBQUksQ0FBQyxPQUFPLENBQUUs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LElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7O0FBM1FjLDRDQUE0QixHQUFlLEVBQUUsQ0FBQztBQStKOUMseUJBQVMsR0FHcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQVlDLHVCQUFPLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7QUFzRXBELGlDQUFpQixHQUcxQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvcmFibGVGdW5jdGlvbiB9IGZyb20gJy4vZGVjb3JhdG9ycy9mdW5jdGlvbic7XHJcbmltcG9ydCB7IEpzb25QYXJzZXIgfSBmcm9tICcuL2pzb24vanNvbi1wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldENsaWVudCB7XHJcbiAgd3MhOiBXZWJTb2NrZXQ7XHJcbiAgcG9vbCE6IHsgV3NzQ29ubmVjdGVkOiBib29sZWFuIH0gfCBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVybD86IHN0cmluZywgcHJpdmF0ZSBzdXBwb3J0c0NhY2hlPzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgbGV0IHByb3RvY29sO1xyXG4gICAgICBsZXQgcG9ydDtcclxuICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkge1xyXG4gICAgICAgIGNhc2UgJ2h0dHBzOic6IHtcclxuICAgICAgICAgIHByb3RvY29sID0gJ3dzczonO1xyXG4gICAgICAgICAgcG9ydCA9ICc6NDQzJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICBwcm90b2NvbCA9ICd3czonO1xyXG4gICAgICAgICAgcG9ydCA9ICc6ODAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXJsID0gcHJvdG9jb2wgKyAnLy8nICsgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgKyBwb3J0ICsgJy93c3MnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25uZWN0KCh0aGlzLnVybCBhcyBzdHJpbmcpICsgKHN1cHBvcnRzQ2FjaGUgPyAnP2NhY2hlPXRydWUnIDogJycpKTtcclxuICB9XHJcblxyXG4gIHN1YmplY3Q6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBjb25uZWN0KHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc3ViamVjdCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZSh1cmwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdFN0YWNrOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF90b2tlbiA9ICcnO1xyXG4gIHB1YmxpYyBnZXQgVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fdG9rZW4pIHtcclxuICAgICAgaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuJykgfHwgJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdG9rZW47XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgVG9rZW4odmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Rva2VuID0gdmFsO1xyXG4gICAgaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW4nLCB2YWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXQgQ29ubmVjdGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zZW5kQnJvd3NlckluZm9Ub1NlcnZlcigpO1xyXG5cclxuICAgICAgdGhpcy5yZXNldFJlcXVlc3RlZFN0YXRlKCk7XHJcbiAgICAgIHRoaXMuYXV0aCh0aGlzLlRva2VuKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlcXVlc3RTdGFjay5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbmRUb1NvY2tldChlLm1ldGhvZCwgZS5kYXRhKTtcclxuICAgICAgICAgIHRoaXMucmVxdWVzdFN0YWNrID0gdGhpcy5yZXF1ZXN0U3RhY2suZmlsdGVyKChlMSkgPT4gZTEgIT0gZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9vbCAmJiB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkKSB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgc3RhdGljIHJlc2V0UmVxdWVzdGVkU3RhdGVDYWxsYmFja3M6IEZ1bmN0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZE9uY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHJlc2V0UmVxdWVzdGVkU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uRXN0YWJsaXNoZWRPbmNlKSB7XHJcbiAgICAgIC8vIHJlc2V0IHJlcXVlc3RlZCBzdGF0ZSBmb3Igb3V0Ym91bmRzXHJcbiAgICAgIFdlYnNvY2tldENsaWVudC5yZXNldFJlcXVlc3RlZFN0YXRlQ2FsbGJhY2tzLmZvckVhY2goKHJlc2V0KSA9PiB7XHJcbiAgICAgICAgcmVzZXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbm5lY3Rpb25Fc3RhYmxpc2hlZE9uY2UgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgc3RhdGljIGFkZFJlc2V0UmVxdWVzdGluZ1N0YXRlQ2FsbGJhY2soY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQucmVzZXRSZXF1ZXN0ZWRTdGF0ZUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlKHVybDogc3RyaW5nKSB7XHJcbiAgICAvLyBjcmVhdGUgbmV3IGNvbm5lY3Rpb25cclxuICAgIHRoaXMud3MgPSBuZXcgV2ViU29ja2V0KHVybCArICh0aGlzLnN1cHBvcnRzQ2FjaGUgPyAnP2NhY2hlPXRydWUnIDogJycpKTtcclxuICAgIHRoaXMud3Mub25lcnJvciA9IChlcnIpID0+IHtcclxuICAgICAgdGhpcy53cy5jbG9zZSgpO1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgfTtcclxuICAgIHRoaXMud3Mub25vcGVuID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbm5lY3RlZCA9IHRydWU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy53cy5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VSZWNlaXZlZChKc29uUGFyc2VyLnBhcnNlKGUuZGF0YS50b1N0cmluZygpKSk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy53cy5vbmNsb3NlID0gKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9vbCAmJiB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkKSB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbm5lY3QodXJsKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWVzc2FnZUlkOiBudW1iZXIgPSAwO1xyXG4gIHByb3RlY3RlZCBzZW5kVG9Tb2NrZXQoXHJcbiAgICBtZXRob2Q6IHN0cmluZyxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGRvbnRFbnN1cmVUcmFuc21pc3Npb24/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBtZXNzYWdlSWQgPSArK3RoaXMubWVzc2FnZUlkO1xyXG4gICAgaWYgKHRoaXMud3MucmVhZHlTdGF0ZSAhPSB0aGlzLndzLk9QRU4pIHtcclxuICAgICAgaWYgKCFkb250RW5zdXJlVHJhbnNtaXNzaW9uKVxyXG4gICAgICAgIHRoaXMucmVxdWVzdFN0YWNrLnB1c2goeyBtZXRob2QsIGRhdGEsIG1lc3NhZ2VJZCB9KTtcclxuICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndzLnNlbmQoSnNvblBhcnNlci5zdHJpbmdpZnkoeyBtZXRob2QsIHZhbHVlOiBkYXRhLCBtZXNzYWdlSWQgfSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lc3NhZ2VJZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGF1dGgodG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZW5kVG9Tb2NrZXQoJ2F1dGgudG9rZW4nLCB0b2tlbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZG9udEVuc3VyZVRyYW5zbWlzc2lvbj86IGJvb2xlYW5cclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgbWVzc2FnZUlkID0gdGhpcy5zZW5kVG9Tb2NrZXQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZGF0YSxcclxuICAgICAgZG9udEVuc3VyZVRyYW5zbWlzc2lvbiB8fCBmYWxzZVxyXG4gICAgKTtcclxuICAgIGlmIChtZXNzYWdlSWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwZWN0TWV0aG9kKGBtLiR7bWV0aG9kfWAsIG1lc3NhZ2VJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGVjdGVkTWV0aG9kczogTWFwPHN0cmluZyB8IG51bWJlciwgQXJyYXk8RnVuY3Rpb24+PiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGV4cGVjdE1ldGhvZChtZXRob2Q6IHN0cmluZywgbWVzc2FnZUlkPzogbnVtYmVyIHwgbnVsbCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlSWQpIHtcclxuICAgICAgICB0aGlzLmV4cGVjdGVkTWV0aG9kcy5zZXQobWVzc2FnZUlkLCBbcmVzb2x2ZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTWV0aG9kcy5oYXMobWV0aG9kKSkge1xyXG4gICAgICAgICAgbGV0IGFyciA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXRob2QpO1xyXG4gICAgICAgICAgKGFyciBhcyBBcnJheTxGdW5jdGlvbj4pLnB1c2gocmVzb2x2ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRNZXRob2RzLnNldChtZXRob2QsIFtyZXNvbHZlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWVzc2FnZVJlY2VpdmVkKHtcclxuICAgIG1ldGhvZCxcclxuICAgIHZhbHVlLFxyXG4gICAgbWVzc2FnZUlkLFxyXG4gICAgZ2xvYmFsSGFzaCxcclxuICAgIHNwZWNpZmljSGFzaCxcclxuICB9OiB7XHJcbiAgICBtZXRob2Q6IHN0cmluZztcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgICBtZXNzYWdlSWQ6IG51bWJlciB8IG51bGw7XHJcbiAgICBnbG9iYWxIYXNoOiBudW1iZXIgfCBudWxsO1xyXG4gICAgc3BlY2lmaWNIYXNoOiBudW1iZXIgfCBudWxsO1xyXG4gIH0pIHtcclxuICAgIGlmIChtZXRob2QgPT0gJ19fX2NhY2hlJykge1xyXG4gICAgICB0aGlzLmhhbmRsZU91dGJvdW5kQ2FjaGVSZXF1ZXN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChtZXNzYWdlSWQpIHtcclxuICAgICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLmV4cGVjdGVkTWV0aG9kcy5nZXQobWVzc2FnZUlkKTtcclxuICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgZnVuYyA9IGNhbGxiYWNrLnNoaWZ0KCk7XHJcbiAgICAgICAgaWYgKGZ1bmMpIGZ1bmModmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaW52b2tlU3VjY2Vzc0hhbmRsZXJzKG1ldGhvZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLmV4cGVjdGVkTWV0aG9kcy5nZXQobWV0aG9kKTtcclxuICAgICAgICBpZiAoY2FsbGJhY2sgJiYgY2FsbGJhY2subGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgZnVuYyA9IGNhbGxiYWNrLnNoaWZ0KCk7XHJcbiAgICAgICAgICBpZiAoZnVuYykgZnVuYyh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG91dCA9IFdlYnNvY2tldENsaWVudC5vdXRib3VuZHMuZ2V0KG1ldGhvZCk7XHJcbiAgICAgICAgICBpZiAob3V0KSB7XHJcbiAgICAgICAgICAgIG91dCh2YWx1ZSwgZ2xvYmFsSGFzaCwgc3BlY2lmaWNIYXNoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IFdlYnNvY2tldENsaWVudC5oYW5kbGVzLmdldChtZXRob2QpO1xyXG4gICAgICAgICAgICBpZiAoaGFuZGxlKSB7XHJcbiAgICAgICAgICAgICAgKGhhbmRsZS5GdW5jIGFzIEZ1bmN0aW9uKSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICdObyBNZXNzYWdlSWQgd2FzIHByb3ZpZGVkLCB0aGUgY29ubmVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT3V0Ym91bmRDYWNoZVJlcXVlc3QobWV0aG9kOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNfb2NfJyArIG1ldGhvZCk7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKGl0ZW0pO1xyXG4gICAgICB0aGlzLnNlbmQoJ19fX2NhY2hlJywge1xyXG4gICAgICAgIG1ldGhvZCxcclxuICAgICAgICBnbG9iYWxIYXNoOiBkYXRhLmdsb2JhbEhhc2ggfHwgbnVsbCxcclxuICAgICAgICBzcGVjaWZpY0hhc2g6IGRhdGEuc3BlY2lmaWNIYXNoIHx8IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZW5kKCdfX19jYWNoZScsIHtcclxuICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgZ2xvYmFsSGFzaDogbnVsbCxcclxuICAgICAgICBzcGVjaWZpY0hhc2g6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgb3V0Ym91bmRzOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAoZGF0YTogYW55LCBnbG9iYWxIYXNoOiBudW1iZXIgfCBudWxsLCBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGwpID0+IHZvaWRcclxuICA+ID0gbmV3IE1hcCgpO1xyXG4gIHN0YXRpYyBleHBlY3RPdXRib3VuZChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgY2FsbGJhY2s6IChcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBnbG9iYWxIYXNoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGxcclxuICAgICkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50Lm91dGJvdW5kcy5zZXQobWV0aG9kLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBoYW5kbGVzOiBNYXA8c3RyaW5nLCBEZWNvcmFibGVGdW5jdGlvbj4gPSBuZXcgTWFwKCk7XHJcbiAgc3RhdGljIHJlZ2lzdGVySGFuZGxlKG1ldGhvZDogc3RyaW5nLCBjYWxsYmFjazogRGVjb3JhYmxlRnVuY3Rpb24pIHtcclxuICAgIFdlYnNvY2tldENsaWVudC5oYW5kbGVzLnNldChtZXRob2QsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy53cykgcmV0dXJuIHRoaXMud3MucmVhZHlTdGF0ZSA9PSBXZWJTb2NrZXQuT1BFTjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kQnJvd3NlckluZm9Ub1NlcnZlcigpIHtcclxuICAgIC8vIHNlbmQgYnJvd3NlciAvIG9zIGluZm9ybWF0aW9uXHJcbiAgICBjb25zdCBicm93c2VyID0gdGhpcy5nZXRCcm93c2VyKCk7XHJcbiAgICBjb25zdCBvcyA9IHRoaXMuZ2V0T1MoKTtcclxuICAgIHRoaXMuc2VuZCgnX19fYnJvd3NlcicsIHtcclxuICAgICAgYnJvd3NlcjogYCR7YnJvd3Nlci5uYW1lfSAke2Jyb3dzZXIudmVyc2lvbn0gJHtvc31gLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QnJvd3NlcigpOiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH0ge1xyXG4gICAgLy8gaHR0cHM6Ly93d3cuZ3JlZ29yeXZhcmdoZXNlLmNvbS9ob3ctdG8tZ2V0LWJyb3dzZXItbmFtZS1hbmQtdmVyc2lvbi12aWEtamF2YXNjcmlwdC9cclxuICAgIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHRlbSxcclxuICAgICAgTSA9XHJcbiAgICAgICAgdWEubWF0Y2goXHJcbiAgICAgICAgICAvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2lcclxuICAgICAgICApIHx8IFtdO1xyXG4gICAgaWYgKC90cmlkZW50L2kudGVzdChNWzFdKSkge1xyXG4gICAgICB0ZW0gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModWEpIHx8IFtdO1xyXG4gICAgICByZXR1cm4geyBuYW1lOiAnSUUgJywgdmVyc2lvbjogdGVtWzFdIHx8ICcnIH07XHJcbiAgICB9XHJcbiAgICBpZiAoTVsxXSA9PT0gJ0Nocm9tZScpIHtcclxuICAgICAgdGVtID0gdWEubWF0Y2goL1xcYk9QUlxcLyhcXGQrKS8pO1xyXG4gICAgICBpZiAodGVtICE9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB0ZW1bMV0gfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTSA9IE1bMl0gPyBbTVsxXSwgTVsyXV0gOiBbbmF2aWdhdG9yLmFwcE5hbWUsIG5hdmlnYXRvci5hcHBWZXJzaW9uLCAnLT8nXTtcclxuICAgIGlmICgodGVtID0gdWEubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSkpICE9IG51bGwpIHtcclxuICAgICAgTS5zcGxpY2UoMSwgMSwgdGVtWzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IE1bMF0sXHJcbiAgICAgIHZlcnNpb246IE1bMV0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9TKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHBsYXRmb3JtID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSxcclxuICAgICAgbWFjb3NQbGF0Zm9ybXMgPSBbJ01hY2ludG9zaCcsICdNYWNJbnRlbCcsICdNYWNQUEMnLCAnTWFjNjhLJ10sXHJcbiAgICAgIHdpbmRvd3NQbGF0Zm9ybXMgPSBbJ1dpbjMyJywgJ1dpbjY0JywgJ1dpbmRvd3MnLCAnV2luQ0UnXSxcclxuICAgICAgaW9zUGxhdGZvcm1zID0gWydpUGhvbmUnLCAnaVBhZCcsICdpUG9kJ10sXHJcbiAgICAgIG9zID0gbnVsbDtcclxuXHJcbiAgICBpZiAobWFjb3NQbGF0Zm9ybXMuaW5kZXhPZihwbGF0Zm9ybSkgIT09IC0xKSB7XHJcbiAgICAgIG9zID0gJ01hYyBPUyc7XHJcbiAgICB9IGVsc2UgaWYgKGlvc1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnaU9TJztcclxuICAgIH0gZWxzZSBpZiAod2luZG93c1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnV2luZG93cyc7XHJcbiAgICB9IGVsc2UgaWYgKC9BbmRyb2lkLy50ZXN0KHVzZXJBZ2VudCkpIHtcclxuICAgICAgb3MgPSAnQW5kcm9pZCc7XHJcbiAgICB9IGVsc2UgaWYgKCFvcyAmJiAvTGludXgvLnRlc3QocGxhdGZvcm0pKSB7XHJcbiAgICAgIG9zID0gJ0xpbnV4JztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3MgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBvblN1Y2Nlc3NIYW5kbGVyczoge1xyXG4gICAgY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uO1xyXG4gICAgcmVnZXhwOiBSZWdFeHA7XHJcbiAgfVtdID0gW107XHJcbiAgcHVibGljIHN0YXRpYyBvblN1Y2Nlc3MoY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uLCByZWdleHA6IFJlZ0V4cCkge1xyXG4gICAgdGhpcy5vblN1Y2Nlc3NIYW5kbGVycy5wdXNoKHsgY2FsbGJhY2ssIHJlZ2V4cCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlU3VjY2Vzc0hhbmRsZXJzKG1ldGhvZDogc3RyaW5nKSB7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQub25TdWNjZXNzSGFuZGxlcnNcclxuICAgICAgLmZpbHRlcigoZSkgPT4gZS5yZWdleHAudGVzdChtZXRob2QpKVxyXG4gICAgICAuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIHZhciByZXMgPSAoZS5jYWxsYmFjay5GdW5jIGFzIEZ1bmN0aW9uKSgpO1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcclxuICAgICAgICAgIHJlcy50aGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgZGlzY29ubmVjdChyZXN0YXJ0PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFyZXN0YXJ0KSB0aGlzLmNsb3NlZCA9IHRydWU7XHJcbiAgICB0aGlzLndzLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxHQUFZLEVBQ1osYUFBdUIsRUFDeEIsU0FBK0I7UUFGOUIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNaLGtCQUFhLEdBQWIsYUFBYSxDQUFVO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBZ0NoQyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUV6QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBNEJaLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQXNDM0MsY0FBUyxHQUFXLENBQUMsQ0FBQztRQXdDdEIsb0JBQWUsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQXlNcEUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQW5WcEIsSUFBSSxhQUFhO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLFFBQVEsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDO1lBQ1QsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsS0FBSyxRQUFRLENBQUMsQ0FBQztvQkFDYixRQUFRLEdBQUcsTUFBTSxDQUFDO29CQUNsQixJQUFJLEdBQUcsTUFBTSxDQUFDO29CQUNkLE1BQU07aUJBQ1A7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ1AsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDakIsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLEdB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LElBQUksR0FBRyxHQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBaUIsRUFBRSxDQUFDO1lBQzFDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNaO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR00sVUFBVSxDQUFDLE9BQWlCO1FBQ2pDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sU0FBUyxLQUFJLENBQUM7O0FBOVJQLDRDQUE0QixHQUFlLEVBQUUsQ0FBQztBQTBLOUMseUJBQVMsR0FRcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQWFDLHVCQUFPLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7QUFzRXBELGlDQUFpQixHQUcxQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xyXG5pbXBvcnQgeyBEZWNvcmFibGVGdW5jdGlvbiB9IGZyb20gJy4vZGVjb3JhdG9ycy9mdW5jdGlvbic7XHJcbmltcG9ydCB7IEpzb25QYXJzZXIgfSBmcm9tICcuL2pzb24vanNvbi1wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldENsaWVudCB7XHJcbiAgd3MhOiBXZWJTb2NrZXQ7XHJcbiAgcG9vbCE6IHsgV3NzQ29ubmVjdGVkOiBib29sZWFuIH0gfCBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXJsPzogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBzdXBwb3J0c0NhY2hlPzogYm9vbGVhbixcclxuICAgIHB1YmxpYyBkYlNlcnZpY2U/OiBOZ3hJbmRleGVkREJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBpZiAoc3VwcG9ydHNDYWNoZSkgdGhpcy5pbml0Q2FjaGUoKTtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGxldCBwcm90b2NvbDtcclxuICAgICAgbGV0IHBvcnQ7XHJcbiAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpIHtcclxuICAgICAgICBjYXNlICdodHRwczonOiB7XHJcbiAgICAgICAgICBwcm90b2NvbCA9ICd3c3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjQ0Myc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgcHJvdG9jb2wgPSAnd3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjgwJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVybCA9IHByb3RvY29sICsgJy8vJyArIGRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lICsgcG9ydCArICcvd3NzJztcclxuICAgIH1cclxuICAgIHRoaXMuY29ubmVjdCh0aGlzLnVybCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgc3ViamVjdDogYW55O1xyXG5cclxuICBwcml2YXRlIGNvbm5lY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zdWJqZWN0KSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHVybCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0U3RhY2s6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3Rva2VuID0gJyc7XHJcbiAgcHVibGljIGdldCBUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLl90b2tlbikge1xyXG4gICAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSlcclxuICAgICAgICB0aGlzLl90b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSB8fCAnJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl90b2tlbjtcclxuICB9XHJcbiAgcHVibGljIHNldCBUb2tlbih2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdG9rZW4gPSB2YWw7XHJcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSkgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIHZhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldCBDb25uZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbmRCcm93c2VySW5mb1RvU2VydmVyKCk7XHJcblxyXG4gICAgICB0aGlzLnJlc2V0UmVxdWVzdGVkU3RhdGUoKTtcclxuICAgICAgdGhpcy5hdXRoKHRoaXMuVG9rZW4pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFN0YWNrLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VuZFRvU29ja2V0KGUubWV0aG9kLCBlLmRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0U3RhY2sgPSB0aGlzLnJlcXVlc3RTdGFjay5maWx0ZXIoKGUxKSA9PiBlMSAhPSBlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb29sICYmIHRoaXMucG9vbC5Xc3NDb25uZWN0ZWQpIHRoaXMucG9vbC5Xc3NDb25uZWN0ZWQgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRSZXF1ZXN0ZWRTdGF0ZUNhbGxiYWNrczogRnVuY3Rpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgY29ubmVjdGlvbkVzdGFibGlzaGVkT25jZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVzZXRSZXF1ZXN0ZWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25Fc3RhYmxpc2hlZE9uY2UpIHtcclxuICAgICAgLy8gcmVzZXQgcmVxdWVzdGVkIHN0YXRlIGZvciBvdXRib3VuZHNcclxuICAgICAgV2Vic29ja2V0Q2xpZW50LnJlc2V0UmVxdWVzdGVkU3RhdGVDYWxsYmFja3MuZm9yRWFjaCgocmVzZXQpID0+IHtcclxuICAgICAgICByZXNldCgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaGVkT25jZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgYWRkUmVzZXRSZXF1ZXN0aW5nU3RhdGVDYWxsYmFjayhjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgIFdlYnNvY2tldENsaWVudC5yZXNldFJlcXVlc3RlZFN0YXRlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGUodXJsOiBzdHJpbmcpIHtcclxuICAgIC8vIGNyZWF0ZSBuZXcgY29ubmVjdGlvblxyXG4gICAgdGhpcy53cyA9IG5ldyBXZWJTb2NrZXQodXJsICsgKHRoaXMuc3VwcG9ydHNDYWNoZSA/ICc/Y2FjaGU9dHJ1ZScgOiAnJykpO1xyXG4gICAgdGhpcy53cy5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICB0aGlzLndzLmNsb3NlKCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICB9O1xyXG4gICAgdGhpcy53cy5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29ubmVjdGVkID0gdHJ1ZTtcclxuICAgIH07XHJcbiAgICB0aGlzLndzLm9ubWVzc2FnZSA9IChlKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVJlY2VpdmVkKEpzb25QYXJzZXIucGFyc2UoZS5kYXRhLnRvU3RyaW5nKCkpKTtcclxuICAgIH07XHJcbiAgICB0aGlzLndzLm9uY2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wb29sICYmIHRoaXMucG9vbC5Xc3NDb25uZWN0ZWQpIHRoaXMucG9vbC5Xc3NDb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29ubmVjdCh1cmwpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZXNzYWdlSWQ6IG51bWJlciA9IDA7XHJcbiAgcHJvdGVjdGVkIHNlbmRUb1NvY2tldChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZG9udEVuc3VyZVRyYW5zbWlzc2lvbj86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9ICsrdGhpcy5tZXNzYWdlSWQ7XHJcbiAgICBpZiAodGhpcy53cy5yZWFkeVN0YXRlICE9IHRoaXMud3MuT1BFTikge1xyXG4gICAgICBpZiAoIWRvbnRFbnN1cmVUcmFuc21pc3Npb24pXHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0U3RhY2sucHVzaCh7IG1ldGhvZCwgZGF0YSwgbWVzc2FnZUlkIH0pO1xyXG4gICAgICBlbHNlIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud3Muc2VuZChKc29uUGFyc2VyLnN0cmluZ2lmeSh7IG1ldGhvZCwgdmFsdWU6IGRhdGEsIG1lc3NhZ2VJZCB9KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVzc2FnZUlkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXV0aCh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbmRUb1NvY2tldCgnYXV0aC50b2tlbicsIHRva2VuKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kKFxyXG4gICAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBkb250RW5zdXJlVHJhbnNtaXNzaW9uPzogYm9vbGVhblxyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnNlbmRUb1NvY2tldChcclxuICAgICAgbWV0aG9kLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkb250RW5zdXJlVHJhbnNtaXNzaW9uIHx8IGZhbHNlXHJcbiAgICApO1xyXG4gICAgaWYgKG1lc3NhZ2VJZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5leHBlY3RNZXRob2QoYG0uJHttZXRob2R9YCwgbWVzc2FnZUlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwZWN0ZWRNZXRob2RzOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBBcnJheTxGdW5jdGlvbj4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZXhwZWN0TWV0aG9kKG1ldGhvZDogc3RyaW5nLCBtZXNzYWdlSWQ/OiBudW1iZXIgfCBudWxsKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2VJZCkge1xyXG4gICAgICAgIHRoaXMuZXhwZWN0ZWRNZXRob2RzLnNldChtZXNzYWdlSWQsIFtyZXNvbHZlXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXhwZWN0ZWRNZXRob2RzLmhhcyhtZXRob2QpKSB7XHJcbiAgICAgICAgICBsZXQgYXJyID0gdGhpcy5leHBlY3RlZE1ldGhvZHMuZ2V0KG1ldGhvZCk7XHJcbiAgICAgICAgICAoYXJyIGFzIEFycmF5PEZ1bmN0aW9uPikucHVzaChyZXNvbHZlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5leHBlY3RlZE1ldGhvZHMuc2V0KG1ldGhvZCwgW3Jlc29sdmVdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZXNzYWdlUmVjZWl2ZWQoe1xyXG4gICAgbWV0aG9kLFxyXG4gICAgdmFsdWUsXHJcbiAgICBtZXNzYWdlSWQsXHJcbiAgICBnbG9iYWxIYXNoLFxyXG4gICAgc3BlY2lmaWNIYXNoLFxyXG4gIH06IHtcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIG1lc3NhZ2VJZDogbnVtYmVyIHwgbnVsbDtcclxuICAgIGdsb2JhbEhhc2g6IG51bWJlciB8IG51bGw7XHJcbiAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGw7XHJcbiAgfSkge1xyXG4gICAgaWYgKG1ldGhvZCA9PSAnX19fY2FjaGUnKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlT3V0Ym91bmRDYWNoZVJlcXVlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1lc3NhZ2VJZCkge1xyXG4gICAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXNzYWdlSWQpO1xyXG4gICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBmdW5jID0gY2FsbGJhY2suc2hpZnQoKTtcclxuICAgICAgICBpZiAoZnVuYykgZnVuYyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5pbnZva2VTdWNjZXNzSGFuZGxlcnMobWV0aG9kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXRob2QpO1xyXG4gICAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBmdW5jID0gY2FsbGJhY2suc2hpZnQoKTtcclxuICAgICAgICAgIGlmIChmdW5jKSBmdW5jKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb3V0ID0gV2Vic29ja2V0Q2xpZW50Lm91dGJvdW5kcy5nZXQobWV0aG9kKTtcclxuICAgICAgICAgIGlmIChvdXQpIHtcclxuICAgICAgICAgICAgb3V0KHZhbHVlLCBnbG9iYWxIYXNoLCBzcGVjaWZpY0hhc2gsIHRoaXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gV2Vic29ja2V0Q2xpZW50LmhhbmRsZXMuZ2V0KG1ldGhvZCk7XHJcbiAgICAgICAgICAgIGlmIChoYW5kbGUpIHtcclxuICAgICAgICAgICAgICAoaGFuZGxlLkZ1bmMgYXMgRnVuY3Rpb24pKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgJ05vIE1lc3NhZ2VJZCB3YXMgcHJvdmlkZWQsIHRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPdXRib3VuZENhY2hlUmVxdWVzdChtZXRob2Q6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZGJTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuZGJTZXJ2aWNlLmdldEJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZCkuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgdGhpcy5zZW5kKCdfX19jYWNoZScsIHtcclxuICAgICAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgICAgICBnbG9iYWxIYXNoOiBpdGVtLmdsb2JhbEhhc2ggfHwgbnVsbCxcclxuICAgICAgICAgICAgc3BlY2lmaWNIYXNoOiBpdGVtLnNwZWNpZmljSGFzaCB8fCBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VuZCgnX19fY2FjaGUnLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZCxcclxuICAgICAgICAgICAgZ2xvYmFsSGFzaDogbnVsbCxcclxuICAgICAgICAgICAgc3BlY2lmaWNIYXNoOiBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VuZCgnX19fY2FjaGUnLCB7XHJcbiAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgIGdsb2JhbEhhc2g6IG51bGwsXHJcbiAgICAgICAgc3BlY2lmaWNIYXNoOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgb3V0Ym91bmRzOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAoXHJcbiAgICAgIGRhdGE6IGFueSxcclxuICAgICAgZ2xvYmFsSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgc3BlY2lmaWNIYXNoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICBfdGhpczogV2Vic29ja2V0Q2xpZW50XHJcbiAgICApID0+IHZvaWRcclxuICA+ID0gbmV3IE1hcCgpO1xyXG4gIHN0YXRpYyBleHBlY3RPdXRib3VuZChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgY2FsbGJhY2s6IChcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBnbG9iYWxIYXNoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGwsXHJcbiAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50Lm91dGJvdW5kcy5zZXQobWV0aG9kLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBoYW5kbGVzOiBNYXA8c3RyaW5nLCBEZWNvcmFibGVGdW5jdGlvbj4gPSBuZXcgTWFwKCk7XHJcbiAgc3RhdGljIHJlZ2lzdGVySGFuZGxlKG1ldGhvZDogc3RyaW5nLCBjYWxsYmFjazogRGVjb3JhYmxlRnVuY3Rpb24pIHtcclxuICAgIFdlYnNvY2tldENsaWVudC5oYW5kbGVzLnNldChtZXRob2QsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy53cykgcmV0dXJuIHRoaXMud3MucmVhZHlTdGF0ZSA9PSBXZWJTb2NrZXQuT1BFTjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kQnJvd3NlckluZm9Ub1NlcnZlcigpIHtcclxuICAgIC8vIHNlbmQgYnJvd3NlciAvIG9zIGluZm9ybWF0aW9uXHJcbiAgICBjb25zdCBicm93c2VyID0gdGhpcy5nZXRCcm93c2VyKCk7XHJcbiAgICBjb25zdCBvcyA9IHRoaXMuZ2V0T1MoKTtcclxuICAgIHRoaXMuc2VuZCgnX19fYnJvd3NlcicsIHtcclxuICAgICAgYnJvd3NlcjogYCR7YnJvd3Nlci5uYW1lfSAke2Jyb3dzZXIudmVyc2lvbn0gJHtvc31gLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QnJvd3NlcigpOiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH0ge1xyXG4gICAgLy8gaHR0cHM6Ly93d3cuZ3JlZ29yeXZhcmdoZXNlLmNvbS9ob3ctdG8tZ2V0LWJyb3dzZXItbmFtZS1hbmQtdmVyc2lvbi12aWEtamF2YXNjcmlwdC9cclxuICAgIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHRlbSxcclxuICAgICAgTSA9XHJcbiAgICAgICAgdWEubWF0Y2goXHJcbiAgICAgICAgICAvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2lcclxuICAgICAgICApIHx8IFtdO1xyXG4gICAgaWYgKC90cmlkZW50L2kudGVzdChNWzFdKSkge1xyXG4gICAgICB0ZW0gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModWEpIHx8IFtdO1xyXG4gICAgICByZXR1cm4geyBuYW1lOiAnSUUgJywgdmVyc2lvbjogdGVtWzFdIHx8ICcnIH07XHJcbiAgICB9XHJcbiAgICBpZiAoTVsxXSA9PT0gJ0Nocm9tZScpIHtcclxuICAgICAgdGVtID0gdWEubWF0Y2goL1xcYk9QUlxcLyhcXGQrKS8pO1xyXG4gICAgICBpZiAodGVtICE9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB0ZW1bMV0gfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTSA9IE1bMl0gPyBbTVsxXSwgTVsyXV0gOiBbbmF2aWdhdG9yLmFwcE5hbWUsIG5hdmlnYXRvci5hcHBWZXJzaW9uLCAnLT8nXTtcclxuICAgIGlmICgodGVtID0gdWEubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSkpICE9IG51bGwpIHtcclxuICAgICAgTS5zcGxpY2UoMSwgMSwgdGVtWzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IE1bMF0sXHJcbiAgICAgIHZlcnNpb246IE1bMV0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9TKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHBsYXRmb3JtID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSxcclxuICAgICAgbWFjb3NQbGF0Zm9ybXMgPSBbJ01hY2ludG9zaCcsICdNYWNJbnRlbCcsICdNYWNQUEMnLCAnTWFjNjhLJ10sXHJcbiAgICAgIHdpbmRvd3NQbGF0Zm9ybXMgPSBbJ1dpbjMyJywgJ1dpbjY0JywgJ1dpbmRvd3MnLCAnV2luQ0UnXSxcclxuICAgICAgaW9zUGxhdGZvcm1zID0gWydpUGhvbmUnLCAnaVBhZCcsICdpUG9kJ10sXHJcbiAgICAgIG9zID0gbnVsbDtcclxuXHJcbiAgICBpZiAobWFjb3NQbGF0Zm9ybXMuaW5kZXhPZihwbGF0Zm9ybSkgIT09IC0xKSB7XHJcbiAgICAgIG9zID0gJ01hYyBPUyc7XHJcbiAgICB9IGVsc2UgaWYgKGlvc1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnaU9TJztcclxuICAgIH0gZWxzZSBpZiAod2luZG93c1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnV2luZG93cyc7XHJcbiAgICB9IGVsc2UgaWYgKC9BbmRyb2lkLy50ZXN0KHVzZXJBZ2VudCkpIHtcclxuICAgICAgb3MgPSAnQW5kcm9pZCc7XHJcbiAgICB9IGVsc2UgaWYgKCFvcyAmJiAvTGludXgvLnRlc3QocGxhdGZvcm0pKSB7XHJcbiAgICAgIG9zID0gJ0xpbnV4JztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3MgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBvblN1Y2Nlc3NIYW5kbGVyczoge1xyXG4gICAgY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uO1xyXG4gICAgcmVnZXhwOiBSZWdFeHA7XHJcbiAgfVtdID0gW107XHJcbiAgcHVibGljIHN0YXRpYyBvblN1Y2Nlc3MoY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uLCByZWdleHA6IFJlZ0V4cCkge1xyXG4gICAgdGhpcy5vblN1Y2Nlc3NIYW5kbGVycy5wdXNoKHsgY2FsbGJhY2ssIHJlZ2V4cCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlU3VjY2Vzc0hhbmRsZXJzKG1ldGhvZDogc3RyaW5nKSB7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQub25TdWNjZXNzSGFuZGxlcnNcclxuICAgICAgLmZpbHRlcigoZSkgPT4gZS5yZWdleHAudGVzdChtZXRob2QpKVxyXG4gICAgICAuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIHZhciByZXMgPSAoZS5jYWxsYmFjay5GdW5jIGFzIEZ1bmN0aW9uKSgpO1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcclxuICAgICAgICAgIHJlcy50aGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgZGlzY29ubmVjdChyZXN0YXJ0PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFyZXN0YXJ0KSB0aGlzLmNsb3NlZCA9IHRydWU7XHJcbiAgICB0aGlzLndzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDYWNoZSgpIHt9XHJcbn1cclxuIl19
@@ -1,10 +1,9 @@
1
1
  import { WebsocketClient } from '../../client';
2
- import { JsonParser } from '../../json/json-parser';
3
2
  export function Outbound(method, requestingRequired, cached) {
4
3
  return function _Outbound(target, propertyKey) {
5
4
  target.loading = new Map();
6
5
  // property annotation
7
- WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash) {
6
+ WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash, _this) {
8
7
  if (!target.___received)
9
8
  target.___received = {};
10
9
  if (!target.___data)
@@ -14,32 +13,39 @@ export function Outbound(method, requestingRequired, cached) {
14
13
  if (!target.___requested)
15
14
  target.___requested = {};
16
15
  if (!cached) {
17
- localStorage.removeItem('ac_oc_' + method);
16
+ if (_this.dbService)
17
+ _this.dbService.deleteByKey('outbound', method);
18
18
  }
19
19
  if (data == 'cache_restore') {
20
- const result = localStorage.getItem('ac_oc_' + method);
21
- const data = result ? JsonParser.parse(result) : result;
22
- target.___received[propertyKey] = true;
23
- target.___data[propertyKey] = data.data;
24
- target.loading.set(propertyKey, false);
20
+ if (_this.dbService) {
21
+ const result = _this.dbService.getByKey('outbound', method);
22
+ target.___received[propertyKey] = true;
23
+ target.___data[propertyKey] = result.data;
24
+ target.loading.set(propertyKey, false);
25
+ }
25
26
  }
26
27
  else if (data == 'cache_delete') {
27
- localStorage.removeItem('ac_oc_' + method);
28
+ if (_this.dbService)
29
+ _this.dbService.deleteByKey('outbound', method);
28
30
  target.___received[propertyKey] = false;
29
31
  target.___data[propertyKey] = undefined;
30
32
  target.loading.set(propertyKey, false);
31
33
  }
32
34
  else {
33
- if (cached && globalHash && specificHash) {
34
- localStorage.setItem('ac_oc_' + method, JSON.stringify({
35
- data,
36
- globalHash,
37
- specificHash,
38
- }));
39
- }
40
35
  target.___received[propertyKey] = true;
41
36
  target.___data[propertyKey] = data;
42
37
  target.loading.set(propertyKey, false);
38
+ if (cached && globalHash && specificHash) {
39
+ if (_this.dbService)
40
+ _this.dbService.update('outbound', {
41
+ method,
42
+ data,
43
+ globalHash,
44
+ specificHash,
45
+ });
46
+ else
47
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
48
+ }
43
49
  }
44
50
  });
45
51
  if (requestingRequired) {
@@ -76,4 +82,4 @@ export function Outbound(method, requestingRequired, cached) {
76
82
  };
77
83
  };
78
84
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY3RpdmUtY29ubmVjdC1uZzIvc3JjL2xpYi93ZWJzb2NrZXQvZGVjb3JhdG9ycy93ZWJzb2NrZXQvb3V0Ym91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFcEQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBYyxFQUNkLGtCQUE0QixFQUM1QixNQUFnQjtJQUVoQixPQUFPLFNBQVMsU0FBUyxDQUFDLE1BQVcsRUFBRSxXQUFtQjtRQUN4RCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQzVDLHNCQUFzQjtRQUN0QixlQUFlLENBQUMsY0FBYyxDQUM1QixNQUFNLEVBQ04sU0FBUyxXQUFXLENBQ2xCLElBQVMsRUFDVCxVQUF5QixFQUN6QixZQUEyQjtZQUUzQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVc7Z0JBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7Z0JBQUUsTUFBTSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksSUFBSSxJQUFJLGVBQWUsRUFBRTtnQkFDM0IsTUFB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T0FBTztvQkFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM3QyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJzb2NrZXRDbGllbnQgfSBmcm9tICcuLi8uLi9jbGllbnQnO1xyXG5pbXBvcnQgeyBKc29uUGFyc2VyIH0gZnJvbSAnLi4vLi4vanNvbi9qc29uLXBhcnNlcic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT3V0Ym91bmQoXHJcbiAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgcmVxdWVzdGluZ1JlcXVpcmVkPzogYm9vbGVhbixcclxuICBjYWNoZWQ/OiBib29sZWFuXHJcbikge1xyXG4gIHJldHVybiBmdW5jdGlvbiBfT3V0Ym91bmQodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdGFyZ2V0LmxvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcclxuICAgIC8vIHByb3BlcnR5IGFubm90YXRpb25cclxuICAgIFdlYnNvY2tldENsaWVudC5leHBlY3RPdXRib3VuZChcclxuICAgICAgbWV0aG9kLFxyXG4gICAgICBmdW5jdGlvbiBzZXRPdXRib3VuZChcclxuICAgICAgICBkYXRhOiBhbnksXHJcbiAgICAgICAgZ2xvYmFsSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX3JlcXVlc3RlZCkgdGFyZ2V0Ll9fX3JlcXVlc3RlZCA9IHt9O1xyXG4gICAgICAgIGlmICghY2FjaGVkKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYWNfb2NfJyArIG1ldGhvZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YSA9PSAnY2FjaGVfcmVzdG9yZScpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY19vY18nICsgbWV0aG9kKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQgPyBKc29uUGFyc2VyLnBhcnNlKHJlc3VsdCkgOiByZXN1bHQ7XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gdHJ1ZTtcclxuICAgICAgICAgIHRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnY2FjaGVfZGVsZXRlJykge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjX29jXycgKyBtZXRob2QpO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlY2VpdmVkW3Byb3BlcnR5S2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjYWNoZWQgJiYgZ2xvYmFsSGFzaCAmJiBzcGVjaWZpY0hhc2gpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgJ2FjX29jXycgKyBtZXRob2QsXHJcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICAgIGdsb2JhbEhhc2gsXHJcbiAgICAgICAgICAgICAgICBzcGVjaWZpY0hhc2gsXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gZGF0YTtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmIChyZXF1ZXN0aW5nUmVxdWlyZWQpIHtcclxuICAgICAgV2Vic29ja2V0Q2xpZW50LmFkZFJlc2V0UmVxdWVzdGluZ1N0YXRlQ2FsbGJhY2soZnVuY3Rpb24gY2FsbGJhY2soKSB7XHJcbiAgICAgICAgaWYgKHRhcmdldC5fX19yZXF1ZXN0ZWQpIHtcclxuICAgICAgICAgIHRhcmdldC5fX19yZXF1ZXN0ZWRbcHJvcGVydHlLZXldID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgd3JpdGVhYmxlOiB0cnVlLFxyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgaWYgKHJlcXVlc3RpbmdSZXF1aXJlZCAmJiAhdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5fX19yZXF1ZXN0ZWRbcHJvcGVydHlLZXldID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VuZCgncmVxdWVzdC4nICsgbWV0aG9kLCBudWxsKS50aGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQubG9hZGluZ1twcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX19kYXRhKSB0YXJnZXQuX19fZGF0YSA9IHt9O1xyXG4gICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIHJldHVybiAodGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gdmFsKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY3RpdmUtY29ubmVjdC1uZzIvc3JjL2xpYi93ZWJzb2NrZXQvZGVjb3JhdG9ycy93ZWJzb2NrZXQvb3V0Ym91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxNQUFNLFVBQVUsUUFBUSxDQUN0QixNQUFjLEVBQ2Qsa0JBQTRCLEVBQzVCLE1BQWdCO0lBRWhCLE9BQU8sU0FBUyxTQUFTLENBQUMsTUFBVyxFQUFFLFdBQW1CO1FBQ3hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFDNUMsc0JBQXNCO1FBQ3RCLGVBQWUsQ0FBQyxjQUFjLENBQzVCLE1BQU0sRUFDTixTQUFTLFdBQVcsQ0FDbEIsSUFBUyxFQUNULFVBQXlCLEVBQ3pCLFlBQTJCLEVBQzNCLEtBQXNCO1lBRXRCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFBRSxNQUFNLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLElBQUksS0FBSyxDQUFDLFNBQVM7b0JBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3RFO1lBRUQsSUFBSSxJQUFJLElBQUksZUFBZSxFQUFFO2dCQUMz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QUM7WUFDRCxHQUFHLENBQUMsR0FBUTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87b0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2Vic29ja2V0Q2xpZW50IH0gZnJvbSAnLi4vLi4vY2xpZW50JztcclxuaW1wb3J0IHsgSnNvblBhcnNlciB9IGZyb20gJy4uLy4uL2pzb24vanNvbi1wYXJzZXInO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE91dGJvdW5kKFxyXG4gIG1ldGhvZDogc3RyaW5nLFxyXG4gIHJlcXVlc3RpbmdSZXF1aXJlZD86IGJvb2xlYW4sXHJcbiAgY2FjaGVkPzogYm9vbGVhblxyXG4pIHtcclxuICByZXR1cm4gZnVuY3Rpb24gX091dGJvdW5kKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55IHtcclxuICAgIHRhcmdldC5sb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XHJcbiAgICAvLyBwcm9wZXJ0eSBhbm5vdGF0aW9uXHJcbiAgICBXZWJzb2NrZXRDbGllbnQuZXhwZWN0T3V0Ym91bmQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZnVuY3Rpb24gc2V0T3V0Ym91bmQoXHJcbiAgICAgICAgZGF0YTogYW55LFxyXG4gICAgICAgIGdsb2JhbEhhc2g6IG51bWJlciB8IG51bGwsXHJcbiAgICAgICAgc3BlY2lmaWNIYXNoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX3JlcXVlc3RlZCkgdGFyZ2V0Ll9fX3JlcXVlc3RlZCA9IHt9O1xyXG4gICAgICAgIGlmICghY2FjaGVkKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZGJTZXJ2aWNlKSBfdGhpcy5kYlNlcnZpY2UuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhID09ICdjYWNoZV9yZXN0b3JlJykge1xyXG4gICAgICAgICAgaWYgKF90aGlzLmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IF90aGlzLmRiU2VydmljZS5nZXRCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpO1xyXG4gICAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnY2FjaGVfZGVsZXRlJykge1xyXG4gICAgICAgICAgaWYgKF90aGlzLmRiU2VydmljZSkgX3RoaXMuZGJTZXJ2aWNlLmRlbGV0ZUJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZCk7XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gZmFsc2U7XHJcbiAgICAgICAgICB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB0YXJnZXQubG9hZGluZy5zZXQocHJvcGVydHlLZXksIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlY2VpdmVkW3Byb3BlcnR5S2V5XSA9IHRydWU7XHJcbiAgICAgICAgICB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSBkYXRhO1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoY2FjaGVkICYmIGdsb2JhbEhhc2ggJiYgc3BlY2lmaWNIYXNoKSB7XHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5kYlNlcnZpY2UpXHJcbiAgICAgICAgICAgICAgX3RoaXMuZGJTZXJ2aWNlLnVwZGF0ZSgnb3V0Ym91bmQnLCB7XHJcbiAgICAgICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgICAgZ2xvYmFsSGFzaCxcclxuICAgICAgICAgICAgICAgIHNwZWNpZmljSGFzaCxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHJlcXVlc3RpbmdSZXF1aXJlZCkge1xyXG4gICAgICBXZWJzb2NrZXRDbGllbnQuYWRkUmVzZXRSZXF1ZXN0aW5nU3RhdGVDYWxsYmFjayhmdW5jdGlvbiBjYWxsYmFjaygpIHtcclxuICAgICAgICBpZiAodGFyZ2V0Ll9fX3JlcXVlc3RlZCkge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICB3cml0ZWFibGU6IHRydWUsXHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICBpZiAocmVxdWVzdGluZ1JlcXVpcmVkICYmICF0YXJnZXQuX19fcmVxdWVzdGVkW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZW5kKCdyZXF1ZXN0LicgKyBtZXRob2QsIG51bGwpLnRoZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fZGF0YSkgdGFyZ2V0Ll9fX2RhdGEgPSB7fTtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCB0cnVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldC5sb2FkaW5nW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV07XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWw6IGFueSkge1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuICh0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,18 +1,44 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule } from '@angular/core';
3
+ import * as i1 from 'ngx-indexed-db';
4
+ import { NgxIndexedDBModule } from 'ngx-indexed-db';
3
5
  import { __awaiter } from 'tslib';
4
6
 
7
+ const dbConfig = {
8
+ name: 'activeconnect_cache',
9
+ version: 1,
10
+ objectStoresMeta: [
11
+ {
12
+ store: 'outbound',
13
+ storeConfig: { keyPath: 'method', autoIncrement: false },
14
+ storeSchema: [
15
+ { name: 'method', keypath: 'method', options: { unique: true } },
16
+ { name: 'data', keypath: 'data', options: { unique: false } },
17
+ {
18
+ name: 'globalHash',
19
+ keypath: 'globalHash',
20
+ options: { unique: false },
21
+ },
22
+ {
23
+ name: 'specificHash',
24
+ keypath: 'specificHash',
25
+ options: { unique: false },
26
+ },
27
+ ],
28
+ },
29
+ ],
30
+ };
5
31
  class ActiveConnectNg2Module {
6
32
  }
7
33
  ActiveConnectNg2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
9
- ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
34
+ ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [i1.NgxIndexedDBModule], exports: [NgxIndexedDBModule] });
35
+ ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [NgxIndexedDBModule.forRoot(dbConfig), NgxIndexedDBModule] });
10
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, decorators: [{
11
37
  type: NgModule,
12
38
  args: [{
13
39
  declarations: [],
14
- imports: [],
15
- exports: [],
40
+ imports: [NgxIndexedDBModule.forRoot(dbConfig)],
41
+ exports: [NgxIndexedDBModule],
16
42
  }]
17
43
  }] });
18
44
 
@@ -40,15 +66,18 @@ class JsonParser {
40
66
  }
41
67
 
42
68
  class WebsocketClient {
43
- constructor(url, supportsCache) {
69
+ constructor(url, supportsCache, dbService) {
44
70
  this.url = url;
45
71
  this.supportsCache = supportsCache;
72
+ this.dbService = dbService;
46
73
  this.requestStack = [];
47
74
  this._token = '';
48
75
  this.connectionEstablishedOnce = false;
49
76
  this.messageId = 0;
50
77
  this.expectedMethods = new Map();
51
78
  this.closed = false;
79
+ if (supportsCache)
80
+ this.initCache();
52
81
  if (!url) {
53
82
  let protocol;
54
83
  let port;
@@ -66,7 +95,7 @@ class WebsocketClient {
66
95
  }
67
96
  this.url = protocol + '//' + document.location.hostname + port + '/wss';
68
97
  }
69
- this.connect(this.url + (supportsCache ? '?cache=true' : ''));
98
+ this.connect(this.url);
70
99
  }
71
100
  connect(url) {
72
101
  if (!this.subject) {
@@ -204,7 +233,7 @@ class WebsocketClient {
204
233
  else {
205
234
  const out = WebsocketClient.outbounds.get(method);
206
235
  if (out) {
207
- out(value, globalHash, specificHash);
236
+ out(value, globalHash, specificHash, this);
208
237
  }
209
238
  else {
210
239
  const handle = WebsocketClient.handles.get(method);
@@ -220,13 +249,22 @@ class WebsocketClient {
220
249
  }
221
250
  }
222
251
  handleOutboundCacheRequest(method) {
223
- const item = localStorage.getItem('ac_oc_' + method);
224
- if (item) {
225
- const data = JSON.parse(item);
226
- this.send('___cache', {
227
- method,
228
- globalHash: data.globalHash || null,
229
- specificHash: data.specificHash || null,
252
+ if (this.dbService) {
253
+ this.dbService.getByKey('outbound', method).subscribe((item) => {
254
+ if (item) {
255
+ this.send('___cache', {
256
+ method,
257
+ globalHash: item.globalHash || null,
258
+ specificHash: item.specificHash || null,
259
+ });
260
+ }
261
+ else {
262
+ this.send('___cache', {
263
+ method,
264
+ globalHash: null,
265
+ specificHash: null,
266
+ });
267
+ }
230
268
  });
231
269
  }
232
270
  else {
@@ -235,6 +273,7 @@ class WebsocketClient {
235
273
  globalHash: null,
236
274
  specificHash: null,
237
275
  });
276
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
238
277
  }
239
278
  }
240
279
  static expectOutbound(method, callback) {
@@ -315,6 +354,7 @@ class WebsocketClient {
315
354
  this.closed = true;
316
355
  this.ws.close();
317
356
  }
357
+ initCache() { }
318
358
  }
319
359
  WebsocketClient.resetRequestedStateCallbacks = [];
320
360
  WebsocketClient.outbounds = new Map();
@@ -382,7 +422,7 @@ function Outbound(method, requestingRequired, cached) {
382
422
  return function _Outbound(target, propertyKey) {
383
423
  target.loading = new Map();
384
424
  // property annotation
385
- WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash) {
425
+ WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash, _this) {
386
426
  if (!target.___received)
387
427
  target.___received = {};
388
428
  if (!target.___data)
@@ -392,32 +432,39 @@ function Outbound(method, requestingRequired, cached) {
392
432
  if (!target.___requested)
393
433
  target.___requested = {};
394
434
  if (!cached) {
395
- localStorage.removeItem('ac_oc_' + method);
435
+ if (_this.dbService)
436
+ _this.dbService.deleteByKey('outbound', method);
396
437
  }
397
438
  if (data == 'cache_restore') {
398
- const result = localStorage.getItem('ac_oc_' + method);
399
- const data = result ? JsonParser.parse(result) : result;
400
- target.___received[propertyKey] = true;
401
- target.___data[propertyKey] = data.data;
402
- target.loading.set(propertyKey, false);
439
+ if (_this.dbService) {
440
+ const result = _this.dbService.getByKey('outbound', method);
441
+ target.___received[propertyKey] = true;
442
+ target.___data[propertyKey] = result.data;
443
+ target.loading.set(propertyKey, false);
444
+ }
403
445
  }
404
446
  else if (data == 'cache_delete') {
405
- localStorage.removeItem('ac_oc_' + method);
447
+ if (_this.dbService)
448
+ _this.dbService.deleteByKey('outbound', method);
406
449
  target.___received[propertyKey] = false;
407
450
  target.___data[propertyKey] = undefined;
408
451
  target.loading.set(propertyKey, false);
409
452
  }
410
453
  else {
411
- if (cached && globalHash && specificHash) {
412
- localStorage.setItem('ac_oc_' + method, JSON.stringify({
413
- data,
414
- globalHash,
415
- specificHash,
416
- }));
417
- }
418
454
  target.___received[propertyKey] = true;
419
455
  target.___data[propertyKey] = data;
420
456
  target.loading.set(propertyKey, false);
457
+ if (cached && globalHash && specificHash) {
458
+ if (_this.dbService)
459
+ _this.dbService.update('outbound', {
460
+ method,
461
+ data,
462
+ globalHash,
463
+ specificHash,
464
+ });
465
+ else
466
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
467
+ }
421
468
  }
422
469
  });
423
470
  if (requestingRequired) {
@@ -1 +1 @@
1
- {"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(private url?: string, private supportsCache?: boolean) {\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect((this.url as string) + (supportsCache ? '?cache=true' : ''));\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.resetRequestedState();\r\n this.auth(this.Token).then(() => {\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n globalHash,\r\n specificHash,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n globalHash: number | null;\r\n specificHash: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, globalHash, specificHash);\r\n } else {\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n const item = localStorage.getItem('ac_oc_' + method);\r\n if (item) {\r\n const data: any = JSON.parse(item);\r\n this.send('___cache', {\r\n method,\r\n globalHash: data.globalHash || null,\r\n specificHash: data.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (data: any, globalHash: number | null, specificHash: number | null) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n console.log('bind obj:');\r\n console.log(this.objConfig.target.prototype);\r\n console.log(this.objConfig.target);\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { JsonParser } from '../../json/json-parser';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n localStorage.removeItem('ac_oc_' + method);\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n const result = localStorage.getItem('ac_oc_' + method);\r\n const data = result ? JsonParser.parse(result) : result;\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data.data;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'cache_delete') {\r\n localStorage.removeItem('ac_oc_' + method);\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else {\r\n if (cached && globalHash && specificHash) {\r\n localStorage.setItem(\r\n 'ac_oc_' + method,\r\n JSON.stringify({\r\n data,\r\n globalHash,\r\n specificHash,\r\n })\r\n );\r\n }\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n return {\r\n configurable: true,\r\n writeable: true,\r\n get() {\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n this.send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'globalHash',\n keypath: 'globalHash',\n options: { unique: false },\n },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.resetRequestedState();\r\n this.auth(this.Token).then(() => {\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n globalHash,\r\n specificHash,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n globalHash: number | null;\r\n specificHash: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, globalHash, specificHash, this);\r\n } else {\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n globalHash: item.globalHash || null,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n console.log('bind obj:');\r\n console.log(this.objConfig.target.prototype);\r\n console.log(this.objConfig.target);\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { JsonParser } from '../../json/json-parser';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService) _this.dbService.deleteByKey('outbound', method);\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n const result: any = _this.dbService.getByKey('outbound', method);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) _this.dbService.deleteByKey('outbound', method);\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && globalHash && specificHash) {\r\n if (_this.dbService)\r\n _this.dbService.update('outbound', {\r\n method,\r\n data,\r\n globalHash,\r\n specificHash,\r\n });\r\n else\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n return {\r\n configurable: true,\r\n writeable: true,\r\n get() {\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n this.send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,17 +1,43 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule } from '@angular/core';
3
+ import * as i1 from 'ngx-indexed-db';
4
+ import { NgxIndexedDBModule } from 'ngx-indexed-db';
3
5
 
6
+ const dbConfig = {
7
+ name: 'activeconnect_cache',
8
+ version: 1,
9
+ objectStoresMeta: [
10
+ {
11
+ store: 'outbound',
12
+ storeConfig: { keyPath: 'method', autoIncrement: false },
13
+ storeSchema: [
14
+ { name: 'method', keypath: 'method', options: { unique: true } },
15
+ { name: 'data', keypath: 'data', options: { unique: false } },
16
+ {
17
+ name: 'globalHash',
18
+ keypath: 'globalHash',
19
+ options: { unique: false },
20
+ },
21
+ {
22
+ name: 'specificHash',
23
+ keypath: 'specificHash',
24
+ options: { unique: false },
25
+ },
26
+ ],
27
+ },
28
+ ],
29
+ };
4
30
  class ActiveConnectNg2Module {
5
31
  }
6
32
  ActiveConnectNg2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
8
- ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module });
33
+ ActiveConnectNg2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [i1.NgxIndexedDBModule], exports: [NgxIndexedDBModule] });
34
+ ActiveConnectNg2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, imports: [NgxIndexedDBModule.forRoot(dbConfig), NgxIndexedDBModule] });
9
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActiveConnectNg2Module, decorators: [{
10
36
  type: NgModule,
11
37
  args: [{
12
38
  declarations: [],
13
- imports: [],
14
- exports: [],
39
+ imports: [NgxIndexedDBModule.forRoot(dbConfig)],
40
+ exports: [NgxIndexedDBModule],
15
41
  }]
16
42
  }] });
17
43
 
@@ -39,15 +65,18 @@ class JsonParser {
39
65
  }
40
66
 
41
67
  class WebsocketClient {
42
- constructor(url, supportsCache) {
68
+ constructor(url, supportsCache, dbService) {
43
69
  this.url = url;
44
70
  this.supportsCache = supportsCache;
71
+ this.dbService = dbService;
45
72
  this.requestStack = [];
46
73
  this._token = '';
47
74
  this.connectionEstablishedOnce = false;
48
75
  this.messageId = 0;
49
76
  this.expectedMethods = new Map();
50
77
  this.closed = false;
78
+ if (supportsCache)
79
+ this.initCache();
51
80
  if (!url) {
52
81
  let protocol;
53
82
  let port;
@@ -65,7 +94,7 @@ class WebsocketClient {
65
94
  }
66
95
  this.url = protocol + '//' + document.location.hostname + port + '/wss';
67
96
  }
68
- this.connect(this.url + (supportsCache ? '?cache=true' : ''));
97
+ this.connect(this.url);
69
98
  }
70
99
  connect(url) {
71
100
  if (!this.subject) {
@@ -201,7 +230,7 @@ class WebsocketClient {
201
230
  else {
202
231
  const out = WebsocketClient.outbounds.get(method);
203
232
  if (out) {
204
- out(value, globalHash, specificHash);
233
+ out(value, globalHash, specificHash, this);
205
234
  }
206
235
  else {
207
236
  const handle = WebsocketClient.handles.get(method);
@@ -217,13 +246,22 @@ class WebsocketClient {
217
246
  }
218
247
  }
219
248
  handleOutboundCacheRequest(method) {
220
- const item = localStorage.getItem('ac_oc_' + method);
221
- if (item) {
222
- const data = JSON.parse(item);
223
- this.send('___cache', {
224
- method,
225
- globalHash: data.globalHash || null,
226
- specificHash: data.specificHash || null,
249
+ if (this.dbService) {
250
+ this.dbService.getByKey('outbound', method).subscribe((item) => {
251
+ if (item) {
252
+ this.send('___cache', {
253
+ method,
254
+ globalHash: item.globalHash || null,
255
+ specificHash: item.specificHash || null,
256
+ });
257
+ }
258
+ else {
259
+ this.send('___cache', {
260
+ method,
261
+ globalHash: null,
262
+ specificHash: null,
263
+ });
264
+ }
227
265
  });
228
266
  }
229
267
  else {
@@ -232,6 +270,7 @@ class WebsocketClient {
232
270
  globalHash: null,
233
271
  specificHash: null,
234
272
  });
273
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
235
274
  }
236
275
  }
237
276
  static expectOutbound(method, callback) {
@@ -312,6 +351,7 @@ class WebsocketClient {
312
351
  this.closed = true;
313
352
  this.ws.close();
314
353
  }
354
+ initCache() { }
315
355
  }
316
356
  WebsocketClient.resetRequestedStateCallbacks = [];
317
357
  WebsocketClient.outbounds = new Map();
@@ -378,7 +418,7 @@ function Outbound(method, requestingRequired, cached) {
378
418
  return function _Outbound(target, propertyKey) {
379
419
  target.loading = new Map();
380
420
  // property annotation
381
- WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash) {
421
+ WebsocketClient.expectOutbound(method, function setOutbound(data, globalHash, specificHash, _this) {
382
422
  if (!target.___received)
383
423
  target.___received = {};
384
424
  if (!target.___data)
@@ -388,32 +428,39 @@ function Outbound(method, requestingRequired, cached) {
388
428
  if (!target.___requested)
389
429
  target.___requested = {};
390
430
  if (!cached) {
391
- localStorage.removeItem('ac_oc_' + method);
431
+ if (_this.dbService)
432
+ _this.dbService.deleteByKey('outbound', method);
392
433
  }
393
434
  if (data == 'cache_restore') {
394
- const result = localStorage.getItem('ac_oc_' + method);
395
- const data = result ? JsonParser.parse(result) : result;
396
- target.___received[propertyKey] = true;
397
- target.___data[propertyKey] = data.data;
398
- target.loading.set(propertyKey, false);
435
+ if (_this.dbService) {
436
+ const result = _this.dbService.getByKey('outbound', method);
437
+ target.___received[propertyKey] = true;
438
+ target.___data[propertyKey] = result.data;
439
+ target.loading.set(propertyKey, false);
440
+ }
399
441
  }
400
442
  else if (data == 'cache_delete') {
401
- localStorage.removeItem('ac_oc_' + method);
443
+ if (_this.dbService)
444
+ _this.dbService.deleteByKey('outbound', method);
402
445
  target.___received[propertyKey] = false;
403
446
  target.___data[propertyKey] = undefined;
404
447
  target.loading.set(propertyKey, false);
405
448
  }
406
449
  else {
407
- if (cached && globalHash && specificHash) {
408
- localStorage.setItem('ac_oc_' + method, JSON.stringify({
409
- data,
410
- globalHash,
411
- specificHash,
412
- }));
413
- }
414
450
  target.___received[propertyKey] = true;
415
451
  target.___data[propertyKey] = data;
416
452
  target.loading.set(propertyKey, false);
453
+ if (cached && globalHash && specificHash) {
454
+ if (_this.dbService)
455
+ _this.dbService.update('outbound', {
456
+ method,
457
+ data,
458
+ globalHash,
459
+ specificHash,
460
+ });
461
+ else
462
+ console.error('Active-Connect: Caching not possible as the indexedDB has not been initialized');
463
+ }
417
464
  }
418
465
  });
419
466
  if (requestingRequired) {
@@ -1 +1 @@
1
- {"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(private url?: string, private supportsCache?: boolean) {\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect((this.url as string) + (supportsCache ? '?cache=true' : ''));\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.resetRequestedState();\r\n this.auth(this.Token).then(() => {\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n globalHash,\r\n specificHash,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n globalHash: number | null;\r\n specificHash: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, globalHash, specificHash);\r\n } else {\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n const item = localStorage.getItem('ac_oc_' + method);\r\n if (item) {\r\n const data: any = JSON.parse(item);\r\n this.send('___cache', {\r\n method,\r\n globalHash: data.globalHash || null,\r\n specificHash: data.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (data: any, globalHash: number | null, specificHash: number | null) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n console.log('bind obj:');\r\n console.log(this.objConfig.target.prototype);\r\n console.log(this.objConfig.target);\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { JsonParser } from '../../json/json-parser';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n localStorage.removeItem('ac_oc_' + method);\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n const result = localStorage.getItem('ac_oc_' + method);\r\n const data = result ? JsonParser.parse(result) : result;\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data.data;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'cache_delete') {\r\n localStorage.removeItem('ac_oc_' + method);\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else {\r\n if (cached && globalHash && specificHash) {\r\n localStorage.setItem(\r\n 'ac_oc_' + method,\r\n JSON.stringify({\r\n data,\r\n globalHash,\r\n specificHash,\r\n })\r\n );\r\n }\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n return {\r\n configurable: true,\r\n writeable: true,\r\n get() {\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n this.send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'globalHash',\n keypath: 'globalHash',\n options: { unique: false },\n },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.resetRequestedState();\r\n this.auth(this.Token).then(() => {\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n globalHash,\r\n specificHash,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n globalHash: number | null;\r\n specificHash: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, globalHash, specificHash, this);\r\n } else {\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n globalHash: item.globalHash || null,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n globalHash: null,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n console.log('bind obj:');\r\n console.log(this.objConfig.target.prototype);\r\n console.log(this.objConfig.target);\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { JsonParser } from '../../json/json-parser';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n globalHash: number | null,\r\n specificHash: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService) _this.dbService.deleteByKey('outbound', method);\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n const result: any = _this.dbService.getByKey('outbound', method);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) _this.dbService.deleteByKey('outbound', method);\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && globalHash && specificHash) {\r\n if (_this.dbService)\r\n _this.dbService.update('outbound', {\r\n method,\r\n data,\r\n globalHash,\r\n specificHash,\r\n });\r\n else\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n return {\r\n configurable: true,\r\n writeable: true,\r\n get() {\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n this.send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAGA,MAAM,QAAQ,GAAa;AACzB,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;AACxD,YAAA,WAAW,EAAE;AACX,gBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;AAChE,gBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;AAC7D,gBAAA;AACE,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,OAAO,EAAE,YAAY;AACrB,oBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;AAC3B,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF,CAAC;MAOW,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,8CAFvB,kBAAkB,CAAA,EAAA,CAAA,CAAA;oHAEjB,sBAAsB,EAAA,OAAA,EAAA,CAHvB,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpC,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAEjB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC/C,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;MChCY,UAAU,CAAA;IACrB,OAAO,SAAS,CAAC,GAAQ,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,OAAO,eAAe,CAAC,GAAQ,EAAE,KAAU,EAAA;AACzC,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,CAAC;AACC,gBAAA,wEAAwE,CAAC,IAAI,CAC3E,KAAK,CACN,CAAC;AACJ,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,OAAO,IAAI,IAAI,CAAC,CAAQ,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,KAAK,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,GAAG,IAAI,GAAG,IAAI,WAAW,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AACF;;MCrBY,eAAe,CAAA;AAI1B,IAAA,WAAA,CACU,GAAY,EACZ,aAAuB,EACxB,SAA+B,EAAA;QAF9B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAS;QACZ,IAAa,CAAA,aAAA,GAAb,aAAa,CAAU;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QAgChC,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QAEzB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QA4BZ,IAAyB,CAAA,yBAAA,GAAY,KAAK,CAAC;QAsC3C,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;AAwCtB,QAAA,IAAA,CAAA,eAAe,GAA0C,IAAI,GAAG,EAAE,CAAC;QAyMpE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAnVpB,QAAA,IAAI,aAAa;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,QAAQ,CAAC;AACb,YAAA,IAAI,IAAI,CAAC;AACT,YAAA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,QAAQ;gBAChC,KAAK,QAAQ,EAAE;oBACb,QAAQ,GAAG,MAAM,CAAC;oBAClB,IAAI,GAAG,MAAM,CAAC;oBACd,MAAM;AACP,iBAAA;AACD,gBAAA,SAAS;oBACP,QAAQ,GAAG,KAAK,CAAC;oBACjB,IAAI,GAAG,KAAK,CAAC;oBACb,MAAM;AACP,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AACzE,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;KAClC;AAIO,IAAA,OAAO,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAKD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,MAAM,CAAC,YAAY;AACrB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5D,SAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAW,KAAK,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,MAAM,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACpE;IAED,IAAY,SAAS,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;gBAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;oBAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KACzE;IAGO,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,yBAAyB,EAAE;;YAElC,eAAe,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7D,gBAAA,KAAK,EAAE,CAAC;AACV,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACvC,SAAA;KACF;IACM,OAAO,+BAA+B,CAAC,QAAkB,EAAA;AAC9D,QAAA,eAAe,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,MAAM,CAAC,GAAW,EAAA;;QAExB,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,KAAI;AACxB,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAK;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,KAAI;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5D,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBACxE,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACnB,EAAE,IAAI,CAAC,CAAC;AACV,aAAA;AACH,SAAC,CAAC;KACH;AAGS,IAAA,YAAY,CACpB,MAAc,EACd,IAAS,EACT,sBAAgC,EAAA;AAEhC,QAAA,MAAM,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;QACnC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,sBAAsB;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;;AACjD,gBAAA,OAAO,KAAK,CAAC;AACnB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxE,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,IAAI,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KAC/C;AAEM,IAAA,IAAI,CACT,MAAc,EACd,IAAS,EACT,sBAAgC,EAAA;AAEhC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CACjC,MAAM,EACN,IAAI,EACJ,sBAAsB,IAAI,KAAK,CAChC,CAAC;AACF,QAAA,IAAI,SAAS,EAAE;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,EAAK,MAAM,CAAE,CAAA,EAAE,SAAS,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAGO,YAAY,CAAC,MAAc,EAAE,SAAyB,EAAA;AAC5D,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBACpC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1C,oBAAA,GAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,eAAe,CAAC,EACtB,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,EACV,YAAY,GAOb,EAAA;QACC,IAAI,MAAM,IAAI,UAAU,EAAE;AACxB,YAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrD,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9B,gBAAA,IAAI,IAAI;oBAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClD,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9B,oBAAA,IAAI,IAAI;wBAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;oBACL,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClD,oBAAA,IAAI,GAAG,EAAE;wBACP,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC5C,qBAAA;AAAM,yBAAA;wBACL,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnD,wBAAA,IAAI,MAAM,EAAE;AACT,4BAAA,MAAM,CAAC,IAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,KAAK,CACT,6DAA6D,CAC9D,CAAC;AACH,SAAA;KACF;AAEO,IAAA,0BAA0B,CAAC,MAAc,EAAA;QAC/C,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;AAClE,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;wBACpB,MAAM;AACN,wBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;AACnC,wBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;AACxC,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;wBACpB,MAAM;AACN,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,YAAY,EAAE,IAAI;AACnB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM;AACN,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;AACH,SAAA;KACF;AAWD,IAAA,OAAO,cAAc,CACnB,MAAc,EACd,QAKS,EAAA;QAET,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KACjD;AAGD,IAAA,OAAO,cAAc,CAAC,MAAc,EAAE,QAA2B,EAAA;QAC/D,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC/C;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,uBAAuB,GAAA;;AAE7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,EAAE,CAAG,EAAA,OAAO,CAAC,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,OAAO,CAAI,CAAA,EAAA,EAAE,CAAE,CAAA;AACpD,SAAA,CAAC,CAAC;KACJ;IAEM,UAAU,GAAA;;AAEf,QAAA,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,EAC1B,GAAG,EACH,CAAC,GACC,EAAE,CAAC,KAAK,CACN,8DAA8D,CAC/D,IAAI,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACzB,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AACvC,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/C,SAAA;AACD,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACrB,YAAA,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,gBAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,aAAA;AACF,SAAA;AACD,QAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;AAC/C,YAAA,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,SAAA;QACD,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACV,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SACd,CAAC;KACH;IAEM,KAAK,GAAA;QACV,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EACxC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EACpC,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC9D,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EACzD,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EACzC,EAAE,GAAG,IAAI,CAAC;QAEZ,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3C,EAAE,GAAG,QAAQ,CAAC;AACf,SAAA;aAAM,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAChD,EAAE,GAAG,KAAK,CAAC;AACZ,SAAA;aAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YACpD,EAAE,GAAG,SAAS,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,EAAE,GAAG,SAAS,CAAC;AAChB,SAAA;aAAM,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACxC,EAAE,GAAG,OAAO,CAAC;AACd,SAAA;QAED,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;AAMM,IAAA,OAAO,SAAS,CAAC,QAA2B,EAAE,MAAc,EAAA;QACjE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;KACnD;AAEO,IAAA,qBAAqB,CAAC,MAAc,EAAA;AAC1C,QAAA,eAAe,CAAC,iBAAiB;AAC9B,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;YACb,IAAI,GAAG,GAAI,CAAC,CAAC,QAAQ,CAAC,IAAiB,EAAE,CAAC;AAC1C,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBACnB,GAAG,CAAC,IAAI,EAAE,CAAC;AACZ,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAGM,IAAA,UAAU,CAAC,OAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;KACjB;AAEO,IAAA,SAAS,MAAK;;AA9RP,eAA4B,CAAA,4BAAA,GAAe,EAAE,CAAC;AA0K9C,eAAA,CAAA,SAAS,GAQpB,IAAI,GAAG,EAAE,CAAC;AAaC,eAAA,CAAA,OAAO,GAAmC,IAAI,GAAG,EAAE,CAAC;AAsEpD,eAAiB,CAAA,iBAAA,GAG1B,EAAE;;AChVV;;AAEG;MACU,iBAAiB,CAAA;AAC5B;;;;;AAKG;AACH,IAAA,WAAA,CAAsB,SAA+C,EAAA;QAA/C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsC;;AAEnE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3E,QAAA,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE;AACvC,YAAA,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAC3C,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,IACE,IAAI,CAAC,SAAS,EAAE,MAAM;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EACjD;YACA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,aAAa,EAAE,CACrB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;IACK,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3E,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KAC/B;AACF;;AC3CK,SAAU,MAAM,CAAC,MAAc,EAAA;AACnC,IAAA,OAAO,SAAS,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAA;;AAEtD,QAAA,eAAe,CAAC,cAAc,CAC5B,MAAM,EACN,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAC/C,CAAC;AACJ,KAAC,CAAC;AACJ;;ACRM,SAAU,SAAS,CAAC,MAAc,EAAA;AACtC,IAAA,OAAO,SAAS,MAAM,CAAC,MAAW,EAAE,WAAmB,EAAA;AACrD,QAAA,eAAe,CAAC,SAAS,CACvB,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAC9C,MAAM,CACP,CAAC;AACJ,KAAC,CAAC;AACJ;;SCPgB,QAAQ,CACtB,MAAc,EACd,kBAA4B,EAC5B,MAAgB,EAAA;AAEhB,IAAA,OAAO,SAAS,SAAS,CAAC,MAAW,EAAE,WAAmB,EAAA;AACxD,QAAA,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;;AAE5C,QAAA,eAAe,CAAC,cAAc,CAC5B,MAAM,EACN,SAAS,WAAW,CAClB,IAAS,EACT,UAAyB,EACzB,YAA2B,EAC3B,KAAsB,EAAA;YAEtB,IAAI,CAAC,MAAM,CAAC,WAAW;AAAE,gBAAA,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,OAAO;AAAE,gBAAA,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,WAAW;AAAE,gBAAA,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,YAAY;AAAE,gBAAA,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,KAAK,CAAC,SAAS;oBAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACtE,aAAA;YAED,IAAI,IAAI,IAAI,eAAe,EAAE;gBAC3B,IAAI,KAAK,CAAC,SAAS,EAAE;AACnB,oBAAA,MAAM,MAAM,GAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACjE,oBAAA,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;oBACvC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACxC,iBAAA;AACF,aAAA;iBAAM,IAAI,IAAI,IAAI,cAAc,EAAE;gBACjC,IAAI,KAAK,CAAC,SAAS;oBAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACrE,gBAAA,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AACxC,gBAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;gBACxC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AACvC,gBAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACvC,gBAAA,IAAI,MAAM,IAAI,UAAU,IAAI,YAAY,EAAE;oBACxC,IAAI,KAAK,CAAC,SAAS;AACjB,wBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;4BACjC,MAAM;4BACN,IAAI;4BACJ,UAAU;4BACV,YAAY;AACb,yBAAA,CAAC,CAAC;;AAEH,wBAAA,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;AACL,iBAAA;AACF,aAAA;AACH,SAAC,CACF,CAAC;AACF,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,eAAe,CAAC,+BAA+B,CAAC,SAAS,QAAQ,GAAA;gBAC/D,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,oBAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AAC1C,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,OAAO;AACL,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,SAAS,EAAE,IAAI;YACf,GAAG,GAAA;gBACD,IAAI,kBAAkB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AAC3D,oBAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AACxC,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,iBAAA;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO;AAAE,oBAAA,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACzC,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACvC,iBAAA;AAAM,qBAAA,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBACtC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACxC,iBAAA;AACD,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aACpC;AACD,YAAA,GAAG,CAAC,GAAQ,EAAA;gBACV,IAAI,CAAC,MAAM,CAAC,OAAO;AAAE,oBAAA,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACvC,QAAQ,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE;aAC5C;SACF,CAAC;AACJ,KAAC,CAAC;AACJ;;SCzFgB,KAAK,CACnB,MAAc,EACd,UAAmB,EACnB,sBAAgC,EAAA;AAEhC,IAAA,OAAO,SAAS,MAAM,CAAC,MAAW,EAAE,WAAmB,EAAA;;AAErD,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,GAAG,eAAe,SAAS,CAAC,GAAG,IAAS,EAAA;AACzD,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACrC,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,iBAAA;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AACpC,aAAA;AACD,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACvE,aAAA;AACD,YAAA,MAAM,OAAO,CAAC;AACd,YAAA,IAAI,UAAU;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AACnD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ;;AC1BA;;AAEG;AACG,SAAU,MAAM,CAAI,YAAgB,EAAA;AACxC,IAAA,IAAI,YAAY,EAAE;AAChB,QAAA,MAAM,KAAK,CACT,8GAA8G,CAC/G,CAAC;AACH,KAAA;IACD,OAAO,SAAS,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAA,GAAI,CAAC;AAC/D;;ACRM,MAAO,aAAc,SAAQ,eAAe,CAAA;AAGhD,IAAA,IAAI,SAAS,GAAA;;QAEX,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAU,KAAI;AAC5C,YAAA,OAAO,KAAP,OAAO,GAAK,CAAC,CAAC,CAAA;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;KACxC;IACD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC/B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAU,KAAI;AAC5C,YAAA,IAAI,CAAC;AAAE,gBAAA,KAAK,EAAE,CAAC;AACjB,SAAC,CAAC,CAAC;QACH,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KACpC;AACF;;AC/BD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
+ import * as i1 from "ngx-indexed-db";
2
3
  export declare class ActiveConnectNg2Module {
3
4
  static ɵfac: i0.ɵɵFactoryDeclaration<ActiveConnectNg2Module, never>;
4
- static ɵmod: i0.ɵɵNgModuleDeclaration<ActiveConnectNg2Module, never, never, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ActiveConnectNg2Module, never, [typeof i1.NgxIndexedDBModule], [typeof i1.NgxIndexedDBModule]>;
5
6
  static ɵinj: i0.ɵɵInjectorDeclaration<ActiveConnectNg2Module>;
6
7
  }
@@ -1,12 +1,14 @@
1
+ import { NgxIndexedDBService } from 'ngx-indexed-db';
1
2
  import { DecorableFunction } from './decorators/function';
2
3
  export declare class WebsocketClient {
3
4
  private url?;
4
5
  private supportsCache?;
6
+ dbService?: NgxIndexedDBService | undefined;
5
7
  ws: WebSocket;
6
8
  pool: {
7
9
  WssConnected: boolean;
8
10
  } | null;
9
- constructor(url?: string | undefined, supportsCache?: boolean | undefined);
11
+ constructor(url?: string | undefined, supportsCache?: boolean | undefined, dbService?: NgxIndexedDBService | undefined);
10
12
  subject: any;
11
13
  private connect;
12
14
  private requestStack;
@@ -28,7 +30,7 @@ export declare class WebsocketClient {
28
30
  private messageReceived;
29
31
  private handleOutboundCacheRequest;
30
32
  private static outbounds;
31
- static expectOutbound(method: string, callback: (data: any, globalHash: number | null, specificHash: number | null) => void): void;
33
+ static expectOutbound(method: string, callback: (data: any, globalHash: number | null, specificHash: number | null, _this: WebsocketClient) => void): void;
32
34
  private static handles;
33
35
  static registerHandle(method: string, callback: DecorableFunction): void;
34
36
  get isConnected(): boolean;
@@ -43,4 +45,5 @@ export declare class WebsocketClient {
43
45
  private invokeSuccessHandlers;
44
46
  closed: boolean;
45
47
  disconnect(restart?: boolean): void;
48
+ private initCache;
46
49
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "active-connect-ng2",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.1.0",
6
6
  "@angular/core": "^15.1.0"