mm_config 2.1.3 → 2.1.4

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/test.js CHANGED
@@ -1,132 +1,192 @@
1
- const conf = require('./index.js');
2
- const createConfigAsync = conf.createConfigAsync;
1
+ const { create, createAsync, Config, clear, clearAll } = require('./index.js');
3
2
 
4
- // 测试同步API(向后兼容)
3
+ // 测试同步API
5
4
  function testSyncConfig() {
6
- console.log('=== 测试同步配置 API(向后兼容)===');
7
-
5
+ $.log.debug('=== 测试同步配置 API ===');
6
+
8
7
  // 方式1:提供配置对象和文件路径
9
- const config1 = conf({
8
+ const config1 = create("./config1.json", {
10
9
  name: "demo",
11
10
  state: 1
12
- }, "./config1.json");
13
-
11
+ });
12
+
14
13
  // 修改配置,会自动保存
15
14
  config1.name = "test1";
16
15
  config1.sort = 1;
17
- console.log('配置1:', config1);
18
-
19
- // 方式2:使用this.filename(兼容旧用法)
20
- const context = {
21
- filename: "./config2.json"
22
- };
23
-
24
- const config2 = conf.call(context, {
25
- name: "demo",
26
- state: 2
27
- });
28
-
16
+ $.log.debug('配置1:', config1);
17
+
18
+ // 方式2:创建空配置
19
+ const config2 = create("./config2.json");
20
+
29
21
  config2.name = "test2";
30
22
  config2.sort = 2;
31
- console.log('配置2:', config2);
32
-
23
+ $.log.debug('配置2:', config2);
24
+
33
25
  // 从文件加载配置
34
- const config3 = conf(null, "./config1.json");
35
- console.log('从文件加载的配置:', config3);
36
-
26
+ const config3 = create("./config1.json");
27
+ $.log.debug('从文件加载的配置:', config3);
28
+
37
29
  // 手动保存
38
30
  config3.age = 26;
39
31
  config3._saveSync(); // 显式调用保存
40
- console.log('更新后的配置3:', config3);
32
+ $.log.debug('更新后的配置3:', config3);
41
33
  }
42
34
 
43
35
  // 测试异步API
44
36
  async function testAsyncConfig() {
45
- console.log('\n=== 测试异步配置 API ===');
46
-
37
+ $.log.debug('\n=== 测试异步配置 API ===');
38
+
47
39
  try {
48
40
  // 创建异步配置
49
- const configAsync = await createConfigAsync({
41
+ const configAsync = await createAsync("./config_async.json", {
50
42
  name: "asyncDemo",
51
43
  state: 3
52
- }, "./config_async.json");
53
-
44
+ });
45
+
54
46
  // 修改配置,会异步自动保存
55
47
  configAsync.name = "asyncTest2";
56
48
  configAsync.timestamp = new Date().toISOString();
57
- console.log('异步配置:', configAsync);
58
-
49
+ $.log.debug('异步配置:', configAsync);
50
+
59
51
  // 显式调用异步保存
60
52
  // await configAsync._saveAsync();
61
- console.log('异步保存完成');
62
-
63
- } catch (error) {
64
- console.error('异步配置测试出错:', error);
53
+ $.log.debug('异步保存完成');
54
+
55
+ } catch (err) {
56
+ $.log.error('异步配置测试出错:', err);
65
57
  }
66
58
  }
67
59
 
68
60
  // 测试高级功能:防抖
