@nx/devkit 23.1.0 → 23.1.2

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 (36) hide show
  1. package/dist/internal.d.ts +3 -2
  2. package/dist/internal.js +139 -4
  3. package/dist/ngcli-adapter.d.ts +1 -1
  4. package/dist/ngcli-adapter.js +2 -1
  5. package/dist/src/generators/format-files.d.ts +3 -1
  6. package/dist/src/generators/format-files.js +14 -2
  7. package/dist/src/generators/plugin-migrations/executor-to-plugin-migrator.d.ts +1 -2
  8. package/dist/src/generators/plugin-migrations/executor-to-plugin-migrator.js +1 -2
  9. package/dist/src/generators/project-name-and-root-utils.js +13 -0
  10. package/dist/src/generators/visit-not-ignored-files.d.ts +7 -0
  11. package/dist/src/generators/visit-not-ignored-files.js +35 -10
  12. package/dist/src/utils/add-plugin.js +11 -4
  13. package/dist/src/utils/installed-version.d.ts +16 -3
  14. package/dist/src/utils/installed-version.js +29 -4
  15. package/dist/src/utils/invoke-nx-generator.js +7 -3
  16. package/dist/src/utils/nx-ignore-internals.d.ts +23 -0
  17. package/dist/src/utils/nx-ignore-internals.js +36 -0
  18. package/dist/src/utils/package-json.js +7 -2
  19. package/dist/src/utils/semver.js +2 -1
  20. package/dist/src/utils/version-floor.d.ts +16 -4
  21. package/dist/src/utils/version-floor.js +71 -5
  22. package/package.json +27 -5
  23. package/dist/src/utils/catalog/index.d.ts +0 -9
  24. package/dist/src/utils/catalog/index.js +0 -38
  25. package/dist/src/utils/catalog/manager-factory.d.ts +0 -5
  26. package/dist/src/utils/catalog/manager-factory.js +0 -20
  27. package/dist/src/utils/catalog/manager-utils.d.ts +0 -9
  28. package/dist/src/utils/catalog/manager-utils.js +0 -215
  29. package/dist/src/utils/catalog/manager.d.ts +0 -40
  30. package/dist/src/utils/catalog/manager.js +0 -13
  31. package/dist/src/utils/catalog/pnpm-manager.d.ts +0 -21
  32. package/dist/src/utils/catalog/pnpm-manager.js +0 -151
  33. package/dist/src/utils/catalog/types.d.ts +0 -11
  34. package/dist/src/utils/catalog/types.js +0 -2
  35. package/dist/src/utils/catalog/yarn-manager.d.ts +0 -21
  36. package/dist/src/utils/catalog/yarn-manager.js +0 -151
@@ -1,4 +1,4 @@
1
- export { signalToCode, createProjectRootMappingsFromProjectConfigurations, PluginCache, safeWriteFileCache, emitPluginWorkerLog, resolveImplementation, resolveSchema, ImplementationResolutionError, SchemaResolutionError, resolvePrompt, PromptResolutionError, } from 'nx/src/devkit-internals';
1
+ export { signalToCode, createProjectRootMappingsFromProjectConfigurations, PluginCache, safeWriteFileCache, emitPluginWorkerLog, resolveImplementation, resolveSchema, ImplementationResolutionError, SchemaResolutionError, resolvePrompt, PromptResolutionError, acknowledgeBuildScripts, getCatalogManager, } from 'nx/src/devkit-internals';
2
2
  export { determineArtifactNameAndDirectoryOptions, getRelativeCwd, type FileExtensionType, } from './src/generators/artifact-name-and-directory-utils';
3
3
  export { getE2EWebServerInfo, type E2EWebServerDetails, } from './src/generators/e2e-web-server-info-utils';
4
4
  export { forEachExecutorOptions } from './src/generators/executor-options-utils';
@@ -13,7 +13,6 @@ export { getDeclaredPackageVersion, getInstalledPackageVersion, } from './src/ut
13
13
  export { assertSupportedInstalledPackageVersion, assertSupportedPackageVersion, } from './src/utils/version-floor';
14
14
  export { createAsyncIterable, combineAsyncIterables, mapAsyncIterable, } from './src/utils/async-iterable';
15
15
  export { calculateHashForCreateNodes, calculateHashesForCreateNodes, } from './src/utils/calculate-hash-for-create-nodes';
16
- export { getCatalogManager } from './src/utils/catalog';
17
16
  export { loadConfigFile, clearRequireCache } from './src/utils/config-utils';
18
17
  export { findPluginForConfigFile } from './src/utils/find-plugin-for-config-file';
19
18
  export { getNamedInputs } from './src/utils/get-named-inputs';
@@ -21,3 +20,5 @@ export { logShowProjectCommand } from './src/utils/log-show-project-command';
21
20
  export { eachValueFrom } from './src/utils/rxjs-for-await';
22
21
  export { checkAndCleanWithSemver } from './src/utils/semver';
23
22
  export { camelize, capitalize, classify, dasherize, } from './src/utils/string-utils';
