nx 19.2.0-beta.5 → 19.2.0-beta.7

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.
Files changed (57) hide show
  1. package/bin/post-install.js +8 -8
  2. package/package.json +12 -12
  3. package/src/command-line/deprecated/command-objects.js +2 -1
  4. package/src/command-line/examples.js +59 -5
  5. package/src/command-line/graph/command-object.d.ts +25 -2
  6. package/src/command-line/graph/command-object.js +57 -3
  7. package/src/command-line/graph/graph.js +2 -1
  8. package/src/command-line/init/implementation/react/index.js +1 -1
  9. package/src/command-line/init/implementation/react/rename-js-to-jsx.d.ts +1 -1
  10. package/src/command-line/init/implementation/react/rename-js-to-jsx.js +2 -2
  11. package/src/command-line/init/init-v2.js +1 -1
  12. package/src/command-line/nx-commands.js +1 -1
  13. package/src/command-line/yargs-utils/shared-options.d.ts +0 -21
  14. package/src/command-line/yargs-utils/shared-options.js +2 -52
  15. package/src/daemon/client/client.d.ts +6 -0
  16. package/src/daemon/client/client.js +45 -2
  17. package/src/daemon/is-on-daemon.d.ts +1 -0
  18. package/src/daemon/is-on-daemon.js +7 -0
  19. package/src/daemon/message-types/get-context-file-data.d.ts +5 -0
  20. package/src/daemon/message-types/get-context-file-data.js +11 -0
  21. package/src/daemon/message-types/get-files-in-directory.d.ts +6 -0
  22. package/src/daemon/message-types/get-files-in-directory.js +11 -0
  23. package/src/daemon/message-types/get-nx-workspace-files.d.ts +6 -0
  24. package/src/daemon/message-types/get-nx-workspace-files.js +11 -0
  25. package/src/daemon/message-types/glob.d.ts +7 -0
  26. package/src/daemon/message-types/glob.js +11 -0
  27. package/src/daemon/message-types/hash-glob.d.ts +7 -0
  28. package/src/daemon/message-types/hash-glob.js +11 -0
  29. package/src/daemon/message-types/update-context-files.d.ts +7 -0
  30. package/src/daemon/message-types/update-context-files.js +11 -0
  31. package/src/daemon/server/handle-context-file-data.d.ts +2 -0
  32. package/src/daemon/server/handle-context-file-data.js +13 -0
  33. package/src/daemon/server/handle-get-files-in-directory.d.ts +2 -0
  34. package/src/daemon/server/handle-get-files-in-directory.js +13 -0
  35. package/src/daemon/server/handle-glob.d.ts +2 -0
  36. package/src/daemon/server/handle-glob.js +13 -0
  37. package/src/daemon/server/handle-hash-glob.d.ts +2 -0
  38. package/src/daemon/server/handle-hash-glob.js +13 -0
  39. package/src/daemon/server/handle-nx-workspace-files.d.ts +2 -0
  40. package/src/daemon/server/handle-nx-workspace-files.js +13 -0
  41. package/src/daemon/server/plugins.js +1 -0
  42. package/src/daemon/server/server.js +39 -9
  43. package/src/devkit-exports.d.ts +1 -1
  44. package/src/devkit-exports.js +2 -1
  45. package/src/generators/utils/glob.d.ts +11 -0
  46. package/src/generators/utils/glob.js +20 -3
  47. package/src/generators/utils/project-configuration.js +1 -1
  48. package/src/project-graph/file-map-utils.js +1 -8
  49. package/src/project-graph/file-utils.js +33 -34
  50. package/src/project-graph/plugins/isolation/plugin-pool.js +10 -9
  51. package/src/project-graph/utils/retrieve-workspace-files.d.ts +1 -1
  52. package/src/project-graph/utils/retrieve-workspace-files.js +6 -6
  53. package/src/utils/all-file-data.js +1 -7
  54. package/src/utils/workspace-context.d.ts +13 -5
  55. package/src/utils/workspace-context.js +45 -14
  56. package/src/daemon/server/handle-request-file-data.d.ts +0 -4
  57. package/src/daemon/server/handle-request-file-data.js +0 -13
