@snowtop/ent 0.1.0-alpha10 → 0.1.0-alpha101

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 (158) hide show
  1. package/action/action.d.ts +37 -31
  2. package/action/action.js +22 -7
  3. package/action/executor.d.ts +3 -3
  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 +40 -16
  10. package/action/orchestrator.js +230 -62
  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 +49 -26
  18. package/core/base.js +7 -1
  19. package/core/clause.d.ts +88 -7
  20. package/core/clause.js +355 -63
  21. package/core/config.d.ts +12 -1
  22. package/core/config.js +7 -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 +11 -8
  28. package/core/db.js +20 -8
  29. package/core/ent.d.ts +81 -25
  30. package/core/ent.js +636 -193
  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 +2 -2
  34. package/core/loaders/assoc_edge_loader.js +8 -11
  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/loader.js +5 -5
  39. package/core/loaders/object_loader.d.ts +6 -5
  40. package/core/loaders/object_loader.js +67 -59
  41. package/core/loaders/query_loader.d.ts +6 -12
  42. package/core/loaders/query_loader.js +52 -11
  43. package/core/loaders/raw_count_loader.d.ts +2 -2
  44. package/core/loaders/raw_count_loader.js +5 -1
  45. package/core/logger.d.ts +1 -1
  46. package/core/logger.js +1 -0
  47. package/core/privacy.d.ts +25 -24
  48. package/core/privacy.js +21 -25
  49. package/core/query/assoc_query.d.ts +7 -6
  50. package/core/query/assoc_query.js +9 -1
  51. package/core/query/custom_clause_query.d.ts +26 -0
  52. package/core/query/custom_clause_query.js +78 -0
  53. package/core/query/custom_query.d.ts +20 -5
  54. package/core/query/custom_query.js +87 -12
  55. package/core/query/index.d.ts +1 -0
  56. package/core/query/index.js +3 -1
  57. package/core/query/query.d.ts +8 -4
  58. package/core/query/query.js +101 -53
  59. package/core/query/shared_assoc_test.d.ts +2 -1
  60. package/core/query/shared_assoc_test.js +35 -45
  61. package/core/query/shared_test.d.ts +8 -1
  62. package/core/query/shared_test.js +469 -236
  63. package/core/viewer.d.ts +3 -3
  64. package/core/viewer.js +1 -1
  65. package/graphql/graphql.d.ts +14 -7
  66. package/graphql/graphql.js +23 -7
  67. package/graphql/index.d.ts +0 -1
  68. package/graphql/index.js +1 -4
  69. package/graphql/query/connection_type.d.ts +9 -9
  70. package/graphql/query/edge_connection.d.ts +9 -9
  71. package/graphql/query/page_info.d.ts +1 -1
  72. package/graphql/query/shared_assoc_test.js +1 -1
  73. package/graphql/query/shared_edge_connection.js +1 -19
  74. package/imports/index.d.ts +6 -1
  75. package/imports/index.js +19 -4
  76. package/index.d.ts +12 -5
  77. package/index.js +20 -7
  78. package/package.json +17 -16
  79. package/parse_schema/parse.d.ts +29 -9
  80. package/parse_schema/parse.js +118 -11
  81. package/schema/base_schema.d.ts +5 -3
  82. package/schema/base_schema.js +5 -0
  83. package/schema/field.d.ts +74 -20
  84. package/schema/field.js +174 -69
  85. package/schema/index.d.ts +2 -2
  86. package/schema/index.js +5 -1
  87. package/schema/json_field.d.ts +13 -1
  88. package/schema/json_field.js +28 -1
  89. package/schema/schema.d.ts +81 -18
  90. package/schema/schema.js +24 -17
  91. package/schema/struct_field.d.ts +11 -1
  92. package/schema/struct_field.js +57 -21
  93. package/scripts/custom_compiler.js +10 -6
  94. package/scripts/custom_graphql.js +117 -30
  95. package/scripts/{transform_code.d.ts → migrate_v0.1.d.ts} +0 -0
  96. package/scripts/migrate_v0.1.js +36 -0
  97. package/scripts/{transform_schema.d.ts → move_types.d.ts} +0 -0
  98. package/scripts/move_types.js +117 -0
  99. package/scripts/read_schema.js +20 -5
  100. package/testutils/action/complex_schemas.d.ts +69 -0
  101. package/testutils/action/complex_schemas.js +398 -0
  102. package/testutils/builder.d.ts +46 -47
  103. package/testutils/builder.js +108 -65
  104. package/testutils/db/fixture.d.ts +10 -0
  105. package/testutils/db/fixture.js +26 -0
  106. package/testutils/db/{test_db.d.ts → temp_db.d.ts} +24 -8
  107. package/testutils/db/{test_db.js → temp_db.js} +179 -44
  108. package/testutils/db/value.d.ts +7 -0
  109. package/testutils/db/value.js +251 -0
  110. package/testutils/db_mock.d.ts +16 -4
  111. package/testutils/db_mock.js +51 -6
  112. package/testutils/db_time_zone.d.ts +4 -0
  113. package/testutils/db_time_zone.js +41 -0
  114. package/testutils/ent-graphql-tests/index.d.ts +7 -1
  115. package/testutils/ent-graphql-tests/index.js +27 -8
  116. package/testutils/fake_data/const.d.ts +2 -1
  117. package/testutils/fake_data/const.js +3 -0
  118. package/testutils/fake_data/fake_contact.d.ts +7 -3
  119. package/testutils/fake_data/fake_contact.js +15 -8
  120. package/testutils/fake_data/fake_event.d.ts +5 -2
  121. package/testutils/fake_data/fake_event.js +9 -7
  122. package/testutils/fake_data/fake_tag.d.ts +36 -0
  123. package/testutils/fake_data/fake_tag.js +89 -0
  124. package/testutils/fake_data/fake_user.d.ts +7 -4
  125. package/testutils/fake_data/fake_user.js +18 -16
  126. package/testutils/fake_data/index.js +5 -1
  127. package/testutils/fake_data/internal.d.ts +2 -0
  128. package/testutils/fake_data/internal.js +7 -1
  129. package/testutils/fake_data/tag_query.d.ts +13 -0
  130. package/testutils/fake_data/tag_query.js +43 -0
  131. package/testutils/fake_data/test_helpers.d.ts +11 -4
  132. package/testutils/fake_data/test_helpers.js +28 -12
  133. package/testutils/fake_data/user_query.d.ts +13 -6
  134. package/testutils/fake_data/user_query.js +54 -22
  135. package/testutils/fake_log.d.ts +3 -3
  136. package/testutils/parse_sql.d.ts +6 -0
  137. package/testutils/parse_sql.js +16 -2
  138. package/testutils/test_edge_global_schema.d.ts +15 -0
  139. package/testutils/test_edge_global_schema.js +62 -0
  140. package/testutils/write.d.ts +2 -2
  141. package/testutils/write.js +33 -7
  142. package/tsc/ast.d.ts +26 -2
  143. package/tsc/ast.js +163 -17
  144. package/tsc/compilerOptions.d.ts +2 -1
  145. package/tsc/compilerOptions.js +11 -2
  146. package/tsc/move_generated.d.ts +1 -0
  147. package/tsc/move_generated.js +164 -0
  148. package/tsc/transform.d.ts +22 -0
  149. package/tsc/transform.js +181 -0
  150. package/tsc/transform_action.d.ts +22 -0
  151. package/tsc/transform_action.js +183 -0
  152. package/tsc/transform_ent.d.ts +17 -0
  153. package/tsc/transform_ent.js +59 -0
  154. package/tsc/transform_schema.d.ts +27 -0
  155. package/{scripts → tsc}/transform_schema.js +145 -119
  156. package/graphql/enums.d.ts +0 -3
  157. package/graphql/enums.js +0 -25
  158. package/scripts/transform_code.js +0 -114
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseSchema = void 0;
4
- function processFields(src, patternName) {
4
+ const cosmiconfig_1 = require("cosmiconfig");
5
+ async function processFields(src, patternName) {
5
6
  const ret = [];
6
7
  let m = {};
7
8
  if (Array.isArray(src)) {
@@ -36,6 +37,19 @@ function processFields(src, patternName) {
36
37
  else {
37
38
  delete f.polymorphic;
38
39
  }
40
+ if (field.private) {
41
+ // convert boolean into object
42
+ // we keep boolean as an option to keep API simple
43
+ if (typeof field.private === "boolean") {
44
+ f.private = {};
45
+ }
46
+ else {
47
+ f.private = field.private;
48
+ }
49
+ }
50
+ else {
51
+ delete f.private;
52
+ }
39
53
  // convert string to object to make API consumed by go simple
40
54
  if (f.fieldEdge && f.fieldEdge.inverseEdge) {
41
55
  if (typeof f.fieldEdge.inverseEdge === "string") {
@@ -47,26 +61,48 @@ function processFields(src, patternName) {
47
61
  if (patternName) {
48
62
  f.patternName = patternName;
49
63
  }
64
+ if (field.serverDefault !== undefined) {
65
+ f.serverDefault = await transformServerDefault(name, field, field.serverDefault);
66
+ }
50
67
  transformType(field.type);
51
68
  if (field.getDerivedFields) {
52
- f.derivedFields = processFields(field.getDerivedFields(name));
69
+ f.derivedFields = await processFields(field.getDerivedFields(name));
53
70
  }
54
71
  if (field.type.subFields) {
55
- f.type.subFields = processFields(field.type.subFields);
72
+ f.type.subFields = await processFields(field.type.subFields);
56
73
  }
57
74
  if (field.type.unionFields) {
58
- f.type.unionFields = processFields(field.type.unionFields);
75
+ f.type.unionFields = await processFields(field.type.unionFields);
59
76
  }
60
77
  if (field.type.listElemType &&
61
78
  field.type.listElemType.subFields &&
62
79
  // check to avoid ts-ignore below. exists just for tsc
63
80
  f.type.listElemType) {
64
- f.type.listElemType.subFields = processFields(field.type.listElemType.subFields);
81
+ f.type.listElemType.subFields = await processFields(field.type.listElemType.subFields);
65
82
  }
66
83
  ret.push(f);
67
84
  }
68
85
  return ret;
69
86
  }
87
+ async function transformServerDefault(name, f, value) {
88
+ if (f.valid) {
89
+ if (!(await f.valid(value))) {
90
+ throw new Error(`invalid value ${value} passed to field ${name}`);
91
+ }
92
+ }
93
+ if (f.format) {
94
+ value = await f.format(value);
95
+ }
96
+ switch (typeof value) {
97
+ case "boolean":
98
+ case "number":
99
+ case "bigint":
100
+ case "string":
101
+ return `${value}`;
102
+ default:
103
+ throw new Error(`invalid value ${value} passed to field ${name}`);
104
+ }
105
+ }
70
106
  function transformImportType(typ) {
71
107
  if (!typ.importType) {
72
108
  return;
@@ -108,12 +144,12 @@ function processEdgeGroups(processedSchema, edgeGroups) {
108
144
  processedSchema.assocEdgeGroups.push(group2);
109
145
  }
110
146
  }
111
- function processPattern(patterns, pattern, processedSchema) {
147
+ async function processPattern(patterns, pattern, processedSchema) {
112
148
  let ret = {
113
149
  ...pattern,
114
150
  };
115
151
  const name = pattern.name;
116
- const fields = processFields(pattern.fields, pattern.name);
152
+ const fields = await processFields(pattern.fields, pattern.name);
117
153
  processedSchema.fields.push(...fields);
118
154
  if (pattern.edges) {
119
155
  const edges = processEdges(pattern.edges, pattern.name);
@@ -130,6 +166,7 @@ function processPattern(patterns, pattern, processedSchema) {
130
166
  name: pattern.name,
131
167
  assocEdges: edges,
132
168
  fields: fields,
169
+ disableMixin: pattern.disableMixin,
133
170
  };
134
171
  }
135
172
  else {
@@ -171,9 +208,13 @@ function processAction(action) {
171
208
  ret.actionOnlyFields = actionOnlyFields;
172
209
  return ret;
173
210
  }
174
- function parseSchema(potentialSchemas) {
211
+ async function parseSchema(potentialSchemas, globalSchema) {
175
212
  let schemas = {};
176
213
  let patterns = {};
214
+ let parsedGlobalSchema;
215
+ if (globalSchema) {
216
+ parsedGlobalSchema = await parseGlobalSchema(globalSchema);
217
+ }
177
218
  for (const key in potentialSchemas) {
178
219
  const value = potentialSchemas[key];
179
220
  let schema;
@@ -189,6 +230,7 @@ function parseSchema(potentialSchemas) {
189
230
  }
190
231
  let processedSchema = {
191
232
  fields: [],
233
+ fieldOverrides: schema.fieldOverrides,
192
234
  schemaPath: schema.schemaPath,
193
235
  tableName: schema.tableName,
194
236
  enumTable: schema.enumTable,
@@ -202,9 +244,11 @@ function parseSchema(potentialSchemas) {
202
244
  };
203
245
  // let's put patterns first just so we have id, created_at, updated_at first
204
246
  // ¯\_(ツ)_/¯
247
+ let patternNames = [];
205
248
  if (schema.patterns) {
206
249
  for (const pattern of schema.patterns) {
207
- const ret = processPattern(patterns, pattern, processedSchema);
250
+ const ret = await processPattern(patterns, pattern, processedSchema);
251
+ patternNames.push(pattern.name);
208
252
  if (ret.transformsSelect) {
209
253
  if (processedSchema.transformsSelect) {
210
254
  throw new Error(`can only have one pattern which transforms default querying behavior`);
@@ -219,8 +263,9 @@ function parseSchema(potentialSchemas) {
219
263
  }
220
264
  }
221
265
  }
222
- const fields = processFields(schema.fields);
266
+ const fields = await processFields(schema.fields);
223
267
  processedSchema.fields.push(...fields);
268
+ processedSchema.patternNames = patternNames;
224
269
  if (schema.edges) {
225
270
  const edges = processEdges(schema.edges);
226
271
  processedSchema.assocEdges.push(...edges);
@@ -230,6 +275,68 @@ function parseSchema(potentialSchemas) {
230
275
  }
231
276
  schemas[key] = processedSchema;
232
277
  }
233
- return { schemas, patterns };
278
+ const rome = translatePrettier();
279
+ return {
280
+ schemas,
281
+ patterns,
282
+ globalSchema: parsedGlobalSchema,
283
+ config: {
284
+ rome,
285
+ },
286
+ };
234
287
  }
235
288
  exports.parseSchema = parseSchema;
289
+ function translatePrettier() {
290
+ const r = (0, cosmiconfig_1.cosmiconfigSync)("prettier").search();
291
+ if (!r) {
292
+ return;
293
+ }
294
+ const ret = {};
295
+ if (r.config.printWidth !== undefined) {
296
+ ret.lineWidth = parseInt(r.config.printWidth);
297
+ }
298
+ if (r.config.useTabs) {
299
+ ret.indentStyle = "tab";
300
+ }
301
+ else {
302
+ ret.indentStyle = "space";
303
+ }
304
+ if (r.config.tabWidth !== undefined) {
305
+ ret.indentSize = parseInt(r.config.tabWidth);
306
+ }
307
+ if (r.config.singleQuote) {
308
+ ret.quoteStyle = "single";
309
+ }
310
+ else {
311
+ ret.quoteStyle = "double";
312
+ }
313
+ if (r.config.quoteProps !== undefined) {
314
+ if (r.config.quoteProps === "consistent") {
315
+ // rome doesn't support this
316
+ ret.quoteProperties = "as-needed";
317
+ }
318
+ else {
319
+ ret.quoteProperties = r.config.quoteProps;
320
+ }
321
+ }
322
+ if (r.config.trailingComma !== undefined) {
323
+ ret.trailingComma = r.config.trailingComma;
324
+ }
325
+ return ret;
326
+ }
327
+ async function parseGlobalSchema(s) {
328
+ const ret = {
329
+ globalEdges: [],
330
+ extraEdgeFields: [],
331
+ initForEdges: !!s.extraEdgeFields ||
332
+ s.transformEdgeRead !== undefined ||
333
+ s.transformEdgeWrite !== undefined,
334
+ };
335
+ if (s.extraEdgeFields) {
336
+ ret.extraEdgeFields = await processFields(s.extraEdgeFields);
337
+ }
338
+ if (s.edges) {
339
+ ret.globalEdges = processEdges(s.edges);
340
+ }
341
+ return ret;
342
+ }
@@ -1,11 +1,12 @@
1
- import { Field, FieldMap, Pattern } from "./schema";
1
+ import { FieldMap, Pattern, FieldOverrideMap } from "./schema";
2
2
  import { Action, AssocEdgeGroup, Constraint, Edge, Index, Schema } from ".";
3
3
  export declare const Timestamps: Pattern;
4
4
  export declare const Node: Pattern;
5
5
  export interface SchemaConfig extends Schema {
6
6
  }
7
7
  export declare class EntSchema implements Schema {
8
- fields: FieldMap | Field[];
8
+ fields: FieldMap;
9
+ fieldOverrides: FieldOverrideMap | undefined;
9
10
  tableName: string | undefined;
10
11
  patterns: Pattern[];
11
12
  edges: Edge[] | undefined;
@@ -21,7 +22,8 @@ export declare class EntSchema implements Schema {
21
22
  constructor(cfg: SchemaConfig);
22
23
  }
23
24
  export declare class EntSchemaWithTZ implements Schema {
24
- fields: FieldMap | Field[];
25
+ fields: FieldMap;
26
+ fieldOverrides: FieldOverrideMap | undefined;
25
27
  tableName: string | undefined;
26
28
  patterns: Pattern[];
27
29
  edges: Edge[] | undefined;
@@ -66,6 +66,7 @@ let nodeFieldsWithTZ = {
66
66
  exports.Node = {
67
67
  name: "node",
68
68
  fields: nodeFields,
69
+ disableMixin: true,
69
70
  };
70
71
  // Ent schema. has Node Pattern by default.
71
72
  // exists just to have less typing and easier for clients to implement
@@ -73,6 +74,7 @@ class EntSchema {
73
74
  constructor(cfg) {
74
75
  this.patterns = [exports.Node];
75
76
  this.fields = cfg.fields;
77
+ this.fieldOverrides = cfg.fieldOverrides;
76
78
  this.tableName = cfg.tableName;
77
79
  if (cfg.patterns) {
78
80
  this.patterns.push(...cfg.patterns);
@@ -95,9 +97,11 @@ class EntSchemaWithTZ {
95
97
  // default schema added
96
98
  name: "nodeWithTZ",
97
99
  fields: nodeFieldsWithTZ,
100
+ disableMixin: true,
98
101
  },
99
102
  ];
100
103
  this.fields = cfg.fields;
104
+ this.fieldOverrides = cfg.fieldOverrides;
101
105
  this.tableName = cfg.tableName;
102
106
  if (cfg.patterns) {
103
107
  this.patterns.push(...cfg.patterns);
@@ -131,6 +135,7 @@ class BaseEntSchemaWithTZ {
131
135
  // default schema added
132
136
  name: "nodeWithTZ",
133
137
  fields: nodeFieldsWithTZ,
138
+ disableMixin: true,
134
139
  },
135
140
  ];
136
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,31 +136,66 @@ 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);
161
+ valid(val: any): boolean;
162
+ format(val: any): any;
163
+ }
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);
137
185
  valid(val: any): boolean;
138
186
  format(val: any): any;
139
187
  }
140
- export declare function EnumType(options: EnumOptions): EnumField;
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;
@@ -153,7 +206,7 @@ export declare class ListField extends BaseField {
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 {};