23
+ export { runCommandsExecutor, type TaskResult, type Agent, type BatchExecutorTaskResult, BatchFunctionRunner, type BatchResults, type CLIErrorMessageConfig, type CLINoteMessageConfig, type CLISuccessMessageConfig, type CLIWarnMessageConfig, Cache, type CachedResult, type Change, type ChangedFile, CompositeLifeCycle, DeletedFileChange, type DependsOnEntryLocation, type FileChange, type FileDataDependency, type FileMapCache, type FinalConfigForProject, FsTree, type GeneratorInformation, type InputDefinition, type JsonInput, LARGE_BUFFER, type LifeCycle, LockFileChange, NX_PREFIX, type NormalizedTargetDependencyConfig, type NxCloudOnBoardingStatus, type NxReleaseVersionConfiguration, type PackageJson, type PackageJsonDependencySection, type PackageManagerCommands, type ProjectRootMappings, RemoteCacheV2, type RunCommandsOptions, SyncError, type SyncGeneratorResult, TEN_MEGABYTES, TargetProjectLocator, type TaskMetadata, type TaskStatus, type TaskWithCachedResult, type TasksRunner, type UnregisterCallback, WholeFileChange, buildProjectGraphAndSourceMapsWithoutDaemon, calculateFileChanges, calculateReverseDeps, codeFrameColumns, combineGlobPatterns, connectToNxCloud, createDirectory, createLockFile, createNxCloudOnboardingURL, createNxCloudOnboardingURLForWelcomeApp, createPackageJson, createProjectGraphAndSourceMapsAsync, createProjectRootMappings, createRunManyDynamicOutputRenderer, createTaskId, daemonClient, deduceDefaultBase, defaultFileRead, deriveGroupNameFromTarget, directoryExists, expandDependencyConfigSyntaxSugar, expandInitiatingTasksThroughNoop, expandWildcardTargetConfiguration, fileDataDepTarget, fileDataDepType, fileExists, filterUsingGlobPatterns, findAllProjectNodeDependencies, findInstalledPlugins, findMatchingConfigFiles, findMatchingProjects, findProjectForPath, findProjectsNpmDependencies, forceRegisterEsmLoader, getCliPath, getCustomHasher, getDependencyConfigs, getExecutorForTask, getExecutorInformation, getExecutorNameForTask, getFilesInDirectoryUsingContext, getGeneratorInformation, getGlobPatternsFromPackageManagerWorkspaces, getLastValueFromAsyncIterableIterator, getLatestCommitSha, getLockFileName, getNxCloudAppOnBoardingUrl, getNxCloudUrl, getNxRequirePaths, getOutputs, getPrintableCommandArgsForTask, getRelativeProjectJsonSchemaPath, getSerializedArgsForTask, getSourceDirOfDependentProjects, getTargetConfigurationForTask, getTargetInputs, getUnparsedOverrideArgs, getWorkspacePackagesFromGraph, globWithWorkspaceContext, handleProjectGraphError, hashFile, hashObject, hashWithWorkspaceContext, interpolate, isBuiltinModuleImport, isCI, isCacheableTask, isDeletedFileChange, isLockFileChange, isNpmProject, isNxCloudUsed, isProjectGraphExternalNode, isProjectGraphProjectNode, isRelativePath, isWholeFileChange, killProcessTreeGraceful, loadTsFile, mergeTargetConfigurations, normalizeDependencyConfigDefinition, normalizeDependencyConfigProjects, normalizeTargetDependencyWithStringProjects, nxVersion, orange, parseExecutor, preventRecursionInGraphConstruction, readCachedProjectConfiguration, readFileIfExisting, readFileMapCache, readModulePackageJson, readNxJsonFromDisk, readNxMigrateConfig, readPackageJson, readProjectAndTargetFromTargetString, registerTsConfigPaths, registerTsProject, removeTasksFromTaskGraph, requireWithTsconfigFallback, resetWorkspaceContext, runNxSync, safeExecFileSync, safeSpawn, setWorkspaceRoot, setupAiAgentsGenerator, setupWorkspaceContext, shouldStreamOutput, toNewFormat, toOldFormat, transformLegacyOutputs, unparse, validateOutputs, workspaceDataDirectory, workspaceRootInner, } from 'nx/src/devkit-internals';
24
+ export type { AfterAllProjectsVersioned } from 'nx/release';
package/dist/internal.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkAndCleanWithSemver = exports.eachValueFrom = exports.logShowProjectCommand = exports.getNamedInputs = exports.findPluginForConfigFile = exports.clearRequireCache = exports.loadConfigFile = exports.getCatalogManager = exports.calculateHashesForCreateNodes = exports.calculateHashForCreateNodes = exports.mapAsyncIterable = exports.combineAsyncIterables = exports.createAsyncIterable = exports.assertSupportedPackageVersion = exports.assertSupportedInstalledPackageVersion = exports.getInstalledPackageVersion = exports.getDeclaredPackageVersion = exports.addPlugin = exports.upsertTargetDefault = exports.updateTargetDefault = exports.readTargetDefaultsForTarget = exports.findTargetDefault = exports.addE2eCiTargetDefaults = exports.addBuildTargetDefaults = exports.promptWhenInteractive = exports.resolveImportPath = exports.ensureRootProjectName = exports.determineProjectNameAndRootOptions = exports.toProjectRelativePath = exports.deleteMatchingProperties = exports.processTargetOutputs = exports.NoTargetsToMigrateError = exports.migrateProjectExecutorsToPluginV1 = exports.migrateProjectExecutorsToPlugin = exports.AggregatedLog = exports.forEachExecutorOptions = exports.getE2EWebServerInfo = exports.getRelativeCwd = exports.determineArtifactNameAndDirectoryOptions = exports.PromptResolutionError = exports.resolvePrompt = exports.SchemaResolutionError = exports.ImplementationResolutionError = exports.resolveSchema = exports.resolveImplementation = exports.emitPluginWorkerLog = exports.safeWriteFileCache = exports.PluginCache = exports.createProjectRootMappingsFromProjectConfigurations = exports.signalToCode = void 0;
4
- exports.dasherize = exports.classify = exports.capitalize = exports.camelize = void 0;
3
+ exports.eachValueFrom = exports.logShowProjectCommand = exports.getNamedInputs = exports.findPluginForConfigFile = exports.clearRequireCache = exports.loadConfigFile = exports.calculateHashesForCreateNodes = exports.calculateHashForCreateNodes = exports.mapAsyncIterable = exports.combineAsyncIterables = exports.createAsyncIterable = exports.assertSupportedPackageVersion = exports.assertSupportedInstalledPackageVersion = exports.getInstalledPackageVersion = exports.getDeclaredPackageVersion = exports.addPlugin = exports.upsertTargetDefault = exports.updateTargetDefault = exports.readTargetDefaultsForTarget = exports.findTargetDefault = exports.addE2eCiTargetDefaults = exports.addBuildTargetDefaults = exports.promptWhenInteractive = exports.resolveImportPath = exports.ensureRootProjectName = exports.determineProjectNameAndRootOptions = exports.toProjectRelativePath = exports.deleteMatchingProperties = exports.processTargetOutputs = exports.NoTargetsToMigrateError = exports.migrateProjectExecutorsToPluginV1 = exports.migrateProjectExecutorsToPlugin = exports.AggregatedLog = exports.forEachExecutorOptions = exports.getE2EWebServerInfo = exports.getRelativeCwd = exports.determineArtifactNameAndDirectoryOptions = exports.getCatalogManager = exports.acknowledgeBuildScripts = exports.PromptResolutionError = exports.resolvePrompt = exports.SchemaResolutionError = exports.ImplementationResolutionError = exports.resolveSchema = exports.resolveImplementation = exports.emitPluginWorkerLog = exports.safeWriteFileCache = exports.PluginCache = exports.createProjectRootMappingsFromProjectConfigurations = exports.signalToCode = void 0;
4
+ exports.findMatchingProjects = exports.findMatchingConfigFiles = exports.findInstalledPlugins = exports.findAllProjectNodeDependencies = exports.filterUsingGlobPatterns = exports.fileExists = exports.fileDataDepType = exports.fileDataDepTarget = exports.expandWildcardTargetConfiguration = exports.expandInitiatingTasksThroughNoop = exports.expandDependencyConfigSyntaxSugar = exports.directoryExists = exports.deriveGroupNameFromTarget = exports.defaultFileRead = exports.deduceDefaultBase = exports.daemonClient = exports.createTaskId = exports.createRunManyDynamicOutputRenderer = exports.createProjectRootMappings = exports.createProjectGraphAndSourceMapsAsync = exports.createPackageJson = exports.createNxCloudOnboardingURLForWelcomeApp = exports.createNxCloudOnboardingURL = exports.createLockFile = exports.createDirectory = exports.connectToNxCloud = exports.combineGlobPatterns = exports.codeFrameColumns = exports.calculateReverseDeps = exports.calculateFileChanges = exports.buildProjectGraphAndSourceMapsWithoutDaemon = exports.WholeFileChange = exports.TargetProjectLocator = exports.TEN_MEGABYTES = exports.SyncError = exports.RemoteCacheV2 = exports.NX_PREFIX = exports.LockFileChange = exports.LARGE_BUFFER = exports.FsTree = exports.DeletedFileChange = exports.CompositeLifeCycle = exports.Cache = exports.BatchFunctionRunner = exports.runCommandsExecutor = exports.dasherize = exports.classify = exports.capitalize = exports.camelize = exports.checkAndCleanWithSemver = void 0;
5
+ exports.normalizeTargetDependencyWithStringProjects = exports.normalizeDependencyConfigProjects = exports.normalizeDependencyConfigDefinition = exports.mergeTargetConfigurations = exports.loadTsFile = exports.killProcessTreeGraceful = exports.isWholeFileChange = exports.isRelativePath = exports.isProjectGraphProjectNode = exports.isProjectGraphExternalNode = exports.isNxCloudUsed = exports.isNpmProject = exports.isLockFileChange = exports.isDeletedFileChange = exports.isCacheableTask = exports.isCI = exports.isBuiltinModuleImport = exports.interpolate = exports.hashWithWorkspaceContext = exports.hashObject = exports.hashFile = exports.handleProjectGraphError = exports.globWithWorkspaceContext = exports.getWorkspacePackagesFromGraph = exports.getUnparsedOverrideArgs = exports.getTargetInputs = exports.getTargetConfigurationForTask = exports.getSourceDirOfDependentProjects = exports.getSerializedArgsForTask = exports.getRelativeProjectJsonSchemaPath = exports.getPrintableCommandArgsForTask = exports.getOutputs = exports.getNxRequirePaths = exports.getNxCloudUrl = exports.getNxCloudAppOnBoardingUrl = exports.getLockFileName = exports.getLatestCommitSha = exports.getLastValueFromAsyncIterableIterator = exports.getGlobPatternsFromPackageManagerWorkspaces = exports.getGeneratorInformation = exports.getFilesInDirectoryUsingContext = exports.getExecutorNameForTask = exports.getExecutorInformation = exports.getExecutorForTask = exports.getDependencyConfigs = exports.getCustomHasher = exports.getCliPath = exports.forceRegisterEsmLoader = exports.findProjectsNpmDependencies = exports.findProjectForPath = void 0;
6
+ exports.workspaceRootInner = exports.workspaceDataDirectory = exports.validateOutputs = exports.unparse = exports.transformLegacyOutputs = exports.toOldFormat = exports.toNewFormat = exports.shouldStreamOutput = exports.setupWorkspaceContext = exports.setupAiAgentsGenerator = exports.setWorkspaceRoot = exports.safeSpawn = exports.safeExecFileSync = exports.runNxSync = exports.resetWorkspaceContext = exports.requireWithTsconfigFallback = exports.removeTasksFromTaskGraph = exports.registerTsProject = exports.registerTsConfigPaths = exports.readProjectAndTargetFromTargetString = exports.readPackageJson = exports.readNxMigrateConfig = exports.readNxJsonFromDisk = exports.readModulePackageJson = exports.readFileMapCache = exports.readFileIfExisting = exports.readCachedProjectConfiguration = exports.preventRecursionInGraphConstruction = exports.parseExecutor = exports.orange = exports.nxVersion = void 0;
5
7
  var devkit_internals_1 = require("nx/src/devkit-internals");
