interaqt 2.0.0 → 2.0.1

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 (91) hide show
  1. package/README.md +1 -0
  2. package/agent/agentspace/knowledge/generator/api-reference.md +28 -5
  3. package/agent/agentspace/knowledge/generator/computation-implementation.md +61 -14
  4. package/agent/agentspace/knowledge/usage/00-mindset-shift.md +2 -0
  5. package/agent/agentspace/knowledge/usage/04-reactive-computations.md +158 -101
  6. package/agent/agentspace/knowledge/usage/05-interactions.md +67 -22
  7. package/agent/agentspace/knowledge/usage/08-activities.md +10 -0
  8. package/agent/agentspace/knowledge/usage/09-filtered-entities.md +1 -0
  9. package/agent/agentspace/knowledge/usage/13-testing.md +48 -97
  10. package/agent/agentspace/knowledge/usage/14-api-reference.md +22 -5
  11. package/agent/agentspace/knowledge/usage/15-entity-crud-patterns.md +89 -28
  12. package/agent/agentspace/knowledge/usage/19-common-anti-patterns.md +11 -2
  13. package/dist/builtins/interaction/Action.d.ts.map +1 -1
  14. package/dist/builtins/interaction/Activity.d.ts.map +1 -1
  15. package/dist/builtins/interaction/Attributive.d.ts.map +1 -1
  16. package/dist/builtins/interaction/Condition.d.ts.map +1 -1
  17. package/dist/builtins/interaction/Conditions.d.ts.map +1 -1
  18. package/dist/builtins/interaction/Data.d.ts.map +1 -1
  19. package/dist/builtins/interaction/Event.d.ts.map +1 -1
  20. package/dist/builtins/interaction/Gateway.d.ts.map +1 -1
  21. package/dist/builtins/interaction/Interaction.d.ts.map +1 -1
  22. package/dist/builtins/interaction/Payload.d.ts.map +1 -1
  23. package/dist/builtins/interaction/PayloadItem.d.ts.map +1 -1
  24. package/dist/builtins/interaction/activity/ActivityCall.d.ts.map +1 -1
  25. package/dist/core/EventSource.d.ts +37 -0
  26. package/dist/core/EventSource.d.ts.map +1 -1
  27. package/dist/core/init.d.ts.map +1 -1
  28. package/dist/core/utils.d.ts.map +1 -1
  29. package/dist/drivers/Mysql.d.ts +4 -3
  30. package/dist/drivers/Mysql.d.ts.map +1 -1
  31. package/dist/drivers/PGLite.d.ts +2 -2
  32. package/dist/drivers/PGLite.d.ts.map +1 -1
  33. package/dist/drivers/PostgreSQL.d.ts +2 -2
  34. package/dist/drivers/PostgreSQL.d.ts.map +1 -1
  35. package/dist/drivers/SQLite.d.ts +3 -3
  36. package/dist/drivers/SQLite.d.ts.map +1 -1
  37. package/dist/drivers.d.ts +2 -0
  38. package/dist/drivers.js +963 -0
  39. package/dist/drivers.js.map +1 -0
  40. package/dist/index.js +4220 -4090
  41. package/dist/index.js.map +1 -1
  42. package/dist/runtime/ComputationSourceMap.d.ts +11 -0
  43. package/dist/runtime/ComputationSourceMap.d.ts.map +1 -1
  44. package/dist/runtime/Controller.d.ts.map +1 -1
  45. package/dist/runtime/Scheduler.d.ts +21 -3
  46. package/dist/runtime/Scheduler.d.ts.map +1 -1
  47. package/dist/runtime/System.d.ts +1 -0
  48. package/dist/runtime/System.d.ts.map +1 -1
  49. package/dist/runtime/computations/Any.d.ts +17 -52
  50. package/dist/runtime/computations/Any.d.ts.map +1 -1
  51. package/dist/runtime/computations/Average.d.ts +15 -49
  52. package/dist/runtime/computations/Average.d.ts.map +1 -1
  53. package/dist/runtime/computations/Computation.d.ts +8 -0
  54. package/dist/runtime/computations/Computation.d.ts.map +1 -1
  55. package/dist/runtime/computations/Count.d.ts +21 -64
  56. package/dist/runtime/computations/Count.d.ts.map +1 -1
  57. package/dist/runtime/computations/Custom.d.ts.map +1 -1
  58. package/dist/runtime/computations/Every.d.ts +18 -52
  59. package/dist/runtime/computations/Every.d.ts.map +1 -1
  60. package/dist/runtime/computations/StateMachine.d.ts +2 -2
  61. package/dist/runtime/computations/StateMachine.d.ts.map +1 -1
  62. package/dist/runtime/computations/Summation.d.ts +15 -49
  63. package/dist/runtime/computations/Summation.d.ts.map +1 -1
  64. package/dist/runtime/computations/Transform.d.ts.map +1 -1
  65. package/dist/runtime/computations/WeightedSummation.d.ts +18 -60
  66. package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -1
  67. package/dist/runtime/computations/aggregationTemplate.d.ts +163 -0
  68. package/dist/runtime/computations/aggregationTemplate.d.ts.map +1 -0
  69. package/dist/runtime/migration.d.ts.map +1 -1
  70. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
  71. package/dist/storage/erstorage/CreationExecutor.d.ts.map +1 -1
  72. package/dist/storage/erstorage/DeletionExecutor.d.ts.map +1 -1
  73. package/dist/storage/erstorage/EntityQueryHandle.d.ts +6 -0
  74. package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -1
  75. package/dist/storage/erstorage/EntityToTableMap.d.ts +1 -0
  76. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
  77. package/dist/storage/erstorage/LinkInfo.d.ts +1 -0
  78. package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -1
  79. package/dist/storage/erstorage/MatchExp.d.ts +3 -2
  80. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
  81. package/dist/storage/erstorage/MergedItemProcessor.d.ts +5 -0
  82. package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -1
  83. package/dist/storage/erstorage/NewRecordData.d.ts +1 -0
  84. package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -1
  85. package/dist/storage/erstorage/QueryExecutor.d.ts.map +1 -1
  86. package/dist/storage/erstorage/RecordQueryAgent.d.ts +11 -0
  87. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
  88. package/dist/storage/erstorage/Setup.d.ts +24 -0
  89. package/dist/storage/erstorage/Setup.d.ts.map +1 -1
  90. package/dist/storage/erstorage/UpdateExecutor.d.ts.map +1 -1
  91. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Custom.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Custom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAK1B,uBAAe,2BAA4B,YAAW,oBAAoB;IAoBrD,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,cAAc;IAAS,WAAW,EAAE,WAAW;IAnBvG,MAAM,CAAC,eAAe,gBAAS;IAE/B,KAAK,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAK;IACxE,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,uBAAuB,CAAC,EAAE,QAAQ,CAAA;IAElC,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,0BAA0B,CAAC,EAAE,QAAQ,CAAA;IACrC,+BAA+B,CAAC,EAAE,QAAQ,CAAA;IAC1C,mBAAmB,CAAC,EAAE,QAAQ,CAAA;IAC9B,uBAAuB,CAAC,EAAE,QAAQ,CAAA;IAClC,mBAAmB,CAAC,EAAE,QAAQ,CAAA;IAE9B,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC,CAAA;IACvE,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,sBAAsB,GAAC,sBAAsB,EAAE,GAAC,SAAS,CAAC,CAAA;IAClI,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC,CAAA;gBAE7C,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,cAAc,EAAS,WAAW,EAAE,WAAW;IA4GvG,WAAW;IAaX,eAAe,CAAC,MAAM,CAAC,EAAC,GAAG;IAOrB,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC;IAe7D,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;CAgChG;AAGD,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;CACvC;AAED,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;CACvC;AAED,qBAAa,oBAAqB,SAAQ,2BAA2B;IACnE,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;CACzC;AAED,qBAAa,oBAAqB,SAAQ,2BAA2B;IACnE,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;gBAE5B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB;CAU3F;AAGD,eAAO,MAAM,aAAa,uHAKzB,CAAA"}
