yeoman-environment 4.0.0-alpha.5 → 4.0.0-alpha.6

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 (73) hide show
  1. package/bin/bin.cjs +4 -0
  2. package/dist/cli/index.d.ts +1 -0
  3. package/dist/cli/index.js +18 -15
  4. package/dist/cli/utils.d.ts +8 -0
  5. package/dist/cli/utils.js +6 -7
  6. package/dist/commands.d.ts +23 -0
  7. package/dist/commands.js +45 -0
  8. package/dist/commit.d.ts +17 -0
  9. package/dist/commit.js +22 -0
  10. package/dist/composed-store.d.ts +26 -0
  11. package/dist/composed-store.js +68 -0
  12. package/dist/constants.d.ts +3 -0
  13. package/dist/constants.js +17 -0
  14. package/dist/environment-base.d.ts +259 -0
  15. package/dist/environment-base.js +638 -0
  16. package/dist/environment-full.d.ts +115 -0
  17. package/dist/environment-full.js +321 -0
  18. package/dist/generator-lookup.d.ts +56 -0
  19. package/dist/generator-lookup.js +97 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.js +9 -5
  22. package/dist/module-lookup.d.ts +59 -0
  23. package/dist/module-lookup.js +227 -0
  24. package/dist/package-manager.d.ts +18 -0
  25. package/dist/package-manager.js +52 -69
  26. package/dist/store.d.ts +66 -0
  27. package/dist/store.js +76 -47
  28. package/dist/util/command.d.ts +34 -0
  29. package/dist/util/command.js +32 -17
  30. package/dist/util/namespace.d.ts +26 -0
  31. package/dist/util/namespace.js +56 -190
  32. package/dist/util/resolve.d.ts +6 -0
  33. package/dist/util/resolve.js +40 -0
  34. package/dist/util/util.d.ts +7 -0
  35. package/dist/util/util.js +24 -23
  36. package/package.json +20 -33
  37. package/readme.md +2 -3
  38. package/dist/adapter.js +0 -97
  39. package/dist/adapter.js.map +0 -1
  40. package/dist/cli/index.js.map +0 -1
  41. package/dist/cli/utils.js.map +0 -1
  42. package/dist/command.js +0 -74
  43. package/dist/command.js.map +0 -1
  44. package/dist/composability.js +0 -78
  45. package/dist/composability.js.map +0 -1
  46. package/dist/environment.js +0 -1221
  47. package/dist/environment.js.map +0 -1
  48. package/dist/generator-features.js +0 -69
  49. package/dist/generator-features.js.map +0 -1
  50. package/dist/index.js.map +0 -1
  51. package/dist/namespace-composability.js +0 -340
  52. package/dist/namespace-composability.js.map +0 -1
  53. package/dist/package-manager.js.map +0 -1
  54. package/dist/resolver.js +0 -421
  55. package/dist/resolver.js.map +0 -1
  56. package/dist/spawn-command.js +0 -30
  57. package/dist/spawn-command.js.map +0 -1
  58. package/dist/store.js.map +0 -1
  59. package/dist/util/binary-diff.js +0 -36
  60. package/dist/util/binary-diff.js.map +0 -1
  61. package/dist/util/command.js.map +0 -1
  62. package/dist/util/conflicter.js +0 -346
  63. package/dist/util/conflicter.js.map +0 -1
  64. package/dist/util/esm.js +0 -22
  65. package/dist/util/esm.js.map +0 -1
  66. package/dist/util/log.js +0 -165
  67. package/dist/util/log.js.map +0 -1
  68. package/dist/util/namespace.js.map +0 -1
  69. package/dist/util/repository.js +0 -223
  70. package/dist/util/repository.js.map +0 -1
  71. package/dist/util/transform.js +0 -149
  72. package/dist/util/transform.js.map +0 -1
  73. package/dist/util/util.js.map +0 -1
