befly 3.24.1 → 3.24.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/apis/admin/cacheRefresh.js +1 -1
- package/apis/admin/insert.js +2 -2
- package/apis/admin/update.js +1 -1
- package/apis/auth/login.js +2 -2
- package/apis/auth/sendSmsCode.js +1 -1
- package/apis/dashboard/environmentInfo.js +1 -1
- package/apis/dashboard/performanceMetrics.js +1 -1
- package/apis/dict/all.js +1 -1
- package/apis/dict/insert.js +1 -1
- package/apis/dict/items.js +1 -1
- package/apis/dict/{list.js → select.js} +1 -1
- package/apis/dict/update.js +1 -1
- package/apis/dictType/insert.js +1 -1
- package/apis/dictType/{list.js → select.js} +1 -1
- package/apis/dictType/update.js +1 -1
- package/apis/email/send.js +1 -1
- package/apis/role/apiSave.js +2 -2
- package/apis/role/apis.js +2 -2
- package/apis/role/detail.js +2 -2
- package/apis/role/insert.js +1 -1
- package/apis/role/menuSave.js +2 -2
- package/apis/role/menus.js +2 -2
- package/apis/role/save.js +1 -1
- package/apis/role/update.js +1 -1
- package/apis/sysConfig/get.js +2 -2
- package/apis/sysConfig/insert.js +1 -1
- package/apis/sysConfig/update.js +1 -1
- package/apis/tongJi/errorReport.js +1 -1
- package/apis/tongJi/errorStats.js +1 -1
- package/apis/tongJi/infoReport.js +2 -2
- package/apis/tongJi/infoStats.js +1 -1
- package/apis/tongJi/onlineReport.js +2 -2
- package/apis/tongJi/onlineStats.js +1 -1
- package/apis/upload/file.js +3 -3
- package/hooks/parser.js +3 -7
- package/index.js +22 -22
- package/lib/xmlParse.js +32 -0
- package/package.json +5 -2
- package/plugins/xmlParse.js +1 -18
- package/scripts/syncDb/context.js +6 -6
- package/scripts/syncDb/diff.js +2 -2
- package/scripts/syncDb/index.js +2 -2
- package/scripts/syncDb/report.js +3 -3
- package/scripts/syncDb/transform.js +3 -3
- /package/apis/admin/{list.js → select.js} +0 -0
- /package/apis/api/{list.js → select.js} +0 -0
- /package/apis/loginLog/{list.js → select.js} +0 -0
- /package/apis/menu/{list.js → select.js} +0 -0
- /package/apis/operateLog/{list.js → select.js} +0 -0
- /package/apis/role/{list.js → select.js} +0 -0
- /package/apis/sysConfig/{list.js → select.js} +0 -0
package/apis/admin/insert.js
CHANGED
package/apis/admin/update.js
CHANGED
package/apis/auth/login.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UAParser } from "ua-parser-js";
|
|
2
2
|
|
|
3
|
-
import adminTable from "
|
|
4
|
-
import { toSessionTtlSeconds } from "
|
|
3
|
+
import adminTable from "#root/tables/admin.json";
|
|
4
|
+
import { toSessionTtlSeconds } from "#root/utils/util.js";
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
7
|
name: "管理员登录",
|
package/apis/auth/sendSmsCode.js
CHANGED
package/apis/dict/all.js
CHANGED
package/apis/dict/insert.js
CHANGED
package/apis/dict/items.js
CHANGED
package/apis/dict/update.js
CHANGED
package/apis/dictType/insert.js
CHANGED
package/apis/dictType/update.js
CHANGED
package/apis/email/send.js
CHANGED
package/apis/role/apiSave.js
CHANGED
package/apis/role/apis.js
CHANGED
package/apis/role/detail.js
CHANGED
package/apis/role/insert.js
CHANGED
package/apis/role/menuSave.js
CHANGED
package/apis/role/menus.js
CHANGED
package/apis/role/save.js
CHANGED
package/apis/role/update.js
CHANGED
package/apis/sysConfig/get.js
CHANGED
package/apis/sysConfig/insert.js
CHANGED
package/apis/sysConfig/update.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UAParser } from "ua-parser-js";
|
|
2
2
|
|
|
3
|
-
import { isValidPositiveInt } from "
|
|
4
|
-
import { getDateYmdNumber } from "
|
|
3
|
+
import { isValidPositiveInt } from "#root/utils/is.js";
|
|
4
|
+
import { getDateYmdNumber } from "#root/utils/datetime.js";
|
|
5
5
|
|
|
6
6
|
function getInfoStatsMember(ctx) {
|
|
7
7
|
if (isValidPositiveInt(ctx.userId)) {
|
package/apis/tongJi/infoStats.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { addDays, getDateYmdNumber } from "
|
|
2
|
-
import { isValidPositiveInt } from "
|
|
1
|
+
import { addDays, getDateYmdNumber } from "#root/utils/datetime.js";
|
|
2
|
+
import { isValidPositiveInt } from "#root/utils/is.js";
|
|
3
3
|
|
|
4
4
|
const ONLINE_STATS_ONLINE_TTL_SECONDS = 10 * 60;
|
|
5
5
|
const ONLINE_STATS_REDIS_TTL_SECONDS = 7 * 24 * 60 * 60;
|
package/apis/upload/file.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { mkdirSync } from "node:fs";
|
|
2
2
|
import { extname, join } from "node:path";
|
|
3
3
|
|
|
4
|
-
import { Logger } from "
|
|
5
|
-
import { getAppPublicDir } from "
|
|
6
|
-
import { getMonthDir } from "
|
|
4
|
+
import { Logger } from "#root/lib/logger.js";
|
|
5
|
+
import { getAppPublicDir } from "#root/paths.js";
|
|
6
|
+
import { getMonthDir } from "#root/utils/datetime.js";
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
9
|
name: "上传文件",
|
package/hooks/parser.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { xmlParse } from "
|
|
2
|
-
import { ErrorResponse } from "
|
|
1
|
+
import { xmlParse } from "#root/lib/xmlParse.js";
|
|
2
|
+
import { ErrorResponse } from "#root/utils/response.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* 请求参数解析钩子
|
|
@@ -33,12 +33,8 @@ export default {
|
|
|
33
33
|
} else if (contentType.includes("application/xml") || contentType.includes("text/xml")) {
|
|
34
34
|
// XML 格式
|
|
35
35
|
const text = await ctx.req.text();
|
|
36
|
-
const parsed = xmlParse(text);
|
|
37
|
-
// 提取根节点内容(如 xml),使 body 扁平化
|
|
38
|
-
const rootKey = Object.keys(parsed)[0];
|
|
39
|
-
const body = rootKey && typeof parsed[rootKey] === "object" ? parsed[rootKey] : parsed;
|
|
40
36
|
// 合并 URL 参数和请求体(请求体优先)
|
|
41
|
-
ctx.body = Object.assign({}, queryParams,
|
|
37
|
+
ctx.body = Object.assign({}, queryParams, xmlParse(text));
|
|
42
38
|
} else {
|
|
43
39
|
// 不支持的 Content-Type
|
|
44
40
|
ctx.response = ErrorResponse(
|
package/index.js
CHANGED
|
@@ -4,36 +4,36 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// 配置
|
|
7
|
-
import beflyConfig from "
|
|
8
|
-
import beflyMenus from "
|
|
7
|
+
import beflyConfig from "#root/configs/beflyConfig.json";
|
|
8
|
+
import beflyMenus from "#root/configs/beflyMenus.json";
|
|
9
9
|
|
|
10
10
|
// 检查
|
|
11
|
-
import { checkApi } from "
|
|
12
|
-
import { checkConfig } from "
|
|
13
|
-
import { checkHook } from "
|
|
14
|
-
import { checkMenu } from "
|
|
15
|
-
import { checkPlugin } from "
|
|
16
|
-
import { checkTable } from "
|
|
11
|
+
import { checkApi } from "#root/checks/api.js";
|
|
12
|
+
import { checkConfig } from "#root/checks/config.js";
|
|
13
|
+
import { checkHook } from "#root/checks/hook.js";
|
|
14
|
+
import { checkMenu } from "#root/checks/menu.js";
|
|
15
|
+
import { checkPlugin } from "#root/checks/plugin.js";
|
|
16
|
+
import { checkTable } from "#root/checks/table.js";
|
|
17
17
|
// ========== 相对导入(项目内部文件) ==========
|
|
18
18
|
// 基础设施
|
|
19
|
-
import { Connect } from "
|
|
20
|
-
import { Logger } from "
|
|
19
|
+
import { Connect } from "#root/lib/connect.js";
|
|
20
|
+
import { Logger } from "#root/lib/logger.js";
|
|
21
21
|
// 路由处理
|
|
22
|
-
import { apiHandler } from "
|
|
23
|
-
import { staticHandler } from "
|
|
22
|
+
import { apiHandler } from "#root/router/api.js";
|
|
23
|
+
import { staticHandler } from "#root/router/static.js";
|
|
24
24
|
// 同步
|
|
25
|
-
import { syncApi } from "
|
|
26
|
-
import { syncCache } from "
|
|
27
|
-
import { syncDev } from "
|
|
28
|
-
import { syncMenu } from "
|
|
25
|
+
import { syncApi } from "#root/sync/api.js";
|
|
26
|
+
import { syncCache } from "#root/sync/cache.js";
|
|
27
|
+
import { syncDev } from "#root/sync/dev.js";
|
|
28
|
+
import { syncMenu } from "#root/sync/menu.js";
|
|
29
29
|
// 工具
|
|
30
|
-
import { calcPerfTime } from "
|
|
31
|
-
import { scanSources } from "
|
|
32
|
-
import { isPrimaryProcess } from "
|
|
33
|
-
import { deepMerge } from "
|
|
30
|
+
import { calcPerfTime } from "#root/utils/calcPerfTime.js";
|
|
31
|
+
import { scanSources } from "#root/utils/scanSources.js";
|
|
32
|
+
import { isPrimaryProcess } from "#root/utils/is.js";
|
|
33
|
+
import { deepMerge } from "#root/utils/deepMerge.js";
|
|
34
34
|
|
|
35
|
-
export { syncDb } from "
|
|
36
|
-
export { xmlParse } from "
|
|
35
|
+
export { syncDb } from "#root/scripts/syncDb/index.js";
|
|
36
|
+
export { xmlParse } from "#root/lib/xmlParse.js";
|
|
37
37
|
export { Logger };
|
|
38
38
|
|
|
39
39
|
function prefixMenuPaths(menus, prefix) {
|
package/lib/xmlParse.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { XMLParser } from "fast-xml-parser";
|
|
2
|
+
|
|
3
|
+
import { isPlainObject, isString } from "#root/utils/is.js";
|
|
4
|
+
|
|
5
|
+
const xmlParser = new XMLParser();
|
|
6
|
+
|
|
7
|
+
function normalizeXmlBody(parsed) {
|
|
8
|
+
if (!isPlainObject(parsed)) {
|
|
9
|
+
return parsed;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const rootKeys = Object.keys(parsed).filter((key) => !key.startsWith("?"));
|
|
13
|
+
if (rootKeys.length !== 1) {
|
|
14
|
+
return parsed;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const rootKey = rootKeys[0];
|
|
18
|
+
return isPlainObject(parsed[rootKey]) ? parsed[rootKey] : parsed;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function xmlParse(value) {
|
|
22
|
+
if (!isString(value) || value.length < 1) {
|
|
23
|
+
throw new Error("xmlParse 输入必须是非空字符串", {
|
|
24
|
+
cause: null,
|
|
25
|
+
code: "validation",
|
|
26
|
+
subsystem: "xml",
|
|
27
|
+
operation: "xmlParse"
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return normalizeXmlBody(xmlParser.parse(value));
|
|
32
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "befly",
|
|
3
|
-
"version": "3.24.
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "3.24.3",
|
|
4
|
+
"gitHead": "c14b3572a265a384993be0d375d023f82cdd9ffd",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Befly - 为 Bun 专属打造的 JavaScript API 接口框架核心引擎",
|
|
7
7
|
"keywords": [
|
|
@@ -38,6 +38,9 @@
|
|
|
38
38
|
],
|
|
39
39
|
"type": "module",
|
|
40
40
|
"main": "./index.js",
|
|
41
|
+
"imports": {
|
|
42
|
+
"#root/*": "./*"
|
|
43
|
+
},
|
|
41
44
|
"exports": {
|
|
42
45
|
".": {
|
|
43
46
|
"import": "./index.js",
|
package/plugins/xmlParse.js
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { isString } from "../utils/is.js";
|
|
4
|
-
|
|
5
|
-
const xmlParser = new XMLParser();
|
|
6
|
-
|
|
7
|
-
export function xmlParse(value) {
|
|
8
|
-
if (!isString(value) || value.length < 1) {
|
|
9
|
-
throw new Error("xmlParse 输入必须是非空字符串", {
|
|
10
|
-
cause: null,
|
|
11
|
-
code: "validation",
|
|
12
|
-
subsystem: "xml",
|
|
13
|
-
operation: "xmlParse"
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return xmlParser.parse(value);
|
|
18
|
-
}
|
|
1
|
+
import { xmlParse } from "#root/lib/xmlParse.js";
|
|
19
2
|
|
|
20
3
|
export default {
|
|
21
4
|
order: 4,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { mkdir } from "node:fs/promises";
|
|
2
2
|
import { basename, resolve, join } from "node:path";
|
|
3
3
|
|
|
4
|
-
import { Connect } from "
|
|
5
|
-
import { DbHelper } from "
|
|
6
|
-
import { Logger } from "
|
|
7
|
-
import { importDefault } from "
|
|
8
|
-
import { isNonEmptyString, isPlainObject } from "
|
|
9
|
-
import { camelCase } from "
|
|
4
|
+
import { Connect } from "#root/lib/connect.js";
|
|
5
|
+
import { DbHelper } from "#root/lib/dbHelper.js";
|
|
6
|
+
import { Logger } from "#root/lib/logger.js";
|
|
7
|
+
import { importDefault } from "#root/utils/importDefault.js";
|
|
8
|
+
import { isNonEmptyString, isPlainObject } from "#root/utils/is.js";
|
|
9
|
+
import { camelCase } from "#root/utils/util.js";
|
|
10
10
|
import { buildSyncDbDiff, groupSyncDbColumns } from "./diff.js";
|
|
11
11
|
import { printSyncDbProcessLog } from "./report.js";
|
|
12
12
|
|
package/scripts/syncDb/diff.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
|
|
3
|
-
import { isNonEmptyString, isPlainObject } from "
|
|
4
|
-
import { camelCase, snakeCase } from "
|
|
3
|
+
import { isNonEmptyString, isPlainObject } from "#root/utils/is.js";
|
|
4
|
+
import { camelCase, snakeCase } from "#root/utils/util.js";
|
|
5
5
|
import { printSyncDbProcessLog } from "./report.js";
|
|
6
6
|
import { toSyncDbFieldDef } from "./transform.js";
|
|
7
7
|
|
package/scripts/syncDb/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join, resolve } from "node:path";
|
|
2
2
|
|
|
3
|
-
import { Connect } from "
|
|
4
|
-
import { Logger } from "
|
|
3
|
+
import { Connect } from "#root/lib/connect.js";
|
|
4
|
+
import { Logger } from "#root/lib/logger.js";
|
|
5
5
|
import { applySyncDbDiff } from "./diff.js";
|
|
6
6
|
import { prepareSyncDbBaseContext } from "./context.js";
|
|
7
7
|
import { printSyncDbDiffSummary, printSyncDbProcessLog, writeSyncDbReport } from "./report.js";
|
package/scripts/syncDb/report.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { mkdir } from "node:fs/promises";
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
|
|
4
|
-
import { Logger } from "
|
|
5
|
-
import { isNonEmptyString } from "
|
|
6
|
-
import { camelCase } from "
|
|
4
|
+
import { Logger } from "#root/lib/logger.js";
|
|
5
|
+
import { isNonEmptyString } from "#root/utils/is.js";
|
|
6
|
+
import { camelCase } from "#root/utils/util.js";
|
|
7
7
|
import { toSyncDbFieldDef } from "./transform.js";
|
|
8
8
|
|
|
9
9
|
export function printSyncDbProcessLog(message) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { DECIMAL_KIND_TYPES, ENUM_KIND_TYPES, FLOAT_KIND_TYPES, INT_KIND_TYPES, JSON_KIND_TYPES, STRING_KIND_TYPES, TEXT_KIND_TYPES } from "
|
|
2
|
-
import { isNonEmptyString, isNumber } from "
|
|
3
|
-
import { camelCaseKeepUnderscore } from "
|
|
1
|
+
import { DECIMAL_KIND_TYPES, ENUM_KIND_TYPES, FLOAT_KIND_TYPES, INT_KIND_TYPES, JSON_KIND_TYPES, STRING_KIND_TYPES, TEXT_KIND_TYPES } from "#root/configs/constConfig.js";
|
|
2
|
+
import { isNonEmptyString, isNumber } from "#root/utils/is.js";
|
|
3
|
+
import { camelCaseKeepUnderscore } from "#root/utils/util.js";
|
|
4
4
|
|
|
5
5
|
function resolveSyncDbEnumInput(columnType) {
|
|
6
6
|
const matched = /^enum\((.*)\)$/.exec(columnType);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|