69
61
  function testDebounce() {
70
- console.log('\n=== 测试防抖功能 ===');
71
-
62
+ $.log.debug('\n=== 测试防抖功能 ===');
63
+
72
64
  // 创建带防抖的配置(500ms延迟保存)
73
- const configDebounce = conf({
65
+ const configDebounce = create("./config_debounce.json", {
74
66
  name: "debounceDemo"
75
- }, "./config_debounce.json", {
76
- debounceTime: 500, // 500ms防抖时间
67
+ }, {
68
+ debounce_time: 500, // 500ms防抖时间
77
69
  pretty: true // 美化JSON输出
78
70
  });
79
-
71
+
80
72
  // 快速多次修改,应该只保存最后一次
81
- console.log('开始多次快速修改...');
73
+ $.log.debug('开始多次快速修改...');
82
74
  for (let i = 0; i < 5; i++) {
83
75
  configDebounce.value = i;
84
76
  configDebounce.timestamp = new Date().toISOString();
85
77
  }
86
-
87
- console.log('修改完成,等待防抖触发保存...');
88
- console.log('最终配置:', configDebounce);
78
+
79
+ $.log.debug('修改完成,等待防抖触发保存...');
80
+ $.log.debug('最终配置:', configDebounce);
89
81
  }
90
82
 
91
83
  // 测试JSON5格式
92
84
  function testJson5() {
93
- console.log('\n=== 测试JSON5格式支持 ===');
94
-
85
+ $.log.debug('\n=== 测试JSON5格式支持 ===');
86
+
95
87
  // 创建配置时指定JSON5格式
96
- const configJson5 = conf({
97
- name: "json5Demo",
98
- // JSON5支持的一些特性,如注释、尾随逗号等
99
- // 虽然保存时会转为标准JSON,但读取时可以处理JSON5格式
100
- }, "./config_json5.json", {
88
+ const configJson5 = create("./config_json5.json", {
89
+ name: "json5Demo"
90
+ }, {
101
91
  format: 'json5',
102
92
  pretty: true
103
93
  });
104
-
94
+
105
95
  configJson5.description = "This uses JSON5 format";
106
- console.log('JSON5配置:', configJson5);
96
+ $.log.debug('JSON5配置:', configJson5);
97
+ }
98
+
99
+ /**
100
+ * 测试配置方法
101
+ */
102
+ async function testMethods() {
103
+ $.log.debug('\n=== 测试配置方法 ===');
104
+
105
+ // 创建测试配置
106
+ const cg = new Config({
107
+ name: "methodsDemo",
108
+ sort: 100,
109
+ state: 1
110
+ });
111
+
112
+ // 测试设置和获取
113
+ await cg.set('name', 'testMethods');
114
+ const name = await cg.get('name');
115
+ $.log.debug('获取到的名称:', name);
116
+
117
+ // 测试检查存在
118
+ const hasName = await cg.has('name');
119
+ $.log.debug('是否存在名称:', hasName);
120
+
121
+ // 测试删除
122
+ await cg.del('name');
123
+ const hasNameAfterDelete = await cg.has('name');
124
+ $.log.debug('删除后是否存在名称:', hasNameAfterDelete);
125
+
126
+ // 测试获取所有键
127
+ const keys = await cg.keys();
128
+ $.log.debug('所有键:', keys);
129
+
130
+ const state = await cg.get('state');
131
+ $.log.debug('获取到的状态:', state);
132
+ }
133
+
134
+ // 测试缓存清理功能
135
+ async function testCacheClear() {
136
+ $.log.debug('\n=== 测试缓存清理功能 ===');
137
+
138
+ // 创建几个配置实例
139
+ const config1 = create("./cache_test1.json", { test: "cache1" });
140
+ const config2 = create("./cache_test2.json", { test: "cache2" });
141
+ const config3 = await createAsync("./cache_test3.json", { test: "cache3" });
142
+
143
+ $.log.debug('创建了3个配置实例');
144
+
145
+ // 测试清理单个缓存
146
+ clear("./cache_test1.json");
147
+ $.log.debug('已清理cache_test1.json的缓存');
148
+
149
+ // 重新创建应该会创建新实例
150
+ const config1New = create("./cache_test1.json", { test: "cache1_new" });
151
+ $.log.debug('重新创建cache_test1.json');
152
+
153
+ // 测试清理所有缓存
154
+ clearAll();
155
+ $.log.debug('已清理所有缓存');
156
+
157
+ // 再次创建应该都是新实例
158
+ const config2New = create("./cache_test2.json", { test: "cache2_new" });
159
+ const config3New = await createAsync("./cache_test3.json", { test: "cache3_new" });
160
+ $.log.debug('重新创建所有配置实例');
107
161
  }
108
162
 
109
163
  // 运行所有测试
110
164
  async function runAllTests() {
111
- console.log('开始运行配置管理器测试...');
112
-
165
+ $.log.debug('开始运行配置管理器测试...');
166
+
113
167
  // 运行同步测试
114
168
  testSyncConfig();
115
-
169
+
116
170
  // 运行异步测试
117
171
  await testAsyncConfig();
118
-
172
+
119
173
  // 运行防抖测试
120
174
  testDebounce();
121
-
175
+
122
176
  // 运行JSON5测试
123
177
  testJson5();
124
-
125
- console.log('\n所有测试完成!');
126
- console.log('请查看生成的配置文件以验证保存结果。');
178
+
179
+ // 运行缓存清理测试
180
+ await testCacheClear();
181
+
182
+ $.log.debug('\n所有测试完成!');
183
+ $.log.debug('请查看生成的配置文件以验证保存结果。');
184
+
185
+ // 运行方法测试
186
+ await testMethods();
127
187
  }
128
188
 
129
189
  // 执行测试
130
190
  runAllTests().catch(err => {
131
- console.error('测试过程中出现错误:', err);
191
+ $.log.error('测试过程中出现错误:', err);
132
192
  });
package/base.js DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * 重够配置,同步保存
3
- * @param {Object} _config 配置对象
4
- * @param {String} _jsonFile 配置文件
5
- */
6
- module.exports = function(_config, _jsonFile) {
7
- if (!_jsonFile) {
8
- _jsonFile = this.filename;
9
- }
10
- if (!_config) {
11
- try {
12
- _config = _jsonFile.loadJson();
13
- } catch (error) {
14
- _config = {};
15
- }
16
- }
17
- return new Proxy(_config, {
18
- set: function(obj, prop, value) {
19
- obj[prop] = value;
20
- if (_jsonFile) {
21
- try {
22
- _jsonFile.saveJson(obj); // 使用saveJson原型函数,参数为对象和缩进空格数
23
- } catch (error) {
24
- console.error('[Config] 保存配置失败:', error);
25
- }
26
- }
27
- return true
28
- }
29
- });
30
- }
package/config.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "name": "test",
3
- "state": 2,
4
- "sort": 2,
5
- "age": 26
6
- }