1
+ {"version":3,"file":"Custom.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Custom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAK1B,uBAAe,2BAA4B,YAAW,oBAAoB;IAoBrD,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,cAAc;IAAS,WAAW,EAAE,WAAW;IAnBvG,MAAM,CAAC,eAAe,gBAAS;IAE/B,KAAK,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAK;IACxE,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,uBAAuB,CAAC,EAAE,QAAQ,CAAA;IAElC,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,0BAA0B,CAAC,EAAE,QAAQ,CAAA;IACrC,+BAA+B,CAAC,EAAE,QAAQ,CAAA;IAC1C,mBAAmB,CAAC,EAAE,QAAQ,CAAA;IAC9B,uBAAuB,CAAC,EAAE,QAAQ,CAAA;IAClC,mBAAmB,CAAC,EAAE,QAAQ,CAAA;IAE9B,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC,CAAA;IACvE,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,sBAAsB,GAAC,sBAAsB,EAAE,GAAC,SAAS,CAAC,CAAA;IAClI,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC,CAAA;gBAE7C,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,cAAc,EAAS,WAAW,EAAE,WAAW;IA+HvG,WAAW;IAaX,eAAe,CAAC,MAAM,CAAC,EAAC,GAAG;IAOrB,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAC,GAAG,CAAC;IAe7D,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;CAqChG;AAGD,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;CACvC;AAED,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;CACvC;AAED,qBAAa,oBAAqB,SAAQ,2BAA2B;IACnE,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;CACzC;AAED,qBAAa,oBAAqB,SAAQ,2BAA2B;IACnE,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;gBAE5B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB;CAU3F;AAGD,eAAO,MAAM,aAAa,uHAKzB,CAAA"}
@@ -1,23 +1,12 @@
1
- import { PropertyDataContext, ComputationResult, DataBasedComputation, DataDep, DataDepEventContext, GlobalBoundState, IncrementalPlan, RecordBoundState, DataContext } from './Computation.js';
2
- import { Every, EveryInstance, RelationInstance } from '../../core';
1
+ import { Every, EveryInstance } from '../../core';
3
2
  import { Controller } from '../Controller.js';
4
- import { EtityMutationEvent } from '../Scheduler.js';
5
- import { AttributeQueryData } from '../../storage';
6
- export declare class GlobalEveryHandle implements DataBasedComputation {
7
- controller: Controller;
8
- args: EveryInstance;
9
- dataContext: DataContext;
3
+ import { DataContext, GlobalBoundState, PropertyDataContext, RecordBoundState } from './Computation.js';
4
+ import { GlobalRecordsAggregationHandle, PropertyRelationAggregationHandle } from './aggregationTemplate.js';
5
+ export declare class GlobalEveryHandle extends GlobalRecordsAggregationHandle<boolean, boolean, EveryInstance> {
10
6
  static computationType: typeof Every;
11
7
  static contextType: "global";
12
- callback: (this: Controller, item: any, dataDeps?: {
13
- [key: string]: unknown;
14
- }) => boolean;
15
- state: ReturnType<typeof this.createState>;
16
- useLastValue: boolean;
17
- dataDeps: {
18
- [key: string]: DataDep;
19
- };
20
- primaryDataDepKeys: string[];
8
+ protected readonly itemStateKey = "isItemMatch";
9
+ protected readonly emptyItemValue = false;
21
10
  defaultValue: boolean;
22
11
  constructor(controller: Controller, args: EveryInstance, dataContext: DataContext);
23
12
  createState(): {
@@ -25,38 +14,18 @@ export declare class GlobalEveryHandle implements DataBasedComputation {
25
14
  isItemMatch: RecordBoundState<boolean>;
26
15
  };
27
16
  getInitialValue(): boolean;
28
- compute({ main: records, ...dataDeps }: {
29
- main: any[];
30
- [key: string]: any;
31
- }): Promise<boolean>;
32
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
33
- incrementalCompute(lastValue: boolean, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
17
+ protected computeItemValue(record: Record<string, unknown>, dataDeps: {
34
18
  [key: string]: unknown;
35
- }): Promise<boolean | ComputationResult>;
19
+ }): boolean;
20
+ protected applyDelta(newValue: boolean | null, oldValue: boolean | null, presenceDelta: 1 | 0 | -1): Promise<boolean>;
21
+ protected persistFullResult(values: boolean[]): Promise<boolean>;
36
22
  }
37
- export declare class PropertyEveryHandle implements DataBasedComputation {
38
- controller: Controller;
39
- args: EveryInstance;
40
- dataContext: PropertyDataContext;
23
+ export declare class PropertyEveryHandle extends PropertyRelationAggregationHandle<boolean, boolean, EveryInstance> {
41
24
  static computationType: typeof Every;
42
25
  static contextType: "property";
43
- callback: (this: Controller, item: any, dataDeps?: {
44
- [key: string]: unknown;
45
- }) => boolean;
46
- state: ReturnType<typeof this.createState>;
47
- useLastValue: boolean;
48
- dataDeps: {
49
- [key: string]: DataDep;
50
- };
51
- primaryDataDepKeys: string[];
52
- relationAttr: string;
53
- relation: RelationInstance;
54
- relatedRecordName: string;
55
- property: string;
56
- reverseProperty: string;
57
- isSource: boolean;
58
- relationAttributeQuery: AttributeQueryData;
59
- relatedAttributeQuery: AttributeQueryData;
26
+ protected readonly itemStateKey = "isItemMatch";
27
+ protected readonly emptyItemValue = false;
28
+ defaultValue: boolean;
60
29
  constructor(controller: Controller, args: EveryInstance, dataContext: PropertyDataContext);
61
30
  createState(): {
62
31
  matchCount: RecordBoundState<number>;
@@ -64,14 +33,11 @@ export declare class PropertyEveryHandle implements DataBasedComputation {
64
33
  isItemMatch: RecordBoundState<boolean>;
65
34
  };
66
35
  getInitialValue(): boolean;
67
- compute({ _current, ...dataDeps }: {
68
- _current: any;
69
- [key: string]: any;
70
- }): Promise<boolean>;
71
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
72
- incrementalCompute(lastValue: boolean, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
36
+ protected computeItemValue(relatedItem: Record<string, unknown>, dataDeps: {
73
37
  [key: string]: unknown;
74
- }): Promise<boolean | ComputationResult>;
38
+ }): boolean;
39
+ protected applyDelta(hostRecord: Record<string, unknown>, newValue: boolean | null, oldValue: boolean | null, presenceDelta: 1 | 0 | -1): Promise<boolean>;
40
+ protected persistFullResult(hostRecord: Record<string, unknown>, values: boolean[]): Promise<boolean>;
75
41
  }
76
42
  export declare const EveryHandles: (typeof GlobalEveryHandle | typeof PropertyEveryHandle)[];
77
43
  //# sourceMappingURL=Every.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Every.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Every.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Every.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAE7G,qBAAa,iBAAkB,SAAQ,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClG,MAAM,CAAC,eAAe,eAAQ;IAC9B,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,iBAAgB;IAC/C,SAAS,CAAC,QAAQ,CAAC,cAAc,SAAQ;IACzC,YAAY,EAAE,OAAO,CAAA;gBAET,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW;IAKjF,WAAW;;;;IAOX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO;cAI1F,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;cAkB3G,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAOzE;AAED,qBAAa,mBAAoB,SAAQ,iCAAiC,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IACvG,MAAM,CAAC,eAAe,eAAQ;IAC9B,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,iBAAgB;IAC/C,SAAS,CAAC,QAAQ,CAAC,cAAc,SAAQ;IACzC,YAAY,EAAE,OAAO,CAAA;gBAET,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB;IAKzF,WAAW;;;;;IAQX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO;cAI/F,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;cAShJ,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ9G;AAGD,eAAO,MAAM,YAAY,2DAA2C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { StateMachine, StateMachineInstance, StateNodeInstance } from '../../core';
2
2
  import { Controller } from '../Controller.js';
3
- import { RecordMutationEvent } from '../System.js';
3
+ import { EntityIdRef, RecordMutationEvent } from '../System.js';
4
4
  import { DataContext, PropertyDataContext, EventBasedComputation, EventDep, GlobalBoundState, RecordBoundState } from './Computation.js';
5
5
  import { EtityMutationEvent } from '../Scheduler.js';
6
6
  import { TransitionFinder } from './TransitionFinder.js';
@@ -48,7 +48,7 @@ export declare class PropertyStateMachineHandle implements EventBasedComputation
48
48
  currentState: RecordBoundState<string>;
49
49
  };
50
50
  getInitialValue(initialRecord: any): Promise<unknown>;
51
- computeDirtyRecords(mutationEvent: RecordMutationEvent): Promise<any[]>;
51
+ computeDirtyRecords(mutationEvent: RecordMutationEvent): Promise<EntityIdRef[]>;
52
52
  incrementalCompute(lastValue: string, mutationEvent: RecordMutationEvent, dirtyRecord: any): Promise<unknown>;
53
53
  createStateData(state: StateNodeInstance): Promise<{
54
54
  [x: string]: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StateMachine.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/StateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAa,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAe,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAqB,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQzD,qBAAa,wBAAyB,YAAW,qBAAqB;IAS/C,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,oBAAoB;IAAS,WAAW,EAAE,WAAW;IAR7G,MAAM,CAAC,eAAe,sBAAe;IACrC,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,KAAK,EAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAA;IAC9C,YAAY,EAAE,OAAO,CAAQ;IAC7B,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAK;IACzC,gBAAgB,EAAE,OAAO,CAAO;IAChC,YAAY,EAAE,iBAAiB,CAAA;gBACZ,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,oBAAoB,EAAS,WAAW,EAAE,WAAW;IAe7G,WAAW;;;IAKL,eAAe,CAAC,KAAK,EAAC,GAAG;IAGzB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG;CAWlG;AAGD,qBAAa,0BAA2B,YAAW,qBAAqB;IAUjD,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,oBAAoB;IAT5E,MAAM,CAAC,eAAe,sBAAe;IACrC,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,KAAK,EAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAA;IACpE,YAAY,EAAE,OAAO,CAAQ;IAC7B,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAK;IACzC,YAAY,EAAE,iBAAiB,CAAA;IAC/B,WAAW,EAAE,mBAAmB,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAO;gBACb,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW;IAuBtG,WAAW;;;IAKL,eAAe,CAAC,aAAa,EAAC,GAAG;IAejC,mBAAmB,CAAC,aAAa,EAAE,mBAAmB;IAqBtD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG;IAa1F,eAAe,CAAC,KAAK,EAAE,iBAAiB;;;CAKjD;AAED,eAAO,MAAM,eAAe,mBAG1B,CAAA;AAEF,eAAO,MAAM,iBAAiB,mBAG5B,CAAA;AAEF,eAAO,MAAM,aAAa,mBAGxB,CAAA;AAGF,eAAO,MAAM,mBAAmB,yEAAyD,CAAC"}
1
+ {"version":3,"file":"StateMachine.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/StateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,oBAAoB,EAAa,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAqB,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAyHzD,qBAAa,wBAAyB,YAAW,qBAAqB;IAS/C,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,oBAAoB;IAAS,WAAW,EAAE,WAAW;IAR7G,MAAM,CAAC,eAAe,sBAAe;IACrC,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,KAAK,EAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAA;IAC9C,YAAY,EAAE,OAAO,CAAQ;IAC7B,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAK;IACzC,gBAAgB,EAAE,OAAO,CAAO;IAChC,YAAY,EAAE,iBAAiB,CAAA;gBACZ,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,oBAAoB,EAAS,WAAW,EAAE,WAAW;IAgB7G,WAAW;;;IAKL,eAAe,CAAC,KAAK,EAAC,GAAG;IAGzB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG;CAWlG;AAGD,qBAAa,0BAA2B,YAAW,qBAAqB;IAUjD,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,oBAAoB;IAT5E,MAAM,CAAC,eAAe,sBAAe;IACrC,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,KAAK,EAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAC,CAAA;IACpE,YAAY,EAAE,OAAO,CAAQ;IAC7B,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAK;IACzC,YAAY,EAAE,iBAAiB,CAAA;IAC/B,WAAW,EAAE,mBAAmB,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAO;gBACb,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW;IAwBtG,WAAW;;;IAKL,eAAe,CAAC,aAAa,EAAC,GAAG;IAejC,mBAAmB,CAAC,aAAa,EAAE,mBAAmB;IA2BtD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG;IAa1F,eAAe,CAAC,KAAK,EAAE,iBAAiB;;;CAKjD;AAED,eAAO,MAAM,eAAe,mBAG1B,CAAA;AAEF,eAAO,MAAM,iBAAiB,mBAG5B,CAAA;AAEF,eAAO,MAAM,aAAa,mBAGxB,CAAA;AAGF,eAAO,MAAM,mBAAmB,yEAAyD,CAAC"}
@@ -1,21 +1,12 @@
1
- import { DataContext, PropertyDataContext, RecordBoundState, GlobalBoundState, ComputationResult, DataBasedComputation, DataDep, DataDepEventContext, IncrementalPlan } from './Computation.js';
2
- import { Summation, SummationInstance, EntityInstance, RelationInstance } from '../../core';
1
+ import { Summation, SummationInstance } from '../../core';
3
2
  import { Controller } from '../Controller.js';
4
- import { EtityMutationEvent } from '../Scheduler.js';
5
- import { AttributeQueryData } from '../../storage';
6
- export declare class GlobalSumHandle implements DataBasedComputation {
7
- controller: Controller;
8
- args: SummationInstance;
9
- dataContext: DataContext;
3
+ import { DataContext, GlobalBoundState, PropertyDataContext, RecordBoundState } from './Computation.js';
4
+ import { GlobalRecordsAggregationHandle, PropertyRelationAggregationHandle } from './aggregationTemplate.js';
5
+ export declare class GlobalSumHandle extends GlobalRecordsAggregationHandle<number, number, SummationInstance> {
10
6
  static computationType: typeof Summation;
11
7
  static contextType: "global";
12
- state: ReturnType<typeof this.createState>;
13
- useLastValue: boolean;
14
- dataDeps: {
15
- [key: string]: DataDep;
16
- };
17
- primaryDataDepKeys: string[];
18
- record: (EntityInstance | RelationInstance);
8
+ protected readonly itemStateKey = "itemValue";
9
+ protected readonly emptyItemValue = 0;
19
10
  sumFieldPath: string[];
20
11
  constructor(controller: Controller, args: SummationInstance, dataContext: DataContext);
21
12
  createState(): {
@@ -23,35 +14,15 @@ export declare class GlobalSumHandle implements DataBasedComputation {
23
14
  itemValue: RecordBoundState<number>;
24
15
  };
25
16
  getInitialValue(): number;
26
- resolveSumField(record: any, sumFieldPath?: string[]): any;
27
- compute({ main: records }: {
28
- main: any[];
29
- }): Promise<number>;
30
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
31
- incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
32
- [key: string]: unknown;
33
- }): Promise<number | ComputationResult>;
17
+ protected computeItemValue(record: Record<string, unknown>): number;
18
+ protected applyDelta(newValue: number | null, oldValue: number | null): Promise<number>;
19
+ protected persistFullResult(values: number[]): Promise<number>;
34
20
  }
35
- export declare class PropertySumHandle implements DataBasedComputation {
36
- controller: Controller;
37
- args: SummationInstance;
38
- dataContext: PropertyDataContext;
21
+ export declare class PropertySumHandle extends PropertyRelationAggregationHandle<number, number, SummationInstance> {
39
22
  static computationType: typeof Summation;
40
23
  static contextType: "property";
41
- state: ReturnType<typeof this.createState>;
42
- useLastValue: boolean;
43
- dataDeps: {
44
- [key: string]: DataDep;
45
- };
46
- primaryDataDepKeys: string[];
47
- relationAttr: string;
48
- relatedRecordName: string;
49
- isSource: boolean;
50
- relation: RelationInstance;
51
- property: string;
52
- reverseProperty: string;
53
- relationAttributeQuery: AttributeQueryData;
54
- relatedAttributeQuery: AttributeQueryData;
24
+ protected readonly itemStateKey = "itemResult";
25
+ protected readonly emptyItemValue = 0;
55
26
  sumFieldPath: string[];
56
27
  constructor(controller: Controller, args: SummationInstance, dataContext: PropertyDataContext);
57
28
  createState(): {
@@ -59,14 +30,9 @@ export declare class PropertySumHandle implements DataBasedComputation {
59
30
  itemResult: RecordBoundState<number>;
60
31
  };
61
32
  getInitialValue(): number;
62
- resolveSumField(record: any, sumFieldPath?: string[]): any;
63
- compute({ _current }: {
64
- _current: any;
65
- }): Promise<number>;
66
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
67
- incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
68
- [key: string]: unknown;
69
- }): Promise<number | ComputationResult>;
33
+ protected computeItemValue(relatedItem: Record<string, unknown>): number;
34
+ protected applyDelta(hostRecord: Record<string, unknown>, newValue: number | null, oldValue: number | null): Promise<number>;
35
+ protected persistFullResult(hostRecord: Record<string, unknown>, values: number[]): Promise<number>;
70
36
  }
71
37
  export declare const SummationHandles: (typeof GlobalSumHandle | typeof PropertySumHandle)[];
72
38
  //# sourceMappingURL=Summation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Summation.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Summation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,EAA6B,iBAAiB,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,EAAmC,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACtM,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAY,kBAAkB,EAAe,MAAM,UAAU,CAAC;AAIrE,qBAAa,eAAgB,YAAW,oBAAoB;IASrC,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,iBAAiB;IAAS,WAAW,EAAE,WAAW;IAR1G,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,KAAK,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,YAAY,EAAE,OAAO,CAAQ;IAC7B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,kBAAkB,WAAW;IAC7B,MAAM,EAAE,CAAC,cAAc,GAAC,gBAAgB,CAAC,CAAA;IACzC,YAAY,EAAE,MAAM,EAAE,CAAA;gBACH,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,iBAAiB,EAAS,WAAW,EAAE,WAAW;IAwB1G,WAAW;;;;IAOX,eAAe;IAIf,eAAe,CAAC,MAAM,EAAC,GAAG,EAAE,YAAY,WAAoB;IAQtD,OAAO,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAY9D,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;IAItG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,GAAC,iBAAiB,CAAC;CA4BrK;AAED,qBAAa,iBAAkB,YAAW,oBAAoB;IAiBvC,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,iBAAiB;IAAS,WAAW,EAAE,mBAAmB;IAhBlH,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,KAAK,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,YAAY,EAAE,OAAO,CAAQ;IAC7B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,kBAAkB,WAAe;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,kBAAkB,CAAA;IAC1C,qBAAqB,EAAE,kBAAkB,CAAA;IACzC,YAAY,EAAE,MAAM,EAAE,CAAA;gBAEH,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,iBAAiB,EAAS,WAAW,EAAE,mBAAmB;IAoClH,WAAW;;;;IAOX,eAAe;IAGf,eAAe,CAAC,MAAM,EAAC,GAAG,EAAE,YAAY,WAAoB;IAStD,OAAO,CAAC,EAAC,QAAQ,EAAC,EAAE;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;IAItG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,GAAC,iBAAiB,CAAC;CAyErK;AAGD,eAAO,MAAM,gBAAgB,uDAAuC,CAAC"}
1
+ {"version":3,"file":"Summation.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Summation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAA6B,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAaxI,qBAAa,eAAgB,SAAQ,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;IAClG,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,eAAc;IAC7C,SAAS,CAAC,QAAQ,CAAC,cAAc,KAAI;IACrC,YAAY,EAAE,MAAM,EAAE,CAAA;gBAEV,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW;IAKrF,WAAW;;;;IAOX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;cAInD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;cAI7E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAKvE;AAED,qBAAa,iBAAkB,SAAQ,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;IACvG,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,gBAAe;IAC9C,SAAS,CAAC,QAAQ,CAAC,cAAc,KAAI;IACrC,YAAY,EAAE,MAAM,EAAE,CAAA;gBAEV,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB;IAK7F,WAAW;;;;IAOX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;cAIxD,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;cAIlH,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAK5G;AAGD,eAAO,MAAM,gBAAgB,uDAAuC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAqB,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,qBAAa,sBAAuB,YAAW,oBAAoB;IAS5C,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,iBAAiB;IAAS,WAAW,EAAE,WAAW;IAR1G,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,kCAAkC;IACpD,iBAAiB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IACvD,KAAK,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,YAAY,EAAE,OAAO,CAAQ;IAC7B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,kBAAkB,WAAc;IAChC,SAAS,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAA;gBAClB,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,iBAAiB,EAAS,WAAW,EAAE,WAAW;IAiB1G,WAAW;;;;IAUX,eAAe;IAIT,OAAO,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB7D,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAItE,uBAAuB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;IAOxJ,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;IAStG,iCAAiC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;IAmB5J,gCAAgC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;CAsFpK;AAID,eAAO,MAAM,gBAAgB,mCAA2B,CAAC"}
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/Transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAqB,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,qBAAa,sBAAuB,YAAW,oBAAoB;IAS5C,UAAU,EAAE,UAAU;IAAS,IAAI,EAAE,iBAAiB;IAAS,WAAW,EAAE,WAAW;IAR1G,MAAM,CAAC,eAAe,mBAAY;IAClC,MAAM,CAAC,WAAW,kCAAkC;IACpD,iBAAiB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IACvD,KAAK,EAAG,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,YAAY,EAAE,OAAO,CAAQ;IAC7B,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAK;IACvC,kBAAkB,WAAc;IAChC,SAAS,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAA;gBAClB,UAAU,EAAE,UAAU,EAAS,IAAI,EAAE,iBAAiB,EAAS,WAAW,EAAE,WAAW;IAiB1G,WAAW;;;;IAUX,eAAe;IAIT,OAAO,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB7D,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAItE,uBAAuB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;IAOxJ,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe;IAStG,iCAAiC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;IAmB5J,gCAAgC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,GAAC,SAAS,CAAC;CAwFpK;AAID,eAAO,MAAM,gBAAgB,mCAA2B,CAAC"}
@@ -1,82 +1,40 @@
1
- import { DataContext, PropertyDataContext, ComputationResult, DataDep, DataDepEventContext, IncrementalPlan, RecordBoundState, GlobalBoundState, DataBasedComputation } from './Computation.js';
2
- import { WeightedSummation, WeightedSummationInstance, EntityInstance, RelationInstance } from '../../core';
1
+ import { WeightedSummation, WeightedSummationInstance } from '../../core';
3
2
  import { Controller } from '../Controller.js';
4
- import { EtityMutationEvent } from '../Scheduler.js';
5
- import { AttributeQueryData } from '../../storage';
6
- export declare class GlobalWeightedSummationHandle implements DataBasedComputation {
7
- controller: Controller;
8
- args: WeightedSummationInstance;
9
- dataContext: DataContext;
3
+ import { DataContext, GlobalBoundState, PropertyDataContext, RecordBoundState } from './Computation.js';
4
+ import { GlobalRecordsAggregationHandle, PropertyRelationAggregationHandle } from './aggregationTemplate.js';
5
+ export declare class GlobalWeightedSummationHandle extends GlobalRecordsAggregationHandle<number, number, WeightedSummationInstance> {
10
6
  static computationType: typeof WeightedSummation;
11
7
  static contextType: "global";
12
- matchRecordToWeight: (this: Controller, item: any, dataDeps?: {
13
- [key: string]: unknown;
14
- }) => {
15
- weight: number;
16
- value: number;
17
- };
18
- state: ReturnType<typeof this.createState>;
19
- useLastValue: boolean;
20
- dataDeps: {
21
- [key: string]: DataDep;
22
- };
23
- primaryDataDepKeys: string[];
24
- record: (EntityInstance | RelationInstance);
8
+ protected readonly itemStateKey = "itemResult";
9
+ protected readonly emptyItemValue = 0;
25
10
  constructor(controller: Controller, args: WeightedSummationInstance, dataContext: DataContext);
26
- getInitialValue(): number;
27
11
  createState(): {
28
12
  total: GlobalBoundState<number>;
29
13
  itemResult: RecordBoundState<number>;
30
14
  };
31
- compute({ main: records, ...dataDeps }: {
32
- main: any[];
33
- [key: string]: any;
34
- }): Promise<number>;
35
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
36
- incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent, _record: any, dataDeps: {
15
+ getInitialValue(): number;
16
+ protected computeItemValue(record: Record<string, unknown>, dataDeps: {
37
17
  [key: string]: unknown;
38
- }): Promise<number | ComputationResult>;
18
+ }): number;
19
+ protected applyDelta(newValue: number | null, oldValue: number | null): Promise<number>;
20
+ protected persistFullResult(values: number[]): Promise<number>;
39
21
  }
40
- export declare class PropertyWeightedSummationHandle implements DataBasedComputation {
41
- controller: Controller;
42
- args: WeightedSummationInstance;
43
- dataContext: PropertyDataContext;
22
+ export declare class PropertyWeightedSummationHandle extends PropertyRelationAggregationHandle<number, number, WeightedSummationInstance> {
44
23
  static computationType: typeof WeightedSummation;
45
24
  static contextType: "property";
46
- matchRecordToWeight: (this: Controller, item: any, dataDeps: {
47
- [key: string]: unknown;
48
- }) => {
49
- weight: number;
50
- value: number;
51
- };
52
- state: ReturnType<typeof this.createState>;
53
- useLastValue: boolean;
54
- dataDeps: {
55
- [key: string]: DataDep;
56
- };
57
- primaryDataDepKeys: string[];
58
- relationAttr: string;
59
- relatedRecordName: string;
60
- isSource: boolean;
61
- relation: RelationInstance;
62
- property: string;
63
- reverseProperty: string;
64
- relationAttributeQuery: AttributeQueryData;
65
- relatedAttributeQuery: AttributeQueryData;
25
+ protected readonly itemStateKey = "itemResult";
26
+ protected readonly emptyItemValue = 0;
66
27
  constructor(controller: Controller, args: WeightedSummationInstance, dataContext: PropertyDataContext);
67
28
  createState(): {
68
29
  total: RecordBoundState<number>;
69
30
  itemResult: RecordBoundState<number>;
70
31
  };
71
32
  getInitialValue(): number;
72
- compute({ _current, ...dataDeps }: {
73
- _current: any;
74
- [key: string]: any;
75
- }): Promise<number>;
76
- planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
77
- incrementalCompute(lastValue: number, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
33
+ protected computeItemValue(relatedItem: Record<string, unknown>, dataDeps: {
78
34
  [key: string]: unknown;
79
- }): Promise<number | ComputationResult>;
35
+ }): number;
36
+ protected applyDelta(hostRecord: Record<string, unknown>, newValue: number | null, oldValue: number | null): Promise<number>;
37
+ protected persistFullResult(hostRecord: Record<string, unknown>, values: number[]): Promise<number>;
80
38
  }
81
39
  export declare const WeightedSummationHandles: (typeof GlobalWeightedSummationHandle | typeof PropertyWeightedSummationHandle)[];
82
40
  //# sourceMappingURL=WeightedSummation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WeightedSummation.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/WeightedSummation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WeightedSummation.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/WeightedSummation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAU7G,qBAAa,6BAA8B,SAAQ,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,yBAAyB,CAAC;IACxH,MAAM,CAAC,eAAe,2BAAoB;IAC1C,MAAM,CAAC,WAAW,EAAG,QAAQ,CAAS;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,gBAAe;IAC9C,SAAS,CAAC,QAAQ,CAAC,cAAc,KAAI;gBAEzB,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW;IAI7F,WAAW;;;;IAOX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,MAAM;cAIzF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;cAI7E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAKvE;AAED,qBAAa,+BAAgC,SAAQ,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,yBAAyB,CAAC;IAC7H,MAAM,CAAC,eAAe,2BAAoB;IAC1C,MAAM,CAAC,WAAW,EAAG,UAAU,CAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,gBAAe;IAC9C,SAAS,CAAC,QAAQ,CAAC,cAAc,KAAI;gBAEzB,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,mBAAmB;IAIrG,WAAW;;;;IAOX,eAAe;IAIf,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,MAAM;cAI9F,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;cAIlH,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAK5G;AAGD,eAAO,MAAM,wBAAwB,mFAAmE,CAAC"}
@@ -0,0 +1,163 @@
1
+ import { EntityInstance, RelationInstance } from '../../core';
2
+ import { Controller } from '../Controller.js';
3
+ import { AttributeQueryData } from '../../storage';
4
+ import { ComputationResult, DataBasedComputation, DataContext, DataDep, DataDepEventContext, GlobalBoundState, IncrementalPlan, PropertyDataContext, RecordBoundState } from './Computation.js';
5
+ import { EtityMutationEvent } from '../ComputationSourceMap.js';
6
+ /**
7
+ * 六个内置聚合(Count / Summation / Average / Every / Any / WeightedSummation)的共享增量模板。
8
+ *
9
+ * 背景:六个聚合的 global / property 两个 handle 此前各自手写「事件守卫 → 拉全记录 →
10
+ * 逐项贡献状态维护 → 聚合增量应用」的骨架,历轮 review 累计 15+ 个缺陷全部源于
11
+ * 六份骨架的手工同步漂移(create 路径用局部事件 record、update 不注册监听、
12
+ * 负值无守卫、空集合语义、`&` 挂载不一致……)。模板把骨架收敛为单一实现:
13
+ *
14
+ * - 统一的 mutation 事件守卫(recordName / relatedAttribute 形态检查);
15
+ * - create/update 一律先按 attributeQuery 拉全记录再计算贡献(增量与全量重算同一取数口径);
16
+ * - 统一的「记录已不可见 → fullRecompute」竞态防御与 `Atomic replace target not found` 防御;
17
+ * - 统一的逐项贡献绑定状态维护(delete/成员资格退出时复位,避免重入读到陈旧值);
18
+ * - 统一的负值守卫入口(计数类聚合状态为负说明状态与事件流失步,必须 fail-fast)。
19
+ *
20
+ * 各聚合只声明三件事:单条记录的贡献值(computeItemValue)、一次贡献变化如何应用到
21
+ * 聚合状态(applyDelta)、全量重算如何落盘(persistFullResult)。绑定状态的名字与形状
22
+ * 由各 handle 自持(createState),保证与既有部署的状态列/dict key 兼容。
23
+ */
24
+ export type AggregationItemValue = number | boolean;
25
+ export type AggregationArgs = {
26
+ record?: EntityInstance | RelationInstance;
27
+ property?: string;
28
+ direction?: string;
29
+ attributeQuery?: AttributeQueryData;
30
+ callback?: Function;
31
+ dataDeps?: {
32
+ [key: string]: unknown;
33
+ };
34
+ };
35
+ export type AggregationOptions = {
36
+ /** 用于错误信息与校验定位,如 'Count' */
37
+ computationName: string;
38
+ /** callback 是必填(Every/Any/WeightedSummation) */
39
+ requireCallback?: boolean;
40
+ /** attributeQuery 必须至少声明一个字段(Summation/Average:聚合字段来自 attributeQuery) */
41
+ requireAttributeQueryField?: boolean;
42
+ /** 允许 args.record 直接指定 relation(Count 的历史用法) */
43
+ allowRecordFallback?: boolean;
44
+ /** 宿主侧必须是 x:n 关系(Every/Any:对单值关系做全称/存在量词没有意义) */
45
+ requireXToMany?: boolean;
46
+ };
47
+ /** 从 attributeQuery 解析聚合字段路径(Summation/Average 共用) */
48
+ export declare function parseAggregationFieldPath(attributeQuery: AttributeQueryData): string[];
49
+ /**
50
+ * Global(records 源)聚合模板。
51
+ */
52
+ export declare abstract class GlobalRecordsAggregationHandle<V extends AggregationItemValue, TResult, TArgs extends AggregationArgs = AggregationArgs> implements DataBasedComputation {
53
+ controller: Controller;
54
+ args: TArgs;
55
+ dataContext: DataContext;
56
+ state: any;
57
+ useLastValue: boolean;
58
+ dataDeps: {
59
+ [key: string]: DataDep;
60
+ };
61
+ primaryDataDepKeys: string[];
62
+ record: EntityInstance | RelationInstance;
63
+ callback?: (this: Controller, item: any, dataDeps?: {
64
+ [key: string]: unknown;
65
+ }) => any;
66
+ protected readonly options: AggregationOptions;
67
+ constructor(controller: Controller, args: TArgs, dataContext: DataContext, options: AggregationOptions);
68
+ /** this.state 里逐项贡献绑定状态的 key */
69
+ protected abstract readonly itemStateKey: string;
70
+ /** 贡献复位值(delete/成员资格退出时写回,防重入读到陈旧值) */
71
+ protected abstract readonly emptyItemValue: V;
72
+ /** 计算单条记录的贡献值。record 已按 attributeQuery 拉全(与全量重算同一口径)。 */
73
+ protected abstract computeItemValue(record: Record<string, unknown>, dataDeps: {
74
+ [key: string]: unknown;
75
+ }): V;
76
+ /** 把一次贡献变化应用到聚合状态并返回计算结果。presenceDelta:create=1 / update=0 / delete=-1。 */
77
+ protected abstract applyDelta(newValue: V | null, oldValue: V | null, presenceDelta: 1 | 0 | -1): Promise<TResult>;
78
+ /** 全量重算:把所有贡献写入聚合状态并返回计算结果。 */
79
+ protected abstract persistFullResult(values: V[]): Promise<TResult>;
80
+ /** 增量 create/update 是否需要按 attributeQuery 拉全记录。默认 true;仅 Count 无 callback 时可跳过。 */
81
+ protected requiresItemFetch(): boolean;
82
+ abstract createState(): {
83
+ [key: string]: RecordBoundState<unknown> | GlobalBoundState<unknown>;
84
+ };
85
+ abstract getInitialValue(): unknown;
86
+ protected get itemState(): RecordBoundState<V>;
87
+ protected assertNonNegative(name: string, value: number): void;
88
+ protected replaceItemState(record: Record<string, unknown>, value: V): Promise<{
89
+ oldValue: V | null;
90
+ } | ComputationResult>;
91
+ compute({ main: records, ...dataDeps }: {
92
+ main: any[];
93
+ [key: string]: any;
94
+ }): Promise<TResult>;
95
+ planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
96
+ incrementalCompute(lastValue: unknown, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
97
+ [key: string]: unknown;
98
+ }): Promise<TResult | ComputationResult>;
99
+ }
100
+ /**
101
+ * Property(关系源)聚合模板。
102
+ * 宿主实体的属性 = 对关联关系集合的聚合。增量事件的形态是宿主 update 事件 +
103
+ * relatedAttribute 定位到关系/关联实体上的 create/delete/update。
104
+ */
105
+ export declare abstract class PropertyRelationAggregationHandle<V extends AggregationItemValue, TResult, TArgs extends AggregationArgs = AggregationArgs> implements DataBasedComputation {
106
+ controller: Controller;
107
+ args: TArgs;
108
+ dataContext: PropertyDataContext;
109
+ state: any;
110
+ useLastValue: boolean;
111
+ dataDeps: {
112
+ [key: string]: DataDep;
113
+ };
114
+ primaryDataDepKeys: string[];
115
+ relation: RelationInstance;
116
+ isSource: boolean;
117
+ relationAttr: string;
118
+ relatedRecordName: string;
119
+ property: string;
120
+ reverseProperty: string;
121
+ relationAttributeQuery: AttributeQueryData;
122
+ relatedAttributeQuery: AttributeQueryData;
123
+ callback?: (this: Controller, item: any, dataDeps?: {
124
+ [key: string]: unknown;
125
+ }) => any;
126
+ protected readonly options: AggregationOptions;
127
+ constructor(controller: Controller, args: TArgs, dataContext: PropertyDataContext, options: AggregationOptions);
128
+ /**
129
+ * this.state 里逐项贡献绑定状态的 key;null 表示不维护逐项状态
130
+ * (Count 无 callback 时贡献恒为「存在即 1」,无需状态)。
131
+ */
132
+ protected abstract readonly itemStateKey: string | null;
133
+ protected abstract readonly emptyItemValue: V;
134
+ /** 无逐项状态时,「存在性」贡献值(Count 无 callback:true)。 */
135
+ protected presenceItemValue(): V;
136
+ /** 计算单条关联记录的贡献值。relatedItem 已挂 `&`(关系记录,按 relationAttributeQuery 拉全)。 */
137
+ protected abstract computeItemValue(relatedItem: Record<string, unknown>, dataDeps: {
138
+ [key: string]: unknown;
139
+ }): V;
140
+ /** 把一次贡献变化应用到宿主聚合状态并返回计算结果。 */
141
+ protected abstract applyDelta(hostRecord: Record<string, unknown>, newValue: V | null, oldValue: V | null, presenceDelta: 1 | 0 | -1): Promise<TResult>;
142
+ /** 全量重算:把所有贡献写入宿主聚合状态并返回计算结果。 */
143
+ protected abstract persistFullResult(hostRecord: Record<string, unknown>, values: V[]): Promise<TResult>;
144
+ abstract createState(): {
145
+ [key: string]: RecordBoundState<unknown> | GlobalBoundState<unknown>;
146
+ };
147
+ abstract getInitialValue(): unknown;
148
+ protected get itemState(): RecordBoundState<V> | null;
149
+ protected get relationSide(): 'source' | 'target';
150
+ protected assertNonNegative(name: string, value: number): void;
151
+ protected replaceItemState(relationRecord: Record<string, unknown>, value: V): Promise<{
152
+ oldValue: V | null;
153
+ } | ComputationResult>;
154
+ compute({ _current, ...dataDeps }: {
155
+ _current: any;
156
+ [key: string]: any;
157
+ }): Promise<TResult>;
158
+ planIncremental(_event: EtityMutationEvent, _record: unknown, context: DataDepEventContext): IncrementalPlan;
159
+ incrementalCompute(lastValue: unknown, mutationEvent: EtityMutationEvent, record: any, dataDeps: {
160
+ [key: string]: unknown;
161
+ }): Promise<TResult | ComputationResult>;
162
+ }
163
+ //# sourceMappingURL=aggregationTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregationTemplate.d.ts","sourceRoot":"","sources":["../../../src/runtime/computations/aggregationTemplate.ts"],"names":[],"mappings":"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"}