ng2-rest 13.2.5 → 13.2.6

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 (125) 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 +160 -165
  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 -1683
  20. package/browser/fesm2015/ng2-rest.mjs.map +1 -1
  21. package/browser/fesm2020/ng2-rest.mjs +1675 -1681
  22. package/browser/fesm2020/ng2-rest.mjs.map +1 -1
  23. package/browser/lib/content-type.d.ts +4 -4
  24. package/browser/lib/cookie.d.ts +7 -7
  25. package/browser/lib/helpers.d.ts +10 -10
  26. package/browser/lib/index.d.ts +9 -9
  27. package/browser/lib/mapping.d.ts +12 -12
  28. package/browser/lib/models.d.ts +157 -157
  29. package/browser/lib/other/simple-resource.d.ts +29 -29
  30. package/browser/lib/params.d.ts +23 -23
  31. package/browser/lib/request-cache.d.ts +17 -17
  32. package/browser/lib/resource.service.d.ts +43 -43
  33. package/browser/lib/rest-headers.d.ts +57 -57
  34. package/browser/lib/rest-request.d.ts +21 -21
  35. package/browser/lib/rest.class.d.ts +36 -36
  36. package/browser/ng2-rest.d.ts +4 -4
  37. package/client/README.md +24 -24
  38. package/client/esm2020/lib/content-type.mjs +12 -12
  39. package/client/esm2020/lib/cookie.mjs +28 -28
  40. package/client/esm2020/lib/helpers.mjs +23 -23
  41. package/client/esm2020/lib/index.mjs +12 -12
  42. package/client/esm2020/lib/mapping.mjs +238 -238
  43. package/client/esm2020/lib/models.mjs +160 -165
  44. package/client/esm2020/lib/other/simple-resource.mjs +116 -116
  45. package/client/esm2020/lib/params.mjs +278 -278
  46. package/client/esm2020/lib/request-cache.mjs +100 -100
  47. package/client/esm2020/lib/resource.service.mjs +213 -213
  48. package/client/esm2020/lib/rest-headers.mjs +128 -128
  49. package/client/esm2020/lib/rest-request.mjs +321 -321
  50. package/client/esm2020/lib/rest.class.mjs +115 -115
  51. package/client/esm2020/ng2-rest.mjs +4 -4
  52. package/client/esm2020/public-api.mjs +1 -1
  53. package/client/fesm2015/ng2-rest.mjs +1677 -1683
  54. package/client/fesm2015/ng2-rest.mjs.map +1 -1
  55. package/client/fesm2020/ng2-rest.mjs +1675 -1681
  56. package/client/fesm2020/ng2-rest.mjs.map +1 -1
  57. package/client/lib/content-type.d.ts +4 -4
  58. package/client/lib/cookie.d.ts +7 -7
  59. package/client/lib/helpers.d.ts +10 -10
  60. package/client/lib/index.d.ts +9 -9
  61. package/client/lib/mapping.d.ts +12 -12
  62. package/client/lib/models.d.ts +157 -157
  63. package/client/lib/other/simple-resource.d.ts +29 -29
  64. package/client/lib/params.d.ts +23 -23
  65. package/client/lib/request-cache.d.ts +17 -17
  66. package/client/lib/resource.service.d.ts +43 -43
  67. package/client/lib/rest-headers.d.ts +57 -57
  68. package/client/lib/rest-request.d.ts +21 -21
  69. package/client/lib/rest.class.d.ts +36 -36
  70. package/client/ng2-rest.d.ts +4 -4
  71. package/client/package.json +36 -35
  72. package/index.d.ts +1 -1
  73. package/lib/content-type.d.ts +5 -5
  74. package/lib/cookie.d.ts +8 -8
  75. package/lib/helpers.d.ts +11 -11
  76. package/lib/index.d.ts +10 -10
  77. package/lib/mapping.d.ts +13 -13
  78. package/lib/models.d.ts +158 -158
  79. package/lib/models.js +5 -12
  80. package/lib/models.js.map +1 -1
  81. package/lib/other/simple-resource.d.ts +30 -30
  82. package/lib/params.d.ts +24 -24
  83. package/lib/request-cache.d.ts +18 -18
  84. package/lib/resource.service.d.ts +44 -44
  85. package/lib/rest-headers.d.ts +58 -58
  86. package/lib/rest-request.d.ts +22 -22
  87. package/lib/rest.class.d.ts +37 -37
  88. package/package.json +2 -2
  89. package/package.json_devDependencies.json +217 -217
  90. package/package.json_tnp.json5 +50 -50
  91. package/tmp-environment.json +40 -39
  92. package/websql/README.md +24 -24
  93. package/websql/esm2020/lib/content-type.mjs +12 -12
  94. package/websql/esm2020/lib/cookie.mjs +28 -28
  95. package/websql/esm2020/lib/helpers.mjs +23 -23
  96. package/websql/esm2020/lib/index.mjs +12 -12
  97. package/websql/esm2020/lib/mapping.mjs +238 -238
  98. package/websql/esm2020/lib/models.mjs +160 -165
  99. package/websql/esm2020/lib/other/simple-resource.mjs +116 -116
  100. package/websql/esm2020/lib/params.mjs +278 -278
  101. package/websql/esm2020/lib/request-cache.mjs +100 -100
  102. package/websql/esm2020/lib/resource.service.mjs +213 -213
  103. package/websql/esm2020/lib/rest-headers.mjs +128 -128
  104. package/websql/esm2020/lib/rest-request.mjs +321 -321
  105. package/websql/esm2020/lib/rest.class.mjs +115 -115
  106. package/websql/esm2020/ng2-rest.mjs +4 -4
  107. package/websql/esm2020/public-api.mjs +1 -1
  108. package/websql/fesm2015/ng2-rest.mjs +1677 -1683
  109. package/websql/fesm2015/ng2-rest.mjs.map +1 -1
  110. package/websql/fesm2020/ng2-rest.mjs +1675 -1681
  111. package/websql/fesm2020/ng2-rest.mjs.map +1 -1
  112. package/websql/lib/content-type.d.ts +4 -4
  113. package/websql/lib/cookie.d.ts +7 -7
  114. package/websql/lib/helpers.d.ts +10 -10
  115. package/websql/lib/index.d.ts +9 -9
  116. package/websql/lib/mapping.d.ts +12 -12
  117. package/websql/lib/models.d.ts +157 -157
  118. package/websql/lib/other/simple-resource.d.ts +29 -29
  119. package/websql/lib/params.d.ts +23 -23
  120. package/websql/lib/request-cache.d.ts +17 -17
  121. package/websql/lib/resource.service.d.ts +43 -43
  122. package/websql/lib/rest-headers.d.ts +57 -57
  123. package/websql/lib/rest-request.d.ts +21 -21
  124. package/websql/lib/rest.class.d.ts +36 -36
  125. package/websql/ng2-rest.d.ts +4 -4
