@comet/api-generator 9.0.0-beta.2 → 9.0.0-beta.4

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 (25) hide show
  1. package/lib/commands/generate/generate-command.js +4 -13
  2. package/lib/commands/generate/generateCrud/build-options.d.ts +1 -1
  3. package/lib/commands/generate/generateCrud/build-options.js +3 -3
  4. package/lib/commands/generate/generateCrud/generate-crud.d.ts +1 -1
  5. package/lib/commands/generate/generateCrud/generate-crud.js +110 -104
  6. package/lib/commands/generate/generateCrud/generate-enum-filter-dto.d.ts +1 -1
  7. package/lib/commands/generate/generateCrud/generate-payload-object-types.d.ts +2 -2
  8. package/lib/commands/generate/generateCrud/generate-payload-object-types.js +2 -3
  9. package/lib/commands/generate/generateCrud/generate-service-hook-call.d.ts +2 -2
  10. package/lib/commands/generate/generateCrud/generate-service-hook-call.js +8 -7
  11. package/lib/commands/generate/generateCrudInput/generate-crud-input.d.ts +2 -2
  12. package/lib/commands/generate/generateCrudInput/generate-crud-input.js +381 -388
  13. package/lib/commands/generate/generateCrudSingle/generate-crud-single.d.ts +2 -2
  14. package/lib/commands/generate/generateCrudSingle/generate-crud-single.js +29 -41
  15. package/lib/commands/generate/generateFiles.js +17 -26
  16. package/lib/commands/generate/utils/build-name-variants.d.ts +1 -1
  17. package/lib/commands/generate/utils/find-hooks-service.d.ts +3 -3
  18. package/lib/commands/generate/utils/find-hooks-service.js +3 -6
  19. package/lib/commands/generate/utils/ts-morph-helper.d.ts +1 -1
  20. package/lib/commands/generate/utils/ts-morph-helper.js +23 -19
  21. package/lib/commands/generate/utils/write-generated-file.js +12 -23
  22. package/lib/commands/generate/utils/write-generated-files.js +4 -16
  23. package/lib/commands/generate/watchMode/handleChildProcess.d.ts +1 -1
  24. package/lib/commands/generate/watchMode/watchMode.js +6 -15
  25. package/package.json +12 -11
@@ -1,28 +1,19 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.generateCommand = void 0;
13
4
  const commander_1 = require("commander");
14
5
  const generateFiles_1 = require("./generateFiles");
15
6
  const watchMode_1 = require("./watchMode/watchMode");
16
7
  exports.generateCommand = new commander_1.Command("generate")
17
- .action((options) => __awaiter(void 0, void 0, void 0, function* () {
8
+ .action(async (options) => {
18
9
  if (options.watch) {
19
- yield (0, generateFiles_1.generateFiles)();
10
+ await (0, generateFiles_1.generateFiles)();
20
11
  console.log("Watching for modified entities...");
21
- yield (0, watchMode_1.watchMode)();
12
+ await (0, watchMode_1.watchMode)();
22
13
  }
23
14
  else {
24
15
  (0, generateFiles_1.generateFiles)(options.file);
25
16
  }
26
- }))
17
+ })
27
18
  .option("-f, --file <file>", "path to entity file")
28
19
  .option("-w, --watch", "Watch for changes");
@@ -1,5 +1,5 @@
1
1
  import { type CrudGeneratorOptions } from "@comet/cms-api";
2
- import { type EntityMetadata } from "@mikro-orm/core";
2
+ import type { EntityMetadata } from "@mikro-orm/core";
3
3
  export declare function buildSortProps(metadata: EntityMetadata<any>): string[];
4
4
  export declare function buildOptions(metadata: EntityMetadata<any>, generatorOptions: CrudGeneratorOptions): {
5
5
  crudSearchPropNames: import("@comet/cms-api/lib/common/helper/crud-generator.helper").CrudSearchField[];
@@ -89,7 +89,6 @@ function buildDedicatedResolverArgProps(metadata) {
89
89
  }
90
90
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
91
  function buildOptions(metadata, generatorOptions) {
92
- var _a, _b;
93
92
  const { classNameSingular, classNamePlural, fileNameSingular, fileNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
94
93
  const dedicatedResolverArgProps = buildDedicatedResolverArgProps(metadata);
95
94
  const crudSearchPropNames = (0, cms_api_1.getCrudSearchFieldsFromMetadata)(metadata);
@@ -100,12 +99,13 @@ function buildOptions(metadata, generatorOptions) {
100
99
  const hasSortArg = crudSortProps.length > 0;
101
100
  const hasSlugProp = metadata.props.some((prop) => prop.name == "slug");
102
101
  const scopeProp = metadata.props.find((prop) => prop.name == "scope");
103
- if (scopeProp && !scopeProp.targetMeta)
102
+ if (scopeProp && !scopeProp.targetMeta) {
104
103
  throw new Error("Scope prop has no targetMeta");
104
+ }
105
105
  const hasDeletedAtProp = metadata.props.some((prop) => prop.name == "deletedAt");
106
106
  const hasPositionProp = metadata.props.some((prop) => prop.name == "position");
107
107
  const positionGroupPropNames = hasPositionProp
108
- ? ((_b = (_a = generatorOptions.position) === null || _a === void 0 ? void 0 : _a.groupByFields) !== null && _b !== void 0 ? _b : [
108
+ ? (generatorOptions.position?.groupByFields ?? [
109
109
  ...(scopeProp ? [scopeProp.name] : []), // if there is a scope prop it's effecting position-group, if not groupByFields should be used
110
110
  ])
111
111
  : [];
@@ -1,7 +1,7 @@
1
1
  import { type CrudGeneratorOptions } from "@comet/cms-api";
2
2
  import { type EntityMetadata } from "@mikro-orm/postgresql";
3
3
  import { type Imports } from "../utils/generate-imports-code";
4
- import { type GeneratedFile } from "../utils/write-generated-files";
4
+ import type { GeneratedFile } from "../utils/write-generated-files";
5
5
  export declare function generateSortDto({ generatorOptions, metadata }: {
6
6
  generatorOptions: CrudGeneratorOptions;
7
7
  metadata: EntityMetadata<any>;
@@ -32,15 +32,6 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
35
  Object.defineProperty(exports, "__esModule", { value: true });
45
36
  exports.generateSortDto = generateSortDto;
46
37
  exports.generateInputHandling = generateInputHandling;
@@ -261,22 +252,22 @@ function generatePaginatedDto({ generatorOptions, metadata }) {
261
252
  return paginatedOut;
262
253
  }
263
254
  function generateArgsDto({ generatorOptions, metadata }) {
264
- var _a;
265
255
  const { classNameSingular, fileNameSingular } = (0, build_name_variants_1.buildNameVariants)(metadata);
266
256
  const { scopeProp, argsClassName, hasSearchArg, hasSortArg, hasFilterArg, dedicatedResolverArgProps, hasPositionProp, crudSortProps, hasPaging, targetDirectory, } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
267
257
  const imports = [];
268
258
  if (scopeProp && scopeProp.targetMeta) {
269
259
  imports.push(generateEntityImport(scopeProp.targetMeta, `${targetDirectory}/dto`));
270
260
  }
271
- let defaultSortField = ((_a = metadata.props.find((prop) => prop.primary)) === null || _a === void 0 ? void 0 : _a.name) || "id";
261
+ let defaultSortField = metadata.props.find((prop) => prop.primary)?.name || "id";
272
262
  if (hasPositionProp) {
273
263
  defaultSortField = "position";
274
264
  }
275
265
  else if (metadata.props.some((prop) => prop.name === "createdAt" && prop.type === "Date")) {
276
266
  defaultSortField = "createdAt";
277
267
  }
278
- if (!crudSortProps.includes(defaultSortField))
268
+ if (!crudSortProps.includes(defaultSortField)) {
279
269
  defaultSortField = null;
270
+ }
280
271
  const argsOut = `import { ArgsType, Field, IntersectionType, registerEnumType, ID } from "@nestjs/graphql";
281
272
  import { Type } from "class-transformer";
282
273
  import { IsOptional, IsString, ValidateNested, IsEnum, IsUUID } from "class-validator";
@@ -459,8 +450,10 @@ function generateInputHandling(options, metadata, generatorOptions, targetDirect
459
450
  })
460
451
  .map((prop) => {
461
452
  const targetMeta = prop.targetMeta;
462
- if (!targetMeta)
453
+ if (!targetMeta) {
463
454
  throw new Error("targetMeta is not set for relation");
455
+ }
456
+ imports.push(generateEntityImport(targetMeta, targetDirectory));
464
457
  return {
465
458
  name: prop.name,
466
459
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -472,8 +465,9 @@ function generateInputHandling(options, metadata, generatorOptions, targetDirect
472
465
  .filter((prop) => (0, cms_api_1.hasCrudFieldFeature)(metadata.class, prop.name, "input"))
473
466
  .map((prop) => {
474
467
  const targetMeta = prop.targetMeta;
475
- if (!targetMeta)
468
+ if (!targetMeta) {
476
469
  throw new Error("targetMeta is not set for relation");
470
+ }
477
471
  return {
478
472
  name: prop.name,
479
473
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -486,8 +480,9 @@ function generateInputHandling(options, metadata, generatorOptions, targetDirect
486
480
  .filter((prop) => (0, cms_api_1.hasCrudFieldFeature)(metadata.class, prop.name, "input"))
487
481
  .map((prop) => {
488
482
  const targetMeta = prop.targetMeta;
489
- if (!targetMeta)
483
+ if (!targetMeta) {
490
484
  throw new Error("targetMeta is not set for relation");
485
+ }
491
486
  return {
492
487
  name: prop.name,
493
488
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -607,8 +602,9 @@ function generateNestedEntityResolver({ generatorOptions, metadata }) {
607
602
  const { skipScopeCheck, targetDirectory } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
608
603
  const imports = [];
609
604
  const { imports: fieldImports, code, hasOutputRelations, needsBlocksTransformer, } = generateRelationsFieldResolver({ generatorOptions, metadata });
610
- if (!hasOutputRelations)
605
+ if (!hasOutputRelations) {
611
606
  return null;
607
+ }
612
608
  imports.push(...fieldImports);
613
609
  imports.push(generateEntityImport(metadata, targetDirectory));
614
610
  return `
@@ -653,8 +649,9 @@ function generateRelationsFieldResolver({ generatorOptions, metadata }) {
653
649
  outputRelationOneToOneProps.length > 0;
654
650
  const imports = [];
655
651
  for (const prop of [...relationManyToOneProps, ...relationOneToManyProps, ...relationManyToManyProps, ...relationOneToOneProps]) {
656
- if (!prop.targetMeta)
652
+ if (!prop.targetMeta) {
657
653
  throw new Error(`Relation ${prop.name} has targetMeta not set`);
654
+ }
658
655
  imports.push(generateEntityImport(prop.targetMeta, targetDirectory));
659
656
  }
660
657
  for (const prop of resolveFieldBlockProps) {
@@ -717,7 +714,6 @@ function generateRelationsFieldResolver({ generatorOptions, metadata }) {
717
714
  };
718
715
  }
719
716
  function generateResolver({ generatorOptions, metadata }) {
720
- var _a, _b, _c, _d, _e, _f, _g, _h;
721
717
  const { classNameSingular, fileNameSingular, instanceNameSingular, classNamePlural, fileNamePlural, instanceNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
722
718
  const { scopeProp, skipScopeCheck, argsClassName, argsFileName, hasSlugProp, hasSearchArg, hasSortArg, hasFilterArg, hasPositionProp, positionGroupProps, hasDeletedAtProp, dedicatedResolverArgProps, targetDirectory, hasPaging, hasArgsClass, } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
723
719
  const imports = [];
@@ -741,8 +737,8 @@ function generateResolver({ generatorOptions, metadata }) {
741
737
  const hooksService = (0, find_hooks_service_1.findHooksService)({ generatorOptions, metadata, targetDirectory });
742
738
  if (hooksService) {
743
739
  imports.push(...hooksService.imports);
744
- if (((_b = (_a = hooksService.validateCreateInput) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.includes("currentUser")) ||
745
- ((_d = (_c = hooksService.validateUpdateInput) === null || _c === void 0 ? void 0 : _c.options) === null || _d === void 0 ? void 0 : _d.includes("currentUser"))) {
740
+ if (hooksService.validateCreateInput?.options?.includes("currentUser") ||
741
+ hooksService.validateUpdateInput?.options?.includes("currentUser")) {
746
742
  imports.push({ name: "GetCurrentUser", importPath: "@comet/cms-api" });
747
743
  imports.push({ name: "CurrentUser", importPath: "@comet/cms-api" });
748
744
  }
@@ -815,16 +811,23 @@ function generateResolver({ generatorOptions, metadata }) {
815
811
  @Query(() => ${hasPaging ? `Paginated${classNamePlural}` : `[${metadata.className}]`})
816
812
  ${dedicatedResolverArgProps
817
813
  .map((dedicatedResolverArgProp) => {
818
- var _a;
819
- return `@AffectedEntity(${(_a = dedicatedResolverArgProp.targetMeta) === null || _a === void 0 ? void 0 : _a.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
814
+ return `@AffectedEntity(${dedicatedResolverArgProp.targetMeta?.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
820
815
  })
821
816
  .join("")}
822
817
  async ${instanceNameSingular != instanceNamePlural ? instanceNamePlural : `${instanceNamePlural}List`}(
823
818
  ${hasArgsClass
824
- ? `@Args() {${Object.entries(Object.assign(Object.assign({ scope: !!scopeProp }, dedicatedResolverArgProps.reduce((acc, dedicatedResolverArgProp) => {
825
- acc[dedicatedResolverArgProp.name] = true;
826
- return acc;
827
- }, {})), { search: hasPaging && !!hasSearchArg, filter: hasPaging && !!hasFilterArg, sort: hasPaging && !!hasSortArg, offset: hasPaging, limit: hasPaging }))
819
+ ? `@Args() {${Object.entries({
820
+ scope: !!scopeProp,
821
+ ...dedicatedResolverArgProps.reduce((acc, dedicatedResolverArgProp) => {
822
+ acc[dedicatedResolverArgProp.name] = true;
823
+ return acc;
824
+ }, {}),
825
+ search: hasPaging && !!hasSearchArg,
826
+ filter: hasPaging && !!hasFilterArg,
827
+ sort: hasPaging && !!hasSortArg,
828
+ offset: hasPaging,
829
+ limit: hasPaging,
830
+ })
828
831
  .filter(([key, use]) => use)
829
832
  .map(([key]) => key)
830
833
  .join(", ")}}: ${argsClassName}`
@@ -863,8 +866,7 @@ function generateResolver({ generatorOptions, metadata }) {
863
866
  @Mutation(() => ${payloadObjectTypes.createPayloadType || metadata.className})
864
867
  ${dedicatedResolverArgProps
865
868
  .map((dedicatedResolverArgProp) => {
866
- var _a;
867
- return `@AffectedEntity(${(_a = dedicatedResolverArgProp.targetMeta) === null || _a === void 0 ? void 0 : _a.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
869
+ return `@AffectedEntity(${dedicatedResolverArgProp.targetMeta?.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
868
870
  })
869
871
  .join("")}
870
872
  async create${classNameSingular}(
@@ -873,7 +875,7 @@ function generateResolver({ generatorOptions, metadata }) {
873
875
  return `${generateIdArg(dedicatedResolverArgProp.name, metadata)}, `;
874
876
  })
875
877
  .join("")}@Args("input", { type: () => ${classNameSingular}Input }) input: ${classNameSingular}Input
876
- ${((_f = (_e = hooksService === null || hooksService === void 0 ? void 0 : hooksService.validateCreateInput) === null || _e === void 0 ? void 0 : _e.options) === null || _f === void 0 ? void 0 : _f.includes("currentUser")) ? `, @GetCurrentUser() user: CurrentUser` : ""}
878
+ ${hooksService?.validateCreateInput?.options?.includes("currentUser") ? `, @GetCurrentUser() user: CurrentUser` : ""}
877
879
  ): Promise<${payloadObjectTypes.createPayloadType || metadata.className}> {
878
880
  ${(0, generate_service_hook_call_1.generateServiceHookCall)("validateCreateInput", { hooksService, instanceNameSingular, scopeProp, dedicatedResolverArgProps })}
879
881
 
@@ -924,7 +926,7 @@ function generateResolver({ generatorOptions, metadata }) {
924
926
  async update${classNameSingular}(
925
927
  ${generateIdArg("id", metadata)},
926
928
  @Args("input", { type: () => ${classNameSingular}UpdateInput }) input: ${classNameSingular}UpdateInput
927
- ${((_h = (_g = hooksService === null || hooksService === void 0 ? void 0 : hooksService.validateUpdateInput) === null || _g === void 0 ? void 0 : _g.options) === null || _h === void 0 ? void 0 : _h.includes("currentUser")) ? `, @GetCurrentUser() user: CurrentUser` : ""}
929
+ ${hooksService?.validateUpdateInput?.options?.includes("currentUser") ? `, @GetCurrentUser() user: CurrentUser` : ""}
928
930
  ): Promise<${payloadObjectTypes.updatePayloadType || metadata.className}> {
929
931
  const ${instanceNameSingular} = await this.entityManager.findOneOrFail(${metadata.className}, id);
930
932
  ${(0, generate_service_hook_call_1.generateServiceHookCall)("validateUpdateInput", { hooksService, instanceNameSingular, scopeProp, dedicatedResolverArgProps })}
@@ -998,85 +1000,89 @@ function generateResolver({ generatorOptions, metadata }) {
998
1000
  `;
999
1001
  return resolverOut;
1000
1002
  }
1001
- function generateCrud(generatorOptionsParam, metadata) {
1002
- return __awaiter(this, void 0, void 0, function* () {
1003
- var _a, _b, _c, _d, _e;
1004
- const generatorOptions = Object.assign(Object.assign({}, generatorOptionsParam), { create: (_a = generatorOptionsParam.create) !== null && _a !== void 0 ? _a : true, update: (_b = generatorOptionsParam.update) !== null && _b !== void 0 ? _b : true, delete: (_c = generatorOptionsParam.delete) !== null && _c !== void 0 ? _c : true, list: (_d = generatorOptionsParam.list) !== null && _d !== void 0 ? _d : true, single: (_e = generatorOptionsParam.single) !== null && _e !== void 0 ? _e : true });
1005
- if (!generatorOptions.create && !generatorOptions.update && !generatorOptions.delete && !generatorOptions.list && !generatorOptions.single) {
1006
- throw new Error("At least one of create, update, delete, list or single must be true");
1003
+ async function generateCrud(generatorOptionsParam, metadata) {
1004
+ const generatorOptions = {
1005
+ ...generatorOptionsParam,
1006
+ create: generatorOptionsParam.create ?? true,
1007
+ update: generatorOptionsParam.update ?? true,
1008
+ delete: generatorOptionsParam.delete ?? true,
1009
+ list: generatorOptionsParam.list ?? true,
1010
+ single: generatorOptionsParam.single ?? true,
1011
+ };
1012
+ if (!generatorOptions.create && !generatorOptions.update && !generatorOptions.delete && !generatorOptions.list && !generatorOptions.single) {
1013
+ throw new Error("At least one of create, update, delete, list or single must be true");
1014
+ }
1015
+ const generatedFiles = [];
1016
+ const { fileNameSingular, fileNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
1017
+ const { hasFilterArg, hasSortArg, argsFileName, hasPositionProp, hasPaging, hasArgsClass } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
1018
+ async function generateCrudResolver() {
1019
+ if (hasPaging && hasFilterArg) {
1020
+ generatedFiles.push(...generateFilterDto({ generatorOptions, metadata }));
1007
1021
  }
1008
- const generatedFiles = [];
1009
- const { fileNameSingular, fileNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
1010
- const { hasFilterArg, hasSortArg, argsFileName, hasPositionProp, hasPaging, hasArgsClass } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
1011
- function generateCrudResolver() {
1012
- return __awaiter(this, void 0, void 0, function* () {
1013
- if (hasPaging && hasFilterArg) {
1014
- generatedFiles.push(...generateFilterDto({ generatorOptions, metadata }));
1015
- }
1016
- if (hasPaging && hasSortArg) {
1017
- generatedFiles.push({
1018
- name: `dto/${fileNameSingular}.sort.ts`,
1019
- content: generateSortDto({ generatorOptions, metadata }),
1020
- type: "sort",
1021
- });
1022
- }
1023
- if (hasPaging) {
1024
- generatedFiles.push({
1025
- name: `dto/paginated-${fileNamePlural}.ts`,
1026
- content: generatePaginatedDto({ generatorOptions, metadata }),
1027
- type: "sort",
1028
- });
1029
- }
1030
- if (hasArgsClass) {
1031
- generatedFiles.push({
1032
- name: `dto/${argsFileName}.ts`,
1033
- content: generateArgsDto({ generatorOptions, metadata }),
1034
- type: "args",
1035
- });
1022
+ if (hasPaging && hasSortArg) {
1023
+ generatedFiles.push({
1024
+ name: `dto/${fileNameSingular}.sort.ts`,
1025
+ content: generateSortDto({ generatorOptions, metadata }),
1026
+ type: "sort",
1027
+ });
1028
+ }
1029
+ if (hasPaging) {
1030
+ generatedFiles.push({
1031
+ name: `dto/paginated-${fileNamePlural}.ts`,
1032
+ content: generatePaginatedDto({ generatorOptions, metadata }),
1033
+ type: "sort",
1034
+ });
1035
+ }
1036
+ if (hasArgsClass) {
1037
+ generatedFiles.push({
1038
+ name: `dto/${argsFileName}.ts`,
1039
+ content: generateArgsDto({ generatorOptions, metadata }),
1040
+ type: "args",
1041
+ });
1042
+ }
1043
+ if (hasPositionProp) {
1044
+ generatedFiles.push({
1045
+ name: `${fileNamePlural}.service.ts`,
1046
+ content: generateService({ generatorOptions, metadata }),
1047
+ type: "service",
1048
+ });
1049
+ }
1050
+ generatedFiles.push({
1051
+ name: `${fileNameSingular}.resolver.ts`,
1052
+ content: generateResolver({ generatorOptions, metadata }),
1053
+ type: "resolver",
1054
+ });
1055
+ metadata.props
1056
+ .filter((prop) => {
1057
+ if (prop.kind === "1:m" && prop.orphanRemoval) {
1058
+ if (!prop.targetMeta) {
1059
+ throw new Error(`Target metadata not set`);
1036
1060
  }
1037
- if (hasPositionProp) {
1038
- generatedFiles.push({
1039
- name: `${fileNamePlural}.service.ts`,
1040
- content: generateService({ generatorOptions, metadata }),
1041
- type: "service",
1042
- });
1061
+ const hasOwnCrudGenerator = Reflect.getMetadata(cms_api_1.CRUD_GENERATOR_METADATA_KEY, prop.targetMeta.class);
1062
+ if (!hasOwnCrudGenerator) {
1063
+ //generate nested resolver only if target entity has no own crud generator
1064
+ return true;
1043
1065
  }
1066
+ }
1067
+ })
1068
+ .forEach((prop) => {
1069
+ if (!prop.targetMeta) {
1070
+ throw new Error(`Target metadata not set`);
1071
+ }
1072
+ const { fileNameSingular } = (0, build_name_variants_1.buildNameVariants)(prop.targetMeta);
1073
+ const content = generateNestedEntityResolver({ generatorOptions, metadata: prop.targetMeta });
1074
+ //can be null if no relations exist
1075
+ if (content) {
1044
1076
  generatedFiles.push({
1045
1077
  name: `${fileNameSingular}.resolver.ts`,
1046
- content: generateResolver({ generatorOptions, metadata }),
1078
+ content,
1047
1079
  type: "resolver",
1048
1080
  });
1049
- metadata.props
1050
- .filter((prop) => {
1051
- if (prop.kind === "1:m" && prop.orphanRemoval) {
1052
- if (!prop.targetMeta)
1053
- throw new Error(`Target metadata not set`);
1054
- const hasOwnCrudGenerator = Reflect.getMetadata(cms_api_1.CRUD_GENERATOR_METADATA_KEY, prop.targetMeta.class);
1055
- if (!hasOwnCrudGenerator) {
1056
- //generate nested resolver only if target entity has no own crud generator
1057
- return true;
1058
- }
1059
- }
1060
- })
1061
- .forEach((prop) => {
1062
- if (!prop.targetMeta)
1063
- throw new Error(`Target metadata not set`);
1064
- const { fileNameSingular } = (0, build_name_variants_1.buildNameVariants)(prop.targetMeta);
1065
- const content = generateNestedEntityResolver({ generatorOptions, metadata: prop.targetMeta });
1066
- //can be null if no relations exist
1067
- if (content) {
1068
- generatedFiles.push({
1069
- name: `${fileNameSingular}.resolver.ts`,
1070
- content,
1071
- type: "resolver",
1072
- });
1073
- }
1074
- });
1075
- return generatedFiles;
1076
- });
1077
- }
1078
- const crudInput = yield (0, generate_crud_input_1.generateCrudInput)(generatorOptions, metadata);
1079
- const crudResolver = yield generateCrudResolver();
1080
- return [...crudInput, ...crudResolver];
1081
- });
1081
+ }
1082
+ });
1083
+ return generatedFiles;
1084
+ }
1085
+ const crudInput = await (0, generate_crud_input_1.generateCrudInput)(generatorOptions, metadata);
1086
+ const crudResolver = await generateCrudResolver();
1087
+ return [...crudInput, ...crudResolver];
1082
1088
  }
@@ -1,2 +1,2 @@
1
- import { type GeneratedFile } from "../utils/write-generated-files";
1
+ import type { GeneratedFile } from "../utils/write-generated-files";
2
2
  export declare function generateEnumFilterDto(type: "enum" | "enums", enumName: string, enumPath: string): GeneratedFile;
@@ -1,5 +1,5 @@
1
- import { type findHooksService } from "../utils/find-hooks-service";
2
- import { type Imports } from "../utils/generate-imports-code";
1
+ import type { findHooksService } from "../utils/find-hooks-service";
2
+ import type { Imports } from "../utils/generate-imports-code";
3
3
  export declare function generatePayloadObjectTypes({ hooksService, instanceNameSingular, entityName, }: {
4
4
  hooksService: ReturnType<typeof findHooksService>;
5
5
  instanceNameSingular: string;
@@ -2,19 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generatePayloadObjectTypes = generatePayloadObjectTypes;
4
4
  function generatePayloadObjectTypes({ hooksService, instanceNameSingular, entityName, }) {
5
- var _a, _b;
6
5
  const ret = {
7
6
  createPayloadType: null,
8
7
  updatePayloadType: null,
9
8
  code: "",
10
9
  imports: [],
11
10
  };
12
- const createReturnType = (_a = hooksService === null || hooksService === void 0 ? void 0 : hooksService.validateCreateInput) === null || _a === void 0 ? void 0 : _a.returnType;
11
+ const createReturnType = hooksService?.validateCreateInput?.returnType;
13
12
  if (createReturnType) {
14
13
  ret.createPayloadType = `Create${entityName}Payload`;
15
14
  ret.code += generate({ className: ret.createPayloadType, returnType: createReturnType, instanceNameSingular, entityName });
16
15
  }
17
- const updateReturnType = (_b = hooksService === null || hooksService === void 0 ? void 0 : hooksService.validateUpdateInput) === null || _b === void 0 ? void 0 : _b.returnType;
16
+ const updateReturnType = hooksService?.validateUpdateInput?.returnType;
18
17
  if (updateReturnType) {
19
18
  ret.updatePayloadType = `Update${entityName}Payload`;
20
19
  ret.code += generate({ className: ret.updatePayloadType, returnType: updateReturnType, instanceNameSingular, entityName });
@@ -1,5 +1,5 @@
1
- import { type EntityProperty } from "@mikro-orm/core";
2
- import { type findHooksService } from "../utils/find-hooks-service";
1
+ import type { EntityProperty } from "@mikro-orm/core";
2
+ import type { findHooksService } from "../utils/find-hooks-service";
3
3
  export declare function generateServiceHookCall(type: "validateCreateInput" | "validateUpdateInput", { hooksService, instanceNameSingular, dedicatedResolverArgProps, scopeProp, }: {
4
4
  hooksService: ReturnType<typeof findHooksService>;
5
5
  instanceNameSingular: string;
@@ -2,23 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateServiceHookCall = generateServiceHookCall;
4
4
  function generateServiceHookCall(type, { hooksService, instanceNameSingular, dedicatedResolverArgProps, scopeProp, }) {
5
- var _a, _b, _c, _d;
6
- if (!hooksService)
5
+ if (!hooksService) {
7
6
  return "";
7
+ }
8
8
  const hook = type === "validateCreateInput" ? hooksService.validateCreateInput : hooksService.validateUpdateInput;
9
- if (!hook)
9
+ if (!hook) {
10
10
  return "";
11
+ }
11
12
  const options = [];
12
- if ((_a = hook.options) === null || _a === void 0 ? void 0 : _a.includes("currentUser")) {
13
+ if (hook.options?.includes("currentUser")) {
13
14
  options.push("currentUser: user");
14
15
  }
15
- if ((_b = hook.options) === null || _b === void 0 ? void 0 : _b.includes("scope")) {
16
+ if (hook.options?.includes("scope")) {
16
17
  if (!scopeProp) {
17
18
  throw new Error(`${type} hook expects scope, but no scopeProp found`);
18
19
  }
19
20
  options.push("scope");
20
21
  }
21
- if ((_c = hook.options) === null || _c === void 0 ? void 0 : _c.includes("args")) {
22
+ if (hook.options?.includes("args")) {
22
23
  if (type === "validateUpdateInput") {
23
24
  throw new Error("validateUpdateInput hook cannot have args option, as args are only available during creation");
24
25
  }
@@ -30,7 +31,7 @@ function generateServiceHookCall(type, { hooksService, instanceNameSingular, ded
30
31
  });
31
32
  options.push(`args: { ${argsCode.join(", ")} }`);
32
33
  }
33
- if ((_d = hook.options) === null || _d === void 0 ? void 0 : _d.includes("entity")) {
34
+ if (hook.options?.includes("entity")) {
34
35
  if (type === "validateCreateInput") {
35
36
  throw new Error("validateCreateInput hook cannot have entity option");
36
37
  }
@@ -1,6 +1,6 @@
1
1
  import { type Permission } from "@comet/cms-api";
2
- import { type EntityMetadata } from "@mikro-orm/postgresql";
3
- import { type GeneratedFile } from "../utils/write-generated-files";
2
+ import type { EntityMetadata } from "@mikro-orm/postgresql";
3
+ import type { GeneratedFile } from "../utils/write-generated-files";
4
4
  export declare function generateCrudInput(generatorOptions: {
5
5
  requiredPermission: Permission | Permission[];
6
6
  }, metadata: EntityMetadata<any>, options?: {