yeoman-environment 4.0.0-beta.5 → 4.0.0-rc.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/dist/commit.d.ts CHANGED
@@ -1,17 +1,12 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import type { PipelineSource } from 'node:stream';
3
1
  import type { InputOutputAdapter } from '@yeoman/types';
4
2
  import { type ConflicterOptions } from '@yeoman/conflicter';
5
3
  import type { Store } from 'mem-fs';
6
4
  import { type MemFsEditorFile } from 'mem-fs-editor';
7
5
  /**
8
6
  * Commits the MemFs to the disc.
9
- * @param {Stream} [stream] - files stream, defaults to this.sharedFs.stream().
10
- * @return {Promise}
11
7
  */
12
- export declare const commitSharedFsTask: ({ adapter, conflicterOptions, sharedFs, stream, }: {
8
+ export declare const commitSharedFsTask: ({ adapter, conflicterOptions, sharedFs, }: {
13
9
  adapter: InputOutputAdapter;
14
10
  conflicterOptions?: ConflicterOptions | undefined;
15
11
  sharedFs: Store<MemFsEditorFile>;
16
- stream?: PipelineSource<any> | undefined;
17
- }) => any;
12
+ }) => Promise<void>;
package/dist/commit.js CHANGED
@@ -2,24 +2,15 @@ import { createConflicterTransform, createYoResolveTransform, forceYoFiles } fro
2
2
  import createdLogger from 'debug';
3
3
  import { create as createMemFsEditor } from 'mem-fs-editor';
4
4
  // eslint-disable-next-line n/file-extension-in-import
5
- import { isFilePending } from 'mem-fs-editor/state';
6
- // eslint-disable-next-line n/file-extension-in-import
7
5
  import { createCommitTransform } from 'mem-fs-editor/transform';
6
+ // eslint-disable-next-line n/file-extension-in-import
7
+ import { isFilePending } from 'mem-fs-editor/state';
8
8
  const debug = createdLogger('yeoman:environment:commit');
9
9
  /**
10
10
  * Commits the MemFs to the disc.
11
- * @param {Stream} [stream] - files stream, defaults to this.sharedFs.stream().
12
- * @return {Promise}
13
11
  */
