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,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDynamicTriggers = void 0;
4
- var modi_1 = require("../store/modi");
5
- function createDynamicTriggers(schema) {
6
- return (0, modi_1.createModiRelatedTriggers)(schema);
7
- }
8
- exports.createDynamicTriggers = createDynamicTriggers;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDynamicTriggers = void 0;
4
+ const modi_1 = require("../store/modi");
5
+ function createDynamicTriggers(schema) {
6
+ return (0, modi_1.createModiRelatedTriggers)(schema);
7
+ }
8
+ exports.createDynamicTriggers = createDynamicTriggers;
@@ -1,20 +1,20 @@
1
- import { CascadeRelationItem, EntityDict } from "./Entity";
2
- import { GenericAction } from '../actions/action';
3
- export declare type Action = string;
4
- export declare type State = string;
5
- export declare type ActionDef<A extends Action, S extends State> = {
6
- stm: {
7
- [a in A]: [p: S | S[], n: S];
8
- };
9
- is?: S;
10
- };
11
- export declare type ActionDictOfEntityDict<E extends EntityDict> = {
12
- [T in keyof E]?: {
13
- [A in keyof E[T]['OpSchema']]?: ActionDef<string, string>;
14
- };
15
- };
16
- export declare type CascadeActionItem = CascadeRelationItem;
17
- export declare type CascadeActionAuth<A extends Action = ''> = {
18
- [K in A | GenericAction]?: CascadeActionItem | (CascadeActionItem | CascadeActionItem[])[];
19
- };
20
- export declare type ActionOnRemove = 'setNull' | 'remove';
1
+ import { CascadeRelationItem, EntityDict } from "./Entity";
2
+ import { GenericAction } from '../actions/action';
3
+ export type Action = string;
4
+ export type State = string;
5
+ export type ActionDef<A extends Action, S extends State> = {
6
+ stm: {
7
+ [a in A]: [p: S | S[], n: S];
8
+ };
9
+ is?: S;
10
+ };
11
+ export type ActionDictOfEntityDict<E extends EntityDict> = {
12
+ [T in keyof E]?: {
13
+ [A in keyof E[T]['OpSchema']]?: ActionDef<string, string>;
14
+ };
15
+ };
16
+ export type CascadeActionItem = CascadeRelationItem;
17
+ export type CascadeActionAuth<A extends Action = ''> = {
18
+ [K in A | GenericAction]?: CascadeActionItem | (CascadeActionItem | CascadeActionItem[])[];
19
+ };
20
+ export type ActionOnRemove = 'setNull' | 'remove';
@@ -1,11 +1,17 @@
1
- import { AsyncContext, AsyncRowStore } from "../store/AsyncRowStore";
2
- import { EntityDict } from "./Entity";
3
- export declare abstract class AppLoader<ED extends EntityDict, Cxt extends AsyncContext<ED>> {
4
- protected path: string;
5
- constructor(path: string);
6
- abstract execAspect(name: string, context: Cxt, params?: any): Promise<any>;
7
- abstract initialize(dropIfExists?: boolean): Promise<void>;
8
- abstract mount(): Promise<void>;
9
- abstract unmount(): Promise<void>;
10
- abstract getStore(): AsyncRowStore<ED, Cxt>;
11
- }
1
+ /// <reference types="node" />
2
+ import { IncomingHttpHeaders } from "http";
3
+ import { AsyncContext, AsyncRowStore } from "../store/AsyncRowStore";
4
+ import { EntityDict, OpRecord } from "./Entity";
5
+ export declare abstract class AppLoader<ED extends EntityDict, Cxt extends AsyncContext<ED>> {
6
+ protected path: string;
7
+ constructor(path: string);
8
+ abstract execAspect(name: string, header?: IncomingHttpHeaders, contextString?: string, params?: any): Promise<{
9
+ opRecords?: OpRecord<ED>[];
10
+ message?: string;
11
+ result: any;
12
+ }>;
13
+ abstract initialize(dropIfExists?: boolean): Promise<void>;
14
+ abstract mount(): Promise<void>;
15
+ abstract unmount(): Promise<void>;
16
+ abstract getStore(): AsyncRowStore<ED, Cxt>;
17
+ }
@@ -1,10 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppLoader = void 0;
4
- var AppLoader = /** @class */ (function () {
5
- function AppLoader(path) {
6
- this.path = path;
7
- }
8
- return AppLoader;
9
- }());
10
- exports.AppLoader = AppLoader;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppLoader = void 0;
4
+ class AppLoader {
5
+ path;
6
+ constructor(path) {
7
+ this.path = path;
8
+ }
9
+ }
10
+ exports.AppLoader = AppLoader;
@@ -1,4 +1,4 @@
1
- import { EntityDict, SubDataDef } from "./Entity";
1
+ import { EntityDict } from "./Entity";
2
2
  import { OpRecord } from "./Entity";
