@ruiapp/rapid-core 0.1.63 → 0.1.65

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 (161) hide show
  1. package/dist/helpers/entityHelpers.d.ts +3 -1
  2. package/dist/{dataAccess → helpers}/metaHelper.d.ts +3 -0
  3. package/dist/index.js +109 -31
  4. package/dist/plugins/setting/SettingPlugin.d.ts +21 -0
  5. package/dist/plugins/setting/SettingPluginTypes.d.ts +31 -0
  6. package/dist/plugins/setting/SettingService.d.ts +10 -0
  7. package/dist/plugins/setting/actionHandlers/getSystemSettingValues.d.ts +7 -0
  8. package/dist/plugins/setting/actionHandlers/index.d.ts +3 -0
  9. package/dist/plugins/setting/models/SystemSettingGroupSetting.d.ts +3 -0
  10. package/dist/plugins/setting/models/SystemSettingItem.d.ts +3 -0
  11. package/dist/plugins/setting/models/SystemSettingItemSetting.d.ts +3 -0
  12. package/dist/plugins/setting/models/UserSettingGroupSetting.d.ts +3 -0
  13. package/dist/plugins/setting/models/UserSettingItem.d.ts +3 -0
  14. package/dist/plugins/setting/models/UserSettingItemSetting.d.ts +3 -0
  15. package/dist/plugins/setting/models/index.d.ts +2 -0
  16. package/dist/plugins/setting/routes/getSystemSettingValues.d.ts +12 -0
  17. package/dist/plugins/setting/routes/index.d.ts +12 -0
  18. package/dist/types.d.ts +4 -0
  19. package/package.json +1 -1
  20. package/rollup.config.js +16 -16
  21. package/src/bootstrapApplicationConfig.ts +552 -545
  22. package/src/core/actionHandler.ts +22 -22
  23. package/src/core/eventManager.ts +20 -20
  24. package/src/core/facility.ts +7 -7
  25. package/src/core/http/formDataParser.ts +89 -89
  26. package/src/core/http-types.ts +4 -4
  27. package/src/core/pluginManager.ts +175 -175
  28. package/src/core/providers/runtimeProvider.ts +5 -5
  29. package/src/core/request.ts +86 -86
  30. package/src/core/response.ts +76 -76
  31. package/src/core/routeContext.ts +43 -43
  32. package/src/core/routesBuilder.ts +88 -88
  33. package/src/core/server.ts +16 -1
  34. package/src/dataAccess/dataAccessTypes.ts +109 -109
  35. package/src/dataAccess/dataAccessor.ts +137 -137
  36. package/src/dataAccess/entityManager.ts +1298 -1292
  37. package/src/dataAccess/entityMapper.ts +4 -5
  38. package/src/dataAccess/propertyMapper.ts +27 -27
  39. package/src/deno-std/assert/assert.ts +9 -9
  40. package/src/deno-std/assert/assertion_error.ts +7 -7
  41. package/src/deno-std/datetime/to_imf.ts +32 -32
  42. package/src/deno-std/encoding/base64.ts +141 -141
  43. package/src/deno-std/http/cookie.ts +8 -1
  44. package/src/facilities/log/LogFacility.ts +35 -35
  45. package/src/helpers/entityHelpers.ts +76 -21
  46. package/src/{dataAccess → helpers}/filterHelper.ts +3 -1
  47. package/src/helpers/inputHelper.ts +11 -11
  48. package/src/{dataAccess → helpers}/metaHelper.ts +15 -6
  49. package/src/helpers/runCollectionEntityActionHandler.ts +6 -1
  50. package/src/index.ts +41 -41
  51. package/src/plugins/auth/AuthPlugin.ts +7 -1
  52. package/src/plugins/auth/actionHandlers/changePassword.ts +54 -54
  53. package/src/plugins/auth/actionHandlers/createSession.ts +63 -63
  54. package/src/plugins/auth/actionHandlers/deleteSession.ts +18 -18
  55. package/src/plugins/auth/actionHandlers/getMyProfile.ts +35 -35
  56. package/src/plugins/auth/actionHandlers/index.ts +8 -8
  57. package/src/plugins/auth/actionHandlers/resetPassword.ts +38 -38
  58. package/src/plugins/auth/models/AccessToken.ts +56 -56
  59. package/src/plugins/auth/models/index.ts +3 -3
  60. package/src/plugins/auth/routes/changePassword.ts +15 -15
  61. package/src/plugins/auth/routes/getMyProfile.ts +15 -15
  62. package/src/plugins/auth/routes/index.ts +7 -7
  63. package/src/plugins/auth/routes/resetPassword.ts +15 -15
  64. package/src/plugins/auth/routes/signin.ts +15 -15
  65. package/src/plugins/auth/routes/signout.ts +15 -15
  66. package/src/plugins/cronJob/CronJobPlugin.ts +7 -1
  67. package/src/plugins/cronJob/CronJobPluginTypes.ts +49 -49
  68. package/src/plugins/cronJob/actionHandlers/index.ts +4 -4
  69. package/src/plugins/cronJob/actionHandlers/runCronJob.ts +29 -29
  70. package/src/plugins/cronJob/routes/index.ts +3 -3
  71. package/src/plugins/cronJob/routes/runCronJob.ts +15 -15
  72. package/src/plugins/dataManage/DataManagePlugin.ts +7 -1
  73. package/src/plugins/dataManage/actionHandlers/addEntityRelations.ts +20 -20
  74. package/src/plugins/dataManage/actionHandlers/countCollectionEntities.ts +15 -15
  75. package/src/plugins/dataManage/actionHandlers/createCollectionEntitiesBatch.ts +42 -42
  76. package/src/plugins/dataManage/actionHandlers/createCollectionEntity.ts +24 -24
  77. package/src/plugins/dataManage/actionHandlers/deleteCollectionEntityById.ts +7 -4
  78. package/src/plugins/dataManage/actionHandlers/findCollectionEntities.ts +26 -26
  79. package/src/plugins/dataManage/actionHandlers/findCollectionEntityById.ts +21 -21
  80. package/src/plugins/dataManage/actionHandlers/queryDatabase.ts +22 -22
  81. package/src/plugins/dataManage/actionHandlers/removeEntityRelations.ts +20 -20
  82. package/src/plugins/dataManage/actionHandlers/updateCollectionEntityById.ts +35 -35
  83. package/src/plugins/entityAccessControl/EntityAccessControlPlugin.ts +146 -146
  84. package/src/plugins/fileManage/FileManagePlugin.ts +7 -1
  85. package/src/plugins/fileManage/actionHandlers/downloadDocument.ts +36 -36
  86. package/src/plugins/fileManage/actionHandlers/downloadFile.ts +28 -28
  87. package/src/plugins/fileManage/actionHandlers/uploadFile.ts +33 -33
  88. package/src/plugins/fileManage/routes/downloadDocument.ts +15 -15
  89. package/src/plugins/fileManage/routes/downloadFile.ts +15 -15
  90. package/src/plugins/fileManage/routes/index.ts +5 -5
  91. package/src/plugins/fileManage/routes/uploadFile.ts +15 -15
  92. package/src/plugins/metaManage/MetaManagePlugin.ts +37 -9
  93. package/src/plugins/metaManage/actionHandlers/getMetaModelDetail.ts +10 -10
  94. package/src/plugins/metaManage/actionHandlers/listMetaModels.ts +9 -9
  95. package/src/plugins/metaManage/actionHandlers/listMetaRoutes.ts +9 -9
  96. package/src/plugins/routeManage/RouteManagePlugin.ts +7 -1
  97. package/src/plugins/routeManage/actionHandlers/httpProxy.ts +13 -13
  98. package/src/plugins/sequence/SequencePlugin.ts +8 -2
  99. package/src/plugins/sequence/SequencePluginTypes.ts +9 -1
  100. package/src/plugins/sequence/SequenceService.ts +81 -81
  101. package/src/plugins/sequence/actionHandlers/generateSn.ts +32 -32
  102. package/src/plugins/sequence/actionHandlers/index.ts +4 -4
  103. package/src/plugins/sequence/models/SequenceAutoIncrementRecord.ts +49 -49
  104. package/src/plugins/sequence/models/SequenceRule.ts +42 -42
  105. package/src/plugins/sequence/models/index.ts +4 -4
  106. package/src/plugins/sequence/routes/generateSn.ts +15 -15
  107. package/src/plugins/sequence/routes/index.ts +3 -3
  108. package/src/plugins/sequence/segment-utility.ts +11 -11
  109. package/src/plugins/sequence/segments/autoIncrement.ts +6 -1
  110. package/src/plugins/sequence/segments/dayOfMonth.ts +6 -1
  111. package/src/plugins/sequence/segments/index.ts +9 -9
  112. package/src/plugins/sequence/segments/literal.ts +6 -1
  113. package/src/plugins/sequence/segments/month.ts +6 -1
  114. package/src/plugins/sequence/segments/parameter.ts +6 -1
  115. package/src/plugins/sequence/segments/year.ts +6 -1
  116. package/src/plugins/serverOperation/ServerOperationPlugin.ts +91 -91
  117. package/src/plugins/serverOperation/ServerOperationPluginTypes.ts +15 -15
  118. package/src/plugins/serverOperation/actionHandlers/index.ts +4 -4
  119. package/src/plugins/serverOperation/actionHandlers/runServerOperation.ts +15 -15
  120. package/src/plugins/setting/SettingPlugin.ts +71 -0
  121. package/src/plugins/setting/SettingPluginTypes.ts +35 -0
  122. package/src/plugins/setting/SettingService.ts +17 -0
  123. package/src/plugins/setting/actionHandlers/getSystemSettingValues.ts +30 -0
  124. package/src/plugins/setting/actionHandlers/index.ts +4 -0
  125. package/src/plugins/setting/models/SystemSettingGroupSetting.ts +56 -0
  126. package/src/plugins/setting/models/SystemSettingItem.ts +42 -0
  127. package/src/plugins/setting/models/SystemSettingItemSetting.ts +72 -0
  128. package/src/plugins/setting/models/UserSettingGroupSetting.ts +56 -0
  129. package/src/plugins/setting/models/UserSettingItem.ts +49 -0
  130. package/src/plugins/setting/models/UserSettingItemSetting.ts +72 -0
  131. package/src/plugins/setting/models/index.ts +8 -0
  132. package/src/plugins/setting/routes/getSystemSettingValues.ts +15 -0
  133. package/src/plugins/setting/routes/index.ts +3 -0
  134. package/src/plugins/stateMachine/StateMachinePlugin.ts +8 -2
  135. package/src/plugins/stateMachine/StateMachinePluginTypes.ts +9 -1
  136. package/src/plugins/stateMachine/actionHandlers/index.ts +4 -4
  137. package/src/plugins/stateMachine/actionHandlers/sendStateMachineEvent.ts +51 -51
  138. package/src/plugins/stateMachine/models/StateMachine.ts +42 -42
  139. package/src/plugins/stateMachine/models/index.ts +3 -3
  140. package/src/plugins/stateMachine/routes/index.ts +3 -3
  141. package/src/plugins/stateMachine/routes/sendStateMachineEvent.ts +15 -15
  142. package/src/plugins/stateMachine/stateMachineHelper.ts +36 -36
  143. package/src/plugins/webhooks/WebhooksPlugin.ts +13 -2
  144. package/src/plugins/webhooks/pluginConfig.ts +74 -74
  145. package/src/polyfill.ts +5 -5
  146. package/src/proxy/mod.ts +38 -38
  147. package/src/proxy/types.ts +21 -21
  148. package/src/queryBuilder/index.ts +1 -1
  149. package/src/queryBuilder/queryBuilder.ts +473 -473
  150. package/src/server.ts +23 -3
  151. package/src/types.ts +593 -589
  152. package/src/utilities/accessControlUtility.ts +33 -33
  153. package/src/utilities/errorUtility.ts +4 -6
  154. package/src/utilities/fsUtility.ts +61 -61
  155. package/src/utilities/httpUtility.ts +19 -19
  156. package/src/utilities/jwtUtility.ts +26 -26
  157. package/src/utilities/typeUtility.ts +11 -11
  158. package/tsconfig.json +19 -19
  159. package/dist/utilities/rapidUtility.d.ts +0 -2
  160. package/src/utilities/rapidUtility.ts +0 -5
  161. /package/dist/{dataAccess → helpers}/filterHelper.d.ts +0 -0