@@ -1,223 +0,0 @@
1
- /** @module env/repository */
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import { createRequire } from 'node:module';
5
- import semver from 'semver';
6
- import createdLogger from 'debug';
7
- import Arborist from '@npmcli/arborist';
8
- import logger from './log.js';
9
- import { requireOrImport } from './esm.js';
10
- const debug = createdLogger('yeoman:environment:repository');
11
- const require = createRequire(import.meta.url);
12
- const REPOSITORY_FOLDER = '.yo-repository';
13
- /**
14
- * @private
15
- */
16
- class YeomanRepository {
17
- constructor({ repositoryPath = REPOSITORY_FOLDER, arboristRegistry } = {}) {
18
- this.log = logger();
19
- this.tracker = logger.tracker;
20
- this.repositoryPath = repositoryPath;
21
- this.arboristRegistry = arboristRegistry;
22
- }
23
- /**
24
- * @private
25
- * @property
26
- * Repository absolute path (npm --prefix).
27
- */
28
- get repositoryPath() {
29
- return this._repositoryPath;
30
- }
31
- set repositoryPath(repositoryPath) {
32
- this._repositoryPath = path.resolve(repositoryPath);
33
- this._nodeModulesPath = path.join(this._repositoryPath, 'node_modules');
34
- }
35
- /**
36
- * @private
37
- * @property nodeModulesPath
38
- * Path to the repository's node_modules.
39
- */
40
- get nodeModulesPath() {
41
- return this._nodeModulesPath;
42
- }
43
- /**
44
- * @private
45
- * @method
46
- * Create the repositoryPath if it doesn't exists.
47
- */
48
- createRepositoryFolder() {
49
- if (!fs.existsSync(this.repositoryPath)) {
50
- fs.mkdirSync(this.repositoryPath);
51
- }
52
- }
53
- /**
54
- * @private
55
- * @method
56
- * Resolve the package name module path inside the [repository path]{@link repository.repositoryPath}
57
- * @param {String} packageName - Package name. If packageName is a absolute path then modulePath is joined to it.
58
- * @param {String} [modulePath] - Path to a module inside the package path.
59
- * @returns {String} Absolute module path.
60
- */
61
- resolvePackagePath(packageName = '', modulePath = '') {
62
- if (path.isAbsolute(packageName)) {
63
- return path.join(packageName, modulePath);
64
- }
65
- return path.join(this.nodeModulesPath, packageName, modulePath);
66
- }
67
- /**
68
- * @private
69
- * @method
70
- * Remove the package from node's cache, necessary for a reinstallation.
71
- * Removes only package.json by default, it's used to version verification.
72
- * Removes only cache of the repository's packages.
73
- * @param {String} packageName - Package name.
74
- * @param {Boolean} [force=false] - If true removes every cache the package.
75
- * @throw Error if force === false and any file other the package.json is loaded.
76
- */
77
- cleanupPackageCache(packageName, force = false) {
78
- if (!packageName) {
79
- throw new Error('You must provide a packageName');
80
- }
81
- debug('Cleaning cache of %s', packageName);
82
- const packagePath = this.resolvePackagePath(packageName);
83
- const toCleanup = Object.keys(require.cache).filter(cache => cache.startsWith(packagePath));
84
- if (!force && toCleanup.some(cache => !cache.endsWith('package.json'))) {
85
- throw new Error(`Package ${packageName} already loaded`);
86
- }
87
- for (const cache of toCleanup) {
88
- delete require.cache[cache];
89
- }
90
- }
91
- /**
92
- * @private
93
- * @param {Object} options - options to be passed to arborist reify eg: {add: { dependencies: [ pkgSpec ] }, rm: [ pkgName ]}
94
- */
95
- async reifyRepository(options) {
96
- this.arb =
97
- this.arb ||
98
- new Arborist({
99
- path: this.repositoryPath,
100
- globalStyle: true,
101
- log: this.tracker,
102
- registry: this.arboristRegistry,
103
- });
104
- return this.arb.reify(options);
105
- }
106
- /**
107
- * @private
108
- * @method
109
- * Verify if the package is installed and matches the version range.
110
- * @param {String} packageName - Package name.
111
- * @param {String} versionRange - Version range of the package.
112
- * @returns {Boolean} True if the package is installed and matches the version.
113
- * @throws Error.
114
- */
115
- verifyInstalledVersion(packageName, versionRange) {
116
- const packagePath = this.resolvePackagePath(packageName);
117
- const installedVersion = this.getPackageVersion(packagePath);
118
- if (!versionRange || !installedVersion) {
119
- return installedVersion;
120
- }
121
- if (semver.validRange(versionRange) && !semver.satisfies(installedVersion, versionRange)) {
122
- return false;
123
- }
124
- return installedVersion;
125
- }
126
- /**
127
- * @private
128
- * @method
129
- * Install a package into the repository.
130
- * @param {String} packageName - Package name.
131
- * @param {String} versionRange - range Version of the package.
132
- * @returns {String} Package path.
133
- * @throws Error.
134
- */
135
- async installPackage(packageName, versionRange) {
136
- const pkgs = {};
137
- if (packageName === 'yeoman-environment' &&
138
- versionRange &&
139
- (!semver.validRange(versionRange) || semver.lt(semver.minVersion(versionRange), '2.9.0'))) {
140
- // Workaround buggy dependencies.
141
- pkgs['rxjs-compat'] = '^6.0.0';
142
- }
143
- pkgs[packageName] = versionRange;
144
- if (!(await this.installPackages(pkgs))) {
145
- throw new Error(`Error installing package ${packageName}, version ${versionRange}.`);
146
- }
147
- debug(`Package ${packageName} sucessfully installed`);
148
- return this.resolvePackagePath(packageName);
149
- }
150
- /**
151
- * @private
152
- * @method
153
- * Install packages.
154
- * @param {Object} packages - Packages to be installed.
155
- * @returns {Boolean}
156
- * @example
157
- * repository.installPackages({ 'yeoman-environment': '2.3.0' });
158
- */
159
- async installPackages(packages) {
160
- this.createRepositoryFolder();
161
- debug('Installing packages %o', packages);
162
- const packagesArgs = Object.entries(packages)
163
- .filter(([packageName, _]) => {
164
- this.cleanupPackageCache(packageName);
165
- return true;
166
- })
167
- .map(([packageName, version]) => (version ? (semver.validRange(version) ? `${packageName}@${version}` : version) : packageName));
168
- try {
169
- await this.reifyRepository({ add: [...packagesArgs] });
170
- }
171
- catch (error) {
172
- for (const packageName of Object.keys(packages)) {
173
- this.log.error(`${packageName} cannot be installed. ${error}`);
174
- }
175
- return false;
176
- }
177
- for (const packageName of Object.keys(packages)) {
178
- this.log.ok(`${packageName} installed.`);
179
- }
180
- return true;
181
- }
182
- /**
183
- * @private
184
- * @method
185
- * Get the installed package version.
186
- * @param {String} packageName - Package name.
187
- * @returns {String|undefined} Package version or undefined.
188
- */
189
- getPackageVersion(packageName) {
190
- try {
191
- const packageJson = this.resolvePackagePath(packageName, 'package.json');
192
- return require(packageJson).version;
193
- }
194
- catch {
195
- return undefined;
196
- }
197
- }
198
- /**
199
- * @private
200
- * @method
201
- * Require a module from the repository.
202
- * @param {String} packageName - Package name.
203
- * @param {String} versionRange - Version range of the package.
204
- * @param {String} modulePath - Package name.
205
- * @returns {Object} Module.
206
- * @throws Error.
207
- */
208
- requireModule(packageName, versionRange, modulePath = '') {
209
- const installedVersion = this.verifyInstalledVersion(packageName, versionRange);
210
- if (installedVersion) {
211
- debug(`Using ${packageName} installed version ${installedVersion}`);
212
- }
213
- else {
214
- // Installs the package if no version is installed or the version is provided and don't match the installed version.
215
- throw new Error(`Found ${packageName} version ${installedVersion} but requires version ${versionRange}`);
216
- }
217
- const absolutePath = this.resolvePackagePath(packageName, modulePath);
218
- debug('Loading module at %s', absolutePath);
219
- return requireOrImport(absolutePath);
220
- }
221
- }
222
- export default YeomanRepository;
223
- //# sourceMappingURL=repository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/util/repository.js"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,aAAa,MAAM,OAAO,CAAC;AAClC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,KAAK,GAAG,aAAa,CAAC,+BAA+B,CAAC,CAAC;AAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,gBAAgB;IACpB,YAAY,EAAE,cAAc,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE;QACvE,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,cAAc;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACnC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,WAAW,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK;QAC5C,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QAED,KAAK,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC;SAC1D;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;YAC7B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC7B;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,OAAO;QAC3B,IAAI,CAAC,GAAG;YACN,IAAI,CAAC,GAAG;gBACR,IAAI,QAAQ,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,cAAc;oBACzB,WAAW,EAAE,IAAI;oBACjB,GAAG,EAAE,IAAI,CAAC,OAAO;oBACjB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;iBAChC,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,sBAAsB,CAAC,WAAW,EAAE,YAAY;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE;YACtC,OAAO,gBAAgB,CAAC;SACzB;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE;YACxF,OAAO,KAAK,CAAC;SACd;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY;QAC5C,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IACE,WAAW,KAAK,oBAAoB;YACpC,YAAY;YACZ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,EACzF;YACA,iCAAiC;YACjC,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;SAChC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,aAAa,YAAY,GAAG,CAAC,CAAC;SACtF;QAED,KAAK,CAAC,WAAW,WAAW,wBAAwB,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CAAC,QAAQ;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,KAAK,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACnI,IAAI;YACF,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;SACxD;QAAC,OAAO,KAAK,EAAE;YACd,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,yBAAyB,KAAK,EAAE,CAAC,CAAC;aAChE;YAED,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,WAAW;QAC3B,IAAI;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACzE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;SACrC;QAAC,MAAM;YACN,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,GAAG,EAAE;QACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChF,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,SAAS,WAAW,sBAAsB,gBAAgB,EAAE,CAAC,CAAC;SACrE;aAAM;YACL,oHAAoH;YACpH,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,YAAY,gBAAgB,yBAAyB,YAAY,EAAE,CAAC,CAAC;SAC1G;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACtE,KAAK,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAC5C,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,149 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { findUpSync } from 'find-up';
4
- import minimatch from 'minimatch';
5
- import { transform, passthrough, filter } from 'p-transform';
6
- // eslint-disable-next-line n/file-extension-in-import
7
- import { clearFileState } from 'mem-fs-editor/state';
8
- const { Minimatch } = minimatch;
9
- export function parseYoAttributesFile(yoAttributeFileName) {
10
- let overridesContent;
11
- try {
12
- overridesContent = fs.readFileSync(yoAttributeFileName, 'utf8');
13
- }
14
- catch (error) {
15
- const wrappedError = new Error('Error loading yo attributes file {yoAttributeFileName}', { cause: error });
16
- wrappedError.yoAttributeFileName = yoAttributeFileName;
17
- throw wrappedError;
18
- }
19
- const absoluteDir = path.dirname(yoAttributeFileName);
20
- return Object.fromEntries(overridesContent
21
- .split(/\r?\n/)
22
- .map(override => override.trim())
23
- .map(override => override.split('#')[0].trim())
24
- .filter(Boolean)
25
- .map(override => override.split(/[\s+=]/))
26
- .map(([pattern, status = 'skip']) => {
27
- pattern = pattern.startsWith('!') ? `!${path.join(absoluteDir, pattern.slice(1))}` : path.join(absoluteDir, pattern);
28
- return [pattern, status];
29
- }));
30
- }
31
- /**
32
- * Transform api should be avoided by generators without a executable.
33
- * May break between major yo versions.
34
- */
35
- export function createConflicterCheckTransform(conflicter, conflicterStatus) {
36
- return passthrough(file => conflicter.checkForCollision(file, conflicterStatus), 'environment:conflicter-check');
37
- }
38
- /**
39
- * @private
40
- */
41
- export function getConflicterStatusForFile(conflicter, filePath, yoAttributeFileName = '.yo-resolve') {
42
- const fileDir = path.dirname(filePath);
43
- conflicter.yoResolveByFile = conflicter.yoResolveByFile || {};
44
- const yoResolveFiles = [];
45
- let foundYoAttributesFile = findUpSync([yoAttributeFileName], {
46
- cwd: fileDir,
47
- });
48
- while (foundYoAttributesFile) {
49
- yoResolveFiles.push(foundYoAttributesFile);
50
- foundYoAttributesFile = findUpSync([yoAttributeFileName], {
51
- cwd: path.join(path.dirname(foundYoAttributesFile), '..'),
52
- });
53
- }
54
- let fileStatus;
55
- if (yoResolveFiles) {
56
- for (const yoResolveFile of yoResolveFiles) {
57
- if (conflicter.yoResolveByFile[yoResolveFile] === undefined) {
58
- conflicter.yoResolveByFile[yoResolveFile] = parseYoAttributesFile(yoResolveFile);
59
- }
60
- }
61
- yoResolveFiles
62
- .map(yoResolveFile => conflicter.yoResolveByFile[yoResolveFile])
63
- .map(attributes => attributes)
64
- .find(yoResolve => Object.entries(yoResolve).some(([pattern, status]) => {
65
- if (minimatch(filePath, pattern)) {
66
- fileStatus = status;
67
- return true;
68
- }
69
- return false;
70
- }));
71
- }
72
- return fileStatus;
73
- }
74
- /**
75
- * Transform api should be avoided by generators without a executable.
76
- * May break between major yo versions.
77
- *
78
- * Create a yo-resolve transform stream.
79
- * Suports pre-defined conflicter actions action based on file glob.
80
- * @param {Conflicter} conflicter - Conflicter instance
81
- * @param {string} yoResolveFileName - .yo-resolve filename
82
- * @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
83
- */
84
- export function createYoResolveTransform(conflicter, yoResolveFileName) {
85
- return passthrough(file => {
86
- file.conflicter = file.conflicter || getConflicterStatusForFile(conflicter, file.path, yoResolveFileName);
87
- }, 'environment:yo-resolve');
88
- }
89
- /**
90
- * Transform api should be avoided by generators without a executable.
91
- * May break between major yo versions.
92
- *
93
- * Create a force yeoman configs transform stream.
94
- * @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
95
- */
96
- export function createYoRcTransform() {
97
- // Config files should not be processed by the conflicter. Force override.
98
- return patternSpy(file => {
99
- file.conflicter = 'force';
100
- }, '**/{.yo-rc.json,.yo-resolve,.yo-rc-global.json}', 'environment:yo-rc');
101
- }
102
- /**
103
- * Transform api should be avoided by generators without a executable.
104
- * May break between major yo versions.
105
- *
106
- * Create a transform to apply conflicter status.
107
- * @param {Log} logger - Log reference. See log.js
108
- * @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
109
- */
110
- export function createConflicterStatusTransform() {
111
- return transform(file => {
112
- const action = file.conflicter;
113
- delete file.conflicter;
114
- delete file.binary;
115
- delete file.conflicterChanges;
116
- delete file.conflicterLog;
117
- if (!action && file.state) {
118
- return file;
119
- }
120
- if (action === 'skip') {
121
- clearFileState(file);
122
- return undefined;
123
- }
124
- return file;
125
- }, 'environment:conflicter-status');
126
- }
127
- /**
128
- * Conditional filter on pattern.
129
- *
130
- * @param {String} pattern - Minimatch pattern.
131
- * @param {Object} options - Minimatch options.
132
- */
133
- export function patternFilter(pattern, options) {
134
- const minimatch = new Minimatch(pattern, options);
135
- return filter(file => minimatch.match(file.path));
136
- }
137
- /**
138
- * Conditional spy on pattern.
139
- *
140
- * @param {Function} spy.
141
- * @param {String} pattern - Minimatch pattern.
142
- * @param {Object} options - Minimatch options.
143
- */
144
- export function patternSpy(spy, pattern, options) {
145
- const minimatch = new Minimatch(pattern, options);
146
- // eslint-disable-next-line unicorn/prefer-regexp-test
147
- return passthrough(file => (minimatch.match(file.path) ? spy(file) : undefined));
148
- }
149
- //# sourceMappingURL=transform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/util/transform.js"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util/util.js"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE;IAChC,2EAA2E;IAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IACzC,IAAI;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC;SACtB;KACF;IAAC,MAAM,GAAE;IAEV,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC"}