@@ -11,8 +11,10 @@ const get_cloud_options_1 = require("../src/nx-cloud/utilities/get-cloud-options
11
11
  const nx_cloud_utils_1 = require("../src/utils/nx-cloud-utils");
12
12
  const nx_json_1 = require("../src/config/nx-json");
13
13
  const workspace_context_1 = require("../src/utils/workspace-context");
14
+ const logger_1 = require("../src/utils/logger");
14
15
  (async () => {
15
16
  const start = new Date();
17
+ let errored = false;
16
18
  try {
17
19
  (0, workspace_context_1.setupWorkspaceContext)(workspace_root_1.workspaceRoot);
18
20
  if (isMainNxPackage() && (0, fileutils_1.fileExists)((0, path_1.join)(workspace_root_1.workspaceRoot, 'nx.json'))) {
@@ -28,7 +30,7 @@ const workspace_context_1 = require("../src/utils/workspace-context");
28
30
  tasks.push((0, update_manager_1.verifyOrUpdateNxCloudClient)((0, get_cloud_options_1.getCloudOptions)()));
29
31
  }
30
32
  await Promise.all(tasks.map((promise) => {
31
- promise.catch((e) => {
33
+ return promise.catch((e) => {
32
34
  if (process.env.NX_VERBOSE_LOGGING === 'true') {
33
35
  console.warn(e);
34
36
  }
@@ -37,15 +39,13 @@ const workspace_context_1 = require("../src/utils/workspace-context");
37
39
  }
38
40
  }
39
41
  catch (e) {
40
- if (process.env.NX_VERBOSE_LOGGING === 'true') {
41
- console.log(e);
42
- }
42
+ errored = true;
43
+ logger_1.logger.verbose(e);
43
44
  }
44
45
  finally {
45
- if (process.env.NX_VERBOSE_LOGGING === 'true') {
46
- const end = new Date();
47
- console.log(`Nx postinstall steps took ${end.getTime() - start.getTime()}ms`);
48
- }
46
+ const end = new Date();
47
+ logger_1.logger.verbose(`Nx postinstall steps took ${end.getTime() - start.getTime()}ms`);
48
+ process.exit(errored ? 1 : 0);
49
49
  }
50
50
  })();
51
51
  function isMainNxPackage() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "19.2.0-beta.5",
3
+ "version": "19.2.0-beta.7",
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": {
@@ -69,7 +69,7 @@
69
69
  "yargs-parser": "21.1.1",
70
70
  "node-machine-id": "1.1.12",
71
71
  "ora": "5.3.0",
72
- "@nrwl/tao": "19.2.0-beta.5"
72
+ "@nrwl/tao": "19.2.0-beta.7"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "@swc-node/register": "^1.8.0",
@@ -84,16 +84,16 @@
84
84
  }
85
85
  },
86
86
  "optionalDependencies": {
87
- "@nx/nx-darwin-x64": "19.2.0-beta.5",
88
- "@nx/nx-darwin-arm64": "19.2.0-beta.5",
89
- "@nx/nx-linux-x64-gnu": "19.2.0-beta.5",
90
- "@nx/nx-linux-x64-musl": "19.2.0-beta.5",
91
- "@nx/nx-win32-x64-msvc": "19.2.0-beta.5",
92
- "@nx/nx-linux-arm64-gnu": "19.2.0-beta.5",
93
- "@nx/nx-linux-arm64-musl": "19.2.0-beta.5",
94
- "@nx/nx-linux-arm-gnueabihf": "19.2.0-beta.5",
95
- "@nx/nx-win32-arm64-msvc": "19.2.0-beta.5",
96
- "@nx/nx-freebsd-x64": "19.2.0-beta.5"
87
+ "@nx/nx-darwin-x64": "19.2.0-beta.7",
88
+ "@nx/nx-darwin-arm64": "19.2.0-beta.7",
89
+ "@nx/nx-linux-x64-gnu": "19.2.0-beta.7",
90
+ "@nx/nx-linux-x64-musl": "19.2.0-beta.7",
91
+ "@nx/nx-win32-x64-msvc": "19.2.0-beta.7",
92
+ "@nx/nx-linux-arm64-gnu": "19.2.0-beta.7",
93
+ "@nx/nx-linux-arm64-musl": "19.2.0-beta.7",
94
+ "@nx/nx-linux-arm-gnueabihf": "19.2.0-beta.7",
95
+ "@nx/nx-win32-arm64-msvc": "19.2.0-beta.7",
96
+ "@nx/nx-freebsd-x64": "19.2.0-beta.7"
97
97
  },
98
98
  "nx-migrations": {
99
99
  "migrations": "./migrations.json",
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.yargsPrintAffectedCommand = exports.yargsAffectedGraphCommand = void 0;
4
4
  const params_1 = require("../../utils/params");
5
5
  const shared_options_1 = require("../yargs-utils/shared-options");
6
+ const command_object_1 = require("../graph/command-object");
6
7
  const affectedGraphDeprecationMessage = 'Use `nx graph --affected`, or `nx affected --graph` instead depending on which best suits your use case. The `affected:graph` command has been removed in Nx 19.';
7
8
  const printAffectedDeprecationMessage = 'Use `nx show projects --affected`, `nx affected --graph -t build` or `nx graph --affected` depending on which best suits your use case. The `print-affected` command has been removed in Nx 19.';
8
9
  /**
@@ -12,7 +13,7 @@ exports.yargsAffectedGraphCommand = {
12
13
  command: 'affected:graph',
13
14
  describe: false,
14
15
  aliases: ['affected:dep-graph'],
15
- builder: (yargs) => (0, shared_options_1.withAffectedOptions)((0, shared_options_1.withDepGraphOptions)(yargs)),
16
+ builder: (yargs) => (0, shared_options_1.withAffectedOptions)((0, command_object_1.withGraphOptions)(yargs)),
16
17
  handler: (args) => (0, params_1.handleErrors)(false, () => {
17
18
  throw new Error(affectedGraphDeprecationMessage);
18
19
  }),
@@ -33,7 +33,19 @@ exports.examples = {
33
33
  },
34
34
  {
35
35
  command: 'affected -t build --tag=$NX_TASK_TARGET_PROJECT:latest',
36
- description: 'Use the currently executing project name in your command.',
36
+ description: 'Use the currently executing project name in your command',
37
+ },
38
+ {
39
+ command: 'affected -t=build --graph',
40
+ description: 'Preview the task graph that Nx would run inside a webview',
41
+ },
42
+ {
43
+ command: 'affected -t=build --graph=output.json',
44
+ description: 'Save the task graph to a file',
45
+ },
46
+ {
47
+ command: 'affected -t=build --graph=stdout',
48
+ description: 'Print the task graph to the console',
37
49
  },
38
50
  ],
39
51
  'affected:test': [
@@ -123,6 +135,10 @@ exports.examples = {
123
135
  command: 'graph --file=output.html',
124
136
  description: 'Generate a static website with project graph into an html file, accompanied by an asset folder called static',
125
137
  },
138
+ {
139
+ command: 'graph --print',
140
+ description: 'Print the project graph as JSON to the console',
141
+ },
126
142
  {
127
143
  command: 'graph --focus=todos-feature-main',
128
144
  description: 'Show the graph where every node is either an ancestor or a descendant of todos-feature-main',
@@ -191,6 +207,44 @@ exports.examples = {
191
207
  command: 'run-many --targets=lint,test,build',
192
208
  description: 'Run lint, test, and build targets for all projects. Requires Nx v15.4+',
193
209
  },
210
+ {
211
+ command: 'run-many -t=build --graph',
212
+ description: 'Preview the task graph that Nx would run inside a webview',
213
+ },
214
+ {
215
+ command: 'run-many -t=build --graph=output.json',
216
+ description: 'Save the task graph to a file',
217
+ },
218
+ {
219
+ command: 'run-many -t=build --graph=stdout',
220
+ description: 'Print the task graph to the console',
221
+ },
222
+ ],
223
+ run: [
224
+ {
225
+ command: 'run myapp:build',
226
+ description: 'Run the target build for the myapp project',
227
+ },
228
+ {
229
+ command: 'run myapp:build:production',
230
+ description: 'Run the target build for the myapp project, with production configuration',
231
+ },
232
+ {
233
+ command: 'run myapp:build --graph',
234
+ description: 'Preview the task graph that Nx would run inside a webview',
235
+ },
236
+ {
237
+ command: 'run myapp:build --graph=output.json',
238
+ description: 'Save the task graph to a file',
239
+ },
240
+ {
241
+ command: 'run myapp:build --graph=stdout',
242
+ description: 'Print the task graph to the console',
243
+ },
244
+ {
245
+ command: 'run myapp:"build:test"',
246
+ description: 'Run\'s a target named build:test for the myapp project. Note the quotes around the target name to prevent "test" from being considered a configuration',
247
+ },
194
248
  ],
195
249
  migrate: [
196
250
  {
@@ -237,7 +291,7 @@ exports.examples = {
237
291
  },
238
292
  {
239
293
  command: 'show projects --projects api-*',
240
- description: 'Show all projects with names starting with "api-". The "projects" option is useful to see which projects would be selected by run-many.',
294
+ description: 'Show all projects with names starting with "api-". The "projects" option is useful to see which projects would be selected by run-many',
241
295
  },
242
296
  {
243
297
  command: 'show projects --with-target serve',
@@ -257,15 +311,15 @@ exports.examples = {
257
311
  },
258
312
  {
259
313
  command: 'show project my-app',
260
- description: 'If in an interactive terminal, opens the project detail view. If not in an interactive terminal, defaults to JSON.',
314
+ description: 'If in an interactive terminal, opens the project detail view. If not in an interactive terminal, defaults to JSON',
261
315
  },
262
316
  {
263
317
  command: 'show project my-app --json',
264
- description: 'Show detailed information about "my-app" in a json format.',
318
+ description: 'Show detailed information about "my-app" in a json format',
265
319
  },
266
320
  {
267
321
  command: 'show project my-app --json false',
268
- description: 'Show information about "my-app" in a human readable format.',
322
+ description: 'Show information about "my-app" in a human readable format',
269
323
  },
270
324
  {
271
325
  command: 'show project my-app --web',
@@ -1,2 +1,25 @@
1
- import { CommandModule } from 'yargs';
2
- export declare const yargsDepGraphCommand: CommandModule;
1
+ import { Argv, CommandModule } from 'yargs';
2
+ export declare const yargsGraphCommand: CommandModule;
3
+ export declare function withGraphOptions(yargs: Argv): Argv<{
4
+ file: string;
5
+ } & {
6
+ print: boolean;
7
+ } & {
8
+ view: string;
9
+ } & {
10
+ targets: string;
11
+ } & {
12
+ focus: string;
13
+ } & {
14
+ exclude: string;
15
+ } & {
16
+ groupByFolder: boolean;
17
+ } & {
18
+ host: string;
19
+ } & {
20
+ port: number;
21
+ } & {
22
+ watch: boolean;
23
+ } & {
24
+ open: boolean;
25
+ }>;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.yargsDepGraphCommand = void 0;
3
+ exports.withGraphOptions = exports.yargsGraphCommand = void 0;
4
4
  const documentation_1 = require("../yargs-utils/documentation");
5
5
  const shared_options_1 = require("../yargs-utils/shared-options");
6
- exports.yargsDepGraphCommand = {
6
+ exports.yargsGraphCommand = {
7
7
  command: 'graph',
8
8
  describe: 'Graph dependencies within workspace',
9
9
  aliases: ['dep-graph'],
10
- builder: (yargs) => (0, documentation_1.linkToNxDevAndExamples)((0, shared_options_1.withVerbose)((0, shared_options_1.withAffectedOptions)((0, shared_options_1.withDepGraphOptions)(yargs))), 'dep-graph')
10
+ builder: (yargs) => (0, documentation_1.linkToNxDevAndExamples)((0, shared_options_1.withVerbose)((0, shared_options_1.withAffectedOptions)(withGraphOptions(yargs))), 'dep-graph')
11
11
  .option('affected', {
12
12
  type: 'boolean',
13
13
  description: 'Highlight affected projects',
@@ -19,3 +19,57 @@ exports.yargsDepGraphCommand = {
19
19
  .implies('head', 'affected'),
20
20
  handler: async (args) => await (await Promise.resolve().then(() => require('./graph'))).generateGraph(args, []),
21
21
  };
22
+ function withGraphOptions(yargs) {
23
+ return yargs
24
+ .option('file', {
25
+ describe: 'Output file (e.g. --file=output.json or --file=dep-graph.html).',
26
+ type: 'string',
27
+ })
28
+ .option('print', {
29
+ describe: 'Print the project graph to stdout in the terminal.',
30
+ type: 'boolean',
31
+ })
32
+ .option('view', {
33
+ describe: 'Choose whether to view the projects or task graph',
34
+ type: 'string',
35
+ default: 'projects',
36
+ choices: ['projects', 'tasks'],
37
+ })
38
+ .option('targets', {
39
+ describe: 'The target to show tasks for in the task graph',
40
+ type: 'string',
41
+ coerce: shared_options_1.parseCSV,
42
+ })
43
+ .option('focus', {
44
+ describe: 'Use to show the project graph for a particular project and every node that is either an ancestor or a descendant.',
45
+ type: 'string',
46
+ })
47
+ .option('exclude', {
48
+ describe: 'List of projects delimited by commas to exclude from the project graph.',
49
+ type: 'string',
50
+ coerce: shared_options_1.parseCSV,
51
+ })
52
+ .option('groupByFolder', {
53
+ describe: 'Group projects by folder in the project graph',
54
+ type: 'boolean',
55
+ })
56
+ .option('host', {
57
+ describe: 'Bind the project graph server to a specific ip address.',
58
+ type: 'string',
59
+ })
60
+ .option('port', {
61
+ describe: 'Bind the project graph server to a specific port.',
62
+ type: 'number',
63
+ })
64
+ .option('watch', {
65
+ describe: 'Watch for changes to project graph and update in-browser',
66
+ type: 'boolean',
67
+ default: true,
68
+ })
69
+ .option('open', {
70
+ describe: 'Open the project graph in the browser.',
71
+ type: 'boolean',
72
+ default: true,
73
+ });
74
+ }
75
+ exports.withGraphOptions = withGraphOptions;
@@ -206,7 +206,7 @@ async function generateGraph(args, affectedProjects) {
206
206
  }
207
207
  }
208
208
  if (args.affected) {
209
- affectedProjects = (await (0, affected_1.getAffectedGraphNodes)((0, command_line_utils_1.splitArgsIntoNxArgsAndOverrides)(args, 'affected', { printWarnings: true }, (0, configuration_1.readNxJson)()).nxArgs, rawGraph)).map((n) => n.name);
209
+ affectedProjects = (await (0, affected_1.getAffectedGraphNodes)((0, command_line_utils_1.splitArgsIntoNxArgsAndOverrides)(args, 'affected', { printWarnings: args.file !== 'stdout' }, (0, configuration_1.readNxJson)()).nxArgs, rawGraph)).map((n) => n.name);
210
210
  }
211
211
  if (args.exclude) {
212
212
  const invalidExcludes = [];
@@ -229,6 +229,7 @@ async function generateGraph(args, affectedProjects) {
229
229
  // stdout is a magical constant that doesn't actually write a file
230
230
  if (args.file === 'stdout') {
231
231
  console.log(JSON.stringify(await createJsonOutput(prunedGraph, rawGraph, args.projects, args.targets), null, 2));
232
+ await output_1.output.drain();
232
233
  process.exit(0);
233
234
  }
234
235
  const workspaceFolder = workspace_root_1.workspaceRoot;
@@ -182,7 +182,7 @@ async function addBundler(options) {
182
182
  addViteCommandsToPackageScripts(options.reactAppName, options.isStandalone);
183
183
  (0, write_vite_config_1.writeViteConfig)(options.reactAppName, options.isStandalone, options.appIsJs);
184
184
  (0, write_vite_index_html_1.writeViteIndexHtml)(options.reactAppName, options.isStandalone, options.appIsJs);
185
- (0, rename_js_to_jsx_1.renameJsToJsx)(options.reactAppName, options.isStandalone);
185
+ await (0, rename_js_to_jsx_1.renameJsToJsx)(options.reactAppName, options.isStandalone);
186
186
  }
187
187
  else {
188
188
  output_1.output.log({ title: '🧑‍🔧 Setting up craco + Webpack' });
@@ -1 +1 @@
1
- export declare function renameJsToJsx(appName: string, isStandalone: boolean): void;
1
+ export declare function renameJsToJsx(appName: string, isStandalone: boolean): Promise<void>;
@@ -5,8 +5,8 @@ const fs_extra_1 = require("fs-extra");
5
5
  const workspace_context_1 = require("../../../../utils/workspace-context");
6
6
  const fileutils_1 = require("../../../../utils/fileutils");
7
7
  // Vite cannot process JSX like <div> or <Header> unless the file is named .jsx or .tsx
8
- function renameJsToJsx(appName, isStandalone) {
9
- const files = (0, workspace_context_1.globWithWorkspaceContext)(process.cwd(), [
8
+ async function renameJsToJsx(appName, isStandalone) {
9
+ const files = await (0, workspace_context_1.globWithWorkspaceContext)(process.cwd(), [
10
10
  isStandalone ? 'src/**/*.js' : `apps/${appName}/src/**/*.js`,
11
11
  ]);
12
12
  files.forEach((file) => {
@@ -122,7 +122,7 @@ const npmPackageToPluginMap = {
122
122
  '@remix-run/dev': '@nx/remix',
123
123
  };
124
124
  async function detectPlugins() {
125
- let files = ['package.json'].concat((0, workspace_context_1.globWithWorkspaceContext)(process.cwd(), ['**/*/package.json']));
125
+ let files = ['package.json'].concat(await (0, workspace_context_1.globWithWorkspaceContext)(process.cwd(), ['**/*/package.json']));
126
126
  const detectedPlugins = new Set();
127
127
  for (const file of files) {
128
128
  if (!(0, fs_1.existsSync)(file))
@@ -49,7 +49,7 @@ exports.commandsObject = yargs
49
49
  .command(command_objects_1.yargsAffectedGraphCommand)
50
50
  .command(command_object_2.yargsConnectCommand)
51
51
  .command(command_object_3.yargsDaemonCommand)
52
- .command(command_object_4.yargsDepGraphCommand)
52
+ .command(command_object_4.yargsGraphCommand)
53
53
  .command(command_object_5.yargsExecCommand)
54
54
  .command(command_object_6.yargsFormatCheckCommand)
55
55
  .command(command_object_6.yargsFormatWriteCommand)
@@ -61,27 +61,6 @@ export type OutputStyle = typeof allOutputStyles[number];
61
61
  export declare function withOutputStyleOption(yargs: Argv, choices?: ReadonlyArray<OutputStyle>): Argv<{
62
62
  "output-style": string;
63
63
  }>;
64
- export declare function withDepGraphOptions(yargs: Argv): Argv<{
65
- file: string;
66
- } & {
67
- view: string;
68
- } & {
69
- targets: string;
70
- } & {
71
- focus: string;
72
- } & {
73
- exclude: string;
74
- } & {
75
- groupByFolder: boolean;
76
- } & {
77
- host: string;
78
- } & {
79
- port: number;
80
- } & {
81
- watch: boolean;
82
- } & {
83
- open: boolean;
84
- }>;
85
64
  export declare function withRunOneOptions(yargs: Argv): Argv<{
86
65
  "output-style": string;
87
66
  } & RunOptions & {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseCSV = exports.withRunOneOptions = exports.withDepGraphOptions = exports.withOutputStyleOption = exports.withOverrides = exports.withRunManyOptions = exports.withAffectedOptions = exports.withBatch = exports.withVerbose = exports.withConfiguration = exports.withTargetAndConfigurationOption = exports.withRunOptions = exports.withExcludeOption = void 0;
3
+ exports.parseCSV = exports.withRunOneOptions = exports.withOutputStyleOption = exports.withOverrides = exports.withRunManyOptions = exports.withAffectedOptions = exports.withBatch = exports.withVerbose = exports.withConfiguration = exports.withTargetAndConfigurationOption = exports.withRunOptions = exports.withExcludeOption = void 0;
4
4
  function withExcludeOption(yargs) {
5
5
  return yargs.option('exclude', {
6
6
  describe: 'Exclude certain projects from being processed',
@@ -31,7 +31,7 @@ function withRunOptions(yargs) {
31
31
  })
32
32
  .option('graph', {
33
33
  type: 'string',
34
- describe: 'Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser.',
34
+ describe: 'Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.',
35
35
  coerce: (value) =>
36
36
  // when the type of an opt is "string", passing `--opt` comes through as having an empty string value.
37
37
  // this coercion allows `--graph` to be passed through as a boolean directly, and also normalizes the
@@ -216,56 +216,6 @@ function withOutputStyleOption(yargs, choices = [
216
216
  });
217
217
  }
218
218
  exports.withOutputStyleOption = withOutputStyleOption;
219
- function withDepGraphOptions(yargs) {
220
- return yargs
221
- .option('file', {
222
- describe: 'Output file (e.g. --file=output.json or --file=dep-graph.html)',
223
- type: 'string',
224
- })
225
- .option('view', {
226
- describe: 'Choose whether to view the projects or task graph',
227
- type: 'string',
228
- default: 'projects',
229
- choices: ['projects', 'tasks'],
230
- })
231
- .option('targets', {
232
- describe: 'The target to show tasks for in the task graph',
233
- type: 'string',
234
- coerce: parseCSV,
235
- })
236
- .option('focus', {
237
- describe: 'Use to show the project graph for a particular project and every node that is either an ancestor or a descendant.',
238
- type: 'string',
239
- })
240
- .option('exclude', {
241
- describe: 'List of projects delimited by commas to exclude from the project graph.',
242
- type: 'string',
243
- coerce: parseCSV,
244
- })
245
- .option('groupByFolder', {
246
- describe: 'Group projects by folder in the project graph',
247
- type: 'boolean',
248
- })
249
- .option('host', {
250
- describe: 'Bind the project graph server to a specific ip address.',
251
- type: 'string',
252
- })
253
- .option('port', {
254
- describe: 'Bind the project graph server to a specific port.',
255
- type: 'number',
256
- })
257
- .option('watch', {
258
- describe: 'Watch for changes to project graph and update in-browser',
259
- type: 'boolean',
260
- default: true,
261
- })
262
- .option('open', {
263
- describe: 'Open the project graph in the browser.',
264
- type: 'boolean',
265
- default: true,
266
- });
267
- }
268
- exports.withDepGraphOptions = withDepGraphOptions;
269
219
  function withRunOneOptions(yargs) {
270
220
  const executorShouldShowHelp = !(process.argv[2] === 'run' && process.argv[3] === '--help');
271
221
  const res = withRunOptions(withOutputStyleOption(withConfiguration(yargs), allOutputStyles))
@@ -5,6 +5,7 @@ import { FileData, ProjectGraph } from '../../config/project-graph';
5
5
  import { Hash } from '../../hasher/task-hasher';
6
6
  import { Task, TaskGraph } from '../../config/task-graph';
7
7
  import { ConfigurationSourceMaps } from '../../project-graph/utils/project-configuration-utils';
8
+ import { NxWorkspaceFiles } from '../../native';
8
9
  export type UnregisterCallback = () => void;
9
10
  export type ChangedFile = {
10
11
  path: string;
@@ -45,6 +46,11 @@ export declare class DaemonClient {
45
46
  processInBackground(requirePath: string, data: any): Promise<any>;
46
47
  recordOutputsHash(outputs: string[], hash: string): Promise<any>;
47
48
  outputsHashesMatch(outputs: string[], hash: string): Promise<any>;
49
+ glob(globs: string[], exclude?: string[]): Promise<string[]>;
50
+ getWorkspaceContextFileData(): Promise<FileData[]>;
51
+ getWorkspaceFiles(projectRootMap: Record<string, string>): Promise<NxWorkspaceFiles>;
52
+ getFilesInDirectory(dir: string): Promise<string[]>;
53
+ hashGlob(globs: string[], exclude?: string[]): Promise<string>;
48
54
  isServerAvailable(): Promise<boolean>;
49
55
  private sendToDaemonViaQueue;
50
56
  private setUpConnection;
@@ -20,6 +20,10 @@ const daemon_socket_messenger_1 = require("./daemon-socket-messenger");
20
20
  const cache_1 = require("../cache");
21
21
  const error_types_1 = require("../../project-graph/error-types");
22
22
  const dotenv_1 = require("../../utils/dotenv");
23
+ const get_nx_workspace_files_1 = require("../message-types/get-nx-workspace-files");
24
+ const get_context_file_data_1 = require("../message-types/get-context-file-data");
25
+ const get_files_in_directory_1 = require("../message-types/get-files-in-directory");
26
+ const hash_glob_1 = require("../message-types/hash-glob");
23
27
  const DAEMON_ENV_SETTINGS = {
24
28
  NX_PROJECT_GLOB_CACHE: 'false',
25
29
  NX_CACHE_PROJECTS_CONFIG: 'false',
@@ -183,6 +187,42 @@ class DaemonClient {
183
187
  },
184
188
  });
185
189
  }
190
+ glob(globs, exclude) {
191
+ const message = {
192
+ type: 'GLOB',
193
+ globs,
194
+ exclude,
195
+ };
196
+ return this.sendToDaemonViaQueue(message);
197
+ }
198
+ getWorkspaceContextFileData() {
199
+ const message = {
200
+ type: get_context_file_data_1.GET_CONTEXT_FILE_DATA,
201
+ };
202
+ return this.sendToDaemonViaQueue(message);
203
+ }
204
+ getWorkspaceFiles(projectRootMap) {
205
+ const message = {
206
+ type: get_nx_workspace_files_1.GET_NX_WORKSPACE_FILES,
207
+ projectRootMap,
208
+ };
209
+ return this.sendToDaemonViaQueue(message);
210
+ }
211
+ getFilesInDirectory(dir) {
212
+ const message = {
213
+ type: get_files_in_directory_1.GET_FILES_IN_DIRECTORY,
214
+ dir,
215
+ };
216
+ return this.sendToDaemonViaQueue(message);
217
+ }
218
+ hashGlob(globs, exclude) {
219
+ const message = {
220
+ type: hash_glob_1.HASH_GLOB,
221
+ globs,
222
+ exclude,
223
+ };
224
+ return this.sendToDaemonViaQueue(message);
225
+ }
186
226
  async isServerAvailable() {
187
227
  return new Promise((resolve) => {
188
228
  try {
@@ -302,13 +342,16 @@ class DaemonClient {
302
342
  (0, fs_extra_1.ensureFileSync)(tmp_dir_1.DAEMON_OUTPUT_LOG_FILE);
303
343
  this._out = await (0, promises_1.open)(tmp_dir_1.DAEMON_OUTPUT_LOG_FILE, 'a');
304
344
  this._err = await (0, promises_1.open)(tmp_dir_1.DAEMON_OUTPUT_LOG_FILE, 'a');
305
- const backgroundProcess = (0, child_process_1.spawn)(process.execPath, [(0, path_1.join)(__dirname, '../server/start.js')], {
345
+ const backgroundProcess = (0, child_process_1.spawn)(process.execPath, [(0, path_1.join)(__dirname, `../server/start.js`)], {
306
346
  cwd: workspace_root_1.workspaceRoot,
307
347
  stdio: ['ignore', this._out.fd, this._err.fd],
308
348
  detached: true,
309
349
  windowsHide: true,
310
350
  shell: false,
311
- env: { ...process.env, ...DAEMON_ENV_SETTINGS },
351
+ env: {
352
+ ...process.env,
353
+ ...DAEMON_ENV_SETTINGS,
354
+ },
312
355
  });
313
356
  backgroundProcess.unref();
314
357
  /**
@@ -0,0 +1 @@
1
+ export declare function isOnDaemon(): boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOnDaemon = void 0;
4
+ function isOnDaemon() {
5
+ return !!global.NX_DAEMON;
6
+ }
7
+ exports.isOnDaemon = isOnDaemon;
@@ -0,0 +1,5 @@
1
+ export declare const GET_CONTEXT_FILE_DATA: "GET_CONTEXT_FILE_DATA";
2
+ export type HandleContextFileDataMessage = {
3
+ type: typeof GET_CONTEXT_FILE_DATA;
4
+ };
5
+ export declare function isHandleContextFileDataMessage(message: unknown): message is HandleContextFileDataMessage;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHandleContextFileDataMessage = exports.GET_CONTEXT_FILE_DATA = void 0;
4
+ exports.GET_CONTEXT_FILE_DATA = 'GET_CONTEXT_FILE_DATA';
5
+ function isHandleContextFileDataMessage(message) {
6
+ return (typeof message === 'object' &&
7
+ message !== null &&
8
+ 'type' in message &&
9
+ message['type'] === exports.GET_CONTEXT_FILE_DATA);
10
+ }
11
+ exports.isHandleContextFileDataMessage = isHandleContextFileDataMessage;
@@ -0,0 +1,6 @@
1
+ export declare const GET_FILES_IN_DIRECTORY: "GET_FILES_IN_DIRECTORY";
2
+ export type HandleGetFilesInDirectoryMessage = {
3
+ type: typeof GET_FILES_IN_DIRECTORY;
4
+ dir: string;
5
+ };
6
+ export declare function isHandleGetFilesInDirectoryMessage(message: unknown): message is HandleGetFilesInDirectoryMessage;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHandleGetFilesInDirectoryMessage = exports.GET_FILES_IN_DIRECTORY = void 0;
4
+ exports.GET_FILES_IN_DIRECTORY = 'GET_FILES_IN_DIRECTORY';
5
+ function isHandleGetFilesInDirectoryMessage(message) {
6
+ return (typeof message === 'object' &&
7
+ message !== null &&
8
+ 'type' in message &&
9
+ message['type'] === exports.GET_FILES_IN_DIRECTORY);
10
+ }
11
+ exports.isHandleGetFilesInDirectoryMessage = isHandleGetFilesInDirectoryMessage;
@@ -0,0 +1,6 @@
1
+ export declare const GET_NX_WORKSPACE_FILES: "GET_NX_WORKSPACE_FILES";
2
+ export type HandleNxWorkspaceFilesMessage = {
3
+ type: typeof GET_NX_WORKSPACE_FILES;
4
+ projectRootMap: Record<string, string>;
5
+ };
6
+ export declare function isHandleNxWorkspaceFilesMessage(message: unknown): message is HandleNxWorkspaceFilesMessage;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHandleNxWorkspaceFilesMessage = exports.GET_NX_WORKSPACE_FILES = void 0;
4
+ exports.GET_NX_WORKSPACE_FILES = 'GET_NX_WORKSPACE_FILES';
5
+ function isHandleNxWorkspaceFilesMessage(message) {
6
+ return (typeof message === 'object' &&
7
+ message !== null &&
8
+ 'type' in message &&
9
+ message['type'] === exports.GET_NX_WORKSPACE_FILES);
10
+ }
11
+ exports.isHandleNxWorkspaceFilesMessage = isHandleNxWorkspaceFilesMessage;
@@ -0,0 +1,7 @@
1
+ export declare const GLOB: "GLOB";
2
+ export type HandleGlobMessage = {
3
+ type: typeof GLOB;
4
+ globs: string[];
5
+ exclude?: string[];
6
+ };
7
+ export declare function isHandleGlobMessage(message: unknown): message is HandleGlobMessage;