@nx/devkit 23.0.0-pr.35465.2bc2643 → 23.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{index.d.ts → dist/index.d.ts} +0 -1
- package/dist/internal.d.ts +24 -0
- package/dist/internal.js +85 -0
- package/{ngcli-adapter.d.ts → dist/ngcli-adapter.d.ts} +0 -1
- package/{public-api.d.ts → dist/public-api.d.ts} +0 -1
- package/{src → dist/src}/executors/parse-target-string.d.ts +0 -1
- package/{src → dist/src}/executors/read-target-options.d.ts +0 -1
- package/{src → dist/src}/generators/artifact-name-and-directory-utils.d.ts +0 -1
- package/{src → dist/src}/generators/e2e-web-server-info-utils.d.ts +0 -1
- package/{src → dist/src}/generators/e2e-web-server-info-utils.js +8 -12
- package/{src → dist/src}/generators/executor-options-utils.d.ts +0 -1
- package/{src → dist/src}/generators/format-files.d.ts +0 -1
- package/{src → dist/src}/generators/format-files.js +1 -1
- package/{src → dist/src}/generators/generate-files.d.ts +0 -1
- package/{src → dist/src}/generators/plugin-migrations/aggregate-log-util.d.ts +0 -1
- package/{src → dist/src}/generators/plugin-migrations/executor-to-plugin-migrator.d.ts +4 -4
- package/{src → dist/src}/generators/plugin-migrations/executor-to-plugin-migrator.js +19 -1
- package/{src → dist/src}/generators/plugin-migrations/plugin-migration-utils.d.ts +0 -1
- package/{src → dist/src}/generators/project-name-and-root-utils.d.ts +0 -1
- package/{src → dist/src}/generators/prompt.d.ts +0 -1
- package/{src → dist/src}/generators/run-tasks-in-serial.d.ts +0 -1
- package/dist/src/generators/target-defaults-utils.d.ts +31 -0
- package/dist/src/generators/target-defaults-utils.js +224 -0
- package/{src → dist/src}/generators/to-js.d.ts +0 -1
- package/{src → dist/src}/generators/to-js.js +9 -4
- package/{src → dist/src}/generators/typescript/insert-import.d.ts +0 -1
- package/{src → dist/src}/generators/typescript/insert-statement.d.ts +0 -1
- package/{src → dist/src}/generators/update-ts-configs-to-js.d.ts +0 -1
- package/{src → dist/src}/generators/visit-not-ignored-files.d.ts +0 -1
- package/dist/src/migrations/update-23-0-0/rename-create-nodes-v2-types.d.ts +10 -0
- package/dist/src/migrations/update-23-0-0/rename-create-nodes-v2-types.js +199 -0
- package/dist/src/migrations/update-23-0-0/rename-create-nodes-v2-types.md +29 -0
- package/dist/src/migrations/update-23-0-0/update-deep-imports.d.ts +4 -0
- package/dist/src/migrations/update-23-0-0/update-deep-imports.js +323 -0
- package/dist/src/migrations/update-23-0-0/update-deep-imports.md +43 -0
- package/{src → dist/src}/tasks/install-packages-task.d.ts +0 -1
- package/{src → dist/src}/utils/add-plugin.d.ts +3 -4
- package/{src → dist/src}/utils/add-plugin.js +1 -1
- package/{src → dist/src}/utils/async-iterable/combine-async-iterables.d.ts +0 -1
- package/{src → dist/src}/utils/async-iterable/create-async-iterable.d.ts +0 -1
- package/{src → dist/src}/utils/async-iterable/index.d.ts +0 -1
- package/{src → dist/src}/utils/async-iterable/map-async-iteratable.d.ts +0 -1
- package/{src → dist/src}/utils/async-iterable/tap-async-iteratable.d.ts +0 -1
- package/{src → dist/src}/utils/binary-extensions.d.ts +0 -1
- package/dist/src/utils/calculate-hash-for-create-nodes.d.ts +8 -0
- package/{src → dist/src}/utils/calculate-hash-for-create-nodes.js +12 -5
- package/{src → dist/src}/utils/catalog/index.d.ts +0 -1
- package/{src → dist/src}/utils/catalog/manager-factory.d.ts +0 -1
- package/{src → dist/src}/utils/catalog/manager.d.ts +0 -1
- package/{src → dist/src}/utils/catalog/pnpm-manager.d.ts +0 -1
- package/{src → dist/src}/utils/catalog/types.d.ts +0 -1
- package/{src → dist/src}/utils/catalog/yarn-manager.d.ts +0 -1
- package/{src → dist/src}/utils/config-utils.d.ts +0 -1
- package/{src → dist/src}/utils/config-utils.js +59 -4
- package/{src → dist/src}/utils/convert-nx-executor.d.ts +0 -1
- package/{src → dist/src}/utils/find-plugin-for-config-file.d.ts +0 -1
- package/dist/src/utils/find-plugin-for-config-file.js +34 -0
- package/{src → dist/src}/utils/get-named-inputs.d.ts +2 -3
- package/{src → dist/src}/utils/get-workspace-layout.d.ts +0 -1
- package/dist/src/utils/installed-version.d.ts +29 -0
- package/dist/src/utils/installed-version.js +57 -0
- package/{src → dist/src}/utils/invoke-nx-generator.d.ts +0 -1
- package/{src → dist/src}/utils/log-show-project-command.d.ts +0 -1
- package/{src → dist/src}/utils/move-dir.d.ts +0 -1
- package/{src → dist/src}/utils/names.d.ts +0 -1
- package/dist/src/utils/normalize-target-defaults.d.ts +32 -0
- package/dist/src/utils/normalize-target-defaults.js +84 -0
- package/{src → dist/src}/utils/offset-from-root.d.ts +0 -1
- package/{src → dist/src}/utils/package-json.d.ts +0 -1
- package/{src → dist/src}/utils/package-json.js +1 -1
- package/dist/src/utils/replace-project-configuration-with-plugin.d.ts +2 -0
- package/{src → dist/src}/utils/rxjs-for-await.d.ts +0 -1
- package/{src → dist/src}/utils/semver.d.ts +0 -1
- package/{src → dist/src}/utils/string-change.d.ts +0 -1
- package/{src → dist/src}/utils/string-utils.d.ts +0 -1
- package/dist/src/utils/version-floor.d.ts +37 -0
- package/dist/src/utils/version-floor.js +71 -0
- package/{src → dist/src}/utils/versions.d.ts +0 -1
- package/{testing.d.ts → dist/testing.d.ts} +0 -1
- package/migrations.json +16 -3
- package/package.json +59 -8
- package/assets.json +0 -15
- package/index.d.ts.map +0 -1
- package/internal.d.ts +0 -2
- package/internal.d.ts.map +0 -1
- package/internal.js +0 -8
- package/ngcli-adapter.d.ts.map +0 -1
- package/project.json +0 -14
- package/public-api.d.ts.map +0 -1
- package/src/executors/parse-target-string.d.ts.map +0 -1
- package/src/executors/read-target-options.d.ts.map +0 -1
- package/src/generators/artifact-name-and-directory-utils.d.ts.map +0 -1
- package/src/generators/e2e-web-server-info-utils.d.ts.map +0 -1
- package/src/generators/executor-options-utils.d.ts.map +0 -1
- package/src/generators/format-files.d.ts.map +0 -1
- package/src/generators/generate-files.d.ts.map +0 -1
- package/src/generators/plugin-migrations/aggregate-log-util.d.ts.map +0 -1
- package/src/generators/plugin-migrations/executor-to-plugin-migrator.d.ts.map +0 -1
- package/src/generators/plugin-migrations/plugin-migration-utils.d.ts.map +0 -1
- package/src/generators/project-name-and-root-utils.d.ts.map +0 -1
- package/src/generators/prompt.d.ts.map +0 -1
- package/src/generators/run-tasks-in-serial.d.ts.map +0 -1
- package/src/generators/target-defaults-utils.d.ts +0 -4
- package/src/generators/target-defaults-utils.d.ts.map +0 -1
- package/src/generators/target-defaults-utils.js +0 -100
- package/src/generators/to-js.d.ts.map +0 -1
- package/src/generators/typescript/insert-import.d.ts.map +0 -1
- package/src/generators/typescript/insert-statement.d.ts.map +0 -1
- package/src/generators/update-ts-configs-to-js.d.ts.map +0 -1
- package/src/generators/visit-not-ignored-files.d.ts.map +0 -1
- package/src/tasks/install-packages-task.d.ts.map +0 -1
- package/src/utils/add-plugin.d.ts.map +0 -1
- package/src/utils/async-iterable/combine-async-iterables.d.ts.map +0 -1
- package/src/utils/async-iterable/create-async-iterable.d.ts.map +0 -1
- package/src/utils/async-iterable/index.d.ts.map +0 -1
- package/src/utils/async-iterable/map-async-iteratable.d.ts.map +0 -1
- package/src/utils/async-iterable/tap-async-iteratable.d.ts.map +0 -1
- package/src/utils/binary-extensions.d.ts.map +0 -1
- package/src/utils/calculate-hash-for-create-nodes.d.ts +0 -4
- package/src/utils/calculate-hash-for-create-nodes.d.ts.map +0 -1
- package/src/utils/catalog/index.d.ts.map +0 -1
- package/src/utils/catalog/manager-factory.d.ts.map +0 -1
- package/src/utils/catalog/manager.d.ts.map +0 -1
- package/src/utils/catalog/pnpm-manager.d.ts.map +0 -1
- package/src/utils/catalog/types.d.ts.map +0 -1
- package/src/utils/catalog/yarn-manager.d.ts.map +0 -1
- package/src/utils/config-utils.d.ts.map +0 -1
- package/src/utils/convert-nx-executor.d.ts.map +0 -1
- package/src/utils/find-plugin-for-config-file.d.ts.map +0 -1
- package/src/utils/find-plugin-for-config-file.js +0 -61
- package/src/utils/get-named-inputs.d.ts.map +0 -1
- package/src/utils/get-workspace-layout.d.ts.map +0 -1
- package/src/utils/invoke-nx-generator.d.ts.map +0 -1
- package/src/utils/log-show-project-command.d.ts.map +0 -1
- package/src/utils/move-dir.d.ts.map +0 -1
- package/src/utils/names.d.ts.map +0 -1
- package/src/utils/offset-from-root.d.ts.map +0 -1
- package/src/utils/package-json.d.ts.map +0 -1
- package/src/utils/replace-package.d.ts +0 -3
- package/src/utils/replace-package.d.ts.map +0 -1
- package/src/utils/replace-package.js +0 -124
- package/src/utils/replace-project-configuration-with-plugin.d.ts +0 -3
- package/src/utils/replace-project-configuration-with-plugin.d.ts.map +0 -1
- package/src/utils/rxjs-for-await.d.ts.map +0 -1
- package/src/utils/semver.d.ts.map +0 -1
- package/src/utils/string-change.d.ts.map +0 -1
- package/src/utils/string-utils.d.ts.map +0 -1
- package/src/utils/versions.d.ts.map +0 -1
- package/testing.d.ts.map +0 -1
- /package/{LICENSE → dist/LICENSE} +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{ngcli-adapter.js → dist/ngcli-adapter.js} +0 -0
- /package/{public-api.js → dist/public-api.js} +0 -0
- /package/{src → dist/src}/executors/parse-target-string.js +0 -0
- /package/{src → dist/src}/executors/read-target-options.js +0 -0
- /package/{src → dist/src}/generators/artifact-name-and-directory-utils.js +0 -0
- /package/{src → dist/src}/generators/executor-options-utils.js +0 -0
- /package/{src → dist/src}/generators/generate-files.js +0 -0
- /package/{src → dist/src}/generators/plugin-migrations/aggregate-log-util.js +0 -0
- /package/{src → dist/src}/generators/plugin-migrations/plugin-migration-utils.js +0 -0
- /package/{src → dist/src}/generators/project-name-and-root-utils.js +0 -0
- /package/{src → dist/src}/generators/prompt.js +0 -0
- /package/{src → dist/src}/generators/run-tasks-in-serial.js +0 -0
- /package/{src → dist/src}/generators/typescript/insert-import.js +0 -0
- /package/{src → dist/src}/generators/typescript/insert-statement.js +0 -0
- /package/{src → dist/src}/generators/update-ts-configs-to-js.js +0 -0
- /package/{src → dist/src}/generators/visit-not-ignored-files.js +0 -0
- /package/{src → dist/src}/tasks/install-packages-task.js +0 -0
- /package/{src → dist/src}/utils/async-iterable/combine-async-iterables.js +0 -0
- /package/{src → dist/src}/utils/async-iterable/create-async-iterable.js +0 -0
- /package/{src → dist/src}/utils/async-iterable/index.js +0 -0
- /package/{src → dist/src}/utils/async-iterable/map-async-iteratable.js +0 -0
- /package/{src → dist/src}/utils/async-iterable/tap-async-iteratable.js +0 -0
- /package/{src → dist/src}/utils/binary-extensions.js +0 -0
- /package/{src → dist/src}/utils/catalog/index.js +0 -0
- /package/{src → dist/src}/utils/catalog/manager-factory.js +0 -0
- /package/{src → dist/src}/utils/catalog/manager.js +0 -0
- /package/{src → dist/src}/utils/catalog/pnpm-manager.js +0 -0
- /package/{src → dist/src}/utils/catalog/types.js +0 -0
- /package/{src → dist/src}/utils/catalog/yarn-manager.js +0 -0
- /package/{src → dist/src}/utils/convert-nx-executor.js +0 -0
- /package/{src → dist/src}/utils/get-named-inputs.js +0 -0
- /package/{src → dist/src}/utils/get-workspace-layout.js +0 -0
- /package/{src → dist/src}/utils/invoke-nx-generator.js +0 -0
- /package/{src → dist/src}/utils/log-show-project-command.js +0 -0
- /package/{src → dist/src}/utils/move-dir.js +0 -0
- /package/{src → dist/src}/utils/names.js +0 -0
- /package/{src → dist/src}/utils/offset-from-root.js +0 -0
- /package/{src → dist/src}/utils/replace-project-configuration-with-plugin.js +0 -0
- /package/{src → dist/src}/utils/rxjs-for-await.js +0 -0
- /package/{src → dist/src}/utils/semver.js +0 -0
- /package/{src → dist/src}/utils/string-change.js +0 -0
- /package/{src → dist/src}/utils/string-utils.js +0 -0
- /package/{src → dist/src}/utils/versions.js +0 -0
- /package/{testing.js → dist/testing.js} +0 -0
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreateNodes, ProjectGraph, Tree } from 'nx/src/devkit-exports';
|
|
2
2
|
/**
|
|
3
3
|
* Iterates through various forms of plugin options to find the one which does not conflict with the current graph
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
export declare function addPlugin<PluginOptions>(tree: Tree, graph: ProjectGraph, pluginName: string, createNodesTuple:
|
|
6
|
+
export declare function addPlugin<PluginOptions>(tree: Tree, graph: ProjectGraph, pluginName: string, createNodesTuple: CreateNodes<PluginOptions>, options: Partial<Record<keyof PluginOptions, PluginOptions[keyof PluginOptions][]>>, shouldUpdatePackageJsonScripts: boolean): Promise<void>;
|
|
7
7
|
/**
|
|
8
8
|
* @deprecated Use `addPlugin` instead
|
|
9
9
|
* Iterates through various forms of plugin options to find the one which does not conflict with the current graph
|
|
10
10
|
|
|
11
11
|
*/
|
|
12
|
-
export declare function addPluginV1<PluginOptions>(tree: Tree, graph: ProjectGraph, pluginName: string, createNodesTuple:
|
|
12
|
+
export declare function addPluginV1<PluginOptions>(tree: Tree, graph: ProjectGraph, pluginName: string, createNodesTuple: CreateNodes<PluginOptions>, options: Partial<Record<keyof PluginOptions, PluginOptions[keyof PluginOptions][]>>, shouldUpdatePackageJsonScripts: boolean): Promise<void>;
|
|
13
13
|
export declare function generateCombinations<T>(input: Record<string, T[]>): Record<string, T>[];
|
|
14
|
-
//# sourceMappingURL=add-plugin.d.ts.map
|
|
@@ -14,7 +14,7 @@ const devkit_internals_1 = require("nx/src/devkit-internals");
|
|
|
14
14
|
async function addPlugin(tree, graph, pluginName, createNodesTuple, options, shouldUpdatePackageJsonScripts) {
|
|
15
15
|
return _addPluginInternal(tree, graph, pluginName, (pluginOptions) => new devkit_internals_1.LoadedNxPlugin({
|
|
16
16
|
name: pluginName,
|
|
17
|
-
|
|
17
|
+
createNodes: createNodesTuple,
|
|
18
18
|
}, {
|
|
19
19
|
plugin: pluginName,
|
|
20
20
|
options: pluginOptions,
|
|
@@ -5,4 +5,3 @@ export interface AsyncPushCallbacks<T> {
|
|
|
5
5
|
registerCleanup?: (cb: () => void | Promise<void>) => void;
|
|
6
6
|
}
|
|
7
7
|
export declare function createAsyncIterable<T = unknown>(listener: (ls: AsyncPushCallbacks<T>) => void): AsyncIterable<T>;
|
|
8
|
-
//# sourceMappingURL=create-async-iterable.d.ts.map
|
|
@@ -1,2 +1 @@
|
|
|
1
1
|
export declare function mapAsyncIterable<T = any, I = any, O = any>(data: AsyncIterable<T> | AsyncIterableIterator<T>, transform: (input: I, index?: number, data?: AsyncIterable<T> | AsyncIterableIterator<T>) => O): AsyncIterable<O> | AsyncIterableIterator<O>;
|
|
2
|
-
//# sourceMappingURL=map-async-iteratable.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CreateNodesContext } 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
|
+
*/
|
|
7
|
+
export declare function calculateHashForCreateNodes(projectRoot: string, options: object, context: CreateNodesContext, additionalGlobs?: string[]): Promise<string>;
|
|
8
|
+
export declare function calculateHashesForCreateNodes(projectRoots: string[], options: object, context: CreateNodesContext, 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(
|
|
28
|
+
throw new Error(`calculateHashesForCreateNodes: projectRoots.length (${projectRoots.length}) !== additionalGlobs.length (${additionalGlobs.length})`);
|
|
21
29
|
}
|
|
22
|
-
|
|
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
|
-
]))
|
|
26
|
-
|
|
27
|
-
});
|
|
33
|
+
]));
|
|
34
|
+
return hashes.map((hash) => (0, devkit_exports_1.hashArray)([hash, (0, devkit_internals_1.hashObject)(options)]));
|
|
28
35
|
}
|
|
@@ -7,4 +7,3 @@ export { type CatalogManager, getCatalogManager };
|
|
|
7
7
|
* Returns Map of package name -> catalog name (undefined for default catalog)
|
|
8
8
|
*/
|
|
9
9
|
export declare function getCatalogDependenciesFromPackageJson(tree: Tree, packageJsonPath: string, manager: CatalogManager): Map<string, string | undefined>;
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -3,4 +3,3 @@ import type { CatalogManager } from './manager';
|
|
|
3
3
|
* Factory function to get the appropriate catalog manager based on the package manager
|
|
4
4
|
*/
|
|
5
5
|
export declare function getCatalogManager(workspaceRoot: string): CatalogManager | null;
|
|
6
|
-
//# sourceMappingURL=manager-factory.d.ts.map
|
|
@@ -3,4 +3,3 @@ export declare function loadConfigFile<T extends object = any>(configFilePath: s
|
|
|
3
3
|
export declare function getRootTsConfigPath(): string | null;
|
|
4
4
|
export declare function getRootTsConfigFileName(): string | null;
|
|
5
5
|
export declare function clearRequireCache(): void;
|
|
6
|
-
//# sourceMappingURL=config-utils.d.ts.map
|
|
@@ -27,16 +27,71 @@ function isTypeScriptFile(extension) {
|
|
|
27
27
|
}
|
|
28
28
|
async function loadTypeScriptModule(path, extension, tsconfigFileNames) {
|
|
29
29
|
const tsConfigPath = getTypeScriptConfigPath(path, tsconfigFileNames);
|
|
30
|
-
if (tsConfigPath) {
|
|
31
|
-
|
|
30
|
+
if (!tsConfigPath) {
|
|
31
|
+
return await loadModuleByExtension(path, extension);
|
|
32
|
+
}
|
|
33
|
+
// loadTsFile was added in nx@23. @nx/devkit's peer range supports older
|
|
34
|
+
// nx majors, so fall back to the legacy registerTsProject + require path
|
|
35
|
+
// when loadTsFile isn't available on the host nx.
|
|
36
|
+
if (typeof devkit_internals_1.loadTsFile !== 'function') {
|
|
37
|
+
const cleanup = (0, devkit_internals_1.registerTsProject)(tsConfigPath);
|
|
32
38
|
try {
|
|
33
39
|
return await loadModuleByExtension(path, extension);
|
|
34
40
|
}
|
|
35
41
|
finally {
|
|
36
|
-
|
|
42
|
+
cleanup();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Both .ts and .mts go through loadTsFile first. Node 22.12+ supports
|
|
46
|
+
// require() of synchronous ESM by default, and loadTsFile's lazy fallback
|
|
47
|
+
// covers swc/ts-node + tsconfig-paths registration when needed (swc-node
|
|
48
|
+
// hooks .cts/.mts/.ts via Module._extensions). Async-only ESM modules
|
|
49
|
+
// (top-level await) throw ERR_REQUIRE_ASYNC_MODULE and fall through to
|
|
50
|
+
// dynamic import(). ERR_REQUIRE_ESM is the legacy code for the same case
|
|
51
|
+
// - kept for older Node lines.
|
|
52
|
+
try {
|
|
53
|
+
return (0, devkit_internals_1.loadTsFile)(path, tsConfigPath);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
if (e?.code !== 'ERR_REQUIRE_ESM' &&
|
|
57
|
+
e?.code !== 'ERR_REQUIRE_ASYNC_MODULE') {
|
|
58
|
+
throw e;
|
|
59
|
+
}
|
|
60
|
+
// The module must be loaded via dynamic import(). Register
|
|
61
|
+
// tsconfig-paths first so workspace alias imports resolve, then try a
|
|
62
|
+
// native dynamic import. Node 22.18+ LTS strips TS types on the ESM
|
|
63
|
+
// path natively, so pure-ESM TLA configs load without any swc/ts-node
|
|
64
|
+
// ESM loader. Only escalate to forceRegisterEsmLoader (which throws
|
|
65
|
+
// when neither @swc-node/register nor ts-node is installed) if the
|
|
66
|
+
// native attempt hits unsupported TS syntax.
|
|
67
|
+
const cleanup = (0, devkit_internals_1.registerTsProject)(tsConfigPath);
|
|
68
|
+
try {
|
|
69
|
+
return await loadESM(path);
|
|
70
|
+
}
|
|
71
|
+
catch (esmErr) {
|
|
72
|
+
if (esmErr?.code !== 'ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX' ||
|
|
73
|
+
typeof devkit_internals_1.forceRegisterEsmLoader !== 'function') {
|
|
74
|
+
throw esmErr;
|
|
75
|
+
}
|
|
76
|
+
// Module.register is global and one-shot per process. After this
|
|
77
|
+
// runs, every subsequent ESM import in the process is routed
|
|
78
|
+
// through the registered loader, forfeiting Node's native TS
|
|
79
|
+
// stripping for the dynamic-import path. If neither swc-node nor
|
|
80
|
+
// ts-node is installed, forceRegisterEsmLoader throws - surface the
|
|
81
|
+
// original ESM error in that case so the user sees the real
|
|
82
|
+
// problem, not a misleading "loader missing" message.
|
|
83
|
+
try {
|
|
84
|
+
(0, devkit_internals_1.forceRegisterEsmLoader)();
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
throw esmErr;
|
|
88
|
+
}
|
|
89
|
+
return await loadESM(path);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
cleanup();
|
|
37
93
|
}
|
|
38
94
|
}
|
|
39
|
-
return await loadModuleByExtension(path, extension);
|
|
40
95
|
}
|
|
41
96
|
function getTypeScriptConfigPath(path, tsconfigFileNames) {
|
|
42
97
|
const siblingFiles = (0, fs_1.readdirSync)((0, path_1.dirname)(path));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findPluginForConfigFile = findPluginForConfigFile;
|
|
4
|
+
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
5
|
+
const devkit_internals_1 = require("nx/src/devkit-internals");
|
|
6
|
+
const minimatch_1 = require("minimatch");
|
|
7
|
+
async function findPluginForConfigFile(tree, pluginName, pathToConfigFile) {
|
|
8
|
+
const nxJson = (0, devkit_exports_1.readNxJson)(tree);
|
|
9
|
+
if (!nxJson.plugins) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const pluginRegistrations = nxJson.plugins.filter((p) => (typeof p === 'string' ? p === pluginName : p.plugin === pluginName));
|
|
13
|
+
for (const plugin of pluginRegistrations) {
|
|
14
|
+
if (typeof plugin === 'string') {
|
|
15
|
+
return plugin;
|
|
16
|
+
}
|
|
17
|
+
if (!plugin.include && !plugin.exclude) {
|
|
18
|
+
return plugin;
|
|
19
|
+
}
|
|
20
|
+
if (plugin.include || plugin.exclude) {
|
|
21
|
+
const resolvedPlugin = await import(pluginName);
|
|
22
|
+
const pluginGlob = resolvedPlugin.createNodes?.[0] ?? resolvedPlugin.createNodesV2?.[0];
|
|
23
|
+
// The file must be one this plugin actually processes (its path matches
|
|
24
|
+
// the plugin's createNodes glob) before the registration's include/exclude
|
|
25
|
+
// filters are applied.
|
|
26
|
+
const matchingConfigFile = !pluginGlob || (0, minimatch_1.minimatch)(pathToConfigFile, pluginGlob, { dot: true })
|
|
27
|
+
? (0, devkit_internals_1.findMatchingConfigFiles)([pathToConfigFile], plugin.include, plugin.exclude)
|
|
28
|
+
: [];
|
|
29
|
+
if (matchingConfigFile.length) {
|
|
30
|
+
return plugin;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { InputDefinition } from 'nx/src/config/workspace-json-project-json';
|
|
2
|
-
import {
|
|
2
|
+
import { CreateNodesContext } from 'nx/src/devkit-exports';
|
|
3
3
|
/**
|
|
4
4
|
* Get the named inputs available for a directory
|
|
5
5
|
*/
|
|
6
|
-
export declare function getNamedInputs(directory: string, context:
|
|
6
|
+
export declare function getNamedInputs(directory: string, context: CreateNodesContext): {
|
|
7
7
|
[inputName: string]: (string | InputDefinition)[];
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=get-named-inputs.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Tree } from 'nx/src/devkit-exports';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the concrete version of a package as resolved by Node module
|
|
4
|
+
* resolution from the workspace. Reads the installed package's own
|
|
5
|
+
* `package.json` — not the workspace's declared range.
|
|
6
|
+
*
|
|
7
|
+
* Use this from executor / runtime contexts where node_modules is present.
|
|
8
|
+
* Generator-time code should use `getDeclaredPackageVersion` instead.
|
|
9
|
+
*
|
|
10
|
+
* Returns `null` when the package is not resolvable.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getInstalledPackageVersion(packageName: string): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the declared version of a package as read from the workspace's
|
|
15
|
+
* `package.json`, normalized to a plain semver string (range markers
|
|
16
|
+
* stripped) suitable for arithmetic comparisons (e.g. `lt(v, '1.37.0')`).
|
|
17
|
+
*
|
|
18
|
+
* When the package is missing or declared as `latest`/`next`, falls back to
|
|
19
|
+
* the cleaned `latestKnownVersion` if provided; otherwise returns `null`.
|
|
20
|
+
*
|
|
21
|
+
* Use this from generator-time contexts where node_modules is not assumed
|
|
22
|
+
* to be present. Executor / runtime code should use
|
|
23
|
+
* `getInstalledPackageVersion` instead.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getDeclaredPackageVersion(tree: Tree, packageName: string, latestKnownVersion?: string): string | null;
|
|
26
|
+
export declare const NON_SEMVER_DIST_TAGS: readonly ["latest", "next"];
|
|
27
|
+
export type NonSemverDistTag = (typeof NON_SEMVER_DIST_TAGS)[number];
|
|
28
|
+
export declare function isNonSemverDistTag(version: string): version is NonSemverDistTag;
|
|
29
|
+
export declare function normalizeSemver(version: string): string | null;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NON_SEMVER_DIST_TAGS = void 0;
|
|
4
|
+
exports.getInstalledPackageVersion = getInstalledPackageVersion;
|
|
5
|
+
exports.getDeclaredPackageVersion = getDeclaredPackageVersion;
|
|
6
|
+
exports.isNonSemverDistTag = isNonSemverDistTag;
|
|
7
|
+
exports.normalizeSemver = normalizeSemver;
|
|
8
|
+
const devkit_internals_1 = require("nx/src/devkit-internals");
|
|
9
|
+
const semver_1 = require("semver");
|
|
10
|
+
const package_json_1 = require("./package-json");
|
|
11
|
+
/**
|
|
12
|
+
* Returns the concrete version of a package as resolved by Node module
|
|
13
|
+
* resolution from the workspace. Reads the installed package's own
|
|
14
|
+
* `package.json` — not the workspace's declared range.
|
|
15
|
+
*
|
|
16
|
+
* Use this from executor / runtime contexts where node_modules is present.
|
|
17
|
+
* Generator-time code should use `getDeclaredPackageVersion` instead.
|
|
18
|
+
*
|
|
19
|
+
* Returns `null` when the package is not resolvable.
|
|
20
|
+
*/
|
|
21
|
+
function getInstalledPackageVersion(packageName) {
|
|
22
|
+
try {
|
|
23
|
+
const { packageJson } = (0, devkit_internals_1.readModulePackageJson)(packageName);
|
|
24
|
+
return packageJson.version ?? null;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns the declared version of a package as read from the workspace's
|
|
32
|
+
* `package.json`, normalized to a plain semver string (range markers
|
|
33
|
+
* stripped) suitable for arithmetic comparisons (e.g. `lt(v, '1.37.0')`).
|
|
34
|
+
*
|
|
35
|
+
* When the package is missing or declared as `latest`/`next`, falls back to
|
|
36
|
+
* the cleaned `latestKnownVersion` if provided; otherwise returns `null`.
|
|
37
|
+
*
|
|
38
|
+
* Use this from generator-time contexts where node_modules is not assumed
|
|
39
|
+
* to be present. Executor / runtime code should use
|
|
40
|
+
* `getInstalledPackageVersion` instead.
|
|
41
|
+
*/
|
|
42
|
+
function getDeclaredPackageVersion(tree, packageName, latestKnownVersion) {
|
|
43
|
+
const declared = (0, package_json_1.getDependencyVersionFromPackageJson)(tree, packageName);
|
|
44
|
+
if (declared && !isNonSemverDistTag(declared)) {
|
|
45
|
+
const normalized = normalizeSemver(declared);
|
|
46
|
+
if (normalized)
|
|
47
|
+
return normalized;
|
|
48
|
+
}
|
|
49
|
+
return latestKnownVersion ? normalizeSemver(latestKnownVersion) : null;
|
|
50
|
+
}
|
|
51
|
+
exports.NON_SEMVER_DIST_TAGS = ['latest', 'next'];
|
|
52
|
+
function isNonSemverDistTag(version) {
|
|
53
|
+
return exports.NON_SEMVER_DIST_TAGS.includes(version);
|
|
54
|
+
}
|
|
55
|
+
function normalizeSemver(version) {
|
|
56
|
+
return (0, semver_1.clean)(version) ?? (0, semver_1.coerce)(version)?.version ?? null;
|
|
57
|
+
}
|
|
@@ -4,4 +4,3 @@ import { Generator } from 'nx/src/devkit-exports';
|
|
|
4
4
|
* @param generator The Nx generator to convert to an Angular Devkit Schematic.
|
|
5
5
|
*/
|
|
6
6
|
export declare function convertNxGenerator<T = any>(generator: Generator<T>, skipWritingConfigInOldFormat?: boolean): (generatorOptions: T) => (tree: any, context: any) => Promise<any>;
|
|
7
|
-
//# sourceMappingURL=invoke-nx-generator.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { TargetDefaultEntry, TargetDefaults, TargetDefaultsRecord } from 'nx/src/devkit-exports';
|
|
2
|
+
/**
|
|
3
|
+
* Convert an nx.json `targetDefaults` value (either the legacy record shape
|
|
4
|
+
* or the new array shape) into the normalized array shape.
|
|
5
|
+
*
|
|
6
|
+
* Record entries become `{ target: key, ...value }` preserving insertion
|
|
7
|
+
* order — except executor-shaped keys (e.g. `@nx/vite:test`,
|
|
8
|
+
* `nx:run-commands`), which become `{ executor: key, ...value }`.
|
|
9
|
+
*
|
|
10
|
+
* Returns the array directly when already normalized — callers must not
|
|
11
|
+
* mutate the result if they want to preserve the underlying nx.json.
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeTargetDefaults(raw: TargetDefaults | undefined): TargetDefaultEntry[];
|
|
14
|
+
/**
|
|
15
|
+
* Project an array of `TargetDefaultEntry` back into the legacy
|
|
16
|
+
* record shape. The intended caller is a pre-v23 migration that
|
|
17
|
+
* normalized to array internally but wants to preserve the original
|
|
18
|
+
* on-disk record shape so it remains valid against pre-v23 nx.json
|
|
19
|
+
* schemas.
|
|
20
|
+
*
|
|
21
|
+
* Each entry's key is its `target` (if set) or `executor`. Entries that
|
|
22
|
+
* have both keep the locator role on `target` and retain `executor` as
|
|
23
|
+
* a value field.
|
|
24
|
+
*
|
|
25
|
+
* Throws when the input contains entries that the record shape cannot
|
|
26
|
+
* represent — `projects`/`plugin` filters, two entries that would collapse
|
|
27
|
+
* to the same key, or entries with neither `target` nor `executor`. The
|
|
28
|
+
* caller must keep array shape in those cases (or refuse to write the
|
|
29
|
+
* change). Silently dropping these entries would corrupt nx.json without
|
|
30
|
+
* the user noticing.
|
|
31
|
+
*/
|
|
32
|
+
export declare function downgradeTargetDefaults(entries: TargetDefaultEntry[]): TargetDefaultsRecord;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeTargetDefaults = normalizeTargetDefaults;
|
|
4
|
+
exports.downgradeTargetDefaults = downgradeTargetDefaults;
|
|
5
|
+
// Mirrors `GLOB_CHARACTERS` / `isGlobPattern` from
|
|
6
|
+
// `nx/src/utils/globs.ts`. We can't import from there directly: devkit
|
|
7
|
+
// supports nx +/- 1 major version and that file isn't part of the
|
|
8
|
+
// devkit-exports surface guaranteed across the range. Keeping a local
|
|
9
|
+
// copy that exactly matches the canonical implementation avoids the
|
|
10
|
+
// import while staying behaviorally aligned.
|
|
11
|
+
const GLOB_CHARACTERS = new Set(['*', '|', '{', '}', '(', ')', '[']);
|
|
12
|
+
/**
|
|
13
|
+
* Convert an nx.json `targetDefaults` value (either the legacy record shape
|
|
14
|
+
* or the new array shape) into the normalized array shape.
|
|
15
|
+
*
|
|
16
|
+
* Record entries become `{ target: key, ...value }` preserving insertion
|
|
17
|
+
* order — except executor-shaped keys (e.g. `@nx/vite:test`,
|
|
18
|
+
* `nx:run-commands`), which become `{ executor: key, ...value }`.
|
|
19
|
+
*
|
|
20
|
+
* Returns the array directly when already normalized — callers must not
|
|
21
|
+
* mutate the result if they want to preserve the underlying nx.json.
|
|
22
|
+
*/
|
|
23
|
+
function normalizeTargetDefaults(raw) {
|
|
24
|
+
if (!raw)
|
|
25
|
+
return [];
|
|
26
|
+
if (Array.isArray(raw))
|
|
27
|
+
return raw;
|
|
28
|
+
const out = [];
|
|
29
|
+
const record = raw;
|
|
30
|
+
for (const key of Object.keys(record)) {
|
|
31
|
+
const value = record[key] ?? {};
|
|
32
|
+
out.push(isExecutorLikeKey(key)
|
|
33
|
+
? { ...value, executor: key }
|
|
34
|
+
: { ...value, target: key });
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function isExecutorLikeKey(key) {
|
|
39
|
+
if (!key.includes(':'))
|
|
40
|
+
return false;
|
|
41
|
+
for (const c of key)
|
|
42
|
+
if (GLOB_CHARACTERS.has(c))
|
|
43
|
+
return false;
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Project an array of `TargetDefaultEntry` back into the legacy
|
|
48
|
+
* record shape. The intended caller is a pre-v23 migration that
|
|
49
|
+
* normalized to array internally but wants to preserve the original
|
|
50
|
+
* on-disk record shape so it remains valid against pre-v23 nx.json
|
|
51
|
+
* schemas.
|
|
52
|
+
*
|
|
53
|
+
* Each entry's key is its `target` (if set) or `executor`. Entries that
|
|
54
|
+
* have both keep the locator role on `target` and retain `executor` as
|
|
55
|
+
* a value field.
|
|
56
|
+
*
|
|
57
|
+
* Throws when the input contains entries that the record shape cannot
|
|
58
|
+
* represent — `projects`/`plugin` filters, two entries that would collapse
|
|
59
|
+
* to the same key, or entries with neither `target` nor `executor`. The
|
|
60
|
+
* caller must keep array shape in those cases (or refuse to write the
|
|
61
|
+
* change). Silently dropping these entries would corrupt nx.json without
|
|
62
|
+
* the user noticing.
|
|
63
|
+
*/
|
|
64
|
+
function downgradeTargetDefaults(entries) {
|
|
65
|
+
const out = {};
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
if (entry.projects !== undefined || entry.plugin !== undefined) {
|
|
68
|
+
throw new Error(`Cannot downgrade targetDefaults to legacy record shape: entry ${JSON.stringify(entry)} uses a \`projects\`/\`plugin\` filter, which is only supported in the array shape.`);
|
|
69
|
+
}
|
|
70
|
+
const { target, executor, projects, plugin, ...rest } = entry;
|
|
71
|
+
const key = target ?? executor;
|
|
72
|
+
if (key === undefined) {
|
|
73
|
+
throw new Error(`Cannot downgrade targetDefaults to legacy record shape: entry ${JSON.stringify(entry)} has neither \`target\` nor \`executor\` to use as the record key.`);
|
|
74
|
+
}
|
|
75
|
+
if (Object.prototype.hasOwnProperty.call(out, key)) {
|
|
76
|
+
throw new Error(`Cannot downgrade targetDefaults to legacy record shape: two entries collapse to the same key \`${key}\`. Keep the array shape so both can coexist.`);
|
|
77
|
+
}
|
|
78
|
+
const value = { ...rest };
|
|
79
|
+
if (target && executor)
|
|
80
|
+
value.executor = executor;
|
|
81
|
+
out[key] = value;
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
@@ -153,4 +153,3 @@ export declare function ensurePackage<T extends any = any>(pkg: string, version:
|
|
|
153
153
|
* @description The version of Nx used by the workspace. Returns null if no version is found.
|
|
154
154
|
*/
|
|
155
155
|
export declare const NX_VERSION: string;
|
|
156
|
-
//# sourceMappingURL=package-json.d.ts.map
|
|
@@ -456,7 +456,7 @@ function ensurePackage(pkgOrTree, requiredVersionOrPackage, maybeRequiredVersion
|
|
|
456
456
|
if (process.env.NX_DRY_RUN && process.env.NX_DRY_RUN !== 'false') {
|
|
457
457
|
throw new Error('NOTE: This generator does not support --dry-run. If you are running this in Nx Console, it should execute fine once you hit the "Generate" button.\n');
|
|
458
458
|
}
|
|
459
|
-
const { tempDir } = (0, devkit_internals_1.installPackageToTmp)(pkg, requiredVersion);
|
|
459
|
+
const { tempDir } = (0, devkit_internals_1.installPackageToTmp)(pkg, requiredVersion, (0, devkit_exports_1.detectPackageManager)(devkit_exports_1.workspaceRoot));
|
|
460
460
|
addToNodePath((0, path_1.join)(devkit_exports_1.workspaceRoot, 'node_modules'));
|
|
461
461
|
addToNodePath((0, path_1.join)(tempDir, 'node_modules'));
|
|
462
462
|
// Re-initialize the added paths into require
|
|
@@ -107,4 +107,3 @@ export declare function latestValueFrom<T>(source: Observable<T>): AsyncGenerato
|
|
|
107
107
|
* @param source the Observable source to await values from
|
|
108
108
|
*/
|
|
109
109
|
export declare function nextValueFrom<T>(source: Observable<T>): AsyncGenerator<T, void, void>;
|
|
110
|
-
//# sourceMappingURL=rxjs-for-await.d.ts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { type Tree } from 'nx/src/devkit-exports';
|
|
2
2
|
export declare function checkAndCleanWithSemver(pkgName: string, version: string): string;
|
|
3
3
|
export declare function checkAndCleanWithSemver(tree: Tree, pkgName: string, version: string): string;
|
|
4
|
-
//# sourceMappingURL=semver.d.ts.map
|
|
@@ -93,4 +93,3 @@ export declare function underscore(str: string): string;
|
|
|
93
93
|
export declare function capitalize(str: string): string;
|
|
94
94
|
export declare function group(name: string, group: string | undefined): string;
|
|
95
95
|
export declare function featurePath(group: boolean | undefined, flat: boolean | undefined, path: string, name: string): string;
|
|
96
|
-
//# sourceMappingURL=string-utils.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Tree } from 'nx/src/devkit-exports';
|
|
2
|
+
/**
|
|
3
|
+
* Throws a standardized error when a package is installed at a version below
|
|
4
|
+
* a plugin's supported floor.
|
|
5
|
+
*
|
|
6
|
+
* Use this at every site where a plugin determines the installed version of
|
|
7
|
+
* a supported package is below its declared floor, so the message is
|
|
8
|
+
* consistent across plugins.
|
|
9
|
+
*
|
|
10
|
+
* @param packageName Name of the package (e.g. `@angular/core`).
|
|
11
|
+
* @param installedVersion Version detected in the workspace (e.g. `18.2.0`).
|
|
12
|
+
* @param floor Lowest version the plugin supports (e.g. `19.0.0`).
|
|
13
|
+
*/
|
|
14
|
+
export declare function throwForUnsupportedVersion(packageName: string, installedVersion: string, floor: string): never;
|
|
15
|
+
/**
|
|
16
|
+
* Asserts that a package detected in the workspace is at or above the
|
|
17
|
+
* plugin's supported floor. No-op when the package is not detected
|
|
18
|
+
* (fresh-install path) or when declared as `latest`/`next`. Throws via
|
|
19
|
+
* `throwForUnsupportedVersion` (with the original declared range for
|
|
20
|
+
* clarity) when below floor.
|
|
21
|
+
*
|
|
22
|
+
* Use from generator entry points to fail fast on unsupported workspaces
|
|
23
|
+
* before writing any incompatible config.
|
|
24
|
+
*/
|
|
25
|
+
export declare function assertSupportedPackageVersion(tree: Tree, packageName: string, minSupportedVersion: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Asserts that a package installed in the workspace is at or above the
|
|
28
|
+
* plugin's supported floor. No-op when the package is not resolvable from
|
|
29
|
+
* `node_modules` (peer not yet satisfied, fresh-install path). Throws via
|
|
30
|
+
* `throwForUnsupportedVersion` when below floor.
|
|
31
|
+
*
|
|
32
|
+
* Use from executor / runtime / preset / library entry points where
|
|
33
|
+
* node_modules is present and no `Tree` is available. Generator code should
|
|
34
|
+
* use `assertSupportedPackageVersion` instead, which reads the declared
|
|
35
|
+
* range from a tree.
|
|
36
|
+
*/
|
|
37
|
+
export declare function assertSupportedInstalledPackageVersion(packageName: string, minSupportedVersion: string): void;
|