yeoman-environment 4.0.0 → 4.1.1

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.
@@ -22,5 +22,9 @@ export declare class ComposedStore {
22
22
  uniqueBy?: undefined;
23
23
  };
24
24
  getUniqueByPathMap(root: string): Map<string, BaseGenerator>;
25
- private getFeature;
25
+ findFeature(featureName: string): Array<{
26
+ generatorId: string;
27
+ feature: any;
28
+ }>;
29
+ private findUniqueFeature;
26
30
  }
@@ -11,10 +11,10 @@ export class ComposedStore {
11
11
  this.log = log;
12
12
  }
13
13
  get customCommitTask() {
14
- return this.getFeature('customCommitTask');
14
+ return this.findUniqueFeature('customCommitTask');
15
15
  }
16
16
  get customInstallTask() {
17
- return this.getFeature('customInstallTask');
17
+ return this.findUniqueFeature('customInstallTask');
18
18
  }
19
19
  getGenerators() {
20
20
  return { ...this.generators };
@@ -53,19 +53,22 @@ export class ComposedStore {
53
53
  }
54
54
  return this.uniqueByPathMap.get(root);
55
55
  }
56
- getFeature(featureName) {
57
- const providedFeatures = Object.entries(this.generators)
56
+ findFeature(featureName) {
57
+ return Object.entries(this.generators)
58
58
  .map(([generatorId, generator]) => {
59
59
  const { features = generator.getFeatures?.() } = generator;
60
60
  const feature = features?.[featureName];
61
- return feature ? [generatorId, feature] : undefined;
61
+ return feature ? { generatorId, feature } : undefined;
62
62
  })
63
63
  .filter(Boolean);
64
+ }
65
+ findUniqueFeature(featureName) {
66
+ const providedFeatures = this.findFeature(featureName);
64
67
  if (providedFeatures.length > 0) {
65
68
  if (providedFeatures.length > 1) {
66
- this.log?.info?.(`Multiple ${featureName} tasks found (${providedFeatures.map(([generatorId]) => generatorId).join(', ')}). Using the first.`);
69
+ this.log?.info?.(`Multiple ${featureName} tasks found (${providedFeatures.map(({ generatorId }) => generatorId).join(', ')}). Using the first.`);
67
70
  }
68
- const [generatorId, feature] = providedFeatures[0];
71
+ const { generatorId, feature } = providedFeatures[0];
69
72
  debug(`Feature ${featureName} provided by ${generatorId}`);
70
73
  return feature;
71
74
  }
@@ -49,6 +49,10 @@ export default class EnvironmentBase extends EventEmitter implements BaseEnviron
49
49
  protected _rootGenerator?: BaseGenerator;
50
50
  protected compatibilityMode?: false | 'v4';
51
51
  constructor(options?: EnvironmentOptions);
52
+ findFeature(featureName: string): Array<{
53
+ generatorId: string;
54
+ feature: any;
55
+ }>;
52
56
  applyTransforms(transformStreams: FilePipelineTransform[], options?: ApplyTransformsOptions): Promise<void>;
53
57
  /**
54
58
  * Get a single generator from the registered list of generators. The lookup is
@@ -136,6 +136,9 @@ export default class EnvironmentBase extends EventEmitter {
136
136
  this.experimental = experimental || process.argv.includes('--experimental');
137
137
  this.alias(/^([^:]+)$/, '$1:app');
138
138
  }
139
+ findFeature(featureName) {
140
+ return this.composedStore.findFeature(featureName);
141
+ }
139
142
  async applyTransforms(transformStreams, options = {}) {
140
143
  const { streamOptions = { filter: file => isFilePending(file) }, stream = this.sharedFs.stream(streamOptions), name = 'Transforming', } = options;
141
144
  if (!Array.isArray(transformStreams)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yeoman-environment",
3
- "version": "4.0.0",
3
+ "version": "4.1.1",
4
4
  "description": "Handles the lifecyle and bootstrapping of generators in a specific environment",
5
5
  "keywords": [
6
6
  "development",
@@ -90,7 +90,7 @@
90
90
  "prettier": "3.0.3",
91
91
  "prettier-plugin-packagejson": "^2.4.6",
92
92
  "rimraf": "^5.0.5",
93
- "sinon": "^16.1.0",
93
+ "sinon": "^17.0.0",
94
94
  "sinon-test": "^3.1.5",
95
95
  "strip-ansi": "^7.1.0",
96
96
  "typescript": "5.2.2",
@@ -99,8 +99,9 @@
99
99
  "yeoman-environment": "file:./",
100
100
  "yeoman-generator-2": "npm:yeoman-generator@^2.0.5",
101
101
  "yeoman-generator-4": "npm:yeoman-generator@^4.13.0",
102
- "yeoman-generator-5": "npm:yeoman-generator@^5.9.0",
102
+ "yeoman-generator-5": "npm:yeoman-generator@^5.10.0",
103
103
  "yeoman-generator-6": "npm:yeoman-generator@^6.0.1",
104
+ "yeoman-generator-7": "npm:yeoman-generator@^7.0.0",
104
105
  "yeoman-test": "^8.1.0"
105
106
  },
106
107
  "overrides": {