@nx/devkit 0.0.0-pr-32978-0c22436 → 0.0.0-pr-32947-9a62b66
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/package.json +3 -4
- package/public-api.d.ts +1 -1
- package/public-api.d.ts.map +1 -1
- package/public-api.js +1 -2
- package/src/utils/package-json.d.ts +1 -55
- package/src/utils/package-json.d.ts.map +1 -1
- package/src/utils/package-json.js +42 -225
- package/src/utils/semver.d.ts +0 -2
- package/src/utils/semver.d.ts.map +1 -1
- package/src/utils/semver.js +5 -26
- package/src/utils/catalog/errors.d.ts +0 -10
- package/src/utils/catalog/errors.d.ts.map +0 -1
- package/src/utils/catalog/errors.js +0 -19
- package/src/utils/catalog/index.d.ts +0 -12
- package/src/utils/catalog/index.d.ts.map +0 -1
- package/src/utils/catalog/index.js +0 -52
- package/src/utils/catalog/manager-factory.d.ts +0 -6
- package/src/utils/catalog/manager-factory.d.ts.map +0 -1
- package/src/utils/catalog/manager-factory.js +0 -24
- package/src/utils/catalog/manager.d.ts +0 -50
- package/src/utils/catalog/manager.d.ts.map +0 -1
- package/src/utils/catalog/manager.js +0 -2
- package/src/utils/catalog/pnpm-manager.d.ts +0 -26
- package/src/utils/catalog/pnpm-manager.d.ts.map +0 -1
- package/src/utils/catalog/pnpm-manager.js +0 -258
- package/src/utils/catalog/types.d.ts +0 -18
- package/src/utils/catalog/types.d.ts.map +0 -1
- package/src/utils/catalog/types.js +0 -10
- package/src/utils/catalog/unsupported-manager.d.ts +0 -38
- package/src/utils/catalog/unsupported-manager.d.ts.map +0 -1
- package/src/utils/catalog/unsupported-manager.js +0 -58
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/devkit",
|
|
3
|
-
"version": "0.0.0-pr-
|
|
3
|
+
"version": "0.0.0-pr-32947-9a62b66",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Devkit is used to customize Nx for different technologies and use cases. It contains many utility functions for reading and writing files, updating configuration, working with Abstract Syntax Trees(ASTs), and more. Learn more about [extending Nx by leveraging the Nx Devkit](https://nx.dev/extending-nx/intro/getting-started) on our docs.",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://nx.dev",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@zkochan/js-yaml": "0.0.7",
|
|
32
31
|
"ejs": "^3.1.7",
|
|
33
32
|
"tslib": "^2.3.0",
|
|
34
33
|
"semver": "^7.5.3",
|
|
@@ -38,10 +37,10 @@
|
|
|
38
37
|
},
|
|
39
38
|
"devDependencies": {
|
|
40
39
|
"jest": "^29.4.1",
|
|
41
|
-
"nx": "0.0.0-pr-
|
|
40
|
+
"nx": "0.0.0-pr-32947-9a62b66"
|
|
42
41
|
},
|
|
43
42
|
"peerDependencies": {
|
|
44
|
-
"nx": "0.0.0-pr-
|
|
43
|
+
"nx": "0.0.0-pr-32947-9a62b66"
|
|
45
44
|
},
|
|
46
45
|
"publishConfig": {
|
|
47
46
|
"access": "public"
|
package/public-api.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export { readTargetOptions } from './src/executors/read-target-options';
|
|
|
39
39
|
/**
|
|
40
40
|
* @category Utils
|
|
41
41
|
*/
|
|
42
|
-
export { addDependenciesToPackageJson, removeDependenciesFromPackageJson, ensurePackage,
|
|
42
|
+
export { addDependenciesToPackageJson, removeDependenciesFromPackageJson, ensurePackage, NX_VERSION, } from './src/utils/package-json';
|
|
43
43
|
/**
|
|
44
44
|
* @category Utils
|
|
45
45
|
*/
|
package/public-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../packages/devkit/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D;;GAEG;AACH,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE;;GAEG;AACH,OAAO,EACL,4BAA4B,EAC5B,iCAAiC,EACjC,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../packages/devkit/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D;;GAEG;AACH,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE;;GAEG;AACH,OAAO,EACL,4BAA4B,EAC5B,iCAAiC,EACjC,aAAa,EACb,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAE1C;;GAEG;AACH,YAAY,EACV,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE7E;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;GAEG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/public-api.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* a. We might need to duplicate code instead of importing from nx until all supported versions of nx contain the file.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.moveFilesToNewDirectory = exports.convertNxExecutor = exports.convertNxGenerator = exports.offsetFromRoot = exports.ChangeType = exports.applyChangesToString = exports.extractLayoutDirectory = exports.getWorkspaceLayout = exports.names = exports.installPackagesTask = exports.NX_VERSION = exports.
|
|
12
|
+
exports.moveFilesToNewDirectory = exports.convertNxExecutor = exports.convertNxGenerator = exports.offsetFromRoot = exports.ChangeType = exports.applyChangesToString = exports.extractLayoutDirectory = exports.getWorkspaceLayout = exports.names = exports.installPackagesTask = exports.NX_VERSION = exports.ensurePackage = exports.removeDependenciesFromPackageJson = exports.addDependenciesToPackageJson = exports.readTargetOptions = exports.targetToTargetString = exports.parseTargetString = exports.visitNotIgnoredFiles = exports.runTasksInSerial = exports.updateTsConfigsToJs = exports.toJS = exports.OverwriteStrategy = exports.generateFiles = exports.formatFiles = void 0;
|
|
13
13
|
/**
|
|
14
14
|
* @category Generators
|
|
15
15
|
*/
|
|
@@ -56,7 +56,6 @@ var package_json_1 = require("./src/utils/package-json");
|
|
|
56
56
|
Object.defineProperty(exports, "addDependenciesToPackageJson", { enumerable: true, get: function () { return package_json_1.addDependenciesToPackageJson; } });
|
|
57
57
|
Object.defineProperty(exports, "removeDependenciesFromPackageJson", { enumerable: true, get: function () { return package_json_1.removeDependenciesFromPackageJson; } });
|
|
58
58
|
Object.defineProperty(exports, "ensurePackage", { enumerable: true, get: function () { return package_json_1.ensurePackage; } });
|
|
59
|
-
Object.defineProperty(exports, "getDependencyVersionFromPackageJson", { enumerable: true, get: function () { return package_json_1.getDependencyVersionFromPackageJson; } });
|
|
60
59
|
Object.defineProperty(exports, "NX_VERSION", { enumerable: true, get: function () { return package_json_1.NX_VERSION; } });
|
|
61
60
|
/**
|
|
62
61
|
* @category Utils
|
|
@@ -1,58 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { PackageJson } from 'nx/src/utils/package-json';
|
|
3
|
-
/**
|
|
4
|
-
* Get the resolved version of a dependency from package.json.
|
|
5
|
-
*
|
|
6
|
-
* Retrieves a package version and automatically resolves PNPM catalog references
|
|
7
|
-
* (e.g., "catalog:default") to their actual version strings. Searches `dependencies`
|
|
8
|
-
* first, then falls back to `devDependencies`.
|
|
9
|
-
*
|
|
10
|
-
* **Tree-based usage** (generators and migrations):
|
|
11
|
-
* Use when you have a `Tree` object, which is typical in Nx generators and migrations.
|
|
12
|
-
*
|
|
13
|
-
* **Filesystem-based usage** (CLI commands and scripts):
|
|
14
|
-
* Use when reading directly from the filesystem without a `Tree` object.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* // Tree-based - from root package.json
|
|
19
|
-
* const reactVersion = getDependencyVersionFromPackageJson(tree, 'react');
|
|
20
|
-
* // Returns: "^18.0.0" (resolves "catalog:default" if present)
|
|
21
|
-
*
|
|
22
|
-
* // Tree-based - from specific package.json
|
|
23
|
-
* const version = getDependencyVersionFromPackageJson(
|
|
24
|
-
* tree,
|
|
25
|
-
* '@my/lib',
|
|
26
|
-
* 'packages/my-lib/package.json'
|
|
27
|
-
* );
|
|
28
|
-
*
|
|
29
|
-
* // Tree-based - with pre-loaded package.json
|
|
30
|
-
* const packageJson = readJson(tree, 'package.json');
|
|
31
|
-
* const version = getDependencyVersionFromPackageJson(tree, 'react', packageJson);
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```typescript
|
|
36
|
-
* // Filesystem-based - from current directory
|
|
37
|
-
* const reactVersion = getDependencyVersionFromPackageJson('react');
|
|
38
|
-
*
|
|
39
|
-
* // Filesystem-based - with workspace root
|
|
40
|
-
* const version = getDependencyVersionFromPackageJson('react', '/path/to/workspace');
|
|
41
|
-
*
|
|
42
|
-
* // Filesystem-based - with specific package.json
|
|
43
|
-
* const version = getDependencyVersionFromPackageJson(
|
|
44
|
-
* 'react',
|
|
45
|
-
* '/path/to/workspace',
|
|
46
|
-
* 'apps/my-app/package.json'
|
|
47
|
-
* );
|
|
48
|
-
* ```
|
|
49
|
-
*
|
|
50
|
-
* @returns The resolved version string, or `null` if the package is not found in either dependencies or devDependencies
|
|
51
|
-
*/
|
|
52
|
-
export declare function getDependencyVersionFromPackageJson(tree: Tree, packageName: string, packageJsonPath?: string): string | null;
|
|
53
|
-
export declare function getDependencyVersionFromPackageJson(tree: Tree, packageName: string, packageJson?: PackageJson): string | null;
|
|
54
|
-
export declare function getDependencyVersionFromPackageJson(packageName: string, workspaceRootPath?: string, packageJsonPath?: string): string | null;
|
|
55
|
-
export declare function getDependencyVersionFromPackageJson(packageName: string, workspaceRootPath?: string, packageJson?: PackageJson): string | null;
|
|
1
|
+
import { GeneratorCallback, Tree } from 'nx/src/devkit-exports';
|
|
56
2
|
/**
|
|
57
3
|
* Add Dependencies and Dev Dependencies to package.json
|
|
58
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/devkit/src/utils/package-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/devkit/src/utils/package-json.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,IAAI,EAGL,MAAM,uBAAuB,CAAC;AAsG/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,eAAe,GAAE,MAAuB,EACxC,oBAAoB,CAAC,EAAE,OAAO,GAC7B,iBAAiB,CAyFnB;AAgCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,eAAe,GAAE,MAAuB,GACvC,iBAAiB,CA6BnB;AA8FD;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,IAAI,CAAC;AAER;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,CAAC,CAAC;AA4FL;;GAEG;AACH,eAAO,MAAM,UAAU,QAA0B,CAAC"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NX_VERSION = void 0;
|
|
4
|
-
exports.getDependencyVersionFromPackageJson = getDependencyVersionFromPackageJson;
|
|
5
4
|
exports.addDependenciesToPackageJson = addDependenciesToPackageJson;
|
|
6
5
|
exports.removeDependenciesFromPackageJson = removeDependenciesFromPackageJson;
|
|
7
6
|
exports.ensurePackage = ensurePackage;
|
|
8
|
-
const
|
|
9
|
-
const module_1 = require("module");
|
|
7
|
+
const semver_1 = require("semver");
|
|
10
8
|
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
11
9
|
const devkit_internals_1 = require("nx/src/devkit-internals");
|
|
12
10
|
const path_1 = require("path");
|
|
13
|
-
const semver_1 = require("semver");
|
|
14
11
|
const install_packages_task_1 = require("../tasks/install-packages-task");
|
|
15
|
-
const
|
|
12
|
+
const module_1 = require("module");
|
|
16
13
|
const UNIDENTIFIED_VERSION = 'UNIDENTIFIED_VERSION';
|
|
17
14
|
const NON_SEMVER_TAGS = {
|
|
18
15
|
'*': 2,
|
|
@@ -22,65 +19,6 @@ const NON_SEMVER_TAGS = {
|
|
|
22
19
|
previous: -1,
|
|
23
20
|
legacy: -2,
|
|
24
21
|
};
|
|
25
|
-
function getDependencyVersionFromPackageJson(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot) {
|
|
26
|
-
if (typeof treeOrPackageName !== 'string') {
|
|
27
|
-
return getDependencyVersionFromPackageJsonFromTree(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return getDependencyVersionFromPackageJsonFromFileSystem(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Tree-based implementation for getDependencyVersionFromPackageJson
|
|
35
|
-
*/
|
|
36
|
-
function getDependencyVersionFromPackageJsonFromTree(tree, packageName, packageJsonPathOrObject = 'package.json') {
|
|
37
|
-
let packageJson;
|
|
38
|
-
if (typeof packageJsonPathOrObject === 'object') {
|
|
39
|
-
packageJson = packageJsonPathOrObject;
|
|
40
|
-
}
|
|
41
|
-
else if (tree.exists(packageJsonPathOrObject)) {
|
|
42
|
-
packageJson = (0, devkit_exports_1.readJson)(tree, packageJsonPathOrObject);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
48
|
-
let version = packageJson.dependencies?.[packageName] ??
|
|
49
|
-
packageJson.devDependencies?.[packageName] ??
|
|
50
|
-
null;
|
|
51
|
-
// Resolve catalog reference if needed
|
|
52
|
-
if (version && manager.isCatalogReference(version)) {
|
|
53
|
-
version = manager.resolveCatalogReference(tree, packageName, version);
|
|
54
|
-
}
|
|
55
|
-
return version;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Filesystem-based implementation for getDependencyVersionFromPackageJson
|
|
59
|
-
*/
|
|
60
|
-
function getDependencyVersionFromPackageJsonFromFileSystem(packageName, root = devkit_exports_1.workspaceRoot, packageJsonPathOrObject = 'package.json') {
|
|
61
|
-
let packageJson;
|
|
62
|
-
if (typeof packageJsonPathOrObject === 'object') {
|
|
63
|
-
packageJson = packageJsonPathOrObject;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
const packageJsonPath = (0, path_1.resolve)(root, packageJsonPathOrObject);
|
|
67
|
-
if ((0, fs_1.existsSync)(packageJsonPath)) {
|
|
68
|
-
packageJson = (0, devkit_exports_1.readJsonFile)(packageJsonPath);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
const manager = (0, catalog_1.getCatalogManager)(root);
|
|
75
|
-
let version = packageJson.dependencies?.[packageName] ??
|
|
76
|
-
packageJson.devDependencies?.[packageName] ??
|
|
77
|
-
null;
|
|
78
|
-
// Resolve catalog reference if needed
|
|
79
|
-
if (version && manager.isCatalogReference(version)) {
|
|
80
|
-
version = manager.resolveCatalogReference(packageName, version, root);
|
|
81
|
-
}
|
|
82
|
-
return version;
|
|
83
|
-
}
|
|
84
22
|
function filterExistingDependencies(dependencies, existingAltDependencies) {
|
|
85
23
|
if (!existingAltDependencies) {
|
|
86
24
|
return dependencies;
|
|
@@ -89,43 +27,17 @@ function filterExistingDependencies(dependencies, existingAltDependencies) {
|
|
|
89
27
|
.filter((d) => !existingAltDependencies[d])
|
|
90
28
|
.reduce((acc, d) => ({ ...acc, [d]: dependencies[d] }), {});
|
|
91
29
|
}
|
|
92
|
-
function cleanSemver(
|
|
93
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
94
|
-
if (manager.isCatalogReference(version)) {
|
|
95
|
-
const resolvedVersion = manager.resolveCatalogReference(tree, packageName, version);
|
|
96
|
-
if (!resolvedVersion) {
|
|
97
|
-
throw new Error(`Failed to resolve catalog reference '${version}' for package '${packageName}'`);
|
|
98
|
-
}
|
|
99
|
-
return (0, semver_1.clean)(resolvedVersion) ?? (0, semver_1.coerce)(resolvedVersion);
|
|
100
|
-
}
|
|
30
|
+
function cleanSemver(version) {
|
|
101
31
|
return (0, semver_1.clean)(version) ?? (0, semver_1.coerce)(version);
|
|
102
32
|
}
|
|
103
|
-
function isIncomingVersionGreater(
|
|
104
|
-
// the existing version might be a catalog reference, so we need to resolve
|
|
105
|
-
// it if that's the case
|
|
106
|
-
let resolvedExistingVersion = existingVersion;
|
|
107
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
108
|
-
if (manager.isCatalogReference(existingVersion)) {
|
|
109
|
-
if (!manager.supportsCatalogs()) {
|
|
110
|
-
// If catalog is unsupported, we assume the incoming version is newer
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
const resolved = manager.resolveCatalogReference(tree, packageName, existingVersion);
|
|
114
|
-
if (!resolved) {
|
|
115
|
-
// catalog is supported, but failed to resolve, we throw an error
|
|
116
|
-
throw new Error(`Failed to resolve catalog reference '${existingVersion}' for package '${packageName}'`);
|
|
117
|
-
}
|
|
118
|
-
resolvedExistingVersion = resolved;
|
|
119
|
-
}
|
|
33
|
+
function isIncomingVersionGreater(incomingVersion, existingVersion) {
|
|
120
34
|
// if version is in the format of "latest", "next" or similar - keep it, otherwise try to parse it
|
|
121
35
|
const incomingVersionCompareBy = incomingVersion in NON_SEMVER_TAGS
|
|
122
36
|
? incomingVersion
|
|
123
|
-
: cleanSemver(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
: cleanSemver(tree, resolvedExistingVersion, packageName)?.toString() ??
|
|
128
|
-
UNIDENTIFIED_VERSION;
|
|
37
|
+
: cleanSemver(incomingVersion)?.toString() ?? UNIDENTIFIED_VERSION;
|
|
38
|
+
const existingVersionCompareBy = existingVersion in NON_SEMVER_TAGS
|
|
39
|
+
? existingVersion
|
|
40
|
+
: cleanSemver(existingVersion)?.toString() ?? UNIDENTIFIED_VERSION;
|
|
129
41
|
if (incomingVersionCompareBy in NON_SEMVER_TAGS &&
|
|
130
42
|
existingVersionCompareBy in NON_SEMVER_TAGS) {
|
|
131
43
|
return (NON_SEMVER_TAGS[incomingVersionCompareBy] >
|
|
@@ -135,9 +47,9 @@ function isIncomingVersionGreater(tree, incomingVersion, existingVersion, packag
|
|
|
135
47
|
existingVersionCompareBy in NON_SEMVER_TAGS) {
|
|
136
48
|
return true;
|
|
137
49
|
}
|
|
138
|
-
return (0, semver_1.gt)(cleanSemver(
|
|
50
|
+
return (0, semver_1.gt)(cleanSemver(incomingVersion), cleanSemver(existingVersion));
|
|
139
51
|
}
|
|
140
|
-
function updateExistingAltDependenciesVersion(
|
|
52
|
+
function updateExistingAltDependenciesVersion(dependencies, existingAltDependencies) {
|
|
141
53
|
return Object.keys(existingAltDependencies || {})
|
|
142
54
|
.filter((d) => {
|
|
143
55
|
if (!dependencies[d]) {
|
|
@@ -145,11 +57,11 @@ function updateExistingAltDependenciesVersion(tree, dependencies, existingAltDep
|
|
|
145
57
|
}
|
|
146
58
|
const incomingVersion = dependencies[d];
|
|
147
59
|
const existingVersion = existingAltDependencies[d];
|
|
148
|
-
return isIncomingVersionGreater(
|
|
60
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
149
61
|
})
|
|
150
62
|
.reduce((acc, d) => ({ ...acc, [d]: dependencies[d] }), {});
|
|
151
63
|
}
|
|
152
|
-
function updateExistingDependenciesVersion(
|
|
64
|
+
function updateExistingDependenciesVersion(dependencies, existingDependencies = {}) {
|
|
153
65
|
return Object.keys(dependencies)
|
|
154
66
|
.filter((d) => {
|
|
155
67
|
if (!existingDependencies[d]) {
|
|
@@ -157,7 +69,7 @@ function updateExistingDependenciesVersion(tree, dependencies, existingDependenc
|
|
|
157
69
|
}
|
|
158
70
|
const incomingVersion = dependencies[d];
|
|
159
71
|
const existingVersion = existingDependencies[d];
|
|
160
|
-
return isIncomingVersionGreater(
|
|
72
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
161
73
|
})
|
|
162
74
|
.reduce((acc, d) => ({ ...acc, [d]: dependencies[d] }), {});
|
|
163
75
|
}
|
|
@@ -189,143 +101,48 @@ function addDependenciesToPackageJson(tree, dependencies, devDependencies, packa
|
|
|
189
101
|
// - dependencies of the same type that have greater version
|
|
190
102
|
// - specified dependencies of the other type that have greater version and are already installed as current type
|
|
191
103
|
filteredDependencies = {
|
|
192
|
-
...updateExistingDependenciesVersion(
|
|
193
|
-
...updateExistingAltDependenciesVersion(
|
|
104
|
+
...updateExistingDependenciesVersion(filteredDependencies, currentPackageJson.dependencies),
|
|
105
|
+
...updateExistingAltDependenciesVersion(devDependencies, currentPackageJson.dependencies),
|
|
194
106
|
};
|
|
195
107
|
filteredDevDependencies = {
|
|
196
|
-
...updateExistingDependenciesVersion(
|
|
197
|
-
...updateExistingAltDependenciesVersion(
|
|
108
|
+
...updateExistingDependenciesVersion(filteredDevDependencies, currentPackageJson.devDependencies),
|
|
109
|
+
...updateExistingAltDependenciesVersion(dependencies, currentPackageJson.devDependencies),
|
|
198
110
|
};
|
|
199
111
|
if (keepExistingVersions) {
|
|
200
112
|
filteredDependencies = removeExistingDependencies(filteredDependencies, currentPackageJson.dependencies);
|
|
201
113
|
filteredDevDependencies = removeExistingDependencies(filteredDevDependencies, currentPackageJson.devDependencies);
|
|
202
114
|
}
|
|
203
115
|
else {
|
|
204
|
-
filteredDependencies = removeLowerVersions(
|
|
205
|
-
filteredDevDependencies = removeLowerVersions(
|
|
116
|
+
filteredDependencies = removeLowerVersions(filteredDependencies, currentPackageJson.dependencies);
|
|
117
|
+
filteredDevDependencies = removeLowerVersions(filteredDevDependencies, currentPackageJson.devDependencies);
|
|
206
118
|
}
|
|
207
|
-
if (requiresAddingOfPackages(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
119
|
+
if (requiresAddingOfPackages(currentPackageJson, filteredDependencies, filteredDevDependencies)) {
|
|
120
|
+
(0, devkit_exports_1.updateJson)(tree, packageJsonPath, (json) => {
|
|
121
|
+
json.dependencies = {
|
|
122
|
+
...(json.dependencies || {}),
|
|
123
|
+
...filteredDependencies,
|
|
124
|
+
};
|
|
125
|
+
json.devDependencies = {
|
|
126
|
+
...(json.devDependencies || {}),
|
|
127
|
+
...filteredDevDependencies,
|
|
128
|
+
};
|
|
129
|
+
json.dependencies = sortObjectByKeys(json.dependencies);
|
|
130
|
+
json.devDependencies = sortObjectByKeys(json.devDependencies);
|
|
131
|
+
return json;
|
|
132
|
+
});
|
|
211
133
|
return () => {
|
|
212
134
|
(0, install_packages_task_1.installPackagesTask)(tree);
|
|
213
135
|
};
|
|
214
136
|
}
|
|
215
137
|
return () => { };
|
|
216
138
|
}
|
|
217
|
-
function splitDependenciesByCatalogType(tree, filteredDependencies, filteredDevDependencies, packageJsonPath) {
|
|
218
|
-
const allFilteredUpdates = {
|
|
219
|
-
...filteredDependencies,
|
|
220
|
-
...filteredDevDependencies,
|
|
221
|
-
};
|
|
222
|
-
const catalogUpdates = [];
|
|
223
|
-
let directDependencies = { ...filteredDependencies };
|
|
224
|
-
let directDevDependencies = { ...filteredDevDependencies };
|
|
225
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
226
|
-
const existingCatalogDeps = (0, catalog_1.getCatalogDependenciesFromPackageJson)(tree, packageJsonPath, manager);
|
|
227
|
-
if (!existingCatalogDeps.size) {
|
|
228
|
-
return {
|
|
229
|
-
catalogUpdates: [],
|
|
230
|
-
directDependencies: filteredDependencies,
|
|
231
|
-
directDevDependencies: filteredDevDependencies,
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
const supportsCatalogs = manager.supportsCatalogs();
|
|
235
|
-
// Check filtered results for catalog references or existing catalog dependencies
|
|
236
|
-
for (const [packageName, version] of Object.entries(allFilteredUpdates)) {
|
|
237
|
-
if (!existingCatalogDeps.has(packageName)) {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
let shouldUseCatalog = false;
|
|
241
|
-
let catalogName;
|
|
242
|
-
if (!supportsCatalogs) {
|
|
243
|
-
// we're trying to update the version of a package that has a catalog reference
|
|
244
|
-
// but Nx does not support catalogs for this package manager, we warn the user
|
|
245
|
-
// and update the dependencies directly to package.json to keep the existing
|
|
246
|
-
// behavior
|
|
247
|
-
devkit_exports_1.output.warn({
|
|
248
|
-
title: 'Nx does not support catalogs for this package manager',
|
|
249
|
-
bodyLines: [
|
|
250
|
-
'Dependencies will be added directly to package.json and might override catalog dependencies.',
|
|
251
|
-
],
|
|
252
|
-
});
|
|
253
|
-
// bail out early since we'll add the dependencies directly to package.json
|
|
254
|
-
return {
|
|
255
|
-
catalogUpdates: [],
|
|
256
|
-
directDependencies: filteredDependencies,
|
|
257
|
-
directDevDependencies: filteredDevDependencies,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
catalogName = existingCatalogDeps.get(packageName);
|
|
261
|
-
const catalogRef = catalogName ? `catalog:${catalogName}` : 'catalog:';
|
|
262
|
-
try {
|
|
263
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
264
|
-
const { isValid, error } = manager.validateCatalogReference(tree, packageName, catalogRef);
|
|
265
|
-
if (isValid) {
|
|
266
|
-
shouldUseCatalog = true;
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
devkit_exports_1.output.error({
|
|
270
|
-
title: 'Invalid catalog reference',
|
|
271
|
-
bodyLines: [
|
|
272
|
-
`Invalid catalog reference "${catalogRef}" for package "${packageName}".`,
|
|
273
|
-
...(error?.message ? [error.message] : []),
|
|
274
|
-
...(error?.suggestions || []),
|
|
275
|
-
],
|
|
276
|
-
});
|
|
277
|
-
throw new Error(`Could not update "${packageName}" to version "${version}". See above for more details.`);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
devkit_exports_1.output.error({
|
|
282
|
-
title: 'Could not update catalog dependency',
|
|
283
|
-
bodyLines: [
|
|
284
|
-
`Unexpected error while updating catalog reference "${catalogRef}" for package "${packageName}".`,
|
|
285
|
-
...(error?.message ? [error.message] : []),
|
|
286
|
-
...(error?.stack ? [error.stack] : []),
|
|
287
|
-
],
|
|
288
|
-
});
|
|
289
|
-
throw new Error(`Could not update "${packageName}" to version "${version}". See above for more details.`);
|
|
290
|
-
}
|
|
291
|
-
if (shouldUseCatalog) {
|
|
292
|
-
catalogUpdates.push({ packageName, version, catalogName });
|
|
293
|
-
// Remove from direct updates since this will be handled via catalog
|
|
294
|
-
delete directDependencies[packageName];
|
|
295
|
-
delete directDevDependencies[packageName];
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
return { catalogUpdates, directDependencies, directDevDependencies };
|
|
299
|
-
}
|
|
300
|
-
function writeCatalogDependencies(tree, catalogUpdates) {
|
|
301
|
-
if (!catalogUpdates.length) {
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
const manager = (0, catalog_1.getCatalogManager)(tree.root);
|
|
305
|
-
manager.updateCatalogVersions(tree, catalogUpdates);
|
|
306
|
-
}
|
|
307
|
-
function writeDirectDependencies(tree, packageJsonPath, dependencies, devDependencies) {
|
|
308
|
-
(0, devkit_exports_1.updateJson)(tree, packageJsonPath, (json) => {
|
|
309
|
-
json.dependencies = {
|
|
310
|
-
...(json.dependencies || {}),
|
|
311
|
-
...dependencies,
|
|
312
|
-
};
|
|
313
|
-
json.devDependencies = {
|
|
314
|
-
...(json.devDependencies || {}),
|
|
315
|
-
...devDependencies,
|
|
316
|
-
};
|
|
317
|
-
json.dependencies = sortObjectByKeys(json.dependencies);
|
|
318
|
-
json.devDependencies = sortObjectByKeys(json.devDependencies);
|
|
319
|
-
return json;
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
139
|
/**
|
|
323
140
|
* @returns The the incoming dependencies that are higher than the existing verions
|
|
324
141
|
**/
|
|
325
|
-
function removeLowerVersions(
|
|
142
|
+
function removeLowerVersions(incomingDeps, existingDeps) {
|
|
326
143
|
return Object.keys(incomingDeps).reduce((acc, d) => {
|
|
327
144
|
if (!existingDeps?.[d] ||
|
|
328
|
-
isIncomingVersionGreater(
|
|
145
|
+
isIncomingVersionGreater(incomingDeps[d], existingDeps[d])) {
|
|
329
146
|
acc[d] = incomingDeps[d];
|
|
330
147
|
}
|
|
331
148
|
return acc;
|
|
@@ -392,7 +209,7 @@ function sortObjectByKeys(obj) {
|
|
|
392
209
|
* Verifies whether the given packageJson dependencies require an update
|
|
393
210
|
* given the deps & devDeps passed in
|
|
394
211
|
*/
|
|
395
|
-
function requiresAddingOfPackages(
|
|
212
|
+
function requiresAddingOfPackages(packageJsonFile, deps, devDeps) {
|
|
396
213
|
let needsDepsUpdate = false;
|
|
397
214
|
let needsDevDepsUpdate = false;
|
|
398
215
|
packageJsonFile.dependencies = packageJsonFile.dependencies || {};
|
|
@@ -402,11 +219,11 @@ function requiresAddingOfPackages(tree, packageJsonFile, deps, devDeps, workspac
|
|
|
402
219
|
const incomingVersion = deps[entry];
|
|
403
220
|
if (packageJsonFile.dependencies[entry]) {
|
|
404
221
|
const existingVersion = packageJsonFile.dependencies[entry];
|
|
405
|
-
return isIncomingVersionGreater(
|
|
222
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
406
223
|
}
|
|
407
224
|
if (packageJsonFile.devDependencies[entry]) {
|
|
408
225
|
const existingVersion = packageJsonFile.devDependencies[entry];
|
|
409
|
-
return isIncomingVersionGreater(
|
|
226
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
410
227
|
}
|
|
411
228
|
return true;
|
|
412
229
|
});
|
|
@@ -416,11 +233,11 @@ function requiresAddingOfPackages(tree, packageJsonFile, deps, devDeps, workspac
|
|
|
416
233
|
const incomingVersion = devDeps[entry];
|
|
417
234
|
if (packageJsonFile.devDependencies[entry]) {
|
|
418
235
|
const existingVersion = packageJsonFile.devDependencies[entry];
|
|
419
|
-
return isIncomingVersionGreater(
|
|
236
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
420
237
|
}
|
|
421
238
|
if (packageJsonFile.dependencies[entry]) {
|
|
422
239
|
const existingVersion = packageJsonFile.dependencies[entry];
|
|
423
|
-
return isIncomingVersionGreater(
|
|
240
|
+
return isIncomingVersionGreater(incomingVersion, existingVersion);
|
|
424
241
|
}
|
|
425
242
|
return true;
|
|
426
243
|
});
|
|
@@ -514,10 +331,10 @@ function addToNodePath(dir) {
|
|
|
514
331
|
// Update the env variable.
|
|
515
332
|
process.env.NODE_PATH = paths.join(delimiter);
|
|
516
333
|
}
|
|
517
|
-
function
|
|
334
|
+
function getPackageVersion(pkg) {
|
|
518
335
|
return require((0, path_1.join)(pkg, 'package.json')).version;
|
|
519
336
|
}
|
|
520
337
|
/**
|
|
521
338
|
* @description The version of Nx used by the workspace. Returns null if no version is found.
|
|
522
339
|
*/
|
|
523
|
-
exports.NX_VERSION =
|
|
340
|
+
exports.NX_VERSION = getPackageVersion('nx');
|
package/src/utils/semver.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
import { type Tree } from 'nx/src/devkit-exports';
|
|
2
1
|
export declare function checkAndCleanWithSemver(pkgName: string, version: string): string;
|
|
3
|
-
export declare function checkAndCleanWithSemver(tree: Tree, pkgName: string, version: string): string;
|
|
4
2
|
//# sourceMappingURL=semver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../../../../packages/devkit/src/utils/semver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../../../../packages/devkit/src/utils/semver.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,CAkBR"}
|
package/src/utils/semver.js
CHANGED
|
@@ -1,38 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkAndCleanWithSemver = checkAndCleanWithSemver;
|
|
4
|
-
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
5
4
|
const semver_1 = require("semver");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const tree = typeof treeOrPkgName === 'string' ? undefined : treeOrPkgName;
|
|
9
|
-
const root = tree?.root ?? devkit_exports_1.workspaceRoot;
|
|
10
|
-
const pkgName = typeof treeOrPkgName === 'string' ? treeOrPkgName : pkgNameOrVersion;
|
|
11
|
-
let newVersion = typeof treeOrPkgName === 'string' ? pkgNameOrVersion : version;
|
|
12
|
-
const manager = (0, catalog_1.getCatalogManager)(root);
|
|
13
|
-
if (manager.isCatalogReference(newVersion)) {
|
|
14
|
-
const validation = tree
|
|
15
|
-
? manager.validateCatalogReference(tree, pkgName, newVersion)
|
|
16
|
-
: manager.validateCatalogReference(root, pkgName, newVersion);
|
|
17
|
-
if (!validation.isValid) {
|
|
18
|
-
throw new Error(`The catalog reference for ${pkgName} is invalid - (${newVersion})\n${(0, catalog_1.formatCatalogError)(validation.error)}`);
|
|
19
|
-
}
|
|
20
|
-
const resolvedVersion = tree
|
|
21
|
-
? manager.resolveCatalogReference(tree, pkgName, newVersion)
|
|
22
|
-
: manager.resolveCatalogReference(root, pkgName, newVersion);
|
|
23
|
-
if (!resolvedVersion) {
|
|
24
|
-
throw new Error(`Could not resolve catalog reference for package ${pkgName}@${newVersion}.`);
|
|
25
|
-
}
|
|
26
|
-
newVersion = resolvedVersion;
|
|
27
|
-
}
|
|
5
|
+
function checkAndCleanWithSemver(pkgName, version) {
|
|
6
|
+
let newVersion = version;
|
|
28
7
|
if ((0, semver_1.valid)(newVersion)) {
|
|
29
8
|
return newVersion;
|
|
30
9
|
}
|
|
31
|
-
if (
|
|
32
|
-
newVersion =
|
|
10
|
+
if (version.startsWith('~') || version.startsWith('^')) {
|
|
11
|
+
newVersion = version.substring(1);
|
|
33
12
|
}
|
|
34
13
|
if (!(0, semver_1.valid)(newVersion)) {
|
|
35
|
-
throw new Error(`The package.json lists a version of ${pkgName} that Nx is unable to validate - (${
|
|
14
|
+
throw new Error(`The package.json lists a version of ${pkgName} that Nx is unable to validate - (${version})`);
|
|
36
15
|
}
|
|
37
16
|
return newVersion;
|
|
38
17
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { CatalogError } from './types';
|
|
2
|
-
export declare class CatalogValidationError extends Error {
|
|
3
|
-
readonly catalogError: CatalogError;
|
|
4
|
-
constructor(catalogError: CatalogError, message?: string);
|
|
5
|
-
}
|
|
6
|
-
export declare class CatalogUnsupportedError extends Error {
|
|
7
|
-
readonly packageManager: string;
|
|
8
|
-
constructor(packageManager: string, operation: string);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,sBAAuB,SAAQ,KAAK;aACnB,YAAY,EAAE,YAAY;gBAA1B,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM;CAIzE;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aACpB,cAAc,EAAE,MAAM;gBAAtB,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAMtE"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CatalogUnsupportedError = exports.CatalogValidationError = void 0;
|
|
4
|
-
class CatalogValidationError extends Error {
|
|
5
|
-
constructor(catalogError, message) {
|
|
6
|
-
super(message || catalogError.message);
|
|
7
|
-
this.catalogError = catalogError;
|
|
8
|
-
this.name = 'CatalogValidationError';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.CatalogValidationError = CatalogValidationError;
|
|
12
|
-
class CatalogUnsupportedError extends Error {
|
|
13
|
-
constructor(packageManager, operation) {
|
|
14
|
-
super(`Tried to ${operation} but Nx doesn't support catalogs for the current package manager (${packageManager})`);
|
|
15
|
-
this.packageManager = packageManager;
|
|
16
|
-
this.name = 'CatalogUnsupportedError';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.CatalogUnsupportedError = CatalogUnsupportedError;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Tree } from 'nx/src/devkit-exports';
|
|
2
|
-
import { getCatalogManager } from './manager-factory';
|
|
3
|
-
import type { CatalogError } from './types';
|
|
4
|
-
import type { CatalogManager } from './manager';
|
|
5
|
-
export { getCatalogManager };
|
|
6
|
-
/**
|
|
7
|
-
* Detects which packages in a package.json use catalog references
|
|
8
|
-
* Returns Map of package name -> catalog name (undefined for default catalog)
|
|
9
|
-
*/
|
|
10
|
-
export declare function getCatalogDependenciesFromPackageJson(tree: Tree, packageJsonPath: string, manager: CatalogManager): Map<string, string | undefined>;
|
|
11
|
-
export declare function formatCatalogError(error: CatalogError): string;
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,cAAc,GACtB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAmCjC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAW9D"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getCatalogManager = void 0;
|
|
4
|
-
exports.getCatalogDependenciesFromPackageJson = getCatalogDependenciesFromPackageJson;
|
|
5
|
-
exports.formatCatalogError = formatCatalogError;
|
|
6
|
-
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
7
|
-
const manager_factory_1 = require("./manager-factory");
|
|
8
|
-
Object.defineProperty(exports, "getCatalogManager", { enumerable: true, get: function () { return manager_factory_1.getCatalogManager; } });
|
|
9
|
-
/**
|
|
10
|
-
* Detects which packages in a package.json use catalog references
|
|
11
|
-
* Returns Map of package name -> catalog name (undefined for default catalog)
|
|
12
|
-
*/
|
|
13
|
-
function getCatalogDependenciesFromPackageJson(tree, packageJsonPath, manager) {
|
|
14
|
-
const catalogDeps = new Map();
|
|
15
|
-
if (!tree.exists(packageJsonPath)) {
|
|
16
|
-
return catalogDeps;
|
|
17
|
-
}
|
|
18
|
-
if (!manager.supportsCatalogs()) {
|
|
19
|
-
return catalogDeps;
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const packageJson = (0, devkit_exports_1.readJson)(tree, packageJsonPath);
|
|
23
|
-
const allDependencies = {
|
|
24
|
-
...packageJson.dependencies,
|
|
25
|
-
...packageJson.devDependencies,
|
|
26
|
-
...packageJson.peerDependencies,
|
|
27
|
-
...packageJson.optionalDependencies,
|
|
28
|
-
};
|
|
29
|
-
for (const [packageName, version] of Object.entries(allDependencies || {})) {
|
|
30
|
-
if (manager.isCatalogReference(version)) {
|
|
31
|
-
const catalogRef = manager.parseCatalogReference(version);
|
|
32
|
-
if (catalogRef) {
|
|
33
|
-
catalogDeps.set(packageName, catalogRef.catalogName);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
// If we can't read the package.json, return empty map
|
|
40
|
-
}
|
|
41
|
-
return catalogDeps;
|
|
42
|
-
}
|
|
43
|
-
function formatCatalogError(error) {
|
|
44
|
-
let message = error.message;
|
|
45
|
-
if (error.suggestions && error.suggestions.length > 0) {
|
|
46
|
-
message += '\n\nSuggestions:';
|
|
47
|
-
error.suggestions.forEach((suggestion) => {
|
|
48
|
-
message += `\n • ${suggestion}`;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return message;
|
|
52
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { CatalogManager } from './manager';
|
|
2
|
-
/**
|
|
3
|
-
* Factory function to get the appropriate catalog manager based on the package manager
|
|
4
|
-
*/
|
|
5
|
-
export declare function getCatalogManager(workspaceRoot: string): CatalogManager;
|
|
6
|
-
//# sourceMappingURL=manager-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager-factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/manager-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAShD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAevE"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getCatalogManager = getCatalogManager;
|
|
4
|
-
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
5
|
-
const pnpm_manager_1 = require("./pnpm-manager");
|
|
6
|
-
const unsupported_manager_1 = require("./unsupported-manager");
|
|
7
|
-
/**
|
|
8
|
-
* Factory function to get the appropriate catalog manager based on the package manager
|
|
9
|
-
*/
|
|
10
|
-
function getCatalogManager(workspaceRoot) {
|
|
11
|
-
const packageManager = (0, devkit_exports_1.detectPackageManager)(workspaceRoot);
|
|
12
|
-
switch (packageManager) {
|
|
13
|
-
case 'pnpm':
|
|
14
|
-
return new pnpm_manager_1.PnpmCatalogManager();
|
|
15
|
-
case 'npm':
|
|
16
|
-
return new unsupported_manager_1.NpmCatalogManager();
|
|
17
|
-
case 'yarn':
|
|
18
|
-
return new unsupported_manager_1.YarnCatalogManager();
|
|
19
|
-
case 'bun':
|
|
20
|
-
return new unsupported_manager_1.BunCatalogManager();
|
|
21
|
-
default:
|
|
22
|
-
return new unsupported_manager_1.UnknownCatalogManager();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { Tree } from 'nx/src/devkit-exports';
|
|
2
|
-
import type { PnpmWorkspaceYaml } from 'nx/src/utils/pnpm-workspace';
|
|
3
|
-
import type { CatalogError, CatalogReference } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Interface for catalog managers that handle package manager-specific catalog implementations.
|
|
6
|
-
*/
|
|
7
|
-
export interface CatalogManager {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
/**
|
|
10
|
-
* Check if this package manager supports catalogs.
|
|
11
|
-
*/
|
|
12
|
-
supportsCatalogs(): boolean;
|
|
13
|
-
isCatalogReference(version: string): boolean;
|
|
14
|
-
parseCatalogReference(version: string): CatalogReference | null;
|
|
15
|
-
/**
|
|
16
|
-
* Get catalog definitions from the workspace.
|
|
17
|
-
*/
|
|
18
|
-
getCatalogDefinitions(workspaceRoot: string): PnpmWorkspaceYaml | null;
|
|
19
|
-
getCatalogDefinitions(tree: Tree): PnpmWorkspaceYaml | null;
|
|
20
|
-
/**
|
|
21
|
-
* Resolve a catalog reference to an actual version.
|
|
22
|
-
*/
|
|
23
|
-
resolveCatalogReference(workspaceRoot: string, packageName: string, version: string): string | null;
|
|
24
|
-
resolveCatalogReference(tree: Tree, packageName: string, version: string): string | null;
|
|
25
|
-
/**
|
|
26
|
-
* Check that a catalog reference is valid.
|
|
27
|
-
*/
|
|
28
|
-
validateCatalogReference(workspaceRoot: string, packageName: string, version: string): {
|
|
29
|
-
isValid: boolean;
|
|
30
|
-
error?: CatalogError;
|
|
31
|
-
};
|
|
32
|
-
validateCatalogReference(tree: Tree, packageName: string, version: string): {
|
|
33
|
-
isValid: boolean;
|
|
34
|
-
error?: CatalogError;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Updates catalog definitions for specified packages in their respective catalogs.
|
|
38
|
-
*/
|
|
39
|
-
updateCatalogVersions(tree: Tree, updates: Array<{
|
|
40
|
-
packageName: string;
|
|
41
|
-
version: string;
|
|
42
|
-
catalogName?: string;
|
|
43
|
-
}>): void;
|
|
44
|
-
updateCatalogVersions(workspaceRoot: string, updates: Array<{
|
|
45
|
-
packageName: string;
|
|
46
|
-
version: string;
|
|
47
|
-
catalogName?: string;
|
|
48
|
-
}>): void;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC;IAE5B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACvE,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,uBAAuB,CACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAAC;IACjB,uBAAuB,CACrB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAAC;IAEjB;;OAEG;IACH,wBAAwB,CACtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAC9C,wBAAwB,CACtB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAE9C;;OAEG;IACH,qBAAqB,CACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI,CAAC;IACR,qBAAqB,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI,CAAC;CACT"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type Tree } from 'nx/src/devkit-exports';
|
|
2
|
-
import type { PnpmWorkspaceYaml } from 'nx/src/utils/pnpm-workspace';
|
|
3
|
-
import type { CatalogManager } from './manager';
|
|
4
|
-
import { type CatalogError, type CatalogReference } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* PNPM-specific catalog manager implementation
|
|
7
|
-
*/
|
|
8
|
-
export declare class PnpmCatalogManager implements CatalogManager {
|
|
9
|
-
readonly name = "pnpm";
|
|
10
|
-
readonly catalogProtocol = "catalog:";
|
|
11
|
-
supportsCatalogs(): boolean;
|
|
12
|
-
isCatalogReference(version: string): boolean;
|
|
13
|
-
parseCatalogReference(version: string): CatalogReference | null;
|
|
14
|
-
getCatalogDefinitions(treeOrRoot: Tree | string): PnpmWorkspaceYaml | null;
|
|
15
|
-
resolveCatalogReference(treeOrRoot: Tree | string, packageName: string, version: string): string | null;
|
|
16
|
-
validateCatalogReference(treeOrRoot: Tree | string, packageName: string, version: string): {
|
|
17
|
-
isValid: boolean;
|
|
18
|
-
error?: CatalogError;
|
|
19
|
-
};
|
|
20
|
-
updateCatalogVersions(treeOrRoot: Tree | string, updates: Array<{
|
|
21
|
-
packageName: string;
|
|
22
|
-
version: string;
|
|
23
|
-
catalogName?: string;
|
|
24
|
-
}>): void;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=pnpm-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pnpm-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/pnpm-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,eAAe,cAAc;IAEtC,gBAAgB,IAAI,OAAO;IAI3B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI5C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAa/D,qBAAqB,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAe1E,uBAAuB,CACrB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI;IAqBhB,wBAAwB,CACtB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE;IAqH7C,qBAAqB,CACnB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI;CAuER"}
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PnpmCatalogManager = void 0;
|
|
4
|
-
const js_yaml_1 = require("@zkochan/js-yaml");
|
|
5
|
-
const node_fs_1 = require("node:fs");
|
|
6
|
-
const node_path_1 = require("node:path");
|
|
7
|
-
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
8
|
-
const devkit_internals_1 = require("nx/src/devkit-internals");
|
|
9
|
-
const types_1 = require("./types");
|
|
10
|
-
/**
|
|
11
|
-
* PNPM-specific catalog manager implementation
|
|
12
|
-
*/
|
|
13
|
-
class PnpmCatalogManager {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.name = 'pnpm';
|
|
16
|
-
this.catalogProtocol = 'catalog:';
|
|
17
|
-
}
|
|
18
|
-
supportsCatalogs() {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
isCatalogReference(version) {
|
|
22
|
-
return version.startsWith(this.catalogProtocol);
|
|
23
|
-
}
|
|
24
|
-
parseCatalogReference(version) {
|
|
25
|
-
if (!this.isCatalogReference(version)) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
const catalogName = version.substring(this.catalogProtocol.length);
|
|
29
|
-
return {
|
|
30
|
-
catalogName: catalogName || undefined,
|
|
31
|
-
isDefaultCatalog: catalogName === '',
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
getCatalogDefinitions(treeOrRoot) {
|
|
35
|
-
if (typeof treeOrRoot === 'string') {
|
|
36
|
-
const pnpmWorkspacePath = (0, node_path_1.join)(treeOrRoot, 'pnpm-workspace.yaml');
|
|
37
|
-
if (!(0, node_fs_1.existsSync)(pnpmWorkspacePath)) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return readYamlFileFromFs(pnpmWorkspacePath);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
if (!treeOrRoot.exists('pnpm-workspace.yaml')) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
return readYamlFileFromTree(treeOrRoot, 'pnpm-workspace.yaml');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
resolveCatalogReference(treeOrRoot, packageName, version) {
|
|
50
|
-
const catalogRef = this.parseCatalogReference(version);
|
|
51
|
-
if (!catalogRef) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const workspaceConfig = this.getCatalogDefinitions(treeOrRoot);
|
|
55
|
-
if (!workspaceConfig) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
let catalogToUse;
|
|
59
|
-
if (catalogRef.isDefaultCatalog) {
|
|
60
|
-
catalogToUse = workspaceConfig.catalog;
|
|
61
|
-
}
|
|
62
|
-
else if (catalogRef.catalogName) {
|
|
63
|
-
catalogToUse = workspaceConfig.catalogs?.[catalogRef.catalogName];
|
|
64
|
-
}
|
|
65
|
-
return catalogToUse?.[packageName] || null;
|
|
66
|
-
}
|
|
67
|
-
validateCatalogReference(treeOrRoot, packageName, version) {
|
|
68
|
-
const catalogRef = this.parseCatalogReference(version);
|
|
69
|
-
if (!catalogRef) {
|
|
70
|
-
return {
|
|
71
|
-
isValid: false,
|
|
72
|
-
error: {
|
|
73
|
-
type: types_1.CatalogErrorType.INVALID_SYNTAX,
|
|
74
|
-
message: `Invalid catalog reference syntax: "${version}". Expected format: "catalog:" or "catalog:name"`,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
const workspaceConfig = this.getCatalogDefinitions(treeOrRoot);
|
|
79
|
-
if (!workspaceConfig) {
|
|
80
|
-
return {
|
|
81
|
-
isValid: false,
|
|
82
|
-
error: {
|
|
83
|
-
type: types_1.CatalogErrorType.WORKSPACE_NOT_FOUND,
|
|
84
|
-
message: 'No pnpm-workspace.yaml found in workspace root',
|
|
85
|
-
suggestions: [
|
|
86
|
-
'Create a pnpm-workspace.yaml file in your workspace root',
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
let catalogToUse;
|
|
92
|
-
if (catalogRef.isDefaultCatalog) {
|
|
93
|
-
catalogToUse = workspaceConfig.catalog;
|
|
94
|
-
if (!catalogToUse) {
|
|
95
|
-
const availableCatalogs = Object.keys(workspaceConfig.catalogs || {});
|
|
96
|
-
const suggestions = [
|
|
97
|
-
'Define a default catalog in pnpm-workspace.yaml under the "catalog" key',
|
|
98
|
-
];
|
|
99
|
-
if (availableCatalogs.length > 0) {
|
|
100
|
-
suggestions.push(`Or select from the available named catalogs: ${availableCatalogs
|
|
101
|
-
.map((c) => `"catalog:${c}"`)
|
|
102
|
-
.join(', ')}`);
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
isValid: false,
|
|
106
|
-
error: {
|
|
107
|
-
type: types_1.CatalogErrorType.CATALOG_NOT_FOUND,
|
|
108
|
-
message: 'No default catalog defined in pnpm-workspace.yaml',
|
|
109
|
-
suggestions,
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
else if (catalogRef.catalogName) {
|
|
115
|
-
catalogToUse = workspaceConfig.catalogs?.[catalogRef.catalogName];
|
|
116
|
-
if (!catalogToUse) {
|
|
117
|
-
const availableCatalogs = Object.keys(workspaceConfig.catalogs || {});
|
|
118
|
-
const hasDefaultCatalog = !!workspaceConfig.catalog;
|
|
119
|
-
const suggestions = [
|
|
120
|
-
'Define the catalog in pnpm-workspace.yaml under the "catalogs" key',
|
|
121
|
-
];
|
|
122
|
-
if (availableCatalogs.length > 0) {
|
|
123
|
-
suggestions.push(`Or select from the available named catalogs: ${availableCatalogs
|
|
124
|
-
.map((c) => `"catalog:${c}"`)
|
|
125
|
-
.join(', ')}`);
|
|
126
|
-
}
|
|
127
|
-
if (hasDefaultCatalog) {
|
|
128
|
-
suggestions.push('Or use the default catalog: "catalog:"');
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
isValid: false,
|
|
132
|
-
error: {
|
|
133
|
-
type: types_1.CatalogErrorType.CATALOG_NOT_FOUND,
|
|
134
|
-
message: `Catalog "${catalogRef.catalogName}" not found in pnpm-workspace.yaml`,
|
|
135
|
-
catalogName: catalogRef.catalogName,
|
|
136
|
-
suggestions,
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
if (!catalogToUse[packageName]) {
|
|
142
|
-
const catalogName = catalogRef.isDefaultCatalog
|
|
143
|
-
? 'default catalog'
|
|
144
|
-
: `catalog '${catalogRef.catalogName}'`;
|
|
145
|
-
const availablePackages = Object.keys(catalogToUse);
|
|
146
|
-
const suggestions = [
|
|
147
|
-
`Add "${packageName}" to ${catalogName} in pnpm-workspace.yaml`,
|
|
148
|
-
];
|
|
149
|
-
if (availablePackages.length > 0) {
|
|
150
|
-
suggestions.push(`Or select from the available packages in ${catalogName}: ${availablePackages
|
|
151
|
-
.map((p) => `"${p}"`)
|
|
152
|
-
.join(', ')}`);
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
isValid: false,
|
|
156
|
-
error: {
|
|
157
|
-
type: types_1.CatalogErrorType.PACKAGE_NOT_FOUND,
|
|
158
|
-
message: `Package "${packageName}" not found in ${catalogName}`,
|
|
159
|
-
packageName,
|
|
160
|
-
catalogName: catalogRef.catalogName,
|
|
161
|
-
suggestions,
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
return { isValid: true };
|
|
166
|
-
}
|
|
167
|
-
updateCatalogVersions(treeOrRoot, updates) {
|
|
168
|
-
let checkExists;
|
|
169
|
-
let readYaml;
|
|
170
|
-
let writeYaml;
|
|
171
|
-
if (typeof treeOrRoot === 'string') {
|
|
172
|
-
const workspaceYamlPath = (0, node_path_1.join)(treeOrRoot, 'pnpm-workspace.yaml');
|
|
173
|
-
checkExists = () => (0, node_fs_1.existsSync)(workspaceYamlPath);
|
|
174
|
-
readYaml = () => (0, node_fs_1.readFileSync)(workspaceYamlPath, 'utf-8');
|
|
175
|
-
writeYaml = (content) => (0, node_fs_1.writeFileSync)(workspaceYamlPath, content, 'utf-8');
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
checkExists = () => treeOrRoot.exists('pnpm-workspace.yaml');
|
|
179
|
-
readYaml = () => treeOrRoot.read('pnpm-workspace.yaml', 'utf-8');
|
|
180
|
-
writeYaml = (content) => treeOrRoot.write('pnpm-workspace.yaml', content);
|
|
181
|
-
}
|
|
182
|
-
if (!checkExists()) {
|
|
183
|
-
devkit_exports_1.output.warn({
|
|
184
|
-
title: 'No pnpm-workspace.yaml found',
|
|
185
|
-
bodyLines: [
|
|
186
|
-
'Cannot update catalog versions without a pnpm-workspace.yaml file.',
|
|
187
|
-
'Create a pnpm-workspace.yaml file to use catalogs.',
|
|
188
|
-
],
|
|
189
|
-
});
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
try {
|
|
193
|
-
const workspaceContent = readYaml();
|
|
194
|
-
const workspaceData = (0, js_yaml_1.load)(workspaceContent) || {};
|
|
195
|
-
let hasChanges = false;
|
|
196
|
-
for (const update of updates) {
|
|
197
|
-
const { packageName, version, catalogName } = update;
|
|
198
|
-
let targetCatalog;
|
|
199
|
-
if (catalogName) {
|
|
200
|
-
// Named catalog
|
|
201
|
-
workspaceData.catalogs ??= {};
|
|
202
|
-
workspaceData.catalogs[catalogName] ??= {};
|
|
203
|
-
targetCatalog = workspaceData.catalogs[catalogName];
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
// Default catalog
|
|
207
|
-
workspaceData.catalog ??= {};
|
|
208
|
-
targetCatalog = workspaceData.catalog;
|
|
209
|
-
}
|
|
210
|
-
if (targetCatalog[packageName] !== version) {
|
|
211
|
-
targetCatalog[packageName] = version;
|
|
212
|
-
hasChanges = true;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (hasChanges) {
|
|
216
|
-
writeYaml((0, js_yaml_1.dump)(workspaceData, {
|
|
217
|
-
indent: 2,
|
|
218
|
-
quotingType: '"',
|
|
219
|
-
forceQuotes: true,
|
|
220
|
-
}));
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
devkit_exports_1.output.error({
|
|
225
|
-
title: 'Failed to update catalog versions',
|
|
226
|
-
bodyLines: [error instanceof Error ? error.message : String(error)],
|
|
227
|
-
});
|
|
228
|
-
throw error;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
exports.PnpmCatalogManager = PnpmCatalogManager;
|
|
233
|
-
function readYamlFileFromFs(path) {
|
|
234
|
-
try {
|
|
235
|
-
return (0, devkit_internals_1.readYamlFile)(path);
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
devkit_exports_1.output.warn({
|
|
239
|
-
title: 'Unable to parse pnpm-workspace.yaml',
|
|
240
|
-
bodyLines: [error.toString()],
|
|
241
|
-
});
|
|
242
|
-
return null;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
function readYamlFileFromTree(tree, path) {
|
|
246
|
-
const content = tree.read(path, 'utf-8');
|
|
247
|
-
const { load } = require('@zkochan/js-yaml');
|
|
248
|
-
try {
|
|
249
|
-
return load(content, { filename: path });
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
devkit_exports_1.output.warn({
|
|
253
|
-
title: 'Unable to parse pnpm-workspace.yaml',
|
|
254
|
-
bodyLines: [error.toString()],
|
|
255
|
-
});
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface CatalogReference {
|
|
2
|
-
catalogName?: string;
|
|
3
|
-
isDefaultCatalog: boolean;
|
|
4
|
-
}
|
|
5
|
-
export declare enum CatalogErrorType {
|
|
6
|
-
INVALID_SYNTAX = "INVALID_SYNTAX",
|
|
7
|
-
WORKSPACE_NOT_FOUND = "WORKSPACE_NOT_FOUND",
|
|
8
|
-
CATALOG_NOT_FOUND = "CATALOG_NOT_FOUND",
|
|
9
|
-
PACKAGE_NOT_FOUND = "PACKAGE_NOT_FOUND"
|
|
10
|
-
}
|
|
11
|
-
export interface CatalogError {
|
|
12
|
-
type: CatalogErrorType;
|
|
13
|
-
message: string;
|
|
14
|
-
catalogName?: string;
|
|
15
|
-
packageName?: string;
|
|
16
|
-
suggestions?: string[];
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,oBAAY,gBAAgB;IAC1B,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CatalogErrorType = void 0;
|
|
4
|
-
var CatalogErrorType;
|
|
5
|
-
(function (CatalogErrorType) {
|
|
6
|
-
CatalogErrorType["INVALID_SYNTAX"] = "INVALID_SYNTAX";
|
|
7
|
-
CatalogErrorType["WORKSPACE_NOT_FOUND"] = "WORKSPACE_NOT_FOUND";
|
|
8
|
-
CatalogErrorType["CATALOG_NOT_FOUND"] = "CATALOG_NOT_FOUND";
|
|
9
|
-
CatalogErrorType["PACKAGE_NOT_FOUND"] = "PACKAGE_NOT_FOUND";
|
|
10
|
-
})(CatalogErrorType || (exports.CatalogErrorType = CatalogErrorType = {}));
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { Tree } from 'nx/src/devkit-exports';
|
|
2
|
-
import type { PnpmWorkspaceYaml } from 'nx/src/utils/pnpm-workspace';
|
|
3
|
-
import type { CatalogManager } from './manager';
|
|
4
|
-
import type { CatalogError, CatalogReference } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Base catalog manager for package managers that don't support catalogs
|
|
7
|
-
*/
|
|
8
|
-
declare abstract class UnsupportedCatalogManager implements CatalogManager {
|
|
9
|
-
abstract readonly name: string;
|
|
10
|
-
supportsCatalogs(): boolean;
|
|
11
|
-
isCatalogReference(_version: string): boolean;
|
|
12
|
-
parseCatalogReference(_version: string): CatalogReference | null;
|
|
13
|
-
getCatalogDefinitions(_treeOrRoot: Tree | string): PnpmWorkspaceYaml | null;
|
|
14
|
-
resolveCatalogReference(_treeOrRoot: Tree | string, _packageName: string, _version: string): string | null;
|
|
15
|
-
validateCatalogReference(_treeOrRoot: Tree | string, _packageName: string, _version: string): {
|
|
16
|
-
isValid: boolean;
|
|
17
|
-
error?: CatalogError;
|
|
18
|
-
};
|
|
19
|
-
updateCatalogVersions(_treeOrRoot: Tree | string, _updates: Array<{
|
|
20
|
-
packageName: string;
|
|
21
|
-
version: string;
|
|
22
|
-
catalogName?: string;
|
|
23
|
-
}>): void;
|
|
24
|
-
}
|
|
25
|
-
export declare class YarnCatalogManager extends UnsupportedCatalogManager {
|
|
26
|
-
readonly name = "yarn";
|
|
27
|
-
}
|
|
28
|
-
export declare class BunCatalogManager extends UnsupportedCatalogManager {
|
|
29
|
-
readonly name = "bun";
|
|
30
|
-
}
|
|
31
|
-
export declare class NpmCatalogManager extends UnsupportedCatalogManager {
|
|
32
|
-
readonly name = "npm";
|
|
33
|
-
}
|
|
34
|
-
export declare class UnknownCatalogManager extends UnsupportedCatalogManager {
|
|
35
|
-
readonly name = "unknown";
|
|
36
|
-
}
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=unsupported-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unsupported-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/devkit/src/utils/catalog/unsupported-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,uBAAe,yBAA0B,YAAW,cAAc;IAChE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,gBAAgB,IAAI,OAAO;IAI3B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIhE,qBAAqB,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAI3E,uBAAuB,CACrB,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI;IAIhB,wBAAwB,CACtB,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE;IAI7C,qBAAqB,CACnB,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,QAAQ,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI;CAGR;AAED,qBAAa,kBAAmB,SAAQ,yBAAyB;IAC/D,QAAQ,CAAC,IAAI,UAAU;CACxB;AAED,qBAAa,iBAAkB,SAAQ,yBAAyB;IAC9D,QAAQ,CAAC,IAAI,SAAS;CACvB;AAED,qBAAa,iBAAkB,SAAQ,yBAAyB;IAC9D,QAAQ,CAAC,IAAI,SAAS;CACvB;AAED,qBAAa,qBAAsB,SAAQ,yBAAyB;IAClE,QAAQ,CAAC,IAAI,aAAa;CAC3B"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnknownCatalogManager = exports.NpmCatalogManager = exports.BunCatalogManager = exports.YarnCatalogManager = void 0;
|
|
4
|
-
const errors_1 = require("./errors");
|
|
5
|
-
/**
|
|
6
|
-
* Base catalog manager for package managers that don't support catalogs
|
|
7
|
-
*/
|
|
8
|
-
class UnsupportedCatalogManager {
|
|
9
|
-
supportsCatalogs() {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
isCatalogReference(_version) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
parseCatalogReference(_version) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
getCatalogDefinitions(_treeOrRoot) {
|
|
19
|
-
throw new errors_1.CatalogUnsupportedError(this.name, 'get catalog definitions');
|
|
20
|
-
}
|
|
21
|
-
resolveCatalogReference(_treeOrRoot, _packageName, _version) {
|
|
22
|
-
throw new errors_1.CatalogUnsupportedError(this.name, 'resolve catalog references');
|
|
23
|
-
}
|
|
24
|
-
validateCatalogReference(_treeOrRoot, _packageName, _version) {
|
|
25
|
-
throw new errors_1.CatalogUnsupportedError(this.name, 'validate catalog references');
|
|
26
|
-
}
|
|
27
|
-
updateCatalogVersions(_treeOrRoot, _updates) {
|
|
28
|
-
throw new errors_1.CatalogUnsupportedError(this.name, 'update catalog versions');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
class YarnCatalogManager extends UnsupportedCatalogManager {
|
|
32
|
-
constructor() {
|
|
33
|
-
super(...arguments);
|
|
34
|
-
this.name = 'yarn';
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.YarnCatalogManager = YarnCatalogManager;
|
|
38
|
-
class BunCatalogManager extends UnsupportedCatalogManager {
|
|
39
|
-
constructor() {
|
|
40
|
-
super(...arguments);
|
|
41
|
-
this.name = 'bun';
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.BunCatalogManager = BunCatalogManager;
|
|
45
|
-
class NpmCatalogManager extends UnsupportedCatalogManager {
|
|
46
|
-
constructor() {
|
|
47
|
-
super(...arguments);
|
|
48
|
-
this.name = 'npm';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.NpmCatalogManager = NpmCatalogManager;
|
|
52
|
-
class UnknownCatalogManager extends UnsupportedCatalogManager {
|
|
53
|
-
constructor() {
|
|
54
|
-
super(...arguments);
|
|
55
|
-
this.name = 'unknown';
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.UnknownCatalogManager = UnknownCatalogManager;
|