@snowtop/ent 0.1.0-alpha1 → 0.1.0-alpha100

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 (172) hide show
  1. package/action/action.d.ts +38 -30
  2. package/action/action.js +22 -7
  3. package/action/executor.d.ts +4 -4
  4. package/action/executor.js +8 -3
  5. package/action/experimental_action.d.ts +32 -22
  6. package/action/experimental_action.js +35 -9
  7. package/action/index.d.ts +2 -0
  8. package/action/index.js +7 -1
  9. package/action/orchestrator.d.ts +48 -16
  10. package/action/orchestrator.js +343 -81
  11. package/action/privacy.d.ts +2 -2
  12. package/action/relative_value.d.ts +47 -0
  13. package/action/relative_value.js +125 -0
  14. package/action/transaction.d.ts +10 -0
  15. package/action/transaction.js +23 -0
  16. package/auth/auth.d.ts +1 -1
  17. package/core/base.d.ts +54 -27
  18. package/core/base.js +23 -1
  19. package/core/clause.d.ts +105 -3
  20. package/core/clause.js +563 -30
  21. package/core/config.d.ts +30 -1
  22. package/core/config.js +24 -1
  23. package/core/context.d.ts +5 -3
  24. package/core/context.js +20 -2
  25. package/core/convert.d.ts +1 -1
  26. package/core/date.js +1 -5
  27. package/core/db.d.ts +14 -11
  28. package/core/db.js +22 -8
  29. package/core/ent.d.ts +82 -28
  30. package/core/ent.js +692 -202
  31. package/core/loaders/assoc_count_loader.d.ts +3 -2
  32. package/core/loaders/assoc_count_loader.js +10 -2
  33. package/core/loaders/assoc_edge_loader.d.ts +3 -3
  34. package/core/loaders/assoc_edge_loader.js +13 -15
  35. package/core/loaders/index.d.ts +1 -1
  36. package/core/loaders/index.js +1 -3
  37. package/core/loaders/index_loader.d.ts +2 -2
  38. package/core/loaders/index_loader.js +1 -0
  39. package/core/loaders/loader.js +5 -5
  40. package/core/loaders/object_loader.d.ts +13 -7
  41. package/core/loaders/object_loader.js +95 -32
  42. package/core/loaders/query_loader.d.ts +6 -12
  43. package/core/loaders/query_loader.js +52 -11
  44. package/core/loaders/raw_count_loader.d.ts +2 -2
  45. package/core/loaders/raw_count_loader.js +5 -1
  46. package/core/logger.d.ts +1 -1
  47. package/core/logger.js +1 -0
  48. package/core/privacy.d.ts +26 -25
  49. package/core/privacy.js +23 -24
  50. package/core/query/assoc_query.d.ts +7 -6
  51. package/core/query/assoc_query.js +9 -1
  52. package/core/query/custom_clause_query.d.ts +26 -0
  53. package/core/query/custom_clause_query.js +78 -0
  54. package/core/query/custom_query.d.ts +20 -5
  55. package/core/query/custom_query.js +87 -12
  56. package/core/query/index.d.ts +1 -0
  57. package/core/query/index.js +3 -1
  58. package/core/query/query.d.ts +8 -4
  59. package/core/query/query.js +101 -53
  60. package/core/query/shared_assoc_test.d.ts +2 -1
  61. package/core/query/shared_assoc_test.js +35 -45
  62. package/core/query/shared_test.d.ts +8 -1
  63. package/core/query/shared_test.js +469 -236
  64. package/core/viewer.d.ts +4 -3
  65. package/core/viewer.js +5 -1
  66. package/graphql/builtins/connection.js +3 -3
  67. package/graphql/builtins/edge.js +2 -2
  68. package/graphql/builtins/node.js +1 -1
  69. package/graphql/graphql.d.ts +17 -9
  70. package/graphql/graphql.js +47 -30
  71. package/graphql/index.d.ts +1 -1
  72. package/graphql/index.js +3 -4
  73. package/graphql/mutations/union.d.ts +2 -0
  74. package/graphql/mutations/union.js +35 -0
  75. package/graphql/node_resolver.d.ts +0 -1
  76. package/graphql/query/connection_type.d.ts +9 -9
  77. package/graphql/query/connection_type.js +6 -6
  78. package/graphql/query/edge_connection.d.ts +9 -9
  79. package/graphql/query/page_info.d.ts +1 -1
  80. package/graphql/query/page_info.js +4 -4
  81. package/graphql/query/shared_assoc_test.js +3 -3
  82. package/graphql/query/shared_edge_connection.js +1 -19
  83. package/graphql/scalars/time.d.ts +1 -1
  84. package/imports/index.d.ts +6 -1
  85. package/imports/index.js +19 -4
  86. package/index.d.ts +23 -1
  87. package/index.js +32 -6
  88. package/package.json +18 -17
  89. package/parse_schema/parse.d.ts +45 -8
  90. package/parse_schema/parse.js +193 -15
  91. package/schema/base_schema.d.ts +38 -1
  92. package/schema/base_schema.js +53 -2
  93. package/schema/field.d.ts +75 -21
  94. package/schema/field.js +185 -72
  95. package/schema/index.d.ts +4 -2
  96. package/schema/index.js +15 -2
  97. package/schema/json_field.d.ts +13 -1
  98. package/schema/json_field.js +28 -1
  99. package/schema/schema.d.ts +125 -10
  100. package/schema/schema.js +133 -5
  101. package/schema/struct_field.d.ts +27 -0
  102. package/schema/struct_field.js +138 -0
  103. package/schema/union_field.d.ts +23 -0
  104. package/schema/union_field.js +79 -0
  105. package/scripts/custom_compiler.js +10 -6
  106. package/scripts/custom_graphql.js +224 -36
  107. package/scripts/{transform_schema.d.ts → migrate_v0.1.d.ts} +0 -0
  108. package/scripts/migrate_v0.1.js +36 -0
  109. package/scripts/move_types.d.ts +1 -0
  110. package/scripts/move_types.js +117 -0
  111. package/scripts/read_schema.js +35 -6
  112. package/testutils/action/complex_schemas.d.ts +69 -0
  113. package/testutils/action/complex_schemas.js +398 -0
  114. package/testutils/builder.d.ts +52 -49
  115. package/testutils/builder.js +143 -44
  116. package/testutils/context/test_context.d.ts +2 -2
  117. package/testutils/context/test_context.js +7 -1
  118. package/testutils/db/fixture.d.ts +10 -0
  119. package/testutils/db/fixture.js +26 -0
  120. package/testutils/db/{test_db.d.ts → temp_db.d.ts} +26 -9
  121. package/testutils/db/{test_db.js → temp_db.js} +190 -46
  122. package/testutils/db/value.d.ts +7 -0
  123. package/testutils/db/value.js +251 -0
  124. package/testutils/db_mock.d.ts +16 -4
  125. package/testutils/db_mock.js +51 -6
  126. package/testutils/db_time_zone.d.ts +4 -0
  127. package/testutils/db_time_zone.js +41 -0
  128. package/testutils/ent-graphql-tests/index.d.ts +9 -1
  129. package/testutils/ent-graphql-tests/index.js +53 -25
  130. package/testutils/fake_data/const.d.ts +2 -1
  131. package/testutils/fake_data/const.js +3 -0
  132. package/testutils/fake_data/fake_contact.d.ts +10 -10
  133. package/testutils/fake_data/fake_contact.js +23 -21
  134. package/testutils/fake_data/fake_event.d.ts +8 -9
  135. package/testutils/fake_data/fake_event.js +25 -28
  136. package/testutils/fake_data/fake_tag.d.ts +36 -0
  137. package/testutils/fake_data/fake_tag.js +89 -0
  138. package/testutils/fake_data/fake_user.d.ts +10 -11
  139. package/testutils/fake_data/fake_user.js +20 -23
  140. package/testutils/fake_data/index.js +5 -1
  141. package/testutils/fake_data/internal.d.ts +2 -0
  142. package/testutils/fake_data/internal.js +7 -1
  143. package/testutils/fake_data/tag_query.d.ts +13 -0
  144. package/testutils/fake_data/tag_query.js +43 -0
  145. package/testutils/fake_data/test_helpers.d.ts +11 -4
  146. package/testutils/fake_data/test_helpers.js +29 -13
  147. package/testutils/fake_data/user_query.d.ts +13 -6
  148. package/testutils/fake_data/user_query.js +54 -22
  149. package/testutils/fake_log.d.ts +3 -3
  150. package/testutils/parse_sql.d.ts +6 -0
  151. package/testutils/parse_sql.js +16 -2
  152. package/testutils/test_edge_global_schema.d.ts +15 -0
  153. package/testutils/test_edge_global_schema.js +62 -0
  154. package/testutils/write.d.ts +2 -2
  155. package/testutils/write.js +33 -7
  156. package/tsc/ast.d.ts +44 -0
  157. package/tsc/ast.js +277 -0
  158. package/tsc/compilerOptions.d.ts +6 -0
  159. package/tsc/compilerOptions.js +45 -2
  160. package/tsc/move_generated.d.ts +1 -0
  161. package/tsc/move_generated.js +164 -0
  162. package/tsc/transform.d.ts +22 -0
  163. package/tsc/transform.js +181 -0
  164. package/tsc/transform_action.d.ts +22 -0
  165. package/tsc/transform_action.js +183 -0
  166. package/tsc/transform_ent.d.ts +17 -0
  167. package/tsc/transform_ent.js +59 -0
  168. package/tsc/transform_schema.d.ts +27 -0
  169. package/tsc/transform_schema.js +383 -0
  170. package/graphql/enums.d.ts +0 -3
  171. package/graphql/enums.js +0 -25
  172. package/scripts/transform_schema.js +0 -288
