ng2-rest 13.2.6 → 13.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +135 -135
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/README.md +24 -24
  4. package/browser/esm2020/lib/content-type.mjs +12 -12
  5. package/browser/esm2020/lib/cookie.mjs +28 -28
  6. package/browser/esm2020/lib/helpers.mjs +23 -23
  7. package/browser/esm2020/lib/index.mjs +12 -12
  8. package/browser/esm2020/lib/mapping.mjs +238 -238
  9. package/browser/esm2020/lib/models.mjs +159 -159
  10. package/browser/esm2020/lib/other/simple-resource.mjs +116 -116
  11. package/browser/esm2020/lib/params.mjs +278 -278
  12. package/browser/esm2020/lib/request-cache.mjs +100 -100
  13. package/browser/esm2020/lib/resource.service.mjs +213 -213
  14. package/browser/esm2020/lib/rest-headers.mjs +128 -128
  15. package/browser/esm2020/lib/rest-request.mjs +321 -321
  16. package/browser/esm2020/lib/rest.class.mjs +115 -115
  17. package/browser/esm2020/ng2-rest.mjs +4 -4
  18. package/browser/esm2020/public-api.mjs +1 -1
  19. package/browser/fesm2015/ng2-rest.mjs +1677 -1677
  20. package/browser/fesm2020/ng2-rest.mjs +1675 -1675
  21. package/browser/lib/content-type.d.ts +4 -4
  22. package/browser/lib/cookie.d.ts +7 -7
  23. package/browser/lib/helpers.d.ts +10 -10
  24. package/browser/lib/index.d.ts +9 -9
  25. package/browser/lib/mapping.d.ts +12 -12
  26. package/browser/lib/models.d.ts +157 -157
  27. package/browser/lib/other/simple-resource.d.ts +29 -29
  28. package/browser/lib/params.d.ts +23 -23
  29. package/browser/lib/request-cache.d.ts +17 -17
  30. package/browser/lib/resource.service.d.ts +43 -43
  31. package/browser/lib/rest-headers.d.ts +57 -57
  32. package/browser/lib/rest-request.d.ts +21 -21
  33. package/browser/lib/rest.class.d.ts +36 -36
  34. package/browser/ng2-rest.d.ts +4 -4
  35. package/client/README.md +24 -24
  36. package/client/esm2020/lib/content-type.mjs +12 -12
  37. package/client/esm2020/lib/cookie.mjs +28 -28
  38. package/client/esm2020/lib/helpers.mjs +23 -23
  39. package/client/esm2020/lib/index.mjs +12 -12
  40. package/client/esm2020/lib/mapping.mjs +238 -238
  41. package/client/esm2020/lib/models.mjs +159 -159
  42. package/client/esm2020/lib/other/simple-resource.mjs +116 -116
  43. package/client/esm2020/lib/params.mjs +278 -278
  44. package/client/esm2020/lib/request-cache.mjs +100 -100
  45. package/client/esm2020/lib/resource.service.mjs +213 -213
  46. package/client/esm2020/lib/rest-headers.mjs +128 -128
  47. package/client/esm2020/lib/rest-request.mjs +321 -321
  48. package/client/esm2020/lib/rest.class.mjs +115 -115
  49. package/client/esm2020/ng2-rest.mjs +4 -4
  50. package/client/esm2020/public-api.mjs +1 -1
  51. package/client/fesm2015/ng2-rest.mjs +1677 -1677
  52. package/client/fesm2020/ng2-rest.mjs +1675 -1675
  53. package/client/lib/content-type.d.ts +4 -4
  54. package/client/lib/cookie.d.ts +7 -7
  55. package/client/lib/helpers.d.ts +10 -10
  56. package/client/lib/index.d.ts +9 -9
  57. package/client/lib/mapping.d.ts +12 -12
  58. package/client/lib/models.d.ts +157 -157
  59. package/client/lib/other/simple-resource.d.ts +29 -29
  60. package/client/lib/params.d.ts +23 -23
  61. package/client/lib/request-cache.d.ts +17 -17
  62. package/client/lib/resource.service.d.ts +43 -43
  63. package/client/lib/rest-headers.d.ts +57 -57
  64. package/client/lib/rest-request.d.ts +21 -21
  65. package/client/lib/rest.class.d.ts +36 -36
  66. package/client/ng2-rest.d.ts +4 -4
  67. package/client/package.json +15 -15
  68. package/index.d.ts +1 -1
  69. package/lib/content-type.d.ts +5 -5
  70. package/lib/cookie.d.ts +8 -8
  71. package/lib/helpers.d.ts +11 -11
  72. package/lib/index.d.ts +10 -10
  73. package/lib/mapping.d.ts +13 -13
  74. package/lib/models.d.ts +158 -158
  75. package/lib/other/simple-resource.d.ts +30 -30
  76. package/lib/params.d.ts +24 -24
  77. package/lib/request-cache.d.ts +18 -18
  78. package/lib/resource.service.d.ts +44 -44
  79. package/lib/rest-headers.d.ts +58 -58
  80. package/lib/rest-request.d.ts +22 -22
  81. package/lib/rest.class.d.ts +37 -37
  82. package/package.json +4 -4
  83. package/package.json_devDependencies.json +217 -217
  84. package/package.json_tnp.json5 +50 -50
  85. package/tmp-environment.json +19 -18
  86. package/websql/README.md +24 -24
  87. package/websql/esm2020/lib/content-type.mjs +12 -12
  88. package/websql/esm2020/lib/cookie.mjs +28 -28
  89. package/websql/esm2020/lib/helpers.mjs +23 -23
  90. package/websql/esm2020/lib/index.mjs +12 -12
  91. package/websql/esm2020/lib/mapping.mjs +238 -238
  92. package/websql/esm2020/lib/models.mjs +159 -159
  93. package/websql/esm2020/lib/other/simple-resource.mjs +116 -116
  94. package/websql/esm2020/lib/params.mjs +278 -278
  95. package/websql/esm2020/lib/request-cache.mjs +100 -100
  96. package/websql/esm2020/lib/resource.service.mjs +213 -213
  97. package/websql/esm2020/lib/rest-headers.mjs +128 -128
  98. package/websql/esm2020/lib/rest-request.mjs +321 -321
  99. package/websql/esm2020/lib/rest.class.mjs +115 -115
  100. package/websql/esm2020/ng2-rest.mjs +4 -4
  101. package/websql/esm2020/public-api.mjs +1 -1
  102. package/websql/fesm2015/ng2-rest.mjs +1677 -1677
  103. package/websql/fesm2020/ng2-rest.mjs +1675 -1675
  104. package/websql/lib/content-type.d.ts +4 -4
  105. package/websql/lib/cookie.d.ts +7 -7
  106. package/websql/lib/helpers.d.ts +10 -10
  107. package/websql/lib/index.d.ts +9 -9
  108. package/websql/lib/mapping.d.ts +12 -12
  109. package/websql/lib/models.d.ts +157 -157
  110. package/websql/lib/other/simple-resource.d.ts +29 -29
  111. package/websql/lib/params.d.ts +23 -23
  112. package/websql/lib/request-cache.d.ts +17 -17
  113. package/websql/lib/resource.service.d.ts +43 -43
  114. package/websql/lib/rest-headers.d.ts +57 -57
  115. package/websql/lib/rest-request.d.ts +21 -21
  116. package/websql/lib/rest.class.d.ts +36 -36
  117. package/websql/ng2-rest.d.ts +4 -4
