@nx/devkit 23.0.0-beta.17 → 23.0.0-beta.19

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.
@@ -1,4 +1,4 @@
1
- export { signalToCode, createProjectRootMappingsFromProjectConfigurations, PluginCache, safeWriteFileCache, emitPluginWorkerLog, } from 'nx/src/devkit-internals';
1
+ export { signalToCode, createProjectRootMappingsFromProjectConfigurations, PluginCache, safeWriteFileCache, emitPluginWorkerLog, resolveImplementation, resolveSchema, ImplementationResolutionError, SchemaResolutionError, resolvePrompt, PromptResolutionError, } 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';
package/dist/internal.js CHANGED
@@ -1,12 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dasherize = exports.classify = exports.capitalize = exports.camelize = 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.getInstalledPackageVersion = exports.getDeclaredPackageVersion = exports.addPlugin = exports.normalizeTargetDefaults = exports.downgradeTargetDefaults = exports.upsertTargetDefault = 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.emitPluginWorkerLog = exports.safeWriteFileCache = exports.PluginCache = exports.createProjectRootMappingsFromProjectConfigurations = exports.signalToCode = void 0;
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.getInstalledPackageVersion = exports.getDeclaredPackageVersion = exports.addPlugin = exports.normalizeTargetDefaults = exports.downgradeTargetDefaults = exports.upsertTargetDefault = 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;
4
5
  var devkit_internals_1 = require("nx/src/devkit-internals");
5
6
  Object.defineProperty(exports, "signalToCode", { enumerable: true, get: function () { return devkit_internals_1.signalToCode; } });
6
7
  Object.defineProperty(exports, "createProjectRootMappingsFromProjectConfigurations", { enumerable: true, get: function () { return devkit_internals_1.createProjectRootMappingsFromProjectConfigurations; } });
7
8
  Object.defineProperty(exports, "PluginCache", { enumerable: true, get: function () { return devkit_internals_1.PluginCache; } });
8
9
  Object.defineProperty(exports, "safeWriteFileCache", { enumerable: true, get: function () { return devkit_internals_1.safeWriteFileCache; } });
9
10
  Object.defineProperty(exports, "emitPluginWorkerLog", { enumerable: true, get: function () { return devkit_internals_1.emitPluginWorkerLog; } });
11
+ Object.defineProperty(exports, "resolveImplementation", { enumerable: true, get: function () { return devkit_internals_1.resolveImplementation; } });
12
+ Object.defineProperty(exports, "resolveSchema", { enumerable: true, get: function () { return devkit_internals_1.resolveSchema; } });
13
+ Object.defineProperty(exports, "ImplementationResolutionError", { enumerable: true, get: function () { return devkit_internals_1.ImplementationResolutionError; } });
14
+ Object.defineProperty(exports, "SchemaResolutionError", { enumerable: true, get: function () { return devkit_internals_1.SchemaResolutionError; } });
15
+ Object.defineProperty(exports, "resolvePrompt", { enumerable: true, get: function () { return devkit_internals_1.resolvePrompt; } });
16
+ Object.defineProperty(exports, "PromptResolutionError", { enumerable: true, get: function () { return devkit_internals_1.PromptResolutionError; } });
10
17
  // Generators
11
18
  var artifact_name_and_directory_utils_1 = require("./src/generators/artifact-name-and-directory-utils");
12
19
  Object.defineProperty(exports, "determineArtifactNameAndDirectoryOptions", { enumerable: true, get: function () { return artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions; } });
@@ -60,6 +60,8 @@ exports.DEVKIT_INTERNAL_SYMBOLS = new Set([
60
60
  'capitalize',
61
61
  'classify',
62
62
  'dasherize',
63
+ 'emitPluginWorkerLog',
64
+ 'throwForUnsupportedVersion',
63
65
  ]);
64
66
  // Methods on `jest` and `vi` that take a module specifier as their first
65
67
  // argument. Calls like `jest.mock('@nx/devkit/src/...')` are rewritten so the
@@ -0,0 +1,43 @@
1
+ #### Update `@nx/devkit` deep imports
2
+
3
+ `@nx/devkit` now ships a strict `exports` map, so deep imports like `@nx/devkit/src/utils/...` and `@nx/devkit/src/generators/...` are no longer reachable through Node module resolution.
4
+
5
+ This migration scans every `.ts`, `.tsx`, `.cts`, and `.mts` file in your workspace and rewrites those deep imports to one of the supported entry points:
6
+
7
+ - Symbols that are part of the stable `@nx/devkit` public API are routed to `@nx/devkit`.
8
+ - Symbols that were previously only reachable through deep imports are routed to `@nx/devkit/internal`.
9
+
10
+ After rewriting, the migration **collapses duplicate imports** so a file never ends up with two `import ... from '@nx/devkit'` (or `@nx/devkit/internal`) lines — including merging into any matching import you already had.
11
+
12
+ #### Sample Code Changes
13
+
14
+ ##### Before
15
+
16
+ ```ts
17
+ import { Tree } from '@nx/devkit';
18
+ import { dasherize, names } from '@nx/devkit/src/utils/string-utils';
19
+ import { addPlugin } from '@nx/devkit/src/utils/add-plugin';
20
+ ```
21
+
22
+ ##### After
23
+
24
+ ```ts
25
+ import { Tree, names } from '@nx/devkit';
26
+ import { dasherize, addPlugin } from '@nx/devkit/internal';
27
+ ```
28
+
29
+ `names` was already in the public API, so it joins the existing `@nx/devkit` import. `dasherize` and `addPlugin` move to `@nx/devkit/internal`, and the two `/internal` imports are collapsed into one.
30
+
31
+ #### Fallback for non-named imports
32
+
33
+ For deep-import shapes that can't be split by symbol — default imports, namespace imports, side-effect imports, `require(...)` calls, dynamic `import(...)`, and `jest.mock(...)` / `vi.mock(...)`-style mock-helper calls — the migration rewrites the specifier to `@nx/devkit/internal` as a best guess, since most symbols that previously lived under `@nx/devkit/src/...` ended up there.
34
+
35
+ ```ts
36
+ // Before
37
+ const { dasherize } = require('@nx/devkit/src/utils/string-utils');
38
+
39
+ // After
40
+ const { dasherize } = require('@nx/devkit/internal');
41
+ ```
42
+
43
+ If the symbol you're after is part of the stable public API instead, the rewritten import will fail to resolve against `@nx/devkit/internal` — switch it to `@nx/devkit` by hand. The migration also leaves `typeof import('@nx/devkit/src/...')` type queries and any deep-import strings inside template literals or comments untouched, so you'll need to update those by hand.
@@ -1,3 +1,8 @@
1
1
  import { CreateNodesContextV2 } from 'nx/src/devkit-exports';
2
+ /**
3
+ * @deprecated Use {@link calculateHashesForCreateNodes} instead, which batches
4
+ * workspace-context hashing across multiple project roots in a single call.
5
+ * This will be removed in Nx 24.
6
+ */
2
7
  export declare function calculateHashForCreateNodes(projectRoot: string, options: object, context: CreateNodesContextV2, additionalGlobs?: string[]): Promise<string>;
3
8
  export declare function calculateHashesForCreateNodes(projectRoots: string[], options: object, context: CreateNodesContextV2, additionalGlobs?: string[][]): Promise<string[]>;
@@ -5,6 +5,11 @@ exports.calculateHashesForCreateNodes = calculateHashesForCreateNodes;
5
5
  const path_1 = require("path");
6
6
  const devkit_exports_1 = require("nx/src/devkit-exports");
7
7
  const devkit_internals_1 = require("nx/src/devkit-internals");
8
+ /**
9
+ * @deprecated Use {@link calculateHashesForCreateNodes} instead, which batches
10
+ * workspace-context hashing across multiple project roots in a single call.
11
+ * This will be removed in Nx 24.
12
+ */
8
13
  async function calculateHashForCreateNodes(projectRoot, options, context, additionalGlobs = []) {
9
14
  return (0, devkit_exports_1.hashArray)([
10
15
  await (0, devkit_internals_1.hashWithWorkspaceContext)(context.workspaceRoot, [
@@ -15,14 +20,16 @@ async function calculateHashForCreateNodes(projectRoot, options, context, additi
15
20
  ]);
16
21
  }
17
22
  async function calculateHashesForCreateNodes(projectRoots, options, context, additionalGlobs = []) {
23
+ if (projectRoots.length === 0) {
24
+ return [];
25
+ }
18
26
  if (additionalGlobs.length &&
19
27
  additionalGlobs.length !== projectRoots.length) {
20
- throw new Error('If additionalGlobs is provided, it must be the same length as projectRoots');
28
+ throw new Error(`calculateHashesForCreateNodes: projectRoots.length (${projectRoots.length}) !== additionalGlobs.length (${additionalGlobs.length})`);
21
29
  }
22
- return (0, devkit_internals_1.hashMultiGlobWithWorkspaceContext)(context.workspaceRoot, projectRoots.map((projectRoot, idx) => [
30
+ const hashes = await (0, devkit_internals_1.hashMultiGlobWithWorkspaceContext)(context.workspaceRoot, projectRoots.map((projectRoot, idx) => [
23
31
  (0, path_1.join)(projectRoot, '**/*'),
24
32
  ...(additionalGlobs.length ? additionalGlobs[idx] : []),
25
- ])).then((hashes) => {
26
- return hashes.map((hash) => (0, devkit_exports_1.hashArray)([hash, (0, devkit_internals_1.hashObject)(options)]));
27
- });
33
+ ]));
34
+ return hashes.map((hash) => (0, devkit_exports_1.hashArray)([hash, (0, devkit_internals_1.hashObject)(options)]));
28
35
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/devkit",
3
- "version": "23.0.0-beta.17",
3
+ "version": "23.0.0-beta.19",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "files": [
@@ -60,7 +60,7 @@
60
60
  },
61
61
  "devDependencies": {
62
62
  "jest": "30.3.0",
63
- "nx": "23.0.0-beta.17"
63
+ "nx": "23.0.0-beta.19"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "nx": ">= 22 <= 24 || ^23.0.0-0"