@@ -0,0 +1,42 @@
1
+ import { RpdDataModel } from "~/types";
2
+
3
+ export default {
4
+ maintainedBy: "settingPlugin",
5
+ namespace: "svc",
6
+ name: "system_setting_item",
7
+ singularCode: "system_setting_item",
8
+ pluralCode: "system_setting_items",
9
+ schema: "public",
10
+ tableName: "system_setting_items",
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: "groupCode",
22
+ code: "groupCode",
23
+ columnName: "group_code",
24
+ type: "text",
25
+ required: true,
26
+ },
27
+ {
28
+ name: "itemCode",
29
+ code: "itemCode",
30
+ columnName: "item_code",
31
+ type: "text",
32
+ required: true,
33
+ },
34
+ {
35
+ name: "value",
36
+ code: "value",
37
+ columnName: "value",
38
+ type: "json",
39
+ required: false,
40
+ },
41
+ ],
42
+ } as RpdDataModel;
@@ -0,0 +1,72 @@
1
+ import { RpdDataModel } from "~/types";
2
+
3
+ export default {
4
+ maintainedBy: "settingPlugin",
5
+ namespace: "svc",
6
+ name: "system_setting_item_setting",
7
+ singularCode: "system_setting_item_setting",
8
+ pluralCode: "system_setting_item_settings",
9
+ schema: "public",
10
+ tableName: "system_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
+ targetSingularCode: "system_setting_group_setting",
25
+ targetIdColumnName: "group_id",
26
+ required: true,
27
+ },
28
+ {
29
+ name: "orderNum",
30
+ code: "orderNum",
31
+ columnName: "order_num",
32
+ type: "integer",
33
+ required: true,
34
+ defaultValue: "0",
35
+ },
36
+ {
37
+ name: "type",
38
+ code: "type",
39
+ columnName: "type",
40
+ type: "text",
41
+ required: true,
42
+ },
43
+ {
44
+ name: "code",
45
+ code: "code",
46
+ columnName: "code",
47
+ type: "text",
48
+ required: true,
49
+ },
50
+ {
51
+ name: "name",
52
+ code: "name",
53
+ columnName: "scnameope",
54
+ type: "text",
55
+ required: false,
56
+ },
57
+ {
58
+ name: "description",
59
+ code: "description",
60
+ columnName: "description",
61
+ type: "text",
62
+ required: false,
63
+ },
64
+ {
65
+ name: "config",
66
+ code: "config",
67
+ columnName: "config",
68
+ type: "json",
69
+ required: false,
70
+ },
71
+ ],
72
+ } as RpdDataModel;
@@ -0,0 +1,56 @@
1
+ import { RpdDataModel } from "~/types";
2
+
3
+ export default {
4
+ maintainedBy: "settingPlugin",
5
+ namespace: "svc",
6
+ name: "user_setting_group_setting",
7
+ singularCode: "user_setting_group_setting",
8
+ pluralCode: "user_setting_group_settings",
9
+ schema: "public",
10
+ tableName: "user_setting_group_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: "code",
22
+ code: "code",
23
+ columnName: "code",
24
+ type: "text",
25
+ required: true,
26
+ },
27
+ {
28
+ name: "name",
29
+ code: "name",
30
+ columnName: "scnameope",
31
+ type: "text",
32
+ required: false,
33
+ },
34
+ {
35
+ name: "description",
36
+ code: "description",
37
+ columnName: "description",
38
+ type: "text",
39
+ required: false,
40
+ },
41
+ {
42
+ name: "permissionAssignments",
43
+ code: "permissionAssignments",
44
+ columnName: "permission_assignments",
45
+ type: "json",
46
+ required: false,
47
+ },
48
+ {
49
+ name: "items",
50
+ code: "items",
51
+ type: "relation[]",
52
+ targetSingularCode: "user_setting_item_setting",
53
+ selfIdColumnName: "group_id",
54
+ },
55
+ ],
56
+ } as RpdDataModel;
@@ -0,0 +1,49 @@
1
+ import { RpdDataModel } from "~/types";
2
+
3
+ export default {
4
+ maintainedBy: "settingPlugin",
5
+ namespace: "svc",
6
+ name: "user_setting_item",
7
+ singularCode: "user_setting_item",
8
+ pluralCode: "user_setting_items",
9
+ schema: "public",
10
+ tableName: "user_setting_items",
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: "userId",
22
+ code: "userId",
23
+ columnName: "user_id",
24
+ type: "integer",
25
+ required: true,
26
+ },
27
+ {
28
+ name: "groupCode",
29
+ code: "groupCode",
30
+ columnName: "group_code",
31
+ type: "text",
32
+ required: true,
33
+ },
34
+ {
35
+ name: "itemCode",
36
+ code: "itemCode",
37
+ columnName: "item_code",
38
+ type: "text",
39
+ required: true,
40
+ },
41
+ {
42
+ name: "value",
43
+ code: "value",
44
+ columnName: "value",
45
+ type: "json",
46
+ required: false,
47
+ },
48
+ ],
49
+ } as RpdDataModel;
@@ -0,0 +1,72 @@
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
+ targetSingularCode: "user_setting_group_setting",
25
+ targetIdColumnName: "group_id",
26
+ required: true,
27
+ },
28
+ {
29
+ name: "orderNum",
30
+ code: "orderNum",
31
+ columnName: "order_num",
32
+ type: "integer",
33
+ required: true,
34
+ defaultValue: "0",
35
+ },
36
+ {
37
+ name: "type",
38
+ code: "type",
39
+ columnName: "type",
40
+ type: "text",
41
+ required: true,
42
+ },
43
+ {
44
+ name: "code",
45
+ code: "code",
46
+ columnName: "code",
47
+ type: "text",
48
+ required: true,
49
+ },
50
+ {
51
+ name: "name",
52
+ code: "name",
53
+ columnName: "scnameope",
54
+ type: "text",
55
+ required: false,
56
+ },
57
+ {
58
+ name: "description",
59
+ code: "description",
60
+ columnName: "description",
61
+ type: "text",
62
+ required: false,
63
+ },
64
+ {
65
+ name: "config",
66
+ code: "config",
67
+ columnName: "config",
68
+ type: "json",
69
+ required: false,
70
+ },
71
+ ],
72
+ } as RpdDataModel;
@@ -0,0 +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];
@@ -0,0 +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: "POST",
9
+ endpoint: "/svc/getSystemSettingValues",
10
+ actions: [
11
+ {
12
+ code: "getSystemSettingValues",
13
+ },
14
+ ],
15
+ } satisfies RpdRoute;
@@ -0,0 +1,3 @@
1
+ import getSystemSettingValues from "./getSystemSettingValues";
2
+
3
+ export default [getSystemSettingValues];
@@ -3,7 +3,13 @@
3
3
  */
