@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 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
@@ -39,5 +39,5 @@
39
39
  "registry": "https://registry.npmjs.org/",
40
40
  "access": "public"
41
41
  },
42
- "version": "2.1.2"
42
+ "version": "2.1.3"
43
43
  }