6
8
  Object.defineProperty(exports, "signalToCode", { enumerable: true, get: function () { return devkit_internals_1.signalToCode; } });
7
9
  Object.defineProperty(exports, "createProjectRootMappingsFromProjectConfigurations", { enumerable: true, get: function () { return devkit_internals_1.createProjectRootMappingsFromProjectConfigurations; } });
@@ -14,6 +16,13 @@ Object.defineProperty(exports, "ImplementationResolutionError", { enumerable: tr
14
16
  Object.defineProperty(exports, "SchemaResolutionError", { enumerable: true, get: function () { return devkit_internals_1.SchemaResolutionError; } });
15
17
  Object.defineProperty(exports, "resolvePrompt", { enumerable: true, get: function () { return devkit_internals_1.resolvePrompt; } });
16
18
  Object.defineProperty(exports, "PromptResolutionError", { enumerable: true, get: function () { return devkit_internals_1.PromptResolutionError; } });
19
+ Object.defineProperty(exports, "acknowledgeBuildScripts", { enumerable: true, get: function () { return devkit_internals_1.acknowledgeBuildScripts; } });
20
+ // getCatalogManager takes the barrel route here because this file *is*
21
+ // @nx/devkit/internal — first-party consumers only, released in lockstep. Its
22
+ // class-1 siblings in packages/devkit/src/utils/ (semver.ts, package-json.ts)
23
+ // ship to external plugins under the +/- 1 tolerance, so they must keep
24
+ // importing nx/src/utils/catalog directly. See packages/devkit/CLAUDE.md.
25
+ Object.defineProperty(exports, "getCatalogManager", { enumerable: true, get: function () { return devkit_internals_1.getCatalogManager; } });
17
26
  // Generators
18
27
  var artifact_name_and_directory_utils_1 = require("./src/generators/artifact-name-and-directory-utils");
19
28
  Object.defineProperty(exports, "determineArtifactNameAndDirectoryOptions", { enumerable: true, get: function () { return artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions; } });
@@ -61,8 +70,6 @@ Object.defineProperty(exports, "mapAsyncIterable", { enumerable: true, get: func
61
70
  var calculate_hash_for_create_nodes_1 = require("./src/utils/calculate-hash-for-create-nodes");
62
71
  Object.defineProperty(exports, "calculateHashForCreateNodes", { enumerable: true, get: function () { return calculate_hash_for_create_nodes_1.calculateHashForCreateNodes; } });
63
72
  Object.defineProperty(exports, "calculateHashesForCreateNodes", { enumerable: true, get: function () { return calculate_hash_for_create_nodes_1.calculateHashesForCreateNodes; } });
64
- var catalog_1 = require("./src/utils/catalog");
65
- Object.defineProperty(exports, "getCatalogManager", { enumerable: true, get: function () { return catalog_1.getCatalogManager; } });
66
73
  var config_utils_1 = require("./src/utils/config-utils");
67
74
  Object.defineProperty(exports, "loadConfigFile", { enumerable: true, get: function () { return config_utils_1.loadConfigFile; } });
68
75
  Object.defineProperty(exports, "clearRequireCache", { enumerable: true, get: function () { return config_utils_1.clearRequireCache; } });
@@ -81,3 +88,131 @@ Object.defineProperty(exports, "camelize", { enumerable: true, get: function ()
81
88
  Object.defineProperty(exports, "capitalize", { enumerable: true, get: function () { return string_utils_1.capitalize; } });
82
89
  Object.defineProperty(exports, "classify", { enumerable: true, get: function () { return string_utils_1.classify; } });
83
90
  Object.defineProperty(exports, "dasherize", { enumerable: true, get: function () { return string_utils_1.dasherize; } });
91
+ // Re-exported for first-party plugins in this repo.
92
+ var devkit_internals_2 = require("nx/src/devkit-internals");
93
+ Object.defineProperty(exports, "runCommandsExecutor", { enumerable: true, get: function () { return devkit_internals_2.runCommandsExecutor; } });
94
+ Object.defineProperty(exports, "BatchFunctionRunner", { enumerable: true, get: function () { return devkit_internals_2.BatchFunctionRunner; } });
95
+ Object.defineProperty(exports, "Cache", { enumerable: true, get: function () { return devkit_internals_2.Cache; } });
96
+ Object.defineProperty(exports, "CompositeLifeCycle", { enumerable: true, get: function () { return devkit_internals_2.CompositeLifeCycle; } });
97
+ Object.defineProperty(exports, "DeletedFileChange", { enumerable: true, get: function () { return devkit_internals_2.DeletedFileChange; } });
98
+ Object.defineProperty(exports, "FsTree", { enumerable: true, get: function () { return devkit_internals_2.FsTree; } });
99
+ Object.defineProperty(exports, "LARGE_BUFFER", { enumerable: true, get: function () { return devkit_internals_2.LARGE_BUFFER; } });
100
+ Object.defineProperty(exports, "LockFileChange", { enumerable: true, get: function () { return devkit_internals_2.LockFileChange; } });
101
+ Object.defineProperty(exports, "NX_PREFIX", { enumerable: true, get: function () { return devkit_internals_2.NX_PREFIX; } });
102
+ Object.defineProperty(exports, "RemoteCacheV2", { enumerable: true, get: function () { return devkit_internals_2.RemoteCacheV2; } });
103
+ Object.defineProperty(exports, "SyncError", { enumerable: true, get: function () { return devkit_internals_2.SyncError; } });
104
+ Object.defineProperty(exports, "TEN_MEGABYTES", { enumerable: true, get: function () { return devkit_internals_2.TEN_MEGABYTES; } });
105
+ Object.defineProperty(exports, "TargetProjectLocator", { enumerable: true, get: function () { return devkit_internals_2.TargetProjectLocator; } });
106
+ Object.defineProperty(exports, "WholeFileChange", { enumerable: true, get: function () { return devkit_internals_2.WholeFileChange; } });
107
+ Object.defineProperty(exports, "buildProjectGraphAndSourceMapsWithoutDaemon", { enumerable: true, get: function () { return devkit_internals_2.buildProjectGraphAndSourceMapsWithoutDaemon; } });
108
+ Object.defineProperty(exports, "calculateFileChanges", { enumerable: true, get: function () { return devkit_internals_2.calculateFileChanges; } });
109
+ Object.defineProperty(exports, "calculateReverseDeps", { enumerable: true, get: function () { return devkit_internals_2.calculateReverseDeps; } });
110
+ Object.defineProperty(exports, "codeFrameColumns", { enumerable: true, get: function () { return devkit_internals_2.codeFrameColumns; } });
111
+ Object.defineProperty(exports, "combineGlobPatterns", { enumerable: true, get: function () { return devkit_internals_2.combineGlobPatterns; } });
112
+ Object.defineProperty(exports, "connectToNxCloud", { enumerable: true, get: function () { return devkit_internals_2.connectToNxCloud; } });
113
+ Object.defineProperty(exports, "createDirectory", { enumerable: true, get: function () { return devkit_internals_2.createDirectory; } });
114
+ Object.defineProperty(exports, "createLockFile", { enumerable: true, get: function () { return devkit_internals_2.createLockFile; } });
115
+ Object.defineProperty(exports, "createNxCloudOnboardingURL", { enumerable: true, get: function () { return devkit_internals_2.createNxCloudOnboardingURL; } });
116
+ Object.defineProperty(exports, "createNxCloudOnboardingURLForWelcomeApp", { enumerable: true, get: function () { return devkit_internals_2.createNxCloudOnboardingURLForWelcomeApp; } });
117
+ Object.defineProperty(exports, "createPackageJson", { enumerable: true, get: function () { return devkit_internals_2.createPackageJson; } });
118
+ Object.defineProperty(exports, "createProjectGraphAndSourceMapsAsync", { enumerable: true, get: function () { return devkit_internals_2.createProjectGraphAndSourceMapsAsync; } });
119
+ Object.defineProperty(exports, "createProjectRootMappings", { enumerable: true, get: function () { return devkit_internals_2.createProjectRootMappings; } });
120
+ Object.defineProperty(exports, "createRunManyDynamicOutputRenderer", { enumerable: true, get: function () { return devkit_internals_2.createRunManyDynamicOutputRenderer; } });
121
+ Object.defineProperty(exports, "createTaskId", { enumerable: true, get: function () { return devkit_internals_2.createTaskId; } });
122
+ Object.defineProperty(exports, "daemonClient", { enumerable: true, get: function () { return devkit_internals_2.daemonClient; } });
123
+ Object.defineProperty(exports, "deduceDefaultBase", { enumerable: true, get: function () { return devkit_internals_2.deduceDefaultBase; } });
124
+ Object.defineProperty(exports, "defaultFileRead", { enumerable: true, get: function () { return devkit_internals_2.defaultFileRead; } });
125
+ Object.defineProperty(exports, "deriveGroupNameFromTarget", { enumerable: true, get: function () { return devkit_internals_2.deriveGroupNameFromTarget; } });
126
+ Object.defineProperty(exports, "directoryExists", { enumerable: true, get: function () { return devkit_internals_2.directoryExists; } });
127
+ Object.defineProperty(exports, "expandDependencyConfigSyntaxSugar", { enumerable: true, get: function () { return devkit_internals_2.expandDependencyConfigSyntaxSugar; } });
128
+ Object.defineProperty(exports, "expandInitiatingTasksThroughNoop", { enumerable: true, get: function () { return devkit_internals_2.expandInitiatingTasksThroughNoop; } });
129
+ Object.defineProperty(exports, "expandWildcardTargetConfiguration", { enumerable: true, get: function () { return devkit_internals_2.expandWildcardTargetConfiguration; } });
130
+ Object.defineProperty(exports, "fileDataDepTarget", { enumerable: true, get: function () { return devkit_internals_2.fileDataDepTarget; } });
131
+ Object.defineProperty(exports, "fileDataDepType", { enumerable: true, get: function () { return devkit_internals_2.fileDataDepType; } });
132
+ Object.defineProperty(exports, "fileExists", { enumerable: true, get: function () { return devkit_internals_2.fileExists; } });
133
+ Object.defineProperty(exports, "filterUsingGlobPatterns", { enumerable: true, get: function () { return devkit_internals_2.filterUsingGlobPatterns; } });
134
+ Object.defineProperty(exports, "findAllProjectNodeDependencies", { enumerable: true, get: function () { return devkit_internals_2.findAllProjectNodeDependencies; } });
135
+ Object.defineProperty(exports, "findInstalledPlugins", { enumerable: true, get: function () { return devkit_internals_2.findInstalledPlugins; } });
136
+ Object.defineProperty(exports, "findMatchingConfigFiles", { enumerable: true, get: function () { return devkit_internals_2.findMatchingConfigFiles; } });
137
+ Object.defineProperty(exports, "findMatchingProjects", { enumerable: true, get: function () { return devkit_internals_2.findMatchingProjects; } });
138
+ Object.defineProperty(exports, "findProjectForPath", { enumerable: true, get: function () { return devkit_internals_2.findProjectForPath; } });
139
+ Object.defineProperty(exports, "findProjectsNpmDependencies", { enumerable: true, get: function () { return devkit_internals_2.findProjectsNpmDependencies; } });
140
+ Object.defineProperty(exports, "forceRegisterEsmLoader", { enumerable: true, get: function () { return devkit_internals_2.forceRegisterEsmLoader; } });
141
+ Object.defineProperty(exports, "getCliPath", { enumerable: true, get: function () { return devkit_internals_2.getCliPath; } });
142
+ Object.defineProperty(exports, "getCustomHasher", { enumerable: true, get: function () { return devkit_internals_2.getCustomHasher; } });
143
+ Object.defineProperty(exports, "getDependencyConfigs", { enumerable: true, get: function () { return devkit_internals_2.getDependencyConfigs; } });
144
+ Object.defineProperty(exports, "getExecutorForTask", { enumerable: true, get: function () { return devkit_internals_2.getExecutorForTask; } });
145
+ Object.defineProperty(exports, "getExecutorInformation", { enumerable: true, get: function () { return devkit_internals_2.getExecutorInformation; } });
146
+ Object.defineProperty(exports, "getExecutorNameForTask", { enumerable: true, get: function () { return devkit_internals_2.getExecutorNameForTask; } });
147
+ Object.defineProperty(exports, "getFilesInDirectoryUsingContext", { enumerable: true, get: function () { return devkit_internals_2.getFilesInDirectoryUsingContext; } });
148
+ Object.defineProperty(exports, "getGeneratorInformation", { enumerable: true, get: function () { return devkit_internals_2.getGeneratorInformation; } });
149
+ Object.defineProperty(exports, "getGlobPatternsFromPackageManagerWorkspaces", { enumerable: true, get: function () { return devkit_internals_2.getGlobPatternsFromPackageManagerWorkspaces; } });
150
+ Object.defineProperty(exports, "getLastValueFromAsyncIterableIterator", { enumerable: true, get: function () { return devkit_internals_2.getLastValueFromAsyncIterableIterator; } });
151
+ Object.defineProperty(exports, "getLatestCommitSha", { enumerable: true, get: function () { return devkit_internals_2.getLatestCommitSha; } });
152
+ Object.defineProperty(exports, "getLockFileName", { enumerable: true, get: function () { return devkit_internals_2.getLockFileName; } });
153
+ Object.defineProperty(exports, "getNxCloudAppOnBoardingUrl", { enumerable: true, get: function () { return devkit_internals_2.getNxCloudAppOnBoardingUrl; } });
154
+ Object.defineProperty(exports, "getNxCloudUrl", { enumerable: true, get: function () { return devkit_internals_2.getNxCloudUrl; } });
155
+ Object.defineProperty(exports, "getNxRequirePaths", { enumerable: true, get: function () { return devkit_internals_2.getNxRequirePaths; } });
156
+ Object.defineProperty(exports, "getOutputs", { enumerable: true, get: function () { return devkit_internals_2.getOutputs; } });
157
+ Object.defineProperty(exports, "getPrintableCommandArgsForTask", { enumerable: true, get: function () { return devkit_internals_2.getPrintableCommandArgsForTask; } });
158
+ Object.defineProperty(exports, "getRelativeProjectJsonSchemaPath", { enumerable: true, get: function () { return devkit_internals_2.getRelativeProjectJsonSchemaPath; } });
159
+ Object.defineProperty(exports, "getSerializedArgsForTask", { enumerable: true, get: function () { return devkit_internals_2.getSerializedArgsForTask; } });
160
+ Object.defineProperty(exports, "getSourceDirOfDependentProjects", { enumerable: true, get: function () { return devkit_internals_2.getSourceDirOfDependentProjects; } });
161
+ Object.defineProperty(exports, "getTargetConfigurationForTask", { enumerable: true, get: function () { return devkit_internals_2.getTargetConfigurationForTask; } });
162
+ Object.defineProperty(exports, "getTargetInputs", { enumerable: true, get: function () { return devkit_internals_2.getTargetInputs; } });
163
+ Object.defineProperty(exports, "getUnparsedOverrideArgs", { enumerable: true, get: function () { return devkit_internals_2.getUnparsedOverrideArgs; } });
164
+ Object.defineProperty(exports, "getWorkspacePackagesFromGraph", { enumerable: true, get: function () { return devkit_internals_2.getWorkspacePackagesFromGraph; } });
165
+ Object.defineProperty(exports, "globWithWorkspaceContext", { enumerable: true, get: function () { return devkit_internals_2.globWithWorkspaceContext; } });
166
+ Object.defineProperty(exports, "handleProjectGraphError", { enumerable: true, get: function () { return devkit_internals_2.handleProjectGraphError; } });
167
+ Object.defineProperty(exports, "hashFile", { enumerable: true, get: function () { return devkit_internals_2.hashFile; } });
168
+ Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return devkit_internals_2.hashObject; } });
169
+ Object.defineProperty(exports, "hashWithWorkspaceContext", { enumerable: true, get: function () { return devkit_internals_2.hashWithWorkspaceContext; } });
170
+ Object.defineProperty(exports, "interpolate", { enumerable: true, get: function () { return devkit_internals_2.interpolate; } });
171
+ Object.defineProperty(exports, "isBuiltinModuleImport", { enumerable: true, get: function () { return devkit_internals_2.isBuiltinModuleImport; } });
172
+ Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return devkit_internals_2.isCI; } });
173
+ Object.defineProperty(exports, "isCacheableTask", { enumerable: true, get: function () { return devkit_internals_2.isCacheableTask; } });
174
+ Object.defineProperty(exports, "isDeletedFileChange", { enumerable: true, get: function () { return devkit_internals_2.isDeletedFileChange; } });
175
+ Object.defineProperty(exports, "isLockFileChange", { enumerable: true, get: function () { return devkit_internals_2.isLockFileChange; } });
176
+ Object.defineProperty(exports, "isNpmProject", { enumerable: true, get: function () { return devkit_internals_2.isNpmProject; } });
177
+ Object.defineProperty(exports, "isNxCloudUsed", { enumerable: true, get: function () { return devkit_internals_2.isNxCloudUsed; } });
178
+ Object.defineProperty(exports, "isProjectGraphExternalNode", { enumerable: true, get: function () { return devkit_internals_2.isProjectGraphExternalNode; } });
179
+ Object.defineProperty(exports, "isProjectGraphProjectNode", { enumerable: true, get: function () { return devkit_internals_2.isProjectGraphProjectNode; } });
180
+ Object.defineProperty(exports, "isRelativePath", { enumerable: true, get: function () { return devkit_internals_2.isRelativePath; } });
181
+ Object.defineProperty(exports, "isWholeFileChange", { enumerable: true, get: function () { return devkit_internals_2.isWholeFileChange; } });
182
+ Object.defineProperty(exports, "killProcessTreeGraceful", { enumerable: true, get: function () { return devkit_internals_2.killProcessTreeGraceful; } });
183
+ Object.defineProperty(exports, "loadTsFile", { enumerable: true, get: function () { return devkit_internals_2.loadTsFile; } });
184
+ Object.defineProperty(exports, "mergeTargetConfigurations", { enumerable: true, get: function () { return devkit_internals_2.mergeTargetConfigurations; } });
185
+ Object.defineProperty(exports, "normalizeDependencyConfigDefinition", { enumerable: true, get: function () { return devkit_internals_2.normalizeDependencyConfigDefinition; } });
186
+ Object.defineProperty(exports, "normalizeDependencyConfigProjects", { enumerable: true, get: function () { return devkit_internals_2.normalizeDependencyConfigProjects; } });
187
+ Object.defineProperty(exports, "normalizeTargetDependencyWithStringProjects", { enumerable: true, get: function () { return devkit_internals_2.normalizeTargetDependencyWithStringProjects; } });
188
+ Object.defineProperty(exports, "nxVersion", { enumerable: true, get: function () { return devkit_internals_2.nxVersion; } });
189
+ Object.defineProperty(exports, "orange", { enumerable: true, get: function () { return devkit_internals_2.orange; } });
190
+ Object.defineProperty(exports, "parseExecutor", { enumerable: true, get: function () { return devkit_internals_2.parseExecutor; } });
191
+ Object.defineProperty(exports, "preventRecursionInGraphConstruction", { enumerable: true, get: function () { return devkit_internals_2.preventRecursionInGraphConstruction; } });
192
+ Object.defineProperty(exports, "readCachedProjectConfiguration", { enumerable: true, get: function () { return devkit_internals_2.readCachedProjectConfiguration; } });
193
+ Object.defineProperty(exports, "readFileIfExisting", { enumerable: true, get: function () { return devkit_internals_2.readFileIfExisting; } });
194
+ Object.defineProperty(exports, "readFileMapCache", { enumerable: true, get: function () { return devkit_internals_2.readFileMapCache; } });
195
+ Object.defineProperty(exports, "readModulePackageJson", { enumerable: true, get: function () { return devkit_internals_2.readModulePackageJson; } });
196
+ Object.defineProperty(exports, "readNxJsonFromDisk", { enumerable: true, get: function () { return devkit_internals_2.readNxJsonFromDisk; } });
197
+ Object.defineProperty(exports, "readNxMigrateConfig", { enumerable: true, get: function () { return devkit_internals_2.readNxMigrateConfig; } });
198
+ Object.defineProperty(exports, "readPackageJson", { enumerable: true, get: function () { return devkit_internals_2.readPackageJson; } });
199
+ Object.defineProperty(exports, "readProjectAndTargetFromTargetString", { enumerable: true, get: function () { return devkit_internals_2.readProjectAndTargetFromTargetString; } });
200
+ Object.defineProperty(exports, "registerTsConfigPaths", { enumerable: true, get: function () { return devkit_internals_2.registerTsConfigPaths; } });
201
+ Object.defineProperty(exports, "registerTsProject", { enumerable: true, get: function () { return devkit_internals_2.registerTsProject; } });
202
+ Object.defineProperty(exports, "removeTasksFromTaskGraph", { enumerable: true, get: function () { return devkit_internals_2.removeTasksFromTaskGraph; } });
203
+ Object.defineProperty(exports, "requireWithTsconfigFallback", { enumerable: true, get: function () { return devkit_internals_2.requireWithTsconfigFallback; } });
204
+ Object.defineProperty(exports, "resetWorkspaceContext", { enumerable: true, get: function () { return devkit_internals_2.resetWorkspaceContext; } });
205
+ Object.defineProperty(exports, "runNxSync", { enumerable: true, get: function () { return devkit_internals_2.runNxSync; } });
206
+ Object.defineProperty(exports, "safeExecFileSync", { enumerable: true, get: function () { return devkit_internals_2.safeExecFileSync; } });
207
+ Object.defineProperty(exports, "safeSpawn", { enumerable: true, get: function () { return devkit_internals_2.safeSpawn; } });
208
+ Object.defineProperty(exports, "setWorkspaceRoot", { enumerable: true, get: function () { return devkit_internals_2.setWorkspaceRoot; } });
209
+ Object.defineProperty(exports, "setupAiAgentsGenerator", { enumerable: true, get: function () { return devkit_internals_2.setupAiAgentsGenerator; } });
210
+ Object.defineProperty(exports, "setupWorkspaceContext", { enumerable: true, get: function () { return devkit_internals_2.setupWorkspaceContext; } });
211
+ Object.defineProperty(exports, "shouldStreamOutput", { enumerable: true, get: function () { return devkit_internals_2.shouldStreamOutput; } });
212
+ Object.defineProperty(exports, "toNewFormat", { enumerable: true, get: function () { return devkit_internals_2.toNewFormat; } });
213
+ Object.defineProperty(exports, "toOldFormat", { enumerable: true, get: function () { return devkit_internals_2.toOldFormat; } });
214
+ Object.defineProperty(exports, "transformLegacyOutputs", { enumerable: true, get: function () { return devkit_internals_2.transformLegacyOutputs; } });
215
+ Object.defineProperty(exports, "unparse", { enumerable: true, get: function () { return devkit_internals_2.unparse; } });
216
+ Object.defineProperty(exports, "validateOutputs", { enumerable: true, get: function () { return devkit_internals_2.validateOutputs; } });
217
+ Object.defineProperty(exports, "workspaceDataDirectory", { enumerable: true, get: function () { return devkit_internals_2.workspaceDataDirectory; } });
218
+ Object.defineProperty(exports, "workspaceRootInner", { enumerable: true, get: function () { return devkit_internals_2.workspaceRootInner; } });
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * @category Ng CLI Adapter
3
3
  */