4
4
 
5
5
  import { CreateEntityOptions, RpdApplicationConfig, RpdDataModel, RpdDataModelProperty, UpdateEntityByIdOptions } from "~/types";
6
- import { IRpdServer, RapidPlugin, RpdConfigurationItemOptions, RpdServerPluginConfigurableTargetOptions, RpdServerPluginExtendingAbilities } from "~/core/server";
6
+ import {
7
+ IRpdServer,
8
+ RapidPlugin,
9
+ RpdConfigurationItemOptions,
10
+ RpdServerPluginConfigurableTargetOptions,
11
+ RpdServerPluginExtendingAbilities,
12
+ } from "~/core/server";
7
13
 
8
14
  import pluginActionHandlers from "./actionHandlers";
9
15
  import pluginModels from "./models";
@@ -12,7 +18,7 @@ import { filter, find, first, get, isEqual } from "lodash";
12
18
  import { PropertyStateMachineConfig } from "./StateMachinePluginTypes";
13
19
  import { isNullOrUndefined } from "~/utilities/typeUtility";
14
20
  import { getStateMachineNextSnapshot } from "./stateMachineHelper";
15
- import { getEntityPropertiesIncludingBase } from "~/dataAccess/metaHelper";
21
+ import { getEntityPropertiesIncludingBase } from "~/helpers/metaHelper";
16
22
 
