@ingenyus/swarm-wasp 0.2.1 → 0.2.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 (30) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/generators/action/action-generator.js +30 -34
  3. package/dist/generators/action/index.js +30 -34
  4. package/dist/generators/api/api-generator.js +30 -34
  5. package/dist/generators/api/index.js +30 -34
  6. package/dist/generators/api-namespace/api-namespace-generator.js +30 -34
  7. package/dist/generators/api-namespace/index.js +30 -34
  8. package/dist/generators/base/component-generator.base.d.ts +4 -7
  9. package/dist/generators/base/component-generator.base.d.ts.map +1 -1
  10. package/dist/generators/base/component-generator.base.js +30 -34
  11. package/dist/generators/base/index.js +30 -34
  12. package/dist/generators/base/operation-generator.base.js +30 -34
  13. package/dist/generators/base/wasp-generator.base.d.ts +3 -5
  14. package/dist/generators/base/wasp-generator.base.d.ts.map +1 -1
  15. package/dist/generators/base/wasp-generator.base.js +10 -10
  16. package/dist/generators/crud/crud-generator.js +30 -34
  17. package/dist/generators/crud/index.js +30 -34
  18. package/dist/generators/feature/feature-generator.d.ts +2 -4
  19. package/dist/generators/feature/feature-generator.d.ts.map +1 -1
  20. package/dist/generators/feature/feature-generator.js +16 -22
  21. package/dist/generators/feature/index.js +16 -22
  22. package/dist/generators/index.js +30 -34
  23. package/dist/generators/job/index.js +30 -34
  24. package/dist/generators/job/job-generator.js +30 -34
  25. package/dist/generators/query/index.js +30 -34
  26. package/dist/generators/query/query-generator.js +30 -34
  27. package/dist/generators/route/index.js +30 -34
  28. package/dist/generators/route/route-generator.js +30 -34
  29. package/dist/index.js +30 -34
  30. package/package.json +2 -2
@@ -40,8 +40,8 @@ var CONFIG_TYPES = {
40
40
 
41
41
  // src/generators/base/component-generator.base.ts
42
42
  import {
43
+ GeneratorRuntime,
43
44
  hasHelperMethodCall,
44
- logger as singletonLogger4,
45
45
  toCamelCase,
46
46
  toKebabCase as toKebabCase2,
47
47
  validateFeaturePath as validateFeaturePath3
@@ -350,17 +350,12 @@ var TemplateUtility = class {
350
350
  };
351
351
 
352
352
  // src/generators/feature/feature-generator.ts
353
- import {
354
- handleFatalError as handleFatalError2,
355
- logger as singletonLogger3,
356
- validateFeaturePath as validateFeaturePath2
357
- } from "@ingenyus/swarm";
353
+ import { handleFatalError as handleFatalError2, validateFeaturePath as validateFeaturePath2 } from "@ingenyus/swarm";
358
354
  import path5 from "path";
359
355
 
360
356
  // src/generators/base/wasp-generator.base.ts
361
357
  import {
362
358
  GeneratorBase,
363
- logger as singletonLogger2,
364
359
  SwarmConfigManager,
365
360
  TemplateResolver
366
361
  } from "@ingenyus/swarm";
@@ -803,14 +798,6 @@ var WaspConfigGenerator = class {
803
798
 
804
799
  // src/generators/base/wasp-generator.base.ts
805
800
  var WaspGeneratorBase = class extends GeneratorBase {
806
- constructor(fileSystem = realFileSystem, logger = singletonLogger2) {
807
- super(fileSystem, logger);
808
- this.fileSystem = fileSystem;
809
- this.logger = logger;
810
- this.configGenerator = new WaspConfigGenerator(logger, fileSystem);
811
- this.templateUtility = new TemplateUtility(fileSystem);
812
- this.templateResolver = new TemplateResolver(fileSystem);
813
- }
814
801
  configGenerator;
815
802
  templateUtility;
816
803
  templateResolver;
@@ -818,6 +805,15 @@ var WaspGeneratorBase = class extends GeneratorBase {
818
805
  configLoaded = false;
819
806
  // Plugin name from swarm.config.json
820
807
  pluginName = PLUGIN_NAME;
808
+ constructor() {
809
+ super();
810
+ this.configGenerator = new WaspConfigGenerator(
811
+ this.logger,
812
+ this.fileSystem
813
+ );
814
+ this.templateUtility = new TemplateUtility(this.fileSystem);
815
+ this.templateResolver = new TemplateResolver(this.fileSystem);
816
+ }
821
817
  async loadSwarmConfig() {
822
818
  if (this.configLoaded) return;
823
819
  const configManager = new SwarmConfigManager();
@@ -868,7 +864,7 @@ var WaspGeneratorBase = class extends GeneratorBase {
868
864
  }
869
865
  /**
870
866
  * Generic existence check with force flag handling
871
- * Consolidates the pattern used in both file and config checks
867
+ * Consolidates the pattern used in both file and config existence checks
872
868
  */
873
869
  checkExistence(exists, itemDescription, force, errorMessage) {
874
870
  if (exists && !force) {
@@ -908,16 +904,14 @@ var schema = z2.object({
908
904
 
909
905
  // src/generators/feature/feature-generator.ts
910
906
  var FeatureGenerator = class extends WaspGeneratorBase {
911
- constructor(logger = singletonLogger3, fileSystem = realFileSystem) {
912
- super(fileSystem, logger);
913
- this.logger = logger;
914
- this.fileSystem = fileSystem;
915
- this.name = "feature";
916
- this.description = "Generates a feature directory containing a Wasp configuration file";
917
- }
918
907
  name;
919
908
  description;
920
909
  schema = schema;
910
+ constructor() {
911
+ super();
912
+ this.name = "feature";
913
+ this.description = "Generates a feature directory containing a Wasp configuration file";
914
+ }
921
915
  getDefaultTemplatePath(templateName) {
922
916
  return this.templateUtility.resolveTemplatePath(
923
917
  templateName,
@@ -953,13 +947,6 @@ var FeatureGenerator = class extends WaspGeneratorBase {
953
947
 
954
948
  // src/generators/base/component-generator.base.ts
955
949
  var ComponentGeneratorBase = class extends WaspGeneratorBase {
956
- constructor(logger = singletonLogger4, fileSystem = realFileSystem, featureDirectoryGenerator = new FeatureGenerator(logger, fileSystem)) {
957
- super(fileSystem, logger);
958
- this.logger = logger;
959
- this.fileSystem = fileSystem;
960
- this.featureDirectoryGenerator = featureDirectoryGenerator;
961
- this.featureDirectoryGenerator = featureDirectoryGenerator;
962
- }
963
950
  getDefaultTemplatePath(templateName) {
964
951
  return this.templateUtility.resolveTemplatePath(
965
952
  templateName,
@@ -967,6 +954,17 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
967
954
  import.meta.url
968
955
  );
969
956
  }
957
+ featureDirectoryGenerator;
958
+ constructor() {
959
+ super();
960
+ const runtime = GeneratorRuntime.current();
961
+ if (runtime.featureGeneratorFactory) {
962
+ const factoryResult = runtime.featureGeneratorFactory(runtime);
963
+ this.featureDirectoryGenerator = factoryResult;
964
+ } else {
965
+ this.featureDirectoryGenerator = new FeatureGenerator();
966
+ }
967
+ }
970
968
  get name() {
971
969
  return toKebabCase2(this.componentType);
972
970
  }
@@ -1043,15 +1041,14 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
1043
1041
  }
1044
1042
  /**
1045
1043
  * Gets the appropriate directory for a feature based on its path.
1046
- * @param fileSystem - The filesystem abstraction
1047
1044
  * @param featurePath - The full feature path
1048
1045
  * @param type - The type of file being generated
1049
1046
  * @returns The target directory and import path
1050
1047
  */
1051
- getFeatureTargetDir(fileSystem, featurePath, type) {
1048
+ getFeatureTargetDir(featurePath, type) {
1052
1049
  validateFeaturePath3(featurePath);
1053
1050
  const normalisedPath = normaliseFeaturePath(featurePath);
1054
- const featureDir = getFeatureDir(fileSystem, normalisedPath);
1051
+ const featureDir = getFeatureDir(this.fileSystem, normalisedPath);
1055
1052
  const typeKey = type.toLowerCase();
1056
1053
  const typeDirectory = TYPE_DIRECTORIES[typeKey];
1057
1054
  const targetDirectory = path6.join(featureDir, typeDirectory);
@@ -1063,7 +1060,6 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
1063
1060
  */
1064
1061
  ensureTargetDirectory(featurePath, type) {
1065
1062
  const { targetDirectory, importDirectory } = this.getFeatureTargetDir(
1066
- this.fileSystem,
1067
1063
  featurePath,
1068
1064
  type
1069
1065
  );
@@ -203,8 +203,8 @@ var TemplateUtility = class {
203
203
 
204
204
  // src/generators/base/component-generator.base.ts
205
205
  import {
206
+ GeneratorRuntime,
206
207
  hasHelperMethodCall,
207
- logger as singletonLogger4,
208
208
  toCamelCase,
209
209
  toKebabCase as toKebabCase2,
210
210
  validateFeaturePath as validateFeaturePath3
@@ -212,17 +212,12 @@ import {
212
212
  import path6 from "path";
213
213
 
214
214
  // src/generators/feature/feature-generator.ts
215
- import {
216
- handleFatalError as handleFatalError2,
217
- logger as singletonLogger3,
218
- validateFeaturePath as validateFeaturePath2
219
- } from "@ingenyus/swarm";
215
+ import { handleFatalError as handleFatalError2, validateFeaturePath as validateFeaturePath2 } from "@ingenyus/swarm";
220
216
  import path5 from "path";
221
217
 
222
218
  // src/generators/base/wasp-generator.base.ts
223
219
  import {
224
220
  GeneratorBase,
225
- logger as singletonLogger2,
226
221
  SwarmConfigManager,
227
222
  TemplateResolver
228
223
  } from "@ingenyus/swarm";
@@ -665,14 +660,6 @@ var WaspConfigGenerator = class {
665
660
 
666
661
  // src/generators/base/wasp-generator.base.ts
667
662
  var WaspGeneratorBase = class extends GeneratorBase {
668
- constructor(fileSystem = realFileSystem, logger = singletonLogger2) {
669
- super(fileSystem, logger);
670
- this.fileSystem = fileSystem;
671
- this.logger = logger;
672
- this.configGenerator = new WaspConfigGenerator(logger, fileSystem);
673
- this.templateUtility = new TemplateUtility(fileSystem);
674
- this.templateResolver = new TemplateResolver(fileSystem);
675
- }
676
663
  configGenerator;
677
664
  templateUtility;
678
665
  templateResolver;
@@ -680,6 +667,15 @@ var WaspGeneratorBase = class extends GeneratorBase {
680
667
  configLoaded = false;
681
668
  // Plugin name from swarm.config.json
682
669
  pluginName = PLUGIN_NAME;
670
+ constructor() {
671
+ super();
672
+ this.configGenerator = new WaspConfigGenerator(
673
+ this.logger,
674
+ this.fileSystem
675
+ );
676
+ this.templateUtility = new TemplateUtility(this.fileSystem);
677
+ this.templateResolver = new TemplateResolver(this.fileSystem);
678
+ }
683
679
  async loadSwarmConfig() {
684
680
  if (this.configLoaded) return;
685
681
  const configManager = new SwarmConfigManager();
@@ -730,7 +726,7 @@ var WaspGeneratorBase = class extends GeneratorBase {
730
726
  }
731
727
  /**
732
728
  * Generic existence check with force flag handling
733
- * Consolidates the pattern used in both file and config checks
729
+ * Consolidates the pattern used in both file and config existence checks
734
730
  */
735
731
  checkExistence(exists, itemDescription, force, errorMessage) {
736
732
  if (exists && !force) {
@@ -770,16 +766,14 @@ var schema = z2.object({
770
766
 
771
767
  // src/generators/feature/feature-generator.ts
772
768
  var FeatureGenerator = class extends WaspGeneratorBase {
773
- constructor(logger = singletonLogger3, fileSystem = realFileSystem) {
774
- super(fileSystem, logger);
775
- this.logger = logger;
776
- this.fileSystem = fileSystem;
777
- this.name = "feature";
778
- this.description = "Generates a feature directory containing a Wasp configuration file";
779
- }
780
769
  name;
781
770
  description;
782
771
  schema = schema;
772
+ constructor() {
773
+ super();
774
+ this.name = "feature";
775
+ this.description = "Generates a feature directory containing a Wasp configuration file";
776
+ }
783
777
  getDefaultTemplatePath(templateName) {
784
778
  return this.templateUtility.resolveTemplatePath(
785
779
  templateName,
@@ -815,13 +809,6 @@ var FeatureGenerator = class extends WaspGeneratorBase {
815
809
 
816
810
  // src/generators/base/component-generator.base.ts
817
811
  var ComponentGeneratorBase = class extends WaspGeneratorBase {
818
- constructor(logger = singletonLogger4, fileSystem = realFileSystem, featureDirectoryGenerator = new FeatureGenerator(logger, fileSystem)) {
819
- super(fileSystem, logger);
820
- this.logger = logger;
821
- this.fileSystem = fileSystem;
822
- this.featureDirectoryGenerator = featureDirectoryGenerator;
823
- this.featureDirectoryGenerator = featureDirectoryGenerator;
824
- }
825
812
  getDefaultTemplatePath(templateName) {
826
813
  return this.templateUtility.resolveTemplatePath(
827
814
  templateName,
@@ -829,6 +816,17 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
829
816
  import.meta.url
830
817
  );
831
818
  }
819
+ featureDirectoryGenerator;
820
+ constructor() {
821
+ super();
822
+ const runtime = GeneratorRuntime.current();
823
+ if (runtime.featureGeneratorFactory) {
824
+ const factoryResult = runtime.featureGeneratorFactory(runtime);
825
+ this.featureDirectoryGenerator = factoryResult;
826
+ } else {
827
+ this.featureDirectoryGenerator = new FeatureGenerator();
828
+ }
829
+ }
832
830
  get name() {
833
831
  return toKebabCase2(this.componentType);
834
832
  }
@@ -905,15 +903,14 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
905
903
  }
906
904
  /**
907
905
  * Gets the appropriate directory for a feature based on its path.
908
- * @param fileSystem - The filesystem abstraction
909
906
  * @param featurePath - The full feature path
910
907
  * @param type - The type of file being generated
911
908
  * @returns The target directory and import path
912
909
  */
913
- getFeatureTargetDir(fileSystem, featurePath, type) {
910
+ getFeatureTargetDir(featurePath, type) {
914
911
  validateFeaturePath3(featurePath);
915
912
  const normalisedPath = normaliseFeaturePath(featurePath);
916
- const featureDir = getFeatureDir(fileSystem, normalisedPath);
913
+ const featureDir = getFeatureDir(this.fileSystem, normalisedPath);
917
914
  const typeKey = type.toLowerCase();
918
915
  const typeDirectory = TYPE_DIRECTORIES[typeKey];
919
916
  const targetDirectory = path6.join(featureDir, typeDirectory);
@@ -925,7 +922,6 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
925
922
  */
926
923
  ensureTargetDirectory(featurePath, type) {
927
924
  const { targetDirectory, importDirectory } = this.getFeatureTargetDir(
928
- this.fileSystem,
929
925
  featurePath,
930
926
  type
931
927
  );
@@ -203,8 +203,8 @@ var TemplateUtility = class {
203
203
 
204
204
  // src/generators/base/component-generator.base.ts
205
205
  import {
206
+ GeneratorRuntime,
206
207
  hasHelperMethodCall,
207
- logger as singletonLogger4,
208
208
  toCamelCase,
209
209
  toKebabCase as toKebabCase2,
210
210
  validateFeaturePath as validateFeaturePath3
@@ -212,17 +212,12 @@ import {
212
212
  import path6 from "path";
213
213
 
214
214
  // src/generators/feature/feature-generator.ts
215
- import {
216
- handleFatalError as handleFatalError2,
217
- logger as singletonLogger3,
218
- validateFeaturePath as validateFeaturePath2
219
- } from "@ingenyus/swarm";
215
+ import { handleFatalError as handleFatalError2, validateFeaturePath as validateFeaturePath2 } from "@ingenyus/swarm";
220
216
  import path5 from "path";
221
217
 
222
218
  // src/generators/base/wasp-generator.base.ts
223
219
  import {
224
220
  GeneratorBase,
225
- logger as singletonLogger2,
226
221
  SwarmConfigManager,
227
222
  TemplateResolver
228
223
  } from "@ingenyus/swarm";
@@ -665,14 +660,6 @@ var WaspConfigGenerator = class {
665
660
 
666
661
  // src/generators/base/wasp-generator.base.ts
667
662
  var WaspGeneratorBase = class extends GeneratorBase {
668
- constructor(fileSystem = realFileSystem, logger = singletonLogger2) {
669
- super(fileSystem, logger);
670
- this.fileSystem = fileSystem;
671
- this.logger = logger;
672
- this.configGenerator = new WaspConfigGenerator(logger, fileSystem);
673
- this.templateUtility = new TemplateUtility(fileSystem);
674
- this.templateResolver = new TemplateResolver(fileSystem);
675
- }
676
663
  configGenerator;
677
664
  templateUtility;
678
665
  templateResolver;
@@ -680,6 +667,15 @@ var WaspGeneratorBase = class extends GeneratorBase {
680
667
  configLoaded = false;
681
668
  // Plugin name from swarm.config.json
682
669
  pluginName = PLUGIN_NAME;
670
+ constructor() {
671
+ super();
672
+ this.configGenerator = new WaspConfigGenerator(
673
+ this.logger,
674
+ this.fileSystem
675
+ );
676
+ this.templateUtility = new TemplateUtility(this.fileSystem);
677
+ this.templateResolver = new TemplateResolver(this.fileSystem);
678
+ }
683
679
  async loadSwarmConfig() {
684
680
  if (this.configLoaded) return;
685
681
  const configManager = new SwarmConfigManager();
@@ -730,7 +726,7 @@ var WaspGeneratorBase = class extends GeneratorBase {
730
726
  }
731
727
  /**
732
728
  * Generic existence check with force flag handling
733
- * Consolidates the pattern used in both file and config checks
729
+ * Consolidates the pattern used in both file and config existence checks
734
730
  */
735
731
  checkExistence(exists, itemDescription, force, errorMessage) {
736
732
  if (exists && !force) {
@@ -770,16 +766,14 @@ var schema = z2.object({
770
766
 
771
767
  // src/generators/feature/feature-generator.ts
772
768
  var FeatureGenerator = class extends WaspGeneratorBase {
773
- constructor(logger = singletonLogger3, fileSystem = realFileSystem) {
774
- super(fileSystem, logger);
775
- this.logger = logger;
776
- this.fileSystem = fileSystem;
777
- this.name = "feature";
778
- this.description = "Generates a feature directory containing a Wasp configuration file";
779
- }
780
769
  name;
781
770
  description;
782
771
  schema = schema;
772
+ constructor() {
773
+ super();
774
+ this.name = "feature";
775
+ this.description = "Generates a feature directory containing a Wasp configuration file";
776
+ }
783
777
  getDefaultTemplatePath(templateName) {
784
778
  return this.templateUtility.resolveTemplatePath(
785
779
  templateName,
@@ -815,13 +809,6 @@ var FeatureGenerator = class extends WaspGeneratorBase {
815
809
 
816
810
  // src/generators/base/component-generator.base.ts
817
811
  var ComponentGeneratorBase = class extends WaspGeneratorBase {
818
- constructor(logger = singletonLogger4, fileSystem = realFileSystem, featureDirectoryGenerator = new FeatureGenerator(logger, fileSystem)) {
819
- super(fileSystem, logger);
820
- this.logger = logger;
821
- this.fileSystem = fileSystem;
822
- this.featureDirectoryGenerator = featureDirectoryGenerator;
823
- this.featureDirectoryGenerator = featureDirectoryGenerator;
824
- }
825
812
  getDefaultTemplatePath(templateName) {
826
813
  return this.templateUtility.resolveTemplatePath(
827
814
  templateName,
@@ -829,6 +816,17 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
829
816
  import.meta.url
830
817
  );
831
818
  }
819
+ featureDirectoryGenerator;
820
+ constructor() {
821
+ super();
822
+ const runtime = GeneratorRuntime.current();
823
+ if (runtime.featureGeneratorFactory) {
824
+ const factoryResult = runtime.featureGeneratorFactory(runtime);
825
+ this.featureDirectoryGenerator = factoryResult;
826
+ } else {
827
+ this.featureDirectoryGenerator = new FeatureGenerator();
828
+ }
829
+ }
832
830
  get name() {
833
831
  return toKebabCase2(this.componentType);
834
832
  }
@@ -905,15 +903,14 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
905
903
  }
906
904
  /**
907
905
  * Gets the appropriate directory for a feature based on its path.
908
- * @param fileSystem - The filesystem abstraction
909
906
  * @param featurePath - The full feature path
910
907
  * @param type - The type of file being generated
911
908
  * @returns The target directory and import path
912
909
  */
913
- getFeatureTargetDir(fileSystem, featurePath, type) {
910
+ getFeatureTargetDir(featurePath, type) {
914
911
  validateFeaturePath3(featurePath);
915
912
  const normalisedPath = normaliseFeaturePath(featurePath);
916
- const featureDir = getFeatureDir(fileSystem, normalisedPath);
913
+ const featureDir = getFeatureDir(this.fileSystem, normalisedPath);
917
914
  const typeKey = type.toLowerCase();
918
915
  const typeDirectory = TYPE_DIRECTORIES[typeKey];
919
916
  const targetDirectory = path6.join(featureDir, typeDirectory);
@@ -925,7 +922,6 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
925
922
  */
926
923
  ensureTargetDirectory(featurePath, type) {
927
924
  const { targetDirectory, importDirectory } = this.getFeatureTargetDir(
928
- this.fileSystem,
929
925
  featurePath,
930
926
  type
931
927
  );
@@ -30,8 +30,8 @@ var CONFIG_TYPES = {
30
30
 
31
31
  // src/generators/base/component-generator.base.ts
32
32
  import {
33
+ GeneratorRuntime,
33
34
  hasHelperMethodCall,
34
- logger as singletonLogger4,
35
35
  toCamelCase,
36
36
  toKebabCase as toKebabCase2,
37
37
  validateFeaturePath as validateFeaturePath3
@@ -200,17 +200,12 @@ var TemplateUtility = class {
200
200
  };
201
201
 
202
202
  // src/generators/feature/feature-generator.ts
203
- import {
204
- handleFatalError as handleFatalError2,
205
- logger as singletonLogger3,
206
- validateFeaturePath as validateFeaturePath2
207
- } from "@ingenyus/swarm";
203
+ import { handleFatalError as handleFatalError2, validateFeaturePath as validateFeaturePath2 } from "@ingenyus/swarm";
208
204
  import path5 from "path";
209
205
 
210
206
  // src/generators/base/wasp-generator.base.ts
211
207
  import {
212
208
  GeneratorBase,
213
- logger as singletonLogger2,
214
209
  SwarmConfigManager,
215
210
  TemplateResolver
216
211
  } from "@ingenyus/swarm";
@@ -653,14 +648,6 @@ var WaspConfigGenerator = class {
653
648
 
654
649
  // src/generators/base/wasp-generator.base.ts
655
650
  var WaspGeneratorBase = class extends GeneratorBase {
656
- constructor(fileSystem = realFileSystem, logger = singletonLogger2) {
657
- super(fileSystem, logger);
658
- this.fileSystem = fileSystem;
659
- this.logger = logger;
660
- this.configGenerator = new WaspConfigGenerator(logger, fileSystem);
661
- this.templateUtility = new TemplateUtility(fileSystem);
662
- this.templateResolver = new TemplateResolver(fileSystem);
663
- }
664
651
  configGenerator;
665
652
  templateUtility;
666
653
  templateResolver;
@@ -668,6 +655,15 @@ var WaspGeneratorBase = class extends GeneratorBase {
668
655
  configLoaded = false;
669
656
  // Plugin name from swarm.config.json
670
657
  pluginName = PLUGIN_NAME;
658
+ constructor() {
659
+ super();
660
+ this.configGenerator = new WaspConfigGenerator(
661
+ this.logger,
662
+ this.fileSystem
663
+ );
664
+ this.templateUtility = new TemplateUtility(this.fileSystem);
665
+ this.templateResolver = new TemplateResolver(this.fileSystem);
666
+ }
671
667
  async loadSwarmConfig() {
672
668
  if (this.configLoaded) return;
673
669
  const configManager = new SwarmConfigManager();
@@ -718,7 +714,7 @@ var WaspGeneratorBase = class extends GeneratorBase {
718
714
  }
719
715
  /**
720
716
  * Generic existence check with force flag handling
721
- * Consolidates the pattern used in both file and config checks
717
+ * Consolidates the pattern used in both file and config existence checks
722
718
  */
723
719
  checkExistence(exists, itemDescription, force, errorMessage) {
724
720
  if (exists && !force) {
@@ -758,16 +754,14 @@ var schema = z2.object({
758
754
 
759
755
  // src/generators/feature/feature-generator.ts
760
756
  var FeatureGenerator = class extends WaspGeneratorBase {
761
- constructor(logger = singletonLogger3, fileSystem = realFileSystem) {
762
- super(fileSystem, logger);
763
- this.logger = logger;
764
- this.fileSystem = fileSystem;
765
- this.name = "feature";
766
- this.description = "Generates a feature directory containing a Wasp configuration file";
767
- }
768
757
  name;
769
758
  description;
770
759
  schema = schema;
760
+ constructor() {
761
+ super();
762
+ this.name = "feature";
763
+ this.description = "Generates a feature directory containing a Wasp configuration file";
764
+ }
771
765
  getDefaultTemplatePath(templateName) {
772
766
  return this.templateUtility.resolveTemplatePath(
773
767
  templateName,
@@ -803,13 +797,6 @@ var FeatureGenerator = class extends WaspGeneratorBase {
803
797
 
804
798
  // src/generators/base/component-generator.base.ts
805
799
  var ComponentGeneratorBase = class extends WaspGeneratorBase {
806
- constructor(logger = singletonLogger4, fileSystem = realFileSystem, featureDirectoryGenerator = new FeatureGenerator(logger, fileSystem)) {
807
- super(fileSystem, logger);
808
- this.logger = logger;
809
- this.fileSystem = fileSystem;
810
- this.featureDirectoryGenerator = featureDirectoryGenerator;
811
- this.featureDirectoryGenerator = featureDirectoryGenerator;
812
- }
813
800
  getDefaultTemplatePath(templateName) {
814
801
  return this.templateUtility.resolveTemplatePath(
815
802
  templateName,
@@ -817,6 +804,17 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
817
804
  import.meta.url
818
805
  );
819
806
  }
807
+ featureDirectoryGenerator;
808
+ constructor() {
809
+ super();
810
+ const runtime = GeneratorRuntime.current();
811
+ if (runtime.featureGeneratorFactory) {
812
+ const factoryResult = runtime.featureGeneratorFactory(runtime);
813
+ this.featureDirectoryGenerator = factoryResult;
814
+ } else {
815
+ this.featureDirectoryGenerator = new FeatureGenerator();
816
+ }
817
+ }
820
818
  get name() {
821
819
  return toKebabCase2(this.componentType);
822
820
  }
@@ -893,15 +891,14 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
893
891
  }
894
892
  /**
895
893
  * Gets the appropriate directory for a feature based on its path.
896
- * @param fileSystem - The filesystem abstraction
897
894
  * @param featurePath - The full feature path
898
895
  * @param type - The type of file being generated
899
896
  * @returns The target directory and import path
900
897
  */
901
- getFeatureTargetDir(fileSystem, featurePath, type) {
898
+ getFeatureTargetDir(featurePath, type) {
902
899
  validateFeaturePath3(featurePath);
903
900
  const normalisedPath = normaliseFeaturePath(featurePath);
904
- const featureDir = getFeatureDir(fileSystem, normalisedPath);
901
+ const featureDir = getFeatureDir(this.fileSystem, normalisedPath);
905
902
  const typeKey = type.toLowerCase();
906
903
  const typeDirectory = TYPE_DIRECTORIES[typeKey];
907
904
  const targetDirectory = path6.join(featureDir, typeDirectory);
@@ -913,7 +910,6 @@ var ComponentGeneratorBase = class extends WaspGeneratorBase {
913
910
  */
914
911
  ensureTargetDirectory(featurePath, type) {
915
912
  const { targetDirectory, importDirectory } = this.getFeatureTargetDir(
916
- this.fileSystem,
917
913
  featurePath,
918
914
  type
919
915
  );