oak-domain 2.3.2 → 2.4.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 (160) 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 -1
  4. package/lib/actions/relation.js +38 -2
  5. package/lib/base-app-domain/ActionDefDict.d.ts +5 -5
  6. package/lib/base-app-domain/ActionDefDict.js +7 -7
  7. package/lib/base-app-domain/EntityDict.d.ts +12 -12
  8. package/lib/base-app-domain/EntityDict.js +2 -2
  9. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  10. package/lib/base-app-domain/Modi/Action.js +14 -14
  11. package/lib/base-app-domain/Modi/Schema.d.ts +146 -148
  12. package/lib/base-app-domain/Modi/Schema.js +2 -2
  13. package/lib/base-app-domain/Modi/Storage.d.ts +3 -3
  14. package/lib/base-app-domain/Modi/Storage.js +60 -60
  15. package/lib/base-app-domain/ModiEntity/Schema.d.ts +162 -164
  16. package/lib/base-app-domain/ModiEntity/Schema.js +2 -2
  17. package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -3
  18. package/lib/base-app-domain/ModiEntity/Storage.js +26 -26
  19. package/lib/base-app-domain/Oper/Schema.d.ts +144 -146
  20. package/lib/base-app-domain/Oper/Schema.js +2 -2
  21. package/lib/base-app-domain/Oper/Storage.d.ts +3 -3
  22. package/lib/base-app-domain/Oper/Storage.js +29 -29
  23. package/lib/base-app-domain/OperEntity/Schema.d.ts +178 -180
  24. package/lib/base-app-domain/OperEntity/Schema.js +2 -2
  25. package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -3
  26. package/lib/base-app-domain/OperEntity/Storage.js +26 -26
  27. package/lib/base-app-domain/Storage.d.ts +3 -3
  28. package/lib/base-app-domain/Storage.js +15 -15
  29. package/lib/base-app-domain/User/Schema.d.ts +128 -130
  30. package/lib/base-app-domain/User/Schema.js +2 -2
  31. package/lib/base-app-domain/User/Storage.d.ts +3 -3
  32. package/lib/base-app-domain/User/Storage.js +25 -25
  33. package/lib/base-app-domain/_SubQuery.d.ts +36 -36
  34. package/lib/base-app-domain/_SubQuery.js +2 -2
  35. package/lib/base-app-domain/index.d.ts +3 -3
  36. package/lib/base-app-domain/index.js +6 -6
  37. package/lib/checkers/index.d.ts +5 -5
  38. package/lib/checkers/index.js +15 -13
  39. package/lib/compiler/env.d.ts +11 -11
  40. package/lib/compiler/env.js +39 -39
  41. package/lib/compiler/schemalBuilder.d.ts +2 -2
  42. package/lib/compiler/schemalBuilder.js +3301 -3245
  43. package/lib/compiler/uiBuilder.d.ts +1 -1
  44. package/lib/compiler/uiBuilder.js +3 -3
  45. package/lib/entities/Modi.d.ts +11 -11
  46. package/lib/entities/Modi.js +46 -46
  47. package/lib/entities/ModiEntity.d.ts +8 -8
  48. package/lib/entities/ModiEntity.js +15 -15
  49. package/lib/entities/Oper.d.ts +10 -10
  50. package/lib/entities/Oper.js +17 -17
  51. package/lib/entities/OperEntity.d.ts +8 -8
  52. package/lib/entities/OperEntity.js +15 -15
  53. package/lib/entities/User.d.ts +7 -7
  54. package/lib/entities/User.js +12 -12
  55. package/lib/store/AsyncRowStore.d.ts +48 -48
  56. package/lib/store/AsyncRowStore.js +183 -183
  57. package/lib/store/CascadeStore.d.ts +91 -91
  58. package/lib/store/CascadeStore.js +1594 -1594
  59. package/lib/store/SyncRowStore.d.ts +29 -29
  60. package/lib/store/SyncRowStore.js +48 -48
  61. package/lib/store/TriggerExecutor.d.ts +32 -32
  62. package/lib/store/TriggerExecutor.js +527 -508
  63. package/lib/store/actionDef.d.ts +9 -9
  64. package/lib/store/actionDef.js +135 -135
  65. package/lib/store/checker.d.ts +13 -7
  66. package/lib/store/checker.js +498 -391
  67. package/lib/store/filter.d.ts +109 -100
  68. package/lib/store/filter.js +893 -878
  69. package/lib/store/modi.d.ts +13 -13
  70. package/lib/store/modi.js +198 -206
  71. package/lib/store/relation.d.ts +13 -13
  72. package/lib/store/relation.js +66 -66
  73. package/lib/store/selection.d.ts +7 -7
  74. package/lib/store/selection.js +235 -235
  75. package/lib/triggers/index.d.ts +6 -6
  76. package/lib/triggers/index.js +11 -11
  77. package/lib/triggers/modi.d.ts +5 -5
  78. package/lib/triggers/modi.js +72 -72
  79. package/lib/types/Action.d.ts +18 -14
  80. package/lib/types/Action.js +2 -2
  81. package/lib/types/AppLoader.d.ts +11 -11
  82. package/lib/types/AppLoader.js +10 -10
  83. package/lib/types/Aspect.d.ts +12 -12
  84. package/lib/types/Aspect.js +4 -4
  85. package/lib/types/Auth.d.ts +66 -66
  86. package/lib/types/Auth.js +2 -2
  87. package/lib/types/Connector.d.ts +26 -26
  88. package/lib/types/Connector.js +9 -9
  89. package/lib/types/Context.d.ts +7 -7
  90. package/lib/types/Context.js +3 -3
  91. package/lib/types/DataType.d.ts +18 -18
  92. package/lib/types/DataType.js +5 -5
  93. package/lib/types/Demand.d.ts +77 -77
  94. package/lib/types/Demand.js +9 -9
  95. package/lib/types/Endpoint.d.ts +11 -0
  96. package/lib/types/Endpoint.js +3 -0
  97. package/lib/types/Entity.d.ts +176 -190
  98. package/lib/types/Entity.js +14 -15
  99. package/lib/types/Exception.d.ts +88 -83
  100. package/lib/types/Exception.js +267 -252
  101. package/lib/types/Expression.d.ts +163 -141
  102. package/lib/types/Expression.js +427 -402
  103. package/lib/types/Geo.d.ts +18 -18
  104. package/lib/types/Geo.js +2 -2
  105. package/lib/types/Locale.d.ts +24 -24
  106. package/lib/types/Locale.js +2 -2
  107. package/lib/types/Logger.d.ts +5 -5
  108. package/lib/types/Logger.js +3 -3
  109. package/lib/types/Polyfill.d.ts +23 -23
  110. package/lib/types/Polyfill.js +2 -2
  111. package/lib/types/Port.d.ts +17 -0
  112. package/lib/types/Port.js +2 -0
  113. package/lib/types/RowStore.d.ts +12 -12
  114. package/lib/types/RowStore.js +34 -34
  115. package/lib/types/Storage.d.ts +56 -56
  116. package/lib/types/Storage.js +2 -2
  117. package/lib/types/Timer.d.ts +13 -13
  118. package/lib/types/Timer.js +2 -2
  119. package/lib/types/Trigger.d.ts +100 -100
  120. package/lib/types/Trigger.js +39 -39
  121. package/lib/types/Txn.d.ts +2 -2
  122. package/lib/types/Txn.js +3 -3
  123. package/lib/types/Watcher.d.ts +19 -19
  124. package/lib/types/Watcher.js +4 -4
  125. package/lib/types/index.d.ts +21 -19
  126. package/lib/types/index.js +24 -22
  127. package/lib/types/schema/DataTypes.d.ts +32 -32
  128. package/lib/types/schema/DataTypes.js +3 -3
  129. package/lib/utils/SimpleConnector.d.ts +30 -30
  130. package/lib/utils/SimpleConnector.js +117 -117
  131. package/lib/utils/assert.d.ts +5 -5
  132. package/lib/utils/assert.js +9 -9
  133. package/lib/utils/concurrent.d.ts +15 -15
  134. package/lib/utils/concurrent.js +89 -89
  135. package/lib/utils/cron.d.ts +1 -1
  136. package/lib/utils/cron.js +18 -18
  137. package/lib/utils/date.d.ts +1 -0
  138. package/lib/utils/date.js +18 -0
  139. package/lib/utils/geo.d.ts +4 -4
  140. package/lib/utils/geo.js +24 -24
  141. package/lib/utils/lodash.d.ts +20 -20
  142. package/lib/utils/lodash.js +55 -55
  143. package/lib/utils/random/random.d.ts +1 -1
  144. package/lib/utils/random/random.js +24 -24
  145. package/lib/utils/random/random.mp.d.ts +1 -1
  146. package/lib/utils/random/random.mp.js +25 -25
  147. package/lib/utils/random/random.web.d.ts +1 -1
  148. package/lib/utils/random/random.web.js +17 -17
  149. package/lib/utils/string.d.ts +22 -22
  150. package/lib/utils/string.js +70 -70
  151. package/lib/utils/uuid.d.ts +12 -12
  152. package/lib/utils/uuid.js +194 -194
  153. package/lib/utils/validator.d.ts +23 -23
  154. package/lib/utils/validator.js +123 -123
  155. package/package.json +48 -48
  156. package/src/entities/Modi.ts +68 -68
  157. package/src/entities/ModiEntity.ts +24 -24
  158. package/src/entities/Oper.ts +28 -28
  159. package/src/entities/OperEntity.ts +24 -24
  160. package/src/entities/User.ts +19 -19
