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.
- package/README.md +53 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/ActivityCall.d.ts +68 -0
- package/dist/runtime/ActivityCall.d.ts.map +1 -0
- package/dist/runtime/ActivityCall.js +379 -0
- package/dist/runtime/ActivityCall.js.map +1 -0
- package/dist/runtime/Controller.d.ts +60 -0
- package/dist/runtime/Controller.d.ts.map +1 -0
- package/dist/runtime/Controller.js +225 -0
- package/dist/runtime/Controller.js.map +1 -0
- package/dist/runtime/InteractionCall.d.ts +102 -0
- package/dist/runtime/InteractionCall.d.ts.map +1 -0
- package/dist/runtime/InteractionCall.js +385 -0
- package/dist/runtime/InteractionCall.js.map +1 -0
- package/dist/runtime/MonoSystem.d.ts +26 -0
- package/dist/runtime/MonoSystem.d.ts.map +1 -0
- package/dist/runtime/MonoSystem.js +331 -0
- package/dist/runtime/MonoSystem.js.map +1 -0
- package/dist/runtime/Mysql.d.ts +35 -0
- package/dist/runtime/Mysql.d.ts.map +1 -0
- package/dist/runtime/Mysql.js +171 -0
- package/dist/runtime/Mysql.js.map +1 -0
- package/dist/runtime/PostgreSQL.d.ts +36 -0
- package/dist/runtime/PostgreSQL.d.ts.map +1 -0
- package/dist/runtime/PostgreSQL.js +172 -0
- package/dist/runtime/PostgreSQL.js.map +1 -0
- package/dist/runtime/SQLite.d.ts +34 -0
- package/dist/runtime/SQLite.d.ts.map +1 -0
- package/dist/runtime/SQLite.js +146 -0
- package/dist/runtime/SQLite.js.map +1 -0
- package/dist/runtime/Scheduler.d.ts +81 -0
- package/dist/runtime/Scheduler.d.ts.map +1 -0
- package/dist/runtime/Scheduler.js +457 -0
- package/dist/runtime/Scheduler.js.map +1 -0
- package/dist/runtime/System.d.ts +312 -0
- package/dist/runtime/System.d.ts.map +1 -0
- package/dist/runtime/System.js +90 -0
- package/dist/runtime/System.js.map +1 -0
- package/dist/runtime/asyncInteractionContext.d.ts +3 -0
- package/dist/runtime/asyncInteractionContext.d.ts.map +1 -0
- package/dist/runtime/asyncInteractionContext.js +3 -0
- package/dist/runtime/asyncInteractionContext.js.map +1 -0
- package/dist/runtime/boolExpression.d.ts +23 -0
- package/dist/runtime/boolExpression.d.ts.map +1 -0
- package/dist/runtime/boolExpression.js +43 -0
- package/dist/runtime/boolExpression.js.map +1 -0
- package/dist/runtime/computedDataHandles/Any.d.ts +52 -0
- package/dist/runtime/computedDataHandles/Any.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Any.js +152 -0
- package/dist/runtime/computedDataHandles/Any.js.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts +108 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.js +49 -0
- package/dist/runtime/computedDataHandles/Computation.js.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +42 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js +4 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +1 -0
- package/dist/runtime/computedDataHandles/Count.d.ts +45 -0
- package/dist/runtime/computedDataHandles/Count.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Count.js +85 -0
- package/dist/runtime/computedDataHandles/Count.js.map +1 -0
- package/dist/runtime/computedDataHandles/Every.d.ts +56 -0
- package/dist/runtime/computedDataHandles/Every.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Every.js +178 -0
- package/dist/runtime/computedDataHandles/Every.js.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts +74 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.js +180 -0
- package/dist/runtime/computedDataHandles/StateMachine.js.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts +26 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.js +106 -0
- package/dist/runtime/computedDataHandles/Transform.js.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +57 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js +40 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +57 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js +146 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js.map +1 -0
- package/dist/runtime/computedDataHandles/index.d.ts +7 -0
- package/dist/runtime/computedDataHandles/index.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/index.js +7 -0
- package/dist/runtime/computedDataHandles/index.js.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +15 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/server.d.ts +35 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +171 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/types/boolExpression.d.ts +22 -0
- package/dist/runtime/types/boolExpression.d.ts.map +1 -0
- package/dist/runtime/types/boolExpression.js +6 -0
- package/dist/runtime/types/boolExpression.js.map +1 -0
- package/dist/runtime/util.d.ts +10 -0
- package/dist/runtime/util.d.ts.map +1 -0
- package/dist/runtime/util.js +39 -0
- package/dist/runtime/util.js.map +1 -0
- package/dist/shared/BoolExp.d.ts +97 -0
- package/dist/shared/BoolExp.d.ts.map +1 -0
- package/dist/shared/BoolExp.js +252 -0
- package/dist/shared/BoolExp.js.map +1 -0
- package/dist/shared/activity/Activity.d.ts +465 -0
- package/dist/shared/activity/Activity.d.ts.map +1 -0
- package/dist/shared/activity/Activity.js +264 -0
- package/dist/shared/activity/Activity.js.map +1 -0
- package/dist/shared/activity/Condition.d.ts +75 -0
- package/dist/shared/activity/Condition.d.ts.map +1 -0
- package/dist/shared/activity/Condition.js +51 -0
- package/dist/shared/activity/Condition.js.map +1 -0
- package/dist/shared/activity/Data.d.ts +115 -0
- package/dist/shared/activity/Data.d.ts.map +1 -0
- package/dist/shared/activity/Data.js +89 -0
- package/dist/shared/activity/Data.js.map +1 -0
- package/dist/shared/attributive.d.ts +93 -0
- package/dist/shared/attributive.d.ts.map +1 -0
- package/dist/shared/attributive.js +59 -0
- package/dist/shared/attributive.js.map +1 -0
- package/dist/shared/computed.d.ts +607 -0
- package/dist/shared/computed.d.ts.map +1 -0
- package/dist/shared/computed.js +202 -0
- package/dist/shared/computed.js.map +1 -0
- package/dist/shared/createClass.d.ts +102 -0
- package/dist/shared/createClass.d.ts.map +1 -0
- package/dist/shared/createClass.js +276 -0
- package/dist/shared/createClass.js.map +1 -0
- package/dist/shared/dictionary/Dictionary.d.ts +40 -0
- package/dist/shared/dictionary/Dictionary.d.ts.map +1 -0
- package/dist/shared/dictionary/Dictionary.js +51 -0
- package/dist/shared/dictionary/Dictionary.js.map +1 -0
- package/dist/shared/entity/Entity.d.ts +149 -0
- package/dist/shared/entity/Entity.d.ts.map +1 -0
- package/dist/shared/entity/Entity.js +226 -0
- package/dist/shared/entity/Entity.js.map +1 -0
- package/dist/shared/index.d.ts +11 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +11 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/user/User.d.ts +21 -0
- package/dist/shared/user/User.d.ts.map +1 -0
- package/dist/shared/user/User.js +11 -0
- package/dist/shared/user/User.js.map +1 -0
- package/dist/shared/utils.d.ts +11 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +19 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts +40 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.js +147 -0
- package/dist/storage/erstorage/AttributeInfo.js.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts +33 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.js +190 -0
- package/dist/storage/erstorage/AttributeQuery.js.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts +29 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.js +78 -0
- package/dist/storage/erstorage/EntityQueryHandle.js.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts +85 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.js +262 -0
- package/dist/storage/erstorage/EntityToTableMap.js.map +1 -0
- package/dist/storage/erstorage/LinkInfo.d.ts +35 -0
- package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/LinkInfo.js +89 -0
- package/dist/storage/erstorage/LinkInfo.js.map +1 -0
- package/dist/storage/erstorage/MatchExp.d.ts +37 -0
- package/dist/storage/erstorage/MatchExp.d.ts.map +1 -0
- package/dist/storage/erstorage/MatchExp.js +211 -0
- package/dist/storage/erstorage/MatchExp.js.map +1 -0
- package/dist/storage/erstorage/Modifier.d.ts +23 -0
- package/dist/storage/erstorage/Modifier.d.ts.map +1 -0
- package/dist/storage/erstorage/Modifier.js +24 -0
- package/dist/storage/erstorage/Modifier.js.map +1 -0
- package/dist/storage/erstorage/NewRecordData.d.ts +42 -0
- package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -0
- package/dist/storage/erstorage/NewRecordData.js +178 -0
- package/dist/storage/erstorage/NewRecordData.js.map +1 -0
- package/dist/storage/erstorage/RecordInfo.d.ts +26 -0
- package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordInfo.js +111 -0
- package/dist/storage/erstorage/RecordInfo.js.map +1 -0
- package/dist/storage/erstorage/RecordQuery.d.ts +73 -0
- package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQuery.js +158 -0
- package/dist/storage/erstorage/RecordQuery.js.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts +84 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.js +1130 -0
- package/dist/storage/erstorage/RecordQueryAgent.js.map +1 -0
- package/dist/storage/erstorage/Setup.d.ts +49 -0
- package/dist/storage/erstorage/Setup.d.ts.map +1 -0
- package/dist/storage/erstorage/Setup.js +400 -0
- package/dist/storage/erstorage/Setup.js.map +1 -0
- package/dist/storage/erstorage/util.d.ts +6 -0
- package/dist/storage/erstorage/util.d.ts.map +1 -0
- package/dist/storage/erstorage/util.js +25 -0
- package/dist/storage/erstorage/util.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/utils.d.ts +10 -0
- package/dist/storage/utils.d.ts.map +1 -0
- package/dist/storage/utils.js +48 -0
- package/dist/storage/utils.js.map +1 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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"}
|