@opfr/utils-lang 0.14.0 → 0.15.0

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 (48) hide show
  1. package/dist/array.d.ts +2 -3
  2. package/dist/common.d.ts +0 -1
  3. package/dist/date.d.ts +0 -1
  4. package/dist/duration.d.ts +0 -1
  5. package/dist/function.d.ts +0 -1
  6. package/dist/generics.d.ts +0 -1
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.es.js +159 -2734
  9. package/dist/index.umd.cjs +1 -0
  10. package/dist/locales/fr.d.ts +0 -1
  11. package/dist/number.d.ts +0 -1
  12. package/dist/object.d.ts +0 -1
  13. package/dist/string.d.ts +0 -1
  14. package/package.json +6 -5
  15. package/dist/array.d.ts.map +0 -1
  16. package/dist/array.js +0 -84
  17. package/dist/array.js.map +0 -1
  18. package/dist/common.d.ts.map +0 -1
  19. package/dist/common.js +0 -14
  20. package/dist/common.js.map +0 -1
  21. package/dist/date.d.ts.map +0 -1
  22. package/dist/date.js +0 -63
  23. package/dist/date.js.map +0 -1
  24. package/dist/duration.d.ts.map +0 -1
  25. package/dist/duration.js +0 -34
  26. package/dist/duration.js.map +0 -1
  27. package/dist/function.d.ts.map +0 -1
  28. package/dist/function.js +0 -4
  29. package/dist/function.js.map +0 -1
  30. package/dist/generics.d.ts.map +0 -1
  31. package/dist/generics.js +0 -2
  32. package/dist/generics.js.map +0 -1
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/index.js +0 -9
  35. package/dist/index.js.map +0 -1
  36. package/dist/index.umd.js +0 -10
  37. package/dist/locales/fr.d.ts.map +0 -1
  38. package/dist/locales/fr.js +0 -85
  39. package/dist/locales/fr.js.map +0 -1
  40. package/dist/number.d.ts.map +0 -1
  41. package/dist/number.js +0 -23
  42. package/dist/number.js.map +0 -1
  43. package/dist/object.d.ts.map +0 -1
  44. package/dist/object.js +0 -25
  45. package/dist/object.js.map +0 -1
  46. package/dist/string.d.ts.map +0 -1
  47. package/dist/string.js +0 -62
  48. package/dist/string.js.map +0 -1