@@ -1,129 +1,129 @@
1
- export class RestHeaders {
2
- constructor(headers) {
3
- /** @internal header names are lower case */
4
- this._headers = new Map();
5
- /** @internal map lower case names to actual names */
6
- this._normalizedNames = new Map();
7
- if (headers instanceof RestHeaders) {
8
- headers.forEach((values, name) => {
9
- values.forEach(value => this.set(name, value));
10
- });
11
- }
12
- else {
13
- Object.keys(headers).forEach((name) => {
14
- const values = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]);
15
- this.delete(name);
16
- values.forEach(value => this.set(name, value));
17
- });
18
- }
19
- }
20
- static from(headers) {
21
- if (!headers) {
22
- return void 0;
23
- }
24
- return new RestHeaders(headers);
25
- }
26
- /**
27
- * Returns a new RestHeaders instance from the given DOMString of Response RestHeaders
28
- */
29
- static fromResponseHeaderString(headersString) {
30
- const headers = new RestHeaders();
31
- headersString.split('\n').forEach(line => {
32
- const index = line.indexOf(':');
33
- if (index > 0) {
34
- const name = line.slice(0, index);
35
- const value = line.slice(index + 1).trim();
36
- headers.set(name, value);
37
- }
38
- });
39
- return headers;
40
- }
41
- /**
42
- * Appends a header to existing list of header values for a given header name.
43
- */
44
- append(name, value) {
45
- const values = this.getAll(name);
46
- if (values === null) {
47
- this.set(name, value);
48
- }
49
- else {
50
- values.push(value);
51
- }
52
- }
53
- /**
54
- * Deletes all header values for the given name.
55
- */
56
- delete(name) {
57
- const lcName = name.toLowerCase();
58
- this._normalizedNames.delete(lcName);
59
- this._headers.delete(lcName);
60
- }
61
- forEach(fn) {
62
- this._headers.forEach((values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));
63
- }
64
- /**
65
- * Returns first header that matches given name.
66
- */
67
- get(name) {
68
- const values = this.getAll(name);
69
- if (values === null) {
70
- return null;
71
- }
72
- return values.length > 0 ? values[0] : null;
73
- }
74
- /**
75
- * Checks for existence of header by given name.
76
- */
77
- has(name) { return this._headers.has(name.toLowerCase()); }
78
- /**
79
- * Returns the names of the headers
80
- */
81
- keys() { return Array.from(this._normalizedNames.values()); }
82
- /**
83
- * Sets or overrides header value for given name.
84
- */
85
- set(name, value) {
86
- if (Array.isArray(value)) {
87
- if (value.length) {
88
- this._headers.set(name.toLowerCase(), [value.join(',')]);
89
- }
90
- }
91
- else {
92
- this._headers.set(name.toLowerCase(), [value]);
93
- }
94
- this.mayBeSetNormalizedName(name);
95
- }
96
- /**
97
- * Returns values of all headers.
98
- */
99
- values() { return Array.from(this._headers.values()); }
100
- /**
101
- * Returns string of all headers.
102
- */
103
- toJSON() {
104
- const serialized = {};
105
- if (!this._headers) {
106
- }
107
- this._headers.forEach((values, name) => {
108
- const split = [];
109
- values.forEach(v => split.push(...v.split(',')));
110
- serialized[this._normalizedNames.get(name)] = split;
111
- });
112
- return serialized;
113
- }
114
- /**
115
- * Returns list of header values for a given name.
116
- */
117
- getAll(name) {
118
- return this.has(name) ? this._headers.get(name.toLowerCase()) : null;
119
- }
120
- mayBeSetNormalizedName(name) {
121
- const lcName = name.toLowerCase();
122
- if (!this._normalizedNames.has(lcName)) {
123
- this._normalizedNames.set(lcName, name);
124
- }
125
- }
126
- }
127
- ;
128
- ({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts
1
+ export class RestHeaders {
2
+ constructor(headers) {
3
+ /** @internal header names are lower case */
4
+ this._headers = new Map();
5
+ /** @internal map lower case names to actual names */
6
+ this._normalizedNames = new Map();
7
+ if (headers instanceof RestHeaders) {
8
+ headers.forEach((values, name) => {
9
+ values.forEach(value => this.set(name, value));
10
+ });
11
+ }
12
+ else {
13
+ Object.keys(headers).forEach((name) => {
14
+ const values = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]);
15
+ this.delete(name);
16
+ values.forEach(value => this.set(name, value));
17
+ });
18
+ }
19
+ }
20
+ static from(headers) {
21
+ if (!headers) {
22
+ return void 0;
23
+ }
24
+ return new RestHeaders(headers);
25
+ }
26
+ /**
27
+ * Returns a new RestHeaders instance from the given DOMString of Response RestHeaders
28
+ */
29
+ static fromResponseHeaderString(headersString) {
30
+ const headers = new RestHeaders();
31
+ headersString.split('\n').forEach(line => {
32
+ const index = line.indexOf(':');
33
+ if (index > 0) {
34
+ const name = line.slice(0, index);
35
+ const value = line.slice(index + 1).trim();
36
+ headers.set(name, value);
37
+ }
38
+ });
39
+ return headers;
40
+ }
41
+ /**
42
+ * Appends a header to existing list of header values for a given header name.
43
+ */
44
+ append(name, value) {
45
+ const values = this.getAll(name);
46
+ if (values === null) {
47
+ this.set(name, value);
48
+ }
49
+ else {
50
+ values.push(value);
51
+ }
52
+ }
53
+ /**
54
+ * Deletes all header values for the given name.
55
+ */
56
+ delete(name) {
57
+ const lcName = name.toLowerCase();
58
+ this._normalizedNames.delete(lcName);
59
+ this._headers.delete(lcName);
60
+ }
61
+ forEach(fn) {
62
+ this._headers.forEach((values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));
63
+ }
64
+ /**
65
+ * Returns first header that matches given name.
66
+ */
67
+ get(name) {
68
+ const values = this.getAll(name);
69
+ if (values === null) {
70
+ return null;
71
+ }
72
+ return values.length > 0 ? values[0] : null;
73
+ }
74
+ /**
75
+ * Checks for existence of header by given name.
76
+ */
77
+ has(name) { return this._headers.has(name.toLowerCase()); }
78
+ /**
79
+ * Returns the names of the headers
80
+ */
81
+ keys() { return Array.from(this._normalizedNames.values()); }
82
+ /**
83
+ * Sets or overrides header value for given name.
84
+ */
85
+ set(name, value) {
86
+ if (Array.isArray(value)) {
87
+ if (value.length) {
88
+ this._headers.set(name.toLowerCase(), [value.join(',')]);
89
+ }
90
+ }
91
+ else {
92
+ this._headers.set(name.toLowerCase(), [value]);
93
+ }
94
+ this.mayBeSetNormalizedName(name);
95
+ }
96
+ /**
97
+ * Returns values of all headers.
98
+ */
99
+ values() { return Array.from(this._headers.values()); }
100
+ /**
101
+ * Returns string of all headers.
102
+ */
103
+ toJSON() {
104
+ const serialized = {};
105
+ if (!this._headers) {
106
+ }
107
+ this._headers.forEach((values, name) => {
108
+ const split = [];
109
+ values.forEach(v => split.push(...v.split(',')));
110
+ serialized[this._normalizedNames.get(name)] = split;
111
+ });
112
+ return serialized;
113
+ }
114
+ /**
115
+ * Returns list of header values for a given name.
116
+ */
117
+ getAll(name) {
118
+ return this.has(name) ? this._headers.get(name.toLowerCase()) : null;
119
+ }
120
+ mayBeSetNormalizedName(name) {
121
+ const lcName = name.toLowerCase();
122
+ if (!this._normalizedNames.has(lcName)) {
123
+ this._normalizedNames.set(lcName, name);
124
+ }
125
+ }
126
+ }
127
+ ;
128
+ ({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts
129
129
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sV0FBVztJQWN0QixZQUFvQixPQUErRDtRQWJuRiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHFEQUFxRDtRQUNyRCxxQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdoRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7WUFDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWdCLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sTUFBTSxHQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFRLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFD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QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkUsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVk7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUNGO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5REFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIEhlYWRlcnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2h0dHAvc3JjL2hlYWRlcnMudHNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdEhlYWRlcnNPcHRpb25zID0gUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH1cblxuZXhwb3J0IGNsYXNzIFJlc3RIZWFkZXJzIHtcbiAgLyoqIEBpbnRlcm5hbCBoZWFkZXIgbmFtZXMgYXJlIGxvd2VyIGNhc2UgKi9cbiAgX2hlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcbiAgLyoqIEBpbnRlcm5hbCBtYXAgbG93ZXIgY2FzZSBuYW1lcyB0byBhY3R1YWwgbmFtZXMgKi9cbiAgX25vcm1hbGl6ZWROYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShoZWFkZXJzPzogUmVzdEhlYWRlcnNPcHRpb25zKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3RIZWFkZXJzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihoZWFkZXJzPzogUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH0pIHtcbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIFJlc3RIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tuYW1lXSkgPyBoZWFkZXJzW25hbWVdIDogW2hlYWRlcnNbbmFtZV1dKSBhcyBhbnk7XG4gICAgICAgIHRoaXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgUmVzdEhlYWRlcnMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gRE9NU3RyaW5nIG9mIFJlc3BvbnNlIFJlc3RIZWFkZXJzXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNTdHJpbmc6IHN0cmluZyk6IFJlc3RIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IFJlc3RIZWFkZXJzKCk7XG5cblxuXG4gICAgaGVhZGVyc1N0cmluZy5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBsaW5lLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnNsaWNlKGluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIGEgaGVhZGVyIHRvIGV4aXN0aW5nIGxpc3Qgb2YgaGVhZGVyIHZhbHVlcyBmb3IgYSBnaXZlbiBoZWFkZXIgbmFtZS5cbiAgICovXG4gIGFwcGVuZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBoZWFkZXIgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGRlbGV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBsY05hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmRlbGV0ZShsY05hbWUpO1xuICAgIHRoaXMuX2hlYWRlcnMuZGVsZXRlKGxjTmFtZSk7XG4gIH1cblxuICBmb3JFYWNoKGZuOiAodmFsdWVzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBoZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goXG4gICAgICAodmFsdWVzLCBsY05hbWUpID0+IGZuKHZhbHVlcywgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChsY05hbWUpLCB0aGlzLl9oZWFkZXJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBmaXJzdCBoZWFkZXIgdGhhdCBtYXRjaGVzIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID4gMCA/IHZhbHVlc1swXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBleGlzdGVuY2Ugb2YgaGVhZGVyIGJ5IGdpdmVuIG5hbWUuXG4gICAqL1xuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oZWFkZXJzLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBoZWFkZXJzXG4gICAqL1xuICBrZXlzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKTsgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG9yIG92ZXJyaWRlcyBoZWFkZXIgdmFsdWUgZm9yIGdpdmVuIG5hbWUuXG4gICAqL1xuICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5faGVhZGVycy5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCBbdmFsdWUuam9pbignLCcpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWRlcnMuc2V0KG5hbWUudG9Mb3dlckNhc2UoKSwgW3ZhbHVlXSk7XG4gICAgfVxuICAgIHRoaXMubWF5QmVTZXROb3JtYWxpemVkTmFtZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHZhbHVlcyBvZiBhbGwgaGVhZGVycy5cbiAgICovXG4gIHZhbHVlcygpOiBzdHJpbmdbXVtdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faGVhZGVycy52YWx1ZXMoKSk7IH1cblxuICAvKipcbiAgICogUmV0dXJucyBzdHJpbmcgb2YgYWxsIGhlYWRlcnMuXG4gICAqL1xuXG4gIHRvSlNPTigpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICghdGhpcy5faGVhZGVycykge1xuXG5cbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3BsaXQ6IHN0cmluZ1tdID0gW107XG4gICAgICB2YWx1ZXMuZm9yRWFjaCh2ID0+IHNwbGl0LnB1c2goLi4udi5zcGxpdCgnLCcpKSk7XG5cblxuXG5cbiAgICAgIHNlcmlhbGl6ZWRbdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChuYW1lKV0gPSBzcGxpdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZE5hbWVzLmhhcyhsY05hbWUpKSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGxjTmFtZSwgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXN0LWhlYWRlcnMudHMiXX0=