@zairakai/js-utils 1.0.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.
- package/LICENSE +21 -0
- package/README.md +270 -0
- package/dist/arrays.cjs +210 -0
- package/dist/arrays.d.cts +119 -0
- package/dist/arrays.d.ts +119 -0
- package/dist/arrays.js +32 -0
- package/dist/chunk-27YHP2CK.js +407 -0
- package/dist/chunk-3WNRYKPG.js +37 -0
- package/dist/chunk-42CHLXT7.js +214 -0
- package/dist/chunk-6F4PWJZI.js +0 -0
- package/dist/chunk-7SXRFZBB.js +173 -0
- package/dist/chunk-F6RSTW65.js +156 -0
- package/dist/chunk-G7ZJ23DW.js +253 -0
- package/dist/chunk-IPP7PA6H.js +136 -0
- package/dist/chunk-LDSWHSRX.js +96 -0
- package/dist/chunk-TY75OOIQ.js +700 -0
- package/dist/chunk-W6JEMFAF.js +54 -0
- package/dist/chunk-XEJLBAXE.js +164 -0
- package/dist/chunk-Z7G3SIQH.js +270 -0
- package/dist/chunk-ZJPKS2MQ.js +101 -0
- package/dist/collections.cjs +797 -0
- package/dist/collections.d.cts +353 -0
- package/dist/collections.d.ts +353 -0
- package/dist/collections.js +17 -0
- package/dist/datetime.cjs +80 -0
- package/dist/datetime.d.cts +75 -0
- package/dist/datetime.d.ts +75 -0
- package/dist/datetime.js +24 -0
- package/dist/equals.cjs +121 -0
- package/dist/equals.d.cts +24 -0
- package/dist/equals.d.ts +24 -0
- package/dist/equals.js +8 -0
- package/dist/formatters.cjs +201 -0
- package/dist/formatters.d.cts +180 -0
- package/dist/formatters.d.ts +180 -0
- package/dist/formatters.js +48 -0
- package/dist/index.cjs +2906 -0
- package/dist/index.d.cts +120 -0
- package/dist/index.d.ts +120 -0
- package/dist/index.js +348 -0
- package/dist/number.cjs +279 -0
- package/dist/number.d.cts +177 -0
- package/dist/number.d.ts +177 -0
- package/dist/number.js +10 -0
- package/dist/obj.cjs +427 -0
- package/dist/obj.d.cts +177 -0
- package/dist/obj.d.ts +177 -0
- package/dist/obj.js +12 -0
- package/dist/php-arrays.cjs +954 -0
- package/dist/php-arrays.d.cts +256 -0
- package/dist/php-arrays.d.ts +256 -0
- package/dist/php-arrays.js +70 -0
- package/dist/runtime.cjs +134 -0
- package/dist/runtime.d.cts +90 -0
- package/dist/runtime.d.ts +90 -0
- package/dist/runtime.js +24 -0
- package/dist/schemas.cjs +86 -0
- package/dist/schemas.d.cts +108 -0
- package/dist/schemas.d.ts +108 -0
- package/dist/schemas.js +22 -0
- package/dist/str.cjs +499 -0
- package/dist/str.d.cts +282 -0
- package/dist/str.d.ts +282 -0
- package/dist/str.js +11 -0
- package/dist/types.cjs +18 -0
- package/dist/types.d.cts +13 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.js +1 -0
- package/dist/validator.cjs +251 -0
- package/dist/validator.d.cts +99 -0
- package/dist/validator.d.ts +99 -0
- package/dist/validator.js +11 -0
- package/dist/validators.cjs +217 -0
- package/dist/validators.d.cts +216 -0
- package/dist/validators.d.ts +216 -0
- package/dist/validators.js +64 -0
- package/package.json +180 -0
- package/src/arrays.ts +316 -0
- package/src/collections.ts +866 -0
- package/src/datetime.ts +103 -0
- package/src/equals.ts +134 -0
- package/src/formatters.ts +342 -0
- package/src/index.ts +36 -0
- package/src/number.ts +281 -0
- package/src/obj.ts +303 -0
- package/src/php-arrays.ts +445 -0
- package/src/pipe.ts +29 -0
- package/src/runtime.ts +194 -0
- package/src/schemas.ts +136 -0
- package/src/str.ts +438 -0
- package/src/types.ts +13 -0
- package/src/validator.ts +157 -0
- package/src/validators.ts +359 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EnhancedArray
|
|
3
|
+
} from "./chunk-TY75OOIQ.js";
|
|
4
|
+
|
|
5
|
+
// src/php-arrays.ts
|
|
6
|
+
var array_chunk = (array, size) => {
|
|
7
|
+
if (0 >= size) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
const chunks = [];
|
|
11
|
+
for (let i = 0; i < array.length; i += size) {
|
|
12
|
+
chunks.push(array.slice(i, i + size));
|
|
13
|
+
}
|
|
14
|
+
return chunks;
|
|
15
|
+
};
|
|
16
|
+
var array_filter = (array, callback) => {
|
|
17
|
+
if (!callback) {
|
|
18
|
+
return array.filter((item) => Boolean(item));
|
|
19
|
+
}
|
|
20
|
+
return array.filter(callback);
|
|
21
|
+
};
|
|
22
|
+
var array_map = (callback, array) => {
|
|
23
|
+
return array.map(callback);
|
|
24
|
+
};
|
|
25
|
+
var array_reduce = (array, callback, initial) => {
|
|
26
|
+
return array.reduce((carry, item, index) => callback(carry, item, index), initial);
|
|
27
|
+
};
|
|
28
|
+
var array_merge = (...arrays) => {
|
|
29
|
+
return arrays.flat();
|
|
30
|
+
};
|
|
31
|
+
var array_unique = (array) => {
|
|
32
|
+
return [...new Set(array)];
|
|
33
|
+
};
|
|
34
|
+
var array_reverse = (array, _preserveKeys = false) => {
|
|
35
|
+
return [...array].reverse();
|
|
36
|
+
};
|
|
37
|
+
var array_slice = (array, offset, length) => {
|
|
38
|
+
const start = 0 > offset ? Math.max(0, array.length + offset) : offset;
|
|
39
|
+
const end = length !== void 0 ? start + length : void 0;
|
|
40
|
+
return array.slice(start, end);
|
|
41
|
+
};
|
|
42
|
+
var array_splice = (array, offset, length, ...replacement) => {
|
|
43
|
+
const result = [...array];
|
|
44
|
+
const actualLength = length ?? result.length - offset;
|
|
45
|
+
result.splice(offset, actualLength, ...replacement);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
var array_keys = (array) => {
|
|
49
|
+
return array.map((_, index) => index);
|
|
50
|
+
};
|
|
51
|
+
var array_search = (needle, haystack) => {
|
|
52
|
+
const index = haystack.indexOf(needle);
|
|
53
|
+
return -1 !== index ? index : false;
|
|
54
|
+
};
|
|
55
|
+
var array_key_exists = (key, array) => {
|
|
56
|
+
return 0 <= key && key < array.length;
|
|
57
|
+
};
|
|
58
|
+
var array_pop = (array) => {
|
|
59
|
+
const result = [...array];
|
|
60
|
+
return result.pop();
|
|
61
|
+
};
|
|
62
|
+
var array_push = (array, ...values) => {
|
|
63
|
+
return [...array, ...values];
|
|
64
|
+
};
|
|
65
|
+
var array_shift = (array) => {
|
|
66
|
+
const result = [...array];
|
|
67
|
+
return result.shift();
|
|
68
|
+
};
|
|
69
|
+
var array_unshift = (array, ...values) => {
|
|
70
|
+
return [...values, ...array];
|
|
71
|
+
};
|
|
72
|
+
var array_sum = (array) => {
|
|
73
|
+
return array.reduce((sum, num) => sum + num, 0);
|
|
74
|
+
};
|
|
75
|
+
var array_product = (array) => {
|
|
76
|
+
return array.reduce((product, num) => product * num, 1);
|
|
77
|
+
};
|
|
78
|
+
var array_rand = (array, num = 1) => {
|
|
79
|
+
if (0 === array.length) {
|
|
80
|
+
return 1 === num ? void 0 : [];
|
|
81
|
+
}
|
|
82
|
+
const shuffled = [...array].sort(() => Math.random() - 0.5);
|
|
83
|
+
if (1 === num) {
|
|
84
|
+
return shuffled[0];
|
|
85
|
+
}
|
|
86
|
+
return shuffled.slice(0, Math.min(num, array.length));
|
|
87
|
+
};
|
|
88
|
+
var array_flip = (array) => {
|
|
89
|
+
const result = {};
|
|
90
|
+
array.forEach((value, index) => {
|
|
91
|
+
result[String(value)] = index;
|
|
92
|
+
});
|
|
93
|
+
return result;
|
|
94
|
+
};
|
|
95
|
+
var array_count_values = (array) => {
|
|
96
|
+
const result = {};
|
|
97
|
+
array.forEach((value) => {
|
|
98
|
+
const key = String(value);
|
|
99
|
+
result[key] = (result[key] || 0) + 1;
|
|
100
|
+
});
|
|
101
|
+
return result;
|
|
102
|
+
};
|
|
103
|
+
var array_intersect = (...arrays) => {
|
|
104
|
+
if (0 === arrays.length) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
const first = arrays[0];
|
|
108
|
+
return first.filter((item) => arrays.slice(1).every((arr) => arr.includes(item)));
|
|
109
|
+
};
|
|
110
|
+
var array_diff = (array1, ...arrays) => {
|
|
111
|
+
const otherItems = new Set(arrays.flat());
|
|
112
|
+
return array1.filter((item) => !otherItems.has(item));
|
|
113
|
+
};
|
|
114
|
+
var array_column = (array, column) => {
|
|
115
|
+
return array.map((item) => item && "object" === typeof item ? item[column] : void 0).filter((value) => value !== void 0);
|
|
116
|
+
};
|
|
117
|
+
var sort = (array) => {
|
|
118
|
+
return [...array].sort();
|
|
119
|
+
};
|
|
120
|
+
var rsort = (array) => {
|
|
121
|
+
return [...array].sort().reverse();
|
|
122
|
+
};
|
|
123
|
+
var usort = (array, compareFunction) => {
|
|
124
|
+
return [...array].sort(compareFunction);
|
|
125
|
+
};
|
|
126
|
+
var uasort = (array, compareFunction) => {
|
|
127
|
+
return [...array].sort(compareFunction);
|
|
128
|
+
};
|
|
129
|
+
var uksort = (array, compareFunction) => {
|
|
130
|
+
const indices = Array.from({ length: array.length }, (_, i) => i);
|
|
131
|
+
const sortedIndices = indices.sort(compareFunction);
|
|
132
|
+
return sortedIndices.map((i) => array[i]);
|
|
133
|
+
};
|
|
134
|
+
var shuffle = (array) => {
|
|
135
|
+
const result = [...array];
|
|
136
|
+
for (let i = result.length - 1; 0 < i; i--) {
|
|
137
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
138
|
+
[result[i], result[j]] = [result[j], result[i]];
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
};
|
|
142
|
+
var range = (start, end, step = 1) => {
|
|
143
|
+
const result = [];
|
|
144
|
+
if (0 < step) {
|
|
145
|
+
for (let i = start; i <= end; i += step) {
|
|
146
|
+
result.push(i);
|
|
147
|
+
}
|
|
148
|
+
} else if (0 > step) {
|
|
149
|
+
for (let i = start; i >= end; i += step) {
|
|
150
|
+
result.push(i);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
};
|
|
155
|
+
var php_array = (items) => {
|
|
156
|
+
const enhanced = new EnhancedArray(...items);
|
|
157
|
+
Object.assign(enhanced, {
|
|
158
|
+
// PHP array functions as methods
|
|
159
|
+
chunk: (size) => array_chunk(enhanced, size),
|
|
160
|
+
merge: (...arrays) => new EnhancedArray(...array_merge(enhanced, ...arrays)),
|
|
161
|
+
unique: () => new EnhancedArray(...array_unique(enhanced)),
|
|
162
|
+
reverse: (preserveKeys = false) => new EnhancedArray(...array_reverse(enhanced, preserveKeys)),
|
|
163
|
+
search: (needle) => array_search(needle, enhanced),
|
|
164
|
+
sum: () => array_sum(enhanced),
|
|
165
|
+
product: () => array_product(enhanced),
|
|
166
|
+
rand: (num = 1) => array_rand(enhanced, num),
|
|
167
|
+
flip: () => array_flip(enhanced),
|
|
168
|
+
countValues: () => array_count_values(enhanced),
|
|
169
|
+
intersect: (...arrays) => new EnhancedArray(...array_intersect(enhanced, ...arrays)),
|
|
170
|
+
diff: (...arrays) => new EnhancedArray(...array_diff(enhanced, ...arrays)),
|
|
171
|
+
column: (column) => array_column(enhanced, column),
|
|
172
|
+
// PHP sorting as methods
|
|
173
|
+
sort: () => new EnhancedArray(...sort(enhanced)),
|
|
174
|
+
rsort: () => new EnhancedArray(...rsort(enhanced)),
|
|
175
|
+
shuffle: () => new EnhancedArray(...shuffle(enhanced)),
|
|
176
|
+
usort: (compareFunction) => new EnhancedArray(...usort(enhanced, compareFunction))
|
|
177
|
+
});
|
|
178
|
+
return enhanced;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
export {
|
|
182
|
+
array_chunk,
|
|
183
|
+
array_filter,
|
|
184
|
+
array_map,
|
|
185
|
+
array_reduce,
|
|
186
|
+
array_merge,
|
|
187
|
+
array_unique,
|
|
188
|
+
array_reverse,
|
|
189
|
+
array_slice,
|
|
190
|
+
array_splice,
|
|
191
|
+
array_keys,
|
|
192
|
+
array_search,
|
|
193
|
+
array_key_exists,
|
|
194
|
+
array_pop,
|
|
195
|
+
array_push,
|
|
196
|
+
array_shift,
|
|
197
|
+
array_unshift,
|
|
198
|
+
array_sum,
|
|
199
|
+
array_product,
|
|
200
|
+
array_rand,
|
|
201
|
+
array_flip,
|
|
202
|
+
array_count_values,
|
|
203
|
+
array_intersect,
|
|
204
|
+
array_diff,
|
|
205
|
+
array_column,
|
|
206
|
+
sort,
|
|
207
|
+
rsort,
|
|
208
|
+
usort,
|
|
209
|
+
uasort,
|
|
210
|
+
uksort,
|
|
211
|
+
shuffle,
|
|
212
|
+
range,
|
|
213
|
+
php_array
|
|
214
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// src/arrays.ts
|
|
2
|
+
var arrayAdd = (array, key, value) => {
|
|
3
|
+
const result = Array.isArray(array) ? Object.fromEntries(array.map((v, i) => [i, v])) : { ...array };
|
|
4
|
+
result[key] = value;
|
|
5
|
+
return result;
|
|
6
|
+
};
|
|
7
|
+
var arrayCollapse = (array) => {
|
|
8
|
+
if (!Array.isArray(array)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return array.reduce((flat, item) => {
|
|
12
|
+
if (Array.isArray(item)) {
|
|
13
|
+
return flat.concat(item);
|
|
14
|
+
}
|
|
15
|
+
return flat.concat([item]);
|
|
16
|
+
}, []);
|
|
17
|
+
};
|
|
18
|
+
var arrayDivide = (array) => {
|
|
19
|
+
if (!Array.isArray(array)) {
|
|
20
|
+
return [[], []];
|
|
21
|
+
}
|
|
22
|
+
const keys = array.map((_, index) => index.toString());
|
|
23
|
+
const values = [...array];
|
|
24
|
+
return [keys, values];
|
|
25
|
+
};
|
|
26
|
+
var arrayDot = (array, prepend = "") => {
|
|
27
|
+
const result = {};
|
|
28
|
+
for (const [key, value] of Object.entries(array)) {
|
|
29
|
+
const newKey = prepend ? `${prepend}.${key}` : key;
|
|
30
|
+
if (value && "object" === typeof value && !Array.isArray(value)) {
|
|
31
|
+
Object.assign(result, arrayDot(value, newKey));
|
|
32
|
+
} else {
|
|
33
|
+
result[newKey] = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
var arrayExcept = (array, keys) => {
|
|
39
|
+
if (!Array.isArray(array) || !Array.isArray(keys)) {
|
|
40
|
+
return array;
|
|
41
|
+
}
|
|
42
|
+
return array.filter((_, index) => !keys.includes(index.toString()));
|
|
43
|
+
};
|
|
44
|
+
var arrayFirst = (array, callback, defaultValue) => {
|
|
45
|
+
if (!Array.isArray(array)) {
|
|
46
|
+
return defaultValue;
|
|
47
|
+
}
|
|
48
|
+
if (!callback) {
|
|
49
|
+
return 0 < array.length ? array[0] : defaultValue;
|
|
50
|
+
}
|
|
51
|
+
for (let i = 0; i < array.length; i++) {
|
|
52
|
+
if (callback(array[i], i)) {
|
|
53
|
+
return array[i];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return defaultValue;
|
|
57
|
+
};
|
|
58
|
+
var arrayFlatten = (array, depth = Infinity) => {
|
|
59
|
+
if (!Array.isArray(array)) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const flatten = (arr, currentDepth) => {
|
|
63
|
+
const result = [];
|
|
64
|
+
for (const item of arr) {
|
|
65
|
+
if (Array.isArray(item) && 0 < currentDepth) {
|
|
66
|
+
result.push(...flatten(item, currentDepth - 1));
|
|
67
|
+
} else {
|
|
68
|
+
result.push(item);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
};
|
|
73
|
+
return flatten(array, depth);
|
|
74
|
+
};
|
|
75
|
+
var arrayGet = (array, key, defaultValue) => {
|
|
76
|
+
if (!array || "object" !== typeof array) {
|
|
77
|
+
return defaultValue;
|
|
78
|
+
}
|
|
79
|
+
const keys = key.split(".");
|
|
80
|
+
let current = array;
|
|
81
|
+
for (const k of keys) {
|
|
82
|
+
if (null === current || current === void 0 || "object" !== typeof current || !(k in current)) {
|
|
83
|
+
return defaultValue;
|
|
84
|
+
}
|
|
85
|
+
current = current[k];
|
|
86
|
+
}
|
|
87
|
+
return current;
|
|
88
|
+
};
|
|
89
|
+
var arrayHas = (array, keys) => {
|
|
90
|
+
if (!array || "object" !== typeof array) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const keyArray = Array.isArray(keys) ? keys : [keys];
|
|
94
|
+
return keyArray.every((key) => {
|
|
95
|
+
const keyParts = key.split(".");
|
|
96
|
+
let current = array;
|
|
97
|
+
for (const part of keyParts) {
|
|
98
|
+
if (null === current || current === void 0 || "object" !== typeof current || !(part in current)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
current = current[part];
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
var arrayOnly = (array, keys) => {
|
|
107
|
+
if (!Array.isArray(array) || !Array.isArray(keys)) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
return array.filter((_, index) => keys.includes(index.toString()));
|
|
111
|
+
};
|
|
112
|
+
var arrayWhere = (array, callback) => {
|
|
113
|
+
if (!Array.isArray(array)) {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
return array.filter(callback);
|
|
117
|
+
};
|
|
118
|
+
var arrayPluck = (array, key) => {
|
|
119
|
+
if (!Array.isArray(array)) {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
return array.map((item) => item && "object" === typeof item ? item[key] : void 0).filter((value) => value !== void 0);
|
|
123
|
+
};
|
|
124
|
+
var arrayGroupBy = (array, keyOrFn) => {
|
|
125
|
+
if (!Array.isArray(array)) {
|
|
126
|
+
return {};
|
|
127
|
+
}
|
|
128
|
+
return array.reduce(
|
|
129
|
+
(groups, item) => {
|
|
130
|
+
const key = "function" === typeof keyOrFn ? String(keyOrFn(item)) : String(item && "object" === typeof item ? item[keyOrFn] : item);
|
|
131
|
+
if (!groups[key]) {
|
|
132
|
+
groups[key] = [];
|
|
133
|
+
}
|
|
134
|
+
groups[key].push(item);
|
|
135
|
+
return groups;
|
|
136
|
+
},
|
|
137
|
+
{}
|
|
138
|
+
);
|
|
139
|
+
};
|
|
140
|
+
var arrayUnique = (array, key) => {
|
|
141
|
+
if (!Array.isArray(array)) {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
if (!key) {
|
|
145
|
+
return [...new Set(array)];
|
|
146
|
+
}
|
|
147
|
+
const seen = /* @__PURE__ */ new Set();
|
|
148
|
+
return array.filter((item) => {
|
|
149
|
+
const value = item && "object" === typeof item ? item[key] : item;
|
|
150
|
+
if (seen.has(value)) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
seen.add(value);
|
|
154
|
+
return true;
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export {
|
|
159
|
+
arrayAdd,
|
|
160
|
+
arrayCollapse,
|
|
161
|
+
arrayDivide,
|
|
162
|
+
arrayDot,
|
|
163
|
+
arrayExcept,
|
|
164
|
+
arrayFirst,
|
|
165
|
+
arrayFlatten,
|
|
166
|
+
arrayGet,
|
|
167
|
+
arrayHas,
|
|
168
|
+
arrayOnly,
|
|
169
|
+
arrayWhere,
|
|
170
|
+
arrayPluck,
|
|
171
|
+
arrayGroupBy,
|
|
172
|
+
arrayUnique
|
|
173
|
+
};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// src/formatters.ts
|
|
2
|
+
var capitalize = (value) => {
|
|
3
|
+
if (value == null) {
|
|
4
|
+
return "";
|
|
5
|
+
}
|
|
6
|
+
const stringValue = String(value);
|
|
7
|
+
return stringValue.charAt(0).toUpperCase() + stringValue.slice(1).toLowerCase();
|
|
8
|
+
};
|
|
9
|
+
var slugify = (text) => {
|
|
10
|
+
if (!text) {
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
return text.toString().normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-");
|
|
14
|
+
};
|
|
15
|
+
var strLimit = (value, size) => {
|
|
16
|
+
if (!value) {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
const stringValue = String(value);
|
|
20
|
+
return stringValue.length <= size ? stringValue : `${stringValue.slice(0, size)}\u2026`;
|
|
21
|
+
};
|
|
22
|
+
var normalizeString = (value) => {
|
|
23
|
+
if (!value) {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
return value.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
27
|
+
};
|
|
28
|
+
var strContainsAll = (haystack, needles) => {
|
|
29
|
+
if (!haystack || !Array.isArray(needles)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return needles.every((needle) => haystack.includes(needle));
|
|
33
|
+
};
|
|
34
|
+
var strContainsAny = (haystack, needles) => {
|
|
35
|
+
if (!haystack || !Array.isArray(needles)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return needles.some((needle) => haystack.includes(needle));
|
|
39
|
+
};
|
|
40
|
+
var strFinish = (value, cap) => {
|
|
41
|
+
if (!value) {
|
|
42
|
+
return cap;
|
|
43
|
+
}
|
|
44
|
+
if (!cap) {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
return value.endsWith(cap) ? value : value + cap;
|
|
48
|
+
};
|
|
49
|
+
var strStart = (value, prefix) => {
|
|
50
|
+
if (!value) {
|
|
51
|
+
return prefix;
|
|
52
|
+
}
|
|
53
|
+
if (!prefix) {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
return value.startsWith(prefix) ? value : prefix + value;
|
|
57
|
+
};
|
|
58
|
+
var strPadBoth = (str, length, pad = " ") => {
|
|
59
|
+
if (str.length >= length) {
|
|
60
|
+
return str;
|
|
61
|
+
}
|
|
62
|
+
const totalPad = length - str.length;
|
|
63
|
+
const leftPad = Math.floor(totalPad / 2);
|
|
64
|
+
const rightPad = totalPad - leftPad;
|
|
65
|
+
return pad.repeat(leftPad) + str + pad.repeat(rightPad);
|
|
66
|
+
};
|
|
67
|
+
var strPadLeft = (str, length, pad = " ") => {
|
|
68
|
+
return str.padStart(length, pad);
|
|
69
|
+
};
|
|
70
|
+
var strPadRight = (str, length, pad = " ") => {
|
|
71
|
+
return str.padEnd(length, pad);
|
|
72
|
+
};
|
|
73
|
+
var strReverse = (value) => {
|
|
74
|
+
return value.split("").reverse().join("");
|
|
75
|
+
};
|
|
76
|
+
var strRemove = (search, subject, caseSensitive = true) => {
|
|
77
|
+
if (!search || !subject) {
|
|
78
|
+
return subject;
|
|
79
|
+
}
|
|
80
|
+
const flags = caseSensitive ? "g" : "gi";
|
|
81
|
+
return subject.replace(new RegExp(search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), flags), "");
|
|
82
|
+
};
|
|
83
|
+
var strMask = (str, character, index, length) => {
|
|
84
|
+
if (!str) {
|
|
85
|
+
return str;
|
|
86
|
+
}
|
|
87
|
+
const start = Math.max(0, index);
|
|
88
|
+
const end = length !== void 0 ? start + length : str.length;
|
|
89
|
+
return str.substring(0, start) + character.repeat(end - start) + str.substring(end);
|
|
90
|
+
};
|
|
91
|
+
var strWordCount = (str, characters) => {
|
|
92
|
+
if (!str) {
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
const pattern = characters ? new RegExp(`[${characters}\\s]+`) : /\s+/;
|
|
96
|
+
return str.trim().split(pattern).filter((word) => 0 < word.length).length;
|
|
97
|
+
};
|
|
98
|
+
var strWords = (value, words = 100, end = "...") => {
|
|
99
|
+
if (!value) {
|
|
100
|
+
return "";
|
|
101
|
+
}
|
|
102
|
+
const wordArray = value.trim().split(/\s+/);
|
|
103
|
+
if (wordArray.length <= words) {
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
return wordArray.slice(0, words).join(" ") + end;
|
|
107
|
+
};
|
|
108
|
+
var camelCase = (value) => {
|
|
109
|
+
const studly = studlyCase(value);
|
|
110
|
+
return studly.charAt(0).toLowerCase() + studly.slice(1);
|
|
111
|
+
};
|
|
112
|
+
var snakeCase = (value) => {
|
|
113
|
+
return value.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/[\s-]+/g, "_").toLowerCase();
|
|
114
|
+
};
|
|
115
|
+
var kebabCase = (value) => {
|
|
116
|
+
return value.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
|
|
117
|
+
};
|
|
118
|
+
var studlyCase = (value) => {
|
|
119
|
+
return value.replace(/[_-]/g, " ").replace(/\s+(.)/g, (_, c) => c.toUpperCase()).replace(/^(.)/, (_, c) => c.toUpperCase()).replace(/\s+/g, "");
|
|
120
|
+
};
|
|
121
|
+
var titleCase = (value) => {
|
|
122
|
+
return value.replace(/\w\S*/g, (txt) => {
|
|
123
|
+
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
var numberFormat = (value, decimals = 2, locale = "en-US") => {
|
|
127
|
+
return new Intl.NumberFormat(locale, {
|
|
128
|
+
minimumFractionDigits: decimals,
|
|
129
|
+
maximumFractionDigits: decimals
|
|
130
|
+
}).format(value);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export {
|
|
134
|
+
capitalize,
|
|
135
|
+
slugify,
|
|
136
|
+
strLimit,
|
|
137
|
+
normalizeString,
|
|
138
|
+
strContainsAll,
|
|
139
|
+
strContainsAny,
|
|
140
|
+
strFinish,
|
|
141
|
+
strStart,
|
|
142
|
+
strPadBoth,
|
|
143
|
+
strPadLeft,
|
|
144
|
+
strPadRight,
|
|
145
|
+
strReverse,
|
|
146
|
+
strRemove,
|
|
147
|
+
strMask,
|
|
148
|
+
strWordCount,
|
|
149
|
+
strWords,
|
|
150
|
+
camelCase,
|
|
151
|
+
snakeCase,
|
|
152
|
+
kebabCase,
|
|
153
|
+
studlyCase,
|
|
154
|
+
titleCase,
|
|
155
|
+
numberFormat
|
|
156
|
+
};
|