@@ -1,6 +1,43 @@
1
- import { Pattern } from "./schema";
1
+ import { FieldMap, Pattern, FieldOverrideMap } from "./schema";
2
+ import { Action, AssocEdgeGroup, Constraint, Edge, Index, Schema } from ".";
2
3
  export declare const Timestamps: Pattern;
3
4
  export declare const Node: Pattern;
5
+ export interface SchemaConfig extends Schema {
6
+ }
7
+ export declare class EntSchema implements Schema {
8
+ fields: FieldMap;
9
+ fieldOverrides: FieldOverrideMap | undefined;
10
+ tableName: string | undefined;
11
+ patterns: Pattern[];
12
+ edges: Edge[] | undefined;
13
+ edgeGroups: AssocEdgeGroup[] | undefined;
14
+ actions: Action[] | undefined;
15
+ enumTable: boolean | undefined;
16
+ dbRows: {
17
+ [key: string]: any;
18
+ }[] | undefined;
19
+ constraints: Constraint[] | undefined;
20
+ indices: Index[] | undefined;
21
+ hideFromGraphQL?: boolean;
22
+ constructor(cfg: SchemaConfig);
23
+ }
24
+ export declare class EntSchemaWithTZ implements Schema {
25
+ fields: FieldMap;
26
+ fieldOverrides: FieldOverrideMap | undefined;
27
+ tableName: string | undefined;
28
+ patterns: Pattern[];
29
+ edges: Edge[] | undefined;
30
+ edgeGroups: AssocEdgeGroup[] | undefined;
31
+ actions: Action[] | undefined;
32
+ enumTable: boolean | undefined;
33
+ dbRows: {
34
+ [key: string]: any;
35
+ }[] | undefined;
36
+ constraints: Constraint[] | undefined;
37
+ indices: Index[] | undefined;
38
+ hideFromGraphQL?: boolean;
39
+ constructor(cfg: SchemaConfig);
40
+ }
4
41
  export declare abstract class BaseEntSchema {
5
42
  addPatterns(...patterns: Pattern[]): void;
6
43
  patterns: Pattern[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseEntSchemaWithTZ = exports.BaseEntSchema = exports.Node = exports.Timestamps = void 0;
3
+ exports.BaseEntSchemaWithTZ = exports.BaseEntSchema = exports.EntSchemaWithTZ = exports.EntSchema = exports.Node = exports.Timestamps = void 0;
4
4
  const uuid_1 = require("uuid");
5
5
  const field_1 = require("./field");
6
6
  let tsFields = {
@@ -66,9 +66,58 @@ let nodeFieldsWithTZ = {
66
66
  exports.Node = {
67
67
  name: "node",
68
68
  fields: nodeFields,
69
+ disableMixin: true,
69
70
  };
70
- // Base ent schema. has Node Pattern by default.
71
+ // Ent schema. has Node Pattern by default.
71
72
  // exists just to have less typing and easier for clients to implement
73
+ class EntSchema {
74
+ constructor(cfg) {
75
+ this.patterns = [exports.Node];
76
+ this.fields = cfg.fields;
77
+ this.fieldOverrides = cfg.fieldOverrides;
78
+ this.tableName = cfg.tableName;
79
+ if (cfg.patterns) {
80
+ this.patterns.push(...cfg.patterns);
81
+ }
82
+ this.edges = cfg.edges;
83
+ this.edgeGroups = cfg.edgeGroups;
84
+ this.actions = cfg.actions;
85
+ this.enumTable = cfg.enumTable;
86
+ this.dbRows = cfg.dbRows;
87
+ this.constraints = cfg.constraints;
88
+ this.indices = cfg.indices;
89
+ this.hideFromGraphQL = cfg.hideFromGraphQL;
90
+ }
91
+ }
92
+ exports.EntSchema = EntSchema;
93
+ class EntSchemaWithTZ {
94
+ constructor(cfg) {
95
+ this.patterns = [
96
+ {
97
+ // default schema added
98
+ name: "nodeWithTZ",
99
+ fields: nodeFieldsWithTZ,
100
+ disableMixin: true,
101
+ },
102
+ ];
103
+ this.fields = cfg.fields;
104
+ this.fieldOverrides = cfg.fieldOverrides;
105
+ this.tableName = cfg.tableName;
106
+ if (cfg.patterns) {
107
+ this.patterns.push(...cfg.patterns);
108
+ }
109
+ this.edges = cfg.edges;
110
+ this.edgeGroups = cfg.edgeGroups;
111
+ this.actions = cfg.actions;
112
+ this.enumTable = cfg.enumTable;
113
+ this.dbRows = cfg.dbRows;
114
+ this.constraints = cfg.constraints;
115
+ this.indices = cfg.indices;
116
+ this.hideFromGraphQL = cfg.hideFromGraphQL;
117
+ }
118
+ }
119
+ exports.EntSchemaWithTZ = EntSchemaWithTZ;
120
+ // @deprecated use EntSchema
72
121
  class BaseEntSchema {
73
122
  constructor() {
74
123
  this.patterns = [exports.Node];
@@ -78,6 +127,7 @@ class BaseEntSchema {
78
127
  }
79
128
  }
80
129
  exports.BaseEntSchema = BaseEntSchema;
130
+ // @deprecated use EntSchemaWithTZ
81
131
  class BaseEntSchemaWithTZ {
82
132
  constructor() {
83
133
  this.patterns = [
@@ -85,6 +135,7 @@ class BaseEntSchemaWithTZ {
85
135
  // default schema added
86
136
  name: "nodeWithTZ",
87
137
  fields: nodeFieldsWithTZ,
138
+ disableMixin: true,
88
139
  },
89
140
  ];
90
141
  }
package/schema/field.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Builder } from "../action/action";
1
2
  import { Field, FieldMap, FieldOptions, ForeignKey, PolymorphicOptions, Type } from "./schema";
2
3
  export declare abstract class BaseField {
3
4
  name: string;
@@ -24,31 +25,36 @@ export declare class UUIDField extends BaseField implements Field {
24
25
  valid(val: any): Promise<boolean>;
25
26
  }
26
27
  export declare function UUIDType(options?: FieldOptions): UUIDField;
27
- export interface IntegerOptions extends FieldOptions {
28
- min?: number;
29
- max?: number;
28
+ export interface IntegerOptions extends NumberOptions<number> {
30
29
  }
31
- export declare class IntegerField extends BaseField implements Field {
30
+ export interface NumberOptions<T> extends FieldOptions {
31
+ min?: T;
32
+ max?: T;
33
+ }
34
+ export declare class NumberField<T> extends BaseField {
32
35
  type: Type;
33
36
  private validators;
34
37
  private options;
35
- constructor(options?: IntegerOptions);
36
- getOptions(): IntegerOptions;
38
+ constructor(options?: NumberOptions<T>);
39
+ getOptions(): NumberOptions<T>;
37
40
  private handleOptions;
38
- min(l: number): this;
39
- max(l: number): this;
41
+ min(l: T): this;
42
+ max(l: T): this;
40
43
  valid(val: any): boolean;
41
44
  validate(validator: (str: number) => boolean): this;
42
45
  }
46
+ export declare class IntegerField extends NumberField<number> implements Field {
47
+ type: Type;
48
+ }
43
49
  export declare function IntegerType(options?: IntegerOptions): IntegerField;
44
- export declare class BigIntegerField extends BaseField implements Field {
50
+ export declare class BigIntegerField extends NumberField<BigInt> implements Field {
45
51
  type: Type;
46
52
  }
47
- export declare function BigIntegerType(options: FieldOptions): BigIntegerField;
48
- export declare class FloatField extends BaseField implements Field {
53
+ export declare function BigIntegerType(options?: NumberOptions<BigInt>): BigIntegerField;
54
+ export declare class FloatField extends NumberField<number> implements Field {
49
55
  type: Type;
50
56
  }
51
- export declare function FloatType(options?: FieldOptions): FloatField;
57
+ export declare function FloatType(options?: NumberOptions<number>): FloatField;
52
58
  export declare class BooleanField extends BaseField implements Field {
53
59
  type: Type;
54
60
  }
@@ -88,6 +94,18 @@ export declare class StringField extends BaseField implements Field {
88
94
  trimLeft(): this;
89
95
  trimRight(): this;
90
96
  }
97
+ interface PolymorphicStringOptions extends StringOptions {
98
+ parentFieldToValidate: string;
99
+ types?: string[];
100
+ }
101
+ export declare class PolymorphicStringField extends StringField {
102
+ private opts;
103
+ private camelCaseVals;
104
+ constructor(opts: PolymorphicStringOptions);
105
+ validateWithFullData(val: any, b: Builder<any>): boolean;
106
+ valid(val: any): boolean;
107
+ format(val: any): any;
108
+ }
91
109
  export declare function StringType(options?: StringOptions): StringField;
92
110
  export interface TimestampOptions extends FieldOptions {
93
111
  withTimezone?: boolean;
@@ -118,42 +136,77 @@ export declare class DateField extends BaseField implements Field {
118
136
  format(val: any): any;
119
137
  }
120
138
  export declare function DateType(options?: FieldOptions): DateField;
121
- declare type EnumMap = {
139
+ declare type StringEnumMap = {
122
140
  [key: string]: string;
123
141
  };
142
+ /**
143
+ * @deprecated use StringEnumOptions
144
+ */
124
145
  export interface EnumOptions extends FieldOptions {
125
146
  values?: string[];
126
- map?: EnumMap;
147
+ map?: StringEnumMap;
127
148
  tsType?: string;
128
149
  graphQLType?: string;
129
150
  createEnumType?: boolean;
151
+ disableUnknownType?: boolean;
130
152
  }
153
+ /**
154
+ * @deprecated Use StringEnumField
155
+ */
131
156
  export declare class EnumField extends BaseField implements Field {
132
157
  type: Type;
133
158
  private values?;
134
159
  private map?;
135
- constructor(options: EnumOptions);
136
- convertForGQL(value: string): string;
160
+ constructor(options: StringEnumOptions);
137
161
  valid(val: any): boolean;
138
162
  format(val: any): any;
139
163
  }
140
- export declare function EnumType(options: EnumOptions): EnumField;
164
+ export declare class StringEnumField extends EnumField {
165
+ }
166
+ export interface PolymorphicStringEnumOptions extends EnumOptions {
167
+ parentFieldToValidate: string;
168
+ }
169
+ export interface StringEnumOptions extends EnumOptions {
170
+ }
171
+ export declare function EnumType(options: StringEnumOptions): EnumField;
172
+ declare type IntEnumMap = {
173
+ [key: string]: number;
174
+ };
175
+ export interface IntegerEnumOptions extends FieldOptions {
176
+ map: IntEnumMap;
177
+ deprecated?: IntEnumMap;
178
+ tsType?: string;
179
+ graphQLType?: string;
180
+ }
181
+ export declare class IntegerEnumField extends BaseField implements Field {
182
+ type: Type;
183
+ private map;
184
+ constructor(options: IntegerEnumOptions);
185
+ valid(val: any): boolean;
186
+ format(val: any): any;
187
+ }
188
+ export declare function IntegerEnumType(options: IntegerEnumOptions): IntegerEnumField;
189
+ interface ListOptions extends FieldOptions {
190
+ disableJSONStringify?: boolean;
191
+ }
141
192
  export declare class ListField extends BaseField {
142
193
  private field;
194
+ private options?;
143
195
  type: Type;
144
196
  private validators;
145
- constructor(field: Field, options?: FieldOptions);
197
+ constructor(field: Field, options?: ListOptions | undefined);
198
+ __getElemField(): Field;
146
199
  validate(validator: (val: any[]) => boolean): this;
147
200
  valid(val: any): Promise<boolean>;
148
201
  private postgresVal;
149
- format(val: any): any;
202
+ format(val: any, nested?: boolean): any;
150
203
  minLen(l: number): this;
151
204
  maxLen(l: number): this;
152
205
  length(l: number): this;
153
206
  range(start: any, stop: any): this;
154
207
  }
155
208
  export declare function StringListType(options?: StringOptions): ListField;
156
- export declare function IntListType(options: FieldOptions): ListField;
209
+ export declare function IntListType(options?: FieldOptions): ListField;
157
210
  export declare function IntegerListType(options?: FieldOptions): ListField;
158
211
  export declare function FloatListType(options?: FieldOptions): ListField;
159
212
  export declare function BigIntegerListType(options: FieldOptions): ListField;
@@ -163,6 +216,7 @@ export declare function TimestamptzListType(options?: TimestampOptions): ListFie
163
216
  export declare function TimeListType(options?: TimeOptions): ListField;
164
217
  export declare function TimetzListType(options: TimeOptions): ListField;
165
218
  export declare function DateListType(options?: FieldOptions): ListField;
166
- export declare function EnumListType(options: EnumOptions): ListField;
219
+ export declare function EnumListType(options: StringEnumOptions): ListField;
220
+ export declare function IntegerEnumListType(options: IntegerEnumOptions): ListField;
167
221
  export declare function UUIDListType(options?: FieldOptions): ListField;
168
222
  export {};