Skip to content

Commit 011da42

Browse files
committed
reorg utils to match api docs in order
1 parent da355ed commit 011da42

File tree

21 files changed

+346
-282
lines changed

21 files changed

+346
-282
lines changed

docs/src/helpers/menus.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -442,14 +442,14 @@ export const sidebarMenuAPI = [
442442
name: 'Numbers',
443443
url: '/api/utils/numbers'
444444
},
445-
{
446-
name: 'Types',
447-
url: '/api/utils/types'
448-
},
449445
{
450446
name: 'Objects',
451447
url: '/api/utils/objects'
452448
},
449+
{
450+
name: 'Types',
451+
url: '/api/utils/types'
452+
},
453453
{
454454
name: 'Regular Expressions',
455455
url: '/api/utils/regex'

packages/utils/src/arrays.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { get } from './objects.js';
2-
import { each, isEqual } from './collections.js';
2+
import { each, isEqual } from './looping.js';
33
import { isFunction } from './types.js';
44

55
/*-------------------

packages/utils/src/browser.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*-------------------
2-
Browser
2+
Browser
33
--------------------*/
44

55
export const copyText = (text) => {
@@ -66,16 +66,3 @@ export const getJSON = async (src, settings) => {
6666
;
6767
return await response.json();
6868
};
69-
70-
/*-------------------
71-
Constants
72-
--------------------*/
73-
74-
export const isServer = (() => {
75-
return typeof window === 'undefined';
76-
})();
77-
78-
export const isClient = (() => {
79-
return typeof window !== 'undefined';
80-
})();
81-

packages/utils/src/cloning.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
2+
/*-------------------
3+
Cloning
4+
--------------------*/
5+
6+
/*
7+
Clone an object or array
8+
*/
9+
// adapted from nanoclone <https://github.com/Kelin2025/nanoclone>
10+
export const clone = (src, seen = new Map()) => {
11+
if (!src || typeof src !== 'object') return src;
12+
13+
if (seen.has(src)) return seen.get(src);
14+
15+
let copy;
16+
if (src.nodeType && 'cloneNode' in src) {
17+
copy = src.cloneNode(true);
18+
seen.set(src, copy);
19+
}
20+
else if (src instanceof Date) {
21+
// Date
22+
copy = new Date(src.getTime());
23+
seen.set(src, copy);
24+
}
25+
else if (src instanceof RegExp) {
26+
// RegExp
27+
copy = new RegExp(src);
28+
seen.set(src, copy);
29+
}
30+
else if (Array.isArray(src)) {
31+
// Array
32+
copy = new Array(src.length);
33+
seen.set(src, copy);
34+
for (let i = 0; i < src.length; i++) copy[i] = clone(src[i], seen);
35+
}
36+
else if (src instanceof Map) {
37+
// Map
38+
copy = new Map();
39+
seen.set(src, copy);
40+
for (const [k, v] of src.entries()) copy.set(k, clone(v, seen));
41+
}
42+
else if (src instanceof Set) {
43+
// Set
44+
copy = new Set();
45+
seen.set(src, copy);
46+
for (const v of src) copy.add(clone(v, seen));
47+
}
48+
else if (src instanceof Object) {
49+
// Object
50+
copy = {};
51+
seen.set(src, copy);
52+
for (const [k, v] of Object.entries(src)) copy[k] = clone(v, seen);
53+
}
54+
55+
return copy;
56+
};

packages/utils/src/collections.js

Lines changed: 0 additions & 236 deletions
This file was deleted.

0 commit comments

Comments
 (0)