oak-domain 1.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 (89) hide show
  1. package/lib/OakError.d.ts +7 -0
  2. package/lib/OakError.js +29 -0
  3. package/lib/actions/action.d.ts +6 -0
  4. package/lib/actions/action.js +12 -0
  5. package/lib/actions/relation.d.ts +1 -0
  6. package/lib/actions/relation.js +2 -0
  7. package/lib/compiler/env.d.ts +10 -0
  8. package/lib/compiler/env.js +26 -0
  9. package/lib/compiler/schemalBuilder.d.ts +2 -0
  10. package/lib/compiler/schemalBuilder.js +2738 -0
  11. package/lib/compiler/uiBuilder.d.ts +1 -0
  12. package/lib/compiler/uiBuilder.js +3 -0
  13. package/lib/compiler/utils.d.ts +2 -0
  14. package/lib/compiler/utils.js +11 -0
  15. package/lib/store/CascadeStore.d.ts +38 -0
  16. package/lib/store/CascadeStore.js +681 -0
  17. package/lib/store/TriggerExecutor.d.ts +30 -0
  18. package/lib/store/TriggerExecutor.js +549 -0
  19. package/lib/store/UniversalContext.d.ts +26 -0
  20. package/lib/store/UniversalContext.js +208 -0
  21. package/lib/store/actionDef.d.ts +8 -0
  22. package/lib/store/actionDef.js +241 -0
  23. package/lib/store/filter.d.ts +36 -0
  24. package/lib/store/filter.js +121 -0
  25. package/lib/store/relation.d.ts +13 -0
  26. package/lib/store/relation.js +64 -0
  27. package/lib/store/watchers.d.ts +2 -0
  28. package/lib/store/watchers.js +32 -0
  29. package/lib/types/Action.d.ts +14 -0
  30. package/lib/types/Action.js +2 -0
  31. package/lib/types/AppLoader.d.ts +11 -0
  32. package/lib/types/AppLoader.js +10 -0
  33. package/lib/types/Aspect.d.ts +12 -0
  34. package/lib/types/Aspect.js +4 -0
  35. package/lib/types/Auth.d.ts +28 -0
  36. package/lib/types/Auth.js +2 -0
  37. package/lib/types/Connector.d.ts +26 -0
  38. package/lib/types/Connector.js +9 -0
  39. package/lib/types/Context.d.ts +14 -0
  40. package/lib/types/Context.js +3 -0
  41. package/lib/types/DataType.d.ts +17 -0
  42. package/lib/types/DataType.js +5 -0
  43. package/lib/types/Demand.d.ts +77 -0
  44. package/lib/types/Demand.js +9 -0
  45. package/lib/types/Entity.d.ts +138 -0
  46. package/lib/types/Entity.js +8 -0
  47. package/lib/types/Exception.d.ts +48 -0
  48. package/lib/types/Exception.js +178 -0
  49. package/lib/types/Expression.d.ts +132 -0
  50. package/lib/types/Expression.js +378 -0
  51. package/lib/types/Geo.d.ts +18 -0
  52. package/lib/types/Geo.js +2 -0
  53. package/lib/types/Locale.d.ts +24 -0
  54. package/lib/types/Locale.js +2 -0
  55. package/lib/types/Logger.d.ts +5 -0
  56. package/lib/types/Logger.js +3 -0
  57. package/lib/types/Polyfill.d.ts +23 -0
  58. package/lib/types/Polyfill.js +2 -0
  59. package/lib/types/RowStore.d.ts +22 -0
  60. package/lib/types/RowStore.js +33 -0
  61. package/lib/types/Storage.d.ts +48 -0
  62. package/lib/types/Storage.js +2 -0
  63. package/lib/types/Trigger.d.ts +105 -0
  64. package/lib/types/Trigger.js +24 -0
  65. package/lib/types/Txn.d.ts +2 -0
  66. package/lib/types/Txn.js +3 -0
  67. package/lib/types/Watcher.d.ts +19 -0
  68. package/lib/types/Watcher.js +4 -0
  69. package/lib/types/index.d.ts +18 -0
  70. package/lib/types/index.js +30 -0
  71. package/lib/types/schema/DataTypes.d.ts +32 -0
  72. package/lib/types/schema/DataTypes.js +3 -0
  73. package/lib/utils/SimpleConnector.d.ts +29 -0
  74. package/lib/utils/SimpleConnector.js +145 -0
  75. package/lib/utils/assert.d.ts +5 -0
  76. package/lib/utils/assert.js +11 -0
  77. package/lib/utils/concurrent.d.ts +15 -0
  78. package/lib/utils/concurrent.js +138 -0
  79. package/lib/utils/geo.d.ts +4 -0
  80. package/lib/utils/geo.js +24 -0
  81. package/lib/utils/lodash.d.ts +16 -0
  82. package/lib/utils/lodash.js +32 -0
  83. package/lib/utils/string.d.ts +2 -0
  84. package/lib/utils/string.js +11 -0
  85. package/lib/utils/uuid.d.ts +2 -0
  86. package/lib/utils/uuid.js +11 -0
  87. package/lib/utils/validator.d.ts +23 -0
  88. package/lib/utils/validator.js +123 -0
  89. package/package.json +38 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ import { EntityShape } from "./Entity";
