@smartive/graphql-magic 3.0.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +1 -6
  2. package/dist/cjs/index.cjs +205 -172
  3. package/dist/esm/client/queries.d.ts +4 -1
  4. package/dist/esm/client/queries.js +16 -6
  5. package/dist/esm/client/queries.js.map +1 -1
  6. package/dist/esm/db/generate.js +21 -13
  7. package/dist/esm/db/generate.js.map +1 -1
  8. package/dist/esm/generate/generate.js +17 -22
  9. package/dist/esm/generate/generate.js.map +1 -1
  10. package/dist/esm/generate/utils.d.ts +10 -1
  11. package/dist/esm/generate/utils.js.map +1 -1
  12. package/dist/esm/migrations/generate.js +82 -89
  13. package/dist/esm/migrations/generate.js.map +1 -1
  14. package/dist/esm/models.d.ts +115 -93
  15. package/dist/esm/models.js +1 -26
  16. package/dist/esm/models.js.map +1 -1
  17. package/dist/esm/permissions/check.js +2 -2
  18. package/dist/esm/permissions/check.js.map +1 -1
  19. package/dist/esm/permissions/generate.js +2 -2
  20. package/dist/esm/permissions/generate.js.map +1 -1
  21. package/dist/esm/resolvers/filters.js +1 -1
  22. package/dist/esm/resolvers/filters.js.map +1 -1
  23. package/dist/esm/resolvers/mutations.js +5 -6
  24. package/dist/esm/resolvers/mutations.js.map +1 -1
  25. package/dist/esm/resolvers/node.js +4 -5
  26. package/dist/esm/resolvers/node.js.map +1 -1
  27. package/dist/esm/resolvers/resolver.js +2 -2
  28. package/dist/esm/resolvers/resolver.js.map +1 -1
  29. package/dist/esm/utils.d.ts +181 -1
  30. package/dist/esm/utils.js +69 -21
  31. package/dist/esm/utils.js.map +1 -1
  32. package/package.json +8 -8
  33. package/src/client/queries.ts +26 -12
  34. package/src/db/generate.ts +22 -15
  35. package/src/generate/generate.ts +26 -34
  36. package/src/generate/utils.ts +11 -1
  37. package/src/migrations/generate.ts +84 -82
  38. package/src/models.ts +113 -157
  39. package/src/permissions/check.ts +2 -2
  40. package/src/permissions/generate.ts +2 -2
  41. package/src/resolvers/filters.ts +1 -1
  42. package/src/resolvers/mutations.ts +10 -9
  43. package/src/resolvers/node.ts +6 -6
  44. package/src/resolvers/resolver.ts +2 -2
  45. package/src/utils.ts +158 -57
  46. package/tests/unit/__snapshots__/generate.spec.ts.snap +3 -0
  47. package/tests/unit/__snapshots__/queries.spec.ts.snap +11 -0
  48. package/tests/unit/queries.spec.ts +10 -0
  49. package/tests/utils/database/schema.ts +2 -0
  50. package/tests/utils/models.ts +14 -6
@@ -1,8 +1,7 @@
1
1
  import CodeBlockWriter from 'code-block-writer';
2
2
  import { SchemaInspector } from 'knex-schema-inspector';
3
3
  import lowerFirst from 'lodash/lowerFirst';
