ng2-rest 11.0.40 → 12.0.3
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.
- package/README.md +1 -1
- package/app.js +2 -47
- package/app.js.map +1 -1
- package/browser/README.md +24 -0
- package/browser/esm2020/lib/cookie.mjs +27 -0
- package/browser/esm2020/lib/helpers.mjs +22 -0
- package/browser/esm2020/lib/index.mjs +10 -0
- package/browser/esm2020/lib/mapping.mjs +271 -0
- package/browser/esm2020/lib/models.mjs +135 -0
- package/browser/esm2020/lib/params.mjs +305 -0
- package/browser/esm2020/lib/request-cache.mjs +95 -0
- package/browser/esm2020/lib/resource.service.mjs +255 -0
- package/browser/esm2020/lib/rest-headers.mjs +129 -0
- package/browser/esm2020/lib/rest-request.mjs +311 -0
- package/browser/esm2020/lib/rest.class.mjs +114 -0
- package/browser/esm2020/lib/simple-resource.mjs +117 -0
- package/browser/esm2020/ng2-rest.mjs +5 -0
- package/browser/esm2020/public-api.mjs +2 -0
- package/browser/fesm2015/ng2-rest.mjs +1755 -0
- package/browser/fesm2015/ng2-rest.mjs.map +1 -0
- package/browser/fesm2020/ng2-rest.mjs +1752 -0
- package/browser/fesm2020/ng2-rest.mjs.map +1 -0
- package/browser/{cookie.d.ts → lib/cookie.d.ts} +0 -0
- package/browser/{helpers.d.ts → lib/helpers.d.ts} +0 -0
- package/browser/{index.d.ts → lib/index.d.ts} +0 -0
- package/browser/{mapping.d.ts → lib/mapping.d.ts} +0 -0
- package/{client → browser/lib}/models.d.ts +2 -3
- package/browser/{params.d.ts → lib/params.d.ts} +0 -0
- package/browser/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
- package/browser/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
- package/browser/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
- package/{rest-request.d.ts → browser/lib/rest-request.d.ts} +0 -3
- package/{rest.class.d.ts → browser/lib/rest.class.d.ts} +0 -1
- package/browser/{simple-resource.d.ts → lib/simple-resource.d.ts} +1 -5
- package/browser/ng2-rest.d.ts +5 -0
- package/browser/package.json +31 -0
- package/browser/public-api.d.ts +1 -0
- package/client/README.md +24 -0
- package/client/esm2020/lib/cookie.mjs +27 -0
- package/client/esm2020/lib/helpers.mjs +22 -0
- package/client/esm2020/lib/index.mjs +10 -0
- package/client/esm2020/lib/mapping.mjs +271 -0
- package/client/esm2020/lib/models.mjs +135 -0
- package/client/esm2020/lib/params.mjs +305 -0
- package/client/esm2020/lib/request-cache.mjs +95 -0
- package/client/esm2020/lib/resource.service.mjs +255 -0
- package/client/esm2020/lib/rest-headers.mjs +129 -0
- package/client/esm2020/lib/rest-request.mjs +311 -0
- package/client/esm2020/lib/rest.class.mjs +114 -0
- package/client/esm2020/lib/simple-resource.mjs +117 -0
- package/client/esm2020/ng2-rest.mjs +5 -0
- package/client/esm2020/public-api.mjs +2 -0
- package/client/fesm2015/ng2-rest.mjs +1755 -0
- package/client/fesm2015/ng2-rest.mjs.map +1 -0
- package/client/fesm2020/ng2-rest.mjs +1752 -0
- package/client/fesm2020/ng2-rest.mjs.map +1 -0
- package/client/{cookie.d.ts → lib/cookie.d.ts} +0 -0
- package/client/{helpers.d.ts → lib/helpers.d.ts} +0 -0
- package/client/{index.d.ts → lib/index.d.ts} +0 -0
- package/client/{mapping.d.ts → lib/mapping.d.ts} +0 -0
- package/{browser → client/lib}/models.d.ts +2 -3
- package/client/{params.d.ts → lib/params.d.ts} +0 -0
- package/client/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
- package/client/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
- package/client/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
- package/client/{rest-request.d.ts → lib/rest-request.d.ts} +0 -3
- package/client/{rest.class.d.ts → lib/rest.class.d.ts} +0 -1
- package/{simple-resource.d.ts → client/lib/simple-resource.d.ts} +1 -5
- package/client/ng2-rest.d.ts +5 -0
- package/client/package.json +25 -31
- package/client/public-api.d.ts +1 -0
- package/index.d.ts +1 -9
- package/index.js +3 -13
- package/index.js.map +1 -1
- package/{cookie.d.ts → lib/cookie.d.ts} +0 -0
- package/{cookie.js → lib/cookie.js} +2 -1
- package/lib/cookie.js.map +1 -0
- package/{helpers.d.ts → lib/helpers.d.ts} +0 -0
- package/{helpers.js → lib/helpers.js} +3 -2
- package/lib/helpers.js.map +1 -0
- package/{browser/index.js → lib/index.d.ts} +0 -1
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -0
- package/{mapping.d.ts → lib/mapping.d.ts} +0 -0
- package/{mapping.js → lib/mapping.js} +5 -4
- package/lib/mapping.js.map +1 -0
- package/{models.d.ts → lib/models.d.ts} +2 -3
- package/{models.js → lib/models.js} +6 -6
- package/lib/models.js.map +1 -0
- package/{params.d.ts → lib/params.d.ts} +0 -0
- package/{params.js → lib/params.js} +17 -16
- package/lib/params.js.map +1 -0
- package/{request-cache.d.ts → lib/request-cache.d.ts} +0 -0
- package/{request-cache.js → lib/request-cache.js} +2 -1
- package/lib/request-cache.js.map +1 -0
- package/{resource.service.d.ts → lib/resource.service.d.ts} +1 -5
- package/{resource.service.js → lib/resource.service.js} +33 -26
- package/lib/resource.service.js.map +1 -0
- package/{rest-headers.d.ts → lib/rest-headers.d.ts} +0 -0
- package/{rest-headers.js → lib/rest-headers.js} +2 -1
- package/lib/rest-headers.js.map +1 -0
- package/{browser → lib}/rest-request.d.ts +0 -3
- package/{rest-request.js → lib/rest-request.js} +19 -19
- package/lib/rest-request.js.map +1 -0
- package/{browser → lib}/rest.class.d.ts +0 -1
- package/{rest.class.js → lib/rest.class.js} +4 -5
- package/lib/rest.class.js.map +1 -0
- package/{client → lib}/simple-resource.d.ts +1 -5
- package/{simple-resource.js → lib/simple-resource.js} +11 -14
- package/lib/simple-resource.js.map +1 -0
- package/package.json +10 -10
- package/package.json_devDependencies.json +24 -24
- package/package.json_tnp.json +2 -1
- package/package.json_tnp.json5 +39 -0
- package/tmp-environment.json +85 -121
- package/browser/app.d.ts +0 -0
- package/browser/app.js +0 -31
- package/browser/app.js.map +0 -1
- package/browser/cookie.js +0 -27
- package/browser/cookie.js.map +0 -1
- package/browser/es5/app.js +0 -32
- package/browser/es5/cookie.js +0 -50
- package/browser/es5/helpers.js +0 -58
- package/browser/es5/index.js +0 -107
- package/browser/es5/mapping.js +0 -287
- package/browser/es5/models.js +0 -249
- package/browser/es5/params.js +0 -310
- package/browser/es5/request-cache.js +0 -133
- package/browser/es5/resource.service.js +0 -288
- package/browser/es5/rest-headers.js +0 -200
- package/browser/es5/rest-request.js +0 -423
- package/browser/es5/rest.class.js +0 -191
- package/browser/es5/simple-resource.js +0 -175
- package/browser/helpers.js +0 -22
- package/browser/helpers.js.map +0 -1
- package/browser/index.js.map +0 -1
- package/browser/mapping.js +0 -271
- package/browser/mapping.js.map +0 -1
- package/browser/models.js +0 -136
- package/browser/models.js.map +0 -1
- package/browser/params.js +0 -305
- package/browser/params.js.map +0 -1
- package/browser/request-cache.js +0 -95
- package/browser/request-cache.js.map +0 -1
- package/browser/resource.service.js +0 -249
- package/browser/resource.service.js.map +0 -1
- package/browser/rest-headers.js +0 -129
- package/browser/rest-headers.js.map +0 -1
- package/browser/rest-request.js +0 -316
- package/browser/rest-request.js.map +0 -1
- package/browser/rest.class.js +0 -116
- package/browser/rest.class.js.map +0 -1
- package/browser/simple-resource.js +0 -121
- package/browser/simple-resource.js.map +0 -1
- package/client/app.d.ts +0 -0
- package/client/app.js +0 -31
- package/client/app.js.map +0 -1
- package/client/cookie.js +0 -27
- package/client/cookie.js.map +0 -1
- package/client/es5/app.js +0 -32
- package/client/es5/cookie.js +0 -50
- package/client/es5/helpers.js +0 -58
- package/client/es5/index.js +0 -107
- package/client/es5/mapping.js +0 -287
- package/client/es5/models.js +0 -249
- package/client/es5/params.js +0 -310
- package/client/es5/request-cache.js +0 -133
- package/client/es5/resource.service.js +0 -288
- package/client/es5/rest-headers.js +0 -200
- package/client/es5/rest-request.js +0 -423
- package/client/es5/rest.class.js +0 -191
- package/client/es5/simple-resource.js +0 -175
- package/client/helpers.js +0 -22
- package/client/helpers.js.map +0 -1
- package/client/index.js +0 -10
- package/client/index.js.map +0 -1
- package/client/mapping.js +0 -271
- package/client/mapping.js.map +0 -1
- package/client/models.js +0 -136
- package/client/models.js.map +0 -1
- package/client/params.js +0 -305
- package/client/params.js.map +0 -1
- package/client/request-cache.js +0 -95
- package/client/request-cache.js.map +0 -1
- package/client/resource.service.js +0 -249
- package/client/resource.service.js.map +0 -1
- package/client/rest-headers.js +0 -129
- package/client/rest-headers.js.map +0 -1
- package/client/rest-request.js +0 -316
- package/client/rest-request.js.map +0 -1
- package/client/rest.class.js +0 -116
- package/client/rest.class.js.map +0 -1
- package/client/simple-resource.js +0 -121
- package/client/simple-resource.js.map +0 -1
- package/cookie.js.map +0 -1
- package/helpers.js.map +0 -1
- package/mapping.js.map +0 -1
- package/models.js.map +0 -1
- package/params.js.map +0 -1
- package/request-cache.js.map +0 -1
- package/resource.service.js.map +0 -1
- package/rest-headers.js.map +0 -1
- package/rest-request.js.map +0 -1
- package/rest.class.js.map +0 -1
- package/simple-resource.js.map +0 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { diffChars } from 'diff';
|
|
2
|
+
import { _ } from 'tnp-core/browser';
|
|
3
|
+
import { Log, Level } from 'ng2-logger/browser';
|
|
4
|
+
import { Helpers } from './helpers';
|
|
5
|
+
const log = Log.create('[ng2-rest] params', Level.__NOTHING);
|
|
6
|
+
/** check if string is a valid pattern */
|
|
7
|
+
export function isValid(pattern) {
|
|
8
|
+
return (new RegExp('\/:[a-zA-Z]*', 'g')).test(pattern.replace('://', ''));
|
|
9
|
+
}
|
|
10
|
+
export function check(url, pattern) {
|
|
11
|
+
if (!Helpers.checkValidUrl(url)) {
|
|
12
|
+
log.error(`Incorrect url: ${url}`);
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (url.charAt(url.length - 1) === '/')
|
|
16
|
+
url = url.slice(0, url.length - 2);
|
|
17
|
+
if (pattern.charAt(pattern.length - 1) === '/')
|
|
18
|
+
pattern = pattern.slice(0, url.length - 2);
|
|
19
|
+
pattern = pattern.replace(/\//g, '\/');
|
|
20
|
+
pattern = pattern.replace(new RegExp('\/:[a-zA-Z]*', 'g'), '.+');
|
|
21
|
+
let reg = new RegExp(pattern, 'g');
|
|
22
|
+
return reg.test(url);
|
|
23
|
+
}
|
|
24
|
+
export function getModels(pattern) {
|
|
25
|
+
let m = pattern.match(new RegExp('[a-z-A-Z]*\/:', 'g'));
|
|
26
|
+
return m.map(p => p.replace('/:', ''));
|
|
27
|
+
}
|
|
28
|
+
export function getRestPramsNames(pattern) {
|
|
29
|
+
if (pattern.charAt(pattern.length - 1) !== '/')
|
|
30
|
+
pattern = `${pattern}/`;
|
|
31
|
+
let m = pattern.match(new RegExp(':[a-zA-Z]*\/', 'g'));
|
|
32
|
+
let res = m.map(p => p.replace(':', '').replace('/', ''));
|
|
33
|
+
return res.filter(p => p.trim() !== '');
|
|
34
|
+
}
|
|
35
|
+
export function containsModels(url, models) {
|
|
36
|
+
if (url.charAt(0) !== '/')
|
|
37
|
+
url = '/' + url;
|
|
38
|
+
// url = url.replace(new RegExp('\/', 'g'), '');
|
|
39
|
+
let res = models.filter(m => {
|
|
40
|
+
let word = '/' + m;
|
|
41
|
+
// log.d('word', word)
|
|
42
|
+
let iii = url.indexOf(word);
|
|
43
|
+
// log.d('iii', iii)
|
|
44
|
+
if (iii + word.length < url.length && url.charAt(iii + word.length) !== '/') {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
if (iii !== -1) {
|
|
48
|
+
url = url.replace(new RegExp('\/' + m, 'g'), '');
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}).length;
|
|
53
|
+
// log.d('containsModels', res);
|
|
54
|
+
return res === models.length;
|
|
55
|
+
}
|
|
56
|
+
export function stars(n) {
|
|
57
|
+
let res = '';
|
|
58
|
+
for (let i = 0; i < n; i++)
|
|
59
|
+
res += '*';
|
|
60
|
+
return res;
|
|
61
|
+
}
|
|
62
|
+
export function getRestParams(url, pattern) {
|
|
63
|
+
let res = {};
|
|
64
|
+
let models = getRestPramsNames(pattern);
|
|
65
|
+
// log.d('models', models);
|
|
66
|
+
models.forEach(m => {
|
|
67
|
+
pattern = pattern.replace(`:${m}`, stars(m.length));
|
|
68
|
+
});
|
|
69
|
+
let currentModel = void 0;
|
|
70
|
+
diffChars(pattern, url).forEach(d => {
|
|
71
|
+
// log.d('d', d);
|
|
72
|
+
if (d.added) {
|
|
73
|
+
if (!isNaN(Number(d.value)))
|
|
74
|
+
res[currentModel] = Number(d.value);
|
|
75
|
+
else if (d.value.trim() === 'true')
|
|
76
|
+
res[currentModel] = true;
|
|
77
|
+
else if (d.value.trim() === 'false')
|
|
78
|
+
res[currentModel] = false;
|
|
79
|
+
else
|
|
80
|
+
res[currentModel] = decodeURIComponent(d.value);
|
|
81
|
+
currentModel = void 0;
|
|
82
|
+
}
|
|
83
|
+
let m = d.value.replace(':', "");
|
|
84
|
+
// log.d('model m', m)
|
|
85
|
+
if (d.removed) {
|
|
86
|
+
currentModel = models.shift();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return res;
|
|
90
|
+
}
|
|
91
|
+
export const regexisPath = /[^\..]+(\.[^\..]+)+/g;
|
|
92
|
+
/**
|
|
93
|
+
* Models like books/:id
|
|
94
|
+
*/
|
|
95
|
+
function cutUrlModel(params, models, output) {
|
|
96
|
+
if (models.length === 0)
|
|
97
|
+
return output.join('\/');
|
|
98
|
+
let m = models.pop();
|
|
99
|
+
let param = m.match(/:[a-zA-Z0-9\.]+/)[0].replace(':', '');
|
|
100
|
+
const paramIsPath = regexisPath.test(param);
|
|
101
|
+
// log.i('cut param', param)
|
|
102
|
+
let model = m.match(/[a-zA-Z0-9]+\//)[0].replace('\/', '');
|
|
103
|
+
if (params === void 0 ||
|
|
104
|
+
(paramIsPath ? _.get(params, param) === void 0 : params[param] === void 0) ||
|
|
105
|
+
param === 'undefined') {
|
|
106
|
+
output.length = 0;
|
|
107
|
+
output.unshift(model);
|
|
108
|
+
return cutUrlModel(params, models, output);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (paramIsPath) {
|
|
112
|
+
// log.i('param is path', param)
|
|
113
|
+
let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${_.get(params, param)}`);
|
|
114
|
+
output.unshift(mrep);
|
|
115
|
+
return cutUrlModel(params, models, output);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// log.i('param is normal', param)
|
|
119
|
+
let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${params[param]}`);
|
|
120
|
+
output.unshift(mrep);
|
|
121
|
+
return cutUrlModel(params, models, output);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export function interpolateParamsToUrl(params, url) {
|
|
126
|
+
const regexInt = /\[\[([^\..]+\.[^\..]+)+\]\]/g;
|
|
127
|
+
url = url.split('/').map(p => {
|
|
128
|
+
// log.d('url parts', p)
|
|
129
|
+
let isParam = p.startsWith(':');
|
|
130
|
+
if (isParam) {
|
|
131
|
+
let part = p.slice(1);
|
|
132
|
+
// log.d('url param part', p)
|
|
133
|
+
if (regexInt.test(part)) {
|
|
134
|
+
// let level = (url.split('.').length - 1)
|
|
135
|
+
part = part.replace('[[', '');
|
|
136
|
+
part = part.replace(']]', '');
|
|
137
|
+
}
|
|
138
|
+
return `:${part}`;
|
|
139
|
+
}
|
|
140
|
+
return p;
|
|
141
|
+
}).join('/');
|
|
142
|
+
// log.i('URL TO EXPOSE', url)
|
|
143
|
+
// log.i('params', params)
|
|
144
|
+
let slash = {
|
|
145
|
+
start: url.charAt(0) === '\/',
|
|
146
|
+
end: url.charAt(url.length - 1) === '\/'
|
|
147
|
+
};
|
|
148
|
+
let morePramsOnEnd = url.match(/(\/:[a-zA-Z0-9\.]+){2,10}/g);
|
|
149
|
+
if (morePramsOnEnd && (Array.isArray(morePramsOnEnd) && morePramsOnEnd.length === 1)) {
|
|
150
|
+
// log.i('morePramsOnEnd', morePramsOnEnd)
|
|
151
|
+
let m = morePramsOnEnd[0];
|
|
152
|
+
let match = m.match(/\/:[a-zA-Z0-9\.]+/g);
|
|
153
|
+
// log.i('match', match)
|
|
154
|
+
match.forEach(e => {
|
|
155
|
+
let c = e.replace('\/:', '');
|
|
156
|
+
// log.i('c', c)
|
|
157
|
+
if (regexisPath.test(c)) {
|
|
158
|
+
url = url.replace(e, `/${_.get(params, c)}`);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
url = url.replace(e, `/${params[c]}`);
|
|
162
|
+
}
|
|
163
|
+
// log.i('prog url', url)
|
|
164
|
+
});
|
|
165
|
+
return url;
|
|
166
|
+
}
|
|
167
|
+
let nestedParams = url.match(/[a-zA-Z0-9]+\/:[a-zA-Z0-9\.]+/g);
|
|
168
|
+
if (!nestedParams || (Array.isArray(nestedParams) && nestedParams.length === 0))
|
|
169
|
+
return url;
|
|
170
|
+
// check alone params
|
|
171
|
+
if (!slash.end)
|
|
172
|
+
url = `${url}/`;
|
|
173
|
+
let addUndefinedForAlone = (!/:[a-zA-Z0-9\.]+\/$/g.test(url) && /[a-zA-Z0-9]+\/$/g.test(url));
|
|
174
|
+
let replace = (nestedParams.length > 1 ? nestedParams.join('\/') : nestedParams[0]) +
|
|
175
|
+
(addUndefinedForAlone ? '\/' + url.match(/[a-zA-Z0-9]+\/$/g)[0] : '\/');
|
|
176
|
+
let beginHref = url.replace(replace, '');
|
|
177
|
+
if (addUndefinedForAlone) {
|
|
178
|
+
url = url.replace(/\/$/g, '/:undefined');
|
|
179
|
+
nestedParams = url.match(/[a-zA-Z0-9]+\/:[a-zA-Z0-9\.]+/g);
|
|
180
|
+
url = cutUrlModel(params, nestedParams, []);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
url = cutUrlModel(params, nestedParams, []);
|
|
184
|
+
}
|
|
185
|
+
url = beginHref + url;
|
|
186
|
+
if (url.charAt(url.length - 1) !== '/' && slash.end)
|
|
187
|
+
url = `${url}/`;
|
|
188
|
+
if (url.charAt(0) !== '\/' && slash.start)
|
|
189
|
+
url = `/${url}`;
|
|
190
|
+
return url;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get query params from url, like 'ex' in /api/books?ex=value
|
|
194
|
+
*/
|
|
195
|
+
export function decodeUrl(url) {
|
|
196
|
+
let regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
|
|
197
|
+
while (match = regex.exec(url)) {
|
|
198
|
+
params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);
|
|
199
|
+
}
|
|
200
|
+
let paramsObject = params;
|
|
201
|
+
for (let p in paramsObject) {
|
|
202
|
+
if (paramsObject[p] === void 0) {
|
|
203
|
+
delete paramsObject[p];
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (paramsObject.hasOwnProperty(p)) {
|
|
207
|
+
// chcek if property is number
|
|
208
|
+
let n = Number(params[p]);
|
|
209
|
+
if (!isNaN(n)) {
|
|
210
|
+
params[p] = n;
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
if (typeof params[p] === 'string') {
|
|
214
|
+
// check if property is object
|
|
215
|
+
let json;
|
|
216
|
+
try {
|
|
217
|
+
json = JSON.parse(params[p]);
|
|
218
|
+
}
|
|
219
|
+
catch (error) { }
|
|
220
|
+
if (json !== void 0) {
|
|
221
|
+
params[p] = json;
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
// chcek if property value is like regular rexpression
|
|
225
|
+
// let regexExpression;
|
|
226
|
+
// try {
|
|
227
|
+
// regexExpression = new RegExp(params[p]);
|
|
228
|
+
// } catch (e) { }
|
|
229
|
+
// if (regexExpression !== undefined) params[p] = regexExpression;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return params;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Create query params string for url
|
|
237
|
+
*
|
|
238
|
+
* @export
|
|
239
|
+
* @param {UrlParams[]} params
|
|
240
|
+
* @returns {string}
|
|
241
|
+
*/
|
|
242
|
+
export function getParamsUrl(params, doNotSerialize = false) {
|
|
243
|
+
let urlparts = [];
|
|
244
|
+
if (!params)
|
|
245
|
+
return '';
|
|
246
|
+
if (!(params instanceof Array))
|
|
247
|
+
return '';
|
|
248
|
+
if (params.length === 0)
|
|
249
|
+
return '';
|
|
250
|
+
params.forEach(urlparam => {
|
|
251
|
+
if (JSON.stringify(urlparam) !== '{}') {
|
|
252
|
+
let parameters = [];
|
|
253
|
+
let paramObject = urlparam;
|
|
254
|
+
for (let p in paramObject) {
|
|
255
|
+
if (paramObject[p] === void 0)
|
|
256
|
+
delete paramObject[p];
|
|
257
|
+
if (paramObject.hasOwnProperty(p) && typeof p === 'string' && p !== 'regex' && !(paramObject[p] instanceof RegExp)) {
|
|
258
|
+
if (p.length > 0 && p[0] === '/') {
|
|
259
|
+
let newName = p.slice(1, p.length - 1);
|
|
260
|
+
urlparam[newName] = urlparam[p];
|
|
261
|
+
urlparam[p] = void 0;
|
|
262
|
+
p = newName;
|
|
263
|
+
}
|
|
264
|
+
if (p.length > 0 && p[p.length - 1] === '/') {
|
|
265
|
+
let newName = p.slice(0, p.length - 2);
|
|
266
|
+
urlparam[newName] = urlparam[p];
|
|
267
|
+
urlparam[p] = void 0;
|
|
268
|
+
p = newName;
|
|
269
|
+
}
|
|
270
|
+
let v = urlparam[p];
|
|
271
|
+
if (v instanceof Object) {
|
|
272
|
+
urlparam[p] = JSON.stringify(urlparam[p]);
|
|
273
|
+
}
|
|
274
|
+
urlparam[p] = doNotSerialize ? urlparam[p] : encodeURIComponent(urlparam[p]);
|
|
275
|
+
if (urlparam.regex !== void 0 && urlparam.regex instanceof RegExp) {
|
|
276
|
+
if (!urlparam.regex.test(urlparam[p])) {
|
|
277
|
+
console.warn(`Data: ${urlparam[p]} incostistent with regex ${urlparam.regex.source}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
parameters.push(`${p}=${urlparam[p]}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
urlparts.push(parameters.join('&'));
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
let join = urlparts.join().trim();
|
|
287
|
+
if (join.trim() === '')
|
|
288
|
+
return '';
|
|
289
|
+
return `?${urlparts.join('&')}`;
|
|
290
|
+
}
|
|
291
|
+
function transform(o) {
|
|
292
|
+
if (typeof o === 'object') {
|
|
293
|
+
return encodeURIComponent(JSON.stringify(o));
|
|
294
|
+
}
|
|
295
|
+
return o;
|
|
296
|
+
}
|
|
297
|
+
export function prepareUrlOldWay(params) {
|
|
298
|
+
if (!params)
|
|
299
|
+
return this.endpoint;
|
|
300
|
+
if (typeof params === 'object') {
|
|
301
|
+
params = transform(params);
|
|
302
|
+
}
|
|
303
|
+
return this.endpoint + '/' + params;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7QUFJNUQseUNBQXlDO0FBQ3pDLE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBZTtJQUNyQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBVyxFQUFFLE9BQWU7SUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDL0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRztRQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENB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QUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUM5QixNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBkaWZmQ2hhcnMgfSBmcm9tICdkaWZmJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ1tuZzItcmVzdF0gcGFyYW1zJywgTGV2ZWwuX19OT1RISU5HKVxuXG5cblxuLyoqIGNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHBhdHRlcm4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gKG5ldyBSZWdFeHAoJ1xcLzpbYS16QS1aXSonLCAnZycpKS50ZXN0KHBhdHRlcm4ucmVwbGFjZSgnOi8vJywgJycpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKHVybDogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFIZWxwZXJzLmNoZWNrVmFsaWRVcmwodXJsKSkge1xuICAgIGxvZy5lcnJvcihgSW5jb3JyZWN0IHVybDogJHt1cmx9YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDIpO1xuICBpZiAocGF0dGVybi5jaGFyQXQocGF0dGVybi5sZW5ndGggLSAxKSA9PT0gJy8nKSBwYXR0ZXJuID0gcGF0dGVybi5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMik7XG4gIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcLy9nLCAnXFwvJyk7XG4gIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFwvOlthLXpBLVpdKicsICdnJyksICcuKycpO1xuICBsZXQgcmVnID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCAnZycpO1xuICByZXR1cm4gcmVnLnRlc3QodXJsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVscyhwYXR0ZXJuOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGxldCBtID0gcGF0dGVybi5tYXRjaChuZXcgUmVnRXhwKCdbYS16LUEtWl0qXFwvOicsICdnJykpO1xuICByZXR1cm4gbS5tYXAocCA9PiBwLnJlcGxhY2UoJy86JywgJycpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3RQcmFtc05hbWVzKHBhdHRlcm46IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKHBhdHRlcm4uY2hhckF0KHBhdHRlcm4ubGVuZ3RoIC0gMSkgIT09ICcvJykgcGF0dGVybiA9IGAke3BhdHRlcm59L2A7XG4gIGxldCBtID0gcGF0dGVybi5tYXRjaChuZXcgUmVnRXhwKCc6W2EtekEtWl0qXFwvJywgJ2cnKSk7XG4gIGxldCByZXMgPSBtLm1hcChwID0+IHAucmVwbGFjZSgnOicsICcnKS5yZXBsYWNlKCcvJywgJycpKTtcbiAgcmV0dXJuIHJlcy5maWx0ZXIocCA9PiBwLnRyaW0oKSAhPT0gJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNNb2RlbHModXJsOiBzdHJpbmcsIG1vZGVsczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgaWYgKHVybC5jaGFyQXQoMCkgIT09ICcvJykgdXJsID0gJy8nICsgdXJsO1xuICAvLyB1cmwgPSB1cmwucmVwbGFjZShuZXcgUmVnRXhwKCdcXC8nLCAnZycpLCAnJyk7XG4gIGxldCByZXMgPSBtb2RlbHMuZmlsdGVyKG0gPT4ge1xuICAgIGxldCB3b3JkID0gJy8nICsgbTtcbiAgICAvLyBsb2cuZCgnd29yZCcsIHdvcmQpXG4gICAgbGV0IGlpaSA9IHVybC5pbmRleE9mKHdvcmQpO1xuICAgIC8vIGxvZy5kKCdpaWknLCBpaWkpXG4gICAgaWYgKGlpaSArIHdvcmQubGVuZ3RoIDwgdXJsLmxlbmd0aCAmJiB1cmwuY2hhckF0KGlpaSArIHdvcmQubGVuZ3RoKSAhPT0gJy8nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpaWkgIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwucmVwbGFjZShuZXcgUmVnRXhwKCdcXC8nICsgbSwgJ2cnKSwgJycpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSkubGVuZ3RoO1xuICAvLyBsb2cuZCgnY29udGFpbnNNb2RlbHMnLCByZXMpO1xuICByZXR1cm4gcmVzID09PSBtb2RlbHMubGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnMobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHJlcyA9ICcnO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgcmVzICs9ICcqJztcbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3RQYXJhbXModXJsOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IE9iamVjdCB7XG4gIGxldCByZXMgPSB7fTtcbiAgbGV0IG1vZGVscyA9IGdldFJlc3RQcmFtc05hbWVzKHBhdHRlcm4pO1xuICAvLyBsb2cuZCgnbW9kZWxzJywgbW9kZWxzKTtcbiAgbW9kZWxzLmZvckVhY2gobSA9PiB7XG4gICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZShgOiR7bX1gLCBzdGFycyhtLmxlbmd0aCkpO1xuICB9KVxuXG4gIGxldCBjdXJyZW50TW9kZWw6IHN0cmluZyA9IHZvaWQgMDtcbiAgZGlmZkNoYXJzKHBhdHRlcm4sIHVybCkuZm9yRWFjaChkID0+IHtcbiAgICAvLyBsb2cuZCgnZCcsIGQpO1xuICAgIGlmIChkLmFkZGVkKSB7XG4gICAgICBpZiAoIWlzTmFOKE51bWJlcihkLnZhbHVlKSkpIHJlc1tjdXJyZW50TW9kZWxdID0gTnVtYmVyKGQudmFsdWUpO1xuICAgICAgZWxzZSBpZiAoZC52YWx1ZS50cmltKCkgPT09ICd0cnVlJykgcmVzW2N1cnJlbnRNb2RlbF0gPSB0cnVlO1xuICAgICAgZWxzZSBpZiAoZC52YWx1ZS50cmltKCkgPT09ICdmYWxzZScpIHJlc1tjdXJyZW50TW9kZWxdID0gZmFsc2U7XG4gICAgICBlbHNlIHJlc1tjdXJyZW50TW9kZWxdID0gZGVjb2RlVVJJQ29tcG9uZW50KGQudmFsdWUpO1xuICAgICAgY3VycmVudE1vZGVsID0gdm9pZCAwO1xuICAgIH1cbiAgICBsZXQgbSA9IGQudmFsdWUucmVwbGFjZSgnOicsIFwiXCIpO1xuICAgIC8vIGxvZy5kKCdtb2RlbCBtJywgbSlcbiAgICBpZiAoZC5yZW1vdmVkKSB7XG4gICAgICBjdXJyZW50TW9kZWwgPSBtb2RlbHMuc2hpZnQoKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgY29uc3QgcmVnZXhpc1BhdGggPSAvW15cXC4uXSsoXFwuW15cXC4uXSspKy9nO1xuXG4vKipcbiAqIE1vZGVscyBsaWtlIGJvb2tzLzppZFxuICovXG5mdW5jdGlvbiBjdXRVcmxNb2RlbChwYXJhbXM6IE9iamVjdCwgbW9kZWxzOiBzdHJpbmdbXSwgb3V0cHV0OiBzdHJpbmdbXSkge1xuICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG91dHB1dC5qb2luKCdcXC8nKTtcbiAgbGV0IG0gPSBtb2RlbHMucG9wKCk7XG5cbiAgbGV0IHBhcmFtID0gbS5tYXRjaCgvOlthLXpBLVowLTlcXC5dKy8pWzBdLnJlcGxhY2UoJzonLCAnJyk7XG4gIGNvbnN0IHBhcmFtSXNQYXRoID0gcmVnZXhpc1BhdGgudGVzdChwYXJhbSlcbiAgLy8gbG9nLmkoJ2N1dCBwYXJhbScsIHBhcmFtKVxuICBsZXQgbW9kZWwgPSBtLm1hdGNoKC9bYS16QS1aMC05XStcXC8vKVswXS5yZXBsYWNlKCdcXC8nLCAnJyk7XG4gIGlmIChwYXJhbXMgPT09IHZvaWQgMCB8fFxuICAgIChwYXJhbUlzUGF0aCA/IF8uZ2V0KHBhcmFtcywgcGFyYW0pID09PSB2b2lkIDAgOiBwYXJhbXNbcGFyYW1dID09PSB2b2lkIDApIHx8XG4gICAgcGFyYW0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgb3V0cHV0Lmxlbmd0aCA9IDA7XG4gICAgb3V0cHV0LnVuc2hpZnQobW9kZWwpXG4gICAgcmV0dXJuIGN1dFVybE1vZGVsKHBhcmFtcywgbW9kZWxzLCBvdXRwdXQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChwYXJhbUlzUGF0aCkge1xuICAgICAgLy8gbG9nLmkoJ3BhcmFtIGlzIHBhdGgnLCBwYXJhbSlcbiAgICAgIGxldCBtcmVwID0gbS5yZXBsYWNlKG5ldyBSZWdFeHAoYDoke3BhcmFtfWAsICdnJyksIGAke18uZ2V0KHBhcmFtcywgcGFyYW0pfWApXG4gICAgICBvdXRwdXQudW5zaGlmdChtcmVwKVxuICAgICAgcmV0dXJuIGN1dFVybE1vZGVsKHBhcmFtcywgbW9kZWxzLCBvdXRwdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb2cuaSgncGFyYW0gaXMgbm9ybWFsJywgcGFyYW0pXG4gICAgICBsZXQgbXJlcCA9IG0ucmVwbGFjZShuZXcgUmVnRXhwKGA6JHtwYXJhbX1gLCAnZycpLCBgJHtwYXJhbXNbcGFyYW1dfWApXG4gICAgICBvdXRwdXQudW5zaGlmdChtcmVwKVxuICAgICAgcmV0dXJuIGN1dFVybE1vZGVsKHBhcmFtcywgbW9kZWxzLCBvdXRwdXQpO1xuICAgIH1cblxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVycG9sYXRlUGFyYW1zVG9VcmwocGFyYW1zOiBPYmplY3QsIHVybDogc3RyaW5nKTogc3RyaW5nIHtcblxuICBjb25zdCByZWdleEludCA9IC9cXFtcXFsoW15cXC4uXStcXC5bXlxcLi5dKykrXFxdXFxdL2c7XG5cbiAgdXJsID0gdXJsLnNwbGl0KCcvJykubWFwKHAgPT4ge1xuICAgIC8vIGxvZy5kKCd1cmwgcGFydHMnLCBwKVxuICAgIGxldCBpc1BhcmFtID0gcC5zdGFydHNXaXRoKCc6JylcbiAgICBpZiAoaXNQYXJhbSkge1xuICAgICAgbGV0IHBhcnQgPSBwLnNsaWNlKDEpO1xuICAgICAgLy8gbG9nLmQoJ3VybCBwYXJhbSBwYXJ0JywgcClcbiAgICAgIGlmIChyZWdleEludC50ZXN0KHBhcnQpKSB7XG4gICAgICAgIC8vIGxldCBsZXZlbCA9ICh1cmwuc3BsaXQoJy4nKS5sZW5ndGggLSAxKVxuICAgICAgICBwYXJ0ID0gcGFydC5yZXBsYWNlKCdbWycsICcnKVxuICAgICAgICBwYXJ0ID0gcGFydC5yZXBsYWNlKCddXScsICcnKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGA6JHtwYXJ0fWBcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKTtcblxuICAvLyBsb2cuaSgnVVJMIFRPIEVYUE9TRScsIHVybClcblxuICAvLyBsb2cuaSgncGFyYW1zJywgcGFyYW1zKVxuXG4gIGxldCBzbGFzaCA9IHtcbiAgICBzdGFydDogdXJsLmNoYXJBdCgwKSA9PT0gJ1xcLycsXG4gICAgZW5kOiB1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJ1xcLydcbiAgfVxuXG4gIGxldCBtb3JlUHJhbXNPbkVuZCA9IHVybC5tYXRjaCgvKFxcLzpbYS16QS1aMC05XFwuXSspezIsMTB9L2cpO1xuICBpZiAobW9yZVByYW1zT25FbmQgJiYgKEFycmF5LmlzQXJyYXkobW9yZVByYW1zT25FbmQpICYmIG1vcmVQcmFtc09uRW5kLmxlbmd0aCA9PT0gMSkpIHtcbiAgICAvLyBsb2cuaSgnbW9yZVByYW1zT25FbmQnLCBtb3JlUHJhbXNPbkVuZClcbiAgICBsZXQgbSA9IG1vcmVQcmFtc09uRW5kWzBdO1xuICAgIGxldCBtYXRjaCA9IG0ubWF0Y2goL1xcLzpbYS16QS1aMC05XFwuXSsvZyk7XG4gICAgLy8gbG9nLmkoJ21hdGNoJywgbWF0Y2gpXG4gICAgbWF0Y2guZm9yRWFjaChlID0+IHtcbiAgICAgIGxldCBjID0gZS5yZXBsYWNlKCdcXC86JywgJycpO1xuICAgICAgLy8gbG9nLmkoJ2MnLCBjKVxuICAgICAgaWYgKHJlZ2V4aXNQYXRoLnRlc3QoYykpIHtcbiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoZSwgYC8ke18uZ2V0KHBhcmFtcywgYyl9YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGUsIGAvJHtwYXJhbXNbY119YClcbiAgICAgIH1cblxuXG4gICAgICAvLyBsb2cuaSgncHJvZyB1cmwnLCB1cmwpXG4gICAgfSlcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgbGV0IG5lc3RlZFBhcmFtcyA9IHVybC5tYXRjaCgvW2EtekEtWjAtOV0rXFwvOlthLXpBLVowLTlcXC5dKy9nKTtcbiAgaWYgKCFuZXN0ZWRQYXJhbXMgfHwgKEFycmF5LmlzQXJyYXkobmVzdGVkUGFyYW1zKSAmJiBuZXN0ZWRQYXJhbXMubGVuZ3RoID09PSAwKSkgcmV0dXJuIHVybDtcblxuICAvLyBjaGVjayBhbG9uZSBwYXJhbXNcbiAgaWYgKCFzbGFzaC5lbmQpIHVybCA9IGAke3VybH0vYDtcbiAgbGV0IGFkZFVuZGVmaW5lZEZvckFsb25lID0gKCEvOlthLXpBLVowLTlcXC5dK1xcLyQvZy50ZXN0KHVybCkgJiYgL1thLXpBLVowLTldK1xcLyQvZy50ZXN0KHVybCkpO1xuXG4gIGxldCByZXBsYWNlID0gKG5lc3RlZFBhcmFtcy5sZW5ndGggPiAxID8gbmVzdGVkUGFyYW1zLmpvaW4oJ1xcLycpIDogbmVzdGVkUGFyYW1zWzBdKSArXG4gICAgKGFkZFVuZGVmaW5lZEZvckFsb25lID8gJ1xcLycgKyB1cmwubWF0Y2goL1thLXpBLVowLTldK1xcLyQvZylbMF0gOiAnXFwvJyk7XG4gIGxldCBiZWdpbkhyZWYgPSB1cmwucmVwbGFjZShyZXBsYWNlLCAnJylcblxuICBpZiAoYWRkVW5kZWZpbmVkRm9yQWxvbmUpIHtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFwvJC9nLCAnLzp1bmRlZmluZWQnKVxuICAgIG5lc3RlZFBhcmFtcyA9IHVybC5tYXRjaCgvW2EtekEtWjAtOV0rXFwvOlthLXpBLVowLTlcXC5dKy9nKTtcbiAgICB1cmwgPSBjdXRVcmxNb2RlbChwYXJhbXMsIG5lc3RlZFBhcmFtcywgW10pXG4gIH0gZWxzZSB7XG4gICAgdXJsID0gY3V0VXJsTW9kZWwocGFyYW1zLCBuZXN0ZWRQYXJhbXMsIFtdKVxuICB9XG4gIHVybCA9IGJlZ2luSHJlZiArIHVybDtcblxuICBpZiAodXJsLmNoYXJBdCh1cmwubGVuZ3RoIC0gMSkgIT09ICcvJyAmJiBzbGFzaC5lbmQpIHVybCA9IGAke3VybH0vYDtcbiAgaWYgKHVybC5jaGFyQXQoMCkgIT09ICdcXC8nICYmIHNsYXNoLnN0YXJ0KSB1cmwgPSBgLyR7dXJsfWA7XG5cbiAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBHZXQgcXVlcnkgcGFyYW1zIGZyb20gdXJsLCBsaWtlICdleCcgaW4gL2FwaS9ib29rcz9leD12YWx1ZVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVVcmwodXJsOiBzdHJpbmcpOiBPYmplY3Qge1xuICBsZXQgcmVnZXggPSAvWz8mXShbXj0jXSspPShbXiYjXSopL2csXG4gICAgcGFyYW1zID0ge30sXG4gICAgbWF0Y2g7XG4gIHdoaWxlIChtYXRjaCA9IHJlZ2V4LmV4ZWModXJsKSkge1xuICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsyXSk7XG4gIH1cbiAgbGV0IHBhcmFtc09iamVjdCA9IDxPYmplY3Q+cGFyYW1zO1xuICBmb3IgKGxldCBwIGluIHBhcmFtc09iamVjdCkge1xuICAgIGlmIChwYXJhbXNPYmplY3RbcF0gPT09IHZvaWQgMCkge1xuICAgICAgZGVsZXRlIHBhcmFtc09iamVjdFtwXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocGFyYW1zT2JqZWN0Lmhhc093blByb3BlcnR5KHApKSB7XG4gICAgICAvLyBjaGNlayBpZiBwcm9wZXJ0eSBpcyBudW1iZXJcbiAgICAgIGxldCBuID0gTnVtYmVyKHBhcmFtc1twXSk7XG4gICAgICBpZiAoIWlzTmFOKG4pKSB7XG4gICAgICAgIHBhcmFtc1twXSA9IG47XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwYXJhbXNbcF0gPT09ICdzdHJpbmcnKSB7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgcHJvcGVydHkgaXMgb2JqZWN0XG4gICAgICAgIGxldCBqc29uO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKHBhcmFtc1twXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IH1cbiAgICAgICAgaWYgKGpzb24gIT09IHZvaWQgMCkge1xuICAgICAgICAgIHBhcmFtc1twXSA9IGpzb247XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGNlayBpZiBwcm9wZXJ0eSB2YWx1ZSBpcyBsaWtlIHJlZ3VsYXIgcmV4cHJlc3Npb25cbiAgICAgICAgLy8gbGV0IHJlZ2V4RXhwcmVzc2lvbjtcbiAgICAgICAgLy8gdHJ5IHtcbiAgICAgICAgLy8gICAgIHJlZ2V4RXhwcmVzc2lvbiA9IG5ldyBSZWdFeHAocGFyYW1zW3BdKTtcbiAgICAgICAgLy8gfSBjYXRjaCAoZSkgeyB9XG4gICAgICAgIC8vIGlmIChyZWdleEV4cHJlc3Npb24gIT09IHVuZGVmaW5lZCkgcGFyYW1zW3BdID0gcmVnZXhFeHByZXNzaW9uO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG4vKipcbiAqIENyZWF0ZSBxdWVyeSBwYXJhbXMgc3RyaW5nIGZvciB1cmxcbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1VybFBhcmFtc1tdfSBwYXJhbXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXNVcmwocGFyYW1zOiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICBsZXQgdXJscGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmICghcGFyYW1zKSByZXR1cm4gJyc7XG4gIGlmICghKHBhcmFtcyBpbnN0YW5jZW9mIEFycmF5KSkgcmV0dXJuICcnO1xuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuXG4gIHBhcmFtcy5mb3JFYWNoKHVybHBhcmFtID0+IHtcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodXJscGFyYW0pICE9PSAne30nKSB7XG5cbiAgICAgIGxldCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgbGV0IHBhcmFtT2JqZWN0ID0gPE9iamVjdD51cmxwYXJhbTtcblxuXG4gICAgICBmb3IgKGxldCBwIGluIHBhcmFtT2JqZWN0KSB7XG4gICAgICAgIGlmIChwYXJhbU9iamVjdFtwXSA9PT0gdm9pZCAwKSBkZWxldGUgcGFyYW1PYmplY3RbcF07XG4gICAgICAgIGlmIChwYXJhbU9iamVjdC5oYXNPd25Qcm9wZXJ0eShwKSAmJiB0eXBlb2YgcCA9PT0gJ3N0cmluZycgJiYgcCAhPT0gJ3JlZ2V4JyAmJiAhKHBhcmFtT2JqZWN0W3BdIGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDAgJiYgcFswXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBsZXQgbmV3TmFtZSA9IHAuc2xpY2UoMSwgcC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHVybHBhcmFtW25ld05hbWVdID0gdXJscGFyYW1bcF07XG4gICAgICAgICAgICB1cmxwYXJhbVtwXSA9IHZvaWQgMDtcbiAgICAgICAgICAgIHAgPSBuZXdOYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocC5sZW5ndGggPiAwICYmIHBbcC5sZW5ndGggLSAxXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBsZXQgbmV3TmFtZSA9IHAuc2xpY2UoMCwgcC5sZW5ndGggLSAyKTtcbiAgICAgICAgICAgIHVybHBhcmFtW25ld05hbWVdID0gdXJscGFyYW1bcF07XG4gICAgICAgICAgICB1cmxwYXJhbVtwXSA9IHZvaWQgMDtcbiAgICAgICAgICAgIHAgPSBuZXdOYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdjogYW55ID0gdXJscGFyYW1bcF07XG4gICAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIHVybHBhcmFtW3BdID0gSlNPTi5zdHJpbmdpZnkodXJscGFyYW1bcF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB1cmxwYXJhbVtwXSA9IGRvTm90U2VyaWFsaXplID8gPHN0cmluZz51cmxwYXJhbVtwXSA6IGVuY29kZVVSSUNvbXBvbmVudCg8c3RyaW5nPnVybHBhcmFtW3BdKTtcbiAgICAgICAgICBpZiAodXJscGFyYW0ucmVnZXggIT09IHZvaWQgMCAmJiB1cmxwYXJhbS5yZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXG4gICAgICAgICAgICBpZiAoIXVybHBhcmFtLnJlZ2V4LnRlc3QoPHN0cmluZz51cmxwYXJhbVtwXSkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEYXRhOiAke3VybHBhcmFtW3BdfSBpbmNvc3Rpc3RlbnQgd2l0aCByZWdleCAke3VybHBhcmFtLnJlZ2V4LnNvdXJjZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGFyYW1ldGVycy5wdXNoKGAke3B9PSR7dXJscGFyYW1bcF19YCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgICB1cmxwYXJ0cy5wdXNoKHBhcmFtZXRlcnMuam9pbignJicpKTtcblxuXG4gICAgfVxuXG5cbiAgfSk7XG4gIGxldCBqb2luID0gdXJscGFydHMuam9pbigpLnRyaW0oKTtcbiAgaWYgKGpvaW4udHJpbSgpID09PSAnJykgcmV0dXJuICcnO1xuICByZXR1cm4gYD8ke3VybHBhcnRzLmpvaW4oJyYnKX1gO1xufVxuXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybShvKSB7XG4gIGlmICh0eXBlb2YgbyA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KG8pKTtcbiAgfVxuICByZXR1cm4gbztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVVybE9sZFdheShwYXJhbXM/OiBUZW1wbGF0ZVN0cmluZ3NBcnJheSk6IHN0cmluZyB7XG4gIGlmICghcGFyYW1zKSByZXR1cm4gdGhpcy5lbmRwb2ludDtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgcGFyYW1zID0gdHJhbnNmb3JtKHBhcmFtcyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuZW5kcG9pbnQgKyAnLycgKyBwYXJhbXM7XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
export class RequestCache {
|
|
7
|
+
constructor(response) {
|
|
8
|
+
this.response = response;
|
|
9
|
+
}
|
|
10
|
+
static restoreFromLocalStorage() {
|
|
11
|
+
if (Helpers.isNode) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (!RequestCache.isRestoredFromLocalStorage) {
|
|
15
|
+
RequestCache.isRestoredFromLocalStorage = true;
|
|
16
|
+
const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);
|
|
17
|
+
let requests = [];
|
|
18
|
+
if (data) {
|
|
19
|
+
try {
|
|
20
|
+
requests = JSON.parse(data);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
}
|
|
24
|
+
const restored = requests.map(r => {
|
|
25
|
+
let { sourceRequest, responseText, body, headers, circular, entity, isArray, cookies, statusCode } = r.response;
|
|
26
|
+
r.response = new Models.HttpResponse(sourceRequest, responseText, RestHeaders.from(headers), statusCode, entity, circular, -1, // jobid from local storage TODO
|
|
27
|
+
isArray);
|
|
28
|
+
r = new RequestCache(r.response);
|
|
29
|
+
r.response.rq = r;
|
|
30
|
+
return r;
|
|
31
|
+
});
|
|
32
|
+
log.i('RESTORED FROM LOCAL STORAGE', restored);
|
|
33
|
+
RequestCache.cached = restored;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
static findBy(sourceRequest) {
|
|
38
|
+
log.i('findby', sourceRequest);
|
|
39
|
+
log.i('RequestCache.cached', RequestCache.cached);
|
|
40
|
+
RequestCache.restoreFromLocalStorage();
|
|
41
|
+
return RequestCache.cached.find(c => {
|
|
42
|
+
const a = c.response.sourceRequest;
|
|
43
|
+
const b = sourceRequest;
|
|
44
|
+
return (a.isArray === b.isArray &&
|
|
45
|
+
a.url === b.url &&
|
|
46
|
+
a.method === b.method &&
|
|
47
|
+
a.body === b.body);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
get containsCache() {
|
|
51
|
+
RequestCache.restoreFromLocalStorage();
|
|
52
|
+
return RequestCache.cached.includes(this);
|
|
53
|
+
}
|
|
54
|
+
persistsInLocalStorage() {
|
|
55
|
+
localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY, JSON.stringify(RequestCache.cached.map(r => {
|
|
56
|
+
return {
|
|
57
|
+
response: {
|
|
58
|
+
sourceRequest: r.response.sourceRequest,
|
|
59
|
+
responseText: r.response.responseText,
|
|
60
|
+
headers: r.response.headers,
|
|
61
|
+
statusCode: r.response.statusCode,
|
|
62
|
+
entity: r.response.entity,
|
|
63
|
+
circular: r.response.circular,
|
|
64
|
+
isArray: r.response.isArray,
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
})));
|
|
68
|
+
}
|
|
69
|
+
store() {
|
|
70
|
+
RequestCache.restoreFromLocalStorage();
|
|
71
|
+
if (!this.containsCache) {
|
|
72
|
+
RequestCache.cached.push(this);
|
|
73
|
+
this.persistsInLocalStorage();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log('already stored');
|
|
77
|
+
}
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
remove() {
|
|
81
|
+
RequestCache.restoreFromLocalStorage();
|
|
82
|
+
const index = RequestCache.cached.indexOf(this);
|
|
83
|
+
if (index !== -1) {
|
|
84
|
+
RequestCache.cached.splice(index, 1);
|
|
85
|
+
this.persistsInLocalStorage();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.log('already removed');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
RequestCache.LOCAL_STORAGE_KEY = 'ng2restrequestcache';
|
|
93
|
+
RequestCache.cached = [];
|
|
94
|
+
RequestCache.isRestoredFromLocalStorage = false;
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXF1ZXN0LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUd4RCxNQUFNLE9BQU8sWUFBWTtJQWlFdkIsWUFDUyxRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUczQyxDQUFDO0lBOURPLE1BQU0sQ0FBQyx1QkFBdUI7UUFDcEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUU7WUFDNUMsWUFBWSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSTtvQkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW1CLENBQUM7aUJBQy9DO2dCQUFDLE9BQU8sS0FBSyxFQUFFO2lCQUVmO2dCQUNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FB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QUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOztBQS9HZSw4QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUUzQyxtQkFBTSxHQUFtQixFQUFFLENBQUM7QUFDNUIsdUNBQTBCLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXF1ZXN0LWNhY2hlJywgTGV2ZWwuX19OT1RISU5HKVxuXG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0Q2FjaGUge1xuXG4gIHN0YXRpYyByZWFkb25seSBMT0NBTF9TVE9SQUdFX0tFWSA9ICduZzJyZXN0cmVxdWVzdGNhY2hlJztcblxuICBwcml2YXRlIHN0YXRpYyBjYWNoZWQ6IFJlcXVlc3RDYWNoZVtdID0gW107XG4gIHByaXZhdGUgc3RhdGljIGlzUmVzdG9yZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgaWYgKEhlbHBlcnMuaXNOb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghUmVxdWVzdENhY2hlLmlzUmVzdG9yZWRGcm9tTG9jYWxTdG9yYWdlKSB7XG4gICAgICBSZXF1ZXN0Q2FjaGUuaXNSZXN0b3JlZEZyb21Mb2NhbFN0b3JhZ2UgPSB0cnVlO1xuICAgICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFJlcXVlc3RDYWNoZS5MT0NBTF9TVE9SQUdFX0tFWSk7XG4gICAgICBsZXQgcmVxdWVzdHM6IFJlcXVlc3RDYWNoZVtdID0gW107XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcXVlc3RzID0gSlNPTi5wYXJzZShkYXRhKSBhcyBSZXF1ZXN0Q2FjaGVbXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3RvcmVkID0gcmVxdWVzdHMubWFwKHIgPT4ge1xuICAgICAgICAgIGxldCB7IHNvdXJjZVJlcXVlc3QsIHJlc3BvbnNlVGV4dCwgYm9keSwgaGVhZGVycywgY2lyY3VsYXIsXG4gICAgICAgICAgICBlbnRpdHksIGlzQXJyYXksIGNvb2tpZXMsIHN0YXR1c0NvZGUgfSA9IHIucmVzcG9uc2U7XG4gICAgICAgICAgci5yZXNwb25zZSA9IG5ldyBNb2RlbHMuSHR0cFJlc3BvbnNlKFxuICAgICAgICAgICAgc291cmNlUmVxdWVzdCxcbiAgICAgICAgICAgIHJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgIFJlc3RIZWFkZXJzLmZyb20oaGVhZGVycyksXG4gICAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgY2lyY3VsYXIsXG4gICAgICAgICAgICAtMSwgLy8gam9iaWQgZnJvbSBsb2NhbCBzdG9yYWdlIFRPRE9cbiAgICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByID0gbmV3IFJlcXVlc3RDYWNoZShyLnJlc3BvbnNlKTtcbiAgICAgICAgICByLnJlc3BvbnNlLnJxID0gcjtcblxuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9KTtcbiAgICAgICAgbG9nLmkoJ1JFU1RPUkVEIEZST00gTE9DQUwgU1RPUkFHRScsIHJlc3RvcmVkKTtcbiAgICAgICAgUmVxdWVzdENhY2hlLmNhY2hlZCA9IHJlc3RvcmVkO1xuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmaW5kQnkoc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zKSB7XG4gICAgbG9nLmkoJ2ZpbmRieScsIHNvdXJjZVJlcXVlc3QpXG4gICAgbG9nLmkoJ1JlcXVlc3RDYWNoZS5jYWNoZWQnLCBSZXF1ZXN0Q2FjaGUuY2FjaGVkKVxuICAgIFJlcXVlc3RDYWNoZS5yZXN0b3JlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIHJldHVybiBSZXF1ZXN0Q2FjaGUuY2FjaGVkLmZpbmQoYyA9PiB7XG4gICAgICBjb25zdCBhID0gYy5yZXNwb25zZS5zb3VyY2VSZXF1ZXN0O1xuICAgICAgY29uc3QgYiA9IHNvdXJjZVJlcXVlc3Q7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBhLmlzQXJyYXkgPT09IGIuaXNBcnJheSAmJlxuICAgICAgICBhLnVybCA9PT0gYi51cmwgJiZcbiAgICAgICAgYS5tZXRob2QgPT09IGIubWV0aG9kICYmXG4gICAgICAgIGEuYm9keSA9PT0gYi5ib2R5XG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuXG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVzcG9uc2U6IE1vZGVscy5IdHRwUmVzcG9uc2U8YW55PlxuICApIHtcblxuICB9XG5cbiAgZ2V0IGNvbnRhaW5zQ2FjaGUoKSB7XG4gICAgUmVxdWVzdENhY2hlLnJlc3RvcmVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgcmV0dXJuIFJlcXVlc3RDYWNoZS5jYWNoZWQuaW5jbHVkZXModGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RzSW5Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oUmVxdWVzdENhY2hlLkxPQ0FMX1NUT1JBR0VfS0VZLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoUmVxdWVzdENhY2hlLmNhY2hlZC5tYXAociA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHNvdXJjZVJlcXVlc3Q6IHIucmVzcG9uc2Uuc291cmNlUmVxdWVzdCxcbiAgICAgICAgICAgIHJlc3BvbnNlVGV4dDogci5yZXNwb25zZS5yZXNwb25zZVRleHQsXG4gICAgICAgICAgICBoZWFkZXJzOiByLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiByLnJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBlbnRpdHk6IHIucmVzcG9uc2UuZW50aXR5LFxuICAgICAgICAgICAgY2lyY3VsYXI6IHIucmVzcG9uc2UuY2lyY3VsYXIsXG4gICAgICAgICAgICBpc0FycmF5OiByLnJlc3BvbnNlLmlzQXJyYXksXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT5cbiAgICAgICAgfTtcbiAgICAgIH0pKSk7XG4gIH1cblxuICBzdG9yZSgpIHtcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIXRoaXMuY29udGFpbnNDYWNoZSkge1xuICAgICAgUmVxdWVzdENhY2hlLmNhY2hlZC5wdXNoKHRoaXMpO1xuICAgICAgdGhpcy5wZXJzaXN0c0luTG9jYWxTdG9yYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdhbHJlYWR5IHN0b3JlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICBSZXF1ZXN0Q2FjaGUucmVzdG9yZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICBjb25zdCBpbmRleCA9IFJlcXVlc3RDYWNoZS5jYWNoZWQuaW5kZXhPZih0aGlzKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBSZXF1ZXN0Q2FjaGUuY2FjaGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnBlcnNpc3RzSW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FscmVhZHkgcmVtb3ZlZCcpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|