@osimatic/helpers-js 1.0.106 → 1.0.108

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/CHANGELOG CHANGED
@@ -56,4 +56,7 @@ var intlTelInputUtilsPath = 'xxx'; -> TelephoneNumber.setIntlTelInputUtilsPath('
56
56
  1.0.99
57
57
  JwtSession.isSimulationConnexion() -> JwtSession.simulateLogin() (fonctionnement différent)
58
58
  JwtSession.cancelSimulationConnexion() -> JwtSession.cancelSimulatedLogin() (fonctionnement différent)
59
- HTTPRequest -> HTTPClient
59
+ HTTPRequest -> HTTPClient
60
+
61
+ 1.0.106
62
+ UrlAndQueryString.getPath() -> UrlAndQueryString.getHostAndPath()
package/data_table.js CHANGED
@@ -204,7 +204,7 @@ class DataTable {
204
204
  queryString = queryString.includes('?') ? queryString.substring(1) : queryString;
205
205
  //console.log('new queryString', queryString);
206
206
 
207
- let newUrl = UrlAndQueryString.getPath(url) + '?' + queryString;
207
+ let newUrl = UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
208
208
  window.history.pushState("", "", newUrl);
209
209
  }
210
210
 
package/network.js CHANGED
@@ -1,130 +1,446 @@
1
- /** @deprecated */
2
- class HTTPRequest {
3
- static init() {
4
- require('whatwg-fetch'); //fetch polyfill loaded in window.fetch
1
+ class Cookie {
2
+ static set(cname, cvalue, exdays) {
3
+ var d = new Date();
4
+ d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
5
+ var expires = "expires=" + d.toUTCString();
6
+ document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
5
7
  }
6
8
 
7
- static setRefreshTokenUrl(url) {
8
- this.refreshTokenUrl = url;
9
+ static get(cname) {
10
+ var name = cname + "=";
11
+ var decodedCookie = decodeURIComponent(document.cookie);
12
+ var ca = decodedCookie.split(';');
13
+ for (var i = 0; i < ca.length; i++) {
14
+ var c = ca[i];
15
+ while (c.charAt(0) == ' ') {
16
+ c = c.substring(1);
17
+ }
18
+ if (c.indexOf(name) === 0) {
19
+ return c.substring(name.length, c.length);
20
+ }
21
+ }
22
+ return null;
9
23
  }
10
24
 
11
- static setRefreshTokenCallback(callback) {
12
- this.refreshTokenCallback = callback;
25
+ static erase(name) {
26
+ Cookie.set(name, "", -1);
13
27
  }
28
+ }
14
29
 
15
- static getHeaders(asObject) {
16
- if (typeof this.headers == 'undefined') {
17
- this.headers = {};
18
- }
30
+ class UrlAndQueryString {
31
+ static displayUrl(url, withLink) {
32
+ withLink = typeof withLink == 'undefined' ? true : withLink;
33
+ return (withLink?'<a href="'+url+'">':'')+UrlAndQueryString.getHost(url, false)+(withLink?'</a>':'');
34
+ }
35
+ static displayUrlAndPath(url, withLink) {
36
+ withLink = typeof withLink == 'undefined' ? true : withLink;
37
+ return (withLink?'<a href="'+url+'">':'')+UrlAndQueryString.getHostAndPath(url, false)+(withLink?'</a>':'');
38
+ }
19
39
 
20
- if (typeof asObject != 'undefined' && asObject) {
21
- return this.headers;
40
+ static getHost(url, withProtocol) {
41
+ withProtocol = typeof withProtocol == 'undefined' ? true : withProtocol;
42
+ if (typeof url == 'undefined') {
43
+ return withProtocol ? window.location.origin : window.location.host;
22
44
  }
45
+ url = new URL(url);
46
+ return (withProtocol?url.protocol+'//':'') + url.host;
47
+ }
23
48
 
24
- let httpHeaders = new Headers();
25
- Object.entries(this.headers).forEach(([key, value]) => {
26
- httpHeaders.append(key, value);
27
- });
28
-
29
- return httpHeaders;
49
+ static getPath(url) {
50
+ if (typeof url == 'undefined') {
51
+ return window.location.pathname;
52
+ }
53
+ url = new URL(url);
54
+ return url.pathname;
30
55
  }
31
56
 
32
- static getHeader(key) {
33
- if (typeof this.headers == 'undefined') {
34
- this.headers = {};
57
+ static getQueryString(url) {
58
+ if (typeof url == 'undefined') {
59
+ return window.location.search;
35
60
  }
61
+ url = new URL(url);
62
+ return url.search;
63
+ }
36
64
 
37
- return this.headers[key];
65
+ static getHostAndPath(url, withProtocol) {
66
+ return UrlAndQueryString.getHost(url, withProtocol) + UrlAndQueryString.getPath(url);
67
+
68
+ //let strpos = url.indexOf('?');
69
+ //if (strpos === -1) {
70
+ // return url;
71
+ //}
72
+ //return url.substr(0, strpos);
38
73
  }
39
74
 
40
- static setHeader(key, value) {
41
- if (typeof this.headers == 'undefined') {
42
- this.headers = {};
43
- }
44
-
45
- this.headers[key] = value;
75
+ static getParam(key, url) {
76
+ let searchParams = new URLSearchParams(UrlAndQueryString.getQueryString(url));
77
+ return searchParams.get(key);
46
78
  }
47
79
 
48
- static setAuthorizationHeader(accessToken) {
49
- if (typeof this.headers == 'undefined') {
50
- this.headers = {};
51
- }
80
+ static setParam(queryString, name, value) {
81
+ // cette solution ne fonctionne pas avec les tableau
82
+ //let params = new URLSearchParams(queryString);
83
+ //params.set(name, value);
84
+ //return params.toString();
52
85
 
53
- this.headers['Authorization'] = 'Bearer ' + accessToken;
86
+ let params = UrlAndQueryString.parseQuery(queryString);
87
+ //console.log(params);
88
+ params[name] = value;
89
+ return decodeURI($.param(params));
90
+ }
91
+ static setParamOfUrl(name, value, url) {
92
+ let queryString = UrlAndQueryString.setParam(UrlAndQueryString.getQueryString(url), name, value);
93
+ return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
54
94
  }
55
95
 
56
- static convertObjectToFormData(obj) {
57
- // 30/05/2022 : ancienne version, qui ne fonctionne pas avec des tableaux
58
- // let formData = new FormData();
59
- // Object.entries(data).forEach(([key, value]) => formData.append(key, value));
60
- // return formData;
96
+ static deleteParam(queryString, name) {
97
+ let params = new URLSearchParams(queryString);
98
+ params.delete(name);
99
+ return decodeURI(params.toString());
61
100
 
62
- var formData = new FormData();
101
+ //let params = UrlAndQueryString.parseQuery(queryString);
102
+ //params[name] = null;
103
+ //return $.param(params);
104
+ }
105
+ static deleteParamOfUrl(name, url) {
106
+ let queryString = UrlAndQueryString.deleteParam(UrlAndQueryString.getQueryString(url), name);
107
+ return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
108
+ }
109
+ static deleteParamsOfUrl(names, url) {
110
+ let queryString = UrlAndQueryString.getQueryString(url);
111
+ names.forEach((name => queryString = UrlAndQueryString.deleteParam(queryString, name)));
112
+ return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
113
+ }
63
114
 
64
- function appendFormData(data, root) {
65
- //console.log('appendFormData', data, root);
66
- root = root || '';
67
- if (data instanceof File) {
68
- formData.append(root, data);
115
+ static parseQuery(queryString) {
116
+ var params = {};
117
+
118
+ function buildParamFromString(param) {
119
+ var p = decodeURIComponent(param);
120
+ var strpos = p.indexOf('=');
121
+ // Si on trouve pas de signe =, on met la valeur ''
122
+ if (strpos === -1) {
123
+ params[p] = '';
124
+ //params.length++;
125
+ return true;
69
126
  }
70
- else if (Array.isArray(data)) {
71
- for (var i = 0; i < data.length; i++) {
72
- appendFormData(data[i], root + '[' + i + ']');
127
+ var name = p.substr(0, strpos);
128
+ var value = p.substr(strpos + 1, p.length);
129
+ var openBracket = name.indexOf('[');
130
+ var closeBracket = name.indexOf(']');
131
+ // On traite les paramètre qui ne sont pas sous forme de tableau
132
+ if (openBracket === -1 || closeBracket === -1) {
133
+ if (!(openBracket === -1 && closeBracket === -1)) {
134
+ name = name.replace(new RegExp('[\\[\\]]'), '_');
73
135
  }
136
+ params[name] = value;
137
+ return true;
74
138
  }
75
- else if (typeof data === 'object' && data) {
76
- for (var key in data) {
77
- if (data.hasOwnProperty(key)) {
78
- if (root === '') {
79
- appendFormData(data[key], key);
80
- } else {
81
- appendFormData(data[key], root + '.' + key);
82
- }
139
+ var matches = name.match(new RegExp('\\[.*?\\]', 'g'));
140
+ name = name.substr(0, openBracket);
141
+ p = 'params';
142
+ var key = name;
143
+ for (let i in matches) {
144
+ if (typeof (matches[i]) == 'function') {
145
+ continue;
146
+ }
147
+
148
+ p += '[\'' + key + '\']';
149
+ if (eval(p) == undefined || typeof (eval(p)) != 'object') {
150
+ eval(p + '= new Array();');
151
+ }
152
+ key = matches[i].substr(1, matches[i].length - 2);
153
+ // si la clé est null on met la longueur du tableau
154
+ if (key == '') {
155
+ key = eval(p).length;
156
+ }
157
+
158
+ /*
159
+ p += '[\''+key+'\']';
160
+ if(eval(p) == undefined || typeof(eval(p)) != 'object') {
161
+ eval(p +'= new Array();');
162
+ }
163
+ if (typeof(matches[i]) != 'function') {
164
+ key = matches[i].substr(1,matches[i].length-2);
165
+ // si la clé est null on met la longueur du tableau
166
+ if (key == '') {
167
+ key = eval(p).length;
83
168
  }
84
169
  }
85
- }
86
- else {
87
- if (data !== null && typeof data !== 'undefined') {
88
- formData.append(root, data);
170
+ else {
171
+ key = eval(p).length;
89
172
  }
173
+ */
90
174
  }
175
+ p += '[\'' + key + '\']';
176
+ eval(p + '= \'' + value + '\';');
91
177
  }
92
178
 
93
- appendFormData(obj);
94
-
95
- return formData;
96
- }
97
-
98
- static formatQueryString(data) {
99
- if (data == null) {
100
- return '';
179
+ var str = queryString;
180
+ if (str.includes('?')) {
181
+ str = str.substring(1);
101
182
  }
102
- if (typeof data == 'object') {
103
- data = UrlAndQueryString.buildQuery(data);
183
+ if (str === '') {
184
+ return {};
104
185
  }
105
- if (data !== '' && data.substring(0, 1) !== '&') {
106
- data = '&' + data;
186
+ str = str.replace(new RegExp('&'), '&');
187
+ //params.length = 0;
188
+ str = str.split('&');
189
+ //var p = '';
190
+ //var startPos = -1;
191
+ //var endPos = -1;
192
+ //var arrayName = '';
193
+ //var arrayKey = '';
194
+ for (let i = 0; i < str.length; i++) {
195
+ buildParamFromString(str[i]);
107
196
  }
108
- return data;
197
+ // return JSON.parse(JSON.stringify(this.params));
198
+ return params;
109
199
  }
110
200
 
111
- static formatFormData(data) {
112
- if (!(data instanceof FormData)) {
113
- return HTTPRequest.convertObjectToFormData(data);
201
+ static buildQuery(object) {
202
+ var params = [];
203
+
204
+ function buildStringFromParam(object, prefix) {
205
+ var p = '';
206
+ var value = '';
207
+ if (prefix !== undefined) {
208
+ p = prefix;
209
+ }
210
+ if (typeof (object) == 'object') {
211
+ for (var name in object) {
212
+ value = object[name];
213
+ // 06/06/2022 : ajout de ce if pour éviter bug sur fonction HTTPRequest.formatQueryString
214
+ if (typeof (value) == 'undefined') {
215
+ continue;
216
+ }
217
+ // 14/01/2020 : les tableaux avec param[0], param[1] en query string fonctionne pas, il faut mettre param[]=x&param[]=y
218
+ //name = p == '' ? name : '['+name+']';
219
+ name = p == '' ? name : '[]';
220
+ if (typeof (value) == 'object') {
221
+ buildStringFromParam(value, p + name);
222
+ }
223
+ // 06/06/2022 : ajout null !== value pour éviter bug sur fonction HTTPRequest.formatQueryString
224
+ else if (null !== value && typeof (value) != 'function' && name != '') {
225
+ // 27/01/2020 : correction bug boolean affiché en string true/false
226
+ if (typeof (value) == 'boolean') {
227
+ value = (value ? 1 : 0);
228
+ }
229
+ params[params.length] = p + name + '=' + value;
230
+ }
231
+ }
232
+ }
114
233
  }
115
- return data;
116
- }
117
234
 
118
- static logRequestFailure(response, json) {
119
- console.error('Request failure. Status: '+response.statusText+' ; HTTP Code : '+response.status, json);
235
+ buildStringFromParam(object);
236
+ return params.join('&');
120
237
  }
121
238
 
122
- static logJqueryRequestFailure(jqxhr, status, errorThrown) {
123
- console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.status+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
124
- }
125
239
 
126
- static isExpiredToken(response, json) {
127
- if (response.status !== 401) {
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+ // deprecated
258
+
259
+ /** @deprecated **/
260
+ static parseQueryString(string) {
261
+ if (string === "" || string == null) return {};
262
+ if (string.charAt(0) === "?") string = string.slice(1);
263
+ var entries = string.split("&"), counters = {}, data0 = {};
264
+ for (var i = 0; i < entries.length; i++) {
265
+ var entry = entries[i].split("=");
266
+ var key5 = decodeURIComponent(entry[0]);
267
+ var value2 = entry.length === 2 ? decodeURIComponent(entry[1]) : "";
268
+ if (value2 === "true") value2 = true;
269
+ else if (value2 === "false") value2 = false;
270
+ var levels = key5.split(/\]\[?|\[/);
271
+ var cursor = data0;
272
+ if (key5.indexOf("[") > -1) levels.pop();
273
+ for (var j0 = 0; j0 < levels.length; j0++) {
274
+ var level = levels[j0], nextLevel = levels[j0 + 1];
275
+ var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10));
276
+ if (level === "") {
277
+ var key5 = levels.slice(0, j0).join();
278
+ if (counters[key5] == null) {
279
+ counters[key5] = Array.isArray(cursor) ? cursor.length : 0;
280
+ }
281
+ level = counters[key5]++;
282
+ }
283
+ // Disallow direct prototype pollution
284
+ else if (level === "__proto__") break;
285
+ if (j0 === levels.length - 1) cursor[level] = value2;
286
+ else {
287
+ // Read own properties exclusively to disallow indirect
288
+ // prototype pollution
289
+ var desc = Object.getOwnPropertyDescriptor(cursor, level);
290
+ if (desc != null) desc = desc.value;
291
+ if (desc == null) cursor[level] = desc = isNumber ? [] : {};
292
+ cursor = desc;
293
+ }
294
+ }
295
+ }
296
+ return data0;
297
+ }
298
+
299
+ /** @deprecated **/
300
+ static getQuery(url) {
301
+ var str = url;
302
+ var strpos = str.indexOf('?');
303
+ // Si on ne trouve pas de queryString on retourne une chaine vide
304
+ if (strpos === -1) {
305
+ return '';
306
+ }
307
+ str = str.substr(strpos + 1, str.length);
308
+ // Maintenant on verifie si on a une anchor ou pas (#) et si c'est le cas on arrete la querystring avant
309
+ strpos = str.indexOf('#');
310
+ if (strpos === -1) {
311
+ return str;
312
+ }
313
+ return str.substr(0, strpos);
314
+ }
315
+
316
+ }
317
+ /** @deprecated */
318
+ class HTTPRequest {
319
+ static init() {
320
+ require('whatwg-fetch'); //fetch polyfill loaded in window.fetch
321
+ }
322
+
323
+ static setRefreshTokenUrl(url) {
324
+ this.refreshTokenUrl = url;
325
+ }
326
+
327
+ static setRefreshTokenCallback(callback) {
328
+ this.refreshTokenCallback = callback;
329
+ }
330
+
331
+ static getHeaders(asObject) {
332
+ if (typeof this.headers == 'undefined') {
333
+ this.headers = {};
334
+ }
335
+
336
+ if (typeof asObject != 'undefined' && asObject) {
337
+ return this.headers;
338
+ }
339
+
340
+ let httpHeaders = new Headers();
341
+ Object.entries(this.headers).forEach(([key, value]) => {
342
+ httpHeaders.append(key, value);
343
+ });
344
+
345
+ return httpHeaders;
346
+ }
347
+
348
+ static getHeader(key) {
349
+ if (typeof this.headers == 'undefined') {
350
+ this.headers = {};
351
+ }
352
+
353
+ return this.headers[key];
354
+ }
355
+
356
+ static setHeader(key, value) {
357
+ if (typeof this.headers == 'undefined') {
358
+ this.headers = {};
359
+ }
360
+
361
+ this.headers[key] = value;
362
+ }
363
+
364
+ static setAuthorizationHeader(accessToken) {
365
+ if (typeof this.headers == 'undefined') {
366
+ this.headers = {};
367
+ }
368
+
369
+ this.headers['Authorization'] = 'Bearer ' + accessToken;
370
+ }
371
+
372
+ static convertObjectToFormData(obj) {
373
+ // 30/05/2022 : ancienne version, qui ne fonctionne pas avec des tableaux
374
+ // let formData = new FormData();
375
+ // Object.entries(data).forEach(([key, value]) => formData.append(key, value));
376
+ // return formData;
377
+
378
+ var formData = new FormData();
379
+
380
+ function appendFormData(data, root) {
381
+ //console.log('appendFormData', data, root);
382
+ root = root || '';
383
+ if (data instanceof File) {
384
+ formData.append(root, data);
385
+ }
386
+ else if (Array.isArray(data)) {
387
+ for (var i = 0; i < data.length; i++) {
388
+ appendFormData(data[i], root + '[' + i + ']');
389
+ }
390
+ }
391
+ else if (typeof data === 'object' && data) {
392
+ for (var key in data) {
393
+ if (data.hasOwnProperty(key)) {
394
+ if (root === '') {
395
+ appendFormData(data[key], key);
396
+ } else {
397
+ appendFormData(data[key], root + '.' + key);
398
+ }
399
+ }
400
+ }
401
+ }
402
+ else {
403
+ if (data !== null && typeof data !== 'undefined') {
404
+ formData.append(root, data);
405
+ }
406
+ }
407
+ }
408
+
409
+ appendFormData(obj);
410
+
411
+ return formData;
412
+ }
413
+
414
+ static formatQueryString(data) {
415
+ if (data == null) {
416
+ return '';
417
+ }
418
+ if (typeof data == 'object') {
419
+ data = UrlAndQueryString.buildQuery(data);
420
+ }
421
+ if (data !== '' && data.substring(0, 1) !== '&') {
422
+ data = '&' + data;
423
+ }
424
+ return data;
425
+ }
426
+
427
+ static formatFormData(data) {
428
+ if (!(data instanceof FormData)) {
429
+ return HTTPRequest.convertObjectToFormData(data);
430
+ }
431
+ return data;
432
+ }
433
+
434
+ static logRequestFailure(response, json) {
435
+ console.error('Request failure. Status: '+response.statusText+' ; HTTP Code : '+response.status, json);
436
+ }
437
+
438
+ static logJqueryRequestFailure(jqxhr, status, errorThrown) {
439
+ console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.status+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
440
+ }
441
+
442
+ static isExpiredToken(response, json) {
443
+ if (response.status !== 401) {
128
444
  return false;
129
445
  }
130
446
 
@@ -400,7 +716,7 @@ class HTTPRequest {
400
716
  HTTPRequest.setAuthorizationHeader(JwtSession.getToken());
401
717
 
402
718
  onCompleteCallback();
403
- },
719
+ },
404
720
  () => {
405
721
  JwtSession.logout();
406
722
  errorCallback();
@@ -451,297 +767,4 @@ class HTTPRequest {
451
767
  }
452
768
  }
453
769
 
454
- class Cookie {
455
- static set(cname, cvalue, exdays) {
456
- var d = new Date();
457
- d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
458
- var expires = "expires=" + d.toUTCString();
459
- document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
460
- }
461
-
462
- static get(cname) {
463
- var name = cname + "=";
464
- var decodedCookie = decodeURIComponent(document.cookie);
465
- var ca = decodedCookie.split(';');
466
- for (var i = 0; i < ca.length; i++) {
467
- var c = ca[i];
468
- while (c.charAt(0) == ' ') {
469
- c = c.substring(1);
470
- }
471
- if (c.indexOf(name) === 0) {
472
- return c.substring(name.length, c.length);
473
- }
474
- }
475
- return null;
476
- }
477
-
478
- static erase(name) {
479
- Cookie.set(name, "", -1);
480
- }
481
- }
482
-
483
- class UrlAndQueryString {
484
- static getPath(url) {
485
- if (typeof url == 'undefined') {
486
- return window.location.origin + window.location.pathname;
487
- }
488
- let strpos = url.indexOf('?');
489
- // Si on ne trouve pas de queryString on retourne une chaine vide
490
- if (strpos === -1) {
491
- return url;
492
- }
493
- return url.substr(0, strpos);
494
- }
495
-
496
- static getQueryString(url) {
497
- if (typeof url == 'undefined') {
498
- return window.location.search;
499
- }
500
- let urlObj = new URL(url);
501
- return urlObj.search;
502
- }
503
-
504
- static getParam(key, url) {
505
- var searchParams = new URLSearchParams(UrlAndQueryString.getQueryString(url));
506
- return searchParams.get(key);
507
- }
508
-
509
- static setParam(queryString, name, value) {
510
- // cette solution ne fonctionne pas avec les tableau
511
- //let params = new URLSearchParams(queryString);
512
- //params.set(name, value);
513
- //return params.toString();
514
-
515
- let params = UrlAndQueryString.parseQuery(queryString);
516
- //console.log(params);
517
- params[name] = value;
518
- return decodeURI($.param(params));
519
- }
520
- static setParamOfUrl(name, value, url) {
521
- let queryString = UrlAndQueryString.setParam(UrlAndQueryString.getQueryString(url), name, value);
522
- return UrlAndQueryString.getPath(url) + '?' + queryString;
523
- }
524
-
525
- static deleteParam(queryString, name) {
526
- let params = new URLSearchParams(queryString);
527
- params.delete(name);
528
- return decodeURI(params.toString());
529
-
530
- //let params = UrlAndQueryString.parseQuery(queryString);
531
- //params[name] = null;
532
- //return $.param(params);
533
- }
534
- static deleteParamOfUrl(name, url) {
535
- let queryString = UrlAndQueryString.deleteParam(UrlAndQueryString.getQueryString(url), name);
536
- return UrlAndQueryString.getPath(url) + '?' + queryString;
537
- }
538
- static deleteParamsOfUrl(names, url) {
539
- let queryString = UrlAndQueryString.getQueryString(url);
540
- names.forEach((name => queryString = UrlAndQueryString.deleteParam(queryString, name)));
541
- return UrlAndQueryString.getPath(url) + '?' + queryString;
542
- }
543
-
544
- static parseQuery(queryString) {
545
- var params = {};
546
-
547
- function buildParamFromString(param) {
548
- var p = decodeURIComponent(param);
549
- var strpos = p.indexOf('=');
550
- // Si on trouve pas de signe =, on met la valeur ''
551
- if (strpos === -1) {
552
- params[p] = '';
553
- //params.length++;
554
- return true;
555
- }
556
- var name = p.substr(0, strpos);
557
- var value = p.substr(strpos + 1, p.length);
558
- var openBracket = name.indexOf('[');
559
- var closeBracket = name.indexOf(']');
560
- // On traite les paramètre qui ne sont pas sous forme de tableau
561
- if (openBracket === -1 || closeBracket === -1) {
562
- if (!(openBracket === -1 && closeBracket === -1)) {
563
- name = name.replace(new RegExp('[\\[\\]]'), '_');
564
- }
565
- params[name] = value;
566
- return true;
567
- }
568
- var matches = name.match(new RegExp('\\[.*?\\]', 'g'));
569
- name = name.substr(0, openBracket);
570
- p = 'params';
571
- var key = name;
572
- for (let i in matches) {
573
- if (typeof (matches[i]) == 'function') {
574
- continue;
575
- }
576
-
577
- p += '[\'' + key + '\']';
578
- if (eval(p) == undefined || typeof (eval(p)) != 'object') {
579
- eval(p + '= new Array();');
580
- }
581
- key = matches[i].substr(1, matches[i].length - 2);
582
- // si la clé est null on met la longueur du tableau
583
- if (key == '') {
584
- key = eval(p).length;
585
- }
586
-
587
- /*
588
- p += '[\''+key+'\']';
589
- if(eval(p) == undefined || typeof(eval(p)) != 'object') {
590
- eval(p +'= new Array();');
591
- }
592
- if (typeof(matches[i]) != 'function') {
593
- key = matches[i].substr(1,matches[i].length-2);
594
- // si la clé est null on met la longueur du tableau
595
- if (key == '') {
596
- key = eval(p).length;
597
- }
598
- }
599
- else {
600
- key = eval(p).length;
601
- }
602
- */
603
- }
604
- p += '[\'' + key + '\']';
605
- eval(p + '= \'' + value + '\';');
606
- }
607
-
608
- var str = queryString;
609
- if (str.includes('?')) {
610
- str = str.substring(1);
611
- }
612
- if (str === '') {
613
- return {};
614
- }
615
- str = str.replace(new RegExp('&'), '&');
616
- //params.length = 0;
617
- str = str.split('&');
618
- //var p = '';
619
- //var startPos = -1;
620
- //var endPos = -1;
621
- //var arrayName = '';
622
- //var arrayKey = '';
623
- for (let i = 0; i < str.length; i++) {
624
- buildParamFromString(str[i]);
625
- }
626
- // return JSON.parse(JSON.stringify(this.params));
627
- return params;
628
- }
629
-
630
- static buildQuery(object) {
631
- var params = [];
632
-
633
- function buildStringFromParam(object, prefix) {
634
- var p = '';
635
- var value = '';
636
- if (prefix !== undefined) {
637
- p = prefix;
638
- }
639
- if (typeof (object) == 'object') {
640
- for (var name in object) {
641
- value = object[name];
642
- // 06/06/2022 : ajout de ce if pour éviter bug sur fonction HTTPRequest.formatQueryString
643
- if (typeof (value) == 'undefined') {
644
- continue;
645
- }
646
- // 14/01/2020 : les tableaux avec param[0], param[1] en query string fonctionne pas, il faut mettre param[]=x&param[]=y
647
- //name = p == '' ? name : '['+name+']';
648
- name = p == '' ? name : '[]';
649
- if (typeof (value) == 'object') {
650
- buildStringFromParam(value, p + name);
651
- }
652
- // 06/06/2022 : ajout null !== value pour éviter bug sur fonction HTTPRequest.formatQueryString
653
- else if (null !== value && typeof (value) != 'function' && name != '') {
654
- // 27/01/2020 : correction bug boolean affiché en string true/false
655
- if (typeof (value) == 'boolean') {
656
- value = (value ? 1 : 0);
657
- }
658
- params[params.length] = p + name + '=' + value;
659
- }
660
- }
661
- }
662
- }
663
-
664
- buildStringFromParam(object);
665
- return params.join('&');
666
- }
667
-
668
-
669
-
670
-
671
-
672
-
673
-
674
-
675
-
676
-
677
-
678
-
679
-
680
-
681
-
682
-
683
-
684
-
685
-
686
- // deprecated
687
-
688
- /** @deprecated **/
689
- static parseQueryString(string) {
690
- if (string === "" || string == null) return {};
691
- if (string.charAt(0) === "?") string = string.slice(1);
692
- var entries = string.split("&"), counters = {}, data0 = {};
693
- for (var i = 0; i < entries.length; i++) {
694
- var entry = entries[i].split("=");
695
- var key5 = decodeURIComponent(entry[0]);
696
- var value2 = entry.length === 2 ? decodeURIComponent(entry[1]) : "";
697
- if (value2 === "true") value2 = true;
698
- else if (value2 === "false") value2 = false;
699
- var levels = key5.split(/\]\[?|\[/);
700
- var cursor = data0;
701
- if (key5.indexOf("[") > -1) levels.pop();
702
- for (var j0 = 0; j0 < levels.length; j0++) {
703
- var level = levels[j0], nextLevel = levels[j0 + 1];
704
- var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10));
705
- if (level === "") {
706
- var key5 = levels.slice(0, j0).join();
707
- if (counters[key5] == null) {
708
- counters[key5] = Array.isArray(cursor) ? cursor.length : 0;
709
- }
710
- level = counters[key5]++;
711
- }
712
- // Disallow direct prototype pollution
713
- else if (level === "__proto__") break;
714
- if (j0 === levels.length - 1) cursor[level] = value2;
715
- else {
716
- // Read own properties exclusively to disallow indirect
717
- // prototype pollution
718
- var desc = Object.getOwnPropertyDescriptor(cursor, level);
719
- if (desc != null) desc = desc.value;
720
- if (desc == null) cursor[level] = desc = isNumber ? [] : {};
721
- cursor = desc;
722
- }
723
- }
724
- }
725
- return data0;
726
- }
727
-
728
- /** @deprecated **/
729
- static getQuery(url) {
730
- var str = url;
731
- var strpos = str.indexOf('?');
732
- // Si on ne trouve pas de queryString on retourne une chaine vide
733
- if (strpos === -1) {
734
- return '';
735
- }
736
- str = str.substr(strpos + 1, str.length);
737
- // Maintenant on verifie si on a une anchor ou pas (#) et si c'est le cas on arrete la querystring avant
738
- strpos = str.indexOf('#');
739
- if (strpos === -1) {
740
- return str;
741
- }
742
- return str.substr(0, strpos);
743
- }
744
-
745
- }
746
-
747
770
  module.exports = { HTTPRequest, Cookie, UrlAndQueryString };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osimatic/helpers-js",
3
- "version": "1.0.106",
3
+ "version": "1.0.108",
4
4
  "main": "main.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"