nx 21.0.3 → 21.1.0-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "21.0.3",
3
+ "version": "21.1.0-beta.0",
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": {
@@ -83,16 +83,16 @@
83
83
  }
84
84
  },
85
85
  "optionalDependencies": {
86
- "@nx/nx-darwin-arm64": "21.0.3",
87
- "@nx/nx-darwin-x64": "21.0.3",
88
- "@nx/nx-freebsd-x64": "21.0.3",
89
- "@nx/nx-linux-arm-gnueabihf": "21.0.3",
90
- "@nx/nx-linux-arm64-gnu": "21.0.3",
91
- "@nx/nx-linux-arm64-musl": "21.0.3",
92
- "@nx/nx-linux-x64-gnu": "21.0.3",
93
- "@nx/nx-linux-x64-musl": "21.0.3",
94
- "@nx/nx-win32-arm64-msvc": "21.0.3",
95
- "@nx/nx-win32-x64-msvc": "21.0.3"
86
+ "@nx/nx-darwin-arm64": "21.1.0-beta.0",
87
+ "@nx/nx-darwin-x64": "21.1.0-beta.0",
88
+ "@nx/nx-freebsd-x64": "21.1.0-beta.0",
89
+ "@nx/nx-linux-arm-gnueabihf": "21.1.0-beta.0",
90
+ "@nx/nx-linux-arm64-gnu": "21.1.0-beta.0",
91
+ "@nx/nx-linux-arm64-musl": "21.1.0-beta.0",
92
+ "@nx/nx-linux-x64-gnu": "21.1.0-beta.0",
93
+ "@nx/nx-linux-x64-musl": "21.1.0-beta.0",
94
+ "@nx/nx-win32-arm64-msvc": "21.1.0-beta.0",
95
+ "@nx/nx-win32-x64-msvc": "21.1.0-beta.0"
96
96
  },
97
97
  "nx-migrations": {
98
98
  "migrations": "./migrations.json",
@@ -38,7 +38,7 @@ async function initHandler(options) {
38
38
  await (0, react_1.addNxToCraRepo)(options);
39
39
  (0, utils_1.printFinalMessage)({
40
40
  learnMoreLink: options.integrated
41
- ? 'https://nx.dev/tutorials/2-react-monorepo/1r-introduction/1-welcome'
41
+ ? 'https://nx.dev/getting-started/tutorials/react-monorepo-tutorial'
42
42
  : 'https://nx.dev/getting-started/tutorials/react-standalone-tutorial',
43
43
  });
44
44
  return;
@@ -17,6 +17,7 @@ exports.parseCSV = parseCSV;
17
17
  exports.readParallelFromArgsAndEnv = readParallelFromArgsAndEnv;
18
18
  const nx_json_1 = require("../../config/nx-json");
19
19
  const is_tui_enabled_1 = require("../../tasks-runner/is-tui-enabled");
20
+ const node_os_1 = require("node:os");
20
21
  exports.defaultYargsParserConfiguration = {
21
22
  'strip-dashed': true,
22
23
  'unknown-options-as-args': true,
@@ -304,15 +305,15 @@ function readParallelFromArgsAndEnv(args) {
304
305
  else if (args['parallel'] === 'true' ||
305
306
  args['parallel'] === true ||
306
307
  args['parallel'] === '' ||
307
- // dont require passing --parallel if NX_PARALLEL is set, but allow overriding it
308
+ // don't require passing --parallel if NX_PARALLEL is set, but allow overriding it
308
309
  (process.env.NX_PARALLEL && args['parallel'] === undefined)) {
309
- return Number(args['maxParallel'] ||
310
+ return concurrency(args['maxParallel'] ||
310
311
  args['max-parallel'] ||
311
312
  process.env.NX_PARALLEL ||
312
- 3);
313
+ '3');
313
314
  }
314
315
  else if (args['parallel'] !== undefined) {
315
- return Number(args['parallel']);
316
+ return concurrency(args['parallel']);
316
317
  }
317
318
  }
318
319
  const coerceTuiAutoExit = (value) => {
@@ -328,3 +329,11 @@ const coerceTuiAutoExit = (value) => {
328
329
  }
329
330
  throw new Error(`Invalid value for --tui-auto-exit: ${value}`);
330
331
  };
332
+ function concurrency(val) {
333
+ let parallel = typeof val === 'number' ? val : parseInt(val);
334
+ if (typeof val === 'string' && val.at(-1) === '%') {
335
+ const maxCores = (0, node_os_1.availableParallelism)?.() ?? (0, node_os_1.cpus)().length;
336
+ parallel = (maxCores * parallel) / 100;
337
+ }
338
+ return Math.max(1, Math.floor(parallel));
339
+ }
@@ -237,6 +237,10 @@ export interface InputsInput {
237
237
 
238
238
  export const IS_WASM: boolean
239
239
 
240
+ export declare export declare function logError(message: string): void
241
+
242
+ export declare export declare function logInfo(message: string): void
243
+
240
244
  /** Stripped version of the NxJson interface for use in rust */
241
245
  export interface NxJson {
242
246
  namedInputs?: Record<string, Array<JsInputs>>
@@ -388,6 +388,8 @@ module.exports.getTransformableOutputs = nativeBinding.getTransformableOutputs
388
388
  module.exports.hashArray = nativeBinding.hashArray
389
389
  module.exports.hashFile = nativeBinding.hashFile
390
390
  module.exports.IS_WASM = nativeBinding.IS_WASM
391
+ module.exports.logError = nativeBinding.logError
392
+ module.exports.logInfo = nativeBinding.logInfo
391
393
  module.exports.parseTaskStatus = nativeBinding.parseTaskStatus
392
394
  module.exports.remove = nativeBinding.remove
393
395
  module.exports.restoreTerminal = nativeBinding.restoreTerminal
@@ -59,43 +59,45 @@ function __napi_rs_initialize_modules(__napiInstance) {
59
59
  __napiInstance.exports['__napi_register__get_transformable_outputs_5']?.()
60
60
  __napiInstance.exports['__napi_register__hash_array_6']?.()
61
61
  __napiInstance.exports['__napi_register__hash_file_7']?.()
62
- __napiInstance.exports['__napi_register__IS_WASM_8']?.()
63
- __napiInstance.exports['__napi_register__get_binary_target_9']?.()
64
- __napiInstance.exports['__napi_register__ImportResult_struct_10']?.()
65
- __napiInstance.exports['__napi_register__find_imports_11']?.()
66
- __napiInstance.exports['__napi_register__transfer_project_graph_12']?.()
67
- __napiInstance.exports['__napi_register__ExternalNode_struct_13']?.()
68
- __napiInstance.exports['__napi_register__Target_struct_14']?.()
69
- __napiInstance.exports['__napi_register__Project_struct_15']?.()
70
- __napiInstance.exports['__napi_register__ProjectGraph_struct_16']?.()
71
- __napiInstance.exports['__napi_register__HashPlanner_struct_17']?.()
72
- __napiInstance.exports['__napi_register__HashPlanner_impl_21']?.()
73
- __napiInstance.exports['__napi_register__HashDetails_struct_22']?.()
74
- __napiInstance.exports['__napi_register__HasherOptions_struct_23']?.()
75
- __napiInstance.exports['__napi_register__TaskHasher_struct_24']?.()
76
- __napiInstance.exports['__napi_register__TaskHasher_impl_27']?.()
77
- __napiInstance.exports['__napi_register__Task_struct_28']?.()
78
- __napiInstance.exports['__napi_register__TaskTarget_struct_29']?.()
79
- __napiInstance.exports['__napi_register__TaskResult_struct_30']?.()
80
- __napiInstance.exports['__napi_register__TaskGraph_struct_31']?.()
81
- __napiInstance.exports['__napi_register__FileData_struct_32']?.()
82
- __napiInstance.exports['__napi_register__InputsInput_struct_33']?.()
83
- __napiInstance.exports['__napi_register__FileSetInput_struct_34']?.()
84
- __napiInstance.exports['__napi_register__RuntimeInput_struct_35']?.()
85
- __napiInstance.exports['__napi_register__EnvironmentInput_struct_36']?.()
86
- __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_37']?.()
87
- __napiInstance.exports['__napi_register__DepsOutputsInput_struct_38']?.()
88
- __napiInstance.exports['__napi_register__NxJson_struct_39']?.()
89
- __napiInstance.exports['__napi_register__FileLock_struct_40']?.()
90
- __napiInstance.exports['__napi_register__FileLock_impl_42']?.()
91
- __napiInstance.exports['__napi_register__WorkspaceContext_struct_43']?.()
92
- __napiInstance.exports['__napi_register__WorkspaceContext_impl_54']?.()
93
- __napiInstance.exports['__napi_register__WorkspaceErrors_55']?.()
94
- __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_56']?.()
95
- __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_57']?.()
96
- __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_58']?.()
97
- __napiInstance.exports['__napi_register__FileMap_struct_59']?.()
98
- __napiInstance.exports['__napi_register____test_only_transfer_file_map_60']?.()
62
+ __napiInstance.exports['__napi_register__log_info_8']?.()
63
+ __napiInstance.exports['__napi_register__log_error_9']?.()
64
+ __napiInstance.exports['__napi_register__IS_WASM_10']?.()
65
+ __napiInstance.exports['__napi_register__get_binary_target_11']?.()
66
+ __napiInstance.exports['__napi_register__ImportResult_struct_12']?.()
67
+ __napiInstance.exports['__napi_register__find_imports_13']?.()
68
+ __napiInstance.exports['__napi_register__transfer_project_graph_14']?.()
69
+ __napiInstance.exports['__napi_register__ExternalNode_struct_15']?.()
70
+ __napiInstance.exports['__napi_register__Target_struct_16']?.()
71
+ __napiInstance.exports['__napi_register__Project_struct_17']?.()
72
+ __napiInstance.exports['__napi_register__ProjectGraph_struct_18']?.()
73
+ __napiInstance.exports['__napi_register__HashPlanner_struct_19']?.()
74
+ __napiInstance.exports['__napi_register__HashPlanner_impl_23']?.()
75
+ __napiInstance.exports['__napi_register__HashDetails_struct_24']?.()
76
+ __napiInstance.exports['__napi_register__HasherOptions_struct_25']?.()
77
+ __napiInstance.exports['__napi_register__TaskHasher_struct_26']?.()
78
+ __napiInstance.exports['__napi_register__TaskHasher_impl_29']?.()
79
+ __napiInstance.exports['__napi_register__Task_struct_30']?.()
80
+ __napiInstance.exports['__napi_register__TaskTarget_struct_31']?.()
81
+ __napiInstance.exports['__napi_register__TaskResult_struct_32']?.()
82
+ __napiInstance.exports['__napi_register__TaskGraph_struct_33']?.()
83
+ __napiInstance.exports['__napi_register__FileData_struct_34']?.()
84
+ __napiInstance.exports['__napi_register__InputsInput_struct_35']?.()
85
+ __napiInstance.exports['__napi_register__FileSetInput_struct_36']?.()
86
+ __napiInstance.exports['__napi_register__RuntimeInput_struct_37']?.()
87
+ __napiInstance.exports['__napi_register__EnvironmentInput_struct_38']?.()
88
+ __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_39']?.()
89
+ __napiInstance.exports['__napi_register__DepsOutputsInput_struct_40']?.()
90
+ __napiInstance.exports['__napi_register__NxJson_struct_41']?.()
91
+ __napiInstance.exports['__napi_register__FileLock_struct_42']?.()
92
+ __napiInstance.exports['__napi_register__FileLock_impl_44']?.()
93
+ __napiInstance.exports['__napi_register__WorkspaceContext_struct_45']?.()
94
+ __napiInstance.exports['__napi_register__WorkspaceContext_impl_56']?.()
95
+ __napiInstance.exports['__napi_register__WorkspaceErrors_57']?.()
96
+ __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_58']?.()
97
+ __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_59']?.()
98
+ __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_60']?.()
99
+ __napiInstance.exports['__napi_register__FileMap_struct_61']?.()
100
+ __napiInstance.exports['__napi_register____test_only_transfer_file_map_62']?.()
99
101
  }
100
102
  export const FileLock = __napiModule.exports.FileLock
101
103
  export const HashPlanner = __napiModule.exports.HashPlanner
@@ -111,6 +113,8 @@ export const getTransformableOutputs = __napiModule.exports.getTransformableOutp
111
113
  export const hashArray = __napiModule.exports.hashArray
112
114
  export const hashFile = __napiModule.exports.hashFile
113
115
  export const IS_WASM = __napiModule.exports.IS_WASM
116
+ export const logError = __napiModule.exports.logError
117
+ export const logInfo = __napiModule.exports.logInfo
114
118
  export const remove = __napiModule.exports.remove
115
119
  export const testOnlyTransferFileMap = __napiModule.exports.testOnlyTransferFileMap
116
120
  export const transferProjectGraph = __napiModule.exports.transferProjectGraph
@@ -90,43 +90,45 @@ function __napi_rs_initialize_modules(__napiInstance) {
90
90
  __napiInstance.exports['__napi_register__get_transformable_outputs_5']?.()
91
91
  __napiInstance.exports['__napi_register__hash_array_6']?.()
92
92
  __napiInstance.exports['__napi_register__hash_file_7']?.()
93
- __napiInstance.exports['__napi_register__IS_WASM_8']?.()
94
- __napiInstance.exports['__napi_register__get_binary_target_9']?.()
95
- __napiInstance.exports['__napi_register__ImportResult_struct_10']?.()
96
- __napiInstance.exports['__napi_register__find_imports_11']?.()
97
- __napiInstance.exports['__napi_register__transfer_project_graph_12']?.()
98
- __napiInstance.exports['__napi_register__ExternalNode_struct_13']?.()
99
- __napiInstance.exports['__napi_register__Target_struct_14']?.()
100
- __napiInstance.exports['__napi_register__Project_struct_15']?.()
101
- __napiInstance.exports['__napi_register__ProjectGraph_struct_16']?.()
102
- __napiInstance.exports['__napi_register__HashPlanner_struct_17']?.()
103
- __napiInstance.exports['__napi_register__HashPlanner_impl_21']?.()
104
- __napiInstance.exports['__napi_register__HashDetails_struct_22']?.()
105
- __napiInstance.exports['__napi_register__HasherOptions_struct_23']?.()
106
- __napiInstance.exports['__napi_register__TaskHasher_struct_24']?.()
107
- __napiInstance.exports['__napi_register__TaskHasher_impl_27']?.()
108
- __napiInstance.exports['__napi_register__Task_struct_28']?.()
109
- __napiInstance.exports['__napi_register__TaskTarget_struct_29']?.()
110
- __napiInstance.exports['__napi_register__TaskResult_struct_30']?.()
111
- __napiInstance.exports['__napi_register__TaskGraph_struct_31']?.()
112
- __napiInstance.exports['__napi_register__FileData_struct_32']?.()
113
- __napiInstance.exports['__napi_register__InputsInput_struct_33']?.()
114
- __napiInstance.exports['__napi_register__FileSetInput_struct_34']?.()
115
- __napiInstance.exports['__napi_register__RuntimeInput_struct_35']?.()
116
- __napiInstance.exports['__napi_register__EnvironmentInput_struct_36']?.()
117
- __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_37']?.()
118
- __napiInstance.exports['__napi_register__DepsOutputsInput_struct_38']?.()
119
- __napiInstance.exports['__napi_register__NxJson_struct_39']?.()
120
- __napiInstance.exports['__napi_register__FileLock_struct_40']?.()
121
- __napiInstance.exports['__napi_register__FileLock_impl_42']?.()
122
- __napiInstance.exports['__napi_register__WorkspaceContext_struct_43']?.()
123
- __napiInstance.exports['__napi_register__WorkspaceContext_impl_54']?.()
124
- __napiInstance.exports['__napi_register__WorkspaceErrors_55']?.()
125
- __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_56']?.()
126
- __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_57']?.()
127
- __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_58']?.()
128
- __napiInstance.exports['__napi_register__FileMap_struct_59']?.()
129
- __napiInstance.exports['__napi_register____test_only_transfer_file_map_60']?.()
93
+ __napiInstance.exports['__napi_register__log_info_8']?.()
94
+ __napiInstance.exports['__napi_register__log_error_9']?.()
95
+ __napiInstance.exports['__napi_register__IS_WASM_10']?.()
96
+ __napiInstance.exports['__napi_register__get_binary_target_11']?.()
97
+ __napiInstance.exports['__napi_register__ImportResult_struct_12']?.()
98
+ __napiInstance.exports['__napi_register__find_imports_13']?.()
99
+ __napiInstance.exports['__napi_register__transfer_project_graph_14']?.()
100
+ __napiInstance.exports['__napi_register__ExternalNode_struct_15']?.()
101
+ __napiInstance.exports['__napi_register__Target_struct_16']?.()
102
+ __napiInstance.exports['__napi_register__Project_struct_17']?.()
103
+ __napiInstance.exports['__napi_register__ProjectGraph_struct_18']?.()
104
+ __napiInstance.exports['__napi_register__HashPlanner_struct_19']?.()
105
+ __napiInstance.exports['__napi_register__HashPlanner_impl_23']?.()
106
+ __napiInstance.exports['__napi_register__HashDetails_struct_24']?.()
107
+ __napiInstance.exports['__napi_register__HasherOptions_struct_25']?.()
108
+ __napiInstance.exports['__napi_register__TaskHasher_struct_26']?.()
109
+ __napiInstance.exports['__napi_register__TaskHasher_impl_29']?.()
110
+ __napiInstance.exports['__napi_register__Task_struct_30']?.()
111
+ __napiInstance.exports['__napi_register__TaskTarget_struct_31']?.()
112
+ __napiInstance.exports['__napi_register__TaskResult_struct_32']?.()
113
+ __napiInstance.exports['__napi_register__TaskGraph_struct_33']?.()
114
+ __napiInstance.exports['__napi_register__FileData_struct_34']?.()
115
+ __napiInstance.exports['__napi_register__InputsInput_struct_35']?.()
116
+ __napiInstance.exports['__napi_register__FileSetInput_struct_36']?.()
117
+ __napiInstance.exports['__napi_register__RuntimeInput_struct_37']?.()
118
+ __napiInstance.exports['__napi_register__EnvironmentInput_struct_38']?.()
119
+ __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_39']?.()
120
+ __napiInstance.exports['__napi_register__DepsOutputsInput_struct_40']?.()
121
+ __napiInstance.exports['__napi_register__NxJson_struct_41']?.()
122
+ __napiInstance.exports['__napi_register__FileLock_struct_42']?.()
123
+ __napiInstance.exports['__napi_register__FileLock_impl_44']?.()
124
+ __napiInstance.exports['__napi_register__WorkspaceContext_struct_45']?.()
125
+ __napiInstance.exports['__napi_register__WorkspaceContext_impl_56']?.()
126
+ __napiInstance.exports['__napi_register__WorkspaceErrors_57']?.()
127
+ __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_58']?.()
128
+ __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_59']?.()
129
+ __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_60']?.()
130
+ __napiInstance.exports['__napi_register__FileMap_struct_61']?.()
131
+ __napiInstance.exports['__napi_register____test_only_transfer_file_map_62']?.()
130
132
  }
131
133
  module.exports.FileLock = __napiModule.exports.FileLock
132
134
  module.exports.HashPlanner = __napiModule.exports.HashPlanner
@@ -142,6 +144,8 @@ module.exports.getTransformableOutputs = __napiModule.exports.getTransformableOu
142
144
  module.exports.hashArray = __napiModule.exports.hashArray
143
145
  module.exports.hashFile = __napiModule.exports.hashFile
144
146
  module.exports.IS_WASM = __napiModule.exports.IS_WASM
147
+ module.exports.logError = __napiModule.exports.logError
148
+ module.exports.logInfo = __napiModule.exports.logInfo
145
149
  module.exports.remove = __napiModule.exports.remove
146
150
  module.exports.testOnlyTransferFileMap = __napiModule.exports.testOnlyTransferFileMap
147
151
  module.exports.transferProjectGraph = __napiModule.exports.transferProjectGraph
Binary file
@@ -15,6 +15,7 @@ const nx_json_1 = require("../config/nx-json");
15
15
  const client_1 = require("../daemon/client/client");
16
16
  const create_task_hasher_1 = require("../hasher/create-task-hasher");
17
17
  const hash_task_1 = require("../hasher/hash-task");
18
+ const native_1 = require("../native");
18
19
  const tasks_execution_hooks_1 = require("../project-graph/plugins/tasks-execution-hooks");
19
20
  const project_graph_1 = require("../project-graph/project-graph");
20
21
  const handle_errors_1 = require("../utils/handle-errors");
@@ -39,8 +40,8 @@ const task_timings_life_cycle_1 = require("./life-cycles/task-timings-life-cycle
39
40
  const tui_summary_life_cycle_1 = require("./life-cycles/tui-summary-life-cycle");
40
41
  const task_graph_utils_1 = require("./task-graph-utils");
41
42
  const utils_1 = require("./utils");
42
- const chalk = require("chalk");
43
43
  const exit_codes_1 = require("../utils/exit-codes");
44
+ const chalk = require("chalk");
44
45
  const originalStdoutWrite = process.stdout.write.bind(process.stdout);
45
46
  const originalStderrWrite = process.stderr.write.bind(process.stderr);
46
47
  const originalConsoleLog = console.log.bind(console);
@@ -132,9 +133,19 @@ async function getTerminalOutputLifeCycle(initiatingProject, initiatingTasks, pr
132
133
  /**
133
134
  * Patch stdout.write and stderr.write methods to pass Nx Cloud client logs to the TUI via the lifecycle
134
135
  */
135
- const createPatchedLogWrite = (originalWrite) => {
136
+ const createPatchedLogWrite = (originalWrite, isError) => {
136
137
  // @ts-ignore
137
138
  return (chunk, encoding, callback) => {
139
+ if (isError) {
140
+ (0, native_1.logError)(Buffer.isBuffer(chunk)
141
+ ? chunk.toString(encoding)
142
+ : chunk.toString());
143
+ }
144
+ else {
145
+ (0, native_1.logInfo)(Buffer.isBuffer(chunk)
146
+ ? chunk.toString(encoding)
147
+ : chunk.toString());
148
+ }
138
149
  // Check if the log came from the Nx Cloud client, otherwise invoke the original write method
139
150
  const stackTrace = new Error().stack;
140
151
  const isNxCloudLog = stackTrace.includes((0, node_path_1.join)(workspace_root_1.workspaceRoot, '.nx', 'cache', 'cloud'));
@@ -165,8 +176,8 @@ async function getTerminalOutputLifeCycle(initiatingProject, initiatingTasks, pr
165
176
  // No-op the Nx Cloud client logs
166
177
  };
167
178
  };
168
- process.stdout.write = createPatchedLogWrite(originalStdoutWrite);
169
- process.stderr.write = createPatchedLogWrite(originalStderrWrite);
179
+ process.stdout.write = createPatchedLogWrite(originalStdoutWrite, false);
180
+ process.stderr.write = createPatchedLogWrite(originalStderrWrite, true);
170
181
  // The cloud client calls console.log when NX_VERBOSE_LOGGING is set to true
171
182
  console.log = createPatchedConsoleMethod(originalConsoleLog);
172
183
  console.error = createPatchedConsoleMethod(originalConsoleError);
@@ -113,7 +113,7 @@ function addMatchingProjectsByName(projectNames, projects, pattern, matchedProje
113
113
  }
114
114
  if (!(0, globs_1.isGlobPattern)(pattern.value)) {
115
115
  // Custom regex that is basically \b but includes hyphens (-) and excludes underscores (_), so "foo" pattern matches "foo_bar" but not "foo-e2e".
116
- const regex = new RegExp(`(?<![a-zA-Z0-9-])${pattern.value}(?![a-zA-Z0-9-])`, 'i');
116
+ const regex = new RegExp(`(?<![@a-zA-Z0-9-])${pattern.value}(?![@a-zA-Z0-9-])`, 'i');
117
117
  const matchingProjects = Object.keys(projects).filter((name) => regex.test(name));
118
118
  for (const projectName of matchingProjects) {
119
119
  if (pattern.exclude) {