@@ -1,77 +1,77 @@
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
- }>;
39
- export declare type Q_ExistsValue = {
40
- $exists: boolean;
41
- };
42
- export declare type Q_NumberValue = Q_NumberComparisonValue | Q_ExistsValue;
43
- export declare type Q_StringValue = Q_StringComparisonValue | Q_ExistsValue;
44
- export declare type Q_BooleanValue = Q_BooleanComparisonValue | Q_ExistsValue;
45
- export declare type Q_DateValue = Q_DateComparisonValue | Q_ExistsValue;
46
- export declare type Q_EnumValue<E> = Q_EnumComparisonValue<E> | Q_ExistsValue;
47
- export declare type Q_State<S> = S | {
48
- $in: S[];
49
- } | {
50
- $nin: S[];
51
- } | Q_ExistsValue;
52
- export declare type Q_FullTextValue = {
53
- $search: string;
54
- $language?: 'zh_CN' | 'en_US';
55
- };
56
- export declare type Q_FullTextKey = '$text';
57
- export declare type FulltextFilter = {
58
- [F in Q_FullTextKey]?: Q_FullTextValue;
59
- };
60
- declare type Q_LogicKey = '$and' | '$or';
61
- declare type Q_LinearLogicKey = '$not';
62
- export declare type MakeFilterWrapper<F extends Object> = {
63
- [Q in Q_LogicKey]?: Array<MakeFilterWrapper<F>>;
64
- } & {
65
- [Q in Q_LinearLogicKey]?: MakeFilterWrapper<F>;
66
- } & Partial<F>;
67
- export declare type MakeFilter<F extends Object> = {
68
- '#id'?: NodeId;
69
- } & MakeFilterWrapper<F>;
70
- export declare type RefAttr<A> = {
71
- '#attr': A;
72
- } | {
73
- '#refId': NodeId;
74
- '#refAttr': string;
75
- };
76
- export declare function isRefAttrNode<A>(node: any): node is RefAttr<A>;
77
- 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
+ }>;
39
+ export type Q_ExistsValue = {
40
+ $exists: boolean;
41
+ };
42
+ export type Q_NumberValue = Q_NumberComparisonValue | Q_ExistsValue;
43
+ export type Q_StringValue = Q_StringComparisonValue | Q_ExistsValue;
44
+ export type Q_BooleanValue = Q_BooleanComparisonValue | Q_ExistsValue;
45
+ export type Q_DateValue = Q_DateComparisonValue | Q_ExistsValue;
46
+ export type Q_EnumValue<E> = Q_EnumComparisonValue<E> | Q_ExistsValue;
47
+ export type Q_State<S> = S | {
48
+ $in: S[];
49
+ } | {
50
+ $nin: S[];
51
+ } | Q_ExistsValue;
52
+ export type Q_FullTextValue = {
53
+ $search: string;
54
+ $language?: 'zh_CN' | 'en_US';
55
+ };
56
+ export type Q_FullTextKey = '$text';
57
+ export type FulltextFilter = {
58
+ [F in Q_FullTextKey]?: Q_FullTextValue;
59
+ };
60
+ type Q_LogicKey = '$and' | '$or';
61
+ type Q_LinearLogicKey = '$not';
62
+ export type MakeFilterWrapper<F extends Object> = {
63
+ [Q in Q_LogicKey]?: Array<MakeFilterWrapper<F>>;
64
+ } & {
65
+ [Q in Q_LinearLogicKey]?: MakeFilterWrapper<F>;
66
+ } & Partial<F>;
67
+ export type MakeFilter<F extends Object> = {
68
+ '#id'?: NodeId;
69
+ } & MakeFilterWrapper<F>;
70
+ export type RefAttr<A> = {
71
+ '#attr': A;
72
+ } | {
73
+ '#refId': NodeId;
74
+ '#refAttr': string;
75
+ };
76
+ export declare function isRefAttrNode<A>(node: any): node is RefAttr<A>;
77
+ export {};
@@ -1,9 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRefAttrNode = exports.EXPRESSION_PREFIX = void 0;
4
- exports.EXPRESSION_PREFIX = '$expr';
5
- function isRefAttrNode(node) {
6
- return node.hasOwnProperty('#attr') || (node.hasOwnProperty('#refId') && node.hasOwnProperty('#refAttr'));
7
- }
8
- exports.isRefAttrNode = isRefAttrNode;
9
- ;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRefAttrNode = exports.EXPRESSION_PREFIX = void 0;
4
+ exports.EXPRESSION_PREFIX = '$expr';
5
+ function isRefAttrNode(node) {
6
+ return node.hasOwnProperty('#attr') || (node.hasOwnProperty('#refId') && node.hasOwnProperty('#refAttr'));
7
+ }
8
+ exports.isRefAttrNode = isRefAttrNode;
9
+ ;
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { IncomingHttpHeaders, IncomingMessage } from "http";
3
+ import { AsyncContext } from "../store/AsyncRowStore";
4
+ import { EntityDict } from "./Entity";
5
+ export interface EndpointItem<ED extends EntityDict, BackCxt extends AsyncContext<ED>> {
6
+ name: string;
7
+ params?: string[];
8
+ method: 'get' | 'post' | 'put' | 'delete';
9
+ fn: (context: BackCxt, params: Record<string, string>, headers: IncomingHttpHeaders, req: IncomingMessage, body?: any) => Promise<any>;
10
+ }
11
+ export type Endpoint<ED extends EntityDict, BackCxt extends AsyncContext<ED>> = EndpointItem<ED, BackCxt> | EndpointItem<ED, BackCxt>[];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -1,190 +1,176 @@
1
- import { GenericAction } from '../actions/action';
2
- import { ExprOp, MakeFilter, NodeId } from './Demand';
3
- import { OneOf } from './Polyfill';
4
- import { PrimaryKey, Sequence } from './DataType';
5
- declare type TriggerDataAttributeType = '$$triggerData$$';
6
- declare type TriggerTimestampAttributeType = '$$triggerTimestamp$$';
7
- declare type PrimaryKeyAttributeType = 'id';
8
- declare type CreateAtAttributeType = '$$createAt$$';
9
- declare type UpdateAtAttributeType = '$$updateAt$$';
10
- declare type DeleteAtAttributeType = '$$deleteAt$$';
11
- declare type SeqAttributeType = '$$seq$$';
12
- export declare const TriggerDataAttribute = "$$triggerData$$";
13
- export declare const TriggerTimestampAttribute = "$$triggerTimestamp$$";
14
- export declare const PrimaryKeyAttribute = "id";
15
- export declare const CreateAtAttribute = "$$createAt$$";
16
- export declare const UpdateAtAttribute = "$$updateAt$$";
17
- export declare const DeleteAtAttribute = "$$deleteAt$$";
18
- export declare const SeqAttribute = "$$seq$$";
19
- export declare type InstinctiveAttributes = PrimaryKeyAttributeType | CreateAtAttributeType | UpdateAtAttributeType | DeleteAtAttributeType | TriggerDataAttributeType | TriggerTimestampAttributeType | SeqAttributeType;
20
- export declare const initinctiveAttributes: string[];
21
- export declare type Filter<A extends string, F extends Object | undefined = undefined> = {
22
- filter?: A extends 'create' ? undefined : F;
23
- indexFrom?: A extends 'create' ? undefined : number;
24
- count?: A extends 'create' ? undefined : number;
25
- };
26
- export declare type SelectOption = {
27
- dontCollect?: boolean;
28
- blockTrigger?: true;
29
- obscure?: boolean;
30
- forUpdate?: true;
31
- includedDeleted?: true;
32
- dummy?: 1;
33
- };
34
- export declare type OperateOption = {
35
- blockTrigger?: true;
36
- dontCollect?: boolean;
37
- dontCreateOper?: boolean;
38
- dontCreateModi?: boolean;
39
- allowExists?: boolean;
40
- modiParentId?: string;
41
- modiParentEntity?: string;
42
- dummy?: 1;
43
- };
44
- export declare type FormUpdateData<SH extends GeneralEntityShape> = Partial<{
45
- [K in keyof Omit<SH, InstinctiveAttributes>]: SH[K] | null;
46
- }>;
47
- export declare type FormCreateData<SH extends GeneralEntityShape> = Omit<SH, InstinctiveAttributes> & {
48
- id: string;
49
- };
50
- export declare type Operation<A extends GenericAction | string, DATA extends Object, FILTER extends Object | undefined = undefined, SORTER extends Object | undefined = undefined> = {
51
- id?: string;
52
- action: A;
53
- data: DATA;
54
- sorter?: SORTER;
55
- } & Filter<A, FILTER>;
56
- export declare type Selection<DATA extends Object, FILTER extends Object | undefined = undefined, SORT extends Object | undefined = undefined> = Operation<'select', DATA, FILTER, SORT>;
57
- export interface EntityShape {
58
- id: PrimaryKey;
59
- $$seq$$: Sequence;
60
- $$createAt$$: number | Date;
61
- $$updateAt$$: number | Date;
62
- $$deleteAt$$?: number | Date | null;
63
- }
64
- export interface FileCarrierEntityShape extends EntityShape {
65
- }
66
- interface GeneralEntityShape extends EntityShape {
67
- [K: string]: any;
68
- }
69
- export declare type MakeAction<A extends string> = A;
70
- export interface EntityDef {
71
- Schema: GeneralEntityShape;
72
- OpSchema: GeneralEntityShape;
73
- Action: string;
74
- ParticularAction?: string;
75
- Selection: Omit<DeduceSelection<this['Schema']>, 'action'>;
76
- Aggregation: Omit<DeduceAggregation<this['Schema'], DeduceProjection<this['Schema']>, DeduceFilter<this['Schema']>, DeduceSorter<this['Schema']>>, 'action'>;
77
- Operation: DeduceOperation<this['Schema']>;
78
- Create: DeduceCreateOperation<this['Schema']>;
79
- CreateSingle: DeduceCreateSingleOperation<this['Schema']>;
80
- CreateMulti: DeduceCreateMultipleOperation<this['Schema']>;
81
- Update: DeduceUpdateOperation<this['Schema']>;
82
- Remove: DeduceRemoveOperation<this['Schema']>;
83
- }
84
- export interface EntityDict {
85
- [E: string]: EntityDef;
86
- }
87
- export interface OtmSubProjection extends Omit<DeduceSelection<any>, 'action'> {
88
- $entity: string;
89
- }
90
- declare type DeduceProjection<SH extends GeneralEntityShape> = {
91
- '#id'?: NodeId;
92
- } & {
93
- [K in keyof SH]?: number | OtmSubProjection | any;
94
- } & Partial<ExprOp<keyof SH | string>>;
95
- export declare type AggregationOp = `#max-${number}` | `#min-${number}` | `#avg-${number}` | `#count-${number}` | `#sum-${number}`;
96
- export declare type DeduceAggregationData<SH extends GeneralEntityShape, P extends DeduceProjection<SH>> = {
97
- [A in AggregationOp]?: P;
98
- } & {
99
- '#aggr'?: P;
100
- };
101
- export declare type AggregationResult<SH extends GeneralEntityShape> = Array<{
102
- [A in AggregationOp]?: number | string;
103
- } & {
104
- '#data'?: Partial<SH>;
105
- }>;
106
- export declare type AttrFilter<SH extends GeneralEntityShape> = {
107
- [K in keyof SH]: any;
108
- };
109
- export declare type DeduceFilter<SH extends GeneralEntityShape> = MakeFilter<AttrFilter<SH> & ExprOp<keyof SH>>;
110
- export declare type DeduceSorterAttr<SH extends GeneralEntityShape> = OneOf<{
111
- [K: string]: number | object | undefined;
112
- } & ExprOp<keyof SH>>;
113
- export declare type DeduceSorterItem<SH extends GeneralEntityShape> = {
114
- $attr: DeduceSorterAttr<SH>;
115
- $direction?: "asc" | "desc";
116
- };
117
- export declare type DeduceSorter<SH extends GeneralEntityShape> = Array<DeduceSorterItem<SH>>;
118
- export declare type DeduceSelection<SH extends GeneralEntityShape> = Selection<DeduceProjection<SH>, DeduceFilter<SH>, DeduceSorter<SH>>;
119
- export declare type DeduceAggregation<SH extends GeneralEntityShape, P extends DeduceProjection<SH>, F extends DeduceFilter<SH>, S extends DeduceSorter<SH>> = Omit<Operation<'aggregate', DeduceAggregationData<SH, P>, F, S>, 'action'>;
120
- export declare type DeduceCreateOperationData<SH extends GeneralEntityShape> = {
121
- id: string;
122
- } & {
123
- [k in keyof Omit<SH, InstinctiveAttributes>]?: any;
124
- };
125
- export declare type DeduceCreateSingleOperation<SH extends GeneralEntityShape> = Operation<'create', DeduceCreateOperationData<SH>>;
126
- export declare type DeduceCreateMultipleOperation<SH extends GeneralEntityShape> = Operation<'create', Array<DeduceCreateOperationData<SH>>>;
127
- export declare type DeduceCreateOperation<SH extends GeneralEntityShape> = DeduceCreateSingleOperation<SH> | DeduceCreateMultipleOperation<SH>;
128
- export declare type DeduceUpdateOperationData<SH extends GeneralEntityShape> = {
129
- [k in keyof Omit<SH, InstinctiveAttributes>]?: any;
130
- };
131
- export declare type DeduceUpdateOperation<SH extends GeneralEntityShape> = Operation<'update' | string, DeduceUpdateOperationData<SH>, DeduceFilter<SH>, DeduceSorter<SH>>;
132
- export declare type DeduceRemoveOperationData<SH extends GeneralEntityShape> = {
133
- [A in keyof Omit<SH, InstinctiveAttributes>]?: any;
134
- };
135
- export declare type DeduceRemoveOperation<SH extends GeneralEntityShape> = Operation<'remove', DeduceRemoveOperationData<SH>, DeduceFilter<SH>, DeduceSorter<SH>>;
136
- export declare type DeduceOperation<SH extends GeneralEntityShape> = DeduceCreateOperation<SH> | DeduceUpdateOperation<SH> | DeduceRemoveOperation<SH>;
137
- export declare type CreateOpResult<ED extends EntityDict, T extends keyof ED> = {
138
- a: 'c';
139
- e: T;
140
- d: ED[T]['OpSchema'] | ED[T]['OpSchema'][];
141
- };
142
- export declare type UpdateOpResult<ED extends EntityDict, T extends keyof ED> = {
143
- a: 'u';
144
- e: T;
145
- d: DeduceUpdateOperationData<ED[T]['Schema']>;
146
- f?: DeduceFilter<ED[T]['Schema']>;
147
- };
148
- export declare type RemoveOpResult<ED extends EntityDict, T extends keyof ED> = {
149
- a: 'r';
150
- e: T;
151
- f?: DeduceFilter<ED[T]['Schema']>;
152
- };
153
- export declare type RelationHierarchy<R extends string> = {
154
- [K in R]?: R[];
155
- };
156
- export declare type SelectOpResult<ED extends EntityDict> = {
157
- a: 's';
158
- d: {
159
- [T in keyof ED]?: {
160
- [ID: string]: ED[T]['OpSchema'];
161
- };
162
- };
163
- };
164
- export declare type OpRecord<ED extends EntityDict> = CreateOpResult<ED, keyof ED> | UpdateOpResult<ED, keyof ED> | RemoveOpResult<ED, keyof ED> | SelectOpResult<ED>;
165
- export declare type OperationResult<ED extends EntityDict> = {
166
- [K in keyof ED]?: {
167
- [A in ED[K]['Action']]?: number;
168
- };
169
- };
170
- export declare type ActionType = 'readOnly' | 'appendOnly' | 'excludeUpdate' | 'excludeRemove' | 'crud';
171
- export declare type Configuration = {
172
- actionType?: ActionType;
173
- static?: boolean;
174
- };
175
- export declare type Exportation<ED extends EntityDict, T extends keyof ED, K extends string> = {
176
- name: string;
177
- id: string;
178
- entity: T;
179
- projection: ED[T]['Selection']['data'];
180
- headers: K[];
181
- fn: (data: ED[T]['Schema']) => Partial<Record<K, string | number | boolean | null>>;
182
- };
183
- export declare type Importation<ED extends EntityDict, T extends keyof ED, K extends string> = {
184
- name: string;
185
- id: string;
186
- entity: T;
187
- headers: K[];
188
- fn: (data: Partial<Record<K, string | number | boolean>>) => ED[T]['CreateSingle']['data'];
189
- };
190
- export {};
1
+ import { PrimaryKey, Sequence } from './DataType';
2
+ type TriggerDataAttributeType = '$$triggerData$$';
3
+ type TriggerTimestampAttributeType = '$$triggerTimestamp$$';
4
+ type PrimaryKeyAttributeType = 'id';
5
+ type CreateAtAttributeType = '$$createAt$$';
6
+ type UpdateAtAttributeType = '$$updateAt$$';
7
+ type DeleteAtAttributeType = '$$deleteAt$$';
8
+ type SeqAttributeType = '$$seq$$';
9
+ export declare const TriggerDataAttribute = "$$triggerData$$";
10
+ export declare const TriggerTimestampAttribute = "$$triggerTimestamp$$";
11
+ export declare const PrimaryKeyAttribute = "id";
12
+ export declare const CreateAtAttribute = "$$createAt$$";
13
+ export declare const UpdateAtAttribute = "$$updateAt$$";
14
+ export declare const DeleteAtAttribute = "$$deleteAt$$";
15
+ export declare const SeqAttribute = "$$seq$$";
16
+ export type InstinctiveAttributes = PrimaryKeyAttributeType | CreateAtAttributeType | UpdateAtAttributeType | DeleteAtAttributeType | TriggerDataAttributeType | TriggerTimestampAttributeType | SeqAttributeType;
17
+ export declare const initinctiveAttributes: string[];
18
+ type FilterPart<A extends string, F extends Object | undefined> = {
19
+ filter?: A extends 'create' ? undefined : F;
20
+ indexFrom?: A extends 'create' ? undefined : number;
21
+ count?: A extends 'create' ? undefined : number;
22
+ };
23
+ export type SelectOption = {
24
+ dontCollect?: boolean;
25
+ blockTrigger?: true;
26
+ obscure?: boolean;
27
+ forUpdate?: true;
28
+ includedDeleted?: true;
29
+ dummy?: 1;
30
+ };
31
+ export type OperateOption = {
32
+ blockTrigger?: true;
33
+ dontCollect?: boolean;
34
+ dontCreateOper?: boolean;
35
+ dontCreateModi?: boolean;
36
+ allowExists?: boolean;
37
+ modiParentId?: string;
38
+ modiParentEntity?: string;
39
+ dummy?: 1;
40
+ };
41
+ export type FormUpdateData<SH extends GeneralEntityShape> = Partial<{
42
+ [K in keyof Omit<SH, InstinctiveAttributes>]: SH[K] | null;
43
+ }>;
44
+ export type FormCreateData<SH extends GeneralEntityShape> = Partial<Omit<SH, InstinctiveAttributes>> & {
45
+ id: string;
46
+ };
47
+ export type Operation<A extends string, D extends Projection, F extends Filter | undefined = undefined, S extends Sorter | undefined = undefined> = {
48
+ id?: string;
49
+ action: A;
50
+ data: D;
51
+ sorter?: S;
52
+ } & FilterPart<A, F>;
53
+ export interface EntityShape {
54
+ id: PrimaryKey;
55
+ $$seq$$: Sequence;
56
+ $$createAt$$: number | Date;
57
+ $$updateAt$$: number | Date;
58
+ $$deleteAt$$?: number | Date | null;
59
+ }
60
+ interface GeneralEntityShape extends EntityShape {
61
+ [K: string]: any;
62
+ }
63
+ export type MakeAction<A extends string> = A;
64
+ export interface EntityDef {
65
+ Schema: GeneralEntityShape;
66
+ OpSchema: GeneralEntityShape;
67
+ Action: string;
68
+ ParticularAction?: string;
69
+ Selection: Omit<Operation<'select', Projection, Filter, Sorter>, 'action'>;
70
+ Aggregation: Omit<DeduceAggregation<Projection, Filter, Sorter>, 'action'>;
71
+ Operation: CUDOperation;
72
+ Create: CreateOperation;
73
+ CreateSingle: CreateSingleOperation;
74
+ CreateMulti: CreateMultipleOperation;
75
+ Update: UpdateOperation;
76
+ Remove: RemoveOperation;
77
+ Relation?: string;
78
+ }
79
+ export interface EntityDict {
80
+ [E: string]: EntityDef;
81
+ }
82
+ export interface OtmSubProjection extends Omit<Operation<'select', any, any, any>, 'action'> {
83
+ $entity: string;
84
+ }
85
+ export type AggregationOp = `#max-${number}` | `#min-${number}` | `#avg-${number}` | `#count-${number}` | `#sum-${number}`;
86
+ export type DeduceAggregationData<P extends Projection> = {
87
+ [A in AggregationOp]?: P;
88
+ } & {
89
+ '#aggr'?: P;
90
+ };
91
+ export type AggregationResult<SH extends GeneralEntityShape> = Array<{
92
+ [A in AggregationOp]?: number | string;
93
+ } & {
94
+ '#data'?: Partial<SH>;
95
+ }>;
96
+ export type AttrFilter<SH extends GeneralEntityShape> = {
97
+ [K in keyof SH]?: any;
98
+ };
99
+ type SortAttr = {
100
+ [K: string]: any;
101
+ };
102
+ type SorterItem = {
103
+ $attr: SortAttr;
104
+ $direction?: "asc" | "desc";
105
+ };
106
+ type Sorter = Array<SorterItem>;
107
+ type Filter = {
108
+ [K: string]: any;
109
+ };
110
+ type Projection = {
111
+ [K: string]: any;
112
+ };
113
+ export type DeduceAggregation<P extends Projection, F extends Filter, S extends Sorter> = Omit<Operation<'aggregate', DeduceAggregationData<P>, F, S>, 'action'>;
114
+ type CreateOperationData = {
115
+ id: string;
116
+ [K: string]: any;
117
+ };
118
+ type CreateSingleOperation = Operation<'create', CreateOperationData, undefined, undefined>;
119
+ type CreateMultipleOperation = Operation<'create', Array<CreateOperationData>, undefined, undefined>;
120
+ type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
121
+ type UpdateOperationData = {
122
+ id?: never;
123
+ [k: string]: any;
124
+ };
125
+ export type UpdateOperation = Operation<string, UpdateOperationData, Filter, Sorter>;
126
+ type RemoveOperationData = {
127
+ [k: string]: any;
128
+ };
129
+ export type RemoveOperation = Operation<'remove', RemoveOperationData, Filter, Sorter>;
130
+ export type CUDOperation = CreateOperation | UpdateOperation | RemoveOperation;
131
+ export type CreateOpResult<ED extends EntityDict, T extends keyof ED> = {
132
+ a: 'c';
133
+ e: T;
134
+ d: ED[T]['OpSchema'] | ED[T]['OpSchema'][];
135
+ };
136
+ export type UpdateOpResult<ED extends EntityDict, T extends keyof ED> = {
137
+ a: 'u';
138
+ e: T;
139
+ d: UpdateOperationData;
140
+ f?: Filter;
141
+ };
142
+ export type RemoveOpResult<ED extends EntityDict, T extends keyof ED> = {
143
+ a: 'r';
144
+ e: T;
145
+ f?: Filter;
146
+ };
147
+ export type RelationHierarchy<R extends string> = {
148
+ [K in R]?: R[];
149
+ };
150
+ export type CascadeRelationItem = {
151
+ cascadePath: string;
152
+ relations?: string[];
153
+ };
154
+ export type CascadeRelationAuth<R extends string> = {
155
+ [K in R]?: CascadeRelationItem | (CascadeRelationItem | CascadeRelationItem[])[];
156
+ };
157
+ export type SelectOpResult<ED extends EntityDict> = {
158
+ a: 's';
159
+ d: {
160
+ [T in keyof ED]?: {
161
+ [ID: string]: ED[T]['OpSchema'];
162
+ };
163
+ };
164
+ };
165
+ export type OpRecord<ED extends EntityDict> = CreateOpResult<ED, keyof ED> | UpdateOpResult<ED, keyof ED> | RemoveOpResult<ED, keyof ED> | SelectOpResult<ED>;
166
+ export type OperationResult<ED extends EntityDict> = {
167
+ [K in keyof ED]?: {
168
+ [A in ED[K]['Action']]?: number;
169
+ };
170
+ };
171
+ export type ActionType = 'readOnly' | 'appendOnly' | 'excludeUpdate' | 'excludeRemove' | 'crud';
172
+ export type Configuration = {
173
+ actionType?: ActionType;
174
+ static?: boolean;
175
+ };
176
+ export {};
@@ -1,15 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initinctiveAttributes = exports.SeqAttribute = exports.DeleteAtAttribute = exports.UpdateAtAttribute = exports.CreateAtAttribute = exports.PrimaryKeyAttribute = exports.TriggerTimestampAttribute = exports.TriggerDataAttribute = void 0;
4
- exports.TriggerDataAttribute = '$$triggerData$$';
5
- exports.TriggerTimestampAttribute = '$$triggerTimestamp$$';
6
- exports.PrimaryKeyAttribute = 'id';
7
- exports.CreateAtAttribute = '$$createAt$$';
8
- exports.UpdateAtAttribute = '$$updateAt$$';
9
- exports.DeleteAtAttribute = '$$deleteAt$$';
10
- exports.SeqAttribute = '$$seq$$';
11
- exports.initinctiveAttributes = [exports.PrimaryKeyAttribute, exports.TriggerDataAttribute, exports.TriggerTimestampAttribute, exports.CreateAtAttribute, exports.UpdateAtAttribute, exports.DeleteAtAttribute, exports.SeqAttribute];
12
- ;
13
- ;
14
- ;
15
- ;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initinctiveAttributes = exports.SeqAttribute = exports.DeleteAtAttribute = exports.UpdateAtAttribute = exports.CreateAtAttribute = exports.PrimaryKeyAttribute = exports.TriggerTimestampAttribute = exports.TriggerDataAttribute = void 0;
4
+ exports.TriggerDataAttribute = '$$triggerData$$';
5
+ exports.TriggerTimestampAttribute = '$$triggerTimestamp$$';
6
+ exports.PrimaryKeyAttribute = 'id';
7
+ exports.CreateAtAttribute = '$$createAt$$';
8
+ exports.UpdateAtAttribute = '$$updateAt$$';
9
+ exports.DeleteAtAttribute = '$$deleteAt$$';
10
+ exports.SeqAttribute = '$$seq$$';
11
+ exports.initinctiveAttributes = [exports.PrimaryKeyAttribute, exports.TriggerDataAttribute, exports.TriggerTimestampAttribute, exports.CreateAtAttribute, exports.UpdateAtAttribute, exports.DeleteAtAttribute, exports.SeqAttribute];
12
+ ;
13
+ ;
14
+ ;