mm_os 4.3.7 → 5.0.1

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.
Files changed (231) hide show
  1. package/README.md +102 -504
  2. package/index.js +26 -19
  3. package/lib/os.js +536 -0
  4. package/package.json +60 -84
  5. package/LICENSE +0 -21
  6. package/README_EN.md +0 -505
  7. package/adapter/adapter.js +0 -484
  8. package/adapter/custom_persistence.js +0 -661
  9. package/adapter/mqtt.js +0 -254
  10. package/adapter/socket.js +0 -244
  11. package/adapter/web.js +0 -92
  12. package/adapter/websocket.js +0 -43
  13. package/ai.js +0 -130
  14. package/com/api/README.md +0 -3
  15. package/com/api/com.json +0 -5
  16. package/com/api/config.tpl.json +0 -41
  17. package/com/api/drive.js +0 -732
  18. package/com/api/index.js +0 -201
  19. package/com/api/oauth.js +0 -200
  20. package/com/api/script.tpl.js +0 -32
  21. package/com/cmd/README.md +0 -11
  22. package/com/cmd/com.json +0 -5
  23. package/com/cmd/config.tpl.json +0 -48
  24. package/com/cmd/drive.js +0 -176
  25. package/com/cmd/index.js +0 -287
  26. package/com/cmd/job/config.json +0 -66
  27. package/com/cmd/job/index.js +0 -241
  28. package/com/cmd/job/test.js +0 -188
  29. package/com/cmd/msg.json +0 -48
  30. package/com/cmd/script.tpl.js +0 -12
  31. package/com/db/README.md +0 -3
  32. package/com/db/com.json +0 -5
  33. package/com/db/drive.js +0 -2206
  34. package/com/db/index.js +0 -241
  35. package/com/event/README.md +0 -4
  36. package/com/event/com.json +0 -5
  37. package/com/event/config.tpl.json +0 -20
  38. package/com/event/drive.js +0 -61
  39. package/com/event/index.js +0 -438
  40. package/com/event/script.tpl.js +0 -23
  41. package/com/mqtt/README.md +0 -47
  42. package/com/mqtt/com.json +0 -5
  43. package/com/mqtt/config.tpl.json +0 -42
  44. package/com/mqtt/drive.js +0 -704
  45. package/com/mqtt/index.js +0 -1052
  46. package/com/mqtt/index.test.js +0 -503
  47. package/com/mqtt/script.tpl.js +0 -719
  48. package/com/nav/README.md +0 -2
  49. package/com/nav/com.json +0 -5
  50. package/com/nav/config.tpl.json +0 -84
  51. package/com/nav/drive.js +0 -702
  52. package/com/nav/index.js +0 -228
  53. package/com/nav/tpl/admin_pc/page_channel.vue +0 -305
  54. package/com/nav/tpl/admin_pc/page_config.vue +0 -280
  55. package/com/nav/tpl/admin_pc/page_config_form.vue +0 -194
  56. package/com/nav/tpl/admin_pc/page_default.vue +0 -247
  57. package/com/nav/tpl/admin_pc/page_form.vue +0 -180
  58. package/com/nav/tpl/admin_pc/page_lang.vue +0 -264
  59. package/com/nav/tpl/admin_pc/page_nav.vue +0 -321
  60. package/com/nav/tpl/admin_pc/page_table.vue +0 -296
  61. package/com/nav/tpl/admin_pc/page_type.vue +0 -321
  62. package/com/nav/tpl/admin_pc/page_view.vue +0 -124
  63. package/com/nav/tpl/dev_pc/page_channel.vue +0 -253
  64. package/com/nav/tpl/dev_pc/page_config.vue +0 -253
  65. package/com/nav/tpl/dev_pc/page_default.vue +0 -247
  66. package/com/nav/tpl/dev_pc/page_form.vue +0 -162
  67. package/com/nav/tpl/dev_pc/page_nav.vue +0 -253
  68. package/com/nav/tpl/dev_pc/page_table.vue +0 -247
  69. package/com/nav/tpl/dev_pc/page_type.vue +0 -313
  70. package/com/nav/tpl/home_pc/page_channel.vue +0 -234
  71. package/com/nav/tpl/home_pc/page_default.vue +0 -234
  72. package/com/nav/tpl/home_pc/page_form.vue +0 -137
  73. package/com/nav/tpl/home_pc/page_list.vue +0 -234
  74. package/com/nav/tpl/home_pc/page_nav.vue +0 -221
  75. package/com/nav/tpl/home_pc/page_type.vue +0 -234
  76. package/com/nav/tpl/home_pc/page_view.vue +0 -125
  77. package/com/nav/tpl/home_phone/page_channel.vue +0 -234
  78. package/com/nav/tpl/home_phone/page_default.vue +0 -234
  79. package/com/nav/tpl/home_phone/page_form.vue +0 -137
  80. package/com/nav/tpl/home_phone/page_list.vue +0 -234
  81. package/com/nav/tpl/home_phone/page_nav.vue +0 -237
  82. package/com/nav/tpl/home_phone/page_type.vue +0 -234
  83. package/com/nav/tpl/home_phone/page_view.vue +0 -125
  84. package/com/nav/viewmodel.js +0 -446
  85. package/com/param/README.md +0 -2
  86. package/com/param/com.json +0 -5
  87. package/com/param/config.tpl.json +0 -136
  88. package/com/param/drive.js +0 -502
  89. package/com/param/index.js +0 -158
  90. package/com/param/script.tpl.js +0 -12
  91. package/com/pendant/README.md +0 -3
  92. package/com/pendant/com.json +0 -5
  93. package/com/pendant/config.tpl.json +0 -32
  94. package/com/pendant/drive.js +0 -204
  95. package/com/pendant/index.js +0 -467
  96. package/com/pendant/pendant.html +0 -16
  97. package/com/pendant/script.tpl.js +0 -18
  98. package/com/socket/README.md +0 -47
  99. package/com/socket/com.json +0 -5
  100. package/com/socket/config.tpl.json +0 -12
  101. package/com/socket/drive.js +0 -679
  102. package/com/socket/index.js +0 -402
  103. package/com/socket/script.tpl.js +0 -41
  104. package/com/sql/README.md +0 -3
  105. package/com/sql/com.json +0 -5
  106. package/com/sql/config.tpl.json +0 -74
  107. package/com/sql/drive.js +0 -1328
  108. package/com/sql/index.js +0 -152
  109. package/com/sql/script.tpl.js +0 -47
  110. package/com/static/README.md +0 -2
  111. package/com/static/com.json +0 -5
  112. package/com/static/config.tpl.json +0 -24
  113. package/com/static/drive.js +0 -194
  114. package/com/static/index.js +0 -237
  115. package/com/static/script.tpl.js +0 -28
  116. package/com/task/README.md +0 -3
  117. package/com/task/com.json +0 -5
  118. package/com/task/config.tpl.json +0 -24
  119. package/com/task/drive.js +0 -428
  120. package/com/task/index.js +0 -159
  121. package/com/task/script.tpl.js +0 -40
  122. package/com/template/com.json +0 -5
  123. package/com/template/config.tpl.json +0 -16
  124. package/com/template/drive.js +0 -81
  125. package/com/template/index.js +0 -141
  126. package/com.js +0 -237
  127. package/common/README.md +0 -2
  128. package/common/middleware/web_after/index.js +0 -26
  129. package/common/middleware/web_after/middleware.json +0 -9
  130. package/common/middleware/web_base/index.js +0 -113
  131. package/common/middleware/web_base/middleware.json +0 -19
  132. package/common/middleware/web_before/index.js +0 -33
  133. package/common/middleware/web_before/middleware.json +0 -9
  134. package/common/middleware/web_cors/index.js +0 -87
  135. package/common/middleware/web_cors/middleware.json +0 -24
  136. package/common/middleware/web_error/index.js +0 -131
  137. package/common/middleware/web_error/middleware.json +0 -19
  138. package/common/middleware/web_ip/index.js +0 -15
  139. package/common/middleware/web_ip/middleware.json +0 -14
  140. package/common/middleware/web_logger/index.js +0 -156
  141. package/common/middleware/web_logger/middleware.json +0 -14
  142. package/common/middleware/web_main/index.js +0 -26
  143. package/common/middleware/web_main/middleware.json +0 -9
  144. package/common/middleware/web_static/index.js +0 -73
  145. package/common/middleware/web_static/middleware.json +0 -54
  146. package/common/middleware/web_waf/index.js +0 -395
  147. package/common/middleware/web_waf/middleware.json +0 -13
  148. package/core/app/config.tpl.json +0 -67
  149. package/core/app/index.js +0 -711
  150. package/core/app/script.tpl.js +0 -52
  151. package/core/channel/index.js +0 -899
  152. package/core/channel/matcher.js +0 -585
  153. package/core/com/config.tpl.json +0 -16
  154. package/core/com/index.js +0 -77
  155. package/core/com/script.tpl.js +0 -5
  156. package/core/component/component.js +0 -42
  157. package/core/component/config.tpl.json +0 -63
  158. package/core/component/index.js +0 -273
  159. package/core/component/script.tpl.js +0 -19
  160. package/core/controller/config.tpl.json +0 -14
  161. package/core/controller/index.js +0 -371
  162. package/core/controller/script.tpl.js +0 -27
  163. package/core/factory/config.tpl.json +0 -14
  164. package/core/factory/entity.js +0 -275
  165. package/core/factory/index.js +0 -241
  166. package/core/factory/script.tpl.js +0 -16
  167. package/core/game/bat/index.js +0 -137
  168. package/core/game/bat/world.js +0 -622
  169. package/core/game/config.tpl.json +0 -16
  170. package/core/game/entity_admin.js +0 -230
  171. package/core/game/index.js +0 -186
  172. package/core/handler/config.tpl.json +0 -22
  173. package/core/handler/index.js +0 -181
  174. package/core/handler/script.tpl.js +0 -23
  175. package/core/logic/config.tpl.json +0 -14
  176. package/core/logic/index.js +0 -59
  177. package/core/logic/script.tpl.js +0 -19
  178. package/core/middleware/config.tpl.json +0 -16
  179. package/core/middleware/index.js +0 -117
  180. package/core/middleware/script.tpl.js +0 -37
  181. package/core/mod/config.tpl.json +0 -22
  182. package/core/mod/index.js +0 -136
  183. package/core/mod/script.tpl.js +0 -34
  184. package/core/model/config.tpl.json +0 -219
  185. package/core/model/index.js +0 -272
  186. package/core/model/model.js +0 -27
  187. package/core/model/script.tpl.js +0 -20
  188. package/core/notifier/config.tpl.json +0 -14
  189. package/core/notifier/index.js +0 -77
  190. package/core/notifier/script.tpl.js +0 -20
  191. package/core/plugin/config.tpl.json +0 -36
  192. package/core/plugin/index.js +0 -267
  193. package/core/plugin/script.tpl.js +0 -51
  194. package/core/pusher/config.tpl.json +0 -14
  195. package/core/pusher/index.js +0 -158
  196. package/core/pusher/script.tpl.js +0 -20
  197. package/core/room/bat/index.js +0 -170
  198. package/core/room/bat/room.js +0 -524
  199. package/core/room/config.tpl.json +0 -20
  200. package/core/room/index.js +0 -249
  201. package/core/room/room.js +0 -61
  202. package/core/scene/config.tpl.json +0 -14
  203. package/core/scene/index.js +0 -467
  204. package/core/scene/loop.js +0 -1306
  205. package/core/scene/map.js +0 -28
  206. package/core/scene/script.tpl.js +0 -22
  207. package/core/sender/config.tpl.json +0 -14
  208. package/core/sender/index.js +0 -79
  209. package/core/sender/script.tpl.js +0 -20
  210. package/core/service/config.tpl.json +0 -14
  211. package/core/service/index.js +0 -100
  212. package/core/service/script.tpl.js +0 -25
  213. package/core/store/config.tpl.json +0 -26
  214. package/core/store/index.js +0 -1794
  215. package/core/store/script.tpl.js +0 -22
  216. package/core/system/config.tpl.json +0 -18
  217. package/core/system/index.js +0 -312
  218. package/core/system/script.tpl.js +0 -77
  219. package/core/view/config.tpl.json +0 -14
  220. package/core/view/index.js +0 -91
  221. package/core/view/script.tpl.js +0 -20
  222. package/core/zone/bat/index.js +0 -744
  223. package/core/zone/config.tpl.json +0 -54
  224. package/core/zone/index.js +0 -655
  225. package/core/zone/script.tpl.js +0 -10
  226. package/core/zone/zone_bat.js +0 -136
  227. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +0 -24
  228. package/os.js +0 -53
  229. package/server.js +0 -602
  230. package/ulits/id_gen.js +0 -134
  231. package/ulits/word.js +0 -206