@@ -1,101 +1,101 @@
1
- import { Models } from './models';
2
- import { Log, Level } from 'ng2-logger/browser';
3
- import { Helpers } from 'tnp-core/browser';
4
- import { RestHeaders } from './rest-headers';
5
- const log = Log.create('request-cache', Level.__NOTHING);
6
- /**
7
- * @deprecated
8
- * there is Cache API for that
9
- */
10
- export class RequestCache {
11
- constructor(response) {
12
- this.response = response;
13
- }
14
- static restoreFromLocalStorage() {
15
- if (Helpers.isNode) {
16
- return;
17
- }
18
- if (!RequestCache.isRestoredFromLocalStorage) {
19
- RequestCache.isRestoredFromLocalStorage = true;
20
- const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);
21
- let requests = [];
22
- if (data) {
23
- try {
24
- requests = JSON.parse(data);
25
- }
26
- catch (error) {
27
- }
28
- const restored = requests.map(r => {
29
- let { sourceRequest, responseText, body, headers, circular, entity, isArray, cookies, statusCode } = r.response;
30
- r.response = new Models.HttpResponse(sourceRequest, responseText, RestHeaders.from(headers), statusCode, entity, circular, -1, // jobid from local storage TODO
31
- isArray);
32
- r = new RequestCache(r.response);
33
- r.response.rq = r;
34
- return r;
35
- });
36
- log.i('RESTORED FROM LOCAL STORAGE', restored);
37
- RequestCache.cached = restored;
38
- }
39
- }
40
- }
41
- static findBy(sourceRequest) {
42
- log.i('findby', sourceRequest);
43
- log.i('RequestCache.cached', RequestCache.cached);
44
- RequestCache.restoreFromLocalStorage();
45
- return RequestCache.cached.find(c => {
46
- const a = c.response.sourceRequest;
47
- const b = sourceRequest;
48
- return (a.isArray === b.isArray &&
49
- a.url === b.url &&
50
- a.method === b.method &&
51
- a.body === b.body);
52
- });
53
- }
54
- get containsCache() {
55
- RequestCache.restoreFromLocalStorage();
56
- return RequestCache.cached.includes(this);
57
- }
58
- persistsInLocalStorage() {
59
- localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY, JSON.stringify(RequestCache.cached.map(r => {
60
- return {
61
- response: {
62
- sourceRequest: r.response.sourceRequest,
63
- responseText: r.response.responseText,
64
- headers: r.response.headers,
65
- statusCode: r.response.statusCode,
66
- entity: r.response.entity,
67
- circular: r.response.circular,
68
- isArray: r.response.isArray,
69
- }
70
- };
71
- })));
72
- }
73
- store() {
74
- RequestCache.restoreFromLocalStorage();
75
- if (!this.containsCache) {
76
- RequestCache.cached.push(this);
77
- this.persistsInLocalStorage();
78
- }
79
- else {
80
- console.log('already stored');
81
- }
82
- return this;
83
- }
84
- remove() {
85
- RequestCache.restoreFromLocalStorage();
86
- const index = RequestCache.cached.indexOf(this);
87
- if (index !== -1) {
88
- RequestCache.cached.splice(index, 1);
89
- this.persistsInLocalStorage();
90
- }
91
- else {
92
- console.log('already removed');
93
- }
94
- }
95
- }
96
- RequestCache.LOCAL_STORAGE_KEY = 'ng2restrequestcache';
97
- RequestCache.cached = [];
98
- RequestCache.isRestoredFromLocalStorage = false;
99
- ;
100
- ({}); // @--end-of-file-for-module=ng2-rest lib/request-cache.ts
1
+ import { Models } from './models';
2
+ import { Log, Level } from 'ng2-logger/browser';
3
+ import { Helpers } from 'tnp-core/browser';
4
+ import { RestHeaders } from './rest-headers';
5
+ const log = Log.create('request-cache', Level.__NOTHING);
6
+ /**
7
+ * @deprecated
8
+ * there is Cache API for that
9
+ */
10
+ export class RequestCache {
11
+ constructor(response) {
12
+ this.response = response;
13
+ }
14
+ static restoreFromLocalStorage() {
15
+ if (Helpers.isNode) {
16
+ return;
17
+ }
18
+ if (!RequestCache.isRestoredFromLocalStorage) {
19
+ RequestCache.isRestoredFromLocalStorage = true;
20
+ const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);
21
+ let requests = [];
22
+ if (data) {
23
+ try {
24
+ requests = JSON.parse(data);
25
+ }
26
+ catch (error) {
27
+ }
28
+ const restored = requests.map(r => {
29
+ let { sourceRequest, responseText, body, headers, circular, entity, isArray, cookies, statusCode } = r.response;
30
+ r.response = new Models.HttpResponse(sourceRequest, responseText, RestHeaders.from(headers), statusCode, entity, circular, -1, // jobid from local storage TODO
31
+ isArray);
32
+ r = new RequestCache(r.response);
33
+ r.response.rq = r;
34
+ return r;
35
+ });
36
+ log.i('RESTORED FROM LOCAL STORAGE', restored);
37
+ RequestCache.cached = restored;
38
+ }
39
+ }
40
+ }
41
+ static findBy(sourceRequest) {
42
+ log.i('findby', sourceRequest);
43
+ log.i('RequestCache.cached', RequestCache.cached);
44
+ RequestCache.restoreFromLocalStorage();
45
+ return RequestCache.cached.find(c => {
46
+ const a = c.response.sourceRequest;
47
+ const b = sourceRequest;
48
+ return (a.isArray === b.isArray &&
49
+ a.url === b.url &&
50
+ a.method === b.method &&
51
+ a.body === b.body);
52
+ });
53
+ }
54
+ get containsCache() {
55
+ RequestCache.restoreFromLocalStorage();
56
+ return RequestCache.cached.includes(this);
57
+ }
58
+ persistsInLocalStorage() {
59
+ localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY, JSON.stringify(RequestCache.cached.map(r => {
60
+ return {
61
+ response: {
62
+ sourceRequest: r.response.sourceRequest,
63
+ responseText: r.response.responseText,
64
+ headers: r.response.headers,
65
+ statusCode: r.response.statusCode,
66
+ entity: r.response.entity,
67
+ circular: r.response.circular,
68
+ isArray: r.response.isArray,
69
+ }
70
+ };
71
+ })));
72
+ }
73
+ store() {
74
+ RequestCache.restoreFromLocalStorage();
75
+ if (!this.containsCache) {
76
+ RequestCache.cached.push(this);
77
+ this.persistsInLocalStorage();
78
+ }
79
+ else {
80
+ console.log('already stored');
81
+ }
82
+ return this;
83
+ }
84
+ remove() {
85
+ RequestCache.restoreFromLocalStorage();
86
+ const index = RequestCache.cached.indexOf(this);
87
+ if (index !== -1) {
88
+ RequestCache.cached.splice(index, 1);
89
+ this.persistsInLocalStorage();
90
+ }
91
+ else {
92
+ console.log('already removed');
93
+ }
94
+ }
95
+ }
96
+ RequestCache.LOCAL_STORAGE_KEY = 'ng2restrequestcache';
97
+ RequestCache.cached = [];
98
+ RequestCache.isRestoredFromLocalStorage = false;
99
+ ;
100
+ ({}); // @--end-of-file-for-module=ng2-rest lib/request-cache.ts
101
101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXF1ZXN0LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUV4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQWlFdkIsWUFDUyxRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUczQyxDQUFDO0lBOURPLE1BQU0sQ0FBQyx1QkFBdUI7UUFDcEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUU7WUFDNUMsWUFBWSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSTtvQkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW1CLENBQUM7aUJBQy9DO2dCQUFDLE9BQU8sS0FBSyxFQUFFO2lCQUVmO2dCQUNELE1BQU0sUUFBUSxH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QUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztBQS9HZSw4QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUUzQyxtQkFBTSxHQUFtQixFQUFFLENBQUM7QUFDNUIsdUNBQTBCLEdBQUcsS0FBSyxDQUFDO0FBZ0huRCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXF1ZXN0LWNhY2hlJywgTGV2ZWwuX19OT1RISU5HKVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiB0aGVyZSBpcyBDYWNoZSBBUEkgZm9yIHRoYXRcbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RDYWNoZSB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gJ25nMnJlc3RyZXF1ZXN0Y2FjaGUnO1xuXG4gIHByaXZhdGUgc3RhdGljIGNhY2hlZDogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZTtcblxuICBwcml2YXRlIHN0YXRpYyByZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpIHtcbiAgICBpZiAoSGVscGVycy5pc05vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFSZXF1ZXN0Q2FjaGUuaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5pc1Jlc3RvcmVkRnJvbUxvY2FsU3RvcmFnZSA9IHRydWU7XG4gICAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oUmVxdWVzdENhY2hlLkxPQ0FMX1NUT1JBR0VfS0VZKTtcbiAgICAgIGxldCByZXF1ZXN0czogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxdWVzdHMgPSBKU09OLnBhcnNlKGRhdGEpIGFzIFJlcXVlc3RDYWNoZVtdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdG9yZWQgPSByZXF1ZXN0cy5tYXAociA9PiB7XG4gICAgICAgICAgbGV0IHsgc291cmNlUmVxdWVzdCwgcmVzcG9uc2VUZXh0LCBib2R5LCBoZWFkZXJzLCBjaXJjdWxhcixcbiAgICAgICAgICAgIGVudGl0eSwgaXNBcnJheSwgY29va2llcywgc3RhdHVzQ29kZSB9ID0gci5yZXNwb25zZTtcbiAgICAgICAgICByLnJlc3BvbnNlID0gbmV3IE1vZGVscy5IdHRwUmVzcG9uc2UoXG4gICAgICAgICAgICBzb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0LFxuICAgICAgICAgICAgUmVzdEhlYWRlcnMuZnJvbShoZWFkZXJzKSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcixcbiAgICAgICAgICAgIC0xLCAvLyBqb2JpZCBmcm9tIGxvY2FsIHN0b3JhZ2UgVE9ET1xuICAgICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHIgPSBuZXcgUmVxdWVzdENhY2hlKHIucmVzcG9uc2UpO1xuICAgICAgICAgIHIucmVzcG9uc2UucnEgPSByO1xuXG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2cuaSgnUkVTVE9SRUQgRlJPTSBMT0NBTCBTVE9SQUdFJywgcmVzdG9yZWQpO1xuICAgICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkID0gcmVzdG9yZWQ7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbmRCeShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBsb2cuaSgnZmluZGJ5Jywgc291cmNlUmVxdWVzdClcbiAgICBsb2cuaSgnUmVxdWVzdENhY2hlLmNhY2hlZCcsIFJlcXVlc3RDYWNoZS5jYWNoZWQpXG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgcmV0dXJuIFJlcXVlc3RDYWNoZS5jYWNoZWQuZmluZChjID0+IHtcbiAgICAgIGNvbnN0IGEgPSBjLnJlc3BvbnNlLnNvdXJjZVJlcXVlc3Q7XG4gICAgICBjb25zdCBiID0gc291cmNlUmVxdWVzdDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGEuaXNBcnJheSA9PT0gYi5pc0FycmF5ICYmXG4gICAgICAgIGEudXJsID09PSBiLnVybCAmJlxuICAgICAgICBhLm1ldGhvZCA9PT0gYi5tZXRob2QgJiZcbiAgICAgICAgYS5ib2R5ID09PSBiLmJvZHlcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZXNwb25zZTogTW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+XG4gICkge1xuXG4gIH1cblxuICBnZXQgY29udGFpbnNDYWNoZSgpIHtcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICByZXR1cm4gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmNsdWRlcyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShSZXF1ZXN0Q2FjaGUuTE9DQUxfU1RPUkFHRV9LRVksXG4gICAgICBKU09OLnN0cmluZ2lmeShSZXF1ZXN0Q2FjaGUuY2FjaGVkLm1hcChyID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgc291cmNlUmVxdWVzdDogci5yZXNwb25zZS5zb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiByLnJlc3BvbnNlLnJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHIucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHIucmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVudGl0eTogci5yZXNwb25zZS5lbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcjogci5yZXNwb25zZS5jaXJjdWxhcixcbiAgICAgICAgICAgIGlzQXJyYXk6IHIucmVzcG9uc2UuaXNBcnJheSxcbiAgICAgICAgICB9IGFzIE1vZGVscy5IdHRwUmVzcG9uc2U8YW55PlxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgfVxuXG4gIHN0b3JlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmICghdGhpcy5jb250YWluc0NhY2hlKSB7XG4gICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkLnB1c2godGhpcyk7XG4gICAgICB0aGlzLnBlcnNpc3RzSW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FscmVhZHkgc3RvcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGNvbnN0IGluZGV4ID0gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmRleE9mKHRoaXMpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5jYWNoZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMucGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnYWxyZWFkeSByZW1vdmVkJyk7XG4gICAgfVxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXF1ZXN0LWNhY2hlLnRzIl19