@opfr/utils-lang 0.17.0 → 1.0.1

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/dist/array.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export declare const paginate: <T>(array: T[], pageSize: number) => T[][];
2
2
  export declare const groupBy: <T extends object, K extends string | number>(array: T[], key: (i: T) => K) => Record<K, T[]>;
3
- export declare const groupByOccurrence: <T extends string | number | object, K extends string | number>(array: T[], key: (i: T) => K) => [K, number][];
3
+ export declare const groupByOccurrence: <T extends object | string | number, K extends string | number>(array: T[], key: (i: T) => K) => [K, number][];
4
4
  export declare const sortBy: <T extends object, K extends string | number>(array: T[], key: (i: T) => K) => T[];
5
- export declare const mutuallyInclusive: <T>(array1: T[], array2: T[], key?: (i: T) => string | number | T) => T[];
6
- export declare const exclude: <T>(array: T[], exclude: T[], key?: (i: T) => string | number | T) => T[];
5
+ export declare const mutuallyInclusive: <T>(array1: T[], array2: T[], key?: (i: T) => T | string | number) => T[];
6
+ export declare const exclude: <T>(array: T[], exclude: T[], key?: (i: T) => T | string | number) => T[];
7
7
  export declare const unique: <T extends object, K extends string | number>(array: T[], key: (i: T) => K) => K[];
8
8
  export declare const uniquePreserve: <T extends object, K extends string | number>(array: T[], key: (i: T) => K) => T[];
9
9
  export declare const shuffle: <T>(array: T[]) => T[];
package/dist/index.es.js CHANGED
@@ -1,18 +1,18 @@
1
1
  import u from "moment";