4
- export { wrapAngularDevkitSchematic, mockSchematicsForTesting, NxScopedHost, } from 'nx/src/adapter/ngcli-adapter';
4
+ export { wrapAngularDevkitSchematic, mockSchematicsForTesting, NxScopedHost, createBuilderContext, } from 'nx/src/adapter/ngcli-adapter';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NxScopedHost = exports.mockSchematicsForTesting = exports.wrapAngularDevkitSchematic = void 0;
3
+ exports.createBuilderContext = exports.NxScopedHost = exports.mockSchematicsForTesting = exports.wrapAngularDevkitSchematic = void 0;
4
4
  /**
5
5
  * @category Ng CLI Adapter
6
6
  */
@@ -9,3 +9,4 @@ var ngcli_adapter_1 = require("nx/src/adapter/ngcli-adapter");
9
9
  Object.defineProperty(exports, "wrapAngularDevkitSchematic", { enumerable: true, get: function () { return ngcli_adapter_1.wrapAngularDevkitSchematic; } });
10
10
  Object.defineProperty(exports, "mockSchematicsForTesting", { enumerable: true, get: function () { return ngcli_adapter_1.mockSchematicsForTesting; } });
11
11
  Object.defineProperty(exports, "NxScopedHost", { enumerable: true, get: function () { return ngcli_adapter_1.NxScopedHost; } });