4
- import { isEnumModel } from '../models';
5
- import { get, getModels, summonByName, typeToField } from '../utils';
4
+ import { get, getModels, isEnumModel, summonByName, typeToField } from '../utils';
6
5
  export class MigrationGenerator {
7
6
  rawModels;
8
7
  writer = new CodeBlockWriter['default']({
@@ -101,14 +100,15 @@ export class MigrationGenerator {
101
100
  // Rename fields
102
101
  this.renameFields(model, model.fields.filter(({ oldName }) => oldName), up, down);
103
102
  // Add missing fields
104
- this.createFields(model, model.fields.filter(({ name, relation, raw, foreignKey }) => !raw && !this.columns[model.name].some((col) => col.name === (foreignKey || (relation ? `${name}Id` : name)))), up, down);
103
+ this.createFields(model, model.fields.filter(({ name, ...field }) => field.type !== 'raw' &&
104
+ !this.columns[model.name].some((col) => col.name === (field.type === 'relation' ? field.foreignKey || `${name}Id` : name))), up, down);
105
105
  // Update fields
106
- const existingFields = model.fields.filter(({ name, relation, nonNull }) => {
107
- const col = this.columns[model.name].find((col) => col.name === (relation ? `${name}Id` : name));
106
+ const existingFields = model.fields.filter(({ name, type, nonNull }) => {
107
+ const col = this.columns[model.name].find((col) => col.name === (type === 'relation' ? `${name}Id` : name));
108
108
  if (!col) {
109
109
  return false;
110
110
  }
111
- return !model.nonStrict && !nonNull && !col.is_nullable;
111
+ return !nonNull && !col.is_nullable;
112
112
  });
113
113
  this.updateFields(model, existingFields, up, down);
114
114
  }
@@ -135,8 +135,8 @@ export class MigrationGenerator {
135
135
  if (model.deletable) {
136
136
  writer.writeLine(`deleted: row.deleted,`);
137
137
  }
138
- for (const { name, relation } of model.fields.filter(({ updatable }) => updatable)) {
139
- const col = relation ? `${name}Id` : name;
138
+ for (const { name, type } of model.fields.filter(({ updatable }) => updatable)) {
139
+ const col = type === 'relation' ? `${name}Id` : name;
140
140
  writer.writeLine(`${col}: row.${col},`);
141
141
  }
142
142
  })
@@ -153,15 +153,15 @@ export class MigrationGenerator {
153
153
  }
154
154
  else {
155
155
  const revisionTable = `${model.name}Revision`;
156
- const missingRevisionFields = model.fields.filter(({ name, relation, raw, foreignKey, updatable }) => !raw &&
156
+ const missingRevisionFields = model.fields.filter(({ name, updatable, ...field }) => field.type !== 'raw' &&
157
157
  updatable &&
158
- !this.columns[revisionTable].some((col) => col.name === (foreignKey || (relation ? `${name}Id` : name))));
158
+ !this.columns[revisionTable].some((col) => col.name === (field.type === 'relation' ? field.foreignKey || `${name}Id` : name)));
159
159
  this.createRevisionFields(model, missingRevisionFields, up, down);
160
- const revisionFieldsToRemove = model.fields.filter(({ name, updatable, foreignKey, relation, raw, generated }) => !generated &&
161
- !raw &&
160
+ const revisionFieldsToRemove = model.fields.filter(({ name, updatable, generated, ...field }) => !generated &&
161
+ field.type !== 'raw' &&
162
162
  !updatable &&
163
- foreignKey !== 'id' &&
164
- this.columns[revisionTable].some((col) => col.name === (foreignKey || (relation ? `${name}Id` : name))));
163
+ !(field.type === 'relation' && field.foreignKey === 'id') &&
164
+ this.columns[revisionTable].some((col) => col.name === (field.type === 'relation' ? field.foreignKey || `${name}Id` : name)));
165
165
  this.createRevisionFields(model, revisionFieldsToRemove, down, up);
166
166
  }
167
167
  }
@@ -197,22 +197,21 @@ export class MigrationGenerator {
197
197
  up.push(() => {
198
198
  for (const field of fields) {
199
199
  this.alterTable(model.name, () => {
200
- this.renameColumn(field.relation ? `${field.oldName}Id` : get(field, 'oldName'), field.relation ? `${field.name}Id` : field.name);
200
+ this.renameColumn(field.type === 'relation' ? `${field.oldName}Id` : get(field, 'oldName'), field.type === 'relation' ? `${field.name}Id` : field.name);
201
201
  });
202
202
  }
203
203
  });
204
204
  down.push(() => {
205
205
  for (const field of fields) {
206
206
  this.alterTable(model.name, () => {
207
- this.renameColumn(field.relation ? `${field.name}Id` : field.name, field.relation ? `${field.oldName}Id` : get(field, 'oldName'));
207
+ this.renameColumn(field.type === 'relation' ? `${field.name}Id` : field.name, field.type === 'relation' ? `${field.oldName}Id` : get(field, 'oldName'));
208
208
  });
209
209
  }
210
210
  });
211
211
  for (const field of fields) {
212
212
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
213
- summonByName(this.columns[model.name], field.relation ? `${field.oldName}Id` : field.oldName).name = field.relation
214
- ? `${field.name}Id`
215
- : field.name;
213
+ summonByName(this.columns[model.name], field.type === 'relation' ? `${field.oldName}Id` : field.oldName).name =
214
+ field.type === 'relation' ? `${field.name}Id` : field.name;
216
215
  }
217
216
  }
218
217
  createFields(model, fields, up, down) {
@@ -254,8 +253,8 @@ export class MigrationGenerator {
254
253
  });
255
254
  down.push(() => {
256
255
  this.alterTable(model.name, () => {
257
- for (const { relation, name } of fields) {
258
- this.dropColumn(relation ? `${name}Id` : name);
256
+ for (const { type, name } of fields) {
257
+ this.dropColumn(type === 'relation' ? `${name}Id` : name);
259
258
  }
260
259
  });
261
260
  });
@@ -274,7 +273,7 @@ export class MigrationGenerator {
274
273
  down.push(() => {
275
274
  this.alterTable(model.name, () => {
276
275
  for (const field of fields) {
277
- this.column(field, { alter: true }, summonByName(this.columns[model.name], field.relation ? `${field.name}Id` : field.name));
276
+ this.column(field, { alter: true }, summonByName(this.columns[model.name], field.type === 'relation' ? `${field.name}Id` : field.name));
278
277
  }
279
278
  });
280
279
  });
@@ -293,7 +292,7 @@ export class MigrationGenerator {
293
292
  down.push(() => {
294
293
  this.alterTable(`${model.name}Revision`, () => {
295
294
  for (const field of updatableFields) {
296
- this.column(field, { alter: true }, summonByName(this.columns[model.name], field.relation ? `${field.name}Id` : field.name));
295
+ this.column(field, { alter: true }, summonByName(this.columns[model.name], field.type === 'relation' ? `${field.name}Id` : field.name));
297
296
  }
298
297
  });
299
298
  });
@@ -306,9 +305,7 @@ export class MigrationGenerator {
306
305
  writer.writeLine(`table.uuid('id').notNullable().primary();`);
307
306
  writer.writeLine(`table.uuid('${typeToField(model.name)}Id').notNullable();`);
308
307
  writer.write(`table.uuid('createdById')`);
309
- if (!model.nonStrict) {
310
- writer.write('.notNullable()');
311
- }
308
+ writer.write('.notNullable()');
312
309
  writer.write(';').newLine();
313
310
  writer.writeLine(`table.timestamp('createdAt').notNullable().defaultTo(knex.fn.now(0));`);
314
311
  if (model.deletable) {
@@ -333,8 +330,8 @@ export class MigrationGenerator {
333
330
  this.writer
334
331
  .write(`await knex('${model.name}Revision').update(`)
335
332
  .inlineBlock(() => {
336
- for (const { name, relation } of missingRevisionFields) {
337
- const col = relation ? `${name}Id` : name;
333
+ for (const { name, type } of missingRevisionFields) {
334
+ const col = type === 'relation' ? `${name}Id` : name;
338
335
  this.writer
339
336
  .write(`${col}: knex.raw('(select "${col}" from "${model.name}" where "${model.name}".id = "${model.name}Revision"."${typeToField(model.name)}Id")'),`)
340
337
  .newLine();
@@ -355,7 +352,7 @@ export class MigrationGenerator {
355
352
  down.push(() => {
356
353
  this.alterTable(revisionTable, () => {
357
354
  for (const field of missingRevisionFields) {
358
- this.dropColumn(field.relation ? `${field.name}Id` : field.name);
355
+ this.dropColumn(field.type === 'relation' ? `${field.name}Id` : field.name);
359
356
  }
360
357
  });
361
358
  });
@@ -414,7 +411,7 @@ export class MigrationGenerator {
414
411
  }
415
412
  return value;
416
413
  }
417
- column({ name, relation, type, primary, list, ...field }, { setUnique = true, setNonNull = true, alter = false, foreign = true, setDefault = true } = {}, toColumn) {
414
+ column({ name, primary, list, ...field }, { setUnique = true, setNonNull = true, alter = false, foreign = true, setDefault = true } = {}, toColumn) {
418
415
  const col = (what) => {
419
416
  if (what) {
420
417
  this.writer.write(what);
@@ -451,65 +448,61 @@ export class MigrationGenerator {
451
448
  }
452
449
  this.writer.write(';').newLine();
453
450
  };
454
- if (relation) {
455
- col(`table.uuid('${name}Id')`);
456
- if (foreign && !alter) {
457
- this.writer.writeLine(`table.foreign('${name}Id').references('id').inTable('${type}');`);
458
- }
459
- }
460
- else if (this.rawModels.some((m) => m.name === type && m.type === 'enum')) {
461
- list
462
- ? this.writer.write(`table.specificType('${name}', '"${typeToField(type)}"[]');`)
463
- : this.writer
464
- .write(`table.enum('${name}', null as any, `)
465
- .inlineBlock(() => {
466
- this.writer.writeLine(`useNative: true,`);
467
- this.writer.writeLine(`existingType: true,`);
468
- this.writer.writeLine(`enumName: '${typeToField(type)}',`);
469
- })
470
- .write(')');
471
- col();
472
- }
473
- else {
474
- switch (type) {
475
- case 'Boolean':
476
- col(`table.boolean('${name}')`);
477
- break;
478
- case 'Int':
479
- col(`table.integer('${name}')`);
480
- break;
481
- case 'Float':
482
- if (field.double) {
483
- col(`table.double('${name}')`);
484
- }
485
- else {
486
- col(`table.decimal('${name}', ${get(field, 'precision')}, ${get(field, 'scale')})`);
487
- }
488
- break;
489
- case 'String':
490
- if (field.large) {
491
- col(`table.text('${name}')`);
492
- }
493
- else {
494
- col(`table.string('${name}', ${field.maxLength})`);
495
- }
496
- break;
497
- case 'DateTime':
498
- col(`table.timestamp('${name}')`);
499
- break;
500
- case 'ID':
501
- if (field.maxLength) {
502
- col(`table.string('${name}', ${get(field, 'maxLength')})`);
503
- }
504
- else {
505
- col(`table.uuid('${name}')`);
506
- }
507
- break;
508
- case 'Upload':
509
- break;
510
- default:
511
- throw new Error(`Unknown field type ${type}`);
512
- }
451
+ switch (field.type) {
452
+ case 'Boolean':
453
+ col(`table.boolean('${name}')`);
454
+ break;
455
+ case 'Int':
456
+ col(`table.integer('${name}')`);
457
+ break;
458
+ case 'Float':
459
+ if (field.double) {
460
+ col(`table.double('${name}')`);
461
+ }
462
+ else {
463
+ col(`table.decimal('${name}', ${get(field, 'precision')}, ${get(field, 'scale')})`);
464
+ }
465
+ break;
466
+ case 'String':
467
+ if (field.large) {
468
+ col(`table.text('${name}')`);
469
+ }
470
+ else {
471
+ col(`table.string('${name}', ${field.maxLength})`);
472
+ }
473
+ break;
474
+ case 'DateTime':
475
+ col(`table.timestamp('${name}')`);
476
+ break;
477
+ case 'ID':
478
+ col(`table.uuid('${name}')`);
479
+ break;
480
+ case 'Upload':
481
+ break;
482
+ case 'relation':
483
+ col(`table.uuid('${name}Id')`);
484
+ if (foreign && !alter) {
485
+ this.writer.writeLine(`table.foreign('${name}Id').references('id').inTable('${field.typeName}');`);
486
+ }
487
+ break;
488
+ case 'enum':
489
+ if (list) {
490
+ this.writer.write(`table.specificType('${name}', '"${typeToField(field.type)}"[]');`);
491
+ }
492
+ else {
493
+ this.writer
494
+ .write(`table.enum('${name}', null as any, `)
495
+ .inlineBlock(() => {
496
+ this.writer.writeLine(`useNative: true,`);
497
+ this.writer.writeLine(`existingType: true,`);
498
+ this.writer.writeLine(`enumName: '${typeToField(field.type)}',`);
499
+ })
500
+ .write(')');
501
+ }
502
+ col();
503
+ break;
504
+ default:
505
+ throw new Error(`Unknown field type ${field.type}`);
513
506
  }
514
507
  }
515
508
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAa,WAAW,EAAwC,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKrE,MAAM,OAAO,kBAAkB;IAWG;IAVxB,MAAM,GAAoB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/D,cAAc,EAAE,IAAI;QACpB,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IACK,MAAM,CAAsB;IAC5B,OAAO,GAA6B,EAAE,CAAC;IACvC,QAAQ,CAAW;IACnB,OAAO,CAAW;IAClB,MAAM,CAAS;IAEvB,YAAY,IAAU,EAAU,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAClD,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACrH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACtD;QAED,MAAM,EAAE,GAAc,EAAE,CAAC;QACzB,MAAM,IAAI,GAAc,EAAE,CAAC;QAE3B,IAAI,CAAC,WAAW,CACd,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EACpF,EAAE,EACF,IAAI,CACL,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;wBAChC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;4BAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACpB;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,kDAAkD;gBAClD,IAAI,KAAK,CAAC,SAAS,EAAE;oBACnB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACX,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;wBACb,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;iBACJ;aACF;YAED,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,eAAe;gBACf,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACX,qFAAqF;oBACrF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBACb,qFAAqF;oBACrF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBACnD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAEnC,IAAI,KAAK,CAAC,SAAS,EAAE;oBACnB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACX,qFAAqF;wBACrF,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,OAAQ,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC;wBACvE,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,GAAG,EAAE;4BAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/F,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;wBACb,qFAAqF;wBACrF,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;wBACtE,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,UAAU,EAAE,GAAG,EAAE;4BAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/F,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC;oBAC7E,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;oBACjF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;iBACjD;aACF;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAChC,uBAAuB;gBACvB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;wBAChC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;4BAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACpB;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,gBAAgB;gBAChB,IAAI,CAAC,YAAY,CACf,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAC7C,EAAE,EACF,IAAI,CACL,CAAC;gBAEF,qBAAqB;gBACrB,IAAI,CAAC,YAAY,CACf,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,MAAM,CACjB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CACtC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChH,EACD,EAAE,EACF,IAAI,CACL,CAAC;gBAEF,gBAAgB;gBAChB,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;oBACzE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjG,IAAI,CAAC,GAAG,EAAE;wBACR,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;aACpD;YAED,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,EAAE;oBAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACX,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;oBAEH,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;wBAC/B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;4BACX,kCAAkC;4BAClC,MAAM;iCACH,KAAK,CAAC,GAAG,EAAE;gCACV,MAAM,CAAC,SAAS,CAAC,4BAA4B,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;gCAE9D,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oCAC1C,MAAM;yCACH,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,gCAAgC,CAAC;yCAC5E,WAAW,CAAC,GAAG,EAAE;wCAChB,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;wCAChC,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wCAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wCACpB,MAAM,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;wCACtE,MAAM,CAAC,SAAS,CAAC,kDAAkD,CAAC,CAAC;wCACrE,IAAI,KAAK,CAAC,SAAS,EAAE;4CACnB,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;yCAC3C;wCAED,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE;4CAClF,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;4CAE1C,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;yCACzC;oCACH,CAAC,CAAC;yCACD,KAAK,CAAC,MAAM,CAAC;yCACb,OAAO,EAAE,CAAC;gCACf,CAAC,CAAC,CAAC;4BACL,CAAC,CAAC;iCACD,SAAS,EAAE,CAAC;wBACjB,CAAC,CAAC,CAAC;qBACJ;oBAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;wBACb,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC;oBAC9C,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAC/C,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CACjD,CAAC,GAAG;wBACJ,SAAS;wBACT,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3G,CAAC;oBAEF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBAElE,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAChD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAC5D,CAAC,SAAS;wBACV,CAAC,GAAG;wBACJ,CAAC,SAAS;wBACV,UAAU,KAAK,IAAI;wBACnB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1G,CAAC;oBACF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;iBACpE;aACF;SACF;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE;YACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,CACf,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAChH,IAAI,EACJ,EAAE,CACH,CAAC;gBAEF,IAAI,KAAK,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,oBAAoB,CACvB,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,IAAI,OAAO,CAAC,EACrE,IAAI,EACJ,EAAE,CACH,CAAC;iBACH;aACF;SACF;QAED,IAAI,CAAC,WAAW,CACd,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAC1D,IAAI,EACJ,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;SAChE;QACD,MAAM,CAAC,SAAS,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC;SACrD;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY,CAAC,KAAY,EAAE,MAAoB,EAAE,EAAa,EAAE,IAAe;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO;SACR;QAED,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,IAAI,CAAC,YAAY,CACf,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAC7D,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAChD,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,IAAI,CAAC,YAAY,CACf,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAC9D,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,oEAAoE;YACpE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ;gBACpH,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI;gBACnB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;SAChB;IACH,CAAC;IAEO,YAAY,CAAC,KAAY,EAAE,MAAoB,EAAE,EAAa,EAAE,IAAe;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO;SACR;QAED,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,MAAM,KAAK,GAAc,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAc,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAc,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;gBAElF,0EAA0E;gBAC1E,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;oBAChD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1E,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC3E;aACF;YACD,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,IAAI,CAAC,MAAM;qBACR,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,YAAY,CAAC;qBAC5C,WAAW,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,CAAC,CAAC;qBACD,KAAK,CAAC,IAAI,CAAC;qBACX,OAAO,EAAE;qBACT,SAAS,EAAE,CAAC;aAChB;YACD,IAAI,SAAS,CAAC,MAAM,EAAE;gBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC/B,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE;oBACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAY,EAAE,MAAoB,EAAE,EAAa,EAAE,IAAe;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO;SACR;QAED,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;oBAC1B,IAAI,CAAC,MAAM,CACT,KAAK,EACL,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CACxF,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC3B,OAAO;aACR;YAED,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,GAAG,EAAE;oBAC5C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;wBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;qBACrC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,GAAG,EAAE;oBAC5C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;wBACnC,IAAI,CAAC,MAAM,CACT,KAAK,EACL,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CACxF,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAY;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,eAAe,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;aAChC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,uEAAuE,CAAC,CAAC;YAC1F,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,MAAM,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;aAC7D;YAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;gBACnE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;aAC7D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAY,EAAE,qBAAmC,EAAE,EAAa,EAAE,IAAe;QAC5G,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC;QAC9C,IAAI,qBAAqB,CAAC,MAAM,EAAE;YAChC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACX,kCAAkC;gBAClC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE;oBAClC,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE;wBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;qBAChF;gBACH,CAAC,CAAC,CAAC;gBAEH,4CAA4C;gBAC5C,IAAI,CAAC,MAAM;qBACR,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,oBAAoB,CAAC;qBACpD,WAAW,CAAC,GAAG,EAAE;oBAChB,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,qBAAqB,EAAE;wBACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC1C,IAAI,CAAC,MAAM;6BACR,KAAK,CACJ,GAAG,GAAG,wBAAwB,GAAG,WAAW,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,WAC1E,KAAK,CAAC,IACR,cAAc,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAC/C;6BACA,OAAO,EAAE,CAAC;qBACd;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,IAAI,CAAC;qBACX,OAAO,EAAE;qBACT,SAAS,EAAE,CAAC;gBAEf,MAAM,gCAAgC,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;gBAChG,IAAI,gCAAgC,CAAC,MAAM,EAAE;oBAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE;wBAClC,KAAK,MAAM,KAAK,IAAI,gCAAgC,EAAE;4BACpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC1E;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE;oBAClC,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE;wBACzC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAClE;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,WAAW,CAAC,KAAkB,EAAE,EAAa,EAAE,IAAe;QACpE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACvB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CACX,IAAI,CAAC,MAAM;iBACR,SAAS,CACR,iCAAiC,IAAI,cAAc,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAC5G;iBACA,OAAO,EAAE,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,8BAA8B,IAAI,KAAK,CAAC,CAAC,CAAC;SACjF;IACH,CAAC;IAEO,SAAS,CAAC,IAAmB,EAAE,GAAmB;QACxD,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,gBAAgB,IAAI,2BAA2B,CAAC;aACtD,WAAW,CAAC,GAAG,EAAE;YAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC;aACV,OAAO,EAAE;aACT,SAAS,EAAE,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,KAAa,EAAE,KAAiB;QAClD,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,kCAAkC,KAAK,gBAAgB,CAAC;aAC9D,WAAW,CAAC,KAAK,CAAC;aAClB,KAAK,CAAC,IAAI,CAAC;aACX,OAAO,EAAE;aACT,SAAS,EAAE,CAAC;IACjB,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,KAAiB;QACjD,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,iCAAiC,KAAK,gBAAgB,CAAC;aAC7D,WAAW,CAAC,KAAK,CAAC;aAClB,KAAK,CAAC,IAAI,CAAC;aACX,OAAO,EAAE;aACT,SAAS,EAAE,CAAC;IACjB,CAAC;IAEO,UAAU,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gCAAgC,KAAK,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IACvF,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,EAAU;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kCAAkC,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IACjG,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,EAAU;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,KAAY;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,KAAK,GAAG,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAc,EAC7D,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,EAAE,EAC9F,QAAiB;QAEjB,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,EAAE;YAC5B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;YACD,IAAI,UAAU,EAAE;gBACd,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,CAAC,WAAW,EAAE;wBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;qBAClC;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;qBACrC;iBACF;qBAAM;oBACL,IAAI,KAAK,CAAC,OAAO,EAAE;wBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;qBACrC;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;qBAClC;iBACF;aACF;YACD,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC/D;YACD,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;aACjC;iBAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aAChC;YACD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC,CAAC;QACF,IAAI,QAAQ,EAAE;YACZ,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC;YAC/B,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,IAAI,kCAAkC,IAAI,KAAK,CAAC,CAAC;aAC1F;SACF;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE;YAC3E,IAAI;gBACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,QAAQ,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjF,CAAC,CAAC,IAAI,CAAC,MAAM;qBACR,KAAK,CAAC,eAAe,IAAI,kBAAkB,CAAC;qBAC5C,WAAW,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,GAAG,EAAE,CAAC;SACP;aAAM;YACL,QAAQ,IAAI,EAAE;gBACZ,KAAK,SAAS;oBACZ,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,KAAK;oBACR,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,KAAK,CAAC,MAAM,EAAE;wBAChB,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;qBAChC;yBAAM;wBACL,GAAG,CAAC,kBAAkB,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;qBACrF;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,KAAK,CAAC,KAAK,EAAE;wBACf,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;qBAC9B;yBAAM;wBACL,GAAG,CAAC,iBAAiB,IAAI,MAAM,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;qBACpD;oBACD,MAAM;gBACR,KAAK,UAAU;oBACb,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC;oBAClC,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,KAAK,CAAC,SAAS,EAAE;wBACnB,GAAG,CAAC,iBAAiB,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;qBAC5D;yBAAM;wBACL,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;qBAC9B;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;aACjD;SACF;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
+ import { DateTime } from 'luxon';
2
+ import { Field } from '.';
1
3
  import type { Context } from './context';
2
4
  import type { OrderBy } from './resolvers/arguments';
3
- import type { Directive, Value } from './values';
5
+ import type { Value } from './values';
4
6
  export type RawModels = RawModel[];
5
- export type RawModel = ScalarModel | EnumModel | RawEnumModel | InterfaceModel | ObjectModel | RawObjectModel | JsonObjectModel;
7
+ export type RawModel = ScalarModel | EnumModel | RawEnumModel | InterfaceModel | ObjectModel | RawObjectModel;
6
8
  type BaseModel = {
7
9
  name: string;
8
10
  plural?: string;
@@ -25,21 +27,13 @@ export type InterfaceModel = BaseModel & {
25
27
  fields: ModelField[];
26
28
  };
27
29
  export type RawObjectModel = BaseModel & {
28
- type: 'raw-object';
29
- fields: ModelField[];
30
- rawFilters?: {
31
- name: string;
32
- type: string;
33
- list?: boolean;
34
- nonNull?: boolean;
35
- }[];
30
+ type: 'raw';
31
+ fields: RawObjectField[];
36
32
  };
37
- export type JsonObjectModel = BaseModel & {
38
- type: 'json-object';
39
- json: true;
40
- fields: Pick<ModelField, 'type' | 'name' | 'nonNull'>[];
33
+ export type Entity = Record<string, unknown> & {
34
+ createdAt?: DateTime;
35
+ deletedAt?: DateTime;
41
36
  };
42
- export type Entity = Record<string, any>;
43
37
  export type Action = 'create' | 'update' | 'delete' | 'restore';
44
38
  export type MutationHook = (model: Model, action: Action, when: 'before' | 'after', data: {
45
39
  prev: Entity;
@@ -50,101 +44,133 @@ export type MutationHook = (model: Model, action: Action, when: 'before' | 'afte
50
44
  export type ObjectModel = BaseModel & {
51
45
  type: 'object';
52
46
  interfaces?: string[];
53
- nonStrict?: boolean;
54
47
  queriable?: boolean;
55
48
  listQueriable?: boolean;
56
- creatable?: boolean;
57
- updatable?: boolean;
58
- deletable?: boolean;
49
+ creatable?: boolean | {
50
+ createdBy?: Partial<RelationField>;
51
+ createdAt?: Partial<DateTimeField>;
52
+ };
53
+ updatable?: boolean | {
54
+ updatedBy?: Partial<RelationField>;
55
+ updatedAt?: Partial<DateTimeField>;
56
+ };
57
+ deletable?: boolean | {
58
+ deleted?: Partial<BooleanField>;
59
+ deletedBy?: Partial<RelationField>;
60
+ deletedAt?: Partial<DateTimeField>;
61
+ };
59
62
  displayField?: string;
60
63
  defaultOrderBy?: OrderBy;
61
64
  fields: ModelField[];
62
65
  deleted?: true;
63
66
  oldName?: string;
64
67
  };
65
- export type InputObject = {
66
- name: string;
67
- type: string;
68
- nonNull?: boolean;
68
+ type BaseNumberType = {
69
+ unit?: 'million';
70
+ min?: number;
71
+ max?: number;
69
72
  };
70
- export declare const isObjectModel: (model: RawModel) => model is ObjectModel;
71
- export declare const isEnumModel: (model: RawModel) => model is EnumModel;
72
- export declare const isRawEnumModel: (model: RawModel) => model is RawEnumModel;
73
- export declare const isScalarModel: (model: RawModel) => model is ScalarModel;
74
- export declare const isRawObjectModel: (model: RawModel) => model is RawObjectModel;
75
- export declare const isJsonObjectModel: (model: RawModel) => model is RawObjectModel;
76
- export declare const isEnumList: (models: RawModels, field: ModelField) => boolean;
77
- export declare const and: (...predicates: ((field: ModelField) => boolean)[]) => (field: ModelField) => boolean;
78
- export declare const not: (predicate: (field: ModelField) => boolean) => (field: ModelField) => boolean;
79
- export declare const isRelation: ({ relation }: ModelField) => boolean;
80
- export type VisibleRelationsByRole = Record<string, Record<string, string[]>>;
81
- export declare const isVisibleRelation: (visibleRelationsByRole: VisibleRelationsByRole, modelName: string, role: string) => ({ name }: Field) => boolean;
82
- export declare const isToOneRelation: ({ toOne }: ModelField) => boolean;
83
- export declare const isQueriableField: ({ queriable }: ModelField) => boolean;
84
- export declare const isRaw: ({ raw }: ModelField) => boolean;
85
- export declare const isVisible: ({ hidden }: ModelField) => boolean;
86
- export declare const isSimpleField: (field: ModelField) => boolean;
87
- export declare const isUpdatable: ({ updatable }: ModelField) => boolean;
88
- export declare const isCreatable: ({ creatable }: ModelField) => boolean;
89
- export declare const isQueriableBy: (role: string) => (field: ModelField) => boolean;
90
- export declare const isUpdatableBy: (role: string) => (field: ModelField) => boolean;
91
- export declare const isCreatableBy: (role: string) => (field: ModelField) => boolean;
92
- export declare const actionableRelations: (model: Model, action: 'create' | 'update' | 'filter') => ModelField[];
93
- export type Field = {
94
- name: string;
95
- type: string;
96
- default?: Value;
97
- list?: boolean;
98
- nonNull?: boolean;
99
- args?: Field[];
100
- directives?: Directive[];
73
+ type BaseField = Omit<Field, 'type'>;
74
+ type PrimitiveField = {
75
+ type: 'ID';
76
+ } | {
77
+ type: 'Boolean';
78
+ } | {
79
+ type: 'String';
80
+ stringType?: 'email' | 'url' | 'phone';
81
+ large?: true;
82
+ maxLength?: number;
83
+ } | {
84
+ type: 'DateTime';
85
+ dateTimeType?: 'year' | 'date' | 'datetime' | 'year_and_month';
86
+ endOfDay?: boolean;
87
+ } | ({
88
+ type: 'Int';
89
+ intType?: 'currency';
90
+ } & BaseNumberType) | ({
91
+ type: 'Float';
92
+ floatType?: 'currency' | 'percentage';
93
+ double?: boolean;
94
+ precision?: number;
95
+ scale?: number;
96
+ } & BaseNumberType) | {
97
+ type: 'Upload';
101
98
  };
102
- export type ModelField = Field & {
99
+ type RawObjectField = BaseField & PrimitiveField;
100
+ export type ModelField = BaseField & (PrimitiveField | {
101
+ type: 'json';
102
+ typeName: string;
103
+ } | {
104
+ type: 'enum';
105
+ typeName: string;
106
+ possibleValues?: Value[];
107
+ } | {
108
+ type: 'raw';
109
+ typeName: string;
110
+ } | {
111
+ type: 'relation';
112
+ typeName: string;
113
+ toOne?: boolean;
114
+ reverse?: string;
115
+ foreignKey?: string;
116
+ onDelete?: 'cascade' | 'set-null';
117
+ }) & {
103
118
  primary?: boolean;
104
119
  unique?: boolean;
105
- filterable?: boolean;
106
- defaultFilter?: Value;
120
+ filterable?: boolean | {
121
+ default?: Value;
122
+ };
107
123
  searchable?: boolean;
108
- possibleValues?: Value[];
109
124
  orderable?: boolean;
110
125
  comparable?: boolean;
111
- relation?: boolean;
112
- onDelete?: 'cascade' | 'set-null';
113
- reverse?: string;
114
- toOne?: boolean;
115
- foreignKey?: string;
116
- queriable?: false;
117
- queriableBy?: string[];
118
- creatable?: boolean;
119
- creatableBy?: string[];
120
- updatable?: boolean;
121
- updatableBy?: string[];
126
+ queriable?: boolean | {
127
+ roles?: string[];
128
+ };
129
+ creatable?: boolean | {
130
+ roles?: string[];
131
+ };
132
+ updatable?: boolean | {
133
+ roles?: string[];
134
+ };
122
135
  generated?: boolean;
123
- raw?: boolean;
124
- json?: boolean;
125
- dateTimeType?: 'year' | 'date' | 'datetime' | 'year_and_month';
126
- stringType?: 'email' | 'url' | 'phone';
127
- floatType?: 'currency' | 'percentage';
128
- unit?: 'million';
129
- intType?: 'currency';
130
- min?: number;
131
- max?: number;
132
136
  tooltip?: string;
133
- description?: string;
134
- large?: true;
135
- maxLength?: number;
136
- double?: boolean;
137
- precision?: number;
138
- scale?: number;
139
137
  defaultValue?: string | number | ReadonlyArray<string> | undefined;
140
- endOfDay?: boolean;
141
- obfuscate?: true;
142
138
  required?: boolean;
143
139
  indent?: boolean;
144
140
  hidden?: boolean;
145
141
  deleted?: true;
146
142
  oldName?: string;
147
143
  };
144
+ export type IDField = Extract<ModelField, {
145
+ type: 'ID';
146
+ }>;
147
+ export type BooleanField = Extract<ModelField, {
148
+ type: 'Boolean';
149
+ }>;
150
+ export type StringField = Extract<ModelField, {
151
+ type: 'String';
152
+ }>;
153
+ export type DateTimeField = Extract<ModelField, {
154
+ type: 'DateTime';
155
+ }>;
156
+ export type IntField = Extract<ModelField, {
157
+ type: 'Int';
158
+ }>;
159
+ export type FloatField = Extract<ModelField, {
160
+ type: 'Float';
161
+ }>;
162
+ export type JsonField = Extract<ModelField, {
163
+ type: 'json';
164
+ }>;
165
+ export type EnumField = Extract<ModelField, {
166
+ type: 'enum';
167
+ }>;
168
+ export type RawField = Extract<ModelField, {
169
+ type: 'raw';
170
+ }>;
171
+ export type RelationField = Extract<ModelField, {
172
+ type: 'relation';
173
+ }>;
148
174
  export type Models = Model[];
149
175
  export type Model = ObjectModel & {
150
176
  fieldsByName: Record<string, ModelField>;
@@ -154,17 +180,13 @@ export type Model = ObjectModel & {
154
180
  reverseRelationsByName: Record<string, ReverseRelation>;
155
181
  };
156
182
  export type Relation = {
157
- field: ModelField;
183
+ field: RelationField;
158
184
  model: Model;
159
185
  reverseRelation: ReverseRelation;
160
186
  };
161
- export type ReverseRelation = {
162
- name: string;
163
- type: string;
164
- foreignKey: string;
165
- toOne: boolean;
187
+ export type ReverseRelation = RelationField & {
166
188
  model: Model;
167
- field: ModelField;
189
+ field: RelationField;
168
190
  fieldModel: Model;
169
191
  };
170
192
  export {};