17
23
  class StateMachinePlugin implements RapidPlugin {
18
24
  get code(): string {
@@ -26,7 +26,15 @@ export type GetStateMachineNextSnapshotOptions = {
26
26
  event: StateMachineEvent;
27
27
  };
28
28
 
29
- export type DefaultStateMachineSnapshot = MachineSnapshot<MachineContext, EventObject, Record<string, AnyActorRef | undefined>, StateValue, string, unknown, MetaObject>;
29
+ export type DefaultStateMachineSnapshot = MachineSnapshot<
30
+ MachineContext,
31
+ EventObject,
32
+ Record<string, AnyActorRef | undefined>,
33
+ StateValue,
34
+ string,
35
+ unknown,
36
+ MetaObject
37
+ >;
30
38
 
31
39
  export type TryGetStateMachineNextSnapshotResult = TryGetStateMachineNextSnapshotPositiveResult | TryGetStateMachineNextSnapshotNegativeResult;
32
40
 
@@ -1,4 +1,4 @@
1
- import { IPluginActionHandler } from "~/core/actionHandler";
2
- import * as sendStateMachineEvent from "./sendStateMachineEvent";
3
-
4
- export default [sendStateMachineEvent] satisfies IPluginActionHandler[];
1
+ import { IPluginActionHandler } from "~/core/actionHandler";
2
+ import * as sendStateMachineEvent from "./sendStateMachineEvent";
3
+
4
+ export default [sendStateMachineEvent] satisfies IPluginActionHandler[];
@@ -1,51 +1,51 @@
1
- import { ActionHandlerContext } from "~/core/actionHandler";
2
- import { RapidPlugin } from "~/core/server";
3
- import { SendStateMachineEventInput, SendStateMachineEventOptions } from "../StateMachinePluginTypes";
4
- import { getStateMachineNextSnapshot } from "../stateMachineHelper";
5
-
6
- export const code = "sendStateMachineEvent";
7
-
8
- export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: SendStateMachineEventOptions) {
9
- const { server, routerContext } = ctx;
10
- const { response } = routerContext;
11
-
12
- const input: SendStateMachineEventInput = ctx.input;
13
- if (options?.code) {
14
- input.code = options.code;
15
- }
16
-
17
- if (!input.code) {
18
- throw new Error(`State machine code is required when sending event.`);
19
- }
20
-
21
- const stateMachineDataAccessor = server.getDataAccessor({
22
- singularCode: "state_machine",
23
- });
24
-
25
- const stateMachine = await stateMachineDataAccessor.findOne({
26
- filters: [
27
- {
28
- operator: "eq",
29
- field: "code",
30
- value: input.code,
31
- },
32
- ],
33
- });
34
-
35
- if (!stateMachine) {
36
- throw new Error(`State machine with code '${input.code}' was not found.`);
37
- }
38
-
39
- stateMachine.config.id = input.code;
40
-
41
- const snapshot = await getStateMachineNextSnapshot({
42
- machineConfig: stateMachine.config,
43
- context: input.context,
44
- currentState: input.currentState,
45
- event: input.event,
46
- });
47
-
48
- response.json({
49
- state: snapshot.value,
50
- });
51
- }
1
+ import { ActionHandlerContext } from "~/core/actionHandler";
2
+ import { RapidPlugin } from "~/core/server";
3
+ import { SendStateMachineEventInput, SendStateMachineEventOptions } from "../StateMachinePluginTypes";
4
+ import { getStateMachineNextSnapshot } from "../stateMachineHelper";
5
+
6
+ export const code = "sendStateMachineEvent";
7
+
8
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: SendStateMachineEventOptions) {
9
+ const { server, routerContext } = ctx;
10
+ const { response } = routerContext;
11
+
12
+ const input: SendStateMachineEventInput = ctx.input;
13
+ if (options?.code) {
14
+ input.code = options.code;
15
+ }
16
+
17
+ if (!input.code) {
18
+ throw new Error(`State machine code is required when sending event.`);
19
+ }
20
+
21
+ const stateMachineDataAccessor = server.getDataAccessor({
22
+ singularCode: "state_machine",
23
+ });
24
+
25
+ const stateMachine = await stateMachineDataAccessor.findOne({
26
+ filters: [
27
+ {
28
+ operator: "eq",
29
+ field: "code",
30
+ value: input.code,
31
+ },
32
+ ],
33
+ });
34
+
35
+ if (!stateMachine) {
36
+ throw new Error(`State machine with code '${input.code}' was not found.`);
37
+ }
38
+
39
+ stateMachine.config.id = input.code;
40
+
41
+ const snapshot = await getStateMachineNextSnapshot({
42
+ machineConfig: stateMachine.config,
43
+ context: input.context,
44
+ currentState: input.currentState,
45
+ event: input.event,
46
+ });
47
+
48
+ response.json({
49
+ state: snapshot.value,
50
+ });
51
+ }
@@ -1,42 +1,42 @@
1
- import { RpdDataModel } from "~/types";
2
-
3
- export default {
4
- maintainedBy: "stateMachinePlugin",
5
- namespace: "svc",
6
- name: "state_machine",
7
- singularCode: "state_machine",
8
- pluralCode: "state_machines",
9
- schema: "public",
10
- tableName: "state_machines",
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: "code",
22
- code: "code",
23
- columnName: "code",
24
- type: "text",
25
- required: true,
26
- },
27
- {
28
- name: "description",
29
- code: "description",
30
- columnName: "description",
31
- type: "text",
32
- required: false,
33
- },
34
- {
35
- name: "config",
36
- code: "config",
37
- columnName: "config",
38
- type: "json",
39
- required: false,
40
- },
41
- ],
42
- } as RpdDataModel;
1
+ import { RpdDataModel } from "~/types";
2
+
3
+ export default {
4
+ maintainedBy: "stateMachinePlugin",
5
+ namespace: "svc",
6
+ name: "state_machine",
7
+ singularCode: "state_machine",
8
+ pluralCode: "state_machines",
9
+ schema: "public",
10
+ tableName: "state_machines",
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: "code",
22
+ code: "code",
23
+ columnName: "code",
24
+ type: "text",
25
+ required: true,
26
+ },
27
+ {
28
+ name: "description",
29
+ code: "description",
30
+ columnName: "description",
31
+ type: "text",
32
+ required: false,
33
+ },
34
+ {
35
+ name: "config",
36
+ code: "config",
37
+ columnName: "config",
38
+ type: "json",
39
+ required: false,
40
+ },
41
+ ],
42
+ } as RpdDataModel;
@@ -1,3 +1,3 @@
1
- import StateMachine from "./StateMachine";
2
-
3
- export default [StateMachine];
1
+ import StateMachine from "./StateMachine";
2
+
3
+ export default [StateMachine];
@@ -1,3 +1,3 @@
1
- import sendStateMachineEvent from "./sendStateMachineEvent";
2
-
3
- export default [sendStateMachineEvent];
1
+ import sendStateMachineEvent from "./sendStateMachineEvent";
2
+
3
+ export default [sendStateMachineEvent];
@@ -1,15 +1,15 @@
1
- import { RpdRoute } from "~/types";
2
-
3
- export default {
4
- namespace: "svc",
5
- name: "svc.sendStateMachineEvent",
6
- code: "svc.sendStateMachineEvent",
7
- type: "RESTful",
8
- method: "POST",
9
- endpoint: "/svc/sendStateMachineEvent",
10
- actions: [
11
- {
12
- code: "sendStateMachineEvent",
13
- },
14
- ],
15
- } satisfies RpdRoute;
1
+ import { RpdRoute } from "~/types";
2
+
3
+ export default {
4
+ namespace: "svc",
5
+ name: "svc.sendStateMachineEvent",
6
+ code: "svc.sendStateMachineEvent",
7
+ type: "RESTful",
8
+ method: "POST",
9
+ endpoint: "/svc/sendStateMachineEvent",
10
+ actions: [
11
+ {
12
+ code: "sendStateMachineEvent",
13
+ },
14
+ ],
15
+ } satisfies RpdRoute;