@yeoman/types 0.4.0 → 1.0.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeoman/types",
3
- "version": "0.4.0",
3
+ "version": "1.0.0",
4
4
  "private": false,
5
5
  "description": "Common API for yeoman's generator/environment stack",
6
6
  "keywords": [
@@ -56,5 +56,5 @@
56
56
  "access": "public",
57
57
  "registry": "https://registry.npmjs.org/"
58
58
  },
59
- "gitHead": "fddebd6424725b9636af96a643a25f00f7314a77"
59
+ "gitHead": "cb5b453d1e92fcc70874d4cdaea77cf90fdd60f7"
60
60
  }
@@ -1,12 +1,19 @@
1
- import type { Transform } from 'node:stream';
1
+ import type { PipelineSource, Transform } from 'node:stream';
2
2
  import type { Store } from 'mem-fs';
3
3
  import type { MemFsEditorFile } from 'mem-fs-editor';
4
4
 
5
5
  import type { BaseGeneratorOptions } from '../generator/generator-options.js';
6
6
  import type { BaseGenerator, BaseGeneratorConstructor } from '../generator/generator.js';
7
- import type { GetGeneratorConstructor, GetGeneratorOptions } from '../generator/utils.js';
7
+ import type { GetGeneratorConstructor } from '../generator/utils.js';
8
8
  import type { InputOutputAdapter } from './adapter.js';
9
- import type { GeneratorMeta, LookupGeneratorMeta, LookupOptions, BaseGeneratorMeta } from './methods-options.js';
9
+ import type {
10
+ GeneratorMeta,
11
+ LookupGeneratorMeta,
12
+ LookupOptions,
13
+ BaseGeneratorMeta,
14
+ InstantiateOptions,
15
+ ComposeOptions,
16
+ } from './methods-options.js';
10
17
 