12
+ Object.defineProperty(exports, "createBuilderContext", { enumerable: true, get: function () { return ngcli_adapter_1.createBuilderContext; } });
@@ -1,6 +1,8 @@
1
1
  import { Tree } from 'nx/src/devkit-exports';
2
2
  /**
3
- * Formats all the created or updated files using Prettier
3
+ * Formats the created or updated files using Prettier, skipping `node_modules`,
4
+ * `.git`, the nx and yarn caches, and anything the workspace's root
5
+ * `.gitignore` or `.prettierignore` covers
4
6
  * @param tree - the file system tree
5
7
  * @param options - options for the formatFiles function
6
8
  *
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const devkit_exports_1 = require("nx/src/devkit-exports");
6
6
  const devkit_internals_1 = require("nx/src/devkit-internals");
7
7
  const path = tslib_1.__importStar(require("path"));
8
+ const nx_ignore_internals_1 = require("../utils/nx-ignore-internals");
8
9
  // Prettier v3 (ESM) exposes its API as named exports; v2 (CJS) exposes it under
9
10
  // `.default` when loaded via `import()`. Return whichever carries the API, or
10
11
  // null if prettier isn't installed.
@@ -18,7 +19,9 @@ async function importPrettier() {
18
19
  }
19
20
  }
20
21
  /**
21
- * Formats all the created or updated files using Prettier
22
+ * Formats the created or updated files using Prettier, skipping `node_modules`,
23
+ * `.git`, the nx and yarn caches, and anything the workspace's root
24
+ * `.gitignore` or `.prettierignore` covers
22
25
  * @param tree - the file system tree
23
26
  * @param options - options for the formatFiles function
24
27
  *
@@ -56,7 +59,16 @@ async function formatFiles(tree, options = {}) {
56
59
  catch { }
57
60
  if (!prettier)
58
61
  return;
59
- const files = new Set(tree.listChanges().filter((file) => file.type !== 'DELETE'));
62
+ // `getFileInfo` below looks like it filters ignored files but only covers its
63
+ // own built-in `node_modules` skip: with no `ignorePath` it never reads the
64
+ // workspace's ignore files, so `ignored` is false for everything else
65
+ // (measured).
66
+ //
67
+ // The optional call is the older-nx path - see `NOTHING_IGNORED`.
68
+ const { isIgnoredFile } = (0, devkit_internals_1.createPrettierIgnoreChecker)?.(tree) ?? nx_ignore_internals_1.NOTHING_IGNORED;
69
+ const files = new Set(tree
70
+ .listChanges()
71
+ .filter((file) => file.type !== 'DELETE' && !isIgnoredFile(file.path)));
60
72
  const changedPrettierInTree = getChangedPrettierConfigInTree(tree);
61
73
  await Promise.all(Array.from(files).map(async (file) => {
62
74
  try {
@@ -1,6 +1,5 @@
1
1
  import type { ProjectConfiguration } from 'nx/src/config/workspace-json-project-json';
2
- import { type CreateNodes, type NxJsonConfiguration, type ProjectGraph, type TargetConfiguration, type Tree } from 'nx/src/devkit-exports';
3
- import { logger as devkitLogger } from 'nx/src/devkit-exports';
2
+ import { type CreateNodes, type NxJsonConfiguration, type ProjectGraph, type TargetConfiguration, type Tree, logger as devkitLogger } from 'nx/src/devkit-exports';
4
3
  export type InferredTargetConfiguration = TargetConfiguration & {
5
4
  name: string;
6
5
  };
@@ -14,7 +14,6 @@ const devkit_internals_1 = require("nx/src/devkit-internals");
14
14
  const executor_options_utils_1 = require("../executor-options-utils");
15
15
  const target_defaults_utils_1 = require("../target-defaults-utils");
16
16
  const plugin_migration_utils_1 = require("./plugin-migration-utils");
17
- const devkit_exports_2 = require("nx/src/devkit-exports");
18
17
  class ExecutorToPluginMigrator {
19
18
  constructor(tree, projectGraph, executor, pluginPath, pluginOptionsBuilder, postTargetTransformer, createNodes, createNodesV2, specificProjectToMigrate, filters, logger) {
20
19
  _ExecutorToPluginMigrator_instances.add(this);
@@ -45,7 +44,7 @@ class ExecutorToPluginMigrator {
45
44
  tslib_1.__classPrivateFieldSet(this, _ExecutorToPluginMigrator_specificProjectToMigrate, specificProjectToMigrate, "f");
46
45
  tslib_1.__classPrivateFieldSet(this, _ExecutorToPluginMigrator_skipProjectFilter, filters?.skipProjectFilter ?? ((...args) => false), "f");
47
46
  tslib_1.__classPrivateFieldSet(this, _ExecutorToPluginMigrator_skipTargetFilter, filters?.skipTargetFilter ?? ((...args) => false), "f");
48
- tslib_1.__classPrivateFieldSet(this, _ExecutorToPluginMigrator_logger, logger ?? devkit_exports_2.logger, "f");
47
+ tslib_1.__classPrivateFieldSet(this, _ExecutorToPluginMigrator_logger, logger ?? devkit_exports_1.logger, "f");
49
48
  }
50
49
  async run() {
51
50
  await tslib_1.__classPrivateFieldGet(this, _ExecutorToPluginMigrator_instances, "m", _ExecutorToPluginMigrator_init).call(this);
@@ -51,6 +51,7 @@ async function determineProjectNameAndRootOptions(tree, options) {
51
51
  if (projectRoot.startsWith('..')) {
52
52
  throw new Error(`The resolved project root "${projectRoot}" is outside of the workspace root "${devkit_exports_1.workspaceRoot}".`);
53
53
  }
54
+ validateUniqueName(tree, name, projectRoot, options);
54
55
  const importPath = options.importPath ?? resolveImportPath(tree, name, projectRoot);
55
56
  return {
56
57
  projectName: name,
@@ -109,6 +110,18 @@ function validateOptions(providedName, derivedName, directory) {
109
110
  throw new Error(`The derived name from the provided directory should match the pattern "${pattern}". The derived name "${derivedName}" from the provided value "${directory}" does not match.`);
110
111
  }
111
112
  }
113
+ function validateUniqueName(tree, name, projectRoot, options) {
114
+ const existingProject = (0, devkit_exports_1.getProjects)(tree).get(name);
115
+ // A project at the resolved root is handled elsewhere with a more
116
+ // accurate error, so only error when the name is taken by a project
117
+ // located somewhere else.
118
+ if (!existingProject || existingProject.root === projectRoot) {
119
+ return;
120
+ }
121
+ throw new Error(options.name
122
+ ? `The provided name "${name}" is already used by the project at "${existingProject.root}". Please provide a unique name for the new project.`
123
+ : `The name "${name}" was derived from the provided directory "${options.directory}", but it is already used by the project at "${existingProject.root}". Please provide a unique name for the new project with the "--name" option.`);
124
+ }
112
125
  function getImportPath(npmScope, name) {
113
126
  return npmScope ? `${npmScope === '@' ? '' : '@'}${npmScope}/${name}` : name;
114
127
  }
@@ -1,5 +1,12 @@
1
1
  import type { Tree } from 'nx/src/devkit-exports';
2
2
  /**
3
3
  * Utility to act on all files in a tree that are not ignored by git.
4
+ *
5
+ * Ignore files cascade, so a nested `.gitignore` covers the files under it and a
6
+ * nested negation overrides the root. They are read from the tree, not disk, so
7
+ * one a generator wrote in the same run counts.
8
+ *
9
+ * `node_modules`, `.git` and the nx and yarn caches are never visited, whatever
10
+ * the workspace's ignore files say.
4
11
  */