2
- const w = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.random) => Math.floor(r() * (t - e) + e), L = (e) => {
2
+ const S = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.random) => Math.floor(r() * (t - e) + e), L = (e) => {
3
3
  let t = e;
4
4
  const r = 2147483648, n = 1103515245, s = 12345;
5
5
  return () => (t = (n * t + s) % r, t / (r - 1));
6
- }, I = (e, t, r) => Math.max(t, Math.min(e, r)), T = (e) => typeof e == "number", $ = (e, t) => e.reduce((r, n, s) => {
6
+ }, I = (e, t, r) => Math.max(t, Math.min(e, r)), T = (e) => typeof e == "number", x = (e, t) => e.reduce((r, n, s) => {
7
7
  const o = Math.floor(s / t);
8
8
  return (r[o] || (r[o] = [])).push(n), r;
9
- }, []), x = (e, t) => e.reduce(
9
+ }, []), C = (e, t) => e.reduce(
10
10
  (r, n) => ((r[t(n)] = r[t(n)] || []).push(n), r),
11
11
  {}
12
- ), A = (e, t) => e.reduce((r, n) => r.find(([s]) => s === t(n)) ? r.map(([s, o]) => [
12
+ ), $ = (e, t) => e.reduce((r, n) => r.find(([s]) => s === t(n)) ? r.map(([s, o]) => [
13
13
  s,
14
14
  s === t(n) ? o + 1 : o
15
- ]) : [...r, [t(n), 1]], []), C = (e, t) => [...e].sort((r, n) => t(r) < t(n) ? -1 : t(r) > t(n) ? 1 : 0), E = (e, t, r = (n) => n) => e.filter((n) => t.some((s) => r(s) === r(n))), O = (e, t, r = (n) => n) => e.filter((n) => !t.some((s) => r(s) === r(n))), P = (e, t) => [...new Set(e.map((r) => t(r)))], H = (e, t) => e.filter(
15
+ ]) : [...r, [t(n), 1]], []), A = (e, t) => [...e].sort((r, n) => t(r) < t(n) ? -1 : t(r) > t(n) ? 1 : 0), E = (e, t, r = (n) => n) => e.filter((n) => t.some((s) => r(s) === r(n))), O = (e, t, r = (n) => n) => e.filter((n) => !t.some((s) => r(s) === r(n))), P = (e, t) => [...new Set(e.map((r) => t(r)))], H = (e, t) => e.filter(
16
16
  (r, n, s) => n === s.findIndex((o) => t(o) === t(r))
17
17
  ), W = (e) => {
18
18
  for (let t = e.length - 1; t > 0; t--) {
@@ -36,7 +36,7 @@ const w = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.r
36
36
  for (let o = e; r > 0 ? o < t : o > t; o += r)
37
37
  s.push(o);
38
38
  return s;
39
- }, U = (e) => Object.fromEntries(e), g = " ", _ = " ", Z = (e, t = "") => e.split(t).join(g), k = (e, t = "") => e.split(t).join(_), G = (e, t) => e.length > t ? e.slice(0, t - 3) + "..." : e, j = (e) => e && e[0].toUpperCase() + e.slice(1), f = (e) => e.split(" ").map(j).join(" "), J = (e) => /^\d+$/.test(e), K = (e) => e !== Math.round(e) || e < 1 || e === 1 / 0 || e === -1 / 0 ? null : e === 1 ? "1er" : `${e}ème`, Q = (e) => e.trim().replace(/\s+/gi, " "), V = (e) => {
39
+ }, U = (e) => Object.fromEntries(e), _ = " ", g = " ", Z = (e, t = "") => e.split(t).join(_), k = (e, t = "") => e.split(t).join(g), G = (e, t) => e.length > t ? e.slice(0, t - 3) + "..." : e, j = (e) => e && e[0].toUpperCase() + e.slice(1), f = (e) => e.split(" ").map(j).join(" "), J = (e) => /^\d+$/.test(e), K = (e) => e !== Math.round(e) || e < 1 || e === 1 / 0 || e === -1 / 0 ? null : e === 1 ? "1er" : `${e}ème`, Q = (e) => e.trim().replace(/\s+/gi, " "), V = (e) => {
40
40
  const t = e.split(" "), n = ((s) => {
41
41
  let o = 1 / 0;
42
42
  for (let i = 0; i < s.length; i++) {
@@ -51,13 +51,7 @@ const w = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.r
51
51
  return t.length === 1 ? [t[0]] : [t.slice(0, n + 1), t.slice(n + 1)].map(
52
52
  (s) => s.join(" ")
53
53
  );
54
- }, D = (e) => typeof e == "string", v = (e) => {
55
- const t = e.replace(
56
- /[^a-zA-Z0-9]+(.)/g,
57
- (r, n) => n.toUpperCase()
58
- );
59
- return `${t.charAt(0).toLowerCase()}${t.slice(1)}`;
60
- }, X = (e) => {
54
+ }, D = (e) => typeof e == "string", v = (e) => e.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (t, r) => r.toUpperCase()).replace(/^[A-Z]/, (t) => t.toLowerCase()), X = (e) => {
61
55
  const t = v(e);
62
56
  return `${t.charAt(0).toUpperCase()}${t.slice(1)}`;
63
57
  }, ee = (e) => e.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[^a-zA-Z0-9]+/g, "-").toLowerCase().replace(/^-+|-+$/g, ""), te = (e) => e != null, re = (e) => D(e) ? /^[\],:{}\s]*$/.test(
@@ -129,7 +123,7 @@ const w = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.r
129
123
  yy: "%d ans"
130
124
  },
131
125
  dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
132
- ordinal: (e, t) => {
126
+ ordinal: ((e, t) => {
133
127
  switch (t) {
134
128
  case "D":
135
129
  return e + (e === 1 ? "er" : "");
@@ -143,7 +137,7 @@ const w = (e) => new Intl.NumberFormat("de-DE").format(e), h = (e, t, r = Math.r
143
137
  case "W":
144
138
  return e + (e === 1 ? "re" : "e");
145
139
  }
146
- },
140
+ }),
147
141
  week: {
148
142
  dow: 1,
149
143
  doy: 4
@@ -207,7 +201,7 @@ const ne = (e) => new Date(e).toString() !== "Invalid Date", se = (e, t) => Math
207
201
  a ? n[o] = r(i, a) : n[o] = i;
208
202
  }
209
203
  return n;
210
- }, ge = (e) => e instanceof Object, _e = (e, t) => t.reduce(
204
+ }, _e = (e) => e instanceof Object, ge = (e, t) => t.reduce(
211
205
  (r, n) => ({
212
206
  ...r,
213
207
  [n]: e[n]
@@ -215,8 +209,8 @@ const ne = (e) => new Date(e).toString() !== "Invalid Date", se = (e, t) => Math
215
209
  {}
216
210
  ), je = (e) => Object.entries(e);
217
211
  export {
218
- g as TIGHT_SPACE,
219
- _ as WIDE_SPACE,
212
+ _ as TIGHT_SPACE,
213
+ g as WIDE_SPACE,
220
214
  U as arrayToRecord,
221
215
  V as breakWords,
222
216
  v as camelcase,
@@ -229,14 +223,14 @@ export {
229
223
  O as exclude,
230
224
  Z as fillWithTightSpaces,
231
225
  k as fillWithWideSpaces,
232
- _e as filterKeys,
226
+ ge as filterKeys,
233
227
  B as filterNullAndUndefined,
234
228
  oe as formatDate,
235
229
  ie as formatDateWithDay,
236
230
  he as formatDuration,
237
- w as formatNumber,
238
- x as groupBy,
239
- A as groupByOccurrence,
231
+ S as formatNumber,
232
+ C as groupBy,
233
+ $ as groupByOccurrence,
240
234
  ce as hasExpire,
241
235
  F as includeArrayIf,
242
236
  z as includeBeginIf,
@@ -248,7 +242,7 @@ export {
248
242
  pe as isFunction,
249
243
  re as isJSON,
250
244
  T as isNumber,
251
- ge as isObject,
245
+ _e as isObject,
252
246
  J as isPositiveInteger,
253
247
  D as isString,
254
248
  ne as isValidDate,
@@ -256,7 +250,7 @@ export {
256
250
  Me as mergeObjects,
257
251
  E as mutuallyInclusive,
258
252
  K as numberToOrdinal,
259
- $ as paginate,
253
+ x as paginate,
260
254
  X as pascalCase,
261
255
  M as pickFrom,
262
256
  N as pickFromNth,
@@ -268,7 +262,7 @@ export {
268
262
  ae as sameDay,
269
263
  L as seededRandom,
270
264
  W as shuffle,
271
- C as sortBy,
265
+ A as sortBy,
272
266
  Q as trim,
273
267
  P as unique,
274
268
  H as uniquePreserve,
@@ -1 +1 @@
1
- (function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("moment")):typeof define=="function"&&define.amd?define(["exports","moment"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.utils={},i.moment))})(this,function(i,o){"use strict";const S=e=>new Intl.NumberFormat("de-DE").format(e),h=(e,t,n=Math.random)=>Math.floor(n()*(t-e)+e),p=e=>{let t=e;const n=2147483648,r=1103515245,s=12345;return()=>(t=(r*t+s)%n,t/(n-1))},T=(e,t,n)=>Math.max(t,Math.min(e,n)),I=e=>typeof e=="number",Y=(e,t)=>e.reduce((n,r,s)=>{const a=Math.floor(s/t);return(n[a]||(n[a]=[])).push(r),n},[]),w=(e,t)=>e.reduce((n,r)=>((n[t(r)]=n[t(r)]||[]).push(r),n),{}),A=(e,t)=>e.reduce((n,r)=>n.find(([s])=>s===t(r))?n.map(([s,a])=>[s,s===t(r)?a+1:a]):[...n,[t(r),1]],[]),L=(e,t)=>[...e].sort((n,r)=>t(n)<t(r)?-1:t(n)>t(r)?1:0),O=(e,t,n=r=>r)=>e.filter(r=>t.some(s=>n(s)===n(r))),C=(e,t,n=r=>r)=>e.filter(r=>!t.some(s=>n(s)===n(r))),E=(e,t)=>[...new Set(e.map(n=>t(n)))],W=(e,t)=>e.filter((n,r,s)=>r===s.findIndex(a=>t(a)===t(n))),$=e=>{for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e},P=e=>e.filter(t=>t!=null),B=(e,t,n)=>[...e,...l(t,n)],H=(e,t,n)=>[...l(t,n),...e],N=(e,t,n)=>[...e,...g(t,n)],l=(e,t)=>t?[e]:[],g=(e,t)=>t?e:[],M=e=>e[h(0,e.length)],F=(e,t)=>Array.from({length:t}).map(()=>M(e)).reduce((n,r)=>({...n,[r]:(n[r]??0)+1}),{}),R=({start:e=0,stop:t,step:n=1})=>{if(n===0)throw new RangeError("step cannot be equal to 0");if(n>0&&e>=t||n<0&&e<=t)return[];const s=[];for(let a=e;n>0?a<t:a>t;a+=n)s.push(a);return s},z=e=>Object.fromEntries(e),D=" ",_=" ",q=(e,t="")=>e.split(t).join(D),k=(e,t="")=>e.split(t).join(_),U=(e,t)=>e.length>t?e.slice(0,t-3)+"...":e,j=e=>e&&e[0].toUpperCase()+e.slice(1),d=e=>e.split(" ").map(j).join(" "),G=e=>/^\d+$/.test(e),Z=e=>e!==Math.round(e)||e<1||e===1/0||e===-1/0?null:e===1?"1er":`${e}ème`,J=e=>e.trim().replace(/\s+/gi," "),K=e=>{const t=e.split(" "),r=(s=>{let a=1/0;for(let u=0;u<s.length;u++){const c=Math.abs(s.slice(0,u+1).join(" ").length-s.slice(u+1).join(" ").length);if(c<=a)a=c;else return u-1}return a})(t);return t.length===1?[t[0]]:[t.slice(0,r+1),t.slice(r+1)].map(s=>s.join(" "))},y=e=>typeof e=="string",v=e=>{const t=e.replace(/[^a-zA-Z0-9]+(.)/g,(n,r)=>r.toUpperCase());return`${t.charAt(0).toLowerCase()}${t.slice(1)}`},V=e=>{const t=v(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`},Q=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[^a-zA-Z0-9]+/g,"-").toLowerCase().replace(/^-+|-+$/g,""),X=e=>e!=null,x=e=>y(e)?/^[\],:{}\s]*$/.test(e.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")):!1,ee=/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,te=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,b=/(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,m=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],ne={months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:b,monthsShortRegex:b,monthsStrictRegex:ee,monthsShortStrictRegex:te,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:(e,t)=>{switch(t){case"D":return e+(e===1?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(e===1?"er":"e");case"w":case"W":return e+(e===1?"re":"e")}},week:{dow:1,doy:4}};o.locale("fr",ne);const re=e=>new Date(e).toString()!=="Invalid Date",ie=(e,t)=>Math.abs(Math.ceil((t.getTime()-e.getTime())/(1e3*60*60*24))),se=e=>d(o(e).format("DD MMMM YYYY")),ae=e=>d(o(e).format("dddd DD MMMM YYYY")),oe=(e,t,n=!0)=>(n?e.getFullYear()===t.getFullYear():!0)&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),ue=()=>o().locale("fr").subtract(1,"days").toDate(),ce=e=>new Date>e,le=(e=new Date,t=1)=>{const n=t*60*1e3;return new Date(Math.round(e.getTime()/n)*n)},de=e=>{const t=[],n=o.duration(e);if(!(!n||n.toISOString()==="P0D")){if(n.years()>=1){const r=Math.floor(n.years());t.push(r+" "+(r>1?"années":"année"))}if(n.months()>=1){const r=Math.floor(n.months());t.push(r+" mois")}if(n.days()>=1){const r=Math.floor(n.days());t.push(r+" "+(r>1?"jours":"jour"))}if(n.hours()>=1){const r=Math.floor(n.hours());t.push(r+" "+(r>1?"heures":"heure"))}if(n.minutes()>=1){const r=Math.floor(n.minutes());t.push(r+" "+(r>1?"minutes":"minute"))}if(n.seconds()>=1){const r=Math.floor(n.seconds());t.push(r+" "+(r>1?"secondes":"seconde"))}return t.join(", ")}},f=/^([1-9][0-9]*)([hmd])$/i,me=e=>!!e&&f.test(e),fe=e=>{const t=f.exec(e);if(!t)return;const[,n,r]=t,s=parseInt(n,10),a=1e3*60;if(r==="m")return a*s;if(r==="h")return a*60*s;if(r==="d")return a*60*24*s},he=e=>{const t=f.exec(e);if(!t)return null;const[,n,r]=t,s=parseInt(n,10);if(r==="m")return`${s} minute${s>1?"s":""}`;if(r==="h")return`${s} heure${s>1?"s":""}`;if(r==="d")return`${s} jour${s>1?"s":""}`},ge=e=>typeof e=="function",Me=(e,t,n)=>{const r={...e},s=Object.entries(e);for(const[a,u]of s){const c=t[a];c?r[a]=n(u,c):r[a]=u}return r},De=e=>e instanceof Object,_e=(e,t)=>t.reduce((n,r)=>({...n,[r]:e[r]}),{}),je=e=>Object.entries(e);i.TIGHT_SPACE=D,i.WIDE_SPACE=_,i.arrayToRecord=z,i.breakWords=K,i.camelcase=v,i.capitalize=j,i.capitalizeAllWords=d,i.clamp=T,i.dateDiff=ie,i.durationToMs=fe,i.ellipsis=U,i.exclude=C,i.fillWithTightSpaces=q,i.fillWithWideSpaces=k,i.filterKeys=_e,i.filterNullAndUndefined=P,i.formatDate=se,i.formatDateWithDay=ae,i.formatDuration=he,i.formatNumber=S,i.groupBy=w,i.groupByOccurrence=A,i.hasExpire=ce,i.includeArrayIf=N,i.includeBeginIf=H,i.includeIf=B,i.insertArrayIf=g,i.insertIf=l,i.isDefined=X,i.isDuration=me,i.isFunction=ge,i.isJSON=x,i.isNumber=I,i.isObject=De,i.isPositiveInteger=G,i.isString=y,i.isValidDate=re,i.kebabCase=Q,i.mergeObjects=Me,i.mutuallyInclusive=O,i.numberToOrdinal=Z,i.paginate=Y,i.pascalCase=V,i.pickFrom=M,i.pickFromNth=F,i.precise=de,i.randomBetween=h,i.range=R,i.recordToArray=je,i.roundDate=le,i.sameDay=oe,i.seededRandom=p,i.shuffle=$,i.sortBy=L,i.trim=J,i.unique=E,i.uniquePreserve=W,i.yesterday=ue,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
1
+ (function(r,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("moment")):typeof define=="function"&&define.amd?define(["exports","moment"],o):(r=typeof globalThis<"u"?globalThis:r||self,o(r.utils={},r.moment))})(this,(function(r,o){"use strict";const v=e=>new Intl.NumberFormat("de-DE").format(e),h=(e,t,n=Math.random)=>Math.floor(n()*(t-e)+e),S=e=>{let t=e;const n=2147483648,i=1103515245,s=12345;return()=>(t=(i*t+s)%n,t/(n-1))},b=(e,t,n)=>Math.max(t,Math.min(e,n)),T=e=>typeof e=="number",p=(e,t)=>e.reduce((n,i,s)=>{const a=Math.floor(s/t);return(n[a]||(n[a]=[])).push(i),n},[]),I=(e,t)=>e.reduce((n,i)=>((n[t(i)]=n[t(i)]||[]).push(i),n),{}),Y=(e,t)=>e.reduce((n,i)=>n.find(([s])=>s===t(i))?n.map(([s,a])=>[s,s===t(i)?a+1:a]):[...n,[t(i),1]],[]),A=(e,t)=>[...e].sort((n,i)=>t(n)<t(i)?-1:t(n)>t(i)?1:0),E=(e,t,n=i=>i)=>e.filter(i=>t.some(s=>n(s)===n(i))),w=(e,t,n=i=>i)=>e.filter(i=>!t.some(s=>n(s)===n(i))),C=(e,t)=>[...new Set(e.map(n=>t(n)))],L=(e,t)=>e.filter((n,i,s)=>i===s.findIndex(a=>t(a)===t(n))),P=e=>{for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e},O=e=>e.filter(t=>t!=null),W=(e,t,n)=>[...e,...l(t,n)],$=(e,t,n)=>[...l(t,n),...e],B=(e,t,n)=>[...e,...g(t,n)],l=(e,t)=>t?[e]:[],g=(e,t)=>t?e:[],_=e=>e[h(0,e.length)],H=(e,t)=>Array.from({length:t}).map(()=>_(e)).reduce((n,i)=>({...n,[i]:(n[i]??0)+1}),{}),N=({start:e=0,stop:t,step:n=1})=>{if(n===0)throw new RangeError("step cannot be equal to 0");if(n>0&&e>=t||n<0&&e<=t)return[];const s=[];for(let a=e;n>0?a<t:a>t;a+=n)s.push(a);return s},F=e=>Object.fromEntries(e),R=(e,t="")=>e.split(t).join(" "),z=(e,t="")=>e.split(t).join(" "),q=(e,t)=>e.length>t?e.slice(0,t-3)+"...":e,D=e=>e&&e[0].toUpperCase()+e.slice(1),d=e=>e.split(" ").map(D).join(" "),k=e=>/^\d+$/.test(e),G=e=>e!==Math.round(e)||e<1||e===1/0||e===-1/0?null:e===1?"1er":`${e}ème`,U=e=>e.trim().replace(/\s+/gi," "),Z=e=>{const t=e.split(" "),i=(s=>{let a=1/0;for(let u=0;u<s.length;u++){const c=Math.abs(s.slice(0,u+1).join(" ").length-s.slice(u+1).join(" ").length);if(c<=a)a=c;else return u-1}return a})(t);return t.length===1?[t[0]]:[t.slice(0,i+1),t.slice(i+1)].map(s=>s.join(" "))},M=e=>typeof e=="string",j=e=>e.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(t,n)=>n.toUpperCase()).replace(/^[A-Z]/,t=>t.toLowerCase()),J=e=>{const t=j(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`},K=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[^a-zA-Z0-9]+/g,"-").toLowerCase().replace(/^-+|-+$/g,""),V=e=>e!=null,Q=e=>M(e)?/^[\],:{}\s]*$/.test(e.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")):!1,X=/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,x=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,y=/(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,m=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],ee={months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:y,monthsShortRegex:y,monthsStrictRegex:X,monthsShortStrictRegex:x,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:((e,t)=>{switch(t){case"D":return e+(e===1?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(e===1?"er":"e");case"w":case"W":return e+(e===1?"re":"e")}}),week:{dow:1,doy:4}};o.locale("fr",ee);const te=e=>new Date(e).toString()!=="Invalid Date",ne=(e,t)=>Math.abs(Math.ceil((t.getTime()-e.getTime())/(1e3*60*60*24))),re=e=>d(o(e).format("DD MMMM YYYY")),ie=e=>d(o(e).format("dddd DD MMMM YYYY")),se=(e,t,n=!0)=>(n?e.getFullYear()===t.getFullYear():!0)&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),ae=()=>o().locale("fr").subtract(1,"days").toDate(),oe=e=>new Date>e,ue=(e=new Date,t=1)=>{const n=t*60*1e3;return new Date(Math.round(e.getTime()/n)*n)},ce=e=>{const t=[],n=o.duration(e);if(!(!n||n.toISOString()==="P0D")){if(n.years()>=1){const i=Math.floor(n.years());t.push(i+" "+(i>1?"années":"année"))}if(n.months()>=1){const i=Math.floor(n.months());t.push(i+" mois")}if(n.days()>=1){const i=Math.floor(n.days());t.push(i+" "+(i>1?"jours":"jour"))}if(n.hours()>=1){const i=Math.floor(n.hours());t.push(i+" "+(i>1?"heures":"heure"))}if(n.minutes()>=1){const i=Math.floor(n.minutes());t.push(i+" "+(i>1?"minutes":"minute"))}if(n.seconds()>=1){const i=Math.floor(n.seconds());t.push(i+" "+(i>1?"secondes":"seconde"))}return t.join(", ")}},f=/^([1-9][0-9]*)([hmd])$/i,le=e=>!!e&&f.test(e),de=e=>{const t=f.exec(e);if(!t)return;const[,n,i]=t,s=parseInt(n,10),a=1e3*60;if(i==="m")return a*s;if(i==="h")return a*60*s;if(i==="d")return a*60*24*s},me=e=>{const t=f.exec(e);if(!t)return null;const[,n,i]=t,s=parseInt(n,10);if(i==="m")return`${s} minute${s>1?"s":""}`;if(i==="h")return`${s} heure${s>1?"s":""}`;if(i==="d")return`${s} jour${s>1?"s":""}`},fe=e=>typeof e=="function",he=(e,t,n)=>{const i={...e},s=Object.entries(e);for(const[a,u]of s){const c=t[a];c?i[a]=n(u,c):i[a]=u}return i},ge=e=>e instanceof Object,_e=(e,t)=>t.reduce((n,i)=>({...n,[i]:e[i]}),{}),De=e=>Object.entries(e);r.TIGHT_SPACE=" ",r.WIDE_SPACE=" ",r.arrayToRecord=F,r.breakWords=Z,r.camelcase=j,r.capitalize=D,r.capitalizeAllWords=d,r.clamp=b,r.dateDiff=ne,r.durationToMs=de,r.ellipsis=q,r.exclude=w,r.fillWithTightSpaces=R,r.fillWithWideSpaces=z,r.filterKeys=_e,r.filterNullAndUndefined=O,r.formatDate=re,r.formatDateWithDay=ie,r.formatDuration=me,r.formatNumber=v,r.groupBy=I,r.groupByOccurrence=Y,r.hasExpire=oe,r.includeArrayIf=B,r.includeBeginIf=$,r.includeIf=W,r.insertArrayIf=g,r.insertIf=l,r.isDefined=V,r.isDuration=le,r.isFunction=fe,r.isJSON=Q,r.isNumber=T,r.isObject=ge,r.isPositiveInteger=k,r.isString=M,r.isValidDate=te,r.kebabCase=K,r.mergeObjects=he,r.mutuallyInclusive=E,r.numberToOrdinal=G,r.paginate=p,r.pascalCase=J,r.pickFrom=_,r.pickFromNth=H,r.precise=ce,r.randomBetween=h,r.range=N,r.recordToArray=De,r.roundDate=ue,r.sameDay=se,r.seededRandom=S,r.shuffle=P,r.sortBy=A,r.trim=U,r.unique=C,r.uniquePreserve=L,r.yesterday=ae,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
package/dist/object.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const mergeObjects: <TKey extends string, TValue>(obj1: { [key in TKey]: TValue; }, obj2: Partial<{ [key_1 in TKey]: TValue; }>, mergeFn: (v1: TValue, v2: TValue) => TValue) => { [key_2 in TKey]: TValue; };
1
+ export declare const mergeObjects: <TKey extends string, TValue>(obj1: { [key in TKey]: TValue; }, obj2: Partial<{ [key in TKey]: TValue; }>, mergeFn: (v1: TValue, v2: TValue) => TValue) => { [key in TKey]: TValue; };
2
2
  export declare const isObject: (obj: unknown) => obj is Object;
3
3
  export declare const filterKeys: <T, K extends keyof T>(data: T, keys: K[]) => Pick<T, K>;
4
4
  export declare const recordToArray: <TKey extends string, TValue>(record: Partial<Record<TKey, TValue>>) => [TKey, TValue][];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opfr/utils-lang",
3
- "version": "0.17.0",
3
+ "version": "1.0.1",
4
4
  "private": false,
5
5
  "description": "OPFR utils-lang",
6
6
  "author": "Matthieu VEIGA",
@@ -12,11 +12,8 @@
12
12
  "test:ci": "vitest run",
13
13
  "coverage": "vitest run --coverage"
14
14
  },
15
- "dependencies": {
16
- "moment": "2.30.1"
17
- },
18
15
  "devDependencies": {
19
- "vitest": "2.0.3"
16
+ "moment": "2.30.1"
20
17
  },
21
18
  "main": "dist/index.umd.cjs",
22
19
  "module": "dist/index.es.js",
@@ -35,5 +32,5 @@
35
32
  "node_modules",
36
33
  "dist"
37
34
  ],
38
- "gitHead": "ae3280dbae9ca199e2e16470b3d6c0f103c7148b"
35
+ "gitHead": "dd1f758862242dd55d92fc3faff5ce7d00584fe6"
39
36
  }