@@ -1,446 +0,0 @@
1
- /**
2
- * 视图模型
3
- * @class
4
- */
5
- class Model {
6
- /**
7
- * 配置参数
8
- * @param {object} config 配置参数
9
- */
10
- constructor(config) {
11
-
12
- }
13
- }
14
-
15
- /**
16
- * 获取显示类型
17
- * @param {string} key 键值
18
- * @param {boolean} f 是否带格式
19
- * @returns {string} 返回显示类型
20
- */
21
- Model.prototype.getType = function(key, f) {
22
- var typeMap = {
23
- 'search': f ? 'select' : '',
24
- 'view': 'text',
25
- 'table': f ? 'select' : 'text',
26
- 'edit': f ? 'select' : 'input',
27
- 'list': 'text',
28
- 'details': 'text',
29
- 'batch': f ? 'select' : '',
30
- 'filter': f ? 'select' : ''
31
- };
32
- return typeMap[key] !== undefined ? typeMap[key] : (f ? 'select' : '');
33
- };
34
-
35
- /**
36
- * 查询显示方式
37
- * @param {Array} arr 显示类型数组
38
- * @param {string} key 键值
39
- * @param {boolean} f 是否带格式
40
- * @returns {string} 返回显示方式
41
- */
42
- Model.prototype.getShow = function(arr, key, f) {
43
- var bl = false;
44
- var show = '';
45
- for (var i = 0; i < arr.length; i++) {
46
- var str = arr[i];
47
- if (str.indexOf(key + '_no') !== -1) {
48
- bl = true;
49
- break;
50
- } else if (str.indexOf(key + '_input') !== -1) {
51
- show = 'input';
52
- break;
53
- } else if (str.indexOf(key + '_select') !== -1) {
54
- show = 'select';
55
- break;
56
- } else if (str.indexOf(key + '_text') !== -1) {
57
- show = 'text';
58
- break;
59
- }
60
- }
61
- if (!show && !bl) {
62
- show = this.getType(key, f);
63
- }
64
- return show;
65
- };
66
-
67
- /**
68
- * 获取表格所需键值对
69
- * @param {object} model 模型
70
- * @returns {object} 返回视图所用模型
71
- */
72
- Model.prototype.field = async function(model) {
73
- var list = model.param.list;
74
- if (!list) {
75
- model.param.list = [];
76
- return [];
77
- }
78
-
79
- var field = this._getFieldByFileType(model);
80
- var requireds = this._getRequiredFields(model);
81
- var field_names = field.replace(/`/g, '').split(',');
82
-
83
- return this._processFieldList(list, field_names, requireds, model);
84
- };
85
-
86
- /**
87
- * 根据文件类型获取字段
88
- * @param {object} model 模型
89
- * @returns {string} 字段字符串
90
- * @private
91
- */
92
- Model.prototype._getFieldByFileType = function(model) {
93
- if (model.file.indexOf('_form') !== -1 || model.file.indexOf('_view') !== -1) {
94
- return model.sql.field_obj || '';
95
- }
96
- return model.sql.field_default || '';
97
- };
98
-
99
- /**
100
- * 获取必填字段
101
- * @param {object} model 模型
102
- * @returns {Array} 必填字段数组
103
- * @private
104
- */
105
- Model.prototype._getRequiredFields = function(model) {
106
- var add = model.param.add;
107
- return add ? add.body_required : [];
108
- };
109
-
110
- /**
111
- * 处理字段列表
112
- * @param {Array} list 字段列表
113
- * @param {Array} field_names 字段名数组
114
- * @param {Array} requireds 必填字段数组
115
- * @param {object} model 模型
116
- * @returns {Array} 处理后的字段列表
117
- * @private
118
- */
119
- Model.prototype._processFieldList = function(list, field_names, requireds, model) {
120
- var pm = [];
121
- for (var i = 0; i < list.length; i++) {
122
- var o = list[i];
123
- var name = o.name;
124
- if (field_names.indexOf(name) !== -1) {
125
- var obj = this._processField(o, requireds, model);
126
- pm.push(obj);
127
- }
128
- }
129
- return pm;
130
- };
131
-
132
- /**
133
- * 处理单个字段
134
- * @param {object} field 字段对象
135
- * @param {Array} requireds 必填字段数组
136
- * @param {object} model 模型
137
- * @returns {object} 处理后的字段对象
138
- * @private
139
- */
140
- Model.prototype._processField = function(field, requireds, model) {
141
- var obj = { ...field};
142
- var format_info = this._getFieldFormat(obj.name, model);
143
-
144
- if (format_info.format) {
145
- obj.title = format_info.format.title;
146
- obj.format = format_info.format;
147
- }
148
-
149
- if (requireds.indexOf(obj.name) !== -1) {
150
- obj.required = true;
151
- }
152
-
153
- obj.show = this._getFieldShow(obj.description, format_info.has_format);
154
- return obj;
155
- };
156
-
157
- /**
158
- * 获取字段格式
159
- * @param {string} fieldName 字段名
160
- * @param {object} model 模型
161
- * @returns {object} 格式信息
162
- * @private
163
- */
164
- Model.prototype._getFieldFormat = function(fieldName, model) {
165
- var format = model.sql.format.getObj({ key: fieldName });
166
- return {
167
- format: format,
168
- has_format: !!format
169
- };
170
- };
171
-
172
- /**
173
- * 获取字段显示配置
174
- * @param {string} description 字段描述
175
- * @param {boolean} has_format 是否有格式
176
- * @returns {object} 显示配置
177
- * @private
178
- */
179
- Model.prototype._getFieldShow = function(description, has_format) {
180
- if (description.indexOf('##') === -1) {
181
- return this._getDefaultShowConfig(has_format);
182
- }
183
- return this._getCustomShowConfig(description, has_format);
184
- };
185
-
186
- /**
187
- * 获取默认显示配置
188
- * @param {boolean} has_format 是否有格式
189
- * @returns {object} 默认显示配置
190
- * @private
191
- */
192
- Model.prototype._getDefaultShowConfig = function(has_format) {
193
- return {
194
- form: has_format ? 'select' : 'input',
195
- view: 'text',
196
- search: has_format ? 'select' : '',
197
- table: has_format ? 'select' : 'text',
198
- list: 'text',
199
- edit: has_format ? 'select' : 'input',
200
- details: 'text',
201
- batch: has_format ? 'select' : '',
202
- filter: has_format ? 'select' : ''
203
- };
204
- };
205
-
206
- /**
207
- * 获取自定义显示配置
208
- * @param {string} description 字段描述
209
- * @param {boolean} has_format 是否有格式
210
- * @returns {object} 自定义显示配置
211
- * @private
212
- */
213
- Model.prototype._getCustomShowConfig = function(description, has_format) {
214
- var desc = description.between('##', '##');
215
- var ar = desc.trim().split(' ');
216
-
217
- if (desc.indexOf('none') !== -1) {
218
- return this._getEmptyShowConfig();
219
- }
220
-
221
- return this._buildShowConfig(ar, has_format);
222
- };
223
-
224
- /**
225
- * 获取空显示配置
226
- * @returns {object} 空显示配置
227
- * @private
228
- */
229
- Model.prototype._getEmptyShowConfig = function() {
230
- return {
231
- form: '',
232
- view: '',
233
- search: '',
234
- table: '',
235
- list: '',
236
- edit: '',
237
- details: '',
238
- batch: '',
239
- filter: ''
240
- };
241
- };
242
-
243
- /**
244
- * 构建显示配置
245
- * @param {Array} configArray 配置数组
246
- * @param {boolean} has_format 是否有格式
247
- * @returns {object} 显示配置
248
- * @private
249
- */
250
- Model.prototype._buildShowConfig = function(configArray, has_format) {
251
- return {
252
- search: this.getShow(configArray, 'search', has_format),
253
- table: this.getShow(configArray, 'table', has_format),
254
- form: this.getShow(configArray, 'form', has_format),
255
- view: this.getShow(configArray, 'view', has_format),
256
- batch: this.getShow(configArray, 'batch', has_format),
257
- list: this.getShow(configArray, 'list', has_format),
258
- details: this.getShow(configArray, 'details', has_format),
259
- filter: this.getShow(configArray, 'filter', has_format),
260
- edit: this.getShow(configArray, 'edit', has_format)
261
- };
262
- };
263
-
264
- /**
265
- * 运算视图模型(css)
266
- * @param {object} model 模型
267
- * @returns {object} 返回视图所用模型
268
- */
269
- Model.prototype.css = async function(model) {
270
- var css = {};
271
- return css;
272
- };
273
-
274
- /**
275
- * 运算视图模型(html)
276
- * @param {object} model 模型
277
- * @returns {object} 返回视图所用模型
278
- */
279
- Model.prototype.html = async function(model) {
280
- var html = {};
281
- if (!model.sql) {
282
- return html;
283
- }
284
- return html;
285
- };
286
-
287
- /**
288
- * 运算视图模型(js)
289
- * @param {object} model 模型
290
- * @returns {object} 返回视图所用模型
291
- */
292
- Model.prototype.js = async function(model) {
293
- var js = {
294
- data: [],
295
- query: []
296
- };
297
-
298
- var field = model.field;
299
- var path_start = model.file.indexOf('admin') !== -1 ? '/apis/' : '/api/';
300
-
301
- this._processField(js, field, path_start);
302
- this._processQuery(js, model.param);
303
-
304
- return js;
305
- };
306
-
307
- /**
308
- * 处理字段
309
- * @param {object} js js对象
310
- * @param {Array} field 字段列表
311
- * @param {string} path_start 路径前缀
312
- * @private
313
- */
314
- Model.prototype._processField = function(js, field, path_start) {
315
- for (var i = 0; i < field.length; i++) {
316
- var o = field[i];
317
- var format = o.format;
318
- if (format) {
319
- var obj = this._createFormatObj(o, format, path_start);
320
- if (obj) {
321
- js.data.push(obj);
322
- }
323
- }
324
- }
325
- };
326
-
327
- /**
328
- * 创建格式对象
329
- * @param {object} field 字段对象
330
- * @param {object} format 格式对象
331
- * @param {string} path_start 路径前缀
332
- * @returns {object} 格式对象
333
- * @private
334
- */
335
- Model.prototype._createFormatObj = function(field, format, path_start) {
336
- if (format.table) {
337
- return this._createTableFormatObj(field, format, path_start);
338
- } else {
339
- return this._createListFormatObj(field, format);
340
- }
341
- };
342
-
343
- /**
344
- * 创建表格格式对象
345
- * @param {object} field 字段对象
346
- * @param {object} format 格式对象
347
- * @param {string} path_start 路径前缀
348
- * @returns {object} 表格格式对象
349
- * @private
350
- */
351
- Model.prototype._createTableFormatObj = function(field, format, path_start) {
352
- var basename = format.table.split('_').splice(1).join('_');
353
- var name = 'list_' + basename;
354
- var id = format.nav_id || format.key;
355
- var path = path_start + format.table.replace('_', '/') + '?size=0';
356
-
357
- var obj = {
358
- basename,
359
- title: format.title,
360
- id,
361
- name,
362
- field: format.name,
363
- value: [],
364
- path
365
- };
366
-
367
- return this._addSpecialFields(obj, field.name, name);
368
- };
369
-
370
- /**
371
- * 添加特殊字段
372
- * @param {object} obj 对象
373
- * @param {string} field_name 字段名
374
- * @param {string} label 标签
375
- * @returns {object} 新对象
376
- * @private
377
- */
378
- Model.prototype._addSpecialFields = function(obj, field_name, label) {
379
- var new_obj = { ...obj };
380
-
381
- if (field_name === 'father_id' || field_name === 'fid') {
382
- new_obj.father_id = field_name;
383
- }
384
- if (field_name === 'title') {
385
- new_obj.title_name = 'title';
386
- }
387
-
388
- return new_obj;
389
- };
390
-
391
- /**
392
- * 创建列表格式对象
393
- * @param {object} field 字段对象
394
- * @param {object} format 格式对象
395
- * @returns {object} 列表格式对象
396
- * @private
397
- */
398
- Model.prototype._createListFormatObj = function(field, format) {
399
- var basename = format.key;
400
- var name = 'arr_' + basename;
401
-
402
- return {
403
- title: format.title,
404
- name,
405
- value: format.list
406
- };
407
- };
408
-
409
- /**
410
- * 处理查询
411
- * @param {object} js js对象
412
- * @param {object} param 参数对象
413
- * @private
414
- */
415
- Model.prototype._processQuery = function(js, param) {
416
- if (param && param.get) {
417
- var arr = param.get.query_required.concat(param.get.query);
418
- var lt = param.list;
419
- for (var i = 0; i < arr.length; i++) {
420
- var o = lt.getObj({ name: arr[i] });
421
- if (o) {
422
- js.query.push({
423
- title: o.title,
424
- name: o.name,
425
- type: o.type,
426
- select: o.description ? (o.description.indexOf('(') !== -1) : false
427
- });
428
- }
429
- }
430
- }
431
- };
432
-
433
- /**
434
- * 运算视图模型
435
- * @param {object} model 模型
436
- * @returns {object} 返回视图所用模型
437
- */
438
- Model.prototype.run = async function(model) {
439
- model.field = await this.field(model);
440
- model.js = await this.js(model);
441
- model.html = await this.html(model);
442
- model.css = await this.css(model);
443
- return model;
444
- };
445
-
446
- module.exports = Model;
@@ -1,2 +0,0 @@
1
- ## 参数校验框架
2
- 用于校验前端所传参数,校验其格式、长度、数据类型、确保所传参数符合规则,避免传参错误导致的BUG
@@ -1,5 +0,0 @@
1
- {
2
- "name": "Param",
3
- "title": "参数管理器",
4
- "state": 1
5
- }
@@ -1,136 +0,0 @@
1
- {
2
- // 参数配置名
3
- "name": "${name}",
4
- // 参数标题
5
- "title": "${title || '参数配置'}",
6
- // 参数描述
7
- "description": "${description || '描述参数配置使用方法'}",
8
- // 是否启用过滤, 启用过滤后, 不符合的参数会被过滤掉
9
- "filter": true,
10
- // 校验脚本文件, 可以使用脚本的方式加一步进行校验, 让传参更加安全
11
- "main": "",
12
- // get请求
13
- "get": {
14
- // 查询参数校验项
15
- "query": ["uid", "name", "username", "phone", "email"],
16
- // 查询必填参数
17
- "query_required": []
18
- },
19
- // post请求
20
- "post": {
21
- // 查询参数校验项
22
- "query": ["uid", "name", "username", "phone", "email"],
23
- // 查询必填参数
24
- "query_required": [],
25
- // 正文参数校验项
26
- "body": ["age", "headImg", "birthday", "password", "confirm_password", "pay_password"],
27
- // 正文必填参数
28
- "body_required": []
29
- },
30
- // 校验列表
31
- "list": [{
32
- // 参数key名
33
- "name": "uid",
34
- // 参数中文名
35
- "title": "用户ID",
36
- // 数据类型
37
- "type": "number",
38
- // 数字类型时设置
39
- "number": {
40
- // 最小数值
41
- "min": 1
42
- },
43
- // 分隔参数,允许传多个值,为空则限制1个值
44
- "splitter": "|"
45
- }, {
46
- "name": "name",
47
- "title": "姓名",
48
- "type": "string",
49
- // 字符串类型时设置
50
- "string": {
51
- // 格式
52
- "format": "ch",
53
- // 传值范围,字符串时为限制字符长度
54
- "range": [2, 6]
55
- },
56
- "splitter": "|"
57
- },
58
- {
59
- "name": "age",
60
- "title": "年龄",
61
- "type": "number",
62
- "number": {
63
- // 传值范围,数字时为最小值和最大值
64
- "range": [1, 150]
65
- }
66
- },
67
- {
68
- "name": "headImg",
69
- "title": "头像",
70
- "type": "string",
71
- "string": {
72
- // 拓展名,用于传媒体(图片、音频、视频)时
73
- "extension": "png|gif|jpg|jpeg|bmp"
74
- }
75
- },
76
- {
77
- "name": "birthday",
78
- "title": "生日",
79
- "type": "string",
80
- "string": {
81
- "format": "dateISO"
82
- }
83
- },
84
- {
85
- "name": "username",
86
- "title": "用户名",
87
- "type": "string",
88
- "string": {
89
- "format": "username"
90
- }
91
- },
92
- {
93
- "name": "password",
94
- "title": "密码",
95
- "type": "string",
96
- "string": {
97
- "format": "password",
98
- "different": "username"
99
- }
100
- },
101
- {
102
- "name": "phone",
103
- "title": "手机",
104
- "type": "string",
105
- "string": {
106
- "format": "phone"
107
- }
108
- },
109
- {
110
- "name": "email",
111
- "title": "邮箱",
112
- "type": "string",
113
- "string": {
114
- "format": "email"
115
- }
116
- },
117
- {
118
- "name": "pay_password",
119
- "title": "支付密码",
120
- "type": "string",
121
- "string": {
122
- "format": "num",
123
- "different": "password"
124
- }
125
- },
126
- {
127
- "name": "confirm_password",
128
- "title": "确认密码",
129
- "type": "string",
130
- "string": {
131
- "format": "password",
132
- "identical": "password"
133
- }
134
- }
135
- ]
136
- }