5
12
  export declare function visitNotIgnoredFiles(tree: Tree, dirPath: string, visitor: (path: string) => void): void;
@@ -3,25 +3,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.visitNotIgnoredFiles = visitNotIgnoredFiles;
4
4
  const devkit_internals_1 = require("nx/src/devkit-internals");
5
5
  const path_1 = require("path");
6
+ const nx_ignore_internals_1 = require("../utils/nx-ignore-internals");
6
7
  /**
7
8
  * Utility to act on all files in a tree that are not ignored by git.
9
+ *
10
+ * Ignore files cascade, so a nested `.gitignore` covers the files under it and a
11
+ * nested negation overrides the root. They are read from the tree, not disk, so
12
+ * one a generator wrote in the same run counts.
13
+ *
14
+ * `node_modules`, `.git` and the nx and yarn caches are never visited, whatever
15
+ * the workspace's ignore files say.
8
16
  */
9
17
  function visitNotIgnoredFiles(tree, dirPath = tree.root, visitor) {
10
- const ig = (0, devkit_internals_1.getIgnoreObjectForTree)(tree);
11
- dirPath = normalizePathRelativeToRoot(dirPath, tree.root);
12
- if (dirPath !== '' && ig?.ignores(dirPath)) {
18
+ (0, nx_ignore_internals_1.assertNxSupportsIgnoreCheckers)();
19
+ // Built once for the whole traversal.
20
+ const isIgnored = (0, devkit_internals_1.createGitIgnoreChecker)(tree);
21
+ const start = normalizePathRelativeToRoot(dirPath, tree.root);
22
+ // The caller's own directory is the only one nothing has checked - every
23
+ // deeper one is checked before it is descended into.
24
+ if (start !== '' && isIgnored.isIgnoredDirectory(start)) {
13
25
  return;
14
26
  }
27
+ visitDirectory(tree, start, visitor, isIgnored);
28
+ }
29
+ /**
30
+ * Callers must have cleared `dirPath` already - both call sites do.
31
+ *
32
+ * Not descending into an ignored directory is what makes the answers match git,
33
+ * not just what makes them fast: git refuses to re-include a file inside an
34
+ * excluded directory, and `isIgnoredFile` alone does not implement that rule
35
+ * (see `isIgnoredByChain`). Flattening this into a per-file filter would start
36
+ * visiting files git ignores.
37
+ */
38
+ function visitDirectory(tree, dirPath, visitor, isIgnored) {
15
39
  for (const child of tree.children(dirPath)) {
16
- const fullPath = (0, path_1.join)(dirPath, child);
17
- if (ig?.ignores(fullPath)) {
18
- continue;
19
- }
40
+ // Joined as POSIX rather than with `path.join`: tree paths are POSIX, and
41
+ // on Windows a backslash-separated path silently matches nothing.
42
+ const fullPath = dirPath ? `${dirPath}/${child}` : child;
20
43
  if (tree.isFile(fullPath)) {
21
- visitor(fullPath);
44
+ if (!isIgnored.isIgnoredFile(fullPath)) {
45
+ visitor(fullPath);
46
+ }
22
47
  }
23
- else {
24
- visitNotIgnoredFiles(tree, fullPath, visitor);
48
+ else if (!isIgnored.isIgnoredDirectory(fullPath)) {
49
+ visitDirectory(tree, fullPath, visitor, isIgnored);
25
50
  }
26
51
  }
27
52
  }
@@ -61,8 +61,10 @@ async function _addPluginInternal(tree, graph, pluginName, pluginFactory, option
61
61
  // Errors are okay for this because we're only running 1 plugin
62
62
  if ((0, devkit_internals_1.isProjectConfigurationsError)(e)) {
63
63
  projConfigs = e.partialProjectConfigurationsResult;
64
- // ignore errors from projects with no name
65
- if (!e.errors.every(devkit_internals_1.isProjectsWithNoNameError)) {
64
+ // Ignore errors about project names: running a single plugin in
65
+ // isolation cannot resolve the real project names, and they are
66
+ // irrelevant for determining the plugin options.
67
+ if (!e.errors.every(isProjectNameError)) {
66
68
  throw e;
67
69
  }
68
70
  }
@@ -102,8 +104,10 @@ async function _addPluginInternal(tree, graph, pluginName, pluginFactory, option
102
104
  // Errors are okay for this because we're only running 1 plugin
103
105
  if ((0, devkit_internals_1.isProjectConfigurationsError)(e)) {
104
106
  projConfigs = e.partialProjectConfigurationsResult;
105
- // ignore errors from projects with no name
106
- if (!e.errors.every(devkit_internals_1.isProjectsWithNoNameError)) {
107
+ // Ignore errors about project names: running a single plugin in
108
+ // isolation cannot resolve the real project names, and they are
109
+ // irrelevant for determining the plugin options.
110
+ if (!e.errors.every(isProjectNameError)) {
107
111
  throw e;
108
112
  }
109
113
  }
@@ -125,6 +129,9 @@ async function _addPluginInternal(tree, graph, pluginName, pluginFactory, option
125
129
  updatePackageScripts(tree, projConfigs);
126
130
  }
127
131
  }
132
+ function isProjectNameError(e) {
133
+ return (0, devkit_internals_1.isProjectsWithNoNameError)(e) || (0, devkit_internals_1.isMultipleProjectsWithSameNameError)(e);
134
+ }
128
135
  function updatePackageScripts(tree, projectConfigurations) {
129
136
  for (const projectConfig of Object.values(projectConfigurations.projects)) {
130
137
  const projectRoot = projectConfig.root;
@@ -1,15 +1,21 @@
1
- import type { Tree } from 'nx/src/devkit-exports';
1
+ import { type Tree } from 'nx/src/devkit-exports';
2
2
  /**
3
3
  * Returns the concrete version of a package as resolved by Node module
4
4
  * resolution from the workspace. Reads the installed package's own
5
5
  * `package.json` — not the workspace's declared range.
6
6
  *
7
7
  * Use this from executor / runtime contexts where node_modules is present.
8
- * Generator-time code should use `getDeclaredPackageVersion` instead.
8
+ * Generator-time code should read from the tree first (the declared range or
9
+ * `getInstalledPackageVersionFromTree`) and may fall back to this with
10
+ * `requirePaths` restricted to the workspace root.
11
+ *
12
+ * Pass `requirePaths` to resolve from specific directories only (e.g. the
13
+ * workspace root, excluding the `.nx/installation` fallback); otherwise the
14
+ * default nx require paths are used.
9
15
  *
10
16
  * Returns `null` when the package is not resolvable.
11
17
  */
12
- export declare function getInstalledPackageVersion(packageName: string): string | null;
18
+ export declare function getInstalledPackageVersion(packageName: string, requirePaths?: string[]): string | null;
13
19
  /**
14
20
  * Returns the declared version of a package as read from the workspace's
15
21
  * `package.json`, normalized to a plain semver string (range markers
@@ -23,6 +29,13 @@ export declare function getInstalledPackageVersion(packageName: string): string
23
29
  * `getInstalledPackageVersion` instead.
24
30
  */
25
31
  export declare function getDeclaredPackageVersion(tree: Tree, packageName: string, latestKnownVersion?: string): string | null;
32
+ /**
33
+ * Reads the installed version of a package from the tree's `node_modules`,
34
+ * so it reflects in-flight tree changes and stays controllable in tests.
35
+ * Returns `null` when the package is not present in the tree's
36
+ * `node_modules`.
37
+ */
38
+ export declare function getInstalledPackageVersionFromTree(tree: Tree, packageName: string): string | null;
26
39
  export declare const NON_SEMVER_DIST_TAGS: readonly ['latest', 'next'];
27
40
  export type NonSemverDistTag = (typeof NON_SEMVER_DIST_TAGS)[number];
28
41
  export declare function isNonSemverDistTag(version: string): version is NonSemverDistTag;
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NON_SEMVER_DIST_TAGS = void 0;
4
4
  exports.getInstalledPackageVersion = getInstalledPackageVersion;
5
5
  exports.getDeclaredPackageVersion = getDeclaredPackageVersion;
6
+ exports.getInstalledPackageVersionFromTree = getInstalledPackageVersionFromTree;
6
7
  exports.isNonSemverDistTag = isNonSemverDistTag;
7
8
  exports.normalizeSemver = normalizeSemver;
8
9
  const devkit_internals_1 = require("nx/src/devkit-internals");
10
+ const devkit_exports_1 = require("nx/src/devkit-exports");
9
11
  const semver_1 = require("semver");
10
12
  const package_json_1 = require("./package-json");
11
13
  /**
@@ -14,14 +16,22 @@ const package_json_1 = require("./package-json");
14
16
  * `package.json` — not the workspace's declared range.
15
17
  *
16
18
  * Use this from executor / runtime contexts where node_modules is present.
17
- * Generator-time code should use `getDeclaredPackageVersion` instead.
19
+ * Generator-time code should read from the tree first (the declared range or
20
+ * `getInstalledPackageVersionFromTree`) and may fall back to this with
21
+ * `requirePaths` restricted to the workspace root.
22
+ *
23
+ * Pass `requirePaths` to resolve from specific directories only (e.g. the
24
+ * workspace root, excluding the `.nx/installation` fallback); otherwise the
25
+ * default nx require paths are used.
18
26
  *
19
27
  * Returns `null` when the package is not resolvable.
20
28
  */
21
- function getInstalledPackageVersion(packageName) {
29
+ function getInstalledPackageVersion(packageName, requirePaths) {
22
30
  try {
23
- const { packageJson } = (0, devkit_internals_1.readModulePackageJson)(packageName);
24
- return packageJson.version ?? null;
31
+ const { packageJson } = requirePaths
32
+ ? (0, devkit_internals_1.readModulePackageJson)(packageName, requirePaths)
33
+ : (0, devkit_internals_1.readModulePackageJson)(packageName);
34
+ return typeof packageJson.version === 'string' ? packageJson.version : null;
25
35
  }
26
36
  catch {
27
37
  return null;
@@ -48,6 +58,21 @@ function getDeclaredPackageVersion(tree, packageName, latestKnownVersion) {
48
58
  }
49
59
  return latestKnownVersion ? normalizeSemver(latestKnownVersion) : null;
50
60
  }
61
+ /**
62
+ * Reads the installed version of a package from the tree's `node_modules`,
63
+ * so it reflects in-flight tree changes and stays controllable in tests.
64
+ * Returns `null` when the package is not present in the tree's
65
+ * `node_modules`.
66
+ */
67
+ function getInstalledPackageVersionFromTree(tree, packageName) {
68
+ try {
69
+ const { version } = (0, devkit_exports_1.readJson)(tree, `node_modules/${packageName}/package.json`);
70
+ return typeof version === 'string' ? version : null;
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ }
51
76
  exports.NON_SEMVER_DIST_TAGS = ['latest', 'next'];
52
77
  function isNonSemverDistTag(version) {
53
78
  return exports.NON_SEMVER_DIST_TAGS.includes(version);
@@ -141,9 +141,13 @@ class DevkitTreeFromAngularDevkitTree {
141
141
  return (0, path_1.relative)(this.root, (0, path_1.join)(this.root, path));
142
142
  }
143
143
  read(filePath, encoding) {
144
- return encoding
145
- ? this.tree.read(filePath).toString(encoding)
146
- : this.tree.read(filePath);
144
+ // The schematics tree already returns null for a missing file, so honouring
145
+ // the `Tree` contract is a matter of not dereferencing it.
146
+ const content = this.tree.read(filePath);
147
+ if (content === null) {
148
+ return null;
149
+ }
150
+ return encoding ? content.toString(encoding) : content;
147
151
  }
148
152
  rename(from, to) {
149
153
  this.tree.rename(from, to);
@@ -0,0 +1,23 @@
1
+ import type { TreeIgnoreChecker } from 'nx/src/devkit-internals';
2
+ /**
3
+ * `@nx/devkit`'s `nx` peer spans a major either side, so an older nx that
4
+ * predates the ignore checkers can legally be installed alongside it, and a
5
+ * missing CommonJS named export arrives as `undefined` rather than as a load
6
+ * error. The two callers want opposite things from that, so they get different
7
+ * helpers - see `NOTHING_IGNORED` for the other half.
8
+ *
9
+ * A tree walk cannot degrade: without a checker nothing would be ignored, and
10
+ * the walker would descend into `node_modules` and hand a migration every file
11
+ * in it to rewrite. That is worse than the older nx's own behaviour, which at
12
+ * least read the root `.gitignore`, so this fails instead - once, by name.
13
+ */
14
+ export declare function assertNxSupportsIgnoreCheckers(): void;
15
+ /**
16
+ * The degrade the other way, for formatting.
17
+ *
18
+ * Filtering nothing is what devkit did before the checkers existed - with no
19
+ * `ignorePath`, prettier's own `getFileInfo` never read the workspace's ignore
20
+ * files either (measured) - so an older nx gets the formatting behaviour it has
21
+ * always had rather than a generator that refuses to run.
22
+ */
23
+ export declare const NOTHING_IGNORED: TreeIgnoreChecker;