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
@@ -0,0 +1,57 @@
1
+ import { KlassInstance } from "@shared";
2
+ import { StateMachine } from "@shared";
3
+ export declare class TransitionFinder {
4
+ data: KlassInstance<typeof StateMachine>;
5
+ map: {
6
+ [stateName: string]: any;
7
+ };
8
+ constructor(data: KlassInstance<typeof StateMachine>);
9
+ findNextState(currentState: string, trigger: any): any;
10
+ findTransfers(trigger: any): import("@shared").KlassInstanceOfPublic<{
11
+ trigger: {
12
+ instanceType: {
13
+ [key: string]: any;
14
+ };
15
+ collection: false;
16
+ required: true;
17
+ };
18
+ current: {
19
+ type: import("@shared").Klass<{
20
+ name: {
21
+ type: "string";
22
+ collection: false;
23
+ required: true;
24
+ };
25
+ computeValue: {
26
+ type: "function";
27
+ required: false;
28
+ collection: false;
29
+ };
30
+ }>;
31
+ collection: false;
32
+ required: true;
33
+ };
34
+ next: {
35
+ type: import("@shared").Klass<{
36
+ name: {
37
+ type: "string";
38
+ collection: false;
39
+ required: true;
40
+ };
41
+ computeValue: {
42
+ type: "function";
43
+ required: false;
44
+ collection: false;
45
+ };
46
+ }>;
47
+ collection: false;
48
+ required: true;
49
+ };
50
+ computeTarget: {
51
+ type: "function";
52
+ collection: false;
53
+ required: false;
54
+ };
55
+ }>[];
56
+ }
57
+ //# sourceMappingURL=TransitionFinder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitionFinder.d.ts","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/TransitionFinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAcvC,qBAAa,gBAAgB;IAEN,IAAI,EAAE,aAAa,CAAC,OAAO,YAAY,CAAC;IAD3D,GAAG,EAAE;QAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAK;gBACjB,IAAI,EAAE,aAAa,CAAC,OAAO,YAAY,CAAC;IAY3D,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAYhD,aAAa,CAAC,OAAO,EAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG5B"}
@@ -0,0 +1,40 @@
1
+ function shallowEqual(a, b) {
2
+ if (a === b)
3
+ return true;
4
+ for (const key in b) {
5
+ if (a[key] !== b[key]) {
6
+ return false;
7
+ }
8
+ }
9
+ return true;
10
+ }
11
+ export class TransitionFinder {
12
+ constructor(data) {
13
+ this.data = data;
14
+ this.map = {};
15
+ for (const transfer of data.transfers) {
16
+ if (!this.map[transfer.current.name]) {
17
+ this.map[transfer.current.name] = [];
18
+ }
19
+ this.map[transfer.current.name].push({
20
+ trigger: transfer.trigger,
21
+ next: transfer.next
22
+ });
23
+ }
24
+ }
25
+ findNextState(currentState, trigger) {
26
+ const transitions = this.map[currentState];
27
+ if (transitions) {
28
+ for (const transition of transitions) {
29
+ if (shallowEqual(transition.trigger, trigger)) {
30
+ return transition.next;
31
+ }
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ findTransfers(trigger) {
37
+ return this.data.transfers.filter(transfer => shallowEqual(transfer.trigger, trigger));
38
+ }
39
+ }
40
+ //# sourceMappingURL=TransitionFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitionFinder.js","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/TransitionFinder.ts"],"names":[],"mappings":"AAGA,SAAS,YAAY,CAAC,CAAqB,EAAE,CAAqB;IAC9D,IAAI,CAAC,KAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtB,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAGD,MAAM,OAAO,gBAAgB;IAEzB,YAAmB,IAAwC;QAAxC,SAAI,GAAJ,IAAI,CAAoC;QAD3D,QAAG,GAA+B,EAAE,CAAA;QAEhC,KAAI,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YACxC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACtB,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,aAAa,CAAC,YAAoB,EAAE,OAAY;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACnC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC5C,OAAO,UAAU,CAAC,IAAI,CAAA;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,aAAa,CAAC,OAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1F,CAAC;CACJ"}
@@ -0,0 +1,57 @@
1
+ import { DataContext, PropertyDataContext } from "./ComputedDataHandle.js";
2
+ import { WeightedSummation, KlassInstance, Relation, Entity } from "@shared";
3
+ import { Controller } from "../Controller.js";
4
+ import { DataDep, RecordBoundState, RelationBoundState } from "./Computation.js";
5
+ import { DataBasedComputation } from "./Computation.js";
6
+ import { EtityMutationEvent } from "../Scheduler.js";
7
+ import { AttributeQueryData } from "@storage";
8
+ export declare class GlobalWeightedSummationHandle implements DataBasedComputation {
9
+ controller: Controller;
10
+ dataContext: DataContext;
11
+ matchRecordToWeight: (this: Controller, item: any) => {
12
+ weight: number;
13
+ value: number;
14
+ };
15
+ state: ReturnType<any>;
16
+ useLastValue: boolean;
17
+ dataDeps: {
18
+ [key: string]: DataDep;
19
+ };
20
+ record: KlassInstance<typeof Entity | typeof Relation>;
21
+ constructor(controller: Controller, args: KlassInstance<typeof WeightedSummation>, dataContext: DataContext);
22
+ getDefaultValue(): number;
23
+ compute({ main: records }: {
24
+ main: any[];
25
+ }): Promise<number>;
26
+ incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent): Promise<number>;
27
+ }
28
+ export declare class PropertyWeightedSummationHandle implements DataBasedComputation {
29
+ controller: Controller;
30
+ args: KlassInstance<typeof WeightedSummation>;
31
+ dataContext: PropertyDataContext;
32
+ matchRecordToWeight: (this: Controller, item: any) => {
33
+ weight: number;
34
+ value: number;
35
+ };
36
+ state: ReturnType<typeof this.createState>;
37
+ useLastValue: boolean;
38
+ dataDeps: {
39
+ [key: string]: DataDep;
40
+ };
41
+ relationAttr: string;
42
+ relatedRecordName: string;
43
+ isSource: boolean;
44
+ relation: KlassInstance<typeof Relation>;
45
+ relationAttributeQuery: AttributeQueryData;
46
+ constructor(controller: Controller, args: KlassInstance<typeof WeightedSummation>, dataContext: PropertyDataContext);
47
+ createState(): {
48
+ summation: RecordBoundState<number>;
49
+ itemResult: RelationBoundState<number>;
50
+ };
51
+ getDefaultValue(): number;
52
+ compute({ _current }: {
53
+ _current: any;
54
+ }): Promise<number>;
55
+ incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent): Promise<number>;
56
+ }
57
+ //# sourceMappingURL=WeightedSummation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightedSummation.d.ts","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/WeightedSummation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAoB,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAY,MAAM,UAAU,CAAC;AAExD,qBAAa,6BAA8B,YAAW,oBAAoB;IAOnD,UAAU,EAAE,UAAU;IAAwD,WAAW,EAAE,WAAW;IANzH,mBAAmB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvF,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IACtB,YAAY,EAAE,OAAO,CAAO;IAC5B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,MAAM,EAAE,aAAa,CAAC,OAAO,MAAM,GAAC,OAAO,QAAQ,CAAC,CAAA;gBAEjC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,iBAAiB,CAAC,EAAS,WAAW,EAAE,WAAW;IAezH,eAAe;IAIT,OAAO,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBlG;AAED,qBAAa,+BAAgC,YAAW,oBAAoB;IAWrD,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,aAAa,CAAC,OAAO,iBAAiB,CAAC;IAAS,WAAW,EAAE,mBAAmB;IAVxI,mBAAmB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvF,KAAK,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,YAAY,EAAE,OAAO,CAAO;IAC5B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,aAAa,CAAC,OAAO,QAAQ,CAAC,CAAA;IACxC,sBAAsB,EAAE,kBAAkB,CAAA;gBAEvB,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,aAAa,CAAC,OAAO,iBAAiB,CAAC,EAAS,WAAW,EAAE,mBAAmB;IAkBxI,WAAW;;;;IAOX,eAAe;IAIT,OAAO,CAAC,EAAC,QAAQ,EAAC,EAAE;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBrD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;CAgDlG"}
@@ -0,0 +1,146 @@
1
+ import { ComputedDataHandle } from "./ComputedDataHandle.js";
2
+ import { WeightedSummation } from "@shared";
3
+ import { RecordBoundState, RelationBoundState } from "./Computation.js";
4
+ import { MatchExp } from "@storage";
5
+ export class GlobalWeightedSummationHandle {
6
+ constructor(controller, args, dataContext) {
7
+ this.controller = controller;
8
+ this.dataContext = dataContext;
9
+ this.useLastValue = true;
10
+ this.dataDeps = {};
11
+ this.matchRecordToWeight = args.callback.bind(this);
12
+ this.record = args.record;
13
+ this.dataDeps = {
14
+ main: {
15
+ type: 'records',
16
+ source: this.record,
17
+ attributeQuery: args.attributeQuery
18
+ }
19
+ };
20
+ }
21
+ getDefaultValue() {
22
+ return 0;
23
+ }
24
+ async compute({ main: records }) {
25
+ let summation = 0;
26
+ for (const record of records) {
27
+ const result = this.matchRecordToWeight.call(this.controller, record);
28
+ summation += result.weight * result.value;
29
+ }
30
+ await this.state.summation.set(summation);
31
+ return summation;
32
+ }
33
+ async incrementalCompute(lastValue, mutationEvent) {
34
+ let summation = lastValue;
35
+ if (mutationEvent.type === 'create') {
36
+ const newItem = mutationEvent.record;
37
+ const result = this.matchRecordToWeight.call(this.controller, newItem);
38
+ summation = lastValue + (result.weight * result.value);
39
+ }
40
+ else if (mutationEvent.type === 'delete') {
41
+ const oldItem = mutationEvent.record;
42
+ const result = this.matchRecordToWeight.call(this.controller, oldItem);
43
+ summation = lastValue - (result.weight * result.value);
44
+ }
45
+ else if (mutationEvent.type === 'update') {
46
+ const oldItem = mutationEvent.oldRecord;
47
+ const newItem = { ...mutationEvent.oldRecord, ...mutationEvent.record };
48
+ const oldResult = this.matchRecordToWeight.call(this.controller, oldItem);
49
+ const newResult = this.matchRecordToWeight.call(this.controller, newItem);
50
+ const oldValue = oldResult.weight * oldResult.value;
51
+ const newValue = newResult.weight * newResult.value;
52
+ summation = lastValue - oldValue + newValue;
53
+ }
54
+ return summation;
55
+ }
56
+ }
57
+ export class PropertyWeightedSummationHandle {
58
+ constructor(controller, args, dataContext) {
59
+ this.controller = controller;
60
+ this.args = args;
61
+ this.dataContext = dataContext;
62
+ this.useLastValue = true;
63
+ this.dataDeps = {};
64
+ this.matchRecordToWeight = args.callback.bind(this);
65
+ // 我们假设在PropertyWeightedSummationHandle中,records数组的第一个元素是一个Relation
66
+ this.relation = args.record;
67
+ this.relationAttr = this.relation.source.name === dataContext.host.name ? this.relation.sourceProperty : this.relation.targetProperty;
68
+ this.isSource = this.relation.source.name === dataContext.host.name;
69
+ this.relatedRecordName = this.isSource ? this.relation.target.name : this.relation.source.name;
70
+ this.relationAttributeQuery = args.attributeQuery || [];
71
+ this.dataDeps = {
72
+ _current: {
73
+ type: 'property',
74
+ attributeQuery: [[this.relationAttr, { attributeQuery: [['&', { attributeQuery: this.relationAttributeQuery }]] }]]
75
+ }
76
+ };
77
+ }
78
+ createState() {
79
+ return {
80
+ summation: new RecordBoundState(0),
81
+ itemResult: new RelationBoundState(0, this.relation.name)
82
+ };
83
+ }
84
+ getDefaultValue() {
85
+ return 0;
86
+ }
87
+ async compute({ _current }) {
88
+ // FIXME 没有验证过
89
+ let summation = 0;
90
+ for (const record of _current[this.relationAttr]) {
91
+ const relationRecord = record['&'];
92
+ const valueAndWeight = this.matchRecordToWeight.call(this.controller, relationRecord);
93
+ const result = valueAndWeight.weight * valueAndWeight.value;
94
+ await this.state.itemResult.set(relationRecord, result);
95
+ summation += result;
96
+ }
97
+ await this.state.summation.set(_current, summation);
98
+ return summation;
99
+ }
100
+ async incrementalCompute(lastValue, mutationEvent) {
101
+ // FIXME 应该用 RelationBoundState 记录
102
+ let summation = await this.state.summation.get(mutationEvent.record);
103
+ const relatedMutationEvent = mutationEvent.relatedMutationEvent;
104
+ if (relatedMutationEvent.type === 'create') {
105
+ // 关联关系的新建
106
+ const newRelationRecord = await this.controller.system.storage.findOne(this.relation.name, MatchExp.atom({
107
+ key: 'id',
108
+ value: ['=', relatedMutationEvent.record.id]
109
+ }), undefined, this.relationAttributeQuery);
110
+ const valueAndWeight = this.matchRecordToWeight.call(this.controller, newRelationRecord);
111
+ const result = valueAndWeight.weight * valueAndWeight.value;
112
+ await this.state.itemResult.set(newRelationRecord, result);
113
+ summation = await this.state.summation.set(mutationEvent.record, summation + result);
114
+ }
115
+ else if (relatedMutationEvent.type === 'delete') {
116
+ // 关联关系的删除
117
+ const oldResult = await this.state.itemResult.get(relatedMutationEvent.record);
118
+ summation = await this.state.summation.set(mutationEvent.record, summation - oldResult);
119
+ }
120
+ else if (relatedMutationEvent.type === 'update') {
121
+ const relationMatch = relatedMutationEvent?.recordName === this.relation.name ?
122
+ MatchExp.atom({
123
+ key: 'id',
124
+ value: ['=', relatedMutationEvent.oldRecord.id]
125
+ }) :
126
+ MatchExp.atom({
127
+ key: 'source.id',
128
+ value: ['=', this.isSource ? mutationEvent.oldRecord.id : relatedMutationEvent.oldRecord.id]
129
+ }).and({
130
+ key: 'target.id',
131
+ value: ['=', this.isSource ? relatedMutationEvent.oldRecord.id : mutationEvent.oldRecord.id]
132
+ });
133
+ const newRelationRecord = await this.controller.system.storage.findOne(this.relation.name, relationMatch, undefined, this.relationAttributeQuery);
134
+ const oldResult = await this.state.itemResult.get(relatedMutationEvent.oldRecord);
135
+ const newValueAndWeight = this.matchRecordToWeight.call(this.controller, newRelationRecord);
136
+ const newResult = newValueAndWeight.weight * newValueAndWeight.value;
137
+ summation = await this.state.summation.set(mutationEvent.record, summation - oldResult + newResult);
138
+ }
139
+ return summation;
140
+ }
141
+ }
142
+ ComputedDataHandle.Handles.set(WeightedSummation, {
143
+ global: GlobalWeightedSummationHandle,
144
+ property: PropertyWeightedSummationHandle
145
+ });
146
+ //# sourceMappingURL=WeightedSummation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightedSummation.js","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/WeightedSummation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAmC,MAAM,SAAS,CAAC;AAE7E,OAAO,EAA6B,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGnG,OAAO,EAAsB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,OAAO,6BAA6B;IAOtC,YAAmB,UAAsB,EAAE,IAA6C,EAAS,WAAwB;QAAtG,eAAU,GAAV,UAAU,CAAY;QAAwD,gBAAW,GAAX,WAAW,CAAa;QAJzH,iBAAY,GAAY,IAAI,CAAA;QAC5B,aAAQ,GAA6B,EAAE,CAAA;QAInC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAGzB,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,EAAE;gBACF,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;aACtC;SACJ,CAAA;IACL,CAAC;IAGD,eAAe;QACX,OAAO,CAAC,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,OAAO,EAAgB;QACxC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACtE,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,aAAiC;QACzE,IAAI,SAAS,GAAG,SAAS,CAAA;QACzB,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvE,SAAS,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvE,SAAS,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC;YACxC,MAAM,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC,MAAM,EAAC,CAAC;YAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE1E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;YACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;YAEpD,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAChD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAED,MAAM,OAAO,+BAA+B;IAWxC,YAAmB,UAAsB,EAAS,IAA6C,EAAS,WAAgC;QAArH,eAAU,GAAV,UAAU,CAAY;QAAS,SAAI,GAAJ,IAAI,CAAyC;QAAS,gBAAW,GAAX,WAAW,CAAqB;QARxI,iBAAY,GAAY,IAAI,CAAA;QAC5B,aAAQ,GAA6B,EAAE,CAAA;QAQnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnD,mEAAmE;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAwC,CAAA;QAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAA;QACrI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAA;QACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA;QAC9F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAA;QAEvD,IAAI,CAAC,QAAQ,GAAG;YACZ,QAAQ,EAAE;gBACN,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAC,cAAc,EAAE,CAAC,CAAC,GAAG,EAAE,EAAC,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC;aAClH;SACJ,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO;YACH,SAAS,EAAE,IAAI,gBAAgB,CAAS,CAAC,CAAC;YAC1C,UAAU,EAAE,IAAI,kBAAkB,CAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SACpE,CAAA;IACL,CAAC;IAED,eAAe;QACX,OAAO,CAAC,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAkB;QACrC,cAAc;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YAClC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACtF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;YAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACxD,SAAS,IAAI,MAAM,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,aAAiC;QACzE,kCAAkC;QAClC,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAqB,CAAC;QAEjE,IAAI,oBAAoB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,UAAU;YACV,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;gBACrG,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,MAAO,CAAC,EAAE,CAAC;aAChD,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;YAC5D,MAAM,IAAI,CAAC,KAAM,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC5D,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,oBAAoB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,UAAU;YACV,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAChF,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;QAE7F,CAAC;aAAM,IAAI,oBAAoB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAEhD,MAAM,aAAa,GAAG,oBAAoB,EAAE,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3E,QAAQ,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,CAAC,GAAG,EAAE,oBAAqB,CAAC,SAAU,CAAC,EAAE,CAAC;iBACpD,CAAC,CAAC,CAAC;gBACJ,QAAQ,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,SAAU,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAU,CAAC,EAAE,CAAC;iBACjG,CAAC,CAAC,GAAG,CAAC;oBACH,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAU,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,SAAU,CAAC,EAAE,CAAC;iBACjG,CAAC,CAAA;YAGN,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAElJ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAC5F,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;YAErE,SAAS,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;QACzG,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAED,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;IAC9C,MAAM,EAAE,6BAA6B;IACrC,QAAQ,EAAE,+BAA+B;CAC5C,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './StateMachine.js';
2
+ export * from './WeightedSummation.js';
3
+ export * from './Every.js';
4
+ export * from './Any.js';
5
+ export * from './Count.js';
6
+ export * from './Transform.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './StateMachine.js';
2
+ export * from './WeightedSummation.js';
3
+ export * from './Every.js';
4
+ export * from './Any.js';
5
+ export * from './Count.js';
6
+ export * from './Transform.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/computedDataHandles/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,15 @@
1
+ export * from '@shared';
2
+ export * from '@storage';
3
+ export * from './Controller.js';
4
+ export * from './MonoSystem.js';
5
+ export * from './System.js';
6
+ export * from './SQLite.js';
7
+ export * from './PostgreSQL.js';
8
+ export * from './Mysql.js';
9
+ export * from './server.js';
10
+ export * from './asyncInteractionContext.js';
11
+ export * from './util.js';
12
+ export * from './computedDataHandles/index.js';
13
+ export * from './ActivityCall.js';
14
+ export * from './InteractionCall.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,WAAW,CAAA;AACzB,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,15 @@
1
+ export * from '@shared';
2
+ export * from '@storage';
3
+ export * from './Controller.js';
4
+ export * from './MonoSystem.js';
5
+ export * from './System.js';
6
+ export * from './SQLite.js';
7
+ export * from './PostgreSQL.js';
8
+ export * from './Mysql.js';
9
+ export * from './server.js';
10
+ export * from './asyncInteractionContext.js';
11
+ export * from './util.js';
12
+ export * from './computedDataHandles/index.js';
13
+ export * from './ActivityCall.js';
14
+ export * from './InteractionCall.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,WAAW,CAAA;AACzB,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { FastifyLoggerOptions } from 'fastify';
2
+ import { Controller } from "./Controller.js";
3
+ import { EventPayload, EventQuery, EventUser } from "./InteractionCall.js";
4
+ import cors from 'cors';
5
+ type ServerOptions = {
6
+ port: number;
7
+ host?: string;
8
+ parseUserId: (headers: any) => Promise<string | undefined>;
9
+ cors?: Parameters<typeof cors>[0];
10
+ logger?: FastifyLoggerOptions;
11
+ };
12
+ export type APIBody = {
13
+ activity?: string;
14
+ interaction?: string;
15
+ activityId?: string;
16
+ payload?: EventPayload;
17
+ query?: EventQuery;
18
+ };
19
+ export type DataAPIContext = {
20
+ user: EventUser;
21
+ };
22
+ export type DataAPIHandle = (this: Controller, context: DataAPIContext, ...rest: any[]) => any;
23
+ export type DataAPIConfig = {
24
+ params?: any[] | {};
25
+ useNamedParams?: boolean;
26
+ allowAnonymous?: boolean;
27
+ };
28
+ export type DataAPI = DataAPIHandle & DataAPIConfig;
29
+ export type DataAPIs = {
30
+ [k: string]: DataAPI;
31
+ };
32
+ export declare function startServer(controller: Controller, options: ServerOptions, dataAPIs?: DataAPIs): Promise<void>;
33
+ export declare function createDataAPI(handle: DataAPIHandle, config?: DataAPIConfig): DataAPI;
34
+ export {};
35
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAC,oBAAoB,EAA+B,MAAM,SAAS,CAAA;AACnF,OAAO,EAAC,UAAU,EAAc,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AAE/F,OAAO,IAAI,MAAM,MAAM,CAAA;AAKvB,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1D,IAAI,CAAC,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,CAAC,EAAG,oBAAoB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,UAAU,CAAA;CACrB,CAAA;AAMD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAC9F,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,aAAa,CAAA;AAGnD,MAAM,MAAM,QAAQ,GAAG;IACnB,CAAC,CAAC,EAAC,MAAM,GAAI,OAAO,CAAA;CACvB,CAAA;AA0ED,wBAAsB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,GAAE,QAAa,iBAsGxG;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CAexF"}
@@ -0,0 +1,171 @@
1
+ import Fastify from 'fastify';
2
+ import { USER_ENTITY } from "./Controller.js";
3
+ import { MatchExp } from "@storage";
4
+ import cors from 'cors';
5
+ import middie from '@fastify/middie';
6
+ import { assert } from "./util.js";
7
+ import { asyncInteractionContext } from "./asyncInteractionContext.js";
8
+ function parseDataAPIParams(inputParams, api) {
9
+ if (!api.params) {
10
+ return inputParams;
11
+ }
12
+ if (api.useNamedParams) {
13
+ const params = api.params;
14
+ const objectParams = inputParams;
15
+ return Object.fromEntries(Object.entries(objectParams).map(([key, inputParam]) => {
16
+ const param = params[key];
17
+ if (param === undefined)
18
+ return [key, inputParam];
19
+ if (typeof param === 'string' || inputParam === undefined || inputParam === null) {
20
+ // 'string'|'number'|'boolean'|'object'|'undefined'|'null'
21
+ return [key, inputParam];
22
+ }
23
+ else if (typeof param === 'function') {
24
+ // 对象
25
+ if (!param.fromValue) {
26
+ throw new Error('Invalid Class param type, missing fromValue');
27
+ }
28
+ return [key, param.fromValue(inputParam)];
29
+ }
30
+ else {
31
+ throw new Error('Invalid param type');
32
+ }
33
+ }));
34
+ }
35
+ else {
36
+ const params = api.params;
37
+ const arrayParams = inputParams;
38
+ return arrayParams.map((inputParam, index) => {
39
+ const param = params[index];
40
+ if (param === undefined)
41
+ return inputParam;
42
+ if (typeof param === 'string' || inputParam === undefined || inputParam === null) {
43
+ // 'string'|'number'|'boolean'|'object'|'undefined'|'null'
44
+ return inputParam;
45
+ }
46
+ else if (typeof param === 'function') {
47
+ // 对象
48
+ if (!param.fromValue) {
49
+ throw new Error('Invalid Class param type, missing fromValue');
50
+ }
51
+ return param.fromValue(inputParam);
52
+ }
53
+ else {
54
+ throw new Error('Invalid param type');
55
+ }
56
+ });
57
+ }
58
+ }
59
+ function withLogContext(asyncHandle) {
60
+ return async (request, reply) => {
61
+ const logContext = {
62
+ reqId: request.id
63
+ };
64
+ let result;
65
+ await asyncInteractionContext.run(logContext, async () => {
66
+ result = await asyncHandle(request, reply);
67
+ });
68
+ return result;
69
+ };
70
+ }
71
+ export async function startServer(controller, options, dataAPIs = {}) {
72
+ const fastify = Fastify({
73
+ logger: options.logger || true
74
+ });
75
+ await fastify.register(middie);
76
+ fastify.use(cors(options.cors));
77
+ fastify.post('/interaction', withLogContext(async (request, reply) => {
78
+ // 转发到 controller
79
+ const { activity: activityName, activityId, interaction: interactionName, payload, query } = request.body;
80
+ // 1. JWT 鉴权。获取用户身份
81
+ const userId = await options.parseUserId(request.headers);
82
+ if (!userId) {
83
+ throw { statusCode: 401, message: 'Unauthorized' };
84
+ }
85
+ let user = await controller.system.storage.findOne(USER_ENTITY, MatchExp.atom({ key: 'id', value: ['=', userId] }), undefined, ['*']);
86
+ if (!user) {
87
+ throw { statusCode: 500, message: 'User not synced' };
88
+ }
89
+ const eventArgs = {
90
+ user,
91
+ payload,
92
+ query
93
+ };
94
+ let result;
95
+ if (activityName) {
96
+ // 还需要区分 create 和 call
97
+ const activityCallId = controller.activityCallsByName.get(activityName)?.activity.uuid;
98
+ const interactionId = controller.activityCallsByName.get(activityName).interactionCallByName.get(interactionName)?.interaction.uuid;
99
+ result = await controller.callActivityInteraction(activityCallId, interactionId, activityId, eventArgs);
100
+ }
101
+ else {
102
+ const interactionId = controller.interactionCallsByName.get(interactionName)?.interaction.uuid;
103
+ result = await controller.callInteraction(interactionId, eventArgs);
104
+ }
105
+ // TODO 统一处理 result。如果有 error,也要记录
106
+ if (result.error) {
107
+ throw { statusCode: 400, body: result };
108
+ }
109
+ // reply.send(result)
110
+ return result;
111
+ }));
112
+ // data api
113
+ fastify.post('/api/:apiName', withLogContext(async (request, reply) => {
114
+ const params = request.params;
115
+ const api = dataAPIs[params.apiName];
116
+ if (!api) {
117
+ throw { statusCode: 404, message: `api ${params.apiName} not found` };
118
+ }
119
+ let user;
120
+ if (!api.allowAnonymous) {
121
+ // 1. JWT 鉴权。获取用户身份
122
+ const userId = await options.parseUserId(request.headers);
123
+ if (!userId) {
124
+ throw { statusCode: 401, message: 'Unauthorized' };
125
+ }
126
+ user = await controller.system.storage.findOne(USER_ENTITY, MatchExp.atom({ key: 'id', value: ['=', userId] }), undefined, ['*']);
127
+ if (!user) {
128
+ throw { statusCode: 500, message: 'User not synced' };
129
+ }
130
+ }
131
+ // 参数
132
+ const apiParams = parseDataAPIParams(request.body, api);
133
+ let result;
134
+ if (api.useNamedParams) {
135
+ result = await dataAPIs[params.apiName].call(controller, {
136
+ user: user
137
+ }, apiParams);
138
+ }
139
+ else {
140
+ result = await dataAPIs[params.apiName].call(controller, {
141
+ user: user
142
+ }, ...apiParams);
143
+ }
144
+ return result;
145
+ }));
146
+ // 健康检测
147
+ fastify.get('/ping', async (request, reply) => {
148
+ reply.type('application/json').code(200);
149
+ return { message: 'pong' };
150
+ });
151
+ fastify.listen({ port: options.port, host: options.host ?? 'localhost' }, (err, address) => {
152
+ if (err)
153
+ throw err;
154
+ // Server is now listening on ${address}
155
+ });
156
+ }
157
+ export function createDataAPI(handle, config = {}) {
158
+ assert(!handle.params, `handle seem to be already a api`);
159
+ const { params, allowAnonymous = false, useNamedParams = false } = config;
160
+ if (!useNamedParams) {
161
+ const arrayParams = (params || []);
162
+ // 这里的 handle 会默认注入第一个参数为 context,所以下面的判断是 +2
163
+ assert(handle.length < (arrayParams.length || 0) + 2, `Invalid params length, handle length :${handle.length}, params length: ${arrayParams.length}`);
164
+ }
165
+ const api = handle;
166
+ api.params = params;
167
+ api.allowAnonymous = allowAnonymous;
168
+ api.useNamedParams = useNamedParams;
169
+ return api;
170
+ }
171
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare const OperatorNames: {
2
+ '||': string;
3
+ '&&': string;
4
+ '!': string;
5
+ };
6
+ export declare const enum BoolExpressionNodeTypes {
7
+ group = "group",
8
+ variable = "variable"
9
+ }
10
+ export type BoolExpression = GroupNode | VariableNode;
11
+ export type GroupNode = {
12
+ type: BoolExpressionNodeTypes.group;
13
+ op: string;
14
+ left: BoolExpression;
15
+ right?: BoolExpression;
16
+ };
17
+ export type VariableNode = {
18
+ type: BoolExpressionNodeTypes.variable;
19
+ name: string;
20
+ [k: string]: any;
21
+ };
22
+ //# sourceMappingURL=boolExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolExpression.d.ts","sourceRoot":"","sources":["../../../src/runtime/types/boolExpression.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIzB,CAAA;AAED,0BAAkB,uBAAuB;IACrC,KAAK,UAAS;IACd,QAAQ,aAAa;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAC,YAAY,CAAA;AAEnD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAGD,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAA;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA"}