2
+ declare type Language = 'zh_CN' | 'en_US';
3
+ declare type LocaleOfSchema<S extends Record<string, any>> = {
4
+ [A in keyof Required<Omit<S, keyof EntityShape>>]: string;
5
+ };
6
+ declare type LocaleOfStringEnum<A extends string> = {
7
+ [K in A]: string;
8
+ };
9
+ declare type LocaleOfValue<V extends Record<string, string>> = {
10
+ [K in keyof V]: {
11
+ [K2 in V[K]]: string;
12
+ };
13
+ };
14
+ export declare type LocaleDef<Sc extends Record<string, any>, Ac extends string, R extends string, V extends Record<string, string>> = {
15
+ [L in Language]?: {
16
+ attr: LocaleOfSchema<Sc> & {
17
+ [A in keyof V]: string;
18
+ };
19
+ action?: LocaleOfStringEnum<Ac>;
20
+ r?: LocaleOfStringEnum<R>;
21
+ v?: LocaleOfValue<V>;
22
+ };
23
+ };
24
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface Logger {
2
+ error(...data: any[]): void;
3
+ info(...data: any[]): void;
4
+ log(...data: any[]): void;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -0,0 +1,23 @@
1
+ export declare type OmitInferKey<T, R> = {
2
+ [K in keyof T as T extends R ? never : K]: T[K];
3
+ };
4
+ export declare type OmitInferValue<T, R> = {
5
+ [K in keyof T as T extends R ? never : K]: T[K];
6
+ };
7
+ export declare type ValueOf<Obj> = Obj[keyof Obj];
8
+ export declare type OneOnly<Obj, Key extends keyof Obj> = {
9
+ [key in Exclude<keyof Obj, Key>]?: undefined;
10
+ } & Pick<Obj, Key>;
11
+ export declare type OneOfByKey<Obj> = {
12
+ [key in keyof Obj]: OneOnly<Obj, key>;
13
+ };
14
+ export declare type OneOf<Obj> = ValueOf<OneOfByKey<Obj>>;
15
+ declare type IsOptional<T, K extends keyof T> = {
16
+ [K1 in Exclude<keyof T, K>]: T[K1];
17
+ } & {
18
+ K?: T[K];
19
+ } extends T ? K : never;
20
+ export declare type OptionalKeys<T> = {
21
+ [K in keyof T]: IsOptional<T, K>;
22
+ }[keyof T];
23
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ import { OperationResult, OperateOption, EntityDict, SelectionResult } from './Entity';
2
+ import { Context } from './Context';
3
+ import { StorageSchema } from './Storage';
4
+ import { OakErrorDefDict } from '../OakError';
5
+ import { SelectOption } from '.';
6
+ export declare type TxnOption = {
7
+ isolationLevel: 'repeatable read' | 'serializable';
8
+ };
9
+ export declare abstract class RowStore<ED extends EntityDict, Cxt extends Context<ED>> {
10
+ static $$LEVEL: string;
11
+ static $$CODES: OakErrorDefDict;
12
+ protected storageSchema: StorageSchema<ED>;
13
+ abstract operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option?: OP): Promise<OperationResult<ED>>;
14
+ abstract select<T extends keyof ED, S extends ED[T]['Selection'], OP extends SelectOption>(entity: T, selection: S, context: Cxt, option?: OP): Promise<SelectionResult<ED[T]['Schema'], S['data']>>;
15
+ abstract count<T extends keyof ED, OP extends SelectOption>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: Cxt, option?: OP): Promise<number>;
16
+ constructor(storageSchema: StorageSchema<ED>);
17
+ abstract begin(option?: TxnOption): Promise<string>;
18
+ abstract commit(txnId: string): Promise<void>;
19
+ abstract rollback(txnId: string): Promise<void>;
20
+ getSchema(): StorageSchema<ED>;
21
+ mergeOperationResult(result: OperationResult<ED>, toBeMerged: OperationResult<ED>): void;
22
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RowStore = void 0;
4
+ var lodash_1 = require("../utils/lodash");
5
+ var RowStore = /** @class */ (function () {
6
+ function RowStore(storageSchema) {
7
+ this.storageSchema = storageSchema;
8
+ }
9
+ RowStore.prototype.getSchema = function () {
10
+ return this.storageSchema;
11
+ };
12
+ RowStore.prototype.mergeOperationResult = function (result, toBeMerged) {
13
+ for (var entity in toBeMerged) {
14
+ for (var action in toBeMerged[entity]) {
15
+ var value = (0, lodash_1.get)(result, "".concat(entity, ".").concat(action));
16
+ if (typeof value === 'number') {
17
+ (0, lodash_1.set)(result, "".concat(entity, ".").concat(action), value + toBeMerged[entity][action]);
18
+ }
19
+ else {
20
+ (0, lodash_1.set)(result, "".concat(entity, ".").concat(action), toBeMerged[entity][action]);
21
+ }
22
+ }
23
+ }
24
+ };
25
+ RowStore.$$LEVEL = 'store';
26
+ RowStore.$$CODES = {
27
+ primaryKeyConfilict: [1, '主键重复'],
28
+ expressionUnresolved: [2, '表达式无法计算完成'],
29
+ nodeIdRepeated: [3, '查询或投影中的nodeId重复'],
30
+ };
31
+ return RowStore;
32
+ }());
33
+ exports.RowStore = RowStore;
@@ -0,0 +1,48 @@
1
+ import { EntityDict, EntityShape, InstinctiveAttributes } from './Entity';
2
+ import { DataType, DataTypeParams } from './schema/DataTypes';
3
+ export declare type Ref = 'ref';
4
+ export interface Column<SH extends EntityShape> {
5
+ name: keyof SH | `${string}State`;
6
+ size?: number;
7
+ direction?: 'ASC' | 'DESC';
8
+ }
9
+ export interface IndexConfig {
10
+ unique?: boolean;
11
+ type?: 'fulltext' | 'btree' | 'hash' | 'spatial';
12
+ parser?: 'ngram';
13
+ }
14
+ export interface Index<SH extends EntityShape> {
15
+ name: string;
16
+ attributes: Column<SH>[];
17
+ config?: IndexConfig;
18
+ }
19
+ export interface Attribute {
20
+ type: DataType | Ref;
21
+ params?: DataTypeParams;
22
+ ref?: string;
23
+ onRefDelete?: 'delete' | 'setNull' | 'ignore';
24
+ default?: string | number | boolean;
25
+ notNull?: boolean;
26
+ unique?: boolean;
27
+ }
28
+ export declare type Attributes<SH extends EntityShape> = Omit<{
29
+ [attrName in keyof SH]: Attribute;
30
+ }, InstinctiveAttributes>;
31
+ export interface EntityConfig {
32
+ }
33
+ export declare type UniqConstraint<SH extends EntityShape> = {
34
+ attributes: Array<keyof SH>;
35
+ type?: string;
36
+ };
37
+ export interface StorageDesc<SH extends EntityShape> {
38
+ storageName?: string;
39
+ comment?: string;
40
+ attributes: Attributes<SH>;
41
+ uniqueConstraints?: UniqConstraint<SH>[];
42
+ indexes?: Index<SH>[];
43
+ config?: EntityConfig;
44
+ view?: true;
45
+ }
46
+ export declare type StorageSchema<ED extends EntityDict> = {
47
+ [K in keyof ED]: StorageDesc<ED[K]['OpSchema']>;
48
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,105 @@
1
+ import { SelectOption, SelectRowShape } from ".";
2
+ import { GenericAction } from "../actions/action";
3
+ import { EntityDict, OperateOption } from "../types/Entity";
4
+ import { EntityShape, TriggerDataAttribute, TriggerTimestampAttribute } from "../types/Entity";
5
+ import { Context } from "./Context";
6
+ export declare type CheckerType = 'user' | 'row' | 'data';
7
+ export interface CreateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> {
8
+ checkerType?: CheckerType;
9
+ entity: T;
10
+ name: string;
11
+ action: 'create';
12
+ check?: (operation: ED[T]['Create']) => boolean;
13
+ fn: (event: {
14
+ operation: ED[T]['Create'];
15
+ }, context: Cxt, option?: OperateOption) => Promise<number>;
16
+ }
17
+ export interface CreateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends CreateTriggerBase<ED, T, Cxt> {
18
+ when: 'before' | 'after';
19
+ }
20
+ export interface CreateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends CreateTriggerBase<ED, T, Cxt> {
21
+ when: 'commit';
22
+ strict?: 'takeEasy' | 'makeSure';
23
+ }
24
+ export declare type CreateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = CreateTriggerInTxn<ED, T, Cxt> | CreateTriggerCrossTxn<ED, T, Cxt>;
25
+ export interface UpdateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> {
26
+ checkerType?: CheckerType;
27
+ entity: T;
28
+ name: string;
29
+ action: Exclude<ED[T]['Action'], GenericAction> | 'update' | Array<Exclude<ED[T]['Action'], GenericAction> | 'update'>;
30
+ attributes?: keyof ED[T]['OpSchema'] | Array<keyof ED[T]['OpSchema']>;
31
+ check?: (operation: ED[T]['Update']) => boolean;
32
+ fn: (event: {
33
+ operation: ED[T]['Update'];
34
+ }, context: Cxt, option?: OperateOption) => Promise<number>;
35
+ }
36
+ export interface UpdateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
37
+ when: 'before' | 'after';
38
+ }
39
+ export interface UpdateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
40
+ when: 'commit';
41
+ strict?: 'takeEasy' | 'makeSure';
42
+ }
43
+ export declare type UpdateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = UpdateTriggerInTxn<ED, T, Cxt> | UpdateTriggerCrossTxn<ED, T, Cxt>;
44
+ export interface RemoveTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> {
45
+ checkerType?: CheckerType;
46
+ entity: T;
47
+ name: string;
48
+ action: 'remove';
49
+ check?: (operation: ED[T]['Remove']) => boolean;
50
+ fn: (event: {
51
+ operation: ED[T]['Remove'];
52
+ }, context: Cxt, option?: OperateOption) => Promise<number>;
53
+ }
54
+ export interface RemoveTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
55
+ when: 'before' | 'after';
56
+ }
57
+ export interface RemoveTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
58
+ when: 'commit';
59
+ strict?: 'takeEasy' | 'makeSure';
60
+ }
61
+ export declare type RemoveTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = RemoveTriggerInTxn<ED, T, Cxt> | RemoveTriggerCrossTxn<ED, T, Cxt>;
62
+ export interface SelectTriggerBase<ED extends EntityDict, T extends keyof ED> {
63
+ checkerType?: undefined;
64
+ entity: T;
65
+ name: string;
66
+ action: 'select';
67
+ }
68
+ /**
69
+ * selection似乎不需要支持跨事务?没想清楚
70
+ * todo by Xc
71
+ */
72
+ export interface SelectTriggerBefore<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends SelectTriggerBase<ED, T> {
73
+ when: 'before';
74
+ fn: (event: {
75
+ operation: ED[T]['Selection'];
76
+ }, context: Cxt, params?: SelectOption) => Promise<number>;
77
+ }
78
+ export interface SelectTriggerAfter<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> extends SelectTriggerBase<ED, T> {
79
+ when: 'after';
80
+ fn: (event: {
81
+ operation: ED[T]['Selection'];
82
+ result: SelectRowShape<ED[T]['Schema'], ED[T]['Selection']['data']>[];
83
+ }, context: Cxt, params?: SelectOption) => Promise<number>;
84
+ }
85
+ export declare type SelectTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = SelectTriggerBefore<ED, T, Cxt> | SelectTriggerAfter<ED, T, Cxt>;
86
+ export declare type Trigger<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = CreateTrigger<ED, T, Cxt> | UpdateTrigger<ED, T, Cxt> | RemoveTrigger<ED, T, Cxt> | SelectTrigger<ED, T, Cxt>;
87
+ export interface TriggerEntityShape extends EntityShape {
88
+ $$triggerData$$?: {
89
+ name: string;
90
+ operation: object;
91
+ };
92
+ $$triggerTimestamp$$?: number;
93
+ }
94
+ export declare abstract class Executor<ED extends EntityDict, Cxt extends Context<ED>> {
95
+ static dataAttr: TriggerDataAttribute;
96
+ static timestampAttr: TriggerTimestampAttribute;
97
+ abstract registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
98
+ abstract preOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
99
+ action: 'select';
100
+ }, context: Cxt, option?: OperateOption | SelectOption): Promise<void>;
101
+ abstract postOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
102
+ action: 'select';
103
+ }, context: Cxt, option?: OperateOption | SelectOption, result?: SelectRowShape<ED[T]['Schema'], ED[T]['Selection']['data']>[]): Promise<void>;
104
+ abstract checkpoint(context: Cxt, timestamp: number): Promise<number>;
105
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Executor = void 0;
4
+ ;
5
+ ;
6
+ ;
7
+ ;
8
+ ;
9
+ ;
10
+ ;
11
+ ;
12
+ ;
13
+ ;
14
+ ;
15
+ ;
16
+ ;
17
+ var Executor = /** @class */ (function () {
18
+ function Executor() {
19
+ }
20
+ Executor.dataAttr = '$$triggerData$$';
21
+ Executor.timestampAttr = '$$triggerTimestamp$$';
22
+ return Executor;
23
+ }());
24
+ exports.Executor = Executor;
@@ -0,0 +1,2 @@
1
+ export interface Txn {
2
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -0,0 +1,19 @@
1
+ import { Context } from "./Context";
2
+ import { EntityDict, OperationResult, SelectionResult } from "./Entity";
3
+ declare type ActionData<ED extends EntityDict, T extends keyof ED> = ED[T]['Update']['data'] | ED[T]['Remove']['data'];
4
+ export interface BBWatcher<ED extends EntityDict, T extends keyof ED> {
5
+ name: string;
6
+ entity: T;
7
+ filter: ED[T]['Selection']['filter'] | (() => Promise<ED[T]['Selection']['filter']>);
8
+ action: ED[T]['Operation']['action'];
9
+ actionData: ActionData<ED, T> | (() => Promise<ActionData<ED, T>>);
10
+ }
11
+ export interface WBWatcher<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> {
12
+ name: string;
13
+ entity: T;
14
+ filter: ED[T]['Selection']['filter'] | (() => Promise<ED[T]['Selection']['filter']>);
15
+ projection: ED[T]['Selection']['data'] | (() => Promise<ED[T]['Selection']['data']>);
16
+ fn: (context: Cxt, data: SelectionResult<ED[T]['Schema'], Required<this['projection']>>['result']) => Promise<OperationResult<ED>>;
17
+ }
18
+ export declare type Watcher<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>> = BBWatcher<ED, T> | WBWatcher<ED, T, Cxt>;
19
+ export {};
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
4
+ ;
@@ -0,0 +1,18 @@
1
+ export * from './Action';
2
+ export * from './Aspect';
3
+ export * from './Auth';
4
+ export * from './Context';
5
+ export * from './DataType';
6
+ export * from './Demand';
7
+ export * from './Entity';
8
+ export * from './Expression';
9
+ export * from './Geo';
10
+ export * from './Logger';
11
+ export * from './Polyfill';
12
+ export * from './RowStore';
13
+ export * from './Storage';
14
+ export * from './Trigger';
15
+ export * from './Exception';
16
+ export * from './Watcher';
17
+ export * from './AppLoader';
18
+ export * from './Connector';
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./Action"), exports);
14
+ __exportStar(require("./Aspect"), exports);
15
+ __exportStar(require("./Auth"), exports);
16
+ __exportStar(require("./Context"), exports);
17
+ __exportStar(require("./DataType"), exports);
18
+ __exportStar(require("./Demand"), exports);
19
+ __exportStar(require("./Entity"), exports);
20
+ __exportStar(require("./Expression"), exports);
21
+ __exportStar(require("./Geo"), exports);
22
+ __exportStar(require("./Logger"), exports);
23
+ __exportStar(require("./Polyfill"), exports);
24
+ __exportStar(require("./RowStore"), exports);
25
+ __exportStar(require("./Storage"), exports);
26
+ __exportStar(require("./Trigger"), exports);
27
+ __exportStar(require("./Exception"), exports);
28
+ __exportStar(require("./Watcher"), exports);
29
+ __exportStar(require("./AppLoader"), exports);
30
+ __exportStar(require("./Connector"), exports);
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Column types used for @PrimaryGeneratedColumn() decorator.
3
+ */
4
+ export declare type PrimaryGeneratedColumnType = "int" | "int2" | "int4" | "int8" | "integer" | "tinyint" | "smallint" | "mediumint" | "bigint" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "number";
5
+ /**
6
+ * Column types where spatial properties are used.
7
+ */
8
+ export declare type SpatialColumnType = "geometry" | "geography" | "st_geometry" | "st_point";
9
+ /**
10
+ * Column types where precision and scale properties are used.
11
+ */
12
+ export declare type WithPrecisionColumnType = "float" | "double" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "real" | "double precision" | "number" | "datetime" | "datetime2" | "datetimeoffset" | "time" | "time with time zone" | "time without time zone" | "timestamp" | "timestamp without time zone" | "timestamp with time zone" | "timestamp with local time zone";
13
+ /**
14
+ * Column types where column length is used.
15
+ */
16
+ export declare type WithLengthColumnType = "character varying" | "varying character" | "char varying" | "nvarchar" | "national varchar" | "character" | "native character" | "varchar" | "char" | "nchar" | "national char" | "varchar2" | "nvarchar2" | "alphanum" | "shorttext" | "raw" | "binary" | "varbinary" | "string";
17
+ export declare type WithWidthColumnType = "tinyint" | "smallint" | "mediumint" | "int" | "bigint";
18
+ /**
19
+ * All other regular column types.
20
+ */
21
+ export declare type SimpleColumnType = "simple-array" | "simple-json" | "simple-enum" | "int2" | "integer" | "int4" | "int8" | "int64" | "unsigned big int" | "float" | "float4" | "float8" | "smallmoney" | "money" | "boolean" | "bool" | "tinyblob" | "tinytext" | "mediumblob" | "mediumtext" | "blob" | "text" | "ntext" | "citext" | "hstore" | "longblob" | "longtext" | "alphanum" | "shorttext" | "bytes" | "bytea" | "long" | "raw" | "long raw" | "bfile" | "clob" | "nclob" | "image" | "timetz" | "timestamptz" | "timestamp with local time zone" | "smalldatetime" | "date" | "interval year to month" | "interval day to second" | "interval" | "year" | "seconddate" | "point" | "line" | "lseg" | "box" | "circle" | "path" | "polygon" | "geography" | "geometry" | "linestring" | "multipoint" | "multilinestring" | "multipolygon" | "geometrycollection" | "st_geometry" | "st_point" | "int4range" | "int8range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "enum" | "set" | "cidr" | "inet" | "macaddr" | "bit" | "bit varying" | "varbit" | "tsvector" | "tsquery" | "uuid" | "xml" | "json" | "jsonb" | "varbinary" | "hierarchyid" | "sql_variant" | "rowid" | "urowid" | "uniqueidentifier" | "rowversion" | "array" | "cube" | "ltree" | "object" | "array" | "function";
22
+ /**
23
+ * Any column type column can be.
24
+ */
25
+ export declare type DataType = WithPrecisionColumnType | WithLengthColumnType | WithWidthColumnType | SpatialColumnType | SimpleColumnType;
26
+ export interface DataTypeParams {
27
+ length?: number;
28
+ width?: number;
29
+ precision?: number;
30
+ scale?: number;
31
+ signed?: boolean;
32
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ import { IncomingHttpHeaders } from "http";
3
+ import { UniversalContext } from "../store/UniversalContext";
4
+ import { Connector, EntityDict, OakException, OpRecord, RowStore } from "../types";
5
+ export declare class SimpleConnector<ED extends EntityDict, Cxt extends UniversalContext<ED>> extends Connector<ED, Cxt> {
6
+ static ROUTER: string;
7
+ private serverUrl;
8
+ private makeException;
9
+ private contextBuilder;
10
+ constructor(serverUrl: string, makeException: (exceptionData: any) => OakException, contextBuilder: (str: string | undefined) => (store: RowStore<ED, Cxt>) => Cxt);
11
+ callAspect(name: string, params: any, context: Cxt): Promise<{
12
+ result: any;
13
+ opRecords: OpRecord<ED>[];
14
+ }>;
15
+ getRouter(): string;
16
+ parseRequest(headers: IncomingHttpHeaders, body: any, store: RowStore<ED, Cxt>): {
17
+ name: string;
18
+ params: any;
19
+ context: Cxt;
20
+ };
21
+ serializeResult(result: any, context: Cxt, headers: IncomingHttpHeaders, body: any): {
22
+ body: any;
23
+ headers?: Record<string, any> | undefined;
24
+ };
25
+ serializeException(exception: OakException, headers: IncomingHttpHeaders, body: any): {
26
+ body: any;
27
+ headers?: Record<string, any> | undefined;
28
+ };
29
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.SimpleConnector = void 0;
58
+ var assert_1 = __importDefault(require("assert"));
59
+ var types_1 = require("../types");
60
+ function makeContentTypeAndBody(data) {
61
+ return {
62
+ contentType: 'application/json',
63
+ body: JSON.stringify(data),
64
+ };
65
+ }
66
+ var SimpleConnector = /** @class */ (function (_super) {
67
+ __extends(SimpleConnector, _super);
68
+ function SimpleConnector(serverUrl, makeException, contextBuilder) {
69
+ var _this = _super.call(this) || this;
70
+ _this.serverUrl = "".concat(serverUrl).concat(SimpleConnector.ROUTER);
71
+ _this.makeException = makeException;
72
+ _this.contextBuilder = contextBuilder;
73
+ return _this;
74
+ }
75
+ SimpleConnector.prototype.callAspect = function (name, params, context) {
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var cxtStr, _a, contentType, body, response, err, _b, exception, result, opRecords;
78
+ return __generator(this, function (_c) {
79
+ switch (_c.label) {
80
+ case 0: return [4 /*yield*/, context.toString()];
81
+ case 1:
82
+ cxtStr = _c.sent();
83
+ _a = makeContentTypeAndBody(params), contentType = _a.contentType, body = _a.body;
84
+ return [4 /*yield*/, global.fetch(this.serverUrl, {
85
+ method: 'POST',
86
+ headers: {
87
+ 'Content-Type': contentType,
88
+ 'oak-cxt': cxtStr,
89
+ 'oak-aspect': name,
90
+ },
91
+ body: body,
92
+ })];
93
+ case 2:
94
+ response = _c.sent();
95
+ if (response.status > 299) {
96
+ err = new types_1.OakExternalException("\u7F51\u7EDC\u8BF7\u6C42\u8FD4\u56DE\u5F02\u5E38\uFF0Cstatus\u662F".concat(response.status));
97
+ throw err;
98
+ }
99
+ return [4 /*yield*/, response.json()];
100
+ case 3:
101
+ _b = _c.sent(), exception = _b.exception, result = _b.result, opRecords = _b.opRecords;
102
+ if (exception) {
103
+ throw this.makeException(exception);
104
+ }
105
+ return [2 /*return*/, {
106
+ result: result,
107
+ opRecords: opRecords,
108
+ }];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ SimpleConnector.prototype.getRouter = function () {
114
+ return SimpleConnector.ROUTER;
115
+ };
116
+ SimpleConnector.prototype.parseRequest = function (headers, body, store) {
117
+ var oakCxtStr = headers["oak-cxt"], aspectName = headers["oak-aspect"];
118
+ (0, assert_1.default)(typeof oakCxtStr === 'string' || oakCxtStr === undefined);
119
+ (0, assert_1.default)(typeof aspectName === 'string');
120
+ var context = this.contextBuilder(oakCxtStr)(store);
121
+ return {
122
+ name: aspectName,
123
+ params: body,
124
+ context: context,
125
+ };
126
+ };
127
+ SimpleConnector.prototype.serializeResult = function (result, context, headers, body) {
128
+ return {
129
+ body: {
130
+ result: result,
131
+ opRecords: context.opRecords,
132
+ },
133
+ };
134
+ };
135
+ SimpleConnector.prototype.serializeException = function (exception, headers, body) {
136
+ return {
137
+ body: {
138
+ exception: exception.toString(),
139
+ },
140
+ };
141
+ };
142
+ SimpleConnector.ROUTER = '/aspect';
143
+ return SimpleConnector;
144
+ }(types_1.Connector));
145
+ exports.SimpleConnector = SimpleConnector;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 防止assert打包体积过大,从这里引用
3
+ */
4
+ import assert from 'assert';
5
+ export { assert, };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.assert = void 0;
7
+ /**
8
+ * 防止assert打包体积过大,从这里引用
9
+ */
10
+ var assert_1 = __importDefault(require("assert"));
11
+ exports.assert = assert_1.default;