oak-domain 3.0.3 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/lib/actions/action.d.ts +16 -16
  2. package/lib/actions/action.js +17 -17
  3. package/lib/actions/relation.d.ts +5 -5
  4. package/lib/actions/relation.js +25 -38
  5. package/lib/base-app-domain/ActionAuth/Schema.d.ts +186 -160
  6. package/lib/base-app-domain/ActionAuth/Storage.js +39 -42
  7. package/lib/base-app-domain/ActionDefDict.d.ts +8 -9
  8. package/lib/base-app-domain/ActionDefDict.js +9 -11
  9. package/lib/base-app-domain/EntityDict.d.ts +28 -24
  10. package/lib/base-app-domain/I18n/Schema.d.ts +129 -129
  11. package/lib/base-app-domain/I18n/Schema.js +2 -2
  12. package/lib/base-app-domain/I18n/Storage.d.ts +3 -3
  13. package/lib/base-app-domain/I18n/Storage.js +59 -59
  14. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  15. package/lib/base-app-domain/Modi/Action.js +14 -14
  16. package/lib/base-app-domain/Modi/Schema.d.ts +136 -136
  17. package/lib/base-app-domain/Modi/Storage.js +63 -63
  18. package/lib/base-app-domain/ModiEntity/Schema.d.ts +384 -311
  19. package/lib/base-app-domain/ModiEntity/Storage.js +30 -30
  20. package/lib/base-app-domain/Oper/Schema.d.ts +153 -152
  21. package/lib/base-app-domain/Oper/Storage.js +38 -38
  22. package/lib/base-app-domain/OperEntity/Schema.d.ts +373 -300
  23. package/lib/base-app-domain/OperEntity/Storage.js +30 -30
  24. package/lib/base-app-domain/Path/Schema.d.ts +149 -0
  25. package/lib/base-app-domain/Path/Schema.js +2 -0
  26. package/lib/base-app-domain/Path/Storage.d.ts +3 -0
  27. package/lib/base-app-domain/Path/Storage.js +54 -0
  28. package/lib/base-app-domain/Relation/Schema.d.ts +188 -188
  29. package/lib/base-app-domain/Relation/Storage.js +54 -54
  30. package/lib/base-app-domain/Relation.d.ts +2 -10
  31. package/lib/base-app-domain/Relation.js +4 -10
  32. package/lib/base-app-domain/RelationAuth/Schema.d.ts +214 -180
  33. package/lib/base-app-domain/RelationAuth/Storage.js +44 -46
  34. package/lib/base-app-domain/Storage.js +31 -27
  35. package/lib/base-app-domain/User/Action.d.ts +10 -10
  36. package/lib/base-app-domain/User/Action.js +12 -12
  37. package/lib/base-app-domain/User/Schema.d.ts +210 -197
  38. package/lib/base-app-domain/User/Storage.js +33 -33
  39. package/lib/base-app-domain/UserEntityClaim/Schema.d.ts +264 -0
  40. package/lib/base-app-domain/UserEntityClaim/Schema.js +2 -0
  41. package/lib/base-app-domain/UserEntityClaim/Storage.d.ts +3 -0
  42. package/lib/base-app-domain/UserEntityClaim/Storage.js +37 -0
  43. package/lib/base-app-domain/UserEntityGrant/Action.d.ts +5 -5
  44. package/lib/base-app-domain/UserEntityGrant/Action.js +5 -5
  45. package/lib/base-app-domain/UserEntityGrant/Schema.d.ts +131 -157
  46. package/lib/base-app-domain/UserEntityGrant/Storage.js +25 -29
  47. package/lib/base-app-domain/UserRelation/Schema.d.ts +208 -194
  48. package/lib/base-app-domain/UserRelation/Storage.js +56 -56
  49. package/lib/base-app-domain/_SubQuery.d.ts +142 -112
  50. package/lib/base-app-domain/index.d.ts +4 -4
  51. package/lib/base-app-domain/index.js +7 -7
  52. package/lib/checkers/index.d.ts +5 -5
  53. package/lib/checkers/index.js +13 -14
  54. package/lib/compiler/entities.d.ts +2 -0
  55. package/lib/compiler/entities.js +7 -0
  56. package/lib/compiler/env.d.ts +13 -14
  57. package/lib/compiler/env.js +45 -50
  58. package/lib/compiler/localeBuilder.d.ts +27 -22
  59. package/lib/compiler/localeBuilder.js +184 -169
  60. package/lib/compiler/schemalBuilder.d.ts +27 -11
  61. package/lib/compiler/schemalBuilder.js +3569 -3787
  62. package/lib/entities/ActionAuth.d.ts +10 -12
  63. package/lib/entities/ActionAuth.js +31 -29
  64. package/lib/entities/I18n.d.ts +9 -9
  65. package/lib/entities/I18n.js +36 -37
  66. package/lib/entities/Modi.js +49 -49
  67. package/lib/entities/ModiEntity.js +18 -18
  68. package/lib/entities/Oper.js +21 -21
  69. package/lib/entities/OperEntity.js +18 -18
  70. package/lib/entities/Path.d.ts +8 -0
  71. package/lib/entities/Path.js +35 -0
  72. package/lib/entities/Relation.d.ts +8 -8
  73. package/lib/entities/Relation.js +35 -35
  74. package/lib/entities/RelationAuth.d.ts +8 -8
  75. package/lib/entities/RelationAuth.js +34 -34
  76. package/lib/entities/User.js +31 -31
  77. package/lib/entities/UserEntityClaim.d.ts +13 -0
  78. package/lib/entities/UserEntityClaim.js +17 -0
  79. package/lib/entities/UserEntityGrant.d.ts +9 -8
  80. package/lib/entities/UserEntityGrant.js +15 -18
  81. package/lib/entities/UserRelation.d.ts +10 -10
  82. package/lib/entities/UserRelation.js +38 -38
  83. package/lib/index.d.ts +23 -0
  84. package/lib/index.js +37 -0
  85. package/lib/store/AsyncRowStore.d.ts +60 -58
  86. package/lib/store/AsyncRowStore.js +118 -190
  87. package/lib/store/CascadeStore.d.ts +104 -103
  88. package/lib/store/CascadeStore.js +1688 -2036
  89. package/lib/store/RelationAuth.d.ts +96 -103
  90. package/lib/store/RelationAuth.js +1336 -1492
  91. package/lib/store/SyncRowStore.d.ts +29 -29
  92. package/lib/store/SyncRowStore.js +50 -49
  93. package/lib/store/TriggerExecutor.d.ts +38 -31
  94. package/lib/store/TriggerExecutor.js +459 -532
  95. package/lib/store/actionAuth.d.ts +4 -4
  96. package/lib/store/actionAuth.js +25 -40
  97. package/lib/store/actionDef.d.ts +10 -10
  98. package/lib/store/actionDef.js +278 -353
  99. package/lib/store/checker.d.ts +26 -26
  100. package/lib/store/checker.js +487 -623
  101. package/lib/store/filter.d.ts +85 -123
  102. package/lib/store/filter.js +1651 -1761
  103. package/lib/store/modi.d.ts +13 -13
  104. package/lib/store/modi.js +254 -315
  105. package/lib/store/relation.d.ts +12 -12
  106. package/lib/store/relation.js +67 -67
  107. package/lib/timers/oper.d.ts +18 -18
  108. package/lib/timers/oper.js +57 -60
  109. package/lib/timers/vaccum.d.ts +20 -20
  110. package/lib/timers/vaccum.js +111 -176
  111. package/lib/triggers/index.d.ts +5 -5
  112. package/lib/triggers/index.js +8 -8
  113. package/lib/types/Action.d.ts +20 -20
  114. package/lib/types/AppLoader.d.ts +17 -11
  115. package/lib/types/AppLoader.js +10 -10
  116. package/lib/types/Aspect.d.ts +1 -3
  117. package/lib/types/Auth.d.ts +70 -74
  118. package/lib/types/Cluster.d.ts +5 -0
  119. package/lib/types/Cluster.js +2 -0
  120. package/lib/types/Connector.d.ts +38 -34
  121. package/lib/types/Connector.js +2 -9
  122. package/lib/types/DataType.d.ts +25 -24
  123. package/lib/types/DataType.js +6 -6
  124. package/lib/types/Demand.d.ts +88 -88
  125. package/lib/types/Demand.js +10 -10
  126. package/lib/types/Endpoint.d.ts +11 -11
  127. package/lib/types/Entity.d.ts +203 -198
  128. package/lib/types/Entity.js +15 -15
  129. package/lib/types/EntityDesc.d.ts +9 -8
  130. package/lib/types/EntityDesc.js +2 -2
  131. package/lib/types/Environment.d.ts +88 -57
  132. package/lib/types/Environment.js +2 -2
  133. package/lib/types/Exception.d.ts +147 -120
  134. package/lib/types/Exception.js +406 -406
  135. package/lib/types/Expression.d.ts +163 -163
  136. package/lib/types/Expression.js +397 -427
  137. package/lib/types/Geo.d.ts +18 -18
  138. package/lib/types/Locale.d.ts +25 -25
  139. package/lib/types/Logger.d.ts +6 -6
  140. package/lib/types/Polyfill.d.ts +24 -24
  141. package/lib/types/Port.d.ts +18 -18
  142. package/lib/types/RowStore.d.ts +18 -18
  143. package/lib/types/RowStore.js +33 -34
  144. package/lib/types/Storage.d.ts +58 -57
  145. package/lib/types/Style.d.ts +11 -11
  146. package/lib/types/Timer.d.ts +14 -14
  147. package/lib/types/Trigger.d.ts +124 -108
  148. package/lib/types/Trigger.js +58 -54
  149. package/lib/types/Watcher.d.ts +19 -19
  150. package/lib/types/index.d.ts +26 -24
  151. package/lib/types/index.js +29 -27
  152. package/lib/types/schema/DataTypes.d.ts +34 -34
  153. package/lib/utils/SimpleConnector.d.ts +64 -50
  154. package/lib/utils/SimpleConnector.js +206 -184
  155. package/lib/utils/assert.d.ts +5 -5
  156. package/lib/utils/assert.js +9 -9
  157. package/lib/utils/concurrent.d.ts +15 -15
  158. package/lib/utils/concurrent.js +63 -89
  159. package/lib/utils/date.js +18 -18
  160. package/lib/utils/{url.d.ts → domain.d.ts} +1 -1
  161. package/lib/utils/{url.js → domain.js} +11 -12
  162. package/lib/utils/geo.js +24 -24
  163. package/lib/utils/lodash.d.ts +24 -20
  164. package/lib/utils/lodash.js +46 -55
  165. package/lib/utils/mask.js +34 -35
  166. package/lib/utils/money.d.ts +6 -6
  167. package/lib/utils/money.js +51 -40
  168. package/lib/utils/projection.d.ts +4 -0
  169. package/lib/utils/projection.js +15 -0
  170. package/lib/utils/random/random.js +19 -24
  171. package/lib/utils/random/random.mp.js +14 -25
  172. package/lib/utils/random/random.native.d.ts +1 -0
  173. package/lib/utils/random/random.native.js +14 -0
  174. package/lib/utils/random/random.web.js +11 -17
  175. package/lib/utils/string.d.ts +28 -28
  176. package/lib/utils/string.js +69 -82
  177. package/lib/utils/url/index.d.ts +7 -0
  178. package/lib/utils/url/index.js +8 -0
  179. package/lib/utils/url/index.mp.d.ts +4 -0
  180. package/lib/utils/url/index.mp.js +8 -0
  181. package/lib/utils/url/index.native.d.ts +12 -0
  182. package/lib/utils/url/index.native.js +7 -0
  183. package/lib/utils/url/index.web.d.ts +12 -0
  184. package/lib/utils/url/index.web.js +7 -0
  185. package/lib/utils/uuid.d.ts +17 -17
  186. package/lib/utils/uuid.js +218 -257
  187. package/lib/utils/validator.d.ts +26 -25
  188. package/lib/utils/validator.js +131 -128
  189. package/lib/utils/version.js +21 -21
  190. package/package.json +51 -49
  191. package/src/entities/ActionAuth.ts +41 -41
  192. package/src/entities/I18n.ts +45 -46
  193. package/src/entities/Modi.ts +69 -69
  194. package/src/entities/ModiEntity.ts +26 -26
  195. package/src/entities/Oper.ts +32 -32
  196. package/src/entities/OperEntity.ts +27 -27
  197. package/src/entities/Path.ts +43 -0
  198. package/src/entities/Relation.ts +43 -43
  199. package/src/entities/RelationAuth.ts +44 -43
  200. package/src/entities/User.ts +48 -48
  201. package/src/entities/UserEntityClaim.ts +30 -0
  202. package/src/entities/UserEntityGrant.ts +24 -27
  203. package/src/entities/UserRelation.ts +50 -50
@@ -1,29 +1,29 @@
1
- import { EntityDict, RowStore, OperateOption, OperationResult, SelectOption, TxnOption, Context, AggregationResult } from "../types";
2
- export declare abstract class SyncContext<ED extends EntityDict> implements Context {
3
- rowStore: SyncRowStore<ED, this>;
4
- private uuid?;
5
- constructor(rowStore: SyncRowStore<ED, SyncContext<ED>>);
6
- abstract getCurrentUserId(allowUnloggedIn?: boolean): string | undefined;
7
- abstract isRoot(): boolean;
8
- abstract toString(): string;
9
- begin(option?: TxnOption): void;
10
- commit(): void;
11
- rollback(): void;
12
- getCurrentTxnId(): string | undefined;
13
- getSchema(): import("../types").StorageSchema<ED>;
14
- operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], option: OP): OperationResult<ED>;
15
- select<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], option: OP): Partial<ED[T]["Schema"]>[];
16
- aggregate<T extends keyof ED, OP extends SelectOption>(entity: T, aggregation: ED[T]['Aggregation'], option: OP): AggregationResult<ED[T]["Schema"]>;
17
- count<T extends keyof ED, OP extends SelectOption>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, option: OP): number;
18
- mergeMultipleResults(toBeMerged: OperationResult<ED>[]): OperationResult<ED>;
19
- abstract allowUserUpdate(): boolean;
20
- }
21
- export interface SyncRowStore<ED extends EntityDict, Cxt extends Context> extends RowStore<ED> {
22
- operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): OperationResult<ED>;
23
- select<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
24
- count<T extends keyof ED, OP extends SelectOption>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: Cxt, option: OP): number;
25
- aggregate<T extends keyof ED, OP extends SelectOption>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): AggregationResult<ED[T]['Schema']>;
26
- begin(option?: TxnOption): string;
27
- commit(txnId: string): void;
28
- rollback(txnId: string): void;
29
- }
1
+ import { EntityDict, RowStore, OperateOption, OperationResult, SelectOption, TxnOption, Context, AggregationResult } from "../types";
2
+ export declare abstract class SyncContext<ED extends EntityDict> implements Context {
3
+ rowStore: SyncRowStore<ED, this>;
4
+ private uuid?;
5
+ constructor(rowStore: SyncRowStore<ED, SyncContext<ED>>);
6
+ abstract getCurrentUserId(allowUnloggedIn?: boolean): string | undefined;
7
+ abstract isRoot(): boolean;
8
+ abstract toString(): string;
9
+ begin(option?: TxnOption): void;
10
+ commit(): void;
11
+ rollback(): void;
12
+ getCurrentTxnId(): string | undefined;
13
+ getSchema(): import("../types").StorageSchema<ED>;
14
+ operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], option: OP): OperationResult<ED>;
15
+ select<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], option: OP): Partial<ED[T]["Schema"]>[];
16
+ aggregate<T extends keyof ED, OP extends SelectOption>(entity: T, aggregation: ED[T]['Aggregation'], option: OP): AggregationResult<ED[T]["Schema"]>;
17
+ count<T extends keyof ED, OP extends SelectOption>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, option: OP): number;
18
+ mergeMultipleResults(toBeMerged: OperationResult<ED>[]): OperationResult<ED>;
19
+ abstract allowUserUpdate(): boolean;
20
+ }
21
+ export interface SyncRowStore<ED extends EntityDict, Cxt extends SyncContext<ED>> extends RowStore<ED> {
22
+ operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): OperationResult<ED>;
23
+ select<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
24
+ count<T extends keyof ED, OP extends SelectOption>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: Cxt, option: OP): number;
25
+ aggregate<T extends keyof ED, OP extends SelectOption>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): AggregationResult<ED[T]['Schema']>;
26
+ begin(option?: TxnOption): string;
27
+ commit(txnId: string): void;
28
+ rollback(txnId: string): void;
29
+ }
@@ -1,49 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SyncContext = void 0;
4
- var tslib_1 = require("tslib");
5
- var assert_1 = tslib_1.__importDefault(require("assert"));
6
- var SyncContext = /** @class */ (function () {
7
- function SyncContext(rowStore) {
8
- this.rowStore = rowStore;
9
- }
10
- SyncContext.prototype.begin = function (option) {
11
- (0, assert_1.default)(!this.uuid, '事务不允许嵌套');
12
- this.uuid = this.rowStore.begin(option);
13
- };
14
- SyncContext.prototype.commit = function () {
15
- (0, assert_1.default)(this.uuid);
16
- this.rowStore.commit(this.uuid);
17
- this.uuid = undefined;
18
- };
19
- SyncContext.prototype.rollback = function () {
20
- (0, assert_1.default)(this.uuid);
21
- this.rowStore.rollback(this.uuid);
22
- this.uuid = undefined;
23
- };
24
- SyncContext.prototype.getCurrentTxnId = function () {
25
- return this.uuid;
26
- };
27
- SyncContext.prototype.getSchema = function () {
28
- return this.rowStore.getSchema();
29
- };
30
- SyncContext.prototype.operate = function (entity, operation, option) {
31
- return this.rowStore.operate(entity, operation, this, option);
32
- };
33
- SyncContext.prototype.select = function (entity, selection, option) {
34
- return this.rowStore.select(entity, selection, this, option);
35
- };
36
- SyncContext.prototype.aggregate = function (entity, aggregation, option) {
37
- return this.rowStore.aggregate(entity, aggregation, this, option);
38
- };
39
- SyncContext.prototype.count = function (entity, selection, option) {
40
- return this.rowStore.count(entity, selection, this, option);
41
- };
42
- SyncContext.prototype.mergeMultipleResults = function (toBeMerged) {
43
- return this.rowStore.mergeMultipleResults(toBeMerged);
44
- };
45
- return SyncContext;
46
- }());
47
- exports.SyncContext = SyncContext;
48
- ;
49
- ;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncContext = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const assert_1 = tslib_1.__importDefault(require("assert"));
6
+ class SyncContext {
7
+ rowStore;
8
+ uuid;
9
+ constructor(rowStore) {
10
+ this.rowStore = rowStore;
11
+ }
12
+ begin(option) {
13
+ (0, assert_1.default)(!this.uuid, '事务不允许嵌套');
14
+ this.uuid = this.rowStore.begin(option);
15
+ }
16
+ commit() {
17
+ (0, assert_1.default)(this.uuid);
18
+ this.rowStore.commit(this.uuid);
19
+ this.uuid = undefined;
20
+ }
21
+ rollback() {
22
+ (0, assert_1.default)(this.uuid);
23
+ this.rowStore.rollback(this.uuid);
24
+ this.uuid = undefined;
25
+ }
26
+ getCurrentTxnId() {
27
+ return this.uuid;
28
+ }
29
+ getSchema() {
30
+ return this.rowStore.getSchema();
31
+ }
32
+ operate(entity, operation, option) {
33
+ return this.rowStore.operate(entity, operation, this, option);
34
+ }
35
+ select(entity, selection, option) {
36
+ return this.rowStore.select(entity, selection, this, option);
37
+ }
38
+ aggregate(entity, aggregation, option) {
39
+ return this.rowStore.aggregate(entity, aggregation, this, option);
40
+ }
41
+ count(entity, selection, option) {
42
+ return this.rowStore.count(entity, selection, this, option);
43
+ }
44
+ mergeMultipleResults(toBeMerged) {
45
+ return this.rowStore.mergeMultipleResults(toBeMerged);
46
+ }
47
+ }
48
+ exports.SyncContext = SyncContext;
49
+ ;
50
+ ;
@@ -1,31 +1,38 @@
1
- import { EntityDict, OperateOption, SelectOption } from "../types/Entity";
2
- import { EntityDict as BaseEntityDict } from '../base-app-domain';
3
- import { Logger } from "../types/Logger";
4
- import { Checker } from '../types/Auth';
5
- import { Trigger } from "../types/Trigger";
6
- import { AsyncContext } from './AsyncRowStore';
7
- /**
8
- * update可能会传入多种不同的action,此时都需要检查update trigger
9
- */
10
- export declare class TriggerExecutor<ED extends EntityDict & BaseEntityDict> {
11
- private counter;
12
- private triggerMap;
13
- private triggerNameMap;
14
- private volatileEntities;
15
- private logger;
16
- private contextBuilder;
17
- constructor(contextBuilder: (cxtString: string) => Promise<AsyncContext<ED>>, logger?: Logger);
18
- registerChecker<T extends keyof ED, Cxt extends AsyncContext<ED>>(checker: Checker<ED, T, Cxt>): void;
19
- registerTrigger<T extends keyof ED, Cxt extends AsyncContext<ED>>(trigger: Trigger<ED, T, Cxt>): void;
20
- unregisterTrigger<T extends keyof ED, Cxt extends AsyncContext<ED>>(trigger: Trigger<ED, T, Cxt>): void;
21
- private preCommitTrigger;
22
- preOperation<T extends keyof ED, Cxt extends AsyncContext<ED>>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
23
- action: 'select';
24
- }, context: Cxt, option: OperateOption | SelectOption): Promise<void> | void;
25
- private onCommit;
26
- private postCommitTrigger;
27
- postOperation<T extends keyof ED, Cxt extends AsyncContext<ED>>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
28
- action: 'select';
29
- }, context: Cxt, option: OperateOption | SelectOption, result?: Partial<ED[T]['Schema']>[]): Promise<void> | void;
30
- checkpoint<Cxt extends AsyncContext<ED>>(context: Cxt, timestamp: number): Promise<number>;
31
- }
1
+ import { EntityDict, OperateOption, SelectOption } from "../types/Entity";
2
+ import { EntityDict as BaseEntityDict } from '../base-app-domain';
3
+ import { Logger } from "../types/Logger";
4
+ import { Checker } from '../types/Auth';
5
+ import { Trigger } from "../types/Trigger";
6
+ import { AsyncContext } from './AsyncRowStore';
7
+ /**
8
+ * update可能会传入多种不同的action,此时都需要检查update trigger
9
+ */
10
+ export declare class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> {
11
+ private counter;
12
+ private triggerMap;
13
+ private triggerNameMap;
14
+ private volatileEntities;
15
+ private logger;
16
+ private contextBuilder;
17
+ constructor(contextBuilder: (cxtString?: string) => Promise<Cxt>, logger?: Logger);
18
+ registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>): void;
19
+ registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
20
+ unregisterTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
21
+ private preCommitTrigger;
22
+ preOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
23
+ action: 'select';
24
+ }, context: Cxt, option: OperateOption | SelectOption): Promise<void> | void;
25
+ private execVolatileTrigger;
26
+ /**
27
+ * 判断一个trigger和当前modi上下文是否符合
28
+ * trigger的默认行为是:如果是commit时机的trigger,不显式声明则只能在modi apply时执行(create时不执行);非commit时机的trigger,不显式声明则只在modi create时执行
29
+ * @param option
30
+ * @param trigger
31
+ * @returns
32
+ */
33
+ private judgeModiTurn;
34
+ postOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
35
+ action: 'select';
36
+ }, context: Cxt, option: OperateOption | SelectOption, result?: Partial<ED[T]['Schema']>[]): Promise<void> | void;
37
+ checkpoint(timestamp: number): Promise<number>;
38
+ }