@ruiapp/rapid-core 0.5.11 → 0.5.13
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/CHANGELOG.md +7 -7
- package/dist/facilities/cache/CacheFacilityTypes.d.ts +4 -2
- package/dist/facilities/cache/MemoryCache.d.ts +3 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +131 -72
- package/dist/utilities/entityUtility.d.ts +1 -0
- package/dist/utilities/passwordUtility.d.ts +14 -0
- package/package.json +2 -2
- package/rollup.config.js +16 -16
- package/src/bootstrapApplicationConfig.ts +638 -638
- package/src/core/actionHandler.ts +22 -22
- package/src/core/eventManager.ts +20 -20
- package/src/core/facility.ts +7 -7
- package/src/core/http/formDataParser.ts +89 -89
- package/src/core/http-types.ts +4 -4
- package/src/core/pluginManager.ts +175 -175
- package/src/core/providers/runtimeProvider.ts +5 -5
- package/src/core/request.ts +95 -95
- package/src/core/response.ts +79 -79
- package/src/core/routeContext.ts +100 -100
- package/src/core/routesBuilder.ts +88 -88
- package/src/core/server.ts +145 -145
- package/src/dataAccess/columnTypeMapper.ts +22 -22
- package/src/dataAccess/dataAccessTypes.ts +163 -163
- package/src/dataAccess/dataAccessor.ts +135 -135
- package/src/dataAccess/entityManager.ts +1910 -1910
- package/src/dataAccess/entityMapper.ts +100 -100
- package/src/dataAccess/propertyMapper.ts +28 -28
- package/src/deno-std/assert/assert.ts +9 -9
- package/src/deno-std/assert/assertion_error.ts +7 -7
- package/src/deno-std/datetime/to_imf.ts +32 -32
- package/src/deno-std/encoding/base64.ts +141 -141
- package/src/deno-std/http/cookie.ts +372 -372
- package/src/facilities/cache/CacheFacilityTypes.ts +29 -27
- package/src/facilities/cache/CacheFactory.ts +31 -31
- package/src/facilities/cache/MemoryCache.ts +58 -42
- package/src/facilities/cache/MemoryCacheProvider.ts +15 -15
- package/src/facilities/log/LogFacility.ts +35 -35
- package/src/helpers/entityHelpers.ts +76 -76
- package/src/helpers/filterHelper.ts +148 -148
- package/src/helpers/inputHelper.ts +11 -11
- package/src/helpers/metaHelper.ts +104 -104
- package/src/helpers/runCollectionEntityActionHandler.ts +57 -57
- package/src/index.ts +67 -63
- package/src/plugins/auth/AuthPlugin.ts +93 -93
- package/src/plugins/auth/actionHandlers/changePassword.ts +60 -61
- package/src/plugins/auth/actionHandlers/createSession.ts +68 -68
- package/src/plugins/auth/actionHandlers/deleteSession.ts +18 -18
- package/src/plugins/auth/actionHandlers/getMyProfile.ts +35 -35
- package/src/plugins/auth/actionHandlers/index.ts +8 -8
- package/src/plugins/auth/actionHandlers/resetPassword.ts +44 -45
- package/src/plugins/auth/models/AccessToken.ts +56 -56
- package/src/plugins/auth/models/index.ts +3 -3
- package/src/plugins/auth/routes/changePassword.ts +15 -15
- package/src/plugins/auth/routes/getMyProfile.ts +15 -15
- package/src/plugins/auth/routes/index.ts +7 -7
- package/src/plugins/auth/routes/resetPassword.ts +15 -15
- package/src/plugins/auth/routes/signin.ts +15 -15
- package/src/plugins/auth/routes/signout.ts +15 -15
- package/src/plugins/auth/services/AuthService.ts +39 -39
- package/src/plugins/cronJob/CronJobPlugin.ts +112 -112
- package/src/plugins/cronJob/CronJobPluginTypes.ts +49 -49
- package/src/plugins/cronJob/actionHandlers/index.ts +4 -4
- package/src/plugins/cronJob/actionHandlers/runCronJob.ts +29 -29
- package/src/plugins/cronJob/routes/index.ts +3 -3
- package/src/plugins/cronJob/routes/runCronJob.ts +15 -15
- package/src/plugins/dataManage/DataManagePlugin.ts +163 -163
- package/src/plugins/dataManage/actionHandlers/addEntityRelations.ts +15 -15
- package/src/plugins/dataManage/actionHandlers/countCollectionEntities.ts +17 -17
- package/src/plugins/dataManage/actionHandlers/createCollectionEntitiesBatch.ts +81 -81
- package/src/plugins/dataManage/actionHandlers/createCollectionEntity.ts +20 -20
- package/src/plugins/dataManage/actionHandlers/deleteCollectionEntities.ts +45 -45
- package/src/plugins/dataManage/actionHandlers/deleteCollectionEntityById.ts +20 -20
- package/src/plugins/dataManage/actionHandlers/findCollectionEntities.ts +27 -27
- package/src/plugins/dataManage/actionHandlers/findCollectionEntityById.ts +30 -30
- package/src/plugins/dataManage/actionHandlers/queryDatabase.ts +22 -22
- package/src/plugins/dataManage/actionHandlers/removeEntityRelations.ts +15 -15
- package/src/plugins/dataManage/actionHandlers/updateCollectionEntityById.ts +38 -38
- package/src/plugins/entityAccessControl/EntityAccessControlPlugin.ts +146 -146
- package/src/plugins/fileManage/FileManagePlugin.ts +52 -52
- package/src/plugins/fileManage/actionHandlers/downloadDocument.ts +65 -65
- package/src/plugins/fileManage/actionHandlers/downloadFile.ts +44 -44
- package/src/plugins/fileManage/actionHandlers/uploadFile.ts +33 -33
- package/src/plugins/fileManage/routes/downloadDocument.ts +15 -15
- package/src/plugins/fileManage/routes/downloadFile.ts +15 -15
- package/src/plugins/fileManage/routes/index.ts +5 -5
- package/src/plugins/fileManage/routes/uploadFile.ts +15 -15
- package/src/plugins/license/LicensePlugin.ts +79 -79
- package/src/plugins/license/LicensePluginTypes.ts +95 -95
- package/src/plugins/license/LicenseService.ts +118 -118
- package/src/plugins/license/actionHandlers/getLicense.ts +18 -18
- package/src/plugins/license/actionHandlers/index.ts +4 -4
- package/src/plugins/license/helpers/certHelper.ts +21 -21
- package/src/plugins/license/helpers/cryptoHelper.ts +47 -47
- package/src/plugins/license/models/index.ts +1 -1
- package/src/plugins/license/routes/getLicense.ts +15 -15
- package/src/plugins/license/routes/index.ts +3 -3
- package/src/plugins/mail/MailPlugin.ts +74 -74
- package/src/plugins/mail/MailPluginTypes.ts +27 -27
- package/src/plugins/mail/MailService.ts +38 -38
- package/src/plugins/mail/actionHandlers/index.ts +3 -3
- package/src/plugins/mail/models/index.ts +1 -1
- package/src/plugins/mail/routes/index.ts +1 -1
- package/src/plugins/metaManage/MetaManagePlugin.ts +530 -530
- package/src/plugins/metaManage/actionHandlers/getMetaModelDetail.ts +10 -10
- package/src/plugins/metaManage/actionHandlers/listMetaModels.ts +9 -9
- package/src/plugins/metaManage/actionHandlers/listMetaRoutes.ts +9 -9
- package/src/plugins/notification/NotificationPlugin.ts +68 -68
- package/src/plugins/notification/NotificationPluginTypes.ts +13 -13
- package/src/plugins/notification/NotificationService.ts +25 -25
- package/src/plugins/notification/actionHandlers/index.ts +3 -3
- package/src/plugins/notification/models/Notification.ts +60 -60
- package/src/plugins/notification/models/index.ts +3 -3
- package/src/plugins/notification/routes/index.ts +1 -1
- package/src/plugins/routeManage/RouteManagePlugin.ts +62 -62
- package/src/plugins/routeManage/actionHandlers/httpProxy.ts +13 -13
- package/src/plugins/sequence/SequencePlugin.ts +146 -146
- package/src/plugins/sequence/SequencePluginTypes.ts +69 -69
- package/src/plugins/sequence/SequenceService.ts +92 -92
- package/src/plugins/sequence/actionHandlers/generateSn.ts +32 -32
- package/src/plugins/sequence/actionHandlers/index.ts +4 -4
- package/src/plugins/sequence/models/SequenceAutoIncrementRecord.ts +49 -49
- package/src/plugins/sequence/models/SequenceRule.ts +42 -42
- package/src/plugins/sequence/models/index.ts +4 -4
- package/src/plugins/sequence/routes/generateSn.ts +15 -15
- package/src/plugins/sequence/routes/index.ts +3 -3
- package/src/plugins/sequence/segment-utility.ts +11 -11
- package/src/plugins/sequence/segments/autoIncrement.ts +90 -90
- package/src/plugins/sequence/segments/dayOfMonth.ts +19 -19
- package/src/plugins/sequence/segments/index.ts +9 -9
- package/src/plugins/sequence/segments/literal.ts +16 -16
- package/src/plugins/sequence/segments/month.ts +19 -19
- package/src/plugins/sequence/segments/parameter.ts +20 -20
- package/src/plugins/sequence/segments/year.ts +19 -19
- package/src/plugins/serverOperation/ServerOperationPlugin.ts +91 -91
- package/src/plugins/serverOperation/ServerOperationPluginTypes.ts +15 -15
- package/src/plugins/serverOperation/actionHandlers/index.ts +4 -4
- package/src/plugins/serverOperation/actionHandlers/runServerOperation.ts +15 -15
- package/src/plugins/setting/SettingPlugin.ts +68 -68
- package/src/plugins/setting/SettingPluginTypes.ts +37 -37
- package/src/plugins/setting/SettingService.ts +213 -213
- package/src/plugins/setting/actionHandlers/getSystemSettingValues.ts +30 -30
- package/src/plugins/setting/actionHandlers/getUserSettingValues.ts +38 -38
- package/src/plugins/setting/actionHandlers/index.ts +6 -6
- package/src/plugins/setting/actionHandlers/setSystemSettingValues.ts +30 -30
- package/src/plugins/setting/models/SystemSettingGroupSetting.ts +57 -57
- package/src/plugins/setting/models/SystemSettingItem.ts +48 -48
- package/src/plugins/setting/models/SystemSettingItemSetting.ts +73 -73
- package/src/plugins/setting/models/UserSettingGroupSetting.ts +57 -57
- package/src/plugins/setting/models/UserSettingItem.ts +55 -55
- package/src/plugins/setting/models/UserSettingItemSetting.ts +73 -73
- package/src/plugins/setting/models/index.ts +8 -8
- package/src/plugins/setting/routes/getSystemSettingValues.ts +15 -15
- package/src/plugins/setting/routes/getUserSettingValues.ts +15 -15
- package/src/plugins/setting/routes/index.ts +5 -5
- package/src/plugins/setting/routes/setSystemSettingValues.ts +15 -15
- package/src/plugins/stateMachine/StateMachinePlugin.ts +196 -196
- package/src/plugins/stateMachine/StateMachinePluginTypes.ts +48 -48
- package/src/plugins/stateMachine/actionHandlers/index.ts +4 -4
- package/src/plugins/stateMachine/actionHandlers/sendStateMachineEvent.ts +54 -54
- package/src/plugins/stateMachine/models/StateMachine.ts +42 -42
- package/src/plugins/stateMachine/models/index.ts +3 -3
- package/src/plugins/stateMachine/routes/index.ts +3 -3
- package/src/plugins/stateMachine/routes/sendStateMachineEvent.ts +15 -15
- package/src/plugins/stateMachine/stateMachineHelper.ts +36 -36
- package/src/plugins/webhooks/WebhooksPlugin.ts +148 -148
- package/src/plugins/webhooks/pluginConfig.ts +75 -75
- package/src/polyfill.ts +5 -5
- package/src/proxy/mod.ts +38 -38
- package/src/proxy/types.ts +21 -21
- package/src/queryBuilder/index.ts +1 -1
- package/src/queryBuilder/queryBuilder.ts +668 -668
- package/src/server.ts +480 -480
- package/src/types.ts +722 -722
- package/src/utilities/accessControlUtility.ts +33 -33
- package/src/utilities/entityUtility.ts +18 -0
- package/src/utilities/errorUtility.ts +15 -15
- package/src/utilities/fsUtility.ts +61 -61
- package/src/utilities/httpUtility.ts +19 -19
- package/src/utilities/jwtUtility.ts +26 -26
- package/src/utilities/passwordUtility.ts +26 -0
- package/src/utilities/pathUtility.ts +14 -14
- package/src/utilities/timeUtility.ts +9 -9
- package/src/utilities/typeUtility.ts +15 -15
- package/tsconfig.json +19 -19
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
import { RpdDataModel } from "~/types";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
maintainedBy: "settingPlugin",
|
|
5
|
-
namespace: "svc",
|
|
6
|
-
name: "user_setting_item_setting",
|
|
7
|
-
singularCode: "user_setting_item_setting",
|
|
8
|
-
pluralCode: "user_setting_item_settings",
|
|
9
|
-
schema: "public",
|
|
10
|
-
tableName: "user_setting_item_settings",
|
|
11
|
-
properties: [
|
|
12
|
-
{
|
|
13
|
-
name: "id",
|
|
14
|
-
code: "id",
|
|
15
|
-
columnName: "id",
|
|
16
|
-
type: "integer",
|
|
17
|
-
required: true,
|
|
18
|
-
autoIncrement: true,
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: "group",
|
|
22
|
-
code: "group",
|
|
23
|
-
type: "relation",
|
|
24
|
-
relation: "one",
|
|
25
|
-
targetSingularCode: "user_setting_group_setting",
|
|
26
|
-
targetIdColumnName: "group_id",
|
|
27
|
-
required: true,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: "orderNum",
|
|
31
|
-
code: "orderNum",
|
|
32
|
-
columnName: "order_num",
|
|
33
|
-
type: "integer",
|
|
34
|
-
required: true,
|
|
35
|
-
defaultValue: "0",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: "type",
|
|
39
|
-
code: "type",
|
|
40
|
-
columnName: "type",
|
|
41
|
-
type: "text",
|
|
42
|
-
required: true,
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: "code",
|
|
46
|
-
code: "code",
|
|
47
|
-
columnName: "code",
|
|
48
|
-
type: "text",
|
|
49
|
-
required: true,
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
name: "name",
|
|
53
|
-
code: "name",
|
|
54
|
-
columnName: "name",
|
|
55
|
-
type: "text",
|
|
56
|
-
required: false,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: "description",
|
|
60
|
-
code: "description",
|
|
61
|
-
columnName: "description",
|
|
62
|
-
type: "text",
|
|
63
|
-
required: false,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "config",
|
|
67
|
-
code: "config",
|
|
68
|
-
columnName: "config",
|
|
69
|
-
type: "json",
|
|
70
|
-
required: false,
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
} as RpdDataModel;
|
|
1
|
+
import { RpdDataModel } from "~/types";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
maintainedBy: "settingPlugin",
|
|
5
|
+
namespace: "svc",
|
|
6
|
+
name: "user_setting_item_setting",
|
|
7
|
+
singularCode: "user_setting_item_setting",
|
|
8
|
+
pluralCode: "user_setting_item_settings",
|
|
9
|
+
schema: "public",
|
|
10
|
+
tableName: "user_setting_item_settings",
|
|
11
|
+
properties: [
|
|
12
|
+
{
|
|
13
|
+
name: "id",
|
|
14
|
+
code: "id",
|
|
15
|
+
columnName: "id",
|
|
16
|
+
type: "integer",
|
|
17
|
+
required: true,
|
|
18
|
+
autoIncrement: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "group",
|
|
22
|
+
code: "group",
|
|
23
|
+
type: "relation",
|
|
24
|
+
relation: "one",
|
|
25
|
+
targetSingularCode: "user_setting_group_setting",
|
|
26
|
+
targetIdColumnName: "group_id",
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "orderNum",
|
|
31
|
+
code: "orderNum",
|
|
32
|
+
columnName: "order_num",
|
|
33
|
+
type: "integer",
|
|
34
|
+
required: true,
|
|
35
|
+
defaultValue: "0",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "type",
|
|
39
|
+
code: "type",
|
|
40
|
+
columnName: "type",
|
|
41
|
+
type: "text",
|
|
42
|
+
required: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "code",
|
|
46
|
+
code: "code",
|
|
47
|
+
columnName: "code",
|
|
48
|
+
type: "text",
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "name",
|
|
53
|
+
code: "name",
|
|
54
|
+
columnName: "name",
|
|
55
|
+
type: "text",
|
|
56
|
+
required: false,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "description",
|
|
60
|
+
code: "description",
|
|
61
|
+
columnName: "description",
|
|
62
|
+
type: "text",
|
|
63
|
+
required: false,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "config",
|
|
67
|
+
code: "config",
|
|
68
|
+
columnName: "config",
|
|
69
|
+
type: "json",
|
|
70
|
+
required: false,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
} as RpdDataModel;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import SystemSettingGroupSetting from "./SystemSettingGroupSetting";
|
|
2
|
-
import SystemSettingItem from "./SystemSettingItem";
|
|
3
|
-
import SystemSettingItemSetting from "./SystemSettingItemSetting";
|
|
4
|
-
import UserSettingGroupSetting from "./UserSettingGroupSetting";
|
|
5
|
-
import UserSettingItem from "./UserSettingItem";
|
|
6
|
-
import UserSettingItemSetting from "./UserSettingItemSetting";
|
|
7
|
-
|
|
8
|
-
export default [SystemSettingGroupSetting, SystemSettingItem, SystemSettingItemSetting, UserSettingGroupSetting, UserSettingItem, UserSettingItemSetting];
|
|
1
|
+
import SystemSettingGroupSetting from "./SystemSettingGroupSetting";
|
|
2
|
+
import SystemSettingItem from "./SystemSettingItem";
|
|
3
|
+
import SystemSettingItemSetting from "./SystemSettingItemSetting";
|
|
4
|
+
import UserSettingGroupSetting from "./UserSettingGroupSetting";
|
|
5
|
+
import UserSettingItem from "./UserSettingItem";
|
|
6
|
+
import UserSettingItemSetting from "./UserSettingItemSetting";
|
|
7
|
+
|
|
8
|
+
export default [SystemSettingGroupSetting, SystemSettingItem, SystemSettingItemSetting, UserSettingGroupSetting, UserSettingItem, UserSettingItemSetting];
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { RpdRoute } from "~/types";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
namespace: "svc",
|
|
5
|
-
name: "svc.getSystemSettingValues",
|
|
6
|
-
code: "svc.getSystemSettingValues",
|
|
7
|
-
type: "RESTful",
|
|
8
|
-
method: "GET",
|
|
9
|
-
endpoint: "/svc/systemSettingValues",
|
|
10
|
-
actions: [
|
|
11
|
-
{
|
|
12
|
-
code: "getSystemSettingValues",
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
} satisfies RpdRoute;
|
|
1
|
+
import { RpdRoute } from "~/types";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
namespace: "svc",
|
|
5
|
+
name: "svc.getSystemSettingValues",
|
|
6
|
+
code: "svc.getSystemSettingValues",
|
|
7
|
+
type: "RESTful",
|
|
8
|
+
method: "GET",
|
|
9
|
+
endpoint: "/svc/systemSettingValues",
|
|
10
|
+
actions: [
|
|
11
|
+
{
|
|
12
|
+
code: "getSystemSettingValues",
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
} satisfies RpdRoute;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { RpdRoute } from "~/types";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
namespace: "svc",
|
|
5
|
-
name: "svc.getUserSettingValues",
|
|
6
|
-
code: "svc.getUserSettingValues",
|
|
7
|
-
type: "RESTful",
|
|
8
|
-
method: "GET",
|
|
9
|
-
endpoint: "/svc/userSettingValues",
|
|
10
|
-
actions: [
|
|
11
|
-
{
|
|
12
|
-
code: "getUserSettingValues",
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
} satisfies RpdRoute;
|
|
1
|
+
import { RpdRoute } from "~/types";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
namespace: "svc",
|
|
5
|
+
name: "svc.getUserSettingValues",
|
|
6
|
+
code: "svc.getUserSettingValues",
|
|
7
|
+
type: "RESTful",
|
|
8
|
+
method: "GET",
|
|
9
|
+
endpoint: "/svc/userSettingValues",
|
|
10
|
+
actions: [
|
|
11
|
+
{
|
|
12
|
+
code: "getUserSettingValues",
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
} satisfies RpdRoute;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import getUserSettingValues from "./getUserSettingValues";
|
|
2
|
-
import getSystemSettingValues from "./getSystemSettingValues";
|
|
3
|
-
import setSystemSettingValues from "./setSystemSettingValues";
|
|
4
|
-
|
|
5
|
-
export default [getUserSettingValues, getSystemSettingValues, setSystemSettingValues];
|
|
1
|
+
import getUserSettingValues from "./getUserSettingValues";
|
|
2
|
+
import getSystemSettingValues from "./getSystemSettingValues";
|
|
3
|
+
import setSystemSettingValues from "./setSystemSettingValues";
|
|
4
|
+
|
|
5
|
+
export default [getUserSettingValues, getSystemSettingValues, setSystemSettingValues];
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { RpdRoute } from "~/types";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
namespace: "svc",
|
|
5
|
-
name: "svc.setSystemSettingValues",
|
|
6
|
-
code: "svc.setSystemSettingValues",
|
|
7
|
-
type: "RESTful",
|
|
8
|
-
method: "PATCH",
|
|
9
|
-
endpoint: "/svc/systemSettingValues",
|
|
10
|
-
actions: [
|
|
11
|
-
{
|
|
12
|
-
code: "setSystemSettingValues",
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
} satisfies RpdRoute;
|
|
1
|
+
import { RpdRoute } from "~/types";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
namespace: "svc",
|
|
5
|
+
name: "svc.setSystemSettingValues",
|
|
6
|
+
code: "svc.setSystemSettingValues",
|
|
7
|
+
type: "RESTful",
|
|
8
|
+
method: "PATCH",
|
|
9
|
+
endpoint: "/svc/systemSettingValues",
|
|
10
|
+
actions: [
|
|
11
|
+
{
|
|
12
|
+
code: "setSystemSettingValues",
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
} satisfies RpdRoute;
|
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* State machine plugin
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { CreateEntityOptions, RpdApplicationConfig, RpdDataModel, RpdDataModelProperty, UpdateEntityByIdOptions } from "~/types";
|
|
6
|
-
import {
|
|
7
|
-
IRpdServer,
|
|
8
|
-
RapidPlugin,
|
|
9
|
-
RpdConfigurationItemOptions,
|
|
10
|
-
RpdServerPluginConfigurableTargetOptions,
|
|
11
|
-
RpdServerPluginExtendingAbilities,
|
|
12
|
-
} from "~/core/server";
|
|
13
|
-
|
|
14
|
-
import pluginActionHandlers from "./actionHandlers";
|
|
15
|
-
import pluginModels from "./models";
|
|
16
|
-
import pluginRoutes from "./routes";
|
|
17
|
-
import { filter, find, first, get, isEqual } from "lodash";
|
|
18
|
-
import { PropertyStateMachineConfig } from "./StateMachinePluginTypes";
|
|
19
|
-
import { isNullOrUndefined } from "~/utilities/typeUtility";
|
|
20
|
-
import { getStateMachineNextSnapshot } from "./stateMachineHelper";
|
|
21
|
-
import { getEntityPropertiesIncludingBase } from "~/helpers/metaHelper";
|
|
22
|
-
|
|
23
|
-
class StateMachinePlugin implements RapidPlugin {
|
|
24
|
-
get code(): string {
|
|
25
|
-
return "stateMachinePlugin";
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
get description(): string {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get extendingAbilities(): RpdServerPluginExtendingAbilities[] {
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get configurableTargets(): RpdServerPluginConfigurableTargetOptions[] {
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
get configurations(): RpdConfigurationItemOptions[] {
|
|
41
|
-
return [];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async registerActionHandlers(server: IRpdServer): Promise<any> {
|
|
45
|
-
for (const actionHandler of pluginActionHandlers) {
|
|
46
|
-
server.registerActionHandler(this, actionHandler);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async configureModels(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
|
|
51
|
-
server.appendApplicationConfig({ models: pluginModels });
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
|
|
55
|
-
server.appendApplicationConfig({ routes: pluginRoutes });
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async onApplicationLoaded(server: IRpdServer, applicationConfig: RpdApplicationConfig) {
|
|
59
|
-
const models = server.getApplicationConfig().models;
|
|
60
|
-
for (const model of models) {
|
|
61
|
-
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
62
|
-
const propertyStateMachineConfig: PropertyStateMachineConfig = property.config?.stateMachine;
|
|
63
|
-
if (propertyStateMachineConfig) {
|
|
64
|
-
const stateMachineCode = getStateMachineCode(model, property);
|
|
65
|
-
const stateMachineConfig = propertyStateMachineConfig.config;
|
|
66
|
-
|
|
67
|
-
const stateMachineDataAccessor = server.getDataAccessor({
|
|
68
|
-
singularCode: "state_machine",
|
|
69
|
-
});
|
|
70
|
-
const stateMachine = await stateMachineDataAccessor.findOne(
|
|
71
|
-
{
|
|
72
|
-
filters: [
|
|
73
|
-
{
|
|
74
|
-
operator: "eq",
|
|
75
|
-
field: "code",
|
|
76
|
-
value: stateMachineCode,
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
},
|
|
80
|
-
null,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
if (stateMachine) {
|
|
84
|
-
if (!isEqual(stateMachine.config, stateMachineConfig)) {
|
|
85
|
-
await stateMachineDataAccessor.updateById(
|
|
86
|
-
stateMachine.id,
|
|
87
|
-
{
|
|
88
|
-
config: stateMachineConfig,
|
|
89
|
-
},
|
|
90
|
-
null,
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
await stateMachineDataAccessor.create(
|
|
95
|
-
{
|
|
96
|
-
code: stateMachineCode,
|
|
97
|
-
config: stateMachineConfig,
|
|
98
|
-
},
|
|
99
|
-
null,
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* 创建实体前的处理。
|
|
109
|
-
* 当属性启用了状态机管理,如创建实体时没有指定该属性的状态值,则应将该属性设置为 stateMachine.config.initial 。
|
|
110
|
-
* @param server
|
|
111
|
-
* @param model
|
|
112
|
-
* @param options
|
|
113
|
-
*/
|
|
114
|
-
async beforeCreateEntity(server: IRpdServer, model: RpdDataModel, options: CreateEntityOptions) {
|
|
115
|
-
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
116
|
-
const isStateMachineEnabled = get(property.config, "stateMachine.enabled", false);
|
|
117
|
-
if (isStateMachineEnabled && isNullOrUndefined(options.entity[property.code])) {
|
|
118
|
-
const initialState = get(property.config, "stateMachine.config.initial", null);
|
|
119
|
-
if (initialState) {
|
|
120
|
-
options.entity[property.code] = initialState;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* 更新实体前的处理。
|
|
128
|
-
* 1. 对所有启用了状态机管理,且 transferControl 为 true 的属性,应禁止直接更新这些属性
|
|
129
|
-
* 2. 当更新实体时指定了operation,则查找启用了状态机管理的属性。
|
|
130
|
-
* 如果一个模型中存在多个属性启用了状态机管理,则以 options.stateProperty 中指定的为准。
|
|
131
|
-
* 对于该状态属性应用 options.operation,使其转换到下一状态。
|
|
132
|
-
* @param server
|
|
133
|
-
* @param model
|
|
134
|
-
* @param options
|
|
135
|
-
*/
|
|
136
|
-
async beforeUpdateEntity(server: IRpdServer, model: RpdDataModel, options: UpdateEntityByIdOptions, currentEntity: any) {
|
|
137
|
-
const entity = options.entityToSave;
|
|
138
|
-
|
|
139
|
-
const stateMachineEnabledProperties: RpdDataModelProperty[] = [];
|
|
140
|
-
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
141
|
-
const isStateMachineEnabled = get(property.config, "stateMachine.enabled", false);
|
|
142
|
-
|
|
143
|
-
if (isStateMachineEnabled) {
|
|
144
|
-
stateMachineEnabledProperties.push(property);
|
|
145
|
-
|
|
146
|
-
const isTransferControlEnabled = get(property.config, "stateMachine.transferControl", false);
|
|
147
|
-
if (isTransferControlEnabled && !isNullOrUndefined(entity[property.code])) {
|
|
148
|
-
throw new Error(`You're not allowed to change '${property.code}' property directly when transfer control is enabled, do an operation instead.`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (!options.operation) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
let statePropertiesToUpdate: RpdDataModelProperty[];
|
|
158
|
-
const statePropertyCodes = options.stateProperties;
|
|
159
|
-
if (statePropertyCodes && statePropertyCodes.length) {
|
|
160
|
-
statePropertiesToUpdate = filter(stateMachineEnabledProperties, (property) => statePropertyCodes.includes(property.code));
|
|
161
|
-
} else {
|
|
162
|
-
statePropertiesToUpdate = stateMachineEnabledProperties;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (!statePropertiesToUpdate.length) {
|
|
166
|
-
throw new Error(`State machine property not found.`);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
for (const statePropertyToUpdate of statePropertiesToUpdate) {
|
|
170
|
-
const machineConfig = get(statePropertyToUpdate.config, "stateMachine.config", null);
|
|
171
|
-
if (!machineConfig) {
|
|
172
|
-
throw new Error(`State machine of property '${statePropertyToUpdate.code}' not configured.`);
|
|
173
|
-
}
|
|
174
|
-
machineConfig.id = getStateMachineCode(model, statePropertyToUpdate);
|
|
175
|
-
|
|
176
|
-
const nextSnapshot = await getStateMachineNextSnapshot({
|
|
177
|
-
machineConfig,
|
|
178
|
-
context: {},
|
|
179
|
-
currentState: currentEntity[statePropertyToUpdate.code],
|
|
180
|
-
event: options.operation,
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
entity[statePropertyToUpdate.code] = nextSnapshot.value;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
function getStateMachineCode(model: RpdDataModel, property: RpdDataModelProperty) {
|
|
189
|
-
if (property.isBaseProperty) {
|
|
190
|
-
return `propertyStateMachine.${model.namespace}.${model.base}.${property.code}`;
|
|
191
|
-
} else {
|
|
192
|
-
return `propertyStateMachine.${model.namespace}.${model.singularCode}.${property.code}`;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export default StateMachinePlugin;
|
|
1
|
+
/**
|
|
2
|
+
* State machine plugin
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { CreateEntityOptions, RpdApplicationConfig, RpdDataModel, RpdDataModelProperty, UpdateEntityByIdOptions } from "~/types";
|
|
6
|
+
import {
|
|
7
|
+
IRpdServer,
|
|
8
|
+
RapidPlugin,
|
|
9
|
+
RpdConfigurationItemOptions,
|
|
10
|
+
RpdServerPluginConfigurableTargetOptions,
|
|
11
|
+
RpdServerPluginExtendingAbilities,
|
|
12
|
+
} from "~/core/server";
|
|
13
|
+
|
|
14
|
+
import pluginActionHandlers from "./actionHandlers";
|
|
15
|
+
import pluginModels from "./models";
|
|
16
|
+
import pluginRoutes from "./routes";
|
|
17
|
+
import { filter, find, first, get, isEqual } from "lodash";
|
|
18
|
+
import { PropertyStateMachineConfig } from "./StateMachinePluginTypes";
|
|
19
|
+
import { isNullOrUndefined } from "~/utilities/typeUtility";
|
|
20
|
+
import { getStateMachineNextSnapshot } from "./stateMachineHelper";
|
|
21
|
+
import { getEntityPropertiesIncludingBase } from "~/helpers/metaHelper";
|
|
22
|
+
|
|
23
|
+
class StateMachinePlugin implements RapidPlugin {
|
|
24
|
+
get code(): string {
|
|
25
|
+
return "stateMachinePlugin";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get description(): string {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get extendingAbilities(): RpdServerPluginExtendingAbilities[] {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get configurableTargets(): RpdServerPluginConfigurableTargetOptions[] {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get configurations(): RpdConfigurationItemOptions[] {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async registerActionHandlers(server: IRpdServer): Promise<any> {
|
|
45
|
+
for (const actionHandler of pluginActionHandlers) {
|
|
46
|
+
server.registerActionHandler(this, actionHandler);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async configureModels(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
|
|
51
|
+
server.appendApplicationConfig({ models: pluginModels });
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
|
|
55
|
+
server.appendApplicationConfig({ routes: pluginRoutes });
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async onApplicationLoaded(server: IRpdServer, applicationConfig: RpdApplicationConfig) {
|
|
59
|
+
const models = server.getApplicationConfig().models;
|
|
60
|
+
for (const model of models) {
|
|
61
|
+
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
62
|
+
const propertyStateMachineConfig: PropertyStateMachineConfig = property.config?.stateMachine;
|
|
63
|
+
if (propertyStateMachineConfig) {
|
|
64
|
+
const stateMachineCode = getStateMachineCode(model, property);
|
|
65
|
+
const stateMachineConfig = propertyStateMachineConfig.config;
|
|
66
|
+
|
|
67
|
+
const stateMachineDataAccessor = server.getDataAccessor({
|
|
68
|
+
singularCode: "state_machine",
|
|
69
|
+
});
|
|
70
|
+
const stateMachine = await stateMachineDataAccessor.findOne(
|
|
71
|
+
{
|
|
72
|
+
filters: [
|
|
73
|
+
{
|
|
74
|
+
operator: "eq",
|
|
75
|
+
field: "code",
|
|
76
|
+
value: stateMachineCode,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
null,
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
if (stateMachine) {
|
|
84
|
+
if (!isEqual(stateMachine.config, stateMachineConfig)) {
|
|
85
|
+
await stateMachineDataAccessor.updateById(
|
|
86
|
+
stateMachine.id,
|
|
87
|
+
{
|
|
88
|
+
config: stateMachineConfig,
|
|
89
|
+
},
|
|
90
|
+
null,
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
await stateMachineDataAccessor.create(
|
|
95
|
+
{
|
|
96
|
+
code: stateMachineCode,
|
|
97
|
+
config: stateMachineConfig,
|
|
98
|
+
},
|
|
99
|
+
null,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* 创建实体前的处理。
|
|
109
|
+
* 当属性启用了状态机管理,如创建实体时没有指定该属性的状态值,则应将该属性设置为 stateMachine.config.initial 。
|
|
110
|
+
* @param server
|
|
111
|
+
* @param model
|
|
112
|
+
* @param options
|
|
113
|
+
*/
|
|
114
|
+
async beforeCreateEntity(server: IRpdServer, model: RpdDataModel, options: CreateEntityOptions) {
|
|
115
|
+
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
116
|
+
const isStateMachineEnabled = get(property.config, "stateMachine.enabled", false);
|
|
117
|
+
if (isStateMachineEnabled && isNullOrUndefined(options.entity[property.code])) {
|
|
118
|
+
const initialState = get(property.config, "stateMachine.config.initial", null);
|
|
119
|
+
if (initialState) {
|
|
120
|
+
options.entity[property.code] = initialState;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* 更新实体前的处理。
|
|
128
|
+
* 1. 对所有启用了状态机管理,且 transferControl 为 true 的属性,应禁止直接更新这些属性
|
|
129
|
+
* 2. 当更新实体时指定了operation,则查找启用了状态机管理的属性。
|
|
130
|
+
* 如果一个模型中存在多个属性启用了状态机管理,则以 options.stateProperty 中指定的为准。
|
|
131
|
+
* 对于该状态属性应用 options.operation,使其转换到下一状态。
|
|
132
|
+
* @param server
|
|
133
|
+
* @param model
|
|
134
|
+
* @param options
|
|
135
|
+
*/
|
|
136
|
+
async beforeUpdateEntity(server: IRpdServer, model: RpdDataModel, options: UpdateEntityByIdOptions, currentEntity: any) {
|
|
137
|
+
const entity = options.entityToSave;
|
|
138
|
+
|
|
139
|
+
const stateMachineEnabledProperties: RpdDataModelProperty[] = [];
|
|
140
|
+
for (const property of getEntityPropertiesIncludingBase(server, model)) {
|
|
141
|
+
const isStateMachineEnabled = get(property.config, "stateMachine.enabled", false);
|
|
142
|
+
|
|
143
|
+
if (isStateMachineEnabled) {
|
|
144
|
+
stateMachineEnabledProperties.push(property);
|
|
145
|
+
|
|
146
|
+
const isTransferControlEnabled = get(property.config, "stateMachine.transferControl", false);
|
|
147
|
+
if (isTransferControlEnabled && !isNullOrUndefined(entity[property.code])) {
|
|
148
|
+
throw new Error(`You're not allowed to change '${property.code}' property directly when transfer control is enabled, do an operation instead.`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (!options.operation) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
let statePropertiesToUpdate: RpdDataModelProperty[];
|
|
158
|
+
const statePropertyCodes = options.stateProperties;
|
|
159
|
+
if (statePropertyCodes && statePropertyCodes.length) {
|
|
160
|
+
statePropertiesToUpdate = filter(stateMachineEnabledProperties, (property) => statePropertyCodes.includes(property.code));
|
|
161
|
+
} else {
|
|
162
|
+
statePropertiesToUpdate = stateMachineEnabledProperties;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (!statePropertiesToUpdate.length) {
|
|
166
|
+
throw new Error(`State machine property not found.`);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
for (const statePropertyToUpdate of statePropertiesToUpdate) {
|
|
170
|
+
const machineConfig = get(statePropertyToUpdate.config, "stateMachine.config", null);
|
|
171
|
+
if (!machineConfig) {
|
|
172
|
+
throw new Error(`State machine of property '${statePropertyToUpdate.code}' not configured.`);
|
|
173
|
+
}
|
|
174
|
+
machineConfig.id = getStateMachineCode(model, statePropertyToUpdate);
|
|
175
|
+
|
|
176
|
+
const nextSnapshot = await getStateMachineNextSnapshot({
|
|
177
|
+
machineConfig,
|
|
178
|
+
context: {},
|
|
179
|
+
currentState: currentEntity[statePropertyToUpdate.code],
|
|
180
|
+
event: options.operation,
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
entity[statePropertyToUpdate.code] = nextSnapshot.value;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function getStateMachineCode(model: RpdDataModel, property: RpdDataModelProperty) {
|
|
189
|
+
if (property.isBaseProperty) {
|
|
190
|
+
return `propertyStateMachine.${model.namespace}.${model.base}.${property.code}`;
|
|
191
|
+
} else {
|
|
192
|
+
return `propertyStateMachine.${model.namespace}.${model.singularCode}.${property.code}`;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export default StateMachinePlugin;
|