@nsnanocat/util 2.1.2 → 2.1.3
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/README.md +2 -0
- package/getStorage.mjs +33 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -321,6 +321,8 @@ await runScript("$done({})", { timeout: 20 });
|
|
|
321
321
|
3. `PersistentStore` / `BoxJs`:`database[name]` -> `PersistentStore[name]`
|
|
322
322
|
4. `database`:仅 `database[name]`
|
|
323
323
|
|
|
324
|
+
注意:`Configs` 与 `Caches` 始终按每个 `name` 合并(与 `$argument.Storage` 无关)。
|
|
325
|
+
|
|
324
326
|
自动类型转换(`Root.Settings`):
|
|
325
327
|
- 字符串 `"true"/"false"` -> `boolean`
|
|
326
328
|
- 纯数字字符串 -> `number`
|
package/getStorage.mjs
CHANGED
|
@@ -17,6 +17,9 @@ import { Storage } from "./polyfill/Storage.mjs";
|
|
|
17
17
|
* 读取并合并默认配置、持久化配置与 `$argument`。
|
|
18
18
|
* Read and merge default config, persisted config and `$argument`.
|
|
19
19
|
*
|
|
20
|
+
* 注意:`Configs` 与 `Caches` 始终按每个 profile(`names`)合并;`Settings` 的合并顺序由 `$argument.Storage` 控制。
|
|
21
|
+
* Note: `Configs` and `Caches` are always merged per-profile (`names`); the merge order for `Settings` is controlled by `$argument.Storage`.
|
|
22
|
+
*
|
|
20
23
|
* 合并来源与顺序由 `$argument.Storage` 控制:
|
|
21
24
|
* Merge source order is controlled by `$argument.Storage`:
|
|
22
25
|
* - `undefined`(默认): `database[name]` -> `$argument` -> `PersistentStore[name]`
|
|
@@ -24,6 +27,7 @@ import { Storage } from "./polyfill/Storage.mjs";
|
|
|
24
27
|
* - `PersistentStore` / `BoxJs`: `database[name]` -> `PersistentStore[name]`
|
|
25
28
|
* - `database`: 仅 `database[name]`
|
|
26
29
|
*
|
|
30
|
+
* @since 2.1.2
|
|
27
31
|
* @link https://github.com/NanoCat-Me/utils/blob/main/getStorage.mjs
|
|
28
32
|
* @author VirgilClyne
|
|
29
33
|
* @param {string} key 持久化主键 / Persistent store key.
|
|
@@ -57,25 +61,38 @@ export function getStorage(key, names, database) {
|
|
|
57
61
|
}
|
|
58
62
|
/***************** Merge *****************/
|
|
59
63
|
names.forEach(name => {
|
|
60
|
-
switch ($argument.Storage) {
|
|
61
|
-
case "$argument":
|
|
62
|
-
_.merge(Root.Settings, database?.[name]?.Settings, PersistentStore?.[name]?.Settings, $argument);
|
|
63
|
-
break;
|
|
64
|
-
case "BoxJs":
|
|
65
|
-
case "PersistentStore":
|
|
66
|
-
_.merge(Root.Settings, database?.[name]?.Settings, PersistentStore?.[name]?.Settings);
|
|
67
|
-
break;
|
|
68
|
-
case "database":
|
|
69
|
-
_.merge(Root.Settings, database?.[name]?.Settings);
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
case undefined:
|
|
73
|
-
_.merge(Root.Settings, database?.[name]?.Settings, $argument, PersistentStore?.[name]?.Settings);
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
64
|
_.merge(Root.Configs, database?.[name]?.Configs);
|
|
77
65
|
_.merge(Root.Caches, PersistentStore?.[name]?.Caches);
|
|
78
66
|
});
|
|
67
|
+
switch ($argument.Storage) {
|
|
68
|
+
case "$argument":
|
|
69
|
+
names.forEach(name => {
|
|
70
|
+
_.merge(Root.Settings, database?.[name]?.Settings, PersistentStore?.[name]?.Settings);
|
|
71
|
+
});
|
|
72
|
+
_.merge(Root.Settings, $argument);
|
|
73
|
+
break;
|
|
74
|
+
case "BoxJs":
|
|
75
|
+
case "PersistentStore":
|
|
76
|
+
names.forEach(name => {
|
|
77
|
+
_.merge(Root.Settings, database?.[name]?.Settings, PersistentStore?.[name]?.Settings);
|
|
78
|
+
});
|
|
79
|
+
break;
|
|
80
|
+
case "database":
|
|
81
|
+
names.forEach(name => {
|
|
82
|
+
_.merge(Root.Settings, database?.[name]?.Settings);
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
case undefined:
|
|
87
|
+
names.forEach(name => {
|
|
88
|
+
_.merge(Root.Settings, database?.[name]?.Settings);
|
|
89
|
+
});
|
|
90
|
+
_.merge(Root.Settings, $argument);
|
|
91
|
+
names.forEach(name => {
|
|
92
|
+
_.merge(Root.Settings, PersistentStore?.[name]?.Settings);
|
|
93
|
+
});
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
79
96
|
if (Root.Settings.LogLevel) Console.logLevel = Root.Settings.LogLevel;
|
|
80
97
|
Console.debug("✅ Merge", `Root.Settings类型: ${typeof Root.Settings}`, `Root.Settings: ${JSON.stringify(Root.Settings)}`);
|
|
81
98
|
/***************** traverseObject *****************/
|
package/package.json
CHANGED