14
- export const commitSharedFsTask = ({ adapter, conflicterOptions, sharedFs, stream, }) => {
12
+ export const commitSharedFsTask = async ({ adapter, conflicterOptions, sharedFs, }) => {
15
13
  debug('Running commitSharedFsTask');
16
- const fs = createMemFsEditor(sharedFs);
17
- stream = stream ?? fs.store.stream({ filter: file => isFilePending(file) });
18
- return fs.commit([
19
- createYoResolveTransform(),
20
- forceYoFiles(),
21
- createConflicterTransform(adapter, conflicterOptions),
22
- // Use custom commit transform due to out of order transform.
23
- createCommitTransform(fs),
24
- ], stream);
14
+ const editor = createMemFsEditor(sharedFs);
15
+ await sharedFs.pipeline({ filter: (file) => isFilePending(file) || file.path.endsWith('.yo-resolve') }, createYoResolveTransform(), forceYoFiles(), createConflicterTransform(adapter, conflicterOptions), createCommitTransform());
25
16
  };
@@ -3,7 +3,7 @@ import EventEmitter from 'node:events';
3
3
  import { QueuedAdapter, type TerminalAdapterOptions } from '@yeoman/adapter';
4
4
  import type { ApplyTransformsOptions, BaseEnvironment, BaseEnvironmentOptions, BaseGenerator, BaseGeneratorConstructor, BaseGeneratorMeta, ComposeOptions, GeneratorMeta, GetGeneratorConstructor, InputOutputAdapter, InstantiateOptions, LookupGeneratorMeta } from '@yeoman/types';
5
5
  import { type Store as MemFs } from 'mem-fs';
6
- import { type MemFsEditor, type MemFsEditorFile } from 'mem-fs-editor';
6
+ import { type MemFsEditorFile } from 'mem-fs-editor';
7
7
  import { FlyRepository } from 'fly-import';
8
8
  import GroupedQueue from 'grouped-queue';
9
9
  import { type FilePipelineTransform } from '@yeoman/transform';
@@ -29,10 +29,10 @@ export type EnvironmentOptions = BaseEnvironmentOptions & Omit<TerminalAdapterOp
29
29
  export declare function removePropertiesWithNullishValues(object: Record<string, any>): Record<string, any>;
30
30
  export default class EnvironmentBase extends EventEmitter implements BaseEnvironment {
31
31
  cwd: string;
32
+ logCwd: string;
32
33
  adapter: QueuedAdapter;
33
34
  sharedFs: MemFs<MemFsEditorFile>;
34
35
  conflicterOptions?: ConflicterOptions;
35
- protected logCwd: string;
36
36
  protected readonly options: EnvironmentOptions;
37
37
  protected readonly aliases: Array<{
38
38
  match: RegExp;
@@ -42,7 +42,6 @@ export default class EnvironmentBase extends EventEmitter implements BaseEnviron
42
42
  protected command?: YeomanCommand;
43
43
  protected runLoop: GroupedQueue;
44
44
  protected composedStore: ComposedStore;
45
- protected fs: MemFsEditor;
46
45
  protected lookups: string[];
47
46
  protected sharedOptions: Record<string, any>;
48
47
  protected repository: FlyRepository;
@@ -5,7 +5,6 @@ import process from 'node:process';
5
5
  import { realpathSync } from 'node:fs';
6
6
  import { QueuedAdapter } from '@yeoman/adapter';
7
7
  import { create as createMemFs } from 'mem-fs';
8
- import { create as createMemFsEditor } from 'mem-fs-editor';
9
8
  import { FlyRepository } from 'fly-import';
10
9
  import createdLogger from 'debug';
11
10
  // @ts-expect-error grouped-queue don't have types
@@ -88,17 +87,16 @@ export function removePropertiesWithNullishValues(object) {
88
87
  // eslint-disable-next-line unicorn/prefer-event-target
89
88
  export default class EnvironmentBase extends EventEmitter {
90
89
  cwd;
90
+ logCwd;
91
91
  adapter;
92
92
  sharedFs;
93
93
  conflicterOptions;
94
- logCwd;
95
94
  options;
96
95
  aliases = [];
97
96
  store;
98
97
  command;
99
98
  runLoop;
100
99
  composedStore;
101
- fs;
102
100
  lookups;
103
101
  sharedOptions;
104
102
  repository;
@@ -122,7 +120,6 @@ export default class EnvironmentBase extends EventEmitter {
122
120
  // Node won't complain about event listeners leaks.
123
121
  this.runLoop.setMaxListeners(0);
124
122
  this.sharedFs.setMaxListeners(0);
125
- this.fs = createMemFsEditor(sharedFs);
126
123
  this.lookups = defaultLookups;
127
124
  this.sharedOptions = sharedOptions;
128
125
  // Create a default sharedData.
@@ -613,7 +610,7 @@ export default class EnvironmentBase extends EventEmitter {
613
610
  // Conflicter can change files add listener before commit task.
614
611
  this.sharedFs.once('change', queueCommit);
615
612
  debug('Running conflicts');
616
- const { customCommitTask = () => commitSharedFsTask(this) } = this.composedStore;
613
+ const { customCommitTask = async () => commitSharedFsTask(this) } = this.composedStore;
617
614
  if (typeof customCommitTask === 'function') {
618
615
  await customCommitTask();
619
616
  }
@@ -164,8 +164,7 @@ class FullEnvironment extends EnvironmentBase {
164
164
  async requireGenerator(namespace) {
165
165
  if (namespace === undefined) {
166
166
  try {
167
- // @ts-expect-error yeoman-generator type maybe missing
168
- // eslint-disable-next-line @typescript-eslint/naming-convention
167
+ // eslint-disable-next-line @typescript-eslint/naming-convention, import/no-extraneous-dependencies
169
168
  const { default: Generator } = await import('yeoman-generator');
170
169
  return Generator;
171
170
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yeoman-environment",
3
- "version": "4.0.0-beta.5",
3
+ "version": "4.0.0-rc.0",
4
4
  "description": "Handles the lifecyle and bootstrapping of generators in a specific environment",
5
5
  "keywords": [
6
6
  "development",
@@ -57,52 +57,63 @@
57
57
  "doc_path": "./yeoman-environment-doc"
58
58
  },
59
59
  "dependencies": {
60
- "@yeoman/adapter": "^1.1.0",
61
- "@yeoman/conflicter": "^1.0.10",
60
+ "@yeoman/adapter": "^1.4.0",
61
+ "@yeoman/conflicter": "^2.0.0-alpha.2",
62
62
  "@yeoman/namespace": "^1.0.0",
63
63
  "@yeoman/transform": "^1.2.0",
64
64
  "arrify": "^3.0.0",
65
- "chalk": "^5.2.0",
66
- "commander": "^11.0.0",
65
+ "chalk": "^5.3.0",
66
+ "commander": "^11.1.0",
67
67
  "debug": "^4.3.4",
68
68
  "execa": "^8.0.1",
69
- "fly-import": "^0.3.0",
70
- "globby": "^13.1.4",
69
+ "fly-import": "^0.3.1",
70
+ "globby": "^13.2.2",
71
71
  "grouped-queue": "^2.0.0",
72
72
  "locate-path": "^7.2.0",
73
73
  "lodash-es": "^4.17.21",
74
- "mem-fs": "^3.0.0",
75
- "mem-fs-editor": "^10.0.1",
76
- "semver": "^7.5.0",
77
- "slash": "^5.0.1",
74
+ "mem-fs-editor": "^11.0.0",
75
+ "semver": "^7.5.4",
76
+ "slash": "^5.1.0",
78
77
  "untildify": "^5.0.0",
79
78
  "which-package-manager": "^0.0.1"
80
79
  },
81
80
  "devDependencies": {
82
- "@types/debug": "^4.1.8",
83
- "@types/lodash-es": "^4.17.7",
84
- "@types/semver": "^7.5.0",
85
- "c8": "^8.0.0",
81
+ "@types/debug": "^4.1.9",
82
+ "@types/lodash-es": "^4.17.9",
83
+ "@types/semver": "^7.5.3",
84
+ "c8": "^8.0.1",
86
85
  "cpy-cli": "^5.0.0",
87
86
  "esmocha": "^1.0.1",
88
87
  "fs-extra": "^11.1.1",
89
- "inquirer": "^9.2.6",
88
+ "inquirer": "^9.2.11",
90
89
  "jsdoc": "^4.0.2",
91
90
  "prettier": "3.0.3",
92
- "prettier-plugin-packagejson": "^2.4.3",
93
- "rimraf": "^5.0.0",
94
- "sinon": "^15.0.4",
91
+ "prettier-plugin-packagejson": "^2.4.6",
92
+ "rimraf": "^5.0.5",
93
+ "sinon": "^16.1.0",
95
94
  "sinon-test": "^3.1.5",
96
- "strip-ansi": "^7.0.1",
95
+ "strip-ansi": "^7.1.0",
97
96
  "typescript": "5.2.2",
98
97
  "xo": "0.56.0",
99
98
  "yeoman-assert": "^3.1.1",
100
- "yeoman-generator": "^5.9.0",
101
- "yeoman-test": "^8.0.0-rc.1"
99
+ "yeoman-environment": "file:.",
100
+ "yeoman-generator-2": "npm:yeoman-generator@^2.0.5",
101
+ "yeoman-generator-4": "npm:yeoman-generator@^4.13.0",
102
+ "yeoman-generator-5": "npm:yeoman-generator@^5.9.0",
103
+ "yeoman-generator-6": "npm:yeoman-generator@^6.0.1",
104
+ "yeoman-test": "^8.1.0"
105
+ },
106
+ "overrides": {
107
+ "yeoman-generator-5": {
108
+ "yeoman-environment": "file:."
109
+ },
110
+ "yeoman-generator-6": {
111
+ "yeoman-environment": "file:."
112
+ }
102
113
  },
103
114
  "peerDependencies": {
104
- "@yeoman/types": "^1.0.1",
105
- "mem-fs": "^3.0.0"
115
+ "@yeoman/types": "^1.1.1",
116
+ "mem-fs": "^4.0.0"
106
117
  },
107
118
  "engines": {
108
119
  "node": "^18.17.0 || >=20.5.0"