interaqt 0.1.0

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 (214) hide show
  1. package/README.md +53 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +4 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/runtime/ActivityCall.d.ts +68 -0
  7. package/dist/runtime/ActivityCall.d.ts.map +1 -0
  8. package/dist/runtime/ActivityCall.js +379 -0
  9. package/dist/runtime/ActivityCall.js.map +1 -0
  10. package/dist/runtime/Controller.d.ts +60 -0
  11. package/dist/runtime/Controller.d.ts.map +1 -0
  12. package/dist/runtime/Controller.js +225 -0
  13. package/dist/runtime/Controller.js.map +1 -0
  14. package/dist/runtime/InteractionCall.d.ts +102 -0
  15. package/dist/runtime/InteractionCall.d.ts.map +1 -0
  16. package/dist/runtime/InteractionCall.js +385 -0
  17. package/dist/runtime/InteractionCall.js.map +1 -0
  18. package/dist/runtime/MonoSystem.d.ts +26 -0
  19. package/dist/runtime/MonoSystem.d.ts.map +1 -0
  20. package/dist/runtime/MonoSystem.js +331 -0
  21. package/dist/runtime/MonoSystem.js.map +1 -0
  22. package/dist/runtime/Mysql.d.ts +35 -0
  23. package/dist/runtime/Mysql.d.ts.map +1 -0
  24. package/dist/runtime/Mysql.js +171 -0
  25. package/dist/runtime/Mysql.js.map +1 -0
  26. package/dist/runtime/PostgreSQL.d.ts +36 -0
  27. package/dist/runtime/PostgreSQL.d.ts.map +1 -0
  28. package/dist/runtime/PostgreSQL.js +172 -0
  29. package/dist/runtime/PostgreSQL.js.map +1 -0
  30. package/dist/runtime/SQLite.d.ts +34 -0
  31. package/dist/runtime/SQLite.d.ts.map +1 -0
  32. package/dist/runtime/SQLite.js +146 -0
  33. package/dist/runtime/SQLite.js.map +1 -0
  34. package/dist/runtime/Scheduler.d.ts +81 -0
  35. package/dist/runtime/Scheduler.d.ts.map +1 -0
  36. package/dist/runtime/Scheduler.js +457 -0
  37. package/dist/runtime/Scheduler.js.map +1 -0
  38. package/dist/runtime/System.d.ts +312 -0
  39. package/dist/runtime/System.d.ts.map +1 -0
  40. package/dist/runtime/System.js +90 -0
  41. package/dist/runtime/System.js.map +1 -0
  42. package/dist/runtime/asyncInteractionContext.d.ts +3 -0
  43. package/dist/runtime/asyncInteractionContext.d.ts.map +1 -0
  44. package/dist/runtime/asyncInteractionContext.js +3 -0
  45. package/dist/runtime/asyncInteractionContext.js.map +1 -0
  46. package/dist/runtime/boolExpression.d.ts +23 -0
  47. package/dist/runtime/boolExpression.d.ts.map +1 -0
  48. package/dist/runtime/boolExpression.js +43 -0
  49. package/dist/runtime/boolExpression.js.map +1 -0
  50. package/dist/runtime/computedDataHandles/Any.d.ts +52 -0
  51. package/dist/runtime/computedDataHandles/Any.d.ts.map +1 -0
  52. package/dist/runtime/computedDataHandles/Any.js +152 -0
  53. package/dist/runtime/computedDataHandles/Any.js.map +1 -0
  54. package/dist/runtime/computedDataHandles/Computation.d.ts +108 -0
  55. package/dist/runtime/computedDataHandles/Computation.d.ts.map +1 -0
  56. package/dist/runtime/computedDataHandles/Computation.js +49 -0
  57. package/dist/runtime/computedDataHandles/Computation.js.map +1 -0
  58. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +42 -0
  59. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +1 -0
  60. package/dist/runtime/computedDataHandles/ComputedDataHandle.js +4 -0
  61. package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +1 -0
  62. package/dist/runtime/computedDataHandles/Count.d.ts +45 -0
  63. package/dist/runtime/computedDataHandles/Count.d.ts.map +1 -0
  64. package/dist/runtime/computedDataHandles/Count.js +85 -0
  65. package/dist/runtime/computedDataHandles/Count.js.map +1 -0
  66. package/dist/runtime/computedDataHandles/Every.d.ts +56 -0
  67. package/dist/runtime/computedDataHandles/Every.d.ts.map +1 -0
  68. package/dist/runtime/computedDataHandles/Every.js +178 -0
  69. package/dist/runtime/computedDataHandles/Every.js.map +1 -0
  70. package/dist/runtime/computedDataHandles/StateMachine.d.ts +74 -0
  71. package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +1 -0
  72. package/dist/runtime/computedDataHandles/StateMachine.js +180 -0
  73. package/dist/runtime/computedDataHandles/StateMachine.js.map +1 -0
  74. package/dist/runtime/computedDataHandles/Transform.d.ts +26 -0
  75. package/dist/runtime/computedDataHandles/Transform.d.ts.map +1 -0
  76. package/dist/runtime/computedDataHandles/Transform.js +106 -0
  77. package/dist/runtime/computedDataHandles/Transform.js.map +1 -0
  78. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +57 -0
  79. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +1 -0
  80. package/dist/runtime/computedDataHandles/TransitionFinder.js +40 -0
  81. package/dist/runtime/computedDataHandles/TransitionFinder.js.map +1 -0
  82. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +57 -0
  83. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +1 -0
  84. package/dist/runtime/computedDataHandles/WeightedSummation.js +146 -0
  85. package/dist/runtime/computedDataHandles/WeightedSummation.js.map +1 -0
  86. package/dist/runtime/computedDataHandles/index.d.ts +7 -0
  87. package/dist/runtime/computedDataHandles/index.d.ts.map +1 -0
  88. package/dist/runtime/computedDataHandles/index.js +7 -0
  89. package/dist/runtime/computedDataHandles/index.js.map +1 -0
  90. package/dist/runtime/index.d.ts +15 -0
  91. package/dist/runtime/index.d.ts.map +1 -0
  92. package/dist/runtime/index.js +15 -0
  93. package/dist/runtime/index.js.map +1 -0
  94. package/dist/runtime/server.d.ts +35 -0
  95. package/dist/runtime/server.d.ts.map +1 -0
  96. package/dist/runtime/server.js +171 -0
  97. package/dist/runtime/server.js.map +1 -0
  98. package/dist/runtime/types/boolExpression.d.ts +22 -0
  99. package/dist/runtime/types/boolExpression.d.ts.map +1 -0
  100. package/dist/runtime/types/boolExpression.js +6 -0
  101. package/dist/runtime/types/boolExpression.js.map +1 -0
  102. package/dist/runtime/util.d.ts +10 -0
  103. package/dist/runtime/util.d.ts.map +1 -0
  104. package/dist/runtime/util.js +39 -0
  105. package/dist/runtime/util.js.map +1 -0
  106. package/dist/shared/BoolExp.d.ts +97 -0
  107. package/dist/shared/BoolExp.d.ts.map +1 -0
  108. package/dist/shared/BoolExp.js +252 -0
  109. package/dist/shared/BoolExp.js.map +1 -0
  110. package/dist/shared/activity/Activity.d.ts +465 -0
  111. package/dist/shared/activity/Activity.d.ts.map +1 -0
  112. package/dist/shared/activity/Activity.js +264 -0
  113. package/dist/shared/activity/Activity.js.map +1 -0
  114. package/dist/shared/activity/Condition.d.ts +75 -0
  115. package/dist/shared/activity/Condition.d.ts.map +1 -0
  116. package/dist/shared/activity/Condition.js +51 -0
  117. package/dist/shared/activity/Condition.js.map +1 -0
  118. package/dist/shared/activity/Data.d.ts +115 -0
  119. package/dist/shared/activity/Data.d.ts.map +1 -0
  120. package/dist/shared/activity/Data.js +89 -0
  121. package/dist/shared/activity/Data.js.map +1 -0
  122. package/dist/shared/attributive.d.ts +93 -0
  123. package/dist/shared/attributive.d.ts.map +1 -0
  124. package/dist/shared/attributive.js +59 -0
  125. package/dist/shared/attributive.js.map +1 -0
  126. package/dist/shared/computed.d.ts +607 -0
  127. package/dist/shared/computed.d.ts.map +1 -0
  128. package/dist/shared/computed.js +202 -0
  129. package/dist/shared/computed.js.map +1 -0
  130. package/dist/shared/createClass.d.ts +102 -0
  131. package/dist/shared/createClass.d.ts.map +1 -0
  132. package/dist/shared/createClass.js +276 -0
  133. package/dist/shared/createClass.js.map +1 -0
  134. package/dist/shared/dictionary/Dictionary.d.ts +40 -0
  135. package/dist/shared/dictionary/Dictionary.d.ts.map +1 -0
  136. package/dist/shared/dictionary/Dictionary.js +51 -0
  137. package/dist/shared/dictionary/Dictionary.js.map +1 -0
  138. package/dist/shared/entity/Entity.d.ts +149 -0
  139. package/dist/shared/entity/Entity.d.ts.map +1 -0
  140. package/dist/shared/entity/Entity.js +226 -0
  141. package/dist/shared/entity/Entity.js.map +1 -0
  142. package/dist/shared/index.d.ts +11 -0
  143. package/dist/shared/index.d.ts.map +1 -0
  144. package/dist/shared/index.js +11 -0
  145. package/dist/shared/index.js.map +1 -0
  146. package/dist/shared/user/User.d.ts +21 -0
  147. package/dist/shared/user/User.d.ts.map +1 -0
  148. package/dist/shared/user/User.js +11 -0
  149. package/dist/shared/user/User.js.map +1 -0
  150. package/dist/shared/utils.d.ts +11 -0
  151. package/dist/shared/utils.d.ts.map +1 -0
  152. package/dist/shared/utils.js +19 -0
  153. package/dist/shared/utils.js.map +1 -0
  154. package/dist/storage/erstorage/AttributeInfo.d.ts +40 -0
  155. package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -0
  156. package/dist/storage/erstorage/AttributeInfo.js +147 -0
  157. package/dist/storage/erstorage/AttributeInfo.js.map +1 -0
  158. package/dist/storage/erstorage/AttributeQuery.d.ts +33 -0
  159. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -0
  160. package/dist/storage/erstorage/AttributeQuery.js +190 -0
  161. package/dist/storage/erstorage/AttributeQuery.js.map +1 -0
  162. package/dist/storage/erstorage/EntityQueryHandle.d.ts +29 -0
  163. package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -0
  164. package/dist/storage/erstorage/EntityQueryHandle.js +78 -0
  165. package/dist/storage/erstorage/EntityQueryHandle.js.map +1 -0
  166. package/dist/storage/erstorage/EntityToTableMap.d.ts +85 -0
  167. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -0
  168. package/dist/storage/erstorage/EntityToTableMap.js +262 -0
  169. package/dist/storage/erstorage/EntityToTableMap.js.map +1 -0
  170. package/dist/storage/erstorage/LinkInfo.d.ts +35 -0
  171. package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -0
  172. package/dist/storage/erstorage/LinkInfo.js +89 -0
  173. package/dist/storage/erstorage/LinkInfo.js.map +1 -0
  174. package/dist/storage/erstorage/MatchExp.d.ts +37 -0
  175. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -0
  176. package/dist/storage/erstorage/MatchExp.js +211 -0
  177. package/dist/storage/erstorage/MatchExp.js.map +1 -0
  178. package/dist/storage/erstorage/Modifier.d.ts +23 -0
  179. package/dist/storage/erstorage/Modifier.d.ts.map +1 -0
  180. package/dist/storage/erstorage/Modifier.js +24 -0
  181. package/dist/storage/erstorage/Modifier.js.map +1 -0
  182. package/dist/storage/erstorage/NewRecordData.d.ts +42 -0
  183. package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -0
  184. package/dist/storage/erstorage/NewRecordData.js +178 -0
  185. package/dist/storage/erstorage/NewRecordData.js.map +1 -0
  186. package/dist/storage/erstorage/RecordInfo.d.ts +26 -0
  187. package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -0
  188. package/dist/storage/erstorage/RecordInfo.js +111 -0
  189. package/dist/storage/erstorage/RecordInfo.js.map +1 -0
  190. package/dist/storage/erstorage/RecordQuery.d.ts +73 -0
  191. package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -0
  192. package/dist/storage/erstorage/RecordQuery.js +158 -0
  193. package/dist/storage/erstorage/RecordQuery.js.map +1 -0
  194. package/dist/storage/erstorage/RecordQueryAgent.d.ts +84 -0
  195. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -0
  196. package/dist/storage/erstorage/RecordQueryAgent.js +1130 -0
  197. package/dist/storage/erstorage/RecordQueryAgent.js.map +1 -0
  198. package/dist/storage/erstorage/Setup.d.ts +49 -0
  199. package/dist/storage/erstorage/Setup.d.ts.map +1 -0
  200. package/dist/storage/erstorage/Setup.js +400 -0
  201. package/dist/storage/erstorage/Setup.js.map +1 -0
  202. package/dist/storage/erstorage/util.d.ts +6 -0
  203. package/dist/storage/erstorage/util.d.ts.map +1 -0
  204. package/dist/storage/erstorage/util.js +25 -0
  205. package/dist/storage/erstorage/util.js.map +1 -0
  206. package/dist/storage/index.d.ts +13 -0
  207. package/dist/storage/index.d.ts.map +1 -0
  208. package/dist/storage/index.js +13 -0
  209. package/dist/storage/index.js.map +1 -0
  210. package/dist/storage/utils.d.ts +10 -0
  211. package/dist/storage/utils.d.ts.map +1 -0
  212. package/dist/storage/utils.js +48 -0
  213. package/dist/storage/utils.js.map +1 -0
  214. package/package.json +59 -0
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ <p align="center">
2
+ <img src="./logo.svg" />
3
+ </p>
4
+ <p align="center">
5
+ <img src="https://img.shields.io/npm/v/%40interaqt%2Fruntime" />
6
+ <img src="https://img.shields.io/npm/dt/%40interaqt/runtime" />
7
+ </p>
8
+
9
+ # Quick Start
10
+
11
+ ## What is @interaqt/runtime
12
+
13
+ @interaqt/runtime is a brand-new application framework. For better understanding, it can be considered as an alternative to a Web Framework + ORM/CMS + BPM Engine.
14
+
15
+ ## Why create @interaqt/runtime
16
+
17
+ @interaqt/runtime implements a simpler yet more challenging paradigm:
18
+
19
+ ```
20
+ data = computation(events)
21
+ ```
22
+
23
+ With this paradigm, we consistently describe what the data in the system is, and with a single line of code manipulating data, a complete application can be implemented. The intuitive features include:
24
+ - Almost achieving the implementation of software once the requirements are modeled.
25
+ - No manually written code for data changes, thus eliminating bugs due to human error.
26
+
27
+ More importantly, the reason for creating @interaqt/runtime is:
28
+ - After modeling requirements, its code and software architecture can begin to be automatically generated, no longer relying on human experience.
29
+ - Requirements remain unchanged, but architecture can automatically adapt with changes in data volume and concurrency.
30
+
31
+ ## Using @interaqt/runtime
32
+
33
+ ### Step 1: Installation
34
+
35
+ ```bash
36
+ npx create-interaqt-app myapp
37
+ cd myapp
38
+ ```
39
+
40
+ ### Step 2: start the project and dashboard
41
+ ```bash
42
+ npm run dev
43
+ ```
44
+
45
+ Open a new console and enter the myapp directory.
46
+ ```bash
47
+ cd dashboard
48
+ npm start
49
+ ```
50
+
51
+ Your application is now running at http://localhost:4000 by default.
52
+ Your dashboard is now running at http://localhost:5173 by default.
53
+
@@ -0,0 +1,4 @@
1
+ export * from './runtime/index.js';
2
+ export * from './storage/index.js';
3
+ export * from './shared/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './runtime/index.js';
2
+ export * from './storage/index.js';
3
+ export * from './shared/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,68 @@
1
+ import { ActivityGroupInstanceType, ActivityInstanceType, Attributive, GatewayInstanceType, InteractionInstanceType, KlassInstance } from "@shared";
2
+ import { System } from "./System.js";
3
+ import { InteractionCall, InteractionCallResponse } from "./InteractionCall.js";
4
+ import { EventUser, InteractionEventArgs } from "./InteractionCall.js";
5
+ import { Controller } from "./Controller.js";
6
+ export type Seq = {
7
+ head: InteractionNode | ActivityGroupNode;
8
+ tail: InteractionNode | ActivityGroupNode;
9
+ };
10
+ export type InteractionLikeNodeBase = {
11
+ uuid: string;
12
+ next: GraphNode | null;
13
+ prev?: GraphNode;
14
+ parentSeq: Seq;
15
+ };
16
+ export type InteractionNode = {
17
+ content: InteractionInstanceType;
18
+ parentGroup?: ActivityGroupNode;
19
+ } & InteractionLikeNodeBase;
20
+ export type ActivityGroupNode = {
21
+ content: ActivityGroupInstanceType;
22
+ parentGroup?: ActivityGroupNode;
23
+ childSeqs?: Seq[];
24
+ } & InteractionLikeNodeBase;
25
+ export type GatewayNode = {
26
+ uuid: string;
27
+ content: GatewayInstanceType;
28
+ prev: GraphNode[];
29
+ next: GraphNode[];
30
+ };
31
+ export type GraphNode = InteractionNode | ActivityGroupNode | GatewayNode;
32
+ export type ActivitySeqStateData = {
33
+ current?: InteractionStateData;
34
+ };
35
+ export type InteractionStateData = {
36
+ uuid: string;
37
+ children?: ActivitySeqStateData[];
38
+ };
39
+ export declare class ActivityCall {
40
+ activity: ActivityInstanceType;
41
+ controller: Controller;
42
+ static cache: Map<ActivityInstanceType, ActivityCall>;
43
+ static from: (activity: ActivityInstanceType, controller: Controller) => ActivityCall;
44
+ graph: Seq;
45
+ uuidToNode: Map<string, GraphNode>;
46
+ uuidToInteractionCall: Map<string, InteractionCall>;
47
+ interactionCallByName: Map<string, InteractionCall>;
48
+ rawToNode: Map<ActivityGroupInstanceType | InteractionInstanceType | GatewayInstanceType, GraphNode>;
49
+ system: System;
50
+ constructor(activity: ActivityInstanceType, controller: Controller);
51
+ buildGraph(activity: ActivityInstanceType, parentGroup?: ActivityGroupNode): Seq;
52
+ create(): Promise<{
53
+ activityId: any;
54
+ state: ActivitySeqStateData;
55
+ }>;
56
+ getNodeByUUID(uuid: string): GraphNode | undefined;
57
+ getState(activityId: string): Promise<any>;
58
+ getActivity(activityId: string): Promise<any>;
59
+ setActivity(activityId: string, value: any): Promise<any>;
60
+ setState(activityId: string, state: any): Promise<any>;
61
+ isStartNode(uuid: string): boolean;
62
+ isEndNode(uuid: string): boolean;
63
+ isActivityHead(interaction: InteractionInstanceType, head?: InteractionLikeNodeBase): boolean;
64
+ callInteraction(inputActivityId: string | undefined, uuid: string, interactionEventArgs: InteractionEventArgs): Promise<InteractionCallResponse>;
65
+ saveUserRefs(activityId: string, interactionCall: InteractionCall, interactionEventArgs: InteractionEventArgs): Promise<void>;
66
+ checkUserRef: (attributive: KlassInstance<typeof Attributive>, eventUser: EventUser, activityId: string) => Promise<boolean>;
67
+ }
68
+ //# sourceMappingURL=ActivityCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityCall.d.ts","sourceRoot":"","sources":["../../src/runtime/ActivityCall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,379 @@
1
+ import { ActivityGroup, Attributive, Gateway, } from "@shared";
2
+ import { assert } from "./util.js";
3
+ import { InteractionCall } from "./InteractionCall.js";
4
+ import { MatchExp } from "@storage";
5
+ class ActivitySeqState {
6
+ static createInitialState(headNode) {
7
+ return {
8
+ current: InteractionState.createInitialState(headNode)
9
+ };
10
+ }
11
+ static create(data, graph, parent) {
12
+ const seqState = new ActivitySeqState(graph, parent);
13
+ if (data.current)
14
+ seqState.current = InteractionState.create(data.current, graph, seqState);
15
+ return seqState;
16
+ }
17
+ constructor(graph, parent) {
18
+ this.graph = graph;
19
+ this.parent = parent;
20
+ }
21
+ isInteractionAvailable(uuid) {
22
+ if (!this.current)
23
+ return false;
24
+ if (this.current?.children) {
25
+ return Object.values(this.current.children).some(child => child.isInteractionAvailable(uuid));
26
+ }
27
+ else {
28
+ return this.current.node.uuid === uuid;
29
+ }
30
+ }
31
+ findStateNode(uuid) {
32
+ // 全部执行完了
33
+ if (!this.current)
34
+ return undefined;
35
+ if (this.current?.node.uuid === uuid)
36
+ return this.current;
37
+ // 如果有 children 匹配 children
38
+ return this.current.children?.find(child => child.findStateNode(uuid))?.current;
39
+ }
40
+ transferToNext(uuid) {
41
+ const node = this.graph.getNodeByUUID(uuid);
42
+ delete this.current;
43
+ // TODO 一路执行 gateway
44
+ if (node.next) {
45
+ const nextState = InteractionState.createInitialState(node.next);
46
+ this.current = InteractionState.create(nextState, this.graph, this);
47
+ }
48
+ this.parent?.onChange(uuid, node.next?.uuid);
49
+ }
50
+ toJSON() {
51
+ return {
52
+ current: this.current?.toJSON()
53
+ };
54
+ }
55
+ }
56
+ class InteractionState {
57
+ static { this.GroupStateNodeType = new Map(); }
58
+ static createInitialState(node) {
59
+ const state = { uuid: node.uuid };
60
+ if (ActivityGroup.is(node.content)) {
61
+ state.children = node.childSeqs.map(seqNode => ActivitySeqState.createInitialState(seqNode.head));
62
+ }
63
+ return state;
64
+ }
65
+ static create(data, graph, parent) {
66
+ const node = graph.getNodeByUUID(data.uuid);
67
+ const isGroup = ActivityGroup.is(node.content);
68
+ if (isGroup) {
69
+ const GroupStateNode = InteractionState.GroupStateNodeType.get(node.content.type);
70
+ const groupState = new GroupStateNode(node, graph, parent);
71
+ groupState.isGroup = true;
72
+ groupState.children = data?.children?.map((v) => {
73
+ return ActivitySeqState.create(v, graph, groupState);
74
+ });
75
+ return groupState;
76
+ }
77
+ else {
78
+ return new InteractionState(node, graph, parent);
79
+ }
80
+ }
81
+ // CAUTION 这里 this.node 兼容了 state root 伪造成 ActivityStateNode
82
+ constructor(node, graph, parent) {
83
+ this.node = node;
84
+ this.graph = graph;
85
+ this.parent = parent;
86
+ }
87
+ toJSON() {
88
+ return {
89
+ uuid: this.node.uuid,
90
+ children: this.children?.map((child) => child.toJSON())
91
+ };
92
+ }
93
+ // 以下是为 group 而存在的
94
+ onChange(childPrevUUID, childNextUUID) { }
95
+ isGroupCompleted() {
96
+ // TODO
97
+ // @ts-ignore
98
+ return this.children?.every((childSeq) => !childSeq.current);
99
+ }
100
+ complete() {
101
+ this.parent.transferToNext(this.node.uuid);
102
+ }
103
+ }
104
+ // 用这个对象来做 state 计算, ActivitySeq 只是一个入口,提供基本的 图 的能力
105
+ class ActivityState {
106
+ static createInitialState(headNode) {
107
+ return ActivitySeqState.createInitialState(headNode);
108
+ }
109
+ constructor(data, graph) {
110
+ this.graph = graph;
111
+ this.root = ActivitySeqState.create(data, this.graph);
112
+ }
113
+ isInteractionAvailable(uuid) {
114
+ return this.root.isInteractionAvailable(uuid);
115
+ }
116
+ completeInteraction(uuid) {
117
+ // 这里默认肯定已经检查过 available 的问题了。
118
+ // 1. interaction 完成,自身的 activity 要转移到下一个 interaction 去
119
+ // 2. transfer 中会自动调用所在的 group,看它有没有什么要操作的。
120
+ // 3. 如果 group 整个完成了,就要往上再递归。
121
+ const stateNode = this.root.findStateNode(uuid);
122
+ stateNode.complete();
123
+ return true;
124
+ }
125
+ toJSON() {
126
+ return this.root.toJSON();
127
+ }
128
+ }
129
+ export class ActivityCall {
130
+ static { this.cache = new Map(); }
131
+ static { this.from = (activity, controller) => {
132
+ let graph = ActivityCall.cache.get(activity);
133
+ if (!graph) {
134
+ graph = new ActivityCall(activity, controller);
135
+ ActivityCall.cache.set(activity, graph);
136
+ }
137
+ return graph;
138
+ }; }
139
+ constructor(activity, controller) {
140
+ this.activity = activity;
141
+ this.controller = controller;
142
+ this.uuidToNode = new Map();
143
+ this.uuidToInteractionCall = new Map();
144
+ this.interactionCallByName = new Map();
145
+ this.rawToNode = new Map();
146
+ this.checkUserRef = async (attributive, eventUser, activityId) => {
147
+ assert(attributive.isRef, 'attributive must be ref');
148
+ const refs = (await this.getActivity(activityId))?.refs;
149
+ return refs[attributive.name] === eventUser.id;
150
+ };
151
+ this.system = controller.system;
152
+ this.graph = this.buildGraph(activity);
153
+ }
154
+ buildGraph(activity, parentGroup) {
155
+ const rawGatewayToNode = new Map();
156
+ const seq = {};
157
+ for (let interaction of activity.interactions) {
158
+ const node = { content: interaction, next: null, uuid: interaction.uuid, parentGroup, parentSeq: seq, };
159
+ this.uuidToNode.set(interaction.uuid, node);
160
+ this.rawToNode.set(interaction, node);
161
+ const interactionCall = new InteractionCall(interaction, this.controller, this);
162
+ this.uuidToInteractionCall.set(interaction.uuid, interactionCall);
163
+ if (interaction.name) {
164
+ this.interactionCallByName.set(interaction.name, interactionCall);
165
+ }
166
+ }
167
+ for (let gateway of activity.gateways) {
168
+ const node = { content: gateway, next: [], prev: [], uuid: gateway.uuid };
169
+ this.uuidToNode.set(gateway.uuid, node);
170
+ this.rawToNode.set(gateway, node);
171
+ }
172
+ for (let group of activity.groups) {
173
+ const node = {
174
+ uuid: group.uuid,
175
+ content: group,
176
+ next: null,
177
+ parentSeq: seq,
178
+ parentGroup
179
+ };
180
+ // 每个 group 下都是多个 sub activityGraph
181
+ node.childSeqs = group.activities?.map(sub => this.buildGraph(sub, node));
182
+ this.uuidToNode.set(group.uuid, node);
183
+ this.rawToNode.set(group, node);
184
+ }
185
+ // 开始计算图中的 start 和 end
186
+ const candidateStart = new Set([...Object.values(activity.interactions), ...Object.values(activity.groups)]);
187
+ const candidateEnd = new Set([...Object.values(activity.interactions), ...Object.values(activity.groups)]);
188
+ activity.transfers?.forEach((transfer) => {
189
+ const sourceNode = (this.rawToNode.get(transfer.source) || rawGatewayToNode.get(transfer.source));
190
+ const targetNode = (this.rawToNode.get(transfer.target) || rawGatewayToNode.get(transfer.target));
191
+ assert(!!sourceNode, `cannot find source ${transfer.source.name}`);
192
+ assert(!!targetNode, `cannot find target ${transfer.source.name}`);
193
+ // CAUTION gateway 的 next 是个数组。其他的都是只有一个指向
194
+ if (Gateway.is(sourceNode)) {
195
+ sourceNode.next.push(targetNode);
196
+ }
197
+ else {
198
+ sourceNode.next = targetNode;
199
+ }
200
+ if (Gateway.is(targetNode)) {
201
+ targetNode.prev.push(sourceNode);
202
+ }
203
+ else {
204
+ targetNode.prev = sourceNode;
205
+ }
206
+ candidateEnd.delete(transfer.source);
207
+ candidateStart.delete(transfer.target);
208
+ });
209
+ // 自定结算 head 和 tail
210
+ if (candidateStart.size !== 1)
211
+ throw new Error(`start node must one, current: ${candidateStart.size}`);
212
+ if (candidateEnd.size !== 1)
213
+ throw new Error(`end node must be one, current: ${candidateEnd.size}`);
214
+ Object.assign(seq, {
215
+ head: this.rawToNode.get([...candidateStart.values()][0]),
216
+ tail: this.rawToNode.get([...candidateEnd.values()][0])
217
+ });
218
+ return seq;
219
+ }
220
+ async create() {
221
+ const initialStateData = ActivityState.createInitialState(this.graph.head);
222
+ const activity = await this.system.createActivity({
223
+ name: this.activity.name,
224
+ uuid: this.activity.uuid,
225
+ state: initialStateData,
226
+ refs: {},
227
+ });
228
+ return {
229
+ activityId: activity.id,
230
+ state: initialStateData
231
+ };
232
+ }
233
+ getNodeByUUID(uuid) {
234
+ return this.uuidToNode.get(uuid);
235
+ }
236
+ async getState(activityId) {
237
+ // return this.system.storage.get('ActivityState', activityId)
238
+ return (await this.getActivity(activityId))?.state;
239
+ }
240
+ async getActivity(activityId) {
241
+ const match = MatchExp.atom({
242
+ key: 'id',
243
+ value: ['=', activityId],
244
+ });
245
+ return (await this.system.getActivity(match))[0];
246
+ }
247
+ async setActivity(activityId, value) {
248
+ const match = MatchExp.atom({
249
+ key: 'id',
250
+ value: ['=', activityId],
251
+ });
252
+ return await this.system.updateActivity(match, value);
253
+ }
254
+ async setState(activityId, state) {
255
+ const match = MatchExp.atom({
256
+ key: 'id',
257
+ value: ['=', activityId],
258
+ });
259
+ return await this.system.updateActivity(match, { state: state });
260
+ }
261
+ isStartNode(uuid) {
262
+ const node = this.uuidToNode.get(uuid);
263
+ return node.parentSeq.head === node;
264
+ }
265
+ isEndNode(uuid) {
266
+ const node = this.uuidToNode.get(uuid);
267
+ return node.parentSeq.tail === node;
268
+ }
269
+ isActivityHead(interaction, head = this.graph.head) {
270
+ if (ActivityGroup.is(this.graph.head.content)) {
271
+ // group 是个控制单元,控制的是结束不是开始,所以任何一个头都可以算头。
272
+ return !!this.graph.head.childSeqs?.some(seq => this.isActivityHead(interaction, seq.head));
273
+ }
274
+ else {
275
+ return interaction === this.graph.head.content;
276
+ }
277
+ }
278
+ async callInteraction(inputActivityId, uuid, interactionEventArgs) {
279
+ const interactionCall = this.uuidToInteractionCall.get(uuid);
280
+ let activityId = inputActivityId;
281
+ // 如果 不是头,就要立刻去找 state 并且校验。
282
+ if (this.isActivityHead(interactionCall.interaction)) {
283
+ if (!activityId) {
284
+ // 如果 是头,那么要等 interactionCall 的 check 过了才创建 state
285
+ const error = await interactionCall.check(interactionEventArgs, inputActivityId, this.checkUserRef);
286
+ if (error)
287
+ return { error };
288
+ activityId = (await this.create()).activityId;
289
+ }
290
+ }
291
+ else {
292
+ if (!inputActivityId)
293
+ return { error: 'activityId must be provided for non-head interaction of an activity' };
294
+ }
295
+ const state = new ActivityState(await this.getState(activityId), this);
296
+ if (!state.isInteractionAvailable(uuid))
297
+ return { error: `interaction ${uuid} not available` };
298
+ const result = await interactionCall.call(interactionEventArgs, activityId, this.checkUserRef);
299
+ if (result.error) {
300
+ return result;
301
+ }
302
+ // 如果有 ref,要保存下来,方便后面 interactionCall 的时候通过 checkUserRef 去取
303
+ await this.saveUserRefs(activityId, interactionCall, interactionEventArgs);
304
+ const stateCompleteResult = state.completeInteraction(uuid);
305
+ assert(stateCompleteResult, 'change activity state failed');
306
+ // 完成了。存新的 state。
307
+ const nextState = state.toJSON();
308
+ // await this.system.storage.set('ActivityState', activityId, nextState)
309
+ await this.setActivity(activityId, { 'state': nextState });
310
+ return {
311
+ ...result,
312
+ context: {
313
+ activityId,
314
+ nextState
315
+ }
316
+ };
317
+ }
318
+ // TODO 我们没有处理 interaction 循环的情况
319
+ async saveUserRefs(activityId, interactionCall, interactionEventArgs) {
320
+ // const refs = await this.system.storage.get('ActivityRefs', activityId, {})!
321
+ const refs = (await this.getActivity(activityId))?.refs || {};
322
+ if (interactionCall.interaction.userRef?.name) {
323
+ refs[interactionCall.interaction.userRef?.name] = interactionEventArgs.user.id;
324
+ }
325
+ interactionCall.interaction.payload?.items.forEach((payloadDef) => {
326
+ if (Attributive.is(payloadDef.itemRef) && payloadDef.itemRef?.name && interactionEventArgs.payload[payloadDef.name]) {
327
+ const payloadItem = interactionEventArgs.payload[payloadDef.name];
328
+ if (payloadDef.isCollection) {
329
+ if (!refs[payloadDef.itemRef.name])
330
+ refs[payloadDef.itemRef.name] = [];
331
+ refs[payloadDef.itemRef.name].push(payloadItem.id);
332
+ }
333
+ else {
334
+ refs[payloadDef.itemRef.name] = payloadItem.id;
335
+ }
336
+ }
337
+ });
338
+ // await this.system.storage.set('ActivityRefs', activityId, refs)
339
+ await this.setActivity(activityId, { refs });
340
+ }
341
+ }
342
+ class AnyActivityStateNode extends InteractionState {
343
+ onChange(childPrevUUID, childNextUUID) {
344
+ if (this.graph.isStartNode(childPrevUUID)) {
345
+ if (childNextUUID) {
346
+ return {
347
+ children: this.children.filter(childSeq => childSeq.current?.node.uuid === childNextUUID)
348
+ };
349
+ }
350
+ else {
351
+ // 说明就只有一个,并且走到头了
352
+ this.complete();
353
+ }
354
+ }
355
+ }
356
+ }
357
+ InteractionState.GroupStateNodeType.set('any', AnyActivityStateNode);
358
+ class EveryActivityStateNode extends InteractionState {
359
+ onChange(childPrevUUID, childNextUUID) {
360
+ // 每个 children 都 end 了。自己变成 end
361
+ if (this.isGroupCompleted()) {
362
+ this.complete();
363
+ }
364
+ }
365
+ }
366
+ InteractionState.GroupStateNodeType.set('every', EveryActivityStateNode);
367
+ class RaceActivityStateNode extends InteractionState {
368
+ onChange(childPrevUUID, childNextUUID) {
369
+ // 有一个 end 了,自己变成 end
370
+ if (this.graph.isEndNode(childPrevUUID)) {
371
+ this.complete();
372
+ }
373
+ }
374
+ }
375
+ InteractionState.GroupStateNodeType.set('race', RaceActivityStateNode);
376
+ class ProgrammaticActivityStateNode extends InteractionState {
377
+ }
378
+ InteractionState.GroupStateNodeType.set('program', ProgrammaticActivityStateNode);
379
+ //# sourceMappingURL=ActivityCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityCall.js","sourceRoot":"","sources":["../../src/runtime/ActivityCall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { RecordMutationEvent, System, SystemCallback, SystemLogger } from "./System.js";
2
+ import { Activity, BoolExp, Entity, Interaction, KlassInstance, Property, Relation } from "@shared";
3
+ import './computedDataHandles/index.js';
4
+ import { ActivityCall } from "./ActivityCall.js";
5
+ import { InteractionCall, InteractionCallResponse } from "./InteractionCall.js";
6
+ import { InteractionEventArgs } from "./InteractionCall.js";
7
+ import { DataContext } from "./computedDataHandles/ComputedDataHandle.js";
8
+ import { ComputeResultPatch } from "./computedDataHandles/Computation.js";
9
+ import { Scheduler, SKIP_RESULT } from "./Scheduler.js";
10
+ export declare const USER_ENTITY = "User";
11
+ export interface IRecordMutationSideEffect {
12
+ name: string;
13
+ record: {
14
+ name: string;
15
+ };
16
+ content: (event: RecordMutationEvent) => Promise<any>;
17
+ }
18
+ export declare class RecordMutationSideEffect implements IRecordMutationSideEffect {
19
+ name: string;
20
+ record: {
21
+ name: string;
22
+ };
23
+ content: (event: RecordMutationEvent) => Promise<any>;
24
+ constructor(data: IRecordMutationSideEffect);
25
+ static create(data: IRecordMutationSideEffect): RecordMutationSideEffect;
26
+ }
27
+ export type InteractionContext = {
28
+ logContext?: any;
29
+ [k: string]: any;
30
+ };
31
+ export type ComputedDataType = 'global' | 'entity' | 'relation' | 'property';
32
+ export declare class Controller {
33
+ system: System;
34
+ entities: KlassInstance<typeof Entity>[];
35
+ relations: KlassInstance<typeof Relation>[];
36
+ activities: KlassInstance<typeof Activity>[];
37
+ interactions: KlassInstance<typeof Interaction>[];
38
+ dict: KlassInstance<typeof Property>[];
39
+ recordMutationSideEffects: RecordMutationSideEffect[];
40
+ activityCalls: Map<string, ActivityCall>;
41
+ activityCallsByName: Map<string, ActivityCall>;
42
+ interactionCallsByName: Map<string, InteractionCall>;
43
+ interactionCalls: Map<string, InteractionCall>;
44
+ recordNameToSideEffects: Map<string, Set<KlassInstance<any> | RecordMutationSideEffect>>;
45
+ globals: {
46
+ BoolExp: typeof BoolExp;
47
+ };
48
+ scheduler: Scheduler;
49
+ constructor(system: System, entities: KlassInstance<typeof Entity>[], relations: KlassInstance<typeof Relation>[], activities: KlassInstance<typeof Activity>[], interactions: KlassInstance<typeof Interaction>[], dict?: KlassInstance<typeof Property>[], recordMutationSideEffects?: RecordMutationSideEffect[]);
50
+ setup(install?: boolean): Promise<void>;
51
+ applyResult(dataContext: DataContext, result: any, record?: any): Promise<any>;
52
+ retrieveLastValue(dataContext: DataContext, record?: any): Promise<any>;
53
+ applyResultPatch(dataContext: DataContext, patch: typeof SKIP_RESULT | ComputeResultPatch | ComputeResultPatch[], record?: any): Promise<any>;
54
+ callbacks: Map<any, Set<SystemCallback>>;
55
+ callInteraction(interactionId: string, interactionEventArgs: InteractionEventArgs): Promise<InteractionCallResponse>;
56
+ runRecordChangeSideEffects(result: InteractionCallResponse, logger: SystemLogger): Promise<void>;
57
+ callActivityInteraction(activityCallId: string, interactionCallId: string, activityId: string | undefined, interactionEventArgs: InteractionEventArgs): Promise<InteractionCallResponse>;
58
+ addEventListener(eventName: string, callback: (...args: any[]) => any): void;
59
+ }
60
+ //# sourceMappingURL=Controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/runtime/Controller.ts"],"names":[],"mappings":"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"}