ng2-rest 13.2.9 → 16.0.10

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 (118) 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/{client/esm2020 → browser/esm2022}/lib/cookie.mjs +3 -3
  5. package/browser/esm2022/lib/helpers.mjs +25 -0
  6. package/{websql/esm2020 → browser/esm2022}/lib/models.mjs +9 -9
  7. package/browser/esm2022/lib/other/simple-resource.mjs +119 -0
  8. package/browser/esm2022/lib/request-cache.mjs +102 -0
  9. package/browser/esm2022/lib/resource.service.mjs +221 -0
  10. package/browser/esm2022/lib/rest-headers.mjs +129 -0
  11. package/browser/esm2022/lib/rest-request.mjs +323 -0
  12. package/browser/esm2022/lib/rest.class.mjs +120 -0
  13. package/browser/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
  14. package/browser/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
  15. package/browser/lib/rest-headers.d.ts +1 -1
  16. package/browser/package.json +6 -12
  17. package/client/README.md +24 -24
  18. package/{browser/esm2020 → client/esm2022}/lib/cookie.mjs +3 -3
  19. package/client/esm2022/lib/helpers.mjs +25 -0
  20. package/client/esm2022/lib/models.mjs +160 -0
  21. package/client/esm2022/lib/other/simple-resource.mjs +119 -0
  22. package/client/esm2022/lib/request-cache.mjs +102 -0
  23. package/client/esm2022/lib/resource.service.mjs +221 -0
  24. package/client/esm2022/lib/rest-headers.mjs +129 -0
  25. package/client/esm2022/lib/rest-request.mjs +323 -0
  26. package/client/esm2022/lib/rest.class.mjs +120 -0
  27. package/client/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
  28. package/client/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
  29. package/client/lib/rest-headers.d.ts +1 -1
  30. package/client/package.json +84 -82
  31. package/index.js.map +1 -1
  32. package/lib/content-type.js.map +1 -1
  33. package/lib/cookie.js.map +1 -1
  34. package/lib/helpers.js +1 -2
  35. package/lib/helpers.js.map +1 -1
  36. package/lib/index.js.map +1 -1
  37. package/lib/mapping.js.map +1 -1
  38. package/lib/models.js.map +1 -1
  39. package/lib/other/simple-resource.js +1 -2
  40. package/lib/other/simple-resource.js.map +1 -1
  41. package/lib/params.js.map +1 -1
  42. package/lib/request-cache.js +1 -2
  43. package/lib/request-cache.js.map +1 -1
  44. package/lib/resource.service.js +1 -2
  45. package/lib/resource.service.js.map +1 -1
  46. package/lib/rest-headers.d.ts +1 -1
  47. package/lib/rest-headers.js.map +1 -1
  48. package/lib/rest-request.js +1 -2
  49. package/lib/rest-request.js.map +1 -1
  50. package/lib/rest.class.js.map +1 -1
  51. package/package.json +4 -4
  52. package/package.json_devDependencies.json +217 -217
  53. package/package.json_tnp.json5 +53 -53
  54. package/tmp-environment.json +89 -87
  55. package/websql/README.md +24 -24
  56. package/websql/{esm2020 → esm2022}/lib/cookie.mjs +3 -3
  57. package/websql/esm2022/lib/helpers.mjs +25 -0
  58. package/websql/esm2022/lib/models.mjs +160 -0
  59. package/websql/esm2022/lib/other/simple-resource.mjs +119 -0
  60. package/websql/esm2022/lib/request-cache.mjs +102 -0
  61. package/websql/esm2022/lib/resource.service.mjs +221 -0
  62. package/websql/esm2022/lib/rest-headers.mjs +129 -0
  63. package/websql/esm2022/lib/rest-request.mjs +323 -0
  64. package/websql/esm2022/lib/rest.class.mjs +120 -0
  65. package/websql/{fesm2020 → fesm2022}/ng2-rest.mjs +73 -73
  66. package/websql/{fesm2020 → fesm2022}/ng2-rest.mjs.map +1 -1
  67. package/websql/lib/rest-headers.d.ts +1 -1
  68. package/websql/package.json +6 -12
  69. package/browser/esm2020/lib/helpers.mjs +0 -24
  70. package/browser/esm2020/lib/models.mjs +0 -160
  71. package/browser/esm2020/lib/other/simple-resource.mjs +0 -118
  72. package/browser/esm2020/lib/request-cache.mjs +0 -101
  73. package/browser/esm2020/lib/resource.service.mjs +0 -220
  74. package/browser/esm2020/lib/rest-headers.mjs +0 -129
  75. package/browser/esm2020/lib/rest-request.mjs +0 -322
  76. package/browser/esm2020/lib/rest.class.mjs +0 -120
  77. package/browser/fesm2015/ng2-rest.mjs +0 -1739
  78. package/browser/fesm2015/ng2-rest.mjs.map +0 -1
  79. package/client/esm2020/lib/helpers.mjs +0 -24
  80. package/client/esm2020/lib/models.mjs +0 -160
  81. package/client/esm2020/lib/other/simple-resource.mjs +0 -118
  82. package/client/esm2020/lib/request-cache.mjs +0 -101
  83. package/client/esm2020/lib/resource.service.mjs +0 -220
  84. package/client/esm2020/lib/rest-headers.mjs +0 -129
  85. package/client/esm2020/lib/rest-request.mjs +0 -322
  86. package/client/esm2020/lib/rest.class.mjs +0 -120
  87. package/client/fesm2015/ng2-rest.mjs +0 -1739
  88. package/client/fesm2015/ng2-rest.mjs.map +0 -1
  89. package/websql/esm2020/lib/helpers.mjs +0 -24
  90. package/websql/esm2020/lib/other/simple-resource.mjs +0 -118
  91. package/websql/esm2020/lib/request-cache.mjs +0 -101
  92. package/websql/esm2020/lib/resource.service.mjs +0 -220
  93. package/websql/esm2020/lib/rest-headers.mjs +0 -129
  94. package/websql/esm2020/lib/rest-request.mjs +0 -322
  95. package/websql/esm2020/lib/rest.class.mjs +0 -120
  96. package/websql/fesm2015/ng2-rest.mjs +0 -1739
  97. package/websql/fesm2015/ng2-rest.mjs.map +0 -1
  98. /package/browser/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
  99. /package/browser/{esm2020 → esm2022}/lib/index.mjs +0 -0
  100. /package/browser/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
  101. /package/browser/{esm2020 → esm2022}/lib/params.mjs +0 -0
  102. /package/browser/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
  103. /package/browser/{esm2020 → esm2022}/public-api.mjs +0 -0
  104. /package/browser/{ng2-rest.d.ts → index.d.ts} +0 -0
  105. /package/client/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
  106. /package/client/{esm2020 → esm2022}/lib/index.mjs +0 -0
  107. /package/client/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
  108. /package/client/{esm2020 → esm2022}/lib/params.mjs +0 -0
  109. /package/client/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
  110. /package/client/{esm2020 → esm2022}/public-api.mjs +0 -0
  111. /package/client/{ng2-rest.d.ts → index.d.ts} +0 -0
  112. /package/websql/{esm2020 → esm2022}/lib/content-type.mjs +0 -0
  113. /package/websql/{esm2020 → esm2022}/lib/index.mjs +0 -0
  114. /package/websql/{esm2020 → esm2022}/lib/mapping.mjs +0 -0
  115. /package/websql/{esm2020 → esm2022}/lib/params.mjs +0 -0
  116. /package/websql/{esm2020 → esm2022}/ng2-rest.mjs +0 -0
  117. /package/websql/{esm2020 → esm2022}/public-api.mjs +0 -0
  118. /package/websql/{ng2-rest.d.ts → index.d.ts} +0 -0
@@ -1,118 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { Resource } from '../resource.service';
3
- /**
4
- *
5
- * @export
6
- * @abstract
7
- * @class SimpleResource
8
- * @extends {Resource<T, A, TA>}
9
- * @template E Endpoint type
10
- * @template A Single modle type
11
- * @template TA Array Model Type
12
- * @template RP rest url parameters type
13
- * @template QP query parameter type
14
- */
15
- class ExtendedResource {
16
- constructor(endpoint, path_model) {
17
- this.endpoint = endpoint;
18
- this.path_model = path_model;
19
- /**
20
- * Get model by rest params
21
- */
22
- this.model = (restParams) => {
23
- return {
24
- get: (queryPrams) => {
25
- return Observable.create((observer) => {
26
- ExtendedResource.handlers.push(this.rest.model(restParams)
27
- .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
28
- .observable
29
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
30
- });
31
- },
32
- patch: (item, queryParams) => {
33
- return Observable.create((observer) => {
34
- ExtendedResource.handlers.push(this.rest.model(restParams)
35
- .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
36
- .observable
37
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
38
- });
39
- },
40
- head: (queryPrams) => {
41
- return Observable.create((observer) => {
42
- ExtendedResource.handlers.push(this.rest.model(restParams)
43
- .head([queryPrams], ExtendedResource.doNotSerializeQueryParams)
44
- .observable
45
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
46
- });
47
- },
48
- query: (queryPrams) => {
49
- return Observable.create((observer) => {
50
- ExtendedResource.handlers.push(this.rest.model(restParams).
51
- array
52
- .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
53
- .observable
54
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
55
- });
56
- },
57
- post: (item, queryParams) => {
58
- return Observable.create((observer) => {
59
- ExtendedResource.handlers.push(this.rest.model(restParams)
60
- .post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
61
- .observable
62
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
63
- });
64
- },
65
- put: (item, queryParams) => {
66
- return Observable.create((observer) => {
67
- ExtendedResource.handlers.push(this.rest.model(restParams)
68
- .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
69
- .observable
70
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
71
- });
72
- },
73
- delete: (queryPrams) => {
74
- return Observable.create((observer) => {
75
- ExtendedResource.handlers.push(this.rest.model(restParams)
76
- .delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)
77
- .observable
78
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
79
- });
80
- }
81
- };
82
- };
83
- this.rest = Resource.create(endpoint, path_model);
84
- }
85
- }
86
- ExtendedResource.doNotSerializeQueryParams = false;
87
- ExtendedResource.handlers = [];
88
- /**
89
- *
90
- * @export
91
- * @class SimpleResource
92
- * @template A single model type
93
- * @template TA array model type
94
- * @template RP rest parameters type
95
- * @template QP query parameters type
96
- */
97
- export class SimpleResource {
98
- constructor(endpoint, model) {
99
- let rest = new ExtendedResource(endpoint, model);
100
- this.model = rest.model;
101
- }
102
- static set doNotSerializeQueryParams(value) {
103
- if (!SimpleResource._isSetQueryParamsSerialization) {
104
- SimpleResource._isSetQueryParamsSerialization = true;
105
- ExtendedResource.doNotSerializeQueryParams = value;
106
- return;
107
- }
108
- console.warn(`Query params serialization already set as
109
- ${ExtendedResource.doNotSerializeQueryParams},`);
110
- }
111
- static __destroy() {
112
- ExtendedResource.handlers.forEach(h => h.unsubscribe());
113
- }
114
- }
115
- SimpleResource._isSetQueryParamsSerialization = false;
116
- ;
117
- ({}); // @--end-of-file-for-module=ng2-rest lib/other/simple-resource.ts
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL290aGVyL3NpbXBsZS1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXFCL0M7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLGdCQUFnQjtJQStHcEIsWUFBMkIsUUFBb0IsRUFBVSxVQUFrQjtRQUFoRCxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXpHM0U7O1VBRUU7UUFDRixVQUFLLEdBQXlCLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFFaEQsT0FBTztnQkFFTCxHQUFHLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDdkIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQzdELFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBRUQsS0FBSyxFQUFFLENBQUMsSUFBTyxFQUFFLFdBQWdCLEVBQUUsRUFBRTtvQkFDbkMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDOzZCQUNwRSxVQUFVOzZCQUNWLFNBQVMsQ0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNqQyxDQUFDLENBQUMsQ0FBQTtnQkFFSixDQUFDO2dCQUVELElBQUksRUFBRSxDQUFDLFVBQWUsRUFBRSxFQUFFO29CQUN4QixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFxQixFQUFFLEVBQUU7d0JBQ2pELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDOzZCQUN2RCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDOUQsVUFBVTs2QkFDVixTQUFTLENBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQztnQkFFRCxLQUFLLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBc0IsRUFBRSxFQUFFO3dCQUNsRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs0QkFDeEQsS0FBSzs2QkFDSixHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDN0QsVUFBVTs2QkFDVixTQUFTLENBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQztnQkFHRCxJQUFJLEVBQUUsQ0FBQyxJQUFPLEVBQUUsV0FBZ0IsRUFBRSxFQUFFO29CQUNsQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFxQixFQUFFLEVBQUU7d0JBQ2pELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDOzZCQUN2RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQ3JFLFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUVKLENBQUM7Z0JBR0QsR0FBRyxFQUFFLENBQUMsSUFBTyxFQUFFLFdBQWdCLEVBQUUsRUFBRTtvQkFDakMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDOzZCQUNwRSxVQUFVOzZCQUNWLFNBQVMsQ0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNqQyxDQUFDLENBQUMsQ0FBQTtnQkFFSixDQUFDO2dCQUdELE1BQU0sRUFBRSxDQUFDLFVBQWUsRUFBRSxFQUFFO29CQUMxQixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFxQixFQUFFLEVBQUU7d0JBQ2pELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDOzZCQUN2RCxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDaEUsVUFBVTs2QkFDVixTQUFTLENBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQzthQUdGLENBQUE7UUFDSCxDQUFDLENBQUE7UUFNQyxJQUFJLENBQUMsSUFBSSxHQUFRLFFBQVEsQ0FBQyxNQUFNLENBQWEsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLENBQUM7O0FBakhhLDBDQUF5QixHQUFHLEtBQUssQ0FBQztBQUNsQyx5QkFBUSxHQUFtQixFQUFFLENBQUM7QUFzSDlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFtQnpCLFlBQVksUUFBZ0IsRUFBRSxLQUFhO1FBQ3pDLElBQUksSUFBSSxHQUFHLElBQUksZ0JBQWdCLENBQTBDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQWpCTSxNQUFNLEtBQUsseUJBQXlCLENBQUMsS0FBSztRQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLDhCQUE4QixFQUFFO1lBQ2xELGNBQWMsQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUM7WUFDckQsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFBO1lBQ2xELE9BQU87U0FDUjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUM7VUFDUCxnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDOztBQWJjLDZDQUE4QixHQUFHLEtBQUssQ0FBQztBQXNCdkQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrRUFBa0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0UHJvbWlzZXM8QSwgVEEsIFFQIGV4dGVuZHMgTW9kZWxzLlVybFBhcmFtcz4ge1xuICBnZXQ6IChxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBoZWFkOiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgcXVlcnk6IChxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PjtcbiAgcHV0OiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHBhdGNoOiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHBvc3Q6IChpdGVtPzogQSwgcXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgZGVsZXRlOiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+IHwgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RlbDxBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgTW9kZWxzLlVybFBhcmFtcz4ge1xuICAocmVzdFBhcmFtcz86IFJQKTogUmVzdFByb21pc2VzPEEsIFRBLCBRUD47XG59XG5cblxuXG5cbi8qKlxuICpcbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIFNpbXBsZVJlc291cmNlXG4gKiBAZXh0ZW5kcyB7UmVzb3VyY2U8VCwgQSwgVEE+fVxuICogQHRlbXBsYXRlIEUgIEVuZHBvaW50IHR5cGVcbiAqIEB0ZW1wbGF0ZSBBIFNpbmdsZSBtb2RsZSB0eXBlXG4gKiBAdGVtcGxhdGUgVEEgQXJyYXkgTW9kZWwgVHlwZVxuICogQHRlbXBsYXRlIFJQIHJlc3QgdXJsIHBhcmFtZXRlcnMgdHlwZVxuICogQHRlbXBsYXRlIFFQIHF1ZXJ5IHBhcmFtZXRlciB0eXBlXG4gKi9cbmNsYXNzIEV4dGVuZGVkUmVzb3VyY2U8RSwgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+ICB7XG4gIHB1YmxpYyBzdGF0aWMgZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcyA9IGZhbHNlO1xuICBwdWJsaWMgc3RhdGljIGhhbmRsZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHJlc3Q6IE1vZGVscy5SZXNvdXJjZU1vZGVsPEEsIFRBPjtcblxuICAvKipcbiAgICogR2V0IG1vZGVsIGJ5IHJlc3QgcGFyYW1zXG4gICovXG4gIG1vZGVsOiBNb2RlbDxBLCBUQSwgUlAsIFFQPiA9IChyZXN0UGFyYW1zPzogUlApID0+IHtcblxuICAgIHJldHVybiB7XG5cbiAgICAgIGdldDogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5nZXQoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgcGF0Y2g6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnB1dChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG4gICAgICBoZWFkOiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLmhlYWQoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgcXVlcnk6IChxdWVyeVByYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8VEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKS5cbiAgICAgICAgICAgIGFycmF5XG4gICAgICAgICAgICAuZ2V0KFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cblxuICAgICAgcG9zdDogKGl0ZW06IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAucG9zdChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG5cbiAgICAgIHB1dDogKGl0ZW06IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAucHV0KGl0ZW0sIFtxdWVyeVBhcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG5cbiAgICAgIH0sXG5cblxuICAgICAgZGVsZXRlOiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLmRlbGV0ZShbcXVlcnlQcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG4gICAgICB9XG5cblxuICAgIH1cbiAgfVxuXG5cblxuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVuZHBvaW50OiBFIHwgc3RyaW5nLCBwcml2YXRlIHBhdGhfbW9kZWw6IHN0cmluZykge1xuICAgIHRoaXMucmVzdCA9IDxhbnk+UmVzb3VyY2UuY3JlYXRlPEEsIFRBPig8YW55PmVuZHBvaW50LCBwYXRoX21vZGVsKTtcblxuICB9XG5cbn1cblxuXG5cbi8qKlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBTaW1wbGVSZXNvdXJjZVxuICogQHRlbXBsYXRlIEEgc2luZ2xlIG1vZGVsIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUQSBhcnJheSBtb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgUlAgcmVzdCBwYXJhbWV0ZXJzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBRUCBxdWVyeSBwYXJhbWV0ZXJzIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZVJlc291cmNlPEEsIFRBPiB7XG4gIG1vZGVsOiBNb2RlbDxBLCBUQSwgT2JqZWN0LCBNb2RlbHMuVXJsUGFyYW1zPjtcblxuXG4gIHByaXZhdGUgc3RhdGljIF9pc1NldFF1ZXJ5UGFyYW1zU2VyaWFsaXphdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgc3RhdGljIHNldCBkb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKHZhbHVlKSB7XG4gICAgaWYgKCFTaW1wbGVSZXNvdXJjZS5faXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24pIHtcbiAgICAgIFNpbXBsZVJlc291cmNlLl9pc1NldFF1ZXJ5UGFyYW1zU2VyaWFsaXphdGlvbiA9IHRydWU7XG4gICAgICBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMgPSB2YWx1ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oYFF1ZXJ5IHBhcmFtcyBzZXJpYWxpemF0aW9uIGFscmVhZHkgc2V0IGFzXG4gICAgICAgICR7RXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zfSxgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgX19kZXN0cm95KCkge1xuICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMuZm9yRWFjaChoID0+IGgudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbmRwb2ludDogc3RyaW5nLCBtb2RlbDogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3QgPSBuZXcgRXh0ZW5kZWRSZXNvdXJjZTxzdHJpbmcsIEEsIFRBLCBPYmplY3QsIE1vZGVscy5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCk7XG4gICAgdGhpcy5tb2RlbCA9IHJlc3QubW9kZWw7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL290aGVyL3NpbXBsZS1yZXNvdXJjZS50cyJdfQ==
@@ -1,101 +0,0 @@
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXF1ZXN0LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUV4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQWlFdkIsWUFDUyxRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUczQyxDQUFDO0lBOURPLE1BQU0sQ0FBQyx1QkFBdUI7UUFDcEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUU7WUFDNUMsWUFBWSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSTtvQkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW1CLENBQUM7aUJBQy9DO2dCQUFDLE9BQU8sS0FBSyxFQUFFO2lCQUVmO2dCQUNELE1BQU0sUUFBUSxH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QUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztBQS9HZSw4QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUUzQyxtQkFBTSxHQUFtQixFQUFFLENBQUM7QUFDNUIsdUNBQTBCLEdBQUcsS0FBSyxDQUFDO0FBZ0huRCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXF1ZXN0LWNhY2hlJywgTGV2ZWwuX19OT1RISU5HKVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiB0aGVyZSBpcyBDYWNoZSBBUEkgZm9yIHRoYXRcbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RDYWNoZSB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gJ25nMnJlc3RyZXF1ZXN0Y2FjaGUnO1xuXG4gIHByaXZhdGUgc3RhdGljIGNhY2hlZDogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZTtcblxuICBwcml2YXRlIHN0YXRpYyByZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpIHtcbiAgICBpZiAoSGVscGVycy5pc05vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFSZXF1ZXN0Q2FjaGUuaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5pc1Jlc3RvcmVkRnJvbUxvY2FsU3RvcmFnZSA9IHRydWU7XG4gICAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oUmVxdWVzdENhY2hlLkxPQ0FMX1NUT1JBR0VfS0VZKTtcbiAgICAgIGxldCByZXF1ZXN0czogUmVxdWVzdENhY2hlW10gPSBbXTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxdWVzdHMgPSBKU09OLnBhcnNlKGRhdGEpIGFzIFJlcXVlc3RDYWNoZVtdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdG9yZWQgPSByZXF1ZXN0cy5tYXAociA9PiB7XG4gICAgICAgICAgbGV0IHsgc291cmNlUmVxdWVzdCwgcmVzcG9uc2VUZXh0LCBib2R5LCBoZWFkZXJzLCBjaXJjdWxhcixcbiAgICAgICAgICAgIGVudGl0eSwgaXNBcnJheSwgY29va2llcywgc3RhdHVzQ29kZSB9ID0gci5yZXNwb25zZTtcbiAgICAgICAgICByLnJlc3BvbnNlID0gbmV3IE1vZGVscy5IdHRwUmVzcG9uc2UoXG4gICAgICAgICAgICBzb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0LFxuICAgICAgICAgICAgUmVzdEhlYWRlcnMuZnJvbShoZWFkZXJzKSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGUsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcixcbiAgICAgICAgICAgIC0xLCAvLyBqb2JpZCBmcm9tIGxvY2FsIHN0b3JhZ2UgVE9ET1xuICAgICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHIgPSBuZXcgUmVxdWVzdENhY2hlKHIucmVzcG9uc2UpO1xuICAgICAgICAgIHIucmVzcG9uc2UucnEgPSByO1xuXG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2cuaSgnUkVTVE9SRUQgRlJPTSBMT0NBTCBTVE9SQUdFJywgcmVzdG9yZWQpO1xuICAgICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkID0gcmVzdG9yZWQ7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbmRCeShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBsb2cuaSgnZmluZGJ5Jywgc291cmNlUmVxdWVzdClcbiAgICBsb2cuaSgnUmVxdWVzdENhY2hlLmNhY2hlZCcsIFJlcXVlc3RDYWNoZS5jYWNoZWQpXG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgcmV0dXJuIFJlcXVlc3RDYWNoZS5jYWNoZWQuZmluZChjID0+IHtcbiAgICAgIGNvbnN0IGEgPSBjLnJlc3BvbnNlLnNvdXJjZVJlcXVlc3Q7XG4gICAgICBjb25zdCBiID0gc291cmNlUmVxdWVzdDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGEuaXNBcnJheSA9PT0gYi5pc0FycmF5ICYmXG4gICAgICAgIGEudXJsID09PSBiLnVybCAmJlxuICAgICAgICBhLm1ldGhvZCA9PT0gYi5tZXRob2QgJiZcbiAgICAgICAgYS5ib2R5ID09PSBiLmJvZHlcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZXNwb25zZTogTW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+XG4gICkge1xuXG4gIH1cblxuICBnZXQgY29udGFpbnNDYWNoZSgpIHtcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICByZXR1cm4gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmNsdWRlcyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShSZXF1ZXN0Q2FjaGUuTE9DQUxfU1RPUkFHRV9LRVksXG4gICAgICBKU09OLnN0cmluZ2lmeShSZXF1ZXN0Q2FjaGUuY2FjaGVkLm1hcChyID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgc291cmNlUmVxdWVzdDogci5yZXNwb25zZS5zb3VyY2VSZXF1ZXN0LFxuICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiByLnJlc3BvbnNlLnJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHIucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHIucmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVudGl0eTogci5yZXNwb25zZS5lbnRpdHksXG4gICAgICAgICAgICBjaXJjdWxhcjogci5yZXNwb25zZS5jaXJjdWxhcixcbiAgICAgICAgICAgIGlzQXJyYXk6IHIucmVzcG9uc2UuaXNBcnJheSxcbiAgICAgICAgICB9IGFzIE1vZGVscy5IdHRwUmVzcG9uc2U8YW55PlxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgfVxuXG4gIHN0b3JlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmICghdGhpcy5jb250YWluc0NhY2hlKSB7XG4gICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkLnB1c2godGhpcyk7XG4gICAgICB0aGlzLnBlcnNpc3RzSW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FscmVhZHkgc3RvcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGNvbnN0IGluZGV4ID0gUmVxdWVzdENhY2hlLmNhY2hlZC5pbmRleE9mKHRoaXMpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIFJlcXVlc3RDYWNoZS5jYWNoZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMucGVyc2lzdHNJbkxvY2FsU3RvcmFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnYWxyZWFkeSByZW1vdmVkJyk7XG4gICAgfVxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXF1ZXN0LWNhY2hlLnRzIl19
@@ -1,220 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- import { Log, Level } from 'ng2-logger/browser';
3
- const log = Log.create('resouce-service', Level.__NOTHING);
4
- import { Rest } from './rest.class';
5
- import { RestRequest } from './rest-request';
6
- import { Cookie } from './cookie';
7
- import { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';
8
- import { Helpers } from 'tnp-core/browser';
9
- export class Resource {
10
- constructor() {
11
- setTimeout(() => {
12
- const zone = this.getZone();
13
- if (!RestRequest.zone) {
14
- RestRequest.zone = zone;
15
- }
16
- ;
17
- });
18
- }
19
- static get listenErrors() {
20
- return this._listenErrors.asObservable();
21
- }
22
- static get listenSuccessOperations() {
23
- return this._listenSuccess.asObservable();
24
- }
25
- getZone() {
26
- const isNode = (typeof window === 'undefined');
27
- if (isNode) {
28
- return;
29
- }
30
- ;
31
- const ng = window['ng'];
32
- const getAllAngularRootElements = window['getAllAngularRootElements'];
33
- if (!ng || !getAllAngularRootElements) {
34
- return;
35
- }
36
- const probe = ng.probe;
37
- const coreTokens = ng.coreTokens;
38
- if (!coreTokens || !coreTokens.NgZone) {
39
- return;
40
- }
41
- const zoneClass = coreTokens.NgZone;
42
- if (!probe || typeof probe !== 'function' || !getAllAngularRootElements) {
43
- return;
44
- }
45
- const angularElements = getAllAngularRootElements();
46
- if (!Array.isArray(angularElements) || angularElements.length === 0) {
47
- return;
48
- }
49
- const rootElement = ng.probe(angularElements[0]);
50
- if (!rootElement) {
51
- return;
52
- }
53
- const injector = rootElement.injector;
54
- if (!injector || !injector.get || typeof injector.get !== 'function') {
55
- return;
56
- }
57
- const zone = injector.get(zoneClass);
58
- return zone;
59
- }
60
- static initAngularNgZone(zone) {
61
- RestRequest.zone = zone;
62
- }
63
- checkNestedModels(model, allModels) {
64
- for (let p in allModels) {
65
- if (allModels.hasOwnProperty(p)) {
66
- let m = allModels[p];
67
- if (isValid(p)) {
68
- let urlModels = getModels(p);
69
- if (containsModels(model, urlModels)) {
70
- model = p;
71
- break;
72
- }
73
- }
74
- }
75
- }
76
- return model;
77
- }
78
- static getModel(endpoint, model) {
79
- model = Resource.prepareModel(model);
80
- const e = Resource.endpoints[endpoint];
81
- if (!e) {
82
- return void 0;
83
- }
84
- const r = Resource.endpoints[endpoint].models[model];
85
- return Resource.endpoints[endpoint].models[model];
86
- }
87
- static create(e, model, entityMapping, circular, customContentType) {
88
- const badRestRegEX = new RegExp('((\/:)[a-z]+)+', 'g');
89
- const matchArr = model.match(badRestRegEX) || [];
90
- const badModelsNextToEachOther = matchArr.join();
91
- const atleas2DoubleDots = ((badModelsNextToEachOther.match(new RegExp(':', 'g')) || []).length >= 2);
92
- if (atleas2DoubleDots && model.search(badModelsNextToEachOther) !== -1) {
93
- throw new Error(`
94
-
95
- Bad rest model: ${model}
96
-
97
- Do not create rest models like this: /book/author/:bookid/:authorid
98
- Instead use nested approach: /book/:bookid/author/:authorid
99
- `);
100
- }
101
- ;
102
- Resource.map(e, e);
103
- Resource.instance.add(e, model ? model : '', entityMapping, circular, customContentType);
104
- return {
105
- model: (params) => Resource.instance.api(e, interpolateParamsToUrl(params, model)),
106
- replay: (method) => {
107
- Resource.getModel(e, model).replay(method);
108
- },
109
- get headers() {
110
- return Resource.getModel(e, model).headers;
111
- }
112
- };
113
- }
114
- static reset() {
115
- Resource.endpoints = {};
116
- }
117
- static map(endpoint, url) {
118
- log.i('url', url);
119
- let regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
120
- let e = endpoint;
121
- if (!regex.test(url)) {
122
- throw `Url address is not correct: ${url}`;
123
- }
124
- if (url.charAt(url.length - 1) === '/')
125
- url = url.slice(0, url.length - 1);
126
- log.i('url after', url);
127
- if (Resource.endpoints[e] !== void 0) {
128
- Helpers.log('Cannot use map function at the same API endpoint again ('
129
- + Resource.endpoints[e].url + ')');
130
- return false;
131
- }
132
- Resource.endpoints[e] = {
133
- url: url,
134
- models: {},
135
- entity: null
136
- };
137
- log.i('enpoints', Resource.endpoints);
138
- return true;
139
- }
140
- static prepareModel(model) {
141
- if (model.charAt(model.length - 1) === '/')
142
- model = model.slice(0, model.length - 1);
143
- if (model.charAt(0) === '/')
144
- model = model.slice(1, model.length);
145
- return model;
146
- }
147
- /**
148
- * And enipoint to application
149
- *
150
- * @param {E} endpoint
151
- * @param {string} model
152
- * @returns {boolean}
153
- */
154
- add(endpoint, model, entity, circular, customContentType) {
155
- log.i(`I am maping ${model} on ${endpoint}`);
156
- model = Resource.prepareModel(model);
157
- let e;
158
- e = (endpoint).toString();
159
- if (Resource.endpoints[e] === void 0) {
160
- console.error('Endpoint is not mapped ! Cannot add model ' + model);
161
- return;
162
- }
163
- if (Resource.endpoints[e].models[model] !== void 0) {
164
- if (Resource.enableWarnings)
165
- console.warn(`Model '${model}' is already defined in endpoint: `
166
- + Resource.endpoints[e].url);
167
- return;
168
- }
169
- Resource.endpoints[e].models[model] =
170
- new Rest(Resource.endpoints[e].url
171
- + '/' + model, Resource.request, {
172
- endpoint: e,
173
- path: model,
174
- entity,
175
- circular,
176
- }, customContentType); // TODO put custom content type in meta ?
177
- return;
178
- }
179
- /**
180
- * Access api throught endpoint
181
- *
182
- * @param {E} endpoint
183
- * @param {string} model
184
- * @returns {Rest<T, TA>}
185
- */
186
- api(endpoint, model) {
187
- if (model.charAt(0) === '/')
188
- model = model.slice(1, model.length);
189
- let e = (endpoint).toString();
190
- if (Resource.endpoints[e] === void 0) {
191
- throw `Endpoint: ${endpoint} is not mapped ! Cannot add model: ${model}`;
192
- }
193
- let allModels = Resource.endpoints[e].models;
194
- let orgModel = model;
195
- model = this.checkNestedModels(model, allModels);
196
- if (Resource.endpoints[e].models[model] === void 0) {
197
- throw `Model '${model}' is undefined in endpoint: ${Resource.endpoints[e].url} `;
198
- }
199
- let res = Resource.endpoints[(endpoint).toString()].models[model];
200
- if (orgModel !== model) {
201
- let baseUrl = Resource.endpoints[(endpoint).toString()].url;
202
- res.__rest_endpoint = `${baseUrl}/${orgModel}`;
203
- }
204
- else {
205
- res.__rest_endpoint = void 0;
206
- }
207
- ;
208
- return res;
209
- }
210
- }
211
- Resource._listenErrors = new Subject();
212
- Resource._listenSuccess = new Subject();
213
- Resource.enableWarnings = true;
214
- Resource.instance = new Resource();
215
- Resource.endpoints = {};
216
- Resource.request = new RestRequest();
217
- Resource.Cookies = Cookie.Instance;
218
- ;
219
- ({}); // @--end-of-file-for-module=ng2-rest lib/resource.service.ts
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFBO0FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBTTFDLE1BQU0sT0FBTyxRQUFRO0lBb0huQjtRQUNFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7YUFBRTtZQUFBLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBdEhNLE1BQU0sS0FBSyxZQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxL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aUJBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQztBQUM1QyxrQkFBUyxHQUFHLEVBQUUsQ0FBQztBQVFmLGdCQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7QUEwRDFDLGdCQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQXVJekMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzb3VjZS1zZXJ2aWNlJyxcbiAgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGVQYXJhbXNUb1VybCwgaXNWYWxpZCwgY29udGFpbnNNb2RlbHMsIGdldE1vZGVscyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IENpcmMgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3NlcidcblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgcHJpdmF0ZSBnZXRab25lKCkge1xuICAgIGNvbnN0IGlzTm9kZSA9ICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICBpZiAoaXNOb2RlKSB7IHJldHVybiB9O1xuICAgIGNvbnN0IG5nID0gd2luZG93WyduZyddO1xuICAgIGNvbnN0IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMgPSB3aW5kb3dbJ2dldEFsbEFuZ3VsYXJSb290RWxlbWVudHMnXTtcbiAgICBpZiAoIW5nIHx8ICFnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb2JlID0gbmcucHJvYmU7XG4gICAgY29uc3QgY29yZVRva2VucyA9IG5nLmNvcmVUb2tlbnM7XG4gICAgaWYgKCFjb3JlVG9rZW5zIHx8ICFjb3JlVG9rZW5zLk5nWm9uZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lQ2xhc3MgPSBjb3JlVG9rZW5zLk5nWm9uZTtcbiAgICBpZiAoIXByb2JlIHx8IHR5cGVvZiBwcm9iZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBhbmd1bGFyRWxlbWVudHM6IGFueVtdID0gZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cygpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhbmd1bGFyRWxlbWVudHMpIHx8IGFuZ3VsYXJFbGVtZW50cy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBuZy5wcm9iZShhbmd1bGFyRWxlbWVudHNbMF0pO1xuICAgIGlmICghcm9vdEVsZW1lbnQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgaW5qZWN0b3IgPSByb290RWxlbWVudC5pbmplY3RvcjtcbiAgICBpZiAoIWluamVjdG9yIHx8ICFpbmplY3Rvci5nZXQgfHwgdHlwZW9mIGluamVjdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lID0gaW5qZWN0b3IuZ2V0KHpvbmVDbGFzcylcbiAgICByZXR1cm4gem9uZTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBpbml0QW5ndWxhck5nWm9uZSh6b25lKSB7XG4gICAgUmVzdFJlcXVlc3Quem9uZSA9IHpvbmU7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTmVzdGVkTW9kZWxzKG1vZGVsOiBzdHJpbmcsIGFsbE1vZGVsczogT2JqZWN0KSB7XG5cbiAgICBmb3IgKGxldCBwIGluIGFsbE1vZGVscykge1xuICAgICAgaWYgKGFsbE1vZGVscy5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICBsZXQgbSA9IGFsbE1vZGVsc1twXTtcbiAgICAgICAgaWYgKGlzVmFsaWQocCkpIHtcbiAgICAgICAgICBsZXQgdXJsTW9kZWxzID0gZ2V0TW9kZWxzKHApO1xuICAgICAgICAgIGlmIChjb250YWluc01vZGVscyhtb2RlbCwgdXJsTW9kZWxzKSkge1xuICAgICAgICAgICAgbW9kZWwgPSBwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG5cblxuXG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGU8QSwgVEEgPSBBW10+KFxuICAgIGU6IHN0cmluZyxcbiAgICBtb2RlbD86IHN0cmluZyxcbiAgICBlbnRpdHlNYXBwaW5nPzogTWFwcGluZy5NYXBwaW5nLFxuICAgIGNpcmN1bGFyPzogQ2lyY1tdLFxuICAgIGN1c3RvbUNvbnRlbnRUeXBlPzogUmVzdEhlYWRlcnMsXG4gICk6IE1vZGVscy5SZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgY29uc3QgYmFkUmVzdFJlZ0VYID0gbmV3IFJlZ0V4cCgnKChcXC86KVthLXpdKykrJywgJ2cnKTtcbiAgICBjb25zdCBtYXRjaEFyciA9IG1vZGVsLm1hdGNoKGJhZFJlc3RSZWdFWCkgfHwgW107XG4gICAgY29uc3QgYmFkTW9kZWxzTmV4dFRvRWFjaE90aGVyID0gbWF0Y2hBcnIuam9pbigpO1xuICAgIGNvbnN0IGF0bGVhczJEb3VibGVEb3RzID0gKChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIubWF0Y2gobmV3IFJlZ0V4cCgnOicsICdnJykpIHx8IFtdKS5sZW5ndGggPj0gMik7XG4gICAgaWYgKGF0bGVhczJEb3VibGVEb3RzICYmIG1vZGVsLnNlYXJjaChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcblxuQmFkIHJlc3QgbW9kZWw6ICR7bW9kZWx9XG5cbkRvIG5vdCBjcmVhdGUgcmVzdCBtb2RlbHMgbGlrZSB0aGlzOiAgICAvYm9vay9hdXRob3IvOmJvb2tpZC86YXV0aG9yaWRcbkluc3RlYWQgdXNlIG5lc3RlZCBhcHByb2FjaDogICAgICAgICAgICAvYm9vay86Ym9va2lkL2F1dGhvci86YXV0aG9yaWRcbiAgICAgICAgICAgIGApXG4gICAgfTtcbiAgICBSZXNvdXJjZS5tYXAoZSwgZSk7XG4gICAgUmVzb3VyY2UuaW5zdGFuY2UuYWRkKGUsIG1vZGVsID8gbW9kZWwgOiAnJywgZW50aXR5TWFwcGluZywgY2lyY3VsYXIsIGN1c3RvbUNvbnRlbnRUeXBlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2RlbDogKHBhcmFtcz86IE9iamVjdCkgPT4gUmVzb3VyY2UuaW5zdGFuY2UuYXBpKFxuICAgICAgICBlLFxuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtc1RvVXJsKHBhcmFtcywgbW9kZWwpXG4gICAgICApLFxuICAgICAgcmVwbGF5OiAobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkgPT4ge1xuICAgICAgICBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkucmVwbGF5KG1ldGhvZCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkuaGVhZGVycztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgcHVibGljIHN0YXRpYyByZXNldCgpIHtcbiAgICBSZXNvdXJjZS5lbmRwb2ludHMgPSB7fTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBDb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWFwKGVuZHBvaW50OiBzdHJpbmcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsb2cuaSgndXJsJywgdXJsKVxuICAgIGxldCByZWdleCA9IC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJSFcXC1cXC9dKSk/LztcbiAgICBsZXQgZSA9IGVuZHBvaW50O1xuICAgIGlmICghcmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICB0aHJvdyBgVXJsIGFkZHJlc3MgaXMgbm90IGNvcnJlY3Q6ICR7dXJsfWA7XG4gICAgfVxuICAgIGlmICh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgIGxvZy5pKCd1cmwgYWZ0ZXInLCB1cmwpXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXSAhPT0gdm9pZCAwKSB7XG4gICAgICBIZWxwZXJzLmxvZygnQ2Fubm90IHVzZSBtYXAgZnVuY3Rpb24gYXQgdGhlIHNhbWUgQVBJIGVuZHBvaW50IGFnYWluICgnXG4gICAgICAgICsgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybCArICcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFJlc291cmNlLmVuZHBvaW50c1tlXSA9IHtcbiAgICAgIHVybDogdXJsLFxuICAgICAgbW9kZWxzOiB7fSxcbiAgICAgIGVudGl0eTogbnVsbFxuICAgIH07XG4gICAgbG9nLmkoJ2VucG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBwcmVwYXJlTW9kZWwobW9kZWwpIHtcbiAgICBpZiAobW9kZWwuY2hhckF0KG1vZGVsLmxlbmd0aCAtIDEpID09PSAnLycpIG1vZGVsID0gbW9kZWwuc2xpY2UoMCwgbW9kZWwubGVuZ3RoIC0gMSk7XG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBBbmQgZW5pcG9pbnQgdG8gYXBwbGljYXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwcml2YXRlIGFkZChlbmRwb2ludDogRSwgbW9kZWw6IHN0cmluZywgZW50aXR5OiBNYXBwaW5nLk1hcHBpbmcsIGNpcmN1bGFyPzogQ2lyY1tdLCBjdXN0b21Db250ZW50VHlwZT86IFJlc3RIZWFkZXJzKSB7XG4gICAgbG9nLmkoYEkgYW0gbWFwaW5nICR7bW9kZWx9IG9uICR7PGFueT5lbmRwb2ludH1gKTtcbiAgICBtb2RlbCA9IFJlc291cmNlLnByZXBhcmVNb2RlbChtb2RlbCk7XG5cbiAgICBsZXQgZTogc3RyaW5nO1xuICAgIGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0gPT09IHZvaWQgMCkge1xuICAgICAgY29uc29sZS5lcnJvcignRW5kcG9pbnQgaXMgbm90IG1hcHBlZCAhIENhbm5vdCBhZGQgbW9kZWwgJyArIG1vZGVsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHNbbW9kZWxdICE9PSB2b2lkIDApIHtcbiAgICAgIGlmIChSZXNvdXJjZS5lbmFibGVXYXJuaW5ncykgY29uc29sZS53YXJuKGBNb2RlbCAnJHttb2RlbH0nIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBlbmRwb2ludDogYFxuICAgICAgICArIFJlc291cmNlLmVuZHBvaW50c1tlXS51cmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9XG4gICAgICBuZXcgUmVzdDxULCBUQT4oUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybFxuICAgICAgICArICcvJyArIG1vZGVsLCBSZXNvdXJjZS5yZXF1ZXN0LCB7XG4gICAgICAgIGVuZHBvaW50OiBlLFxuICAgICAgICBwYXRoOiBtb2RlbCxcbiAgICAgICAgZW50aXR5LFxuICAgICAgICBjaXJjdWxhcixcbiAgICAgIH0sIGN1c3RvbUNvbnRlbnRUeXBlKTsgLy8gVE9ETyBwdXQgY3VzdG9tIGNvbnRlbnQgdHlwZSBpbiBtZXRhID9cbiAgICByZXR1cm47XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG5cblxuXG5cblxuXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG5cbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG5cblxuXG5cblxuICAgIGlmIChvcmdNb2RlbCAhPT0gbW9kZWwpIHtcbiAgICAgIGxldCBiYXNlVXJsID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS51cmw7XG5cblxuXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuXG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3Jlc291cmNlLnNlcnZpY2UudHMiXX0=