nx 19.5.0-canary.20240706-4ae16b3 → 19.5.0-canary.20240710-2b7b523
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +12 -12
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/project-graph/plugins/isolation/messaging.d.ts +1 -1
- package/src/project-graph/plugins/isolation/plugin-worker.js +5 -1
- package/src/project-graph/utils/project-configuration-utils.js +3 -1
- package/src/tasks-runner/create-task-graph.d.ts +2 -1
- package/src/tasks-runner/create-task-graph.js +14 -30
- package/src/tasks-runner/utils.d.ts +15 -2
- package/src/tasks-runner/utils.js +88 -24
- package/src/utils/find-matching-projects.d.ts +4 -0
- package/src/utils/find-matching-projects.js +7 -4
- package/src/utils/serializable-error.js +6 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "19.5.0-canary.
|
3
|
+
"version": "19.5.0-canary.20240710-2b7b523",
|
4
4
|
"private": false,
|
5
5
|
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
|
6
6
|
"repository": {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"yargs-parser": "21.1.1",
|
72
72
|
"node-machine-id": "1.1.12",
|
73
73
|
"ora": "5.3.0",
|
74
|
-
"@nrwl/tao": "19.5.0-canary.
|
74
|
+
"@nrwl/tao": "19.5.0-canary.20240710-2b7b523"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
77
|
"@swc-node/register": "^1.8.0",
|
@@ -86,16 +86,16 @@
|
|
86
86
|
}
|
87
87
|
},
|
88
88
|
"optionalDependencies": {
|
89
|
-
"@nx/nx-darwin-x64": "19.5.0-canary.
|
90
|
-
"@nx/nx-darwin-arm64": "19.5.0-canary.
|
91
|
-
"@nx/nx-linux-x64-gnu": "19.5.0-canary.
|
92
|
-
"@nx/nx-linux-x64-musl": "19.5.0-canary.
|
93
|
-
"@nx/nx-win32-x64-msvc": "19.5.0-canary.
|
94
|
-
"@nx/nx-linux-arm64-gnu": "19.5.0-canary.
|
95
|
-
"@nx/nx-linux-arm64-musl": "19.5.0-canary.
|
96
|
-
"@nx/nx-linux-arm-gnueabihf": "19.5.0-canary.
|
97
|
-
"@nx/nx-win32-arm64-msvc": "19.5.0-canary.
|
98
|
-
"@nx/nx-freebsd-x64": "19.5.0-canary.
|
89
|
+
"@nx/nx-darwin-x64": "19.5.0-canary.20240710-2b7b523",
|
90
|
+
"@nx/nx-darwin-arm64": "19.5.0-canary.20240710-2b7b523",
|
91
|
+
"@nx/nx-linux-x64-gnu": "19.5.0-canary.20240710-2b7b523",
|
92
|
+
"@nx/nx-linux-x64-musl": "19.5.0-canary.20240710-2b7b523",
|
93
|
+
"@nx/nx-win32-x64-msvc": "19.5.0-canary.20240710-2b7b523",
|
94
|
+
"@nx/nx-linux-arm64-gnu": "19.5.0-canary.20240710-2b7b523",
|
95
|
+
"@nx/nx-linux-arm64-musl": "19.5.0-canary.20240710-2b7b523",
|
96
|
+
"@nx/nx-linux-arm-gnueabihf": "19.5.0-canary.20240710-2b7b523",
|
97
|
+
"@nx/nx-win32-arm64-msvc": "19.5.0-canary.20240710-2b7b523",
|
98
|
+
"@nx/nx-freebsd-x64": "19.5.0-canary.20240710-2b7b523"
|
99
99
|
},
|
100
100
|
"nx-migrations": {
|
101
101
|
"migrations": "./migrations.json",
|
Binary file
|
@@ -117,7 +117,11 @@ const server = (0, net_1.createServer)((socket) => {
|
|
117
117
|
catch (e) {
|
118
118
|
return {
|
119
119
|
type: 'createMetadataResult',
|
120
|
-
payload: {
|
120
|
+
payload: {
|
121
|
+
success: false,
|
122
|
+
error: (0, serializable_error_1.createSerializableError)(e),
|
123
|
+
tx,
|
124
|
+
},
|
121
125
|
};
|
122
126
|
}
|
123
127
|
},
|
@@ -243,8 +243,10 @@ plugins) {
|
|
243
243
|
else {
|
244
244
|
errorBodyLines.push(` - ${e.message}`);
|
245
245
|
}
|
246
|
+
const innerStackTrace = ' ' + e.stack.split('\n').join('\n ');
|
247
|
+
errorBodyLines.push(innerStackTrace);
|
246
248
|
}
|
247
|
-
error.
|
249
|
+
error.stack = errorBodyLines.join('\n');
|
248
250
|
// This represents a single plugin erroring out with a hard error.
|
249
251
|
errors.push(error);
|
250
252
|
// The plugin didn't return partial results, so we return an empty array.
|
@@ -11,10 +11,11 @@ export declare class ProcessTasks {
|
|
11
11
|
readonly dependencies: {
|
12
12
|
[k: string]: string[];
|
13
13
|
};
|
14
|
+
private readonly allTargetNames;
|
14
15
|
constructor(extraTargetDependencies: TargetDependencies, projectGraph: ProjectGraph);
|
15
16
|
processTasks(projectNames: string[], targets: string[], configuration: string, overrides: Object, excludeTaskDependencies: boolean): string[];
|
16
17
|
processTask(task: Task, projectUsedToDeriveDependencies: string, configuration: string, overrides: Object): void;
|
17
|
-
private
|
18
|
+
private processTasksForMultipleProjects;
|
18
19
|
private processTasksForSingleProject;
|
19
20
|
private processTasksForDependencies;
|
20
21
|
createTask(id: string, project: ProjectGraphProjectNode, target: string, resolvedConfiguration: string | undefined, overrides: Object): Task;
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mapTargetDefaultsToDependencies = exports.createTaskGraph = exports.ProcessTasks = void 0;
|
4
4
|
const utils_1 = require("./utils");
|
5
5
|
const project_graph_utils_1 = require("../utils/project-graph-utils");
|
6
|
-
const find_matching_projects_1 = require("../utils/find-matching-projects");
|
7
6
|
const output_1 = require("../utils/output");
|
8
7
|
class ProcessTasks {
|
9
8
|
constructor(extraTargetDependencies, projectGraph) {
|
@@ -12,6 +11,14 @@ class ProcessTasks {
|
|
12
11
|
this.seen = new Set();
|
13
12
|
this.tasks = {};
|
14
13
|
this.dependencies = {};
|
14
|
+
const allTargetNames = new Set();
|
15
|
+
for (const projectName in projectGraph.nodes) {
|
16
|
+
const project = projectGraph.nodes[projectName];
|
17
|
+
for (const targetName in project.data.targets ?? {}) {
|
18
|
+
allTargetNames.add(targetName);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
this.allTargetNames = Array.from(allTargetNames);
|
15
22
|
}
|
16
23
|
processTasks(projectNames, targets, configuration, overrides, excludeTaskDependencies) {
|
17
24
|
for (const projectName of projectNames) {
|
@@ -58,32 +65,13 @@ class ProcessTasks {
|
|
58
65
|
return;
|
59
66
|
}
|
60
67
|
this.seen.add(seenKey);
|
61
|
-
const dependencyConfigs = (0, utils_1.getDependencyConfigs)({ project: task.target.project, target: task.target.target }, this.extraTargetDependencies, this.projectGraph);
|
68
|
+
const dependencyConfigs = (0, utils_1.getDependencyConfigs)({ project: task.target.project, target: task.target.target }, this.extraTargetDependencies, this.projectGraph, this.allTargetNames);
|
62
69
|
for (const dependencyConfig of dependencyConfigs) {
|
63
70
|
const taskOverrides = dependencyConfig.params === 'forward'
|
64
71
|
? overrides
|
65
72
|
: { __overrides_unparsed__: [] };
|
66
73
|
if (dependencyConfig.projects) {
|
67
|
-
|
68
|
-
// Lerna uses `dependencies` in `prepNxOptions`, so we need to maintain
|
69
|
-
// support for it until lerna can be updated to use the syntax.
|
70
|
-
//
|
71
|
-
// This should have been removed in v17, but the updates to lerna had not
|
72
|
-
// been made yet.
|
73
|
-
//
|
74
|
-
// TODO(@agentender): Remove this part in v20
|
75
|
-
if (typeof dependencyConfig.projects === 'string') {
|
76
|
-
if (dependencyConfig.projects === 'self') {
|
77
|
-
this.processTasksForSingleProject(task, task.target.project, dependencyConfig, configuration, taskOverrides, overrides);
|
78
|
-
continue;
|
79
|
-
}
|
80
|
-
else if (dependencyConfig.projects === 'dependencies') {
|
81
|
-
this.processTasksForDependencies(projectUsedToDeriveDependencies, dependencyConfig, configuration, task, taskOverrides, overrides);
|
82
|
-
continue;
|
83
|
-
}
|
84
|
-
}
|
85
|
-
/** LERNA SUPPORT END - Remove in v17 */
|
86
|
-
this.processTasksForMatchingProjects(dependencyConfig, configuration, task, taskOverrides, overrides);
|
74
|
+
this.processTasksForMultipleProjects(dependencyConfig, configuration, task, taskOverrides, overrides);
|
87
75
|
}
|
88
76
|
else if (dependencyConfig.dependencies) {
|
89
77
|
this.processTasksForDependencies(projectUsedToDeriveDependencies, dependencyConfig, configuration, task, taskOverrides, overrides);
|
@@ -93,20 +81,16 @@ class ProcessTasks {
|
|
93
81
|
}
|
94
82
|
}
|
95
83
|
}
|
96
|
-
|
97
|
-
|
98
|
-
? [dependencyConfig.projects]
|
99
|
-
: dependencyConfig.projects;
|
100
|
-
const matchingProjects = (0, find_matching_projects_1.findMatchingProjects)(targetProjectSpecifiers, this.projectGraph.nodes);
|
101
|
-
if (matchingProjects.length === 0) {
|
84
|
+
processTasksForMultipleProjects(dependencyConfig, configuration, task, taskOverrides, overrides) {
|
85
|
+
if (dependencyConfig.projects.length === 0) {
|
102
86
|
output_1.output.warn({
|
103
87
|
title: `\`dependsOn\` is misconfigured for ${task.target.project}:${task.target.target}`,
|
104
88
|
bodyLines: [
|
105
|
-
`Project patterns "${
|
89
|
+
`Project patterns "${dependencyConfig.projects}" does not match any projects.`,
|
106
90
|
],
|
107
91
|
});
|
108
92
|
}
|
109
|
-
for (const projectName of
|
93
|
+
for (const projectName of dependencyConfig.projects) {
|
110
94
|
this.processTasksForSingleProject(task, projectName, dependencyConfig, configuration, taskOverrides, overrides);
|
111
95
|
}
|
112
96
|
}
|
@@ -2,12 +2,25 @@ import { Task, TaskGraph } from '../config/task-graph';
|
|
2
2
|
import { ProjectGraph, ProjectGraphProjectNode } from '../config/project-graph';
|
3
3
|
import { TargetConfiguration, TargetDependencyConfig } from '../config/workspace-json-project-json';
|
4
4
|
import { CustomHasher, ExecutorConfig } from '../config/misc-interfaces';
|
5
|
+
export type NormalizedTargetDependencyConfig = TargetDependencyConfig & {
|
6
|
+
projects: string[];
|
7
|
+
};
|
5
8
|
export declare function getDependencyConfigs({ project, target }: {
|
6
9
|
project: string;
|
7
10
|
target: string;
|
8
|
-
}, extraTargetDependencies: Record<string, (TargetDependencyConfig | string)[]>, projectGraph: ProjectGraph):
|
9
|
-
export declare function
|
11
|
+
}, extraTargetDependencies: Record<string, (TargetDependencyConfig | string)[]>, projectGraph: ProjectGraph, allTargetNames: string[]): NormalizedTargetDependencyConfig[] | undefined;
|
12
|
+
export declare function normalizeDependencyConfigDefinition(definition: string | TargetDependencyConfig, currentProject: string, graph: ProjectGraph, allTargetNames: string[]): NormalizedTargetDependencyConfig[];
|
13
|
+
export declare function normalizeDependencyConfigProjects(dependencyConfig: TargetDependencyConfig, currentProject: string, graph: ProjectGraph): NormalizedTargetDependencyConfig;
|
14
|
+
export declare function expandDependencyConfigSyntaxSugar(dependencyConfigString: string | TargetDependencyConfig, graph: ProjectGraph): TargetDependencyConfig;
|
15
|
+
export declare function expandWildcardTargetConfiguration(dependencyConfig: NormalizedTargetDependencyConfig, allTargetNames: string[]): NormalizedTargetDependencyConfig[];
|
16
|
+
export declare function readProjectAndTargetFromTargetString(targetString: string, projects: Record<string, ProjectGraphProjectNode>): {
|
17
|
+
projects?: string[];
|
18
|
+
target: string;
|
19
|
+
};
|
10
20
|
export declare function getOutputs(p: Record<string, ProjectGraphProjectNode>, target: Task['target'], overrides: Task['overrides']): string[];
|
21
|
+
export declare function normalizeTargetDependencyWithStringProjects(dependencyConfig: TargetDependencyConfig): Omit<TargetDependencyConfig, 'projects'> & {
|
22
|
+
projects: string[];
|
23
|
+
};
|
11
24
|
declare class InvalidOutputsError extends Error {
|
12
25
|
outputs: string[];
|
13
26
|
invalidOutputs: Set<string>;
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.unparse = exports.isCacheableTask = exports.shouldStreamOutput = exports.getSerializedArgsForTask = exports.getPrintableCommandArgsForTask = exports.getCliPath = exports.calculateReverseDeps = exports.removeIdsFromGraph = exports.removeTasksFromTaskGraph = exports.getCustomHasher = exports.getExecutorForTask = exports.getExecutorNameForTask = exports.getTargetConfigurationForTask = exports.interpolate = exports.getOutputsForTargetAndConfiguration = exports.transformLegacyOutputs = exports.validateOutputs = exports.getOutputs = exports.expandDependencyConfigSyntaxSugar = exports.getDependencyConfigs = void 0;
|
4
|
-
const output_1 = require("../utils/output");
|
3
|
+
exports.unparse = exports.isCacheableTask = exports.shouldStreamOutput = exports.getSerializedArgsForTask = exports.getPrintableCommandArgsForTask = exports.getCliPath = exports.calculateReverseDeps = exports.removeIdsFromGraph = exports.removeTasksFromTaskGraph = exports.getCustomHasher = exports.getExecutorForTask = exports.getExecutorNameForTask = exports.getTargetConfigurationForTask = exports.interpolate = exports.getOutputsForTargetAndConfiguration = exports.transformLegacyOutputs = exports.validateOutputs = exports.normalizeTargetDependencyWithStringProjects = exports.getOutputs = exports.readProjectAndTargetFromTargetString = exports.expandWildcardTargetConfiguration = exports.expandDependencyConfigSyntaxSugar = exports.normalizeDependencyConfigProjects = exports.normalizeDependencyConfigDefinition = exports.getDependencyConfigs = void 0;
|
5
4
|
const path_1 = require("path");
|
6
5
|
const posix_1 = require("path/posix");
|
7
6
|
const workspace_root_1 = require("../utils/workspace-root");
|
@@ -11,28 +10,35 @@ const serialize_overrides_into_command_line_1 = require("../utils/serialize-over
|
|
11
10
|
const split_target_1 = require("../utils/split-target");
|
12
11
|
const executor_utils_1 = require("../command-line/run/executor-utils");
|
13
12
|
const project_graph_1 = require("../project-graph/project-graph");
|
14
|
-
|
13
|
+
const find_matching_projects_1 = require("../utils/find-matching-projects");
|
14
|
+
const minimatch_1 = require("minimatch");
|
15
|
+
function getDependencyConfigs({ project, target }, extraTargetDependencies, projectGraph, allTargetNames) {
|
15
16
|
const dependencyConfigs = (projectGraph.nodes[project].data?.targets[target]?.dependsOn ??
|
16
17
|
// This is passed into `run-command` from programmatic invocations
|
17
18
|
extraTargetDependencies[target] ??
|
18
|
-
[]).
|
19
|
-
? expandDependencyConfigSyntaxSugar(config, projectGraph)
|
20
|
-
: config);
|
21
|
-
for (const dependencyConfig of dependencyConfigs) {
|
22
|
-
if (dependencyConfig.projects && dependencyConfig.dependencies) {
|
23
|
-
output_1.output.error({
|
24
|
-
title: `dependsOn is improperly configured for ${project}:${target}`,
|
25
|
-
bodyLines: [
|
26
|
-
`dependsOn.projects and dependsOn.dependencies cannot be used together.`,
|
27
|
-
],
|
28
|
-
});
|
29
|
-
process.exit(1);
|
30
|
-
}
|
31
|
-
}
|
19
|
+
[]).flatMap((config) => normalizeDependencyConfigDefinition(config, project, projectGraph, allTargetNames));
|
32
20
|
return dependencyConfigs;
|
33
21
|
}
|
34
22
|
exports.getDependencyConfigs = getDependencyConfigs;
|
23
|
+
function normalizeDependencyConfigDefinition(definition, currentProject, graph, allTargetNames) {
|
24
|
+
return expandWildcardTargetConfiguration(normalizeDependencyConfigProjects(expandDependencyConfigSyntaxSugar(definition, graph), currentProject, graph), allTargetNames);
|
25
|
+
}
|
26
|
+
exports.normalizeDependencyConfigDefinition = normalizeDependencyConfigDefinition;
|
27
|
+
function normalizeDependencyConfigProjects(dependencyConfig, currentProject, graph) {
|
28
|
+
const noStringConfig = normalizeTargetDependencyWithStringProjects(dependencyConfig);
|
29
|
+
if (noStringConfig.projects) {
|
30
|
+
dependencyConfig.projects = (0, find_matching_projects_1.findMatchingProjects)(noStringConfig.projects, graph.nodes);
|
31
|
+
}
|
32
|
+
else if (!noStringConfig.dependencies) {
|
33
|
+
dependencyConfig.projects = [currentProject];
|
34
|
+
}
|
35
|
+
return dependencyConfig;
|
36
|
+
}
|
37
|
+
exports.normalizeDependencyConfigProjects = normalizeDependencyConfigProjects;
|
35
38
|
function expandDependencyConfigSyntaxSugar(dependencyConfigString, graph) {
|
39
|
+
if (typeof dependencyConfigString !== 'string') {
|
40
|
+
return dependencyConfigString;
|
41
|
+
}
|
36
42
|
const [dependencies, targetString] = dependencyConfigString.startsWith('^')
|
37
43
|
? [true, dependencyConfigString.substring(1)]
|
38
44
|
: [false, dependencyConfigString];
|
@@ -44,26 +50,84 @@ function expandDependencyConfigSyntaxSugar(dependencyConfigString, graph) {
|
|
44
50
|
dependencies: true,
|
45
51
|
};
|
46
52
|
}
|
53
|
+
const { projects, target } = readProjectAndTargetFromTargetString(targetString, graph.nodes);
|
54
|
+
return projects ? { projects, target } : { target };
|
55
|
+
}
|
56
|
+
exports.expandDependencyConfigSyntaxSugar = expandDependencyConfigSyntaxSugar;
|
57
|
+
// Weakmap let's the cache get cleared by garbage collector if allTargetNames is no longer used
|
58
|
+
const patternResultCache = new WeakMap();
|
59
|
+
function expandWildcardTargetConfiguration(dependencyConfig, allTargetNames) {
|
60
|
+
if (!find_matching_projects_1.GLOB_CHARACTERS.some((char) => dependencyConfig.target.includes(char))) {
|
61
|
+
return [dependencyConfig];
|
62
|
+
}
|
63
|
+
let cache = patternResultCache.get(allTargetNames);
|
64
|
+
if (!cache) {
|
65
|
+
cache = new Map();
|
66
|
+
patternResultCache.set(allTargetNames, cache);
|
67
|
+
}
|
68
|
+
const cachedResult = cache.get(dependencyConfig.target);
|
69
|
+
if (cachedResult) {
|
70
|
+
return cachedResult;
|
71
|
+
}
|
72
|
+
const matcher = minimatch_1.minimatch.filter(dependencyConfig.target);
|
73
|
+
const matchingTargets = allTargetNames.filter((t) => matcher(t));
|
74
|
+
const result = matchingTargets.map((t) => ({
|
75
|
+
...dependencyConfig,
|
76
|
+
target: t,
|
77
|
+
}));
|
78
|
+
cache.set(dependencyConfig.target, result);
|
79
|
+
return result;
|
80
|
+
}
|
81
|
+
exports.expandWildcardTargetConfiguration = expandWildcardTargetConfiguration;
|
82
|
+
function readProjectAndTargetFromTargetString(targetString, projects) {
|
47
83
|
// Support for both `project:target` and `target:with:colons` syntax
|
48
84
|
const [maybeProject, ...segments] = (0, split_target_1.splitByColons)(targetString);
|
49
|
-
// if no additional segments are provided, then the string references
|
50
|
-
// a target of the same project
|
51
85
|
if (!segments.length) {
|
86
|
+
// if no additional segments are provided, then the string references
|
87
|
+
// a target of the same project
|
52
88
|
return { target: maybeProject };
|
53
89
|
}
|
54
|
-
|
90
|
+
else if (maybeProject in projects) {
|
55
91
|
// Only the first segment could be a project. If it is, the rest is a target.
|
56
92
|
// If its not, then the whole targetString was a target with colons in its name.
|
57
|
-
|
93
|
+
return { projects: [maybeProject], target: segments.join(':') };
|
94
|
+
}
|
95
|
+
else {
|
58
96
|
// If the first segment is a project, then we have a specific project. Otherwise, we don't.
|
59
|
-
|
60
|
-
}
|
97
|
+
return { target: targetString };
|
98
|
+
}
|
61
99
|
}
|
62
|
-
exports.
|
100
|
+
exports.readProjectAndTargetFromTargetString = readProjectAndTargetFromTargetString;
|
63
101
|
function getOutputs(p, target, overrides) {
|
64
102
|
return getOutputsForTargetAndConfiguration(target, overrides, p[target.project]);
|
65
103
|
}
|
66
104
|
exports.getOutputs = getOutputs;
|
105
|
+
function normalizeTargetDependencyWithStringProjects(dependencyConfig) {
|
106
|
+
if (typeof dependencyConfig.projects === 'string') {
|
107
|
+
/** LERNA SUPPORT START - Remove in v20 */
|
108
|
+
// Lerna uses `dependencies` in `prepNxOptions`, so we need to maintain
|
109
|
+
// support for it until lerna can be updated to use the syntax.
|
110
|
+
//
|
111
|
+
// This should have been removed in v17, but the updates to lerna had not
|
112
|
+
// been made yet.
|
113
|
+
//
|
114
|
+
// TODO(@agentender): Remove this part in v20
|
115
|
+
if (dependencyConfig.projects === 'self') {
|
116
|
+
delete dependencyConfig.projects;
|
117
|
+
}
|
118
|
+
else if (dependencyConfig.projects === 'dependencies') {
|
119
|
+
dependencyConfig.dependencies = true;
|
120
|
+
delete dependencyConfig.projects;
|
121
|
+
return;
|
122
|
+
/** LERNA SUPPORT END - Remove in v20 */
|
123
|
+
}
|
124
|
+
else {
|
125
|
+
dependencyConfig.projects = [dependencyConfig.projects];
|
126
|
+
}
|
127
|
+
}
|
128
|
+
return dependencyConfig;
|
129
|
+
}
|
130
|
+
exports.normalizeTargetDependencyWithStringProjects = normalizeTargetDependencyWithStringProjects;
|
67
131
|
class InvalidOutputsError extends Error {
|
68
132
|
constructor(outputs, invalidOutputs) {
|
69
133
|
super(InvalidOutputsError.createMessage(invalidOutputs));
|
@@ -1,4 +1,8 @@
|
|
1
1
|
import type { ProjectGraphProjectNode } from '../config/project-graph';
|
2
|
+
/**
|
3
|
+
* The presence of these characters in a string indicates that it might be a glob pattern.
|
4
|
+
*/
|
5
|
+
export declare const GLOB_CHARACTERS: string[];
|
2
6
|
/**
|
3
7
|
* Find matching project names given a list of potential project names or globs.
|
4
8
|
*
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getMatchingStringsWithCache = exports.findMatchingProjects = void 0;
|
3
|
+
exports.getMatchingStringsWithCache = exports.findMatchingProjects = exports.GLOB_CHARACTERS = void 0;
|
4
4
|
const minimatch_1 = require("minimatch");
|
5
5
|
const validPatternTypes = [
|
6
6
|
'name', // Pattern is based on the project's name
|
@@ -8,7 +8,10 @@ const validPatternTypes = [
|
|
8
8
|
'directory', // Pattern is based on the project's root directory
|
9
9
|
'unlabeled', // Pattern was passed without specifying a type
|
10
10
|
];
|
11
|
-
|
11
|
+
/**
|
12
|
+
* The presence of these characters in a string indicates that it might be a glob pattern.
|
13
|
+
*/
|
14
|
+
exports.GLOB_CHARACTERS = ['*', '|', '{', '}', '(', ')'];
|
12
15
|
/**
|
13
16
|
* Find matching project names given a list of potential project names or globs.
|
14
17
|
*
|
@@ -110,7 +113,7 @@ function addMatchingProjectsByName(projectNames, projects, pattern, matchedProje
|
|
110
113
|
}
|
111
114
|
return;
|
112
115
|
}
|
113
|
-
if (!
|
116
|
+
if (!exports.GLOB_CHARACTERS.some((c) => pattern.value.includes(c))) {
|
114
117
|
return;
|
115
118
|
}
|
116
119
|
const matchedProjectNames = (0, exports.getMatchingStringsWithCache)(pattern.value, projectNames);
|
@@ -135,7 +138,7 @@ function addMatchingProjectsByTag(projectNames, projects, pattern, matchedProjec
|
|
135
138
|
}
|
136
139
|
continue;
|
137
140
|
}
|
138
|
-
if (!
|
141
|
+
if (!exports.GLOB_CHARACTERS.some((c) => pattern.value.includes(c))) {
|
139
142
|
continue;
|
140
143
|
}
|
141
144
|
if ((0, exports.getMatchingStringsWithCache)(pattern.value, tags).length) {
|
@@ -17,6 +17,12 @@ function createSerializableError(error) {
|
|
17
17
|
value = value.map((v) => {
|
18
18
|
if (typeof v === 'object' && v instanceof Error) {
|
19
19
|
return createSerializableError(v);
|
20
|
+
// Support for AggregateCreateNodesError
|
21
|
+
}
|
22
|
+
else if (Array.isArray(v) &&
|
23
|
+
v.length === 2 &&
|
24
|
+
v[1] instanceof Error) {
|
25
|
+
return [v[0], createSerializableError(v[1])];
|
20
26
|
}
|
21
27
|
return v;
|
22
28
|
});
|