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