Skip to content

Commit d686deb

Browse files
committed
feat: exttract getFeaturesFromGenerator
1 parent 321c466 commit d686deb

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/composed-store.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import crypto from 'node:crypto';
22
import { toNamespace } from '@yeoman/namespace';
3-
import type { BaseGenerator, Logger } from '@yeoman/types';
3+
import type { BaseGenerator, GeneratorFeatures, Logger } from '@yeoman/types';
44
import createdLogger from 'debug';
55
import type { InstallTask } from './package-manager.ts';
66

77
const debug = createdLogger('yeoman:environment:composed-store');
88

99
type UniqueFeatureType = 'customCommitTask' | 'customInstallTask';
1010

11+
type EnvironmentGeneratorFeatures = GeneratorFeatures & Record<UniqueFeatureType, unknown>;
12+
13+
const getFeaturesFromGenerator = (generator: BaseGenerator): EnvironmentGeneratorFeatures => {
14+
return generator.features ?? (generator as any).getFeatures?.() ?? {};
15+
};
16+
1117
export class ComposedStore {
1218
private readonly log?;
1319
private readonly generators: Record<string, BaseGenerator> = {};
@@ -31,7 +37,7 @@ export class ComposedStore {
3137
}
3238

3339
addGenerator(generator: BaseGenerator) {
34-
const { features = (generator as any).getFeatures?.() ?? {} } = generator;
40+
const features = getFeaturesFromGenerator(generator);
3541
let { uniqueBy } = features;
3642
const { uniqueGlobally } = features;
3743

@@ -73,8 +79,8 @@ export class ComposedStore {
7379
findFeature<T = unknown>(featureName: string): Array<{ generatorId: string; feature: T }> {
7480
return Object.entries(this.generators)
7581
.map(([generatorId, generator]) => {
76-
const { features = (generator as any).getFeatures?.() } = generator;
77-
const feature = features?.[featureName];
82+
const features = getFeaturesFromGenerator(generator) as Record<string, unknown>;
83+
const feature = features[featureName];
7884
return feature ? { generatorId, feature: feature as T } : undefined;
7985
})
8086
.filter(Boolean) as Array<{ generatorId: string; feature: T }>;

0 commit comments

Comments
 (0)