@jackens/nnn 2026.2.25 → 2026.2.26
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/nnn.js +16 -18
- package/package.json +1 -1
- package/readme.md +13 -1
package/nnn.js
CHANGED
|
@@ -311,24 +311,22 @@ var pick = (ref, keys) => Object.fromEntries(Object.entries(ref).filter(([key])
|
|
|
311
311
|
var ARRAY_INDEX_REGEXP = /^(0|[1-9]\d*)$/;
|
|
312
312
|
var isObject = (ref) => typeof ref === "object";
|
|
313
313
|
var getTarget = (parent, parentKey, key) => parent[parentKey] ??= isString(key) && ARRAY_INDEX_REGEXP.test(key) ? [] : {};
|
|
314
|
-
var _vivify = (parent, parentKey) => {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}) : parent?.[parentKey];
|
|
331
|
-
};
|
|
314
|
+
var _vivify = (parent, parentKey) => new Proxy(parent, {
|
|
315
|
+
get(_, key) {
|
|
316
|
+
const target = getTarget(parent, parentKey, key);
|
|
317
|
+
const value = target[key];
|
|
318
|
+
return isString(key) && isObject(target) && (value == null || isObject(value)) ? _vivify(target, key) : value;
|
|
319
|
+
},
|
|
320
|
+
set(_, key, value) {
|
|
321
|
+
const target = getTarget(parent, parentKey, key);
|
|
322
|
+
target[key] = value;
|
|
323
|
+
return true;
|
|
324
|
+
},
|
|
325
|
+
deleteProperty(_, key) {
|
|
326
|
+
const target = getTarget(parent, parentKey, key);
|
|
327
|
+
return delete target[key];
|
|
328
|
+
}
|
|
329
|
+
});
|
|
332
330
|
var vivify = (ref) => _vivify({ _: ref }, "_");
|
|
333
331
|
|
|
334
332
|
// src/nnn/rwd.ts
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# nnn
|
|
2
2
|
|
|
3
|
-
A collection of Jackens’ JavaScript helper utilities (version: `2026.2.
|
|
3
|
+
A collection of Jackens’ JavaScript helper utilities (version: `2026.2.26`).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -1355,6 +1355,18 @@ expect(ref).to.deep.equal({ one: { two: { three: { four: 5 } } } })
|
|
|
1355
1355
|
expect(vivify(ref).one.two.three.four.toString.name).to.equal('toString')
|
|
1356
1356
|
|
|
1357
1357
|
expect(ref).to.deep.equal({ one: { two: { three: { four: 5 } } } })
|
|
1358
|
+
|
|
1359
|
+
const u = undefined
|
|
1360
|
+
|
|
1361
|
+
vivify(u).one.two = 3
|
|
1362
|
+
|
|
1363
|
+
expect(u).to.be.undefined
|
|
1364
|
+
|
|
1365
|
+
const n = null
|
|
1366
|
+
|
|
1367
|
+
delete vivify(n).one.two.three
|
|
1368
|
+
|
|
1369
|
+
expect(n).to.be.null
|
|
1358
1370
|
```
|
|
1359
1371
|
|
|
1360
1372
|
## License
|