@rebasepro/utils 0.0.1-canary.4d4fb3e

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.
@@ -0,0 +1,585 @@
1
+ (function(global, factory) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("object-hash"), require("@rebasepro/types")) : typeof define === "function" && define.amd ? define(["exports", "object-hash", "@rebasepro/types"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["Rebase Util"] = {}, global.hash, global.types));
3
+ })(this, function(exports2, hash, types) {
4
+ "use strict";
5
+ const kebabCaseRegex = /[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g;
6
+ const toKebabCase = (str) => {
7
+ const regExpMatchArray = str.match(kebabCaseRegex);
8
+ if (!regExpMatchArray) return "";
9
+ return regExpMatchArray.map((x) => x.toLowerCase()).join("-");
10
+ };
11
+ const snakeCaseRegex = /[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g;
12
+ const toSnakeCase = (str) => {
13
+ const regExpMatchArray = str.match(snakeCaseRegex);
14
+ if (!regExpMatchArray) return "";
15
+ return regExpMatchArray.map((x) => x.toLowerCase()).join("_");
16
+ };
17
+ function randomString(strLength = 5) {
18
+ return Math.random().toString(36).slice(2, 2 + strLength);
19
+ }
20
+ function randomColor() {
21
+ return Math.floor(Math.random() * 16777215).toString(16);
22
+ }
23
+ function slugify(text, separator = "_", lowercase = true) {
24
+ if (!text) return "";
25
+ const from = "ãàáäâẽèéëêìíïîõòóöôùúüûñç·/_,:;-";
26
+ const to = `aaaaaeeeeeiiiiooooouuuunc${separator}${separator}${separator}${separator}${separator}${separator}${separator}`;
27
+ for (let i = 0, l = from.length; i < l; i++) {
28
+ text = text.replace(new RegExp(from.charAt(i), "g"), to.charAt(i));
29
+ }
30
+ text = text.toString().trim().replace(/^\s+|\s+$/g, "").replace(/\s+/g, separator).replace(/&/g, separator).replace(/[^\w\\-]+/g, "").replace(new RegExp("\\" + separator + "\\" + separator + "+", "g"), separator);
31
+ return lowercase ? text.toLowerCase() : text;
32
+ }
33
+ function unslugify(slug) {
34
+ if (!slug) return "";
35
+ if (slug.includes("-") || slug.includes("_") || !slug.includes(" ")) {
36
+ const result = slug.replace(/[-_]/g, " ");
37
+ return result.replace(/\w\S*/g, function(txt) {
38
+ return txt.charAt(0).toUpperCase() + txt.substring(1);
39
+ }).trim();
40
+ } else {
41
+ return slug.trim();
42
+ }
43
+ }
44
+ function prettifyIdentifier(input) {
45
+ if (!input) return "";
46
+ let text = input;
47
+ text = text.replace(/([a-z])([A-Z])|([A-Z])([A-Z][a-z])/g, "$1$3 $2$4");
48
+ text = text.replace(/[_-]+/g, " ");
49
+ const s = text.trim().replace(/\b\w/g, (char) => char.toUpperCase());
50
+ console.log("Prettified identifier:", {
51
+ input,
52
+ s
53
+ });
54
+ return s;
55
+ }
56
+ const isEmptyArray = (value) => Array.isArray(value) && value.length === 0;
57
+ const isFunction = (obj) => typeof obj === "function";
58
+ const isInteger = (obj) => String(Math.floor(Number(obj))) === String(obj);
59
+ const isNaN = (obj) => obj !== obj;
60
+ function getIn(obj, key, def, p = 0) {
61
+ const path = toPath(key);
62
+ while (obj && p < path.length) {
63
+ obj = obj[path[p++]];
64
+ }
65
+ if (p !== path.length && !obj) {
66
+ return def;
67
+ }
68
+ return obj === void 0 ? def : obj;
69
+ }
70
+ function setIn(obj, path, value) {
71
+ const res = clone(obj);
72
+ let resVal = res;
73
+ let i = 0;
74
+ const pathArray = toPath(path);
75
+ for (; i < pathArray.length - 1; i++) {
76
+ const currentPath = pathArray[i];
77
+ const currentObj = getIn(obj, pathArray.slice(0, i + 1));
78
+ if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {
79
+ resVal = resVal[currentPath] = clone(currentObj);
80
+ } else {
81
+ const nextPath = pathArray[i + 1];
82
+ resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};
83
+ }
84
+ }
85
+ if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {
86
+ return obj;
87
+ }
88
+ if (value === void 0) {
89
+ delete resVal[pathArray[i]];
90
+ } else {
91
+ resVal[pathArray[i]] = value;
92
+ }
93
+ if (i === 0 && value === void 0) {
94
+ delete res[pathArray[i]];
95
+ }
96
+ return res;
97
+ }
98
+ function clone(value) {
99
+ if (Array.isArray(value)) {
100
+ return [...value];
101
+ } else if (typeof value === "object" && value !== null) {
102
+ return {
103
+ ...value
104
+ };
105
+ } else {
106
+ return value;
107
+ }
108
+ }
109
+ function toPath(value) {
110
+ if (Array.isArray(value)) return value;
111
+ return value.replace(/\[(\d+)]/g, ".$1").replace(/^\./, "").replace(/\.$/, "").split(".");
112
+ }
113
+ const pick = (obj, ...args) => ({
114
+ ...args.reduce((res, key) => ({
115
+ ...res,
116
+ [key]: obj[key]
117
+ }), {})
118
+ });
119
+ function isObject(item) {
120
+ return !!item && typeof item === "object" && !Array.isArray(item);
121
+ }
122
+ function isPlainObject(obj) {
123
+ if (typeof obj !== "object" || obj === null || Array.isArray(obj)) {
124
+ return false;
125
+ }
126
+ const proto = Object.getPrototypeOf(obj);
127
+ return proto === Object.prototype;
128
+ }
129
+ function mergeDeep(target, source, ignoreUndefined = false) {
130
+ if (!isObject(target)) {
131
+ return target;
132
+ }
133
+ const output = {
134
+ ...target
135
+ };
136
+ if (!isObject(source)) {
137
+ return output;
138
+ }
139
+ for (const key in source) {
140
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
141
+ const sourceValue = source[key];
142
+ const outputValue = output[key];
143
+ if (ignoreUndefined && sourceValue === void 0) {
144
+ continue;
145
+ }
146
+ if (sourceValue instanceof Date) {
147
+ output[key] = new Date(sourceValue.getTime());
148
+ } else if (Array.isArray(sourceValue)) {
149
+ if (Array.isArray(outputValue)) {
150
+ const newArray = [];
151
+ const maxLength = Math.max(outputValue.length, sourceValue.length);
152
+ for (let i = 0; i < maxLength; i++) {
153
+ const sourceItem = sourceValue[i];
154
+ const targetItem = outputValue[i];
155
+ if (i >= sourceValue.length) {
156
+ newArray[i] = targetItem;
157
+ } else if (i >= outputValue.length) {
158
+ newArray[i] = sourceItem;
159
+ } else if (sourceItem === null) {
160
+ newArray[i] = targetItem;
161
+ } else if (isPlainObject(sourceItem) && isPlainObject(targetItem)) {
162
+ newArray[i] = mergeDeep(targetItem, sourceItem, ignoreUndefined);
163
+ } else {
164
+ newArray[i] = sourceItem;
165
+ }
166
+ }
167
+ output[key] = newArray;
168
+ } else {
169
+ output[key] = [...sourceValue];
170
+ }
171
+ } else if (isPlainObject(sourceValue)) {
172
+ if (isPlainObject(outputValue)) {
173
+ output[key] = mergeDeep(outputValue, sourceValue, ignoreUndefined);
174
+ } else {
175
+ output[key] = sourceValue;
176
+ }
177
+ } else if (isObject(sourceValue)) {
178
+ output[key] = sourceValue;
179
+ } else {
180
+ output[key] = sourceValue;
181
+ }
182
+ }
183
+ }
184
+ return output;
185
+ }
186
+ function getValueInPath(o, path) {
187
+ if (!o) return void 0;
188
+ if (typeof o === "object") {
189
+ if (path in o) {
190
+ return o[path];
191
+ }
192
+ if (path.includes(".") || path.includes("[")) {
193
+ let pathSegments = path.split(/[.[]/);
194
+ if (path.includes("[")) {
195
+ pathSegments = pathSegments.map((segment) => segment.replace("]", ""));
196
+ }
197
+ const firstSegment = pathSegments[0];
198
+ const isArrayAndIndexExists = Array.isArray(o[firstSegment]) && !isNaN(parseInt(pathSegments[1]));
199
+ const nextObject = isArrayAndIndexExists ? o[firstSegment][parseInt(pathSegments[1])] : o[firstSegment];
200
+ const nextPath = pathSegments.slice(isArrayAndIndexExists ? 2 : 1).join(".");
201
+ if (nextPath === "") return nextObject;
202
+ return getValueInPath(nextObject, nextPath);
203
+ }
204
+ }
205
+ return void 0;
206
+ }
207
+ function removeInPath(o, path) {
208
+ let currentObject = {
209
+ ...o
210
+ };
211
+ const parts = path.split(".");
212
+ const last = parts.pop();
213
+ for (const part of parts) {
214
+ currentObject = currentObject[part];
215
+ }
216
+ if (last) delete currentObject[last];
217
+ return currentObject;
218
+ }
219
+ function removeFunctions(o) {
220
+ if (o === void 0) return void 0;
221
+ if (o === null) return null;
222
+ if (typeof o === "object") {
223
+ if (Array.isArray(o)) {
224
+ return o.map((v) => removeFunctions(v));
225
+ }
226
+ if (!isPlainObject(o)) {
227
+ return o;
228
+ }
229
+ return Object.entries(o).filter(([_, value]) => typeof value !== "function").map(([key, value]) => {
230
+ if (Array.isArray(value)) {
231
+ return {
232
+ [key]: value.map((v) => removeFunctions(v))
233
+ };
234
+ } else if (typeof value === "object") {
235
+ return {
236
+ [key]: removeFunctions(value)
237
+ };
238
+ } else return {
239
+ [key]: value
240
+ };
241
+ }).reduce((a, b) => ({
242
+ ...a,
243
+ ...b
244
+ }), {});
245
+ }
246
+ return o;
247
+ }
248
+ function getHashValue(v) {
249
+ if (!v) return null;
250
+ if (typeof v === "object" && v !== null) {
251
+ if ("id" in v) return String(v.id);
252
+ else if (v instanceof Date) return v.toLocaleString();
253
+ else if (v instanceof types.GeoPoint) return hash(v);
254
+ }
255
+ return hash(v, {
256
+ ignoreUnknown: true
257
+ });
258
+ }
259
+ function removeUndefined(value, removeEmptyStrings) {
260
+ if (typeof value === "function") {
261
+ return value;
262
+ }
263
+ if (Array.isArray(value)) {
264
+ return value.map((v) => removeUndefined(v, removeEmptyStrings));
265
+ }
266
+ if (typeof value === "object") {
267
+ if (value === null) return value;
268
+ if (!isPlainObject(value)) {
269
+ return value;
270
+ }
271
+ const res = {};
272
+ Object.keys(value).forEach((key) => {
273
+ if (!isEmptyObject(value)) {
274
+ const childRes = removeUndefined(value[key], removeEmptyStrings);
275
+ const isString = typeof childRes === "string";
276
+ const shouldKeepIfString = !removeEmptyStrings || removeEmptyStrings && !isString || removeEmptyStrings && isString && childRes !== "";
277
+ if (childRes !== void 0 && !isEmptyObject(childRes) && shouldKeepIfString) res[key] = childRes;
278
+ }
279
+ });
280
+ return res;
281
+ }
282
+ return value;
283
+ }
284
+ function removeNulls(value) {
285
+ if (typeof value === "function") {
286
+ return value;
287
+ }
288
+ if (Array.isArray(value)) {
289
+ return value.map((v) => removeNulls(v));
290
+ }
291
+ if (typeof value === "object") {
292
+ if (value === null) return value;
293
+ if (!isPlainObject(value)) {
294
+ return value;
295
+ }
296
+ const res = {};
297
+ const obj = value;
298
+ Object.keys(obj).forEach((key) => {
299
+ if (obj[key] !== null) res[key] = removeNulls(obj[key]);
300
+ });
301
+ return res;
302
+ }
303
+ return value;
304
+ }
305
+ function isEmptyObject(obj) {
306
+ return obj && Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length === 0;
307
+ }
308
+ function removePropsIfExisting(source, comparison) {
309
+ const isObject2 = (val) => typeof val === "object" && val !== null;
310
+ const isArray = (val) => Array.isArray(val);
311
+ if (!isObject2(source) || !isObject2(comparison)) {
312
+ return source;
313
+ }
314
+ const res = isArray(source) ? [...source] : {
315
+ ...source
316
+ };
317
+ if (isArray(res)) {
318
+ for (let i = res.length - 1; i >= 0; i--) {
319
+ if (res[i] === comparison[i]) {
320
+ res.splice(i, 1);
321
+ } else if (isObject2(res[i]) && isObject2(comparison[i])) {
322
+ res[i] = removePropsIfExisting(res[i], comparison[i]);
323
+ }
324
+ }
325
+ } else {
326
+ Object.keys(comparison).forEach((key) => {
327
+ if (key in res) {
328
+ if (isObject2(res[key]) && isObject2(comparison[key])) {
329
+ res[key] = removePropsIfExisting(res[key], comparison[key]);
330
+ } else if (res[key] === comparison[key]) {
331
+ delete res[key];
332
+ }
333
+ }
334
+ });
335
+ }
336
+ return res;
337
+ }
338
+ function toArray(input) {
339
+ return Array.isArray(input) ? input : input ? [input] : [];
340
+ }
341
+ const defaultDateFormat = "MMMM dd, yyyy, HH:mm:ss";
342
+ function hashString(str) {
343
+ if (!str) return 0;
344
+ let hash2 = 0;
345
+ let i;
346
+ let chr;
347
+ for (i = 0; i < str.length; i++) {
348
+ chr = str.charCodeAt(i);
349
+ hash2 = (hash2 << 5) - hash2 + chr;
350
+ hash2 |= 0;
351
+ }
352
+ return Math.abs(hash2);
353
+ }
354
+ function serializeRegExp(input) {
355
+ if (!input) return "";
356
+ return input.toString();
357
+ }
358
+ function hydrateRegExp(input) {
359
+ if (!input) return void 0;
360
+ const fragments = input.match(/\/(.*?)\/([a-z]*)?$/i);
361
+ if (fragments) {
362
+ return new RegExp(fragments[1], fragments[2] || "");
363
+ } else {
364
+ return new RegExp(input, "");
365
+ }
366
+ }
367
+ function isValidRegExp(input) {
368
+ const fullRegexp = input.match(/\/((?![*+?])(?:[^\r\n[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/);
369
+ if (fullRegexp) return true;
370
+ const simpleRegexp = input.match(/((?![*+?])(?:[^\r\n[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*])+)/);
371
+ return !!simpleRegexp;
372
+ }
373
+ function flattenObject(obj, parentKey = "") {
374
+ if (!obj) return obj;
375
+ return Object.keys(obj).reduce((flatObj, key) => {
376
+ const newKey = parentKey ? `${parentKey}.${key}` : key;
377
+ if (typeof obj[key] === "object" && obj[key] !== null) {
378
+ if (Array.isArray(obj[key])) {
379
+ obj[key].forEach((item, index) => {
380
+ Object.assign(flatObj, flattenObject(item, `${newKey}[${index}]`));
381
+ });
382
+ } else {
383
+ Object.assign(flatObj, flattenObject(obj[key], newKey));
384
+ }
385
+ } else {
386
+ flatObj[newKey] = obj[key];
387
+ }
388
+ return flatObj;
389
+ }, {});
390
+ }
391
+ function getArrayValuesCount(array) {
392
+ return array.reduce((acc, obj) => {
393
+ Object.entries(obj).forEach(([key, value]) => {
394
+ if (Array.isArray(value)) {
395
+ acc[key] = Math.max(acc[key] || 0, value.length);
396
+ }
397
+ if (typeof value === "object" && value !== null) {
398
+ const nested = getArrayValuesCount([value]);
399
+ Object.entries(nested).forEach(([nestedKey, nestedCount]) => {
400
+ const compoundKey = `${key}.${nestedKey}`;
401
+ acc[compoundKey] = Math.max(acc[compoundKey] || 0, nestedCount);
402
+ });
403
+ }
404
+ });
405
+ return acc;
406
+ }, {});
407
+ }
408
+ function plural(word, amount) {
409
+ if (amount !== void 0 && amount === 1) {
410
+ return word;
411
+ }
412
+ const plurals = {
413
+ "(quiz)$": "$1zes",
414
+ "^(ox)$": "$1en",
415
+ "([m|l])ouse$": "$1ice",
416
+ "(matr|vert|ind)ix|ex$": "$1ices",
417
+ "(x|ch|ss|sh)$": "$1es",
418
+ "([^aeiouy]|qu)y$": "$1ies",
419
+ "(hive)$": "$1s",
420
+ "(?:([^f])fe|([lr])f)$": "$1$2ves",
421
+ "(shea|lea|loa|thie)f$": "$1ves",
422
+ sis$: "ses",
423
+ "([ti])um$": "$1a",
424
+ "(tomat|potat|ech|her|vet)o$": "$1oes",
425
+ "(bu)s$": "$1ses",
426
+ "(alias)$": "$1es",
427
+ "(octop)us$": "$1i",
428
+ "(ax|test)is$": "$1es",
429
+ "(us)$": "$1es",
430
+ "([^s]+)$": "$1s"
431
+ };
432
+ const irregular = {
433
+ move: "moves",
434
+ foot: "feet",
435
+ goose: "geese",
436
+ sex: "sexes",
437
+ child: "children",
438
+ man: "men",
439
+ tooth: "teeth",
440
+ person: "people"
441
+ };
442
+ const uncountable = ["sheep", "fish", "deer", "moose", "series", "species", "money", "rice", "information", "equipment", "bison", "cod", "offspring", "pike", "salmon", "shrimp", "swine", "trout", "aircraft", "hovercraft", "spacecraft", "sugar", "tuna", "you", "wood"];
443
+ if (uncountable.indexOf(word.toLowerCase()) >= 0) {
444
+ return word;
445
+ }
446
+ for (const w in irregular) {
447
+ const pattern = new RegExp(`${w}$`, "i");
448
+ const replace = irregular[w];
449
+ if (pattern.test(word)) {
450
+ return word.replace(pattern, replace);
451
+ }
452
+ }
453
+ for (const reg in plurals) {
454
+ const pattern = new RegExp(reg, "i");
455
+ if (pattern.test(word)) {
456
+ return word.replace(pattern, plurals[reg]);
457
+ }
458
+ }
459
+ return word;
460
+ }
461
+ function singular(word, amount) {
462
+ if (amount !== void 0 && amount !== 1) {
463
+ return word;
464
+ }
465
+ const singulars = {
466
+ "(quiz)zes$": "$1",
467
+ "(matr)ices$": "$1ix",
468
+ "(vert|ind)ices$": "$1ex",
469
+ "^(ox)en$": "$1",
470
+ "(alias)es$": "$1",
471
+ "(octop|vir)i$": "$1us",
472
+ "(cris|ax|test)es$": "$1is",
473
+ "(shoe)s$": "$1",
474
+ "(o)es$": "$1",
475
+ "(bus)es$": "$1",
476
+ "([m|l])ice$": "$1ouse",
477
+ "(x|ch|ss|sh)es$": "$1",
478
+ "(m)ovies$": "$1ovie",
479
+ "(s)eries$": "$1eries",
480
+ "([^aeiouy]|qu)ies$": "$1y",
481
+ "([lr])ves$": "$1f",
482
+ "(tive)s$": "$1",
483
+ "(hive)s$": "$1",
484
+ "(li|wi|kni)ves$": "$1fe",
485
+ "(shea|loa|lea|thie)ves$": "$1f",
486
+ "(^analy)ses$": "$1sis",
487
+ "((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$": "$1$2sis",
488
+ "([ti])a$": "$1um",
489
+ "(n)ews$": "$1ews",
490
+ "(h|bl)ouses$": "$1ouse",
491
+ "(corpse)s$": "$1",
492
+ "(us)es$": "$1",
493
+ s$: ""
494
+ };
495
+ const irregular = {
496
+ move: "moves",
497
+ foot: "feet",
498
+ goose: "geese",
499
+ sex: "sexes",
500
+ child: "children",
501
+ man: "men",
502
+ tooth: "teeth",
503
+ person: "people"
504
+ };
505
+ const uncountable = ["sheep", "fish", "deer", "moose", "series", "species", "money", "rice", "information", "equipment", "bison", "cod", "offspring", "pike", "salmon", "shrimp", "swine", "trout", "aircraft", "hovercraft", "spacecraft", "sugar", "tuna", "you", "wood"];
506
+ if (uncountable.indexOf(word.toLowerCase()) >= 0) {
507
+ return word;
508
+ }
509
+ for (const w in irregular) {
510
+ const pattern = new RegExp(`${irregular[w]}$`, "i");
511
+ if (pattern.test(word)) {
512
+ return word.replace(pattern, w);
513
+ }
514
+ }
515
+ for (const reg in singulars) {
516
+ const pattern = new RegExp(reg, "i");
517
+ if (pattern.test(word)) {
518
+ return word.replace(pattern, singulars[reg]);
519
+ }
520
+ }
521
+ return word;
522
+ }
523
+ function getOS() {
524
+ let OS = "Unknown";
525
+ if (navigator.userAgent.indexOf("Win") !== -1) OS = "Windows";
526
+ if (navigator.userAgent.indexOf("Mac") !== -1) OS = "MacOS";
527
+ if (navigator.userAgent.indexOf("X11") !== -1) OS = "UNIX";
528
+ if (navigator.userAgent.indexOf("Linux") !== -1) OS = "Linux";
529
+ return OS;
530
+ }
531
+ function getAltSymbol() {
532
+ if (getOS() === "MacOS") return "⌥";
533
+ return "Alt";
534
+ }
535
+ function generateForeignKeyName(name) {
536
+ const snakeCaseName = toSnakeCase(name);
537
+ const singularName = snakeCaseName.endsWith("s") ? snakeCaseName.slice(0, -1) : snakeCaseName;
538
+ return `${singularName}_id`;
539
+ }
540
+ function isDefaultFieldConfigId(id) {
541
+ return ["text_field", "multiline", "markdown", "url", "email", "switch", "select", "multi_select", "number_input", "number_select", "multi_number_select", "file_upload", "multi_file_upload", "reference_as_string", "reference", "multi_references", "relation", "date_time", "group", "key_value", "repeat", "custom_array", "block"].includes(id);
542
+ }
543
+ exports2.clone = clone;
544
+ exports2.defaultDateFormat = defaultDateFormat;
545
+ exports2.flattenObject = flattenObject;
546
+ exports2.generateForeignKeyName = generateForeignKeyName;
547
+ exports2.getAltSymbol = getAltSymbol;
548
+ exports2.getArrayValuesCount = getArrayValuesCount;
549
+ exports2.getHashValue = getHashValue;
550
+ exports2.getIn = getIn;
551
+ exports2.getOS = getOS;
552
+ exports2.getValueInPath = getValueInPath;
553
+ exports2.hashString = hashString;
554
+ exports2.hydrateRegExp = hydrateRegExp;
555
+ exports2.isDefaultFieldConfigId = isDefaultFieldConfigId;
556
+ exports2.isEmptyArray = isEmptyArray;
557
+ exports2.isEmptyObject = isEmptyObject;
558
+ exports2.isFunction = isFunction;
559
+ exports2.isInteger = isInteger;
560
+ exports2.isNaN = isNaN;
561
+ exports2.isObject = isObject;
562
+ exports2.isPlainObject = isPlainObject;
563
+ exports2.isValidRegExp = isValidRegExp;
564
+ exports2.mergeDeep = mergeDeep;
565
+ exports2.pick = pick;
566
+ exports2.plural = plural;
567
+ exports2.prettifyIdentifier = prettifyIdentifier;
568
+ exports2.randomColor = randomColor;
569
+ exports2.randomString = randomString;
570
+ exports2.removeFunctions = removeFunctions;
571
+ exports2.removeInPath = removeInPath;
572
+ exports2.removeNulls = removeNulls;
573
+ exports2.removePropsIfExisting = removePropsIfExisting;
574
+ exports2.removeUndefined = removeUndefined;
575
+ exports2.serializeRegExp = serializeRegExp;
576
+ exports2.setIn = setIn;
577
+ exports2.singular = singular;
578
+ exports2.slugify = slugify;
579
+ exports2.toArray = toArray;
580
+ exports2.toKebabCase = toKebabCase;
581
+ exports2.toSnakeCase = toSnakeCase;
582
+ exports2.unslugify = unslugify;
583
+ Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
584
+ });
585
+ //# sourceMappingURL=index.umd.js.map