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

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 +109 -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 +8 -8
@@ -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,9 @@ 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
+ }
464
456
  return {
465
457
  name: prop.name,
466
458
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -472,8 +464,9 @@ function generateInputHandling(options, metadata, generatorOptions, targetDirect
472
464
  .filter((prop) => (0, cms_api_1.hasCrudFieldFeature)(metadata.class, prop.name, "input"))
473
465
  .map((prop) => {
474
466
  const targetMeta = prop.targetMeta;
475
- if (!targetMeta)
467
+ if (!targetMeta) {
476
468
  throw new Error("targetMeta is not set for relation");
469
+ }
477
470
  return {
478
471
  name: prop.name,
479
472
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -486,8 +479,9 @@ function generateInputHandling(options, metadata, generatorOptions, targetDirect
486
479
  .filter((prop) => (0, cms_api_1.hasCrudFieldFeature)(metadata.class, prop.name, "input"))
487
480
  .map((prop) => {
488
481
  const targetMeta = prop.targetMeta;
489
- if (!targetMeta)
482
+ if (!targetMeta) {
490
483
  throw new Error("targetMeta is not set for relation");
484
+ }
491
485
  return {
492
486
  name: prop.name,
493
487
  singularName: (0, pluralize_1.singular)(prop.name),
@@ -607,8 +601,9 @@ function generateNestedEntityResolver({ generatorOptions, metadata }) {
607
601
  const { skipScopeCheck, targetDirectory } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
608
602
  const imports = [];
609
603
  const { imports: fieldImports, code, hasOutputRelations, needsBlocksTransformer, } = generateRelationsFieldResolver({ generatorOptions, metadata });
610
- if (!hasOutputRelations)
604
+ if (!hasOutputRelations) {
611
605
  return null;
606
+ }
612
607
  imports.push(...fieldImports);
613
608
  imports.push(generateEntityImport(metadata, targetDirectory));
614
609
  return `
@@ -653,8 +648,9 @@ function generateRelationsFieldResolver({ generatorOptions, metadata }) {
653
648
  outputRelationOneToOneProps.length > 0;
654
649
  const imports = [];
655
650
  for (const prop of [...relationManyToOneProps, ...relationOneToManyProps, ...relationManyToManyProps, ...relationOneToOneProps]) {
656
- if (!prop.targetMeta)
651
+ if (!prop.targetMeta) {
657
652
  throw new Error(`Relation ${prop.name} has targetMeta not set`);
653
+ }
658
654
  imports.push(generateEntityImport(prop.targetMeta, targetDirectory));
659
655
  }
660
656
  for (const prop of resolveFieldBlockProps) {
@@ -717,7 +713,6 @@ function generateRelationsFieldResolver({ generatorOptions, metadata }) {
717
713
  };
718
714
  }
719
715
  function generateResolver({ generatorOptions, metadata }) {
720
- var _a, _b, _c, _d, _e, _f, _g, _h;
721
716
  const { classNameSingular, fileNameSingular, instanceNameSingular, classNamePlural, fileNamePlural, instanceNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
722
717
  const { scopeProp, skipScopeCheck, argsClassName, argsFileName, hasSlugProp, hasSearchArg, hasSortArg, hasFilterArg, hasPositionProp, positionGroupProps, hasDeletedAtProp, dedicatedResolverArgProps, targetDirectory, hasPaging, hasArgsClass, } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
723
718
  const imports = [];
@@ -741,8 +736,8 @@ function generateResolver({ generatorOptions, metadata }) {
741
736
  const hooksService = (0, find_hooks_service_1.findHooksService)({ generatorOptions, metadata, targetDirectory });
742
737
  if (hooksService) {
743
738
  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"))) {
739
+ if (hooksService.validateCreateInput?.options?.includes("currentUser") ||
740
+ hooksService.validateUpdateInput?.options?.includes("currentUser")) {
746
741
  imports.push({ name: "GetCurrentUser", importPath: "@comet/cms-api" });
747
742
  imports.push({ name: "CurrentUser", importPath: "@comet/cms-api" });
748
743
  }
@@ -815,16 +810,23 @@ function generateResolver({ generatorOptions, metadata }) {
815
810
  @Query(() => ${hasPaging ? `Paginated${classNamePlural}` : `[${metadata.className}]`})
816
811
  ${dedicatedResolverArgProps
817
812
  .map((dedicatedResolverArgProp) => {
818
- var _a;
819
- return `@AffectedEntity(${(_a = dedicatedResolverArgProp.targetMeta) === null || _a === void 0 ? void 0 : _a.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
813
+ return `@AffectedEntity(${dedicatedResolverArgProp.targetMeta?.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
820
814
  })
821
815
  .join("")}
822
816
  async ${instanceNameSingular != instanceNamePlural ? instanceNamePlural : `${instanceNamePlural}List`}(
823
817
  ${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 }))
818
+ ? `@Args() {${Object.entries({
819
+ scope: !!scopeProp,
820
+ ...dedicatedResolverArgProps.reduce((acc, dedicatedResolverArgProp) => {
821
+ acc[dedicatedResolverArgProp.name] = true;
822
+ return acc;
823
+ }, {}),
824
+ search: hasPaging && !!hasSearchArg,
825
+ filter: hasPaging && !!hasFilterArg,
826
+ sort: hasPaging && !!hasSortArg,
827
+ offset: hasPaging,
828
+ limit: hasPaging,
829
+ })
828
830
  .filter(([key, use]) => use)
829
831
  .map(([key]) => key)
830
832
  .join(", ")}}: ${argsClassName}`
@@ -863,8 +865,7 @@ function generateResolver({ generatorOptions, metadata }) {
863
865
  @Mutation(() => ${payloadObjectTypes.createPayloadType || metadata.className})
864
866
  ${dedicatedResolverArgProps
865
867
  .map((dedicatedResolverArgProp) => {
866
- var _a;
867
- return `@AffectedEntity(${(_a = dedicatedResolverArgProp.targetMeta) === null || _a === void 0 ? void 0 : _a.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
868
+ return `@AffectedEntity(${dedicatedResolverArgProp.targetMeta?.className}, { idArg: "${dedicatedResolverArgProp.name}" })`;
868
869
  })
869
870
  .join("")}
870
871
  async create${classNameSingular}(
@@ -873,7 +874,7 @@ function generateResolver({ generatorOptions, metadata }) {
873
874
  return `${generateIdArg(dedicatedResolverArgProp.name, metadata)}, `;
874
875
  })
875
876
  .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` : ""}
877
+ ${hooksService?.validateCreateInput?.options?.includes("currentUser") ? `, @GetCurrentUser() user: CurrentUser` : ""}
877
878
  ): Promise<${payloadObjectTypes.createPayloadType || metadata.className}> {
878
879
  ${(0, generate_service_hook_call_1.generateServiceHookCall)("validateCreateInput", { hooksService, instanceNameSingular, scopeProp, dedicatedResolverArgProps })}
879
880
 
@@ -924,7 +925,7 @@ function generateResolver({ generatorOptions, metadata }) {
924
925
  async update${classNameSingular}(
925
926
  ${generateIdArg("id", metadata)},
926
927
  @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` : ""}
928
+ ${hooksService?.validateUpdateInput?.options?.includes("currentUser") ? `, @GetCurrentUser() user: CurrentUser` : ""}
928
929
  ): Promise<${payloadObjectTypes.updatePayloadType || metadata.className}> {
929
930
  const ${instanceNameSingular} = await this.entityManager.findOneOrFail(${metadata.className}, id);
930
931
  ${(0, generate_service_hook_call_1.generateServiceHookCall)("validateUpdateInput", { hooksService, instanceNameSingular, scopeProp, dedicatedResolverArgProps })}
@@ -998,85 +999,89 @@ function generateResolver({ generatorOptions, metadata }) {
998
999
  `;
999
1000
  return resolverOut;
1000
1001
  }
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");
1002
+ async function generateCrud(generatorOptionsParam, metadata) {
1003
+ const generatorOptions = {
1004
+ ...generatorOptionsParam,
1005
+ create: generatorOptionsParam.create ?? true,
1006
+ update: generatorOptionsParam.update ?? true,
1007
+ delete: generatorOptionsParam.delete ?? true,
1008
+ list: generatorOptionsParam.list ?? true,
1009
+ single: generatorOptionsParam.single ?? true,
1010
+ };
1011
+ if (!generatorOptions.create && !generatorOptions.update && !generatorOptions.delete && !generatorOptions.list && !generatorOptions.single) {
1012
+ throw new Error("At least one of create, update, delete, list or single must be true");
1013
+ }
1014
+ const generatedFiles = [];
1015
+ const { fileNameSingular, fileNamePlural } = (0, build_name_variants_1.buildNameVariants)(metadata);
1016
+ const { hasFilterArg, hasSortArg, argsFileName, hasPositionProp, hasPaging, hasArgsClass } = (0, build_options_1.buildOptions)(metadata, generatorOptions);
1017
+ async function generateCrudResolver() {
1018
+ if (hasPaging && hasFilterArg) {
1019
+ generatedFiles.push(...generateFilterDto({ generatorOptions, metadata }));
1007
1020
  }
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
- });
1021
+ if (hasPaging && hasSortArg) {
1022
+ generatedFiles.push({
1023
+ name: `dto/${fileNameSingular}.sort.ts`,
1024
+ content: generateSortDto({ generatorOptions, metadata }),
1025
+ type: "sort",
1026
+ });
1027
+ }
1028
+ if (hasPaging) {
1029
+ generatedFiles.push({
1030
+ name: `dto/paginated-${fileNamePlural}.ts`,
1031
+ content: generatePaginatedDto({ generatorOptions, metadata }),
1032
+ type: "sort",
1033
+ });
1034
+ }
1035
+ if (hasArgsClass) {
1036
+ generatedFiles.push({
1037
+ name: `dto/${argsFileName}.ts`,
1038
+ content: generateArgsDto({ generatorOptions, metadata }),
1039
+ type: "args",
1040
+ });
1041
+ }
1042
+ if (hasPositionProp) {
1043
+ generatedFiles.push({
1044
+ name: `${fileNamePlural}.service.ts`,
1045
+ content: generateService({ generatorOptions, metadata }),
1046
+ type: "service",
1047
+ });
1048
+ }
1049
+ generatedFiles.push({
1050
+ name: `${fileNameSingular}.resolver.ts`,
1051
+ content: generateResolver({ generatorOptions, metadata }),
1052
+ type: "resolver",
1053
+ });
1054
+ metadata.props
1055
+ .filter((prop) => {
1056
+ if (prop.kind === "1:m" && prop.orphanRemoval) {
1057
+ if (!prop.targetMeta) {
1058
+ throw new Error(`Target metadata not set`);
1036
1059
  }
1037
- if (hasPositionProp) {
1038
- generatedFiles.push({
1039
- name: `${fileNamePlural}.service.ts`,
1040
- content: generateService({ generatorOptions, metadata }),
1041
- type: "service",
1042
- });
1060
+ const hasOwnCrudGenerator = Reflect.getMetadata(cms_api_1.CRUD_GENERATOR_METADATA_KEY, prop.targetMeta.class);
1061
+ if (!hasOwnCrudGenerator) {
1062
+ //generate nested resolver only if target entity has no own crud generator
1063
+ return true;
1043
1064
  }
1065
+ }
1066
+ })
1067
+ .forEach((prop) => {
1068
+ if (!prop.targetMeta) {
1069
+ throw new Error(`Target metadata not set`);
1070
+ }
1071
+ const { fileNameSingular } = (0, build_name_variants_1.buildNameVariants)(prop.targetMeta);
1072
+ const content = generateNestedEntityResolver({ generatorOptions, metadata: prop.targetMeta });
1073
+ //can be null if no relations exist
1074
+ if (content) {
1044
1075
  generatedFiles.push({
1045
1076
  name: `${fileNameSingular}.resolver.ts`,
1046
- content: generateResolver({ generatorOptions, metadata }),
1077
+ content,
1047
1078
  type: "resolver",
1048
1079
  });
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
- });
1080
+ }
1081
+ });
1082
+ return generatedFiles;
1083
+ }
1084
+ const crudInput = await (0, generate_crud_input_1.generateCrudInput)(generatorOptions, metadata);
1085
+ const crudResolver = await generateCrudResolver();
1086
+ return [...crudInput, ...crudResolver];
1082
1087
  }
@@ -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?: {