3
3
  import { AsyncContext } from "../store/AsyncRowStore";
4
4
  export interface Aspect<ED extends EntityDict, Cxt extends AsyncContext<ED>> {
@@ -10,6 +10,4 @@ export interface AspectWrapper<ED extends EntityDict, Cxt extends AsyncContext<E
10
10
  opRecords?: OpRecord<ED>[];
11
11
  message?: string | null;
12
12
  }>;
13
- sub: (data: Array<SubDataDef<ED, keyof ED>>, callback: (records: OpRecord<ED>[], ids: string[]) => void) => Promise<void>;
14
- unsub: (ids: string[]) => Promise<void>;
15
13
  }
@@ -1,74 +1,70 @@
1
- import { CascadeActionAuth, CascadeRelationAuth, ActionOnRemove, SyncOrAsync } from ".";
2
- import { AsyncContext } from "../store/AsyncRowStore";
3
- import { SyncContext } from "../store/SyncRowStore";
4
- import { EntityDict, OperateOption, SelectOption } from "../types/Entity";
5
- export declare type CheckerType = 'relation' | 'row' | 'data' | 'logical' | 'logicalRelation';
6
- /**
7
- * conditionalFilter是指该action发生时,operation所操作的行中有满足conditionalFilter的行
8
- * 被转化成trigger的filter条件,详细可看trigger中的说明
9
- */
10
- export declare type DataChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
11
- priority?: number;
12
- type: 'data';
13
- entity: T;
14
- action: Omit<ED[T]['Action'], 'remove'> | Array<Omit<ED[T]['Action'], 'remove'>>;
15
- checker: (data: ED[T]['Create']['data'] | ED[T]['Update']['data'], context: Cxt) => SyncOrAsync<any>;
16
- conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
17
- };
18
- export declare type RowChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
19
- priority?: number;
20
- type: 'row';
21
- entity: T;
22
- action: Omit<ED[T]['Action'], 'create'> | Array<Omit<ED[T]['Action'], 'create'>>;
23
- filter: ED[T]['Selection']['filter'] | ((operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
24
- errMsg?: string;
25
- inconsistentRows?: {
26
- entity: keyof ED;
27
- selection: (filter?: ED[T]['Selection']['filter']) => ED[keyof ED]['Selection'];
28
- };
29
- conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Update']['filter']>);
30
- };
31
- export declare type RelationChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
32
- priority?: number;
33
- type: 'relation';
34
- entity: T;
35
- when?: 'after';
36
- action: ED[T]['Action'] | Array<ED[T]['Action']>;
37
- relationFilter: (operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<ED[T]['Selection']['filter']>;
38
- errMsg: string | ((operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option?: OperateOption | SelectOption) => string);
39
- conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
40
- };
41
- export declare type LogicalChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
42
- priority?: number;
43
- type: 'logical';
44
- when?: 'after';
45
- entity: T;
46
- action: ED[T]['Action'] | Array<ED[T]['Action']>;
47
- checker: (operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<any>;
48
- conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Update']['filter']>);
49
- };
50
- export declare type LogicalRelationChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
51
- priority?: number;
52
- type: 'logicalRelation';
53
- when?: 'after';
54
- entity: T;
55
- action: ED[T]['Action'] | Array<ED[T]['Action']>;
56
- checker: (operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => any | Promise<any>;
57
- conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Update']['filter']>);
58
- };
59
- export declare type Checker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = DataChecker<ED, T, Cxt> | RowChecker<ED, T, Cxt> | RelationChecker<ED, T, Cxt> | LogicalChecker<ED, T, Cxt> | LogicalRelationChecker<ED, T, Cxt>;
60
- export declare type AuthDef<ED extends EntityDict, T extends keyof ED> = {
61
- relationAuth?: CascadeRelationAuth<NonNullable<ED[T]['Relation']>>;
62
- actionAuth?: CascadeActionAuth<ED[T]['Action']>;
63
- cascadeRemove?: {
64
- [E in (keyof ED | keyof ED[T]['Schema'] | '@entity')]?: ActionOnRemove;
65
- };
66
- };
67
- export declare type CascadeRemoveDefDict<ED extends EntityDict> = {
68
- [T in keyof ED]?: {
69
- [E in (keyof ED | keyof ED[T]['Schema'] | '@entity')]?: ActionOnRemove;
70
- };
71
- };
72
- export declare type AuthDefDict<ED extends EntityDict> = {
73
- [K in keyof ED]?: AuthDef<ED, K>;
74
- };
1
+ import { CascadeActionAuth, CascadeRelationAuth, ActionOnRemove, SyncOrAsync } from ".";
2
+ import { AsyncContext } from "../store/AsyncRowStore";
3
+ import { SyncContext } from "../store/SyncRowStore";
4
+ import { EntityDict, OperateOption, SelectOption } from "../types/Entity";
5
+ import { ModiTurn } from './Trigger';
6
+ export type CheckerType = 'relation' | 'row' | 'data' | 'logical' | 'logicalRelation' | 'logicalData';
7
+ /**
8
+ * conditionalFilter是指该action发生时,operation所操作的行中有满足conditionalFilter的行
9
+ * 被转化成trigger的filter条件,详细可看trigger中的说明
10
+ */
11
+ export type DataChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
12
+ priority?: number;
13
+ type: 'data';
14
+ entity: T;
15
+ mt?: ModiTurn;
16
+ action: Omit<ED[T]['Action'], 'remove'> | Array<Omit<ED[T]['Action'], 'remove'>>;
17
+ checker: (data: ED[T]['Create']['data'] | ED[T]['Update']['data'], context: Cxt) => SyncOrAsync<any>;
18
+ conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
19
+ };
20
+ export type RowChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
21
+ priority?: number;
22
+ type: 'row';
23
+ entity: T;
24
+ mt?: ModiTurn;
25
+ action: Omit<ED[T]['Action'], 'create'> | Array<Omit<ED[T]['Action'], 'create'>>;
26
+ filter: ED[T]['Selection']['filter'] | ((operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
27
+ errMsg?: string;
28
+ inconsistentRows?: {
29
+ entity: keyof ED;
30
+ selection: (filter?: ED[T]['Selection']['filter']) => ED[keyof ED]['Selection'];
31
+ };
32
+ conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Update']['filter']>);
33
+ };
34
+ export type RelationChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
35
+ priority?: number;
36
+ type: 'relation';
37
+ entity: T;
38
+ mt?: ModiTurn;
39
+ when?: 'after';
40
+ action: ED[T]['Action'] | Array<ED[T]['Action']>;
41
+ relationFilter: (operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<ED[T]['Selection']['filter']>;
42
+ errMsg: string | ((operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option?: OperateOption | SelectOption) => string);
43
+ conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Selection']['filter']>);
44
+ };
45
+ export type LogicalChecker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = {
46
+ priority?: number;
47
+ type: 'logical' | 'logicalData' | 'logicalRelation';
48
+ when?: 'after';
49
+ mt?: ModiTurn;
50
+ entity: T;
51
+ action: ED[T]['Action'] | Array<ED[T]['Action']>;
52
+ checker: (operation: ED[T]['Operation'] | ED[T]['Selection'], context: Cxt, option: OperateOption | SelectOption) => SyncOrAsync<any>;
53
+ conditionalFilter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Operation'], context: Cxt, option: OperateOption) => SyncOrAsync<ED[T]['Update']['filter']>);
54
+ };
55
+ export type Checker<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = DataChecker<ED, T, Cxt> | RowChecker<ED, T, Cxt> | RelationChecker<ED, T, Cxt> | LogicalChecker<ED, T, Cxt>;
56
+ export type AuthDef<ED extends EntityDict, T extends keyof ED> = {
57
+ relationAuth?: CascadeRelationAuth<NonNullable<ED[T]['Relation']>>;
58
+ actionAuth?: CascadeActionAuth<ED[T]['Action']>;
59
+ cascadeRemove?: {
60
+ [E in (keyof ED | keyof ED[T]['Schema'] | '@entity')]?: ActionOnRemove;
61
+ };
62
+ };
63
+ export type CascadeRemoveDefDict<ED extends EntityDict> = {
64
+ [T in keyof ED]?: {
65
+ [E in (keyof ED | keyof ED[T]['Schema'] | '@entity')]?: ActionOnRemove;
66
+ };
67
+ };
68
+ export type AuthDefDict<ED extends EntityDict> = {
69
+ [K in keyof ED]?: AuthDef<ED, K>;
70
+ };
@@ -0,0 +1,5 @@
1
+ export type ClusterInfo = {
2
+ usingCluster: boolean;
3
+ instanceId?: number;
4
+ instanceCount?: number;
5
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,34 +1,38 @@
1
- /// <reference types="node" />
2
- import { IncomingHttpHeaders } from "http";
3
- import { AsyncContext, AsyncRowStore } from "../store/AsyncRowStore";
4
- import { SyncContext } from "../store/SyncRowStore";
5
- import { EntityDict, OpRecord } from "./Entity";
6
- import { OakException } from "./Exception";
7
- export declare abstract class Connector<ED extends EntityDict, BackCxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>> {
8
- abstract callAspect(name: string, params: any, context: FrontCxt): Promise<{
9
- result: any;
10
- opRecords?: OpRecord<ED>[];
11
- message?: string | null;
12
- }>;
13
- abstract getRouter(): string;
14
- abstract parseRequest(headers: IncomingHttpHeaders, body: any, store: AsyncRowStore<ED, BackCxt>): Promise<{
15
- name: string;
16
- params: any;
17
- context: BackCxt;
18
- }>;
19
- abstract serializeResult(result: any, context: BackCxt, headers: IncomingHttpHeaders, body: any): Promise<{
20
- body: any;
21
- headers?: Record<string, any>;
22
- }>;
23
- abstract serializeException(exception: OakException<ED>, headers: IncomingHttpHeaders, body: any): {
24
- body: any;
25
- headers?: Record<string, any>;
26
- };
27
- abstract getSubscribeRouter(): string;
28
- abstract getBridgeRouter(): string;
29
- abstract makeBridgeUrl(url: string, headers?: Record<string, string>): string;
30
- abstract parseBridgeRequestQuery(urlParams: string): {
31
- url: string;
32
- headers?: Record<string, string>;
33
- };
34
- }
1
+ /// <reference types="node" />
2
+ import { IncomingHttpHeaders } from "http";
3
+ import { SyncContext } from "../store/SyncRowStore";
4
+ import { EntityDict, OpRecord } from "./Entity";
5
+ import { OakException } from "./Exception";
6
+ export interface Connector<ED extends EntityDict, FrontCxt extends SyncContext<ED>> {
7
+ callAspect: (name: string, params: any, context: FrontCxt) => Promise<{
8
+ result: any;
9
+ opRecords?: OpRecord<ED>[];
10
+ message?: string | null;
11
+ }>;
12
+ getRouter: () => string;
13
+ parseRequestHeaders: (headers: IncomingHttpHeaders) => {
14
+ contextString?: string;
15
+ aspectName: string;
16
+ };
17
+ serializeResult: (result: any, opRecords: OpRecord<ED>[], headers: IncomingHttpHeaders, body: any, message?: string) => Promise<{
18
+ body: any;
19
+ headers?: Record<string, any>;
20
+ }>;
21
+ serializeException: (exception: OakException<ED>, headers: IncomingHttpHeaders, body: any) => {
22
+ body: any;
23
+ headers?: Record<string, any>;
24
+ };
25
+ getSubscribeRouter: () => string;
26
+ getSubscribePointRouter: () => string;
27
+ getSubscribePoint: () => Promise<{
28
+ url: string;
29
+ path: string;
30
+ }>;
31
+ getBridgeRouter: () => string;
32
+ makeBridgeUrl: (url: string, headers?: Record<string, string>) => string;
33
+ getEndpointRouter: () => string;
34
+ parseBridgeRequestQuery: (urlParams: string) => {
35
+ url: string;
36
+ headers?: Record<string, string>;
37
+ };
38
+ }
@@ -1,9 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Connector = void 0;
4
- var Connector = /** @class */ (function () {
5
- function Connector() {
6
- }
7
- return Connector;
8
- }());
9
- exports.Connector = Connector;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,24 +1,25 @@
1
- import { Geo, SingleGeo } from "./Geo";
2
- export declare type Int<L extends 1 | 2 | 4 | 8> = number;
3
- export declare type Uint<L extends 1 | 2 | 4 | 8> = number;
4
- export declare type Double<P extends number, S extends number> = number;
5
- export declare type Float<P extends number, S extends number> = number;
6
- export declare type String<L extends number> = string;
7
- export declare type Text = string;
8
- export declare type Image = string;
9
- export declare type File = string;
10
- export declare type Datetime = number | Date;
11
- export declare type Day = number | Date;
12
- export declare type Time = number | Date;
13
- export declare type Boolean = boolean;
14
- export declare type Price = number;
15
- export declare type PrimaryKey = string;
16
- export declare type ForeignKey<E extends string> = string;
17
- export declare type Sequence = string;
18
- export { Geo, SingleGeo } from './Geo';
19
- export declare type DataTypes = number | string | Datetime | Day | Time | Geo | Object | SingleGeo;
20
- export declare const types: string[];
21
- export declare const unIndexedTypes: string[];
22
- export declare type JsonProjection<O extends object> = {
23
- [k in keyof O]?: NonNullable<O[k]> extends object ? JsonProjection<NonNullable<O[k]>> | number : number;
24
- };
1
+ import { Geo, SingleGeo } from "./Geo";
2
+ export type Int<L extends 1 | 2 | 4 | 8> = number;
3
+ export type Uint<L extends 1 | 2 | 4 | 8> = number;
4
+ export type Double<P extends number, S extends number> = number;
5
+ export type Float<P extends number, S extends number> = number;
6
+ export type Decimal<P extends number, S extends number> = number;
7
+ export type String<L extends number> = string;
8
+ export type Text = string;
9
+ export type Image = string;
10
+ export type File = string;
11
+ export type Datetime = number | Date;
12
+ export type Day = number | Date;
13
+ export type Time = number | Date;
14
+ export type Boolean = boolean;
15
+ export type Price = number;
16
+ export type PrimaryKey = string;
17
+ export type ForeignKey<E extends string> = string;
18
+ export type Sequence = number;
19
+ export { Geo, SingleGeo } from './Geo';
20
+ export type DataTypes = number | string | Datetime | Day | Time | Geo | Object | SingleGeo;
21
+ export declare const types: string[];
22
+ export declare const unIndexedTypes: string[];
23
+ export type JsonProjection<O extends object> = {
24
+ [k in keyof O]?: NonNullable<O[k]> extends object ? JsonProjection<NonNullable<O[k]>> | number : number;
25
+ };
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unIndexedTypes = exports.types = void 0;
4
- exports.types = ['Int', 'Uint', 'Double', 'Float', 'String', 'Text', 'Datetime', 'Day', 'Time',
5
- 'Boolean', 'Image', 'File', 'Geo', 'SingleGeo', 'Price'];
6
- exports.unIndexedTypes = ['Text', 'Image', 'File', 'Object'];
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unIndexedTypes = exports.types = void 0;
4
+ exports.types = ['Int', 'Uint', 'Double', 'Float', 'String', 'Text', 'Datetime', 'Day', 'Time',
5
+ 'Boolean', 'Image', 'File', 'Geo', 'SingleGeo', 'Price', 'Decimal'];
6
+ exports.unIndexedTypes = ['Text', 'Image', 'File', 'Object'];
@@ -1,88 +1,88 @@
1
- import { RefOrExpression } from "./Expression";
2
- import { OneOf } from "./Polyfill";
3
- export declare const EXPRESSION_PREFIX = "$expr";
4
- export declare type NodeId = `node-${number}`;
5
- export declare type ExpressionKey = '$expr' | '$expr1' | '$expr2' | '$expr3' | '$expr4' | '$expr5' | '$expr6' | '$expr7' | '$expr8' | '$expr9' | '$expr10' | '$expr11' | '$expr12' | '$expr13' | '$expr14' | '$expr15' | '$expr16' | '$expr17' | '$expr18' | '$expr19' | '$expr20';
6
- export declare type ExprOp<A> = {
7
- [K in ExpressionKey]: RefOrExpression<A>;
8
- };
9
- export declare type Q_NumberComparisonValue = number | OneOf<{
10
- $gt: number;
11
- $lt: number;
12
- $gte: number;
13
- $lte: number;
14
- $eq: number;
15
- $ne: number;
16
- $in: number[];
17
- $nin: number[];
18
- $between: [number, number];
19
- }>;
20
- export declare type Q_StringComparisonValue = string | OneOf<{
21
- $gt: string;
22
- $lt: string;
23
- $gte: string;
24
- $lte: string;
25
- $eq: string;
26
- $ne: string;
27
- $startsWith: string;
28
- $endsWith: string;
29
- $includes: string;
30
- $in: string[];
31
- $nin: string[];
32
- }>;
33
- export declare type Q_BooleanComparisonValue = boolean;
34
- export declare type Q_DateComparisonValue = Q_NumberComparisonValue;
35
- export declare type Q_EnumComparisonValue<E> = E | OneOf<{
36
- $in: E[];
37
- $nin: E[];
38
- $ne: E;
39
- }>;
40
- export declare type Q_ExistsValue = {
41
- $exists: boolean;
42
- };
43
- export declare type Q_NumberValue = Q_NumberComparisonValue | Q_ExistsValue;
44
- export declare type Q_StringValue = Q_StringComparisonValue | Q_ExistsValue;
45
- export declare type Q_BooleanValue = Q_BooleanComparisonValue | Q_ExistsValue;
46
- export declare type Q_DateValue = Q_DateComparisonValue | Q_ExistsValue;
47
- export declare type Q_EnumValue<E> = Q_EnumComparisonValue<E> | Q_ExistsValue;
48
- export declare type Q_State<S> = S | {
49
- $in: S[];
50
- } | {
51
- $nin: S[];
52
- } | Q_ExistsValue;
53
- export declare type Q_FullTextValue = {
54
- $search: string;
55
- $language?: 'zh_CN' | 'en_US';
56
- };
57
- export declare type Q_FullTextKey = '$text';
58
- export declare type FulltextFilter = {
59
- [F in Q_FullTextKey]?: Q_FullTextValue;
60
- };
61
- declare type Q_LogicKey = '$and' | '$or';
62
- declare type Q_LinearLogicKey = '$not';
63
- export declare type MakeFilterWrapper<F extends Object> = {
64
- [Q in Q_LogicKey]?: Array<MakeFilterWrapper<F>>;
65
- } & {
66
- [Q in Q_LinearLogicKey]?: MakeFilterWrapper<F>;
67
- } & Partial<F>;
68
- export declare type MakeFilter<F extends Object> = {
69
- '#id'?: NodeId;
70
- } & MakeFilterWrapper<F>;
71
- export declare type RefAttr<A> = {
72
- '#attr': A;
73
- } | {
74
- '#refId': NodeId;
75
- '#refAttr': string;
76
- };
77
- export declare function isRefAttrNode<A>(node: any): node is RefAttr<A>;
78
- export declare type JsonFilter<O extends any> = O extends Array<infer P> ? (JsonFilter<P> | undefined)[] | {
79
- $contains?: P | P[];
80
- $overlaps?: P | P[];
81
- } : O extends number ? Q_NumberValue : O extends string ? Q_StringValue : O extends boolean ? Q_BooleanValue : O extends Record<string, any> ? {
82
- [A in keyof O]?: JsonFilter<O[A]>;
83
- } : never;
84
- export declare type SubQueryPredicateMetadata = {
85
- '#sqp'?: 'in' | 'not in' | 'all' | 'not all';
86
- };
87
- export declare const SUB_QUERY_PREDICATE_KEYWORD = "#sqp";
88
- export {};
1
+ import { RefOrExpression } from "./Expression";
2
+ import { OneOf } from "./Polyfill";
3
+ export declare const EXPRESSION_PREFIX = "$expr";
4
+ export type NodeId = `node-${number}`;
5
+ export type ExpressionKey = '$expr' | '$expr1' | '$expr2' | '$expr3' | '$expr4' | '$expr5' | '$expr6' | '$expr7' | '$expr8' | '$expr9' | '$expr10' | '$expr11' | '$expr12' | '$expr13' | '$expr14' | '$expr15' | '$expr16' | '$expr17' | '$expr18' | '$expr19' | '$expr20';
6
+ export type ExprOp<A> = {
7
+ [K in ExpressionKey]: RefOrExpression<A>;
8
+ };
9
+ export type Q_NumberComparisonValue = number | OneOf<{
10
+ $gt: number;
11
+ $lt: number;
12
+ $gte: number;
13
+ $lte: number;
14
+ $eq: number;
15
+ $ne: number;
16
+ $in: number[];
17
+ $nin: number[];
18
+ $between: [number, number];
19
+ }>;
20
+ export type Q_StringComparisonValue = string | OneOf<{
21
+ $gt: string;
22
+ $lt: string;
23
+ $gte: string;
24
+ $lte: string;
25
+ $eq: string;
26
+ $ne: string;
27
+ $startsWith: string;
28
+ $endsWith: string;
29
+ $includes: string;
30
+ $in: string[];
31
+ $nin: string[];
32
+ }>;
33
+ export type Q_BooleanComparisonValue = boolean;
34
+ export type Q_DateComparisonValue = Q_NumberComparisonValue;
35
+ export type Q_EnumComparisonValue<E> = E | OneOf<{
36
+ $in: E[];
37
+ $nin: E[];
38
+ $ne: E;
39
+ }>;
40
+ export type Q_ExistsValue = {
41
+ $exists: boolean;
42
+ };
43
+ export type Q_NumberValue = Q_NumberComparisonValue | Q_ExistsValue;
44
+ export type Q_StringValue = Q_StringComparisonValue | Q_ExistsValue;
45
+ export type Q_BooleanValue = Q_BooleanComparisonValue | Q_ExistsValue;
46
+ export type Q_DateValue = Q_DateComparisonValue | Q_ExistsValue;
47
+ export type Q_EnumValue<E> = Q_EnumComparisonValue<E> | Q_ExistsValue;
48
+ export type Q_State<S> = S | {
49
+ $in: S[];
50
+ } | {
51
+ $nin: S[];
52
+ } | Q_ExistsValue;
53
+ export type Q_FullTextValue = {
54
+ $search: string;
55
+ $language?: 'zh_CN' | 'en_US';
56
+ };
57
+ export type Q_FullTextKey = '$text';
58
+ export type FulltextFilter = {
59
+ [F in Q_FullTextKey]?: Q_FullTextValue;
60
+ };
61
+ type Q_LogicKey = '$and' | '$or';
62
+ type Q_LinearLogicKey = '$not';
63
+ export type MakeFilterWrapper<F extends Object> = {
64
+ [Q in Q_LogicKey]?: Array<MakeFilterWrapper<F>>;
65
+ } & {
66
+ [Q in Q_LinearLogicKey]?: MakeFilterWrapper<F>;
67
+ } & Partial<F>;
68
+ export type MakeFilter<F extends Object> = {
69
+ '#id'?: NodeId;
70
+ } & MakeFilterWrapper<F>;
71
+ export type RefAttr<A> = {
72
+ '#attr': A;
73
+ } | {
74
+ '#refId': NodeId;
75
+ '#refAttr': string;
76
+ };
77
+ export declare function isRefAttrNode<A>(node: any): node is RefAttr<A>;
78
+ export type JsonFilter<O extends any> = O extends Array<infer P> ? (JsonFilter<P> | undefined)[] | {
79
+ $contains?: P | P[];
80
+ $overlaps?: P | P[];
81
+ } : O extends number ? Q_NumberValue : O extends string ? Q_StringValue : O extends boolean ? Q_BooleanValue : O extends Record<string, any> ? {
82
+ [A in keyof O]?: JsonFilter<O[A]>;
83
+ } : never;
84
+ export type SubQueryPredicateMetadata = {
85
+ '#sqp'?: 'in' | 'not in' | 'all' | 'not all';
86
+ };
87
+ export declare const SUB_QUERY_PREDICATE_KEYWORD = "#sqp";
88
+ export {};