@@ -1,85 +0,0 @@
1
- const monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i, monthsRegex = /(janv\.?|févr\.?|avr\.?|juil\.?|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, monthsParse = [
2
- /^janv/i,
3
- /^févr/i,
4
- /^mars/i,
5
- /^avr/i,
6
- /^mai/i,
7
- /^juin/i,
8
- /^juil/i,
9
- /^août/i,
10
- /^sept/i,
11
- /^oct/i,
12
- /^nov/i,
13
- /^déc/i,
14
- ];
15
- const fr = {
16
- months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
17
- monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
18
- monthsRegex,
19
- monthsShortRegex: monthsRegex,
20
- monthsStrictRegex,
21
- monthsShortStrictRegex,
22
- monthsParse,
23
- longMonthsParse: monthsParse,
24
- shortMonthsParse: monthsParse,
25
- weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
26
- weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
27
- weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28
- weekdaysParseExact: true,
29
- longDateFormat: {
30
- LT: 'HH:mm',
31
- LTS: 'HH:mm:ss',
32
- L: 'DD/MM/YYYY',
33
- LL: 'D MMMM YYYY',
34
- LLL: 'D MMMM YYYY HH:mm',
35
- LLLL: 'dddd D MMMM YYYY HH:mm',
36
- },
37
- calendar: {
38
- sameDay: '[Aujourd’hui à] LT',
39
- nextDay: '[Demain à] LT',
40
- nextWeek: 'dddd [à] LT',
41
- lastDay: '[Hier à] LT',
42
- lastWeek: 'dddd [dernier à] LT',
43
- sameElse: 'L',
44
- },
45
- relativeTime: {
46
- future: 'dans %s',
47
- past: 'il y a %s',
48
- s: 'quelques secondes',
49
- ss: '%d secondes',
50
- m: 'une minute',
51
- mm: '%d minutes',
52
- h: 'une heure',
53
- hh: '%d heures',
54
- d: 'un jour',
55
- dd: '%d jours',
56
- w: 'une semaine',
57
- ww: '%d semaines',
58
- M: 'un mois',
59
- MM: '%d mois',
60
- y: 'un an',
61
- yy: '%d ans',
62
- },
63
- dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
64
- ordinal: ((number, period) => {
65
- switch (period) {
66
- case 'D':
67
- return number + (number === 1 ? 'er' : '');
68
- default:
69
- case 'M':
70
- case 'Q':
71
- case 'DDD':
72
- case 'd':
73
- return number + (number === 1 ? 'er' : 'e');
74
- case 'w':
75
- case 'W':
76
- return number + (number === 1 ? 're' : 'e');
77
- }
78
- }),
79
- week: {
80
- dow: 1,
81
- doy: 4,
82
- },
83
- };
84
- export default fr;
85
- //# sourceMappingURL=fr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fr.js","sourceRoot":"","sources":["../../src/locales/fr.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GACnB,0FAA0F,EAC5F,sBAAsB,GACpB,mFAAmF,EACrF,WAAW,GACT,qJAAqJ,EACvJ,WAAW,GAAG;IACZ,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC;AAEJ,MAAM,EAAE,GAAG;IACT,MAAM,EACJ,sFAAsF,CAAC,KAAK,CAC1F,GAAG,CACJ;IACH,WAAW,EACT,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7E,WAAW;IACX,gBAAgB,EAAE,WAAW;IAC7B,iBAAiB;IACjB,sBAAsB;IACtB,WAAW;IACX,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,WAAW;IAC7B,QAAQ,EAAE,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9C,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE;QACd,EAAE,EAAE,OAAO;QACX,GAAG,EAAE,UAAU;QACf,CAAC,EAAE,YAAY;QACf,EAAE,EAAE,aAAa;QACjB,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,wBAAwB;KAC/B;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,GAAG;KACd;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,CAAC,EAAE,mBAAmB;QACtB,EAAE,EAAE,aAAa;QACjB,CAAC,EAAE,YAAY;QACf,EAAE,EAAE,YAAY;QAChB,CAAC,EAAE,WAAW;QACd,EAAE,EAAE,WAAW;QACf,CAAC,EAAE,SAAS;QACZ,EAAE,EAAE,UAAU;QACd,CAAC,EAAE,aAAa;QAChB,EAAE,EAAE,aAAa;QACjB,CAAC,EAAE,SAAS;QACZ,EAAE,EAAE,SAAS;QACb,CAAC,EAAE,OAAO;QACV,EAAE,EAAE,QAAQ;KACb;IACD,sBAAsB,EAAE,cAAc;IACtC,OAAO,EAAE,CAAC,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;QAC3C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG;gBACN,OAAO,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAE7C,QAAQ;YACR,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,KAAK,CAAC;YACX,KAAK,GAAG;gBACN,OAAO,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,OAAO,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAA0B;IAC3B,IAAI,EAAE;QACJ,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP;CACF,CAAC;AAEF,eAAe,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,OAAQ,MAAM,WAEtC,CAAC;AAEF,eAAO,MAAM,aAAa,mCACnB,MAAM,OACN,MAAM,aACD,MAAM,MAAM,KACrB,CAEF,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,iBAUxC,CAAC;AAEF,eAAO,MAAM,KAAK,WAAY,MAAM,OAAO,MAAM,OAAO,MAAM,WAE7D,CAAC;AAEF,eAAO,MAAM,QAAQ,WAAY,OAAO,qBAEvC,CAAC"}
package/dist/number.js DELETED
@@ -1,23 +0,0 @@
1
- export const formatNumber = (nb) => {
2
- return new Intl.NumberFormat('de-DE').format(nb);
3
- };
4
- export const randomBetween = (min, max, randomFn = Math.random) => {
5
- return Math.floor(randomFn() * (max - min) + min);
6
- };
7
- export const seededRandom = (seed) => {
8
- let _seed = seed;
9
- const m = 0x80000000;
10
- const a = 1103515245;
11
- const c = 12345;
12
- return () => {
13
- _seed = (a * _seed + c) % m;
14
- return _seed / (m - 1);
15
- };
16
- };
17
- export const clamp = (number, min, max) => {
18
- return Math.max(min, Math.min(number, max));
19
- };
20
- export const isNumber = (number) => {
21
- return typeof number === 'number';
22
- };
23
- //# sourceMappingURL=number.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,EAAE;IACzC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,GAAW,EACX,WAAyB,IAAI,CAAC,MAAM,EACjC,EAAE;IACL,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAM,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;IAC3C,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,MAAM,CAAC,GAAG,UAAU,CAAC;IACrB,MAAM,CAAC,GAAG,UAAU,CAAC;IACrB,MAAM,CAAC,GAAG,KAAK,CAAC;IAEhB,OAAO,GAAG,EAAE;QACV,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE;IAChE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAe,EAAoB,EAAE;IAC5D,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC;AACpC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,6HAGT,MAAM,MAAM,MAAM,KAAK,MAAM,iCAe5C,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAS,OAAO,kBAEpC,CAAC;AAEF,eAAO,MAAM,UAAU,+BACf,CAAC,QACD,CAAC,EAAE,KACR,KAAK,CAAC,EAAE,CAAC,CAQX,CAAC;AAEF,eAAO,MAAM,aAAa,wCAChB,QAAQ,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC,KACpC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAgD,CAAC"}
package/dist/object.js DELETED
@@ -1,25 +0,0 @@
1
- export const mergeObjects = (obj1, obj2, mergeFn) => {
2
- const result = { ...obj1 };
3
- const entriesObj1 = Object.entries(obj1);
4
- for (const [key, value] of entriesObj1) {
5
- const v2 = obj2[key];
6
- if (v2) {
7
- result[key] = mergeFn(value, v2);
8
- }
9
- else {
10
- result[key] = value;
11
- }
12
- }
13
- return result;
14
- };
15
- export const isObject = (obj) => {
16
- return obj instanceof Object;
17
- };
18
- export const filterKeys = (data, keys) => {
19
- return keys.reduce((acc, key) => ({
20
- ...acc,
21
- [key]: data[key],
22
- }), {});
23
- };
24
- export const recordToArray = (record) => Object.entries(record);
25
- //# sourceMappingURL=object.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAA+B,EAC/B,IAAwC,EACxC,OAA2C,EAChB,EAAE;IAC7B,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAqB,CAAC;IAE7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAErB,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAiB,EAAE;IACtD,OAAO,GAAG,YAAY,MAAM,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAO,EACP,IAAS,EACG,EAAE;IACd,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,GAAG;QACN,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;KACjB,CAAC,EACF,EAAgB,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAqC,EACnB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAA4B,CAAC;AACrD,eAAO,MAAM,UAAU,QAA4B,CAAC;AAEpD,eAAO,MAAM,mBAAmB,QAAS,MAAM,cAAa,MAAM,WAEjE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,cAAa,MAAM,WAEhE,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAS,MAAM,SAAS,MAAM,WAGlD,CAAC;AAEF,eAAO,MAAM,UAAU,0BAA2B,CAAC,KAAG,WAAW,CAAC,CAEjE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAE7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAS,MAAM,YAE5C,CAAC;AAEF,eAAO,MAAM,eAAe,OAAQ,MAAM,kBAKzC,CAAC;AAEF,eAAO,MAAM,IAAI,QAAS,MAAM,KAAG,MAElC,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAAM,EAsB9C,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAS,OAAO,kBAEpC,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAKvC,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAGxC,CAAC"}
package/dist/string.js DELETED
@@ -1,62 +0,0 @@
1
- export const TIGHT_SPACE = String.fromCharCode(8202);
2
- export const WIDE_SPACE = String.fromCharCode(8201);
3
- export const fillWithTightSpaces = (str, separator = '') => {
4
- return str.split(separator).join(TIGHT_SPACE);
5
- };
6
- export const fillWithWideSpaces = (str, separator = '') => {
7
- return str.split(separator).join(WIDE_SPACE);
8
- };
9
- export const ellipsis = (str, limit) => {
10
- if (str.length > limit)
11
- return str.slice(0, limit - 3) + '...';
12
- return str;
13
- };
14
- export const capitalize = (str) => {
15
- return (str && str[0].toUpperCase() + str.slice(1));
16
- };
17
- export const capitalizeAllWords = (str) => {
18
- return str.split(' ').map(capitalize).join(' ');
19
- };
20
- export const isPositiveInteger = (str) => {
21
- return /^\d+$/.test(str);
22
- };
23
- export const numberToOrdinal = (nb) => {
24
- if (nb !== Math.round(nb) || nb < 1 || nb === Infinity || nb === -Infinity) {
25
- return null;
26
- }
27
- return nb === 1 ? '1er' : `${nb}ème`;
28
- };
29
- export const trim = (str) => {
30
- return str.trim().replace(/\s+/gi, ' ');
31
- };
32
- export const breakWords = (str) => {
33
- const words = str.split(' ');
34
- const splitByBetterSize = (words) => {
35
- let bestDiff = Infinity;
36
- for (let i = 0; i < words.length; i++) {
37
- const diff = Math.abs(words.slice(0, i + 1).join(' ').length -
38
- words.slice(i + 1).join(' ').length);
39
- if (diff <= bestDiff)
40
- bestDiff = diff;
41
- else
42
- return i - 1;
43
- }
44
- return bestDiff;
45
- };
46
- const bestSplit = splitByBetterSize(words);
47
- if (words.length === 1)
48
- return [words[0]];
49
- return [words.slice(0, bestSplit + 1), words.slice(bestSplit + 1)].map(v => v.join(' '));
50
- };
51
- export const isString = (str) => {
52
- return typeof str === 'string';
53
- };
54
- export const camelcase = (str) => {
55
- const newString = str.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase());
56
- return `${newString.charAt(0).toLowerCase()}${newString.slice(1)}`;
57
- };
58
- export const pascalCase = (str) => {
59
- const camelCased = camelcase(str);
60
- return `${camelCased.charAt(0).toUpperCase()}${camelCased.slice(1)}`;
61
- };
62
- //# sourceMappingURL=string.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"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"}