11
18
  export type EnvironmentConstructor<A extends InputOutputAdapter = InputOutputAdapter> = new (
12
19
  options?: BaseEnvironmentOptions,
@@ -38,16 +45,21 @@ export type BaseEnvironmentOptions = BaseGeneratorOptions & {
38
45
  export type ApplyTransformsOptions = {
39
46
  name?: string;
40
47
  log?: boolean;
41
- stream?: ReturnType<Store<MemFsEditorFile>['stream']>;
42
- streamOptions: Parameters<Store<MemFsEditorFile>['stream']>[0];
48
+ stream?: PipelineSource<any>;
49
+ streamOptions?: Parameters<Store<MemFsEditorFile>['stream']>[0];
43
50
  };
44
51
 
52
+ /**
53
+ * BaseEnvironment provides the api used by yeoman-test and yeoman-generator that should remain stable between major yeoman-environment versions.
54
+ */
45
55
  export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorFile> = Store<MemFsEditorFile>> = {
46
56
  cwd: string;
47
57
  adapter: A;
48
58
  sharedFs: S;
49
59
 
50
60
  emit(eventName: string | symbol, ...args: any[]): boolean;
61
+ on(eventName: string | symbol, listener: (...args: any[]) => void): unknown;
62
+ once(eventName: string | symbol, listener: (...args: any[]) => void): unknown;
51
63
 
52
64
  applyTransforms(transformStreams: Transform[], options?: ApplyTransformsOptions): Promise<void>;
53
65
 
@@ -65,14 +77,17 @@ export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorF
65
77
 
66
78
  create<G extends BaseGenerator = BaseGenerator>(
67
79
  namespaceOrPath: string | GetGeneratorConstructor<G>,
68
- args: string[],
69
- options?: Partial<Omit<GetGeneratorOptions<G>, 'env' | 'resolved' | 'namespace'>>,
80
+ instantiateOptions: InstantiateOptions<G>,
70
81
  ): Promise<G>;
71
82
 
72
83
  instantiate<G extends BaseGenerator = BaseGenerator>(
73
84
  generator: GetGeneratorConstructor<G>,
74
- args: string[],
75
- options?: Partial<Omit<GetGeneratorOptions<G>, 'env' | 'resolved' | 'namespace'>>,
85
+ instantiateOptions: InstantiateOptions<G>,
86
+ ): Promise<G>;
87
+
88
+ composeWith<G extends BaseGenerator = BaseGenerator>(
89
+ generator: string | GetGeneratorConstructor<G>,
90
+ composeOptions?: ComposeOptions<G>,
76
91
  ): Promise<G>;
77
92
 
78
93
  /**
@@ -117,10 +132,9 @@ export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorF
117
132
  *
118
133
  * @param dependency The name of the dependency.
119
134
  */
120
- // eslint-disable-next-line @typescript-eslint/unified-signatures
121
- getVersion(dependency: string): string;
135
+ getVersion(dependency: string): string | undefined;
122
136
 
123
- queueGenerator<G extends BaseGenerator = BaseGenerator>(generator: G, schedule?: boolean): Promise<G>;
137
+ queueGenerator<G extends BaseGenerator = BaseGenerator>(generator: G, queueOptions?: { schedule?: boolean }): Promise<G>;
124
138
 
125
139
  rootGenerator<G extends BaseGenerator = BaseGenerator>(): G;
126
140
 
@@ -133,7 +147,7 @@ export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorF
133
147
  * @param filePath The filepath to the generator or an npm package name.
134
148
  * @param meta Generator metadata.
135
149
  */
136
- register(filePath: string, meta?: Partial<BaseGeneratorMeta>): void;
150
+ register(filePath: string, meta?: Partial<BaseGeneratorMeta>): GeneratorMeta;
137
151
 
138
152
  /**
139
153
  * Registers a stubbed generator to this environment.
@@ -141,7 +155,7 @@ export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorF
141
155
  * @param generator The generator constructor.
142
156
  * @param meta Generator metadata.
143
157
  */
144
- register(generator: unknown, meta: BaseGeneratorMeta): void;
158
+ register(generator: unknown, meta: BaseGeneratorMeta): GeneratorMeta;
145
159
 
146
160
  /**
147
161
  * Queue tasks
@@ -175,21 +189,8 @@ export type BaseEnvironment<A = InputOutputAdapter, S extends Store<MemFsEditorF
175
189
  */
176
190
  lookup(options?: LookupOptions): Promise<LookupGeneratorMeta[]>;
177
191
 
178
- /**
179
- * Checks whether a package with the specified `packageNamespace` has been registered.
180
- *
181
- * @param packageNamespace The package-namespace to check.
182
- * @returns A value indicating whether a package with the specified `packageNamespace` has been registered.
183
- */
184
- isPackageRegistered(packageNamespace?: string): boolean;
185
-
186
- /**
187
- * Gets the namespaces of all registered packages.
188
- */
189
- getRegisteredPackages(): string[];
190
-
191
192
  /**
192
193
  * Returns stored generators meta
193
194
  */
194
- getGeneratorMeta(namespace: string): GeneratorMeta;
195
+ getGeneratorMeta(namespace: string): GeneratorMeta | undefined;
195
196
  };
@@ -1,4 +1,4 @@
1
- import { type BaseGenerator, type GetGeneratorConstructor } from '../index.js';
1
+ import type { GetGeneratorOptions, BaseGenerator, GetGeneratorConstructor } from '../index.js';
2
2
 
3
3
  /**
4
4
  * Provides options for the `lookup` method.
@@ -40,30 +40,21 @@ export type LookupOptions = {
40
40
  };
41
41
 
42
42
  /**
43
- * Provides information about a generator.
43
+ * Provides lookup information about a generator.
44
44
  */
45
- export type LookupGeneratorMeta = {
46
- /**
47
- * A value indicating whether the generator could be registered.
48
- */
49
- registered: boolean;
50
-
51
- /**
52
- * The resolved path to the generator.
53
- */
54
- generatorPath: string;
45
+ export type LookupGeneratorMeta = NotRegisteredLookupGeneratorMeta | RegisteredLookupGeneratorMeta;
55
46
 
56
- /**
57
- * The namespace of the generator.
58
- */
59
- namespace: string;
60
-
61
- /**
62
- * The path to the package containing the generator.
63
- */
64
- packagePath: string;
47
+ export type NotRegisteredLookupGeneratorMeta = Required<BaseGeneratorMeta> & {
48
+ /** Failed to register. */
49
+ registered: false;
65
50
  };
66
51
 
52
+ export type RegisteredLookupGeneratorMeta = Required<BaseGeneratorMeta> &
53
+ GeneratorMeta & {
54
+ /** Successfully registered package. */
55
+ registered: true;
56
+ };
57
+
67
58
  export type BaseGeneratorMeta = {
68
59
  /** The key under which the generator can be retrieved */
69
60
  namespace: string;
@@ -80,7 +71,14 @@ export type GeneratorMeta = BaseGeneratorMeta & {
80
71
  /** Import the module `import(meta.resolved)` */
81
72
  importModule?: () => Promise<unknown>;
82
73
  /** Intantiate the Generator `env.instantiate(await meta.importGenerator())` */
83
- instantiate: <G extends BaseGenerator = BaseGenerator>(args?: string[], options?: any) => Promise<G>;
74
+ instantiate: (args?: string[], options?: any) => Promise<BaseGenerator>;
84
75
  /** Intantiate the Generator passing help option */
85
- instantiateHelp: <G extends BaseGenerator = BaseGenerator>() => Promise<G>;
76
+ instantiateHelp: () => Promise<BaseGenerator>;
86
77
  };
78
+
79
+ export type InstantiateOptions<G extends BaseGenerator = BaseGenerator> = {
80
+ generatorArgs?: string[];
81
+ generatorOptions?: Partial<Omit<GetGeneratorOptions<G>, 'env' | 'resolved' | 'namespace'>> | undefined;
82
+ };
83
+
84
+ export type ComposeOptions<G extends BaseGenerator = BaseGenerator> = InstantiateOptions<G> & { schedule?: boolean };
@@ -6,6 +6,10 @@ export type EnvironmentGenerator = {
6
6
  readonly env: BaseEnvironment;
7
7
  readonly features: unknown;
8
8
 
9
+ emit(eventName: string | symbol, ...args: any[]): boolean;
10
+ on(eventName: string | symbol, listener: (...args: any[]) => void): unknown;
11
+ once(eventName: string | symbol, listener: (...args: any[]) => void): unknown;
12
+
9
13
  _postConstruct?(): Promise<void>;
10
14
 
11
15
  destinationRoot(): string;
@@ -24,6 +28,7 @@ export type BaseGenerator<
24
28
  readonly features: F | undefined;
25
29
  };
26
30
 
27
- export type BaseGeneratorConstructor<O extends GeneratorOptions = GeneratorOptions, F extends GeneratorFeatures = GeneratorFeatures> =
28
- | (new (args?: string[], options?: O, features?: F) => BaseGenerator<O, F>)
29
- | (new (options?: O, features?: F) => BaseGenerator<O, F>);
31
+ export type BaseGeneratorConstructor<
32
+ O extends GeneratorOptions = GeneratorOptions,
33
+ F extends GeneratorFeatures = GeneratorFeatures,
34
+ > = (new (args?: string[], options?: O, features?: F) => BaseGenerator<O, F>) & (new (options?: O, features?: F) => BaseGenerator<O, F>);