sia-reactor 0.0.8 → 0.0.10
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/chunk-DW7Z7YEA.js +143 -0
- package/dist/chunk-KLH6P5BH.js +576 -0
- package/dist/index-DUqRClya.d.cts +497 -0
- package/dist/index-DUqRClya.d.ts +497 -0
- package/dist/index.cjs +103 -100
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.global.js +103 -100
- package/dist/index.js +19 -650
- package/dist/react.cjs +690 -0
- package/dist/react.d.cts +11 -0
- package/dist/react.d.ts +11 -0
- package/dist/react.global.js +2883 -0
- package/dist/react.js +70 -0
- package/dist/utils.cjs +10 -25
- package/dist/utils.d.cts +1 -499
- package/dist/utils.d.ts +1 -499
- package/dist/utils.global.js +9 -21
- package/dist/utils.js +17 -139
- package/package.json +12 -2
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// src/utils/obj.ts
|
|
2
|
+
var arrRx = /^([^\[\]]+)\[(\d+)\]$/;
|
|
3
|
+
function isDef(val) {
|
|
4
|
+
return "undefined" !== typeof val;
|
|
5
|
+
}
|
|
6
|
+
function isObj(obj, checkArr = true) {
|
|
7
|
+
return "object" === typeof obj && obj !== null && (checkArr ? !Array.isArray(obj) : true);
|
|
8
|
+
}
|
|
9
|
+
function isStrictObj(obj, crossRealms = false, typecheck = true) {
|
|
10
|
+
return (typecheck ? isObj(obj, false) : true) && (crossRealms ? Object.prototype.toString.call(obj) === "[object Object]" : obj.constructor === Object);
|
|
11
|
+
}
|
|
12
|
+
function setAny(target, key, value, separator = ".", keyFunc) {
|
|
13
|
+
if (!key.includes(separator)) return void (target[keyFunc ? keyFunc(key) : key] = value);
|
|
14
|
+
const keys = key.split(separator);
|
|
15
|
+
for (let currObj = target, i = 0, len = keys.length; i < len; i++) {
|
|
16
|
+
const key2 = keyFunc ? keyFunc(keys[i]) : keys[i], match = key2.includes("[") && key2.match(arrRx);
|
|
17
|
+
if (match) {
|
|
18
|
+
const [, key3, iStr] = match;
|
|
19
|
+
if (!Array.isArray(currObj[key3])) currObj[key3] = [];
|
|
20
|
+
if (i === len - 1) currObj[key3][Number(iStr)] = value;
|
|
21
|
+
else currObj[key3][Number(iStr)] ||= {}, currObj = currObj[key3][Number(iStr)];
|
|
22
|
+
} else {
|
|
23
|
+
if (i === len - 1) currObj[key2] = value;
|
|
24
|
+
else currObj[key2] ||= {}, currObj = currObj[key2];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function getAny(source, key, separator = ".", keyFunc) {
|
|
29
|
+
if (!key.includes(separator)) return source[keyFunc ? keyFunc(key) : key];
|
|
30
|
+
const keys = key.split(separator);
|
|
31
|
+
let currObj = source;
|
|
32
|
+
for (let i = 0, len = keys.length; i < len; i++) {
|
|
33
|
+
const key2 = keyFunc ? keyFunc(keys[i]) : keys[i], match = key2.includes("[") && key2.match(arrRx);
|
|
34
|
+
if (match) {
|
|
35
|
+
const [, key3, iStr] = match;
|
|
36
|
+
if (!Array.isArray(currObj[key3]) || !(key3 in currObj)) return void 0;
|
|
37
|
+
currObj = currObj[key3][Number(iStr)];
|
|
38
|
+
} else {
|
|
39
|
+
if (!isObj(currObj) || !(key2 in currObj)) return void 0;
|
|
40
|
+
currObj = currObj[key2];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return currObj;
|
|
44
|
+
}
|
|
45
|
+
function deleteAny(target, key, separator = ".", keyFunc) {
|
|
46
|
+
if (!key.includes(separator)) return void delete target[keyFunc ? keyFunc(key) : key];
|
|
47
|
+
const keys = key.split(separator);
|
|
48
|
+
for (let currObj = target, i = 0, len = keys.length; i < len; i++) {
|
|
49
|
+
const key2 = keyFunc ? keyFunc(keys[i]) : keys[i], match = key2.includes("[") && key2.match(arrRx);
|
|
50
|
+
if (match) {
|
|
51
|
+
const [, key3, iStr] = match;
|
|
52
|
+
if (!Array.isArray(currObj[key3]) || !(key3 in currObj)) return;
|
|
53
|
+
if (i === len - 1) delete currObj[key3][Number(iStr)];
|
|
54
|
+
else currObj = currObj[key3][Number(iStr)];
|
|
55
|
+
} else {
|
|
56
|
+
if (!isObj(currObj) || !(key2 in currObj)) return;
|
|
57
|
+
if (i === len - 1) delete currObj[key2];
|
|
58
|
+
else currObj = currObj[key2];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function inAny(source, key, separator = ".", keyFunc) {
|
|
63
|
+
if (!key.includes(separator)) return key in source;
|
|
64
|
+
const keys = key.split(separator);
|
|
65
|
+
for (let currObj = source, i = 0, len = keys.length; i < len; i++) {
|
|
66
|
+
const key2 = keyFunc ? keyFunc(keys[i]) : keys[i], match = key2.includes("[") && key2.match(arrRx);
|
|
67
|
+
if (match) {
|
|
68
|
+
const [, key3, iStr] = match;
|
|
69
|
+
if (!Array.isArray(currObj[key3]) || !(key3 in currObj)) return false;
|
|
70
|
+
if (i === len - 1) return true;
|
|
71
|
+
currObj = currObj[key3][Number(iStr)];
|
|
72
|
+
} else {
|
|
73
|
+
if (!isObj(currObj) || !(key2 in currObj)) return false;
|
|
74
|
+
if (i === len - 1) return true;
|
|
75
|
+
currObj = currObj[key2];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
function parseAnyObj(obj, separator = ".", keyFunc = (p) => p, visited = /* @__PURE__ */ new WeakSet()) {
|
|
81
|
+
if (!isObj(obj) || visited.has(obj)) return obj;
|
|
82
|
+
visited.add(obj);
|
|
83
|
+
const result = {};
|
|
84
|
+
Object.keys(obj).forEach((k) => k.includes(separator) ? setAny(result, k, parseAnyObj(obj[k], separator, keyFunc, visited), separator, keyFunc) : result[k] = isObj(obj[k]) ? parseAnyObj(obj[k], separator, keyFunc, visited) : obj[k]);
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
function parseEvtOpts(options, opts, boolOpt = opts[0], result = {}) {
|
|
88
|
+
return Object.assign(result, "boolean" === typeof options ? { [boolOpt]: options } : options), result;
|
|
89
|
+
}
|
|
90
|
+
function mergeObjs(o1 = {}, o2 = {}) {
|
|
91
|
+
const merged = { ...o1 || {}, ...o2 || {} };
|
|
92
|
+
return Object.keys(merged).forEach((k) => isObj(o1?.[k]) && isObj(o2?.[k]) && (merged[k] = mergeObjs(o1[k], o2[k]))), merged;
|
|
93
|
+
}
|
|
94
|
+
function getTrailPaths(path, reverse = true) {
|
|
95
|
+
const parts = path.split("."), chain = ["*"];
|
|
96
|
+
let acc = "";
|
|
97
|
+
for (let i = 0, len = parts.length; i < len; i++) chain.push(acc += (i === 0 ? "" : ".") + parts[i]);
|
|
98
|
+
return reverse ? chain.reverse() : chain;
|
|
99
|
+
}
|
|
100
|
+
function getTrailRecords(obj, path) {
|
|
101
|
+
const parts = path.split("."), record = [["*", obj, obj]];
|
|
102
|
+
let acc = "", currObj = obj;
|
|
103
|
+
for (let i = 0, len = parts.length; i < len; i++) record.push([acc += (i ? "." : "") + parts[i], currObj, currObj = currObj?.[parts[i]]]);
|
|
104
|
+
return record;
|
|
105
|
+
}
|
|
106
|
+
function deepClone(obj, crossRealms, visited = /* @__PURE__ */ new WeakMap()) {
|
|
107
|
+
if (!(isStrictObj(obj, crossRealms) || Array.isArray(obj)) || visited.has(obj)) return obj;
|
|
108
|
+
const clone = Array.isArray(obj) ? [] : {};
|
|
109
|
+
visited.set(obj, clone);
|
|
110
|
+
const keys = Object.keys(obj);
|
|
111
|
+
for (let i = 0, len = keys.length; i < len; i++) clone[keys[i]] = deepClone(obj[keys[i]], crossRealms, visited);
|
|
112
|
+
return clone;
|
|
113
|
+
}
|
|
114
|
+
function nuke(target) {
|
|
115
|
+
let proto = target;
|
|
116
|
+
while (proto && proto !== Object.prototype) {
|
|
117
|
+
const keys = Object.getOwnPropertyNames(proto);
|
|
118
|
+
for (let i = 0, len = keys.length; i < len; i++) {
|
|
119
|
+
if (keys[i] === "constructor") continue;
|
|
120
|
+
const desc = Object.getOwnPropertyDescriptor(proto, keys[i]);
|
|
121
|
+
if (desc && ("function" === typeof desc.value || desc.get || desc.set)) continue;
|
|
122
|
+
proto[keys[i]] = null;
|
|
123
|
+
}
|
|
124
|
+
proto = Object.getPrototypeOf(proto);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
isDef,
|
|
130
|
+
isObj,
|
|
131
|
+
isStrictObj,
|
|
132
|
+
setAny,
|
|
133
|
+
getAny,
|
|
134
|
+
deleteAny,
|
|
135
|
+
inAny,
|
|
136
|
+
parseAnyObj,
|
|
137
|
+
parseEvtOpts,
|
|
138
|
+
mergeObjs,
|
|
139
|
+
getTrailPaths,
|
|
140
|
+
getTrailRecords,
|
|
141
|
+
deepClone,
|
|
142
|
+
nuke
|
|
143
|
+
};
|