@lage-run/cli 0.33.2 → 0.33.4

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 (45) hide show
  1. package/lib/commands/createReporter.js +19 -1
  2. package/lib/commands/createReporter.js.map +1 -1
  3. package/lib/commands/exec/executeInProcess.d.ts +1 -1
  4. package/lib/commands/exec/executeInProcess.js +6 -6
  5. package/lib/commands/exec/executeInProcess.js.map +1 -1
  6. package/lib/commands/info/action.d.ts +1 -2
  7. package/lib/commands/info/action.js +6 -2
  8. package/lib/commands/info/action.js.map +1 -1
  9. package/lib/commands/init/action.js +54 -52
  10. package/lib/commands/init/action.js.map +1 -1
  11. package/lib/commands/launchServerInBackground.d.ts +2 -2
  12. package/lib/commands/launchServerInBackground.js.map +1 -1
  13. package/lib/commands/options.js +5 -5
  14. package/lib/commands/options.js.map +1 -1
  15. package/lib/commands/run/index.js +4 -4
  16. package/lib/commands/run/index.js.map +1 -1
  17. package/lib/commands/run/runAction.js +7 -3
  18. package/lib/commands/run/runAction.js.map +1 -1
  19. package/lib/commands/run/watchAction.js +6 -2
  20. package/lib/commands/run/watchAction.js.map +1 -1
  21. package/lib/commands/server/MemoryStream.js.map +1 -1
  22. package/lib/commands/server/lageService.js +11 -3
  23. package/lib/commands/server/lageService.js.map +1 -1
  24. package/lib/getBuiltInRunners.d.ts +6 -0
  25. package/lib/{runnerPickerOptions.js → getBuiltInRunners.js} +5 -4
  26. package/lib/getBuiltInRunners.js.map +1 -0
  27. package/lib/index.d.ts +3 -8
  28. package/lib/optimizeTargetGraph.js +1 -1
  29. package/lib/optimizeTargetGraph.js.map +1 -1
  30. package/lib/types/ReporterInitOptions.d.ts +1 -1
  31. package/lib/types/ReporterInitOptions.js +2 -0
  32. package/lib/types/ReporterInitOptions.js.map +1 -1
  33. package/package.json +23 -21
  34. package/CHANGELOG.json +0 -5329
  35. package/CHANGELOG.md +0 -1925
  36. package/jest.config.js +0 -1
  37. package/lib/commands/cache/runners/ClearCacheRunner.d.ts +0 -5
  38. package/lib/commands/cache/runners/ClearCacheRunner.js +0 -46
  39. package/lib/commands/cache/runners/ClearCacheRunner.js.map +0 -1
  40. package/lib/commands/cache/runners/PruneCacheRunner.d.ts +0 -5
  41. package/lib/commands/cache/runners/PruneCacheRunner.js +0 -49
  42. package/lib/commands/cache/runners/PruneCacheRunner.js.map +0 -1
  43. package/lib/runnerPickerOptions.d.ts +0 -2
  44. package/lib/runnerPickerOptions.js.map +0 -1
  45. package/tsconfig.json +0 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/options.ts"],"sourcesContent":["import { Option } from \"commander\";\nimport { logBuiltInReporterNames } from \"../types/ReporterInitOptions.js\";\n\nconst isCI = process.env.CI || process.env.TF_BUILD;\n\ninterface Options {\n // Groupings of options\n logger: { [key: string]: Option };\n pool: { [key: string]: Option };\n runner: { [key: string]: Option };\n run: { [key: string]: Option };\n server: { [key: string]: Option };\n filter: { [key: string]: Option };\n affected: { [key: string]: Option };\n cache: { [key: string]: Option };\n info: { [key: string]: Option };\n}\n\nconst options: Options = {\n logger: {\n reporter: new Option(\"--reporter <reporter...>\", `log reporter (built-in choices: ${logBuiltInReporterNames.join(\", \")})`),\n grouped: new Option(\"--grouped\", \"groups the logs\").default(false),\n progress: new Option(\"--progress\").conflicts([\"reporter\", \"grouped\", \"verbose\"]).default(!isCI),\n logLevel: new Option(\"--log-level <level>\", \"log level\").choices([\"info\", \"warn\", \"error\", \"verbose\", \"silly\"]).conflicts(\"verbose\"),\n logFile: new Option(\"--log-file <file>\", \"when used with --reporter vfl, writes verbose, ungrouped logs to the specified file\"),\n verbose: new Option(\"--verbose\", \"verbose output\").default(false),\n indented: new Option(\"--indented\", \"enabled indentation of the JSON output\").default(false),\n },\n pool: {\n concurrency: new Option(\"-c|--concurrency <number>\", \"max jobs to run at a time\").argParser((v) => parseInt(v)),\n continue: new Option(\"--continue\", \"continue running even after encountering an error for one of the targets\"),\n maxWorkersPerTask: new Option(\n \"--max-workers-per-task <maxWorkersPerTarget...>\",\n \"set max worker per task, e.g. --max-workers-per-task build=2 test=4\"\n ).default([]),\n },\n runner: {\n nodeArg: new Option(\n \"-n|--node-arg <arg>\",\n 'node arguments as a string to be passed into node like a NODE_OPTIONS setting, (e.g. --nodearg=\"--max_old_space_size=1234 --heap-prof\")'\n ),\n },\n run: {\n cache: new Option(\"--no-cache\", \"disables the cache\"),\n resetCache: new Option(\"--reset-cache\", \"resets the cache, filling it after a run\"),\n skipLocalCache: new Option(\"--skip-local-cache\", \"skips caching locally (defaults to true in CI environments)\").default(isCI),\n profile: new Option(\"--profile [profile]\", \"writes a run profile into a file that can be processed by Chromium devtool\"),\n continue: new Option(\"--continue\", \"continues the run even on error\"),\n allowNoTargetRuns: new Option(\"--allow-no-target-runs\"),\n watch: new Option(\"--watch\", \"runs in watch mode\"),\n },\n server: {\n server: new Option(\"--server [host:port]\", \"Run targets of type 'worker' on a background service\"),\n tasks: new Option(\"--tasks <tasks...>\", \"A list of tasks to run, separated by space e.g. 'build test'\"),\n timeout: new Option(\"-t|--timeout <seconds>\", \"lage server autoshutoff timeout\").default(5 * 60).argParser((v) => parseInt(v)),\n },\n filter: {\n scope: new Option(\n \"--scope <scope...>\",\n \"scopes the run to a subset of packages (by default, includes the dependencies and dependents as well)\"\n ),\n noDeps: new Option(\"--no-deps|--no-dependents\", \"disables running any dependents of the scoped packages\"),\n includeDependencies: new Option(\n \"--include-dependencies|--dependencies\",\n 'adds the scoped packages dependencies as the \"entry points\" for the target graph run'\n ),\n to: new Option(\"--to <scope...>\", \"runs up to a package (shorthand for --scope=<scope...> --no-dependents)\"),\n since: new Option(\"--since <since>\", \"only runs packages that have changed since the given commit, tag, or branch\"),\n ignore: new Option(\n \"--ignore <ignore...>\",\n \"ignores files when calculating the scope with `--since` in addition to the files specified in lage.config\"\n ).default([]),\n },\n affected: {\n outputFormat: new Option(\n \"--output-format <graph|json|default>\",\n `Generate a report about what packages are affected by the current change (defaults to human readable format) ` +\n `\"graph\" will generate a GraphViz .dot file format`\n ),\n },\n cache: {\n prune: new Option(\"--prune <days>\", \"Prunes cache older than certain number of <days>\").argParser(parseInt).conflicts(\"--clear\"),\n clear: new Option(\"--clear\", \"Clears the cache locally\"),\n },\n info: {\n outputFile: new Option(\"-o|--output-file <file>\", \"Output the target graph as json to the specified file.\"),\n noOptimizeGraph: new Option(\"--no-optimize-graph\", \"Do not optimize the target graph\"),\n },\n} as const;\n\nconst optionsWithEnv: Options = addEnvOptions(options);\n\nfunction addEnvOptions(opts: typeof options) {\n for (const key in opts) {\n for (const [name, option] of Object.entries<Option>((opts as any)[key])) {\n // convert the camel cased name to uppercase with underscores\n const upperCaseSnakeKey = key.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n const upperCaseSnakeName = name.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n option.env(`LAGE_${upperCaseSnakeKey}_${upperCaseSnakeName}`);\n }\n }\n\n return opts;\n}\n\nexport { optionsWithEnv as options };\n"],"names":["options","optionsWithEnv","isCI","process","env","CI","TF_BUILD","logger","reporter","Option","logBuiltInReporterNames","join","grouped","default","progress","conflicts","logLevel","choices","logFile","verbose","indented","pool","concurrency","argParser","v","parseInt","continue","maxWorkersPerTask","runner","nodeArg","run","cache","resetCache","skipLocalCache","profile","allowNoTargetRuns","watch","server","tasks","timeout","filter","scope","noDeps","includeDependencies","to","since","ignore","affected","outputFormat","prune","clear","info","outputFile","noOptimizeGraph","addEnvOptions","opts","key","name","option","Object","entries","upperCaseSnakeKey","replace","toUpperCase","upperCaseSnakeName"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/commands/options.ts"],"sourcesContent":["import { Option } from \"commander\";\nimport { logBuiltInReporterNames } from \"../types/ReporterInitOptions.js\";\n\nconst isCI = process.env.CI || process.env.TF_BUILD;\n\ninterface Options {\n // Groupings of options\n logger: { [key: string]: Option };\n pool: { [key: string]: Option };\n runner: { [key: string]: Option };\n run: { [key: string]: Option };\n server: { [key: string]: Option };\n filter: { [key: string]: Option };\n affected: { [key: string]: Option };\n cache: { [key: string]: Option };\n info: { [key: string]: Option };\n}\n\nconst options: Options = {\n logger: {\n reporter: new Option(\"--reporter <reporter...>\", `log reporter (built-in choices: ${logBuiltInReporterNames.join(\", \")})`),\n grouped: new Option(\"--grouped\", \"groups the logs\").default(false),\n progress: new Option(\"--progress\", \"show progress\").conflicts([\"reporter\", \"grouped\", \"verbose\"]).default(!isCI),\n logLevel: new Option(\"--log-level <level>\", \"log level\").choices([\"info\", \"warn\", \"error\", \"verbose\", \"silly\"]).conflicts(\"verbose\"),\n logFile: new Option(\"--log-file <file>\", \"when used with --reporter vfl, writes verbose, ungrouped logs to the specified file\"),\n verbose: new Option(\"--verbose\", \"verbose output\").default(false),\n indented: new Option(\"--indented\", \"enabled indentation of the JSON output\").default(false),\n },\n pool: {\n concurrency: new Option(\"-c|--concurrency <number>\", \"max jobs to run at a time\").argParser((v) => parseInt(v)),\n continue: new Option(\"--continue\", \"continue running even after encountering an error for one of the targets\"),\n maxWorkersPerTask: new Option(\n \"--max-workers-per-task <values...>\",\n \"set max worker per task, e.g. --max-workers-per-task build=2 test=4\"\n ).default([]),\n },\n runner: {\n nodeArg: new Option(\n \"-n|--node-arg <arg>\",\n 'node arguments for workers and child processes (like NODE_OPTIONS) as a single string (e.g. --node-arg=\"--max_old_space_size=1234 --heap-prof\")'\n ),\n },\n run: {\n cache: new Option(\"--no-cache\", \"disables the cache\"),\n resetCache: new Option(\"--reset-cache\", \"resets the cache, filling it after a run\"),\n skipLocalCache: new Option(\"--skip-local-cache\", \"skips caching locally (defaults to true in CI environments)\").default(isCI),\n profile: new Option(\"--profile [profile]\", \"writes a run profile into a file that can be processed by Chromium devtool\"),\n continue: new Option(\"--continue\", \"continues the run even on error\"),\n allowNoTargetRuns: new Option(\"--allow-no-target-runs\", \"succeed even if no targets match the given name\"),\n watch: new Option(\"--watch\", \"runs in watch mode\"),\n },\n server: {\n server: new Option(\"--server [host:port]\", \"Run targets of type 'worker' on a background service\"),\n tasks: new Option(\"--tasks <tasks...>\", \"A list of tasks to run, separated by space e.g. 'build test'\"),\n timeout: new Option(\"-t|--timeout <seconds>\", \"lage server autoshutoff timeout\").default(5 * 60).argParser((v) => parseInt(v)),\n },\n filter: {\n scope: new Option(\n \"--scope <scope...>\",\n \"scopes the run to a subset of packages (by default, includes the dependencies and dependents as well)\"\n ),\n noDeps: new Option(\"--no-deps|--no-dependents\", \"disables running any dependents of the scoped packages\"),\n includeDependencies: new Option(\n \"--include-dependencies|--dependencies\",\n 'adds the scoped packages dependencies as the \"entry points\" for the target graph run'\n ),\n to: new Option(\"--to <scope...>\", \"runs up to a package (shorthand for --scope=<scope...> --no-dependents)\"),\n since: new Option(\"--since <since>\", \"only runs packages that have changed since the given commit, tag, or branch\"),\n ignore: new Option(\n \"--ignore <ignore...>\",\n \"ignores files when calculating the scope with `--since` in addition to the files specified in lage.config\"\n ).default([]),\n },\n affected: {\n outputFormat: new Option(\n \"--output-format <graph|json|default>\",\n `Generate a report about what packages are affected by the current change (defaults to human readable format). ` +\n `\"graph\" will generate a GraphViz .dot file format`\n ),\n },\n cache: {\n prune: new Option(\"--prune <days>\", \"Prunes cache older than certain number of <days>\").argParser(parseInt).conflicts(\"--clear\"),\n clear: new Option(\"--clear\", \"Clears the cache locally\"),\n },\n info: {\n outputFile: new Option(\"-o|--output-file <file>\", \"Output the target graph as json to the specified file.\"),\n noOptimizeGraph: new Option(\"--no-optimize-graph\", \"Do not optimize the target graph\"),\n },\n} as const;\n\nconst optionsWithEnv: Options = addEnvOptions(options);\n\nfunction addEnvOptions(opts: typeof options) {\n for (const key in opts) {\n for (const [name, option] of Object.entries<Option>((opts as any)[key])) {\n // convert the camel cased name to uppercase with underscores\n const upperCaseSnakeKey = key.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n const upperCaseSnakeName = name.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n option.env(`LAGE_${upperCaseSnakeKey}_${upperCaseSnakeName}`);\n }\n }\n\n return opts;\n}\n\nexport { optionsWithEnv as options };\n"],"names":["options","optionsWithEnv","isCI","process","env","CI","TF_BUILD","logger","reporter","Option","logBuiltInReporterNames","join","grouped","default","progress","conflicts","logLevel","choices","logFile","verbose","indented","pool","concurrency","argParser","v","parseInt","continue","maxWorkersPerTask","runner","nodeArg","run","cache","resetCache","skipLocalCache","profile","allowNoTargetRuns","watch","server","tasks","timeout","filter","scope","noDeps","includeDependencies","to","since","ignore","affected","outputFormat","prune","clear","info","outputFile","noOptimizeGraph","addEnvOptions","opts","key","name","option","Object","entries","upperCaseSnakeKey","replace","toUpperCase","upperCaseSnakeName"],"mappings":";;;;+BAyG2BA;;;eAAlBC;;;2BAzGc;qCACiB;AAExC,MAAMC,OAAOC,QAAQC,GAAG,CAACC,EAAE,IAAIF,QAAQC,GAAG,CAACE,QAAQ;AAenD,MAAMN,UAAmB;IACvBO,QAAQ;QACNC,UAAU,IAAIC,iBAAM,CAAC,4BAA4B,CAAC,gCAAgC,EAAEC,4CAAuB,CAACC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzHC,SAAS,IAAIH,iBAAM,CAAC,aAAa,mBAAmBI,OAAO,CAAC;QAC5DC,UAAU,IAAIL,iBAAM,CAAC,cAAc,iBAAiBM,SAAS,CAAC;YAAC;YAAY;YAAW;SAAU,EAAEF,OAAO,CAAC,CAACX;QAC3Gc,UAAU,IAAIP,iBAAM,CAAC,uBAAuB,aAAaQ,OAAO,CAAC;YAAC;YAAQ;YAAQ;YAAS;YAAW;SAAQ,EAAEF,SAAS,CAAC;QAC1HG,SAAS,IAAIT,iBAAM,CAAC,qBAAqB;QACzCU,SAAS,IAAIV,iBAAM,CAAC,aAAa,kBAAkBI,OAAO,CAAC;QAC3DO,UAAU,IAAIX,iBAAM,CAAC,cAAc,0CAA0CI,OAAO,CAAC;IACvF;IACAQ,MAAM;QACJC,aAAa,IAAIb,iBAAM,CAAC,6BAA6B,6BAA6Bc,SAAS,CAAC,CAACC,IAAMC,SAASD;QAC5GE,UAAU,IAAIjB,iBAAM,CAAC,cAAc;QACnCkB,mBAAmB,IAAIlB,iBAAM,CAC3B,sCACA,uEACAI,OAAO,CAAC,EAAE;IACd;IACAe,QAAQ;QACNC,SAAS,IAAIpB,iBAAM,CACjB,uBACA;IAEJ;IACAqB,KAAK;QACHC,OAAO,IAAItB,iBAAM,CAAC,cAAc;QAChCuB,YAAY,IAAIvB,iBAAM,CAAC,iBAAiB;QACxCwB,gBAAgB,IAAIxB,iBAAM,CAAC,sBAAsB,+DAA+DI,OAAO,CAACX;QACxHgC,SAAS,IAAIzB,iBAAM,CAAC,uBAAuB;QAC3CiB,UAAU,IAAIjB,iBAAM,CAAC,cAAc;QACnC0B,mBAAmB,IAAI1B,iBAAM,CAAC,0BAA0B;QACxD2B,OAAO,IAAI3B,iBAAM,CAAC,WAAW;IAC/B;IACA4B,QAAQ;QACNA,QAAQ,IAAI5B,iBAAM,CAAC,wBAAwB;QAC3C6B,OAAO,IAAI7B,iBAAM,CAAC,sBAAsB;QACxC8B,SAAS,IAAI9B,iBAAM,CAAC,0BAA0B,mCAAmCI,OAAO,CAAC,IAAI,IAAIU,SAAS,CAAC,CAACC,IAAMC,SAASD;IAC7H;IACAgB,QAAQ;QACNC,OAAO,IAAIhC,iBAAM,CACf,sBACA;QAEFiC,QAAQ,IAAIjC,iBAAM,CAAC,6BAA6B;QAChDkC,qBAAqB,IAAIlC,iBAAM,CAC7B,yCACA;QAEFmC,IAAI,IAAInC,iBAAM,CAAC,mBAAmB;QAClCoC,OAAO,IAAIpC,iBAAM,CAAC,mBAAmB;QACrCqC,QAAQ,IAAIrC,iBAAM,CAChB,wBACA,6GACAI,OAAO,CAAC,EAAE;IACd;IACAkC,UAAU;QACRC,cAAc,IAAIvC,iBAAM,CACtB,wCACA,CAAC,8GAA8G,CAAC,GAC9G,CAAC,iDAAiD,CAAC;IAEzD;IACAsB,OAAO;QACLkB,OAAO,IAAIxC,iBAAM,CAAC,kBAAkB,oDAAoDc,SAAS,CAACE,UAAUV,SAAS,CAAC;QACtHmC,OAAO,IAAIzC,iBAAM,CAAC,WAAW;IAC/B;IACA0C,MAAM;QACJC,YAAY,IAAI3C,iBAAM,CAAC,2BAA2B;QAClD4C,iBAAiB,IAAI5C,iBAAM,CAAC,uBAAuB;IACrD;AACF;AAEA,MAAMR,iBAA0BqD,cAActD;AAE9C,SAASsD,cAAcC,IAAoB;IACzC,IAAK,MAAMC,OAAOD,KAAM;QACtB,KAAK,MAAM,CAACE,MAAMC,OAAO,IAAIC,OAAOC,OAAO,CAAS,AAACL,IAAY,CAACC,IAAI,EAAG;YACvE,6DAA6D;YAC7D,MAAMK,oBAAoBL,IAAIM,OAAO,CAAC,YAAY,OAAOC,WAAW;YACpE,MAAMC,qBAAqBP,KAAKK,OAAO,CAAC,YAAY,OAAOC,WAAW;YACtEL,OAAOtD,GAAG,CAAC,CAAC,KAAK,EAAEyD,kBAAkB,CAAC,EAAEG,oBAAoB;QAC9D;IACF;IAEA,OAAOT;AACT"}
@@ -22,13 +22,13 @@ Runs a set of commands in a target graph. The targets are defined by packages an
22
22
 
23
23
  Examples
24
24
  ========
25
-
25
+
26
26
  ### Basic case, running "build", "test", and "lint" against all packages
27
27
 
28
28
  $ lage build test lint
29
29
 
30
30
  ### Concurrency
31
-
31
+
32
32
  $ lage build test lint --concurrency=4
33
33
 
34
34
  ### Filtering by certain packages
@@ -69,11 +69,11 @@ Show logs as grouped by each target:
69
69
 
70
70
  Choosing a different reporter while logging (e.g. nice outputs for Azure DevOps):
71
71
 
72
- $ lage build test lint --reporter=azureDevOps
72
+ $ lage build test lint --reporter=azureDevops
73
73
 
74
74
  Or combine multiple reporters (e.g. Azure DepOps with VerboseFileLog)
75
75
 
76
- $ lage build test lint --reporter azureDevOps --reporter vfl --log-file /my/verbose/log.file
76
+ $ lage build test lint --reporter azureDevops --reporter vfl --log-file /my/verbose/log.file
77
77
 
78
78
  Ignoring files when calculating the scope with --since in addition to files specified in lage.config:
79
79
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/run/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { action } from \"./action.js\";\nimport { addOptions } from \"../addOptions.js\";\n\nconst command: Command = new Command(\"run\");\n\naddOptions(\"filter\", command);\naddOptions(\"logger\", command);\naddOptions(\"pool\", command);\naddOptions(\"runner\", command);\naddOptions(\"run\", command);\n\ncommand\n .action(action)\n .allowUnknownOption(true)\n .addHelpCommand(\"[run] command1 [command2...commandN] [options]\", \"run commands\")\n .addHelpText(\n \"after\",\n `\nRuns a set of commands in a target graph. The targets are defined by packages and their scripts as defined the package.json files.\n\nExamples\n========\n \n### Basic case, running \"build\", \"test\", and \"lint\" against all packages\n\n $ lage build test lint\n\n### Concurrency\n \n $ lage build test lint --concurrency=4\n\n### Filtering by certain packages\n\nScoped to \"package-a\" and \"package-b\" and their dependencies and dependents:\n\n $ lage build test lint --scope package-a package-b\n\nScoped to \"package-a\" and \"package-b\" only:\n\n $ lage build test lint --scope package-a package-b --no-deps\n\nScoped to packages that have changed in the current branch against a target merge branch:\n\n $ lage build test lint --since origin/master\n\n### Providing node.js arguments for each command\n\n $ lage build test lint --nodearg=--max_old_space_size=1234 --nodearg=--heap-prof\n\n### Continue running even after encountering an error for one of the targets\n\n $ lage build test lint --continue\n\n### Controlling logged outputs\n\nShow verbose output for each target:\n\n $ lage build test lint --verbose\n\nShow only errors for each target:\n\n $ lage build test lint --log-level=error\n\nShow logs as grouped by each target:\n\n $ lage build test lint --grouped --verbose\n\nChoosing a different reporter while logging (e.g. nice outputs for Azure DevOps):\n\n $ lage build test lint --reporter=azureDevOps\n\nOr combine multiple reporters (e.g. Azure DepOps with VerboseFileLog)\n\n $ lage build test lint --reporter azureDevOps --reporter vfl --log-file /my/verbose/log.file\n\nIgnoring files when calculating the scope with --since in addition to files specified in lage.config:\n\n $ lage build test lint --since origin/master --ignore \"package.json\" \"yarn.lock\" \"**/.azure-pipelines/**\"\n\n`\n );\n\nexport { command as runCommand };\n"],"names":["runCommand","command","Command","addOptions","action","allowUnknownOption","addHelpCommand","addHelpText"],"mappings":";;;;+BAmFoBA;;;eAAXC;;;2BAnFe;wBACD;4BACI;AAE3B,MAAMA,UAAmB,IAAIC,kBAAO,CAAC;AAErCC,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,QAAQF;AACnBE,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,OAAOF;AAElBA,QACGG,MAAM,CAACA,cAAM,EACbC,kBAAkB,CAAC,MACnBC,cAAc,CAAC,kDAAkD,gBACjEC,WAAW,CACV,SACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DL,CAAC"}
1
+ {"version":3,"sources":["../../../src/commands/run/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { action } from \"./action.js\";\nimport { addOptions } from \"../addOptions.js\";\n\nconst command: Command = new Command(\"run\");\n\naddOptions(\"filter\", command);\naddOptions(\"logger\", command);\naddOptions(\"pool\", command);\naddOptions(\"runner\", command);\naddOptions(\"run\", command);\n\ncommand\n .action(action)\n .allowUnknownOption(true)\n .addHelpCommand(\"[run] command1 [command2...commandN] [options]\", \"run commands\")\n .addHelpText(\n \"after\",\n `\nRuns a set of commands in a target graph. The targets are defined by packages and their scripts as defined the package.json files.\n\nExamples\n========\n\n### Basic case, running \"build\", \"test\", and \"lint\" against all packages\n\n $ lage build test lint\n\n### Concurrency\n\n $ lage build test lint --concurrency=4\n\n### Filtering by certain packages\n\nScoped to \"package-a\" and \"package-b\" and their dependencies and dependents:\n\n $ lage build test lint --scope package-a package-b\n\nScoped to \"package-a\" and \"package-b\" only:\n\n $ lage build test lint --scope package-a package-b --no-deps\n\nScoped to packages that have changed in the current branch against a target merge branch:\n\n $ lage build test lint --since origin/master\n\n### Providing node.js arguments for each command\n\n $ lage build test lint --nodearg=--max_old_space_size=1234 --nodearg=--heap-prof\n\n### Continue running even after encountering an error for one of the targets\n\n $ lage build test lint --continue\n\n### Controlling logged outputs\n\nShow verbose output for each target:\n\n $ lage build test lint --verbose\n\nShow only errors for each target:\n\n $ lage build test lint --log-level=error\n\nShow logs as grouped by each target:\n\n $ lage build test lint --grouped --verbose\n\nChoosing a different reporter while logging (e.g. nice outputs for Azure DevOps):\n\n $ lage build test lint --reporter=azureDevops\n\nOr combine multiple reporters (e.g. Azure DepOps with VerboseFileLog)\n\n $ lage build test lint --reporter azureDevops --reporter vfl --log-file /my/verbose/log.file\n\nIgnoring files when calculating the scope with --since in addition to files specified in lage.config:\n\n $ lage build test lint --since origin/master --ignore \"package.json\" \"yarn.lock\" \"**/.azure-pipelines/**\"\n\n`\n );\n\nexport { command as runCommand };\n"],"names":["runCommand","command","Command","addOptions","action","allowUnknownOption","addHelpCommand","addHelpText"],"mappings":";;;;+BAmFoBA;;;eAAXC;;;2BAnFe;wBACD;4BACI;AAE3B,MAAMA,UAAmB,IAAIC,kBAAO,CAAC;AAErCC,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,QAAQF;AACnBE,IAAAA,sBAAU,EAAC,UAAUF;AACrBE,IAAAA,sBAAU,EAAC,OAAOF;AAElBA,QACGG,MAAM,CAACA,cAAM,EACbC,kBAAkB,CAAC,MACnBC,cAAc,CAAC,kDAAkD,gBACjEC,WAAW,CACV,SACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DL,CAAC"}
@@ -18,7 +18,7 @@ const _scheduler = require("@lage-run/scheduler");
18
18
  const _logger = /*#__PURE__*/ _interop_require_default(require("@lage-run/logger"));
19
19
  const _errors = require("../../types/errors.js");
20
20
  const _createCacheProvider = require("../../cache/createCacheProvider.js");
21
- const _runnerPickerOptions = require("../../runnerPickerOptions.js");
21
+ const _getBuiltInRunners = require("../../getBuiltInRunners.js");
22
22
  const _optimizeTargetGraph = require("../../optimizeTargetGraph.js");
23
23
  function _interop_require_default(obj) {
24
24
  return obj && obj.__esModule ? obj : {
@@ -80,7 +80,11 @@ async function runAction(options, command) {
80
80
  skipLocalCache: options.skipLocalCache,
81
81
  cacheOptions: config.cacheOptions,
82
82
  runners: {
83
- ...(0, _runnerPickerOptions.runnerPickerOptions)(options.nodeArg, config.npmClient, taskArgs),
83
+ ...(0, _getBuiltInRunners.getBuiltInRunners)({
84
+ nodeArg: options.nodeArg,
85
+ npmCmd: config.npmClient,
86
+ taskArgs
87
+ }),
84
88
  ...config.runners
85
89
  }
86
90
  },
@@ -102,7 +106,7 @@ async function runAction(options, command) {
102
106
  await scheduler.cleanup();
103
107
  displaySummaryAndExit(summary, logger.reporters);
104
108
  for (const reporter of reporters){
105
- await reporter.cleanup?.();
109
+ reporter.cleanup?.();
106
110
  }
107
111
  }
108
112
  function displaySummaryAndExit(summary, reporters) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/run/runAction.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { createTargetGraph } from \"./createTargetGraph.js\";\nimport { filterArgsForTasks } from \"./filterArgsForTasks.js\";\nimport { filterPipelineDefinitions } from \"./filterPipelineDefinitions.js\";\nimport { getConfig, getMaxWorkersPerTask, getMaxWorkersPerTaskFromOptions, getConcurrency } from \"@lage-run/config\";\nimport { getPackageInfos, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { initializeReporters } from \"../initializeReporters.js\";\nimport { SimpleScheduler } from \"@lage-run/scheduler\";\n\nimport type { Reporter } from \"@lage-run/logger\";\nimport createLogger from \"@lage-run/logger\";\n\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { FilterOptions } from \"../../types/FilterOptions.js\";\nimport type { SchedulerRunSummary } from \"@lage-run/scheduler-types\";\nimport type { TargetGraph } from \"@lage-run/target-graph\";\nimport { NoTargetFoundError } from \"../../types/errors.js\";\nimport { createCache } from \"../../cache/createCacheProvider.js\";\nimport { runnerPickerOptions } from \"../../runnerPickerOptions.js\";\nimport { optimizeTargetGraph } from \"../../optimizeTargetGraph.js\";\n\ninterface RunOptions extends ReporterInitOptions, FilterOptions {\n concurrency: number;\n maxWorkersPerTask: string[];\n profile: string | boolean | undefined;\n skipLocalCache: boolean;\n continue: boolean;\n cache: boolean;\n resetCache: boolean;\n nodeArg: string;\n allowNoTargetRuns: boolean;\n}\n\nexport async function runAction(options: RunOptions, command: Command): Promise<void> {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n\n // Merged options\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n const allowNoTargetRuns = options.allowNoTargetRuns || config.allowNoTargetRuns;\n\n // Configure logger\n const logger = createLogger();\n\n const reporters = await initializeReporters(logger, { ...options, concurrency }, config.reporters);\n\n // Build Target Graph\n const root = getWorkspaceManagerRoot(process.cwd())!;\n const packageInfos = getPackageInfos(root);\n\n const { tasks, taskArgs } = filterArgsForTasks(command.args);\n\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: options.dependencies,\n dependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n ignore: options.ignore.concat(config.ignore),\n pipeline: config.pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n since: options.since,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n validateTargetGraph(targetGraph, allowNoTargetRuns);\n\n logger.verbose(`Running with ${concurrency} workers`);\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n const maxWorkersPerTaskMap = getMaxWorkersPerTaskFromOptions(options.maxWorkersPerTask);\n\n const { hasher } = await createCache({\n root,\n logger,\n cacheOptions: config.cacheOptions,\n cliArgs: taskArgs,\n skipLocalCache: options.skipLocalCache,\n });\n\n const scheduler = new SimpleScheduler({\n logger,\n concurrency,\n continueOnError: options.continue,\n shouldCache: options.cache,\n shouldResetCache: options.resetCache,\n workerData: {\n root,\n taskArgs,\n skipLocalCache: options.skipLocalCache,\n cacheOptions: config.cacheOptions,\n runners: {\n ...runnerPickerOptions(options.nodeArg, config.npmClient, taskArgs),\n ...config.runners,\n },\n },\n maxWorkersPerTask: new Map([...getMaxWorkersPerTask(filteredPipeline, concurrency), ...maxWorkersPerTaskMap]),\n hasher,\n workerIdleMemoryLimit: config.workerIdleMemoryLimit, // in bytes\n });\n\n const optimizedTargets = await optimizeTargetGraph(targetGraph, scheduler.runnerPicker, false);\n const optimizedGraph: TargetGraph = {\n targets: new Map(optimizedTargets.map((target) => [target.id, target])),\n };\n\n const summary = await scheduler.run(root, optimizedGraph);\n await scheduler.cleanup();\n\n displaySummaryAndExit(summary, logger.reporters);\n\n for (const reporter of reporters) {\n await reporter.cleanup?.();\n }\n}\n\nfunction displaySummaryAndExit(summary: SchedulerRunSummary, reporters: Reporter[]) {\n if (summary.results !== \"success\") {\n process.exitCode = 1;\n }\n\n for (const reporter of reporters) {\n reporter.summarize(summary);\n }\n}\n\nfunction validateTargetGraph(targetGraph: TargetGraph, allowNoTargetRuns: boolean) {\n const visibleTargets = Array.from(targetGraph.targets.values()).filter((target) => !target.hidden);\n if (visibleTargets.length === 0 && !allowNoTargetRuns) {\n throw NoTargetFoundError;\n }\n}\n"],"names":["runAction","options","command","cwd","process","config","getConfig","concurrency","getConcurrency","allowNoTargetRuns","logger","createLogger","reporters","initializeReporters","root","getWorkspaceManagerRoot","packageInfos","getPackageInfos","tasks","taskArgs","filterArgsForTasks","args","targetGraph","createTargetGraph","dependencies","dependents","to","ignore","concat","pipeline","repoWideChanges","scope","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","validateTargetGraph","verbose","filteredPipeline","filterPipelineDefinitions","targets","values","maxWorkersPerTaskMap","getMaxWorkersPerTaskFromOptions","maxWorkersPerTask","hasher","createCache","cliArgs","skipLocalCache","scheduler","SimpleScheduler","continueOnError","continue","shouldCache","cache","shouldResetCache","resetCache","workerData","runners","runnerPickerOptions","nodeArg","npmClient","Map","getMaxWorkersPerTask","workerIdleMemoryLimit","optimizedTargets","optimizeTargetGraph","runnerPicker","optimizedGraph","map","target","id","summary","run","cleanup","displaySummaryAndExit","reporter","results","exitCode","summarize","visibleTargets","Array","from","filter","hidden","length","NoTargetFoundError"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/commands/run/runAction.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { createTargetGraph } from \"./createTargetGraph.js\";\nimport { filterArgsForTasks } from \"./filterArgsForTasks.js\";\nimport { filterPipelineDefinitions } from \"./filterPipelineDefinitions.js\";\nimport { getConfig, getMaxWorkersPerTask, getMaxWorkersPerTaskFromOptions, getConcurrency } from \"@lage-run/config\";\nimport { getPackageInfos, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { initializeReporters } from \"../initializeReporters.js\";\nimport { SimpleScheduler } from \"@lage-run/scheduler\";\n\nimport type { Reporter } from \"@lage-run/logger\";\nimport createLogger from \"@lage-run/logger\";\n\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { FilterOptions } from \"../../types/FilterOptions.js\";\nimport type { SchedulerRunSummary } from \"@lage-run/scheduler-types\";\nimport type { TargetGraph } from \"@lage-run/target-graph\";\nimport { NoTargetFoundError } from \"../../types/errors.js\";\nimport { createCache } from \"../../cache/createCacheProvider.js\";\nimport { getBuiltInRunners } from \"../../getBuiltInRunners.js\";\nimport { optimizeTargetGraph } from \"../../optimizeTargetGraph.js\";\n\ninterface RunOptions extends ReporterInitOptions, FilterOptions {\n concurrency: number;\n maxWorkersPerTask: string[];\n profile: string | boolean | undefined;\n skipLocalCache: boolean;\n continue: boolean;\n cache: boolean;\n resetCache: boolean;\n nodeArg: string;\n allowNoTargetRuns: boolean;\n}\n\nexport async function runAction(options: RunOptions, command: Command): Promise<void> {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n\n // Merged options\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n const allowNoTargetRuns = options.allowNoTargetRuns || config.allowNoTargetRuns;\n\n // Configure logger\n const logger = createLogger();\n\n const reporters = await initializeReporters(logger, { ...options, concurrency }, config.reporters);\n\n // Build Target Graph\n const root = getWorkspaceManagerRoot(process.cwd())!;\n const packageInfos = getPackageInfos(root);\n\n const { tasks, taskArgs } = filterArgsForTasks(command.args);\n\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: options.dependencies,\n dependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n ignore: options.ignore.concat(config.ignore),\n pipeline: config.pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n since: options.since,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n validateTargetGraph(targetGraph, allowNoTargetRuns);\n\n logger.verbose(`Running with ${concurrency} workers`);\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n const maxWorkersPerTaskMap = getMaxWorkersPerTaskFromOptions(options.maxWorkersPerTask);\n\n const { hasher } = await createCache({\n root,\n logger,\n cacheOptions: config.cacheOptions,\n cliArgs: taskArgs,\n skipLocalCache: options.skipLocalCache,\n });\n\n const scheduler = new SimpleScheduler({\n logger,\n concurrency,\n continueOnError: options.continue,\n shouldCache: options.cache,\n shouldResetCache: options.resetCache,\n workerData: {\n root,\n taskArgs,\n skipLocalCache: options.skipLocalCache,\n cacheOptions: config.cacheOptions,\n runners: {\n ...getBuiltInRunners({ nodeArg: options.nodeArg, npmCmd: config.npmClient, taskArgs }),\n ...config.runners,\n },\n },\n maxWorkersPerTask: new Map([...getMaxWorkersPerTask(filteredPipeline, concurrency), ...maxWorkersPerTaskMap]),\n hasher,\n workerIdleMemoryLimit: config.workerIdleMemoryLimit, // in bytes\n });\n\n const optimizedTargets = await optimizeTargetGraph(targetGraph, scheduler.runnerPicker, false);\n const optimizedGraph: TargetGraph = {\n targets: new Map(optimizedTargets.map((target) => [target.id, target])),\n };\n\n const summary = await scheduler.run(root, optimizedGraph);\n await scheduler.cleanup();\n\n displaySummaryAndExit(summary, logger.reporters);\n\n for (const reporter of reporters) {\n reporter.cleanup?.();\n }\n}\n\nfunction displaySummaryAndExit(summary: SchedulerRunSummary, reporters: Reporter[]) {\n if (summary.results !== \"success\") {\n process.exitCode = 1;\n }\n\n for (const reporter of reporters) {\n reporter.summarize(summary);\n }\n}\n\nfunction validateTargetGraph(targetGraph: TargetGraph, allowNoTargetRuns: boolean) {\n const visibleTargets = Array.from(targetGraph.targets.values()).filter((target) => !target.hidden);\n if (visibleTargets.length === 0 && !allowNoTargetRuns) {\n throw NoTargetFoundError;\n }\n}\n"],"names":["runAction","options","command","cwd","process","config","getConfig","concurrency","getConcurrency","allowNoTargetRuns","logger","createLogger","reporters","initializeReporters","root","getWorkspaceManagerRoot","packageInfos","getPackageInfos","tasks","taskArgs","filterArgsForTasks","args","targetGraph","createTargetGraph","dependencies","dependents","to","ignore","concat","pipeline","repoWideChanges","scope","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","validateTargetGraph","verbose","filteredPipeline","filterPipelineDefinitions","targets","values","maxWorkersPerTaskMap","getMaxWorkersPerTaskFromOptions","maxWorkersPerTask","hasher","createCache","cliArgs","skipLocalCache","scheduler","SimpleScheduler","continueOnError","continue","shouldCache","cache","shouldResetCache","resetCache","workerData","runners","getBuiltInRunners","nodeArg","npmCmd","npmClient","Map","getMaxWorkersPerTask","workerIdleMemoryLimit","optimizedTargets","optimizeTargetGraph","runnerPicker","optimizedGraph","map","target","id","summary","run","cleanup","displaySummaryAndExit","reporter","results","exitCode","summarize","visibleTargets","Array","from","filter","hidden","length","NoTargetFoundError"],"mappings":"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"}
@@ -18,7 +18,7 @@ const _scheduler = require("@lage-run/scheduler");
18
18
  const _watcher = require("./watcher.js");
19
19
  const _logger = /*#__PURE__*/ _interop_require_wildcard(require("@lage-run/logger"));
20
20
  const _createCacheProvider = require("../../cache/createCacheProvider.js");
21
- const _runnerPickerOptions = require("../../runnerPickerOptions.js");
21
+ const _getBuiltInRunners = require("../../getBuiltInRunners.js");
22
22
  function _getRequireWildcardCache(nodeInterop) {
23
23
  if (typeof WeakMap !== "function") return null;
24
24
  var cacheBabelInterop = new WeakMap();
@@ -111,7 +111,11 @@ async function watchAction(options, command) {
111
111
  skipLocalCache: options.skipLocalCache,
112
112
  cacheOptions: config.cacheOptions,
113
113
  runners: {
114
- ...(0, _runnerPickerOptions.runnerPickerOptions)(options.nodeArg, config.npmClient, taskArgs),
114
+ ...(0, _getBuiltInRunners.getBuiltInRunners)({
115
+ nodeArg: options.nodeArg,
116
+ npmCmd: config.npmClient,
117
+ taskArgs
118
+ }),
115
119
  ...config.runners
116
120
  }
117
121
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/run/watchAction.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { createTargetGraph } from \"./createTargetGraph.js\";\nimport { filterArgsForTasks } from \"./filterArgsForTasks.js\";\nimport { getConfig, getMaxWorkersPerTask, getMaxWorkersPerTaskFromOptions, getConcurrency } from \"@lage-run/config\";\nimport { getPackageInfosAsync, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { filterPipelineDefinitions } from \"./filterPipelineDefinitions.js\";\nimport { LogReporter } from \"@lage-run/reporters\";\nimport { SimpleScheduler } from \"@lage-run/scheduler\";\nimport { watch } from \"./watcher.js\";\n\nimport type { Reporter } from \"@lage-run/logger\";\nimport createLogger, { LogLevel } from \"@lage-run/logger\";\n\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { SchedulerRunSummary } from \"@lage-run/scheduler-types\";\nimport type { Target } from \"@lage-run/target-graph\";\nimport type { FilterOptions } from \"../../types/FilterOptions.js\";\nimport { createCache } from \"../../cache/createCacheProvider.js\";\nimport { runnerPickerOptions } from \"../../runnerPickerOptions.js\";\n\ninterface RunOptions extends ReporterInitOptions, FilterOptions {\n concurrency: number;\n maxWorkersPerTask: string[];\n profile: string | boolean | undefined;\n skipLocalCache: boolean;\n continue: boolean;\n cache: boolean;\n resetCache: boolean;\n nodeArg: string;\n allowNoTargetRuns: boolean;\n}\n\nexport async function watchAction(options: RunOptions, command: Command): Promise<void> {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n\n // Configure logger\n const logger = createLogger();\n const reporter = new LogReporter({\n logLevel: LogLevel[options.logLevel],\n });\n logger.addReporter(reporter);\n\n // Build Target Graph\n const root = getWorkspaceManagerRoot(process.cwd())!;\n const packageInfos = await getPackageInfosAsync(root);\n\n const { tasks, taskArgs } = filterArgsForTasks(command.args);\n\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: options.dependencies,\n dependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n ignore: options.ignore.concat(config.ignore),\n pipeline: config.pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n since: options.since,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n // Make sure we do not attempt writeRemoteCache in watch mode\n config.cacheOptions.writeRemoteCache = false;\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n const maxWorkersPerTaskMap = getMaxWorkersPerTaskFromOptions(options.maxWorkersPerTask);\n\n const { hasher } = await createCache({\n root,\n logger,\n cacheOptions: config.cacheOptions,\n cliArgs: taskArgs,\n skipLocalCache: options.skipLocalCache,\n });\n\n const scheduler = new SimpleScheduler({\n logger,\n concurrency,\n continueOnError: true,\n workerData: {\n root,\n taskArgs,\n skipLocalCache: options.skipLocalCache,\n cacheOptions: config.cacheOptions,\n runners: {\n ...runnerPickerOptions(options.nodeArg, config.npmClient, taskArgs),\n ...config.runners,\n },\n },\n shouldCache: options.cache,\n shouldResetCache: options.resetCache,\n maxWorkersPerTask: new Map([...getMaxWorkersPerTask(filteredPipeline, concurrency), ...maxWorkersPerTaskMap]),\n hasher,\n workerIdleMemoryLimit: config.workerIdleMemoryLimit, // in bytes\n });\n\n // Initial run\n const summary = await scheduler.run(root, targetGraph);\n displaySummary(summary, logger.reporters);\n\n logger.info(\"Running scheduler in watch mode\");\n\n // Disables cache for subsequent runs\n // TODO: support updating hasher + write-only local cacheProvider for subsequent runs\n for (const targetRun of scheduler.targetRuns.values()) {\n targetRun.options.shouldCache = false;\n }\n\n // When initial run is done, disable fetching of caches on all targets, keep writing to the cache\n const watcher = await watch(root, packageInfos);\n watcher.on(\"change\", async (packageName) => {\n reporter.resetLogEntries();\n const targets = new Map<string, Target>();\n for (const target of targetGraph.targets.values()) {\n if (target.packageName === packageName) {\n targets.set(target.id, target);\n }\n }\n\n const deltaGraph = { targets };\n\n const summary = await scheduler.run(root, deltaGraph, true);\n displaySummary(summary, logger.reporters);\n });\n}\n\nfunction displaySummary(summary: SchedulerRunSummary, reporters: Reporter[]) {\n for (const reporter of reporters) {\n reporter.summarize(summary);\n reporter.cleanup?.();\n }\n}\n"],"names":["watchAction","options","command","cwd","process","config","getConfig","concurrency","getConcurrency","logger","createLogger","reporter","LogReporter","logLevel","LogLevel","addReporter","root","getWorkspaceManagerRoot","packageInfos","getPackageInfosAsync","tasks","taskArgs","filterArgsForTasks","args","targetGraph","createTargetGraph","dependencies","dependents","to","ignore","concat","pipeline","repoWideChanges","scope","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","writeRemoteCache","filteredPipeline","filterPipelineDefinitions","targets","values","maxWorkersPerTaskMap","getMaxWorkersPerTaskFromOptions","maxWorkersPerTask","hasher","createCache","cliArgs","skipLocalCache","scheduler","SimpleScheduler","continueOnError","workerData","runners","runnerPickerOptions","nodeArg","npmClient","shouldCache","cache","shouldResetCache","resetCache","Map","getMaxWorkersPerTask","workerIdleMemoryLimit","summary","run","displaySummary","reporters","info","targetRun","targetRuns","watcher","watch","on","packageName","resetLogEntries","target","set","id","deltaGraph","summarize","cleanup"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/commands/run/watchAction.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { createTargetGraph } from \"./createTargetGraph.js\";\nimport { filterArgsForTasks } from \"./filterArgsForTasks.js\";\nimport { getConfig, getMaxWorkersPerTask, getMaxWorkersPerTaskFromOptions, getConcurrency } from \"@lage-run/config\";\nimport { getPackageInfosAsync, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { filterPipelineDefinitions } from \"./filterPipelineDefinitions.js\";\nimport { LogReporter } from \"@lage-run/reporters\";\nimport { SimpleScheduler } from \"@lage-run/scheduler\";\nimport { watch } from \"./watcher.js\";\n\nimport type { Reporter } from \"@lage-run/logger\";\nimport createLogger, { LogLevel } from \"@lage-run/logger\";\n\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { SchedulerRunSummary } from \"@lage-run/scheduler-types\";\nimport type { Target } from \"@lage-run/target-graph\";\nimport type { FilterOptions } from \"../../types/FilterOptions.js\";\nimport { createCache } from \"../../cache/createCacheProvider.js\";\nimport { getBuiltInRunners } from \"../../getBuiltInRunners.js\";\n\ninterface RunOptions extends ReporterInitOptions, FilterOptions {\n concurrency: number;\n maxWorkersPerTask: string[];\n profile: string | boolean | undefined;\n skipLocalCache: boolean;\n continue: boolean;\n cache: boolean;\n resetCache: boolean;\n nodeArg: string;\n allowNoTargetRuns: boolean;\n}\n\nexport async function watchAction(options: RunOptions, command: Command): Promise<void> {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n\n // Configure logger\n const logger = createLogger();\n const reporter = new LogReporter({\n logLevel: LogLevel[options.logLevel],\n });\n logger.addReporter(reporter);\n\n // Build Target Graph\n const root = getWorkspaceManagerRoot(process.cwd())!;\n const packageInfos = await getPackageInfosAsync(root);\n\n const { tasks, taskArgs } = filterArgsForTasks(command.args);\n\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: options.dependencies,\n dependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n ignore: options.ignore.concat(config.ignore),\n pipeline: config.pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n since: options.since,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n // Make sure we do not attempt writeRemoteCache in watch mode\n config.cacheOptions.writeRemoteCache = false;\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n const maxWorkersPerTaskMap = getMaxWorkersPerTaskFromOptions(options.maxWorkersPerTask);\n\n const { hasher } = await createCache({\n root,\n logger,\n cacheOptions: config.cacheOptions,\n cliArgs: taskArgs,\n skipLocalCache: options.skipLocalCache,\n });\n\n const scheduler = new SimpleScheduler({\n logger,\n concurrency,\n continueOnError: true,\n workerData: {\n root,\n taskArgs,\n skipLocalCache: options.skipLocalCache,\n cacheOptions: config.cacheOptions,\n runners: {\n ...getBuiltInRunners({ nodeArg: options.nodeArg, npmCmd: config.npmClient, taskArgs }),\n ...config.runners,\n },\n },\n shouldCache: options.cache,\n shouldResetCache: options.resetCache,\n maxWorkersPerTask: new Map([...getMaxWorkersPerTask(filteredPipeline, concurrency), ...maxWorkersPerTaskMap]),\n hasher,\n workerIdleMemoryLimit: config.workerIdleMemoryLimit, // in bytes\n });\n\n // Initial run\n const summary = await scheduler.run(root, targetGraph);\n displaySummary(summary, logger.reporters);\n\n logger.info(\"Running scheduler in watch mode\");\n\n // Disables cache for subsequent runs\n // TODO: support updating hasher + write-only local cacheProvider for subsequent runs\n for (const targetRun of scheduler.targetRuns.values()) {\n targetRun.options.shouldCache = false;\n }\n\n // When initial run is done, disable fetching of caches on all targets, keep writing to the cache\n const watcher = await watch(root, packageInfos);\n watcher.on(\"change\", async (packageName) => {\n reporter.resetLogEntries();\n const targets = new Map<string, Target>();\n for (const target of targetGraph.targets.values()) {\n if (target.packageName === packageName) {\n targets.set(target.id, target);\n }\n }\n\n const deltaGraph = { targets };\n\n const summary = await scheduler.run(root, deltaGraph, true);\n displaySummary(summary, logger.reporters);\n });\n}\n\nfunction displaySummary(summary: SchedulerRunSummary, reporters: Reporter[]) {\n for (const reporter of reporters) {\n reporter.summarize(summary);\n reporter.cleanup?.();\n }\n}\n"],"names":["watchAction","options","command","cwd","process","config","getConfig","concurrency","getConcurrency","logger","createLogger","reporter","LogReporter","logLevel","LogLevel","addReporter","root","getWorkspaceManagerRoot","packageInfos","getPackageInfosAsync","tasks","taskArgs","filterArgsForTasks","args","targetGraph","createTargetGraph","dependencies","dependents","to","ignore","concat","pipeline","repoWideChanges","scope","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","writeRemoteCache","filteredPipeline","filterPipelineDefinitions","targets","values","maxWorkersPerTaskMap","getMaxWorkersPerTaskFromOptions","maxWorkersPerTask","hasher","createCache","cliArgs","skipLocalCache","scheduler","SimpleScheduler","continueOnError","workerData","runners","getBuiltInRunners","nodeArg","npmCmd","npmClient","shouldCache","cache","shouldResetCache","resetCache","Map","getMaxWorkersPerTask","workerIdleMemoryLimit","summary","run","displaySummary","reporters","info","targetRun","targetRuns","watcher","watch","on","packageName","resetLogEntries","target","set","id","deltaGraph","summarize","cleanup"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/server/MemoryStream.ts"],"sourcesContent":["import { Writable } from \"stream\";\n\nexport class MemoryStream extends Writable {\n private chunks: Buffer[];\n\n constructor() {\n super();\n this.chunks = [];\n }\n\n _write(chunk: unknown, encoding: BufferEncoding): void {\n this.chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as any, encoding));\n }\n\n getData(): Buffer {\n return Buffer.concat(this.chunks);\n }\n\n toString(): string {\n return this.getData().toString();\n }\n}\n"],"names":["MemoryStream","Writable","_write","chunk","encoding","chunks","push","Buffer","isBuffer","from","getData","concat","toString"],"mappings":";;;;+BAEaA;;;eAAAA;;;wBAFY;;;;;;;;;;;;;;AAElB,MAAMA,qBAAqBC,gBAAQ;IAQxCC,OAAOC,KAAc,EAAEC,QAAwB,EAAQ;QACrD,IAAI,CAACC,MAAM,CAACC,IAAI,CAACC,OAAOC,QAAQ,CAACL,SAASA,QAAQI,OAAOE,IAAI,CAACN,OAAcC;IAC9E;IAEAM,UAAkB;QAChB,OAAOH,OAAOI,MAAM,CAAC,IAAI,CAACN,MAAM;IAClC;IAEAO,WAAmB;QACjB,OAAO,IAAI,CAACF,OAAO,GAAGE,QAAQ;IAChC;IAfA,aAAc;QACZ,KAAK,IAHP,uBAAQP,UAAR,KAAA;QAIE,IAAI,CAACA,MAAM,GAAG,EAAE;IAClB;AAaF"}
1
+ {"version":3,"sources":["../../../src/commands/server/MemoryStream.ts"],"sourcesContent":["import { Writable } from \"stream\";\n\nexport class MemoryStream extends Writable {\n private chunks: Buffer[];\n\n constructor() {\n super();\n this.chunks = [];\n }\n\n public _write(chunk: unknown, encoding: BufferEncoding): void {\n this.chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as any, encoding));\n }\n\n public getData(): Buffer {\n return Buffer.concat(this.chunks);\n }\n\n public toString(): string {\n return this.getData().toString();\n }\n}\n"],"names":["MemoryStream","Writable","_write","chunk","encoding","chunks","push","Buffer","isBuffer","from","getData","concat","toString"],"mappings":";;;;+BAEaA;;;eAAAA;;;wBAFY;;;;;;;;;;;;;;AAElB,MAAMA,qBAAqBC,gBAAQ;IAQjCC,OAAOC,KAAc,EAAEC,QAAwB,EAAQ;QAC5D,IAAI,CAACC,MAAM,CAACC,IAAI,CAACC,OAAOC,QAAQ,CAACL,SAASA,QAAQI,OAAOE,IAAI,CAACN,OAAcC;IAC9E;IAEOM,UAAkB;QACvB,OAAOH,OAAOI,MAAM,CAAC,IAAI,CAACN,MAAM;IAClC;IAEOO,WAAmB;QACxB,OAAO,IAAI,CAACF,OAAO,GAAGE,QAAQ;IAChC;IAfA,aAAc;QACZ,KAAK,IAHP,uBAAQP,UAAR,KAAA;QAIE,IAAI,CAACA,MAAM,GAAG,EAAE;IAClB;AAaF"}
@@ -17,7 +17,7 @@ const _workerthreadspool = require("@lage-run/worker-threads-pool");
17
17
  const _hasher = require("@lage-run/hasher");
18
18
  const _getOutputFiles = require("./getOutputFiles.js");
19
19
  const _MemoryStream = require("./MemoryStream.js");
20
- const _runnerPickerOptions = require("../../runnerPickerOptions.js");
20
+ const _getBuiltInRunners = require("../../getBuiltInRunners.js");
21
21
  const _filterPipelineDefinitions = require("../run/filterPipelineDefinitions.js");
22
22
  const _formathrtime = require("@lage-run/format-hrtime");
23
23
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
@@ -86,7 +86,11 @@ async function createInitializedPromise({ cwd, logger, serverControls, nodeArg,
86
86
  stderr: true,
87
87
  workerData: {
88
88
  runners: {
89
- ...(0, _runnerPickerOptions.runnerPickerOptions)(nodeArg, config.npmClient, taskArgs),
89
+ ...(0, _getBuiltInRunners.getBuiltInRunners)({
90
+ nodeArg,
91
+ npmCmd: config.npmClient,
92
+ taskArgs
93
+ }),
90
94
  ...config.runners,
91
95
  shouldCache: false,
92
96
  shouldResetCache: false
@@ -149,7 +153,11 @@ async function createLageService({ cwd, serverControls, logger, concurrency, tas
149
153
  concurrency,
150
154
  tasks
151
155
  });
152
- const runners = (0, _runnerPickerOptions.runnerPickerOptions)(request.nodeOptions, config.npmClient, request.taskArgs);
156
+ const runners = (0, _getBuiltInRunners.getBuiltInRunners)({
157
+ nodeArg: request.nodeOptions,
158
+ npmCmd: config.npmClient,
159
+ taskArgs: request.taskArgs
160
+ });
153
161
  const id = (0, _targetgraph.getTargetId)(request.packageName, request.task);
154
162
  if (!targetGraph.targets.has(id)) {
155
163
  logger.info(`Target not found: ${request.packageName}#${request.task}`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/server/lageService.ts"],"sourcesContent":["import { type ConfigOptions, getConfig, getConcurrency, getMaxWorkersPerTask } from \"@lage-run/config\";\nimport type { Logger } from \"@lage-run/logger\";\nimport { ConnectError, Code, type ILageService } from \"@lage-run/rpc\";\nimport { getStartTargetId, getTargetId, type TargetGraph } from \"@lage-run/target-graph\";\nimport { type DependencyMap, getPackageInfos, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { createTargetGraph } from \"../run/createTargetGraph.js\";\nimport { type Readable } from \"stream\";\nimport { type Pool, AggregatedPool } from \"@lage-run/worker-threads-pool\";\nimport { getInputFiles, type PackageTree, TargetHasher } from \"@lage-run/hasher\";\nimport { getOutputFiles } from \"./getOutputFiles.js\";\nimport { MemoryStream } from \"./MemoryStream.js\";\nimport { runnerPickerOptions } from \"../../runnerPickerOptions.js\";\nimport { filterPipelineDefinitions } from \"../run/filterPipelineDefinitions.js\";\nimport type { TargetRun } from \"@lage-run/scheduler-types\";\nimport { formatDuration, hrToSeconds, hrtimeDiff } from \"@lage-run/format-hrtime\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { getGlobalInputHashFilePath, getHashFilePath } from \"../targetHashFilePath.js\";\n\ninterface LageServiceContext {\n config: ConfigOptions;\n targetGraph: TargetGraph;\n packageTree: PackageTree;\n dependencyMap: DependencyMap;\n root: string;\n pool: Pool;\n targetHasher: TargetHasher;\n}\n\nlet initializedPromise: Promise<LageServiceContext> | undefined;\ninterface ServiceControls {\n abortController: AbortController;\n countdownToShutdown: () => void;\n clearCountdown: () => void;\n}\ninterface InitializeOptions {\n cwd: string;\n logger: Logger;\n serverControls: ServiceControls;\n concurrency?: number;\n nodeArg?: string;\n taskArgs: string[];\n tasks: string[];\n}\n\nfunction formatBytes(bytes: number) {\n return `${(bytes / 1024 / 1024).toFixed(2)} MB`;\n}\n\nasync function createInitializedPromise({ cwd, logger, serverControls, nodeArg, taskArgs, concurrency, tasks }: InitializeOptions) {\n if (initializedPromise) {\n return initializedPromise;\n }\n\n const config = await getConfig(cwd);\n const root = getWorkspaceManagerRoot(cwd)!;\n const maxWorkers = getConcurrency(concurrency, config.concurrency);\n\n logger.info(`Initializing with ${maxWorkers} workers, tasks: ${tasks.join(\", \")}`);\n\n const { pipeline } = config;\n\n const packageInfos = getPackageInfos(root);\n\n logger.info(\"Initializing target graph\");\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: false,\n dependents: false,\n ignore: [],\n pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: undefined,\n since: undefined,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n const targetHasher = new TargetHasher({\n root,\n environmentGlob: config.cacheOptions?.environmentGlob ?? [],\n logger,\n cacheKey: config.cacheOptions?.cacheKey,\n cliArgs: taskArgs,\n });\n\n logger.info(\"Initializing hasher\");\n await targetHasher.initialize();\n\n logger.info(\"Initializing dependency map\");\n\n const packageTree = targetHasher.packageTree!;\n const dependencyMap = targetHasher.dependencyMap;\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n logger.info(\"Initializing Pool\");\n const pool = new AggregatedPool({\n logger,\n maxWorkersByGroup: new Map([...getMaxWorkersPerTask(filteredPipeline, maxWorkers)]),\n groupBy: ({ target }) => target.task,\n maxWorkers,\n script: require.resolve(\"./singleTargetWorker.js\"),\n workerOptions: {\n stdout: true,\n stderr: true,\n workerData: {\n runners: {\n ...runnerPickerOptions(nodeArg, config.npmClient, taskArgs),\n ...config.runners,\n shouldCache: false,\n shouldResetCache: false,\n },\n },\n },\n workerIdleMemoryLimit: config.workerIdleMemoryLimit,\n });\n\n serverControls.abortController.signal.addEventListener(\"abort\", () => {\n void pool?.close();\n });\n\n pool?.on(\"freedWorker\", () => {\n logger.silly(`Max Worker Memory Usage: ${formatBytes(pool?.stats().maxWorkerMemoryUsage)}`);\n });\n\n pool?.on(\"idle\", () => {\n logger.info(\"All workers are idle, shutting down after timeout\");\n serverControls.countdownToShutdown();\n });\n\n logger.info(\"done initializing\");\n return { config, targetGraph, packageTree, dependencyMap, root, pool, targetHasher };\n}\n\n/**\n * Initializes the lageService: the extra \"initializePromise\" ensures only one initialization is done at a time across threads\n * @param cwd\n * @param logger\n * @returns\n */\nasync function initialize(options: InitializeOptions): Promise<LageServiceContext> {\n initializedPromise = createInitializedPromise(options);\n return initializedPromise;\n}\n\ninterface CreateLageServiceOptions {\n cwd: string;\n serverControls: ServiceControls;\n logger: Logger;\n concurrency?: number;\n tasks: string[];\n}\n\nexport async function createLageService({\n cwd,\n serverControls,\n logger,\n concurrency,\n tasks,\n}: CreateLageServiceOptions): Promise<ILageService> {\n return {\n async ping() {\n return { pong: true };\n },\n\n async runTarget(request) {\n if (global.gc) {\n global.gc();\n }\n\n serverControls.clearCountdown();\n\n // THIS IS A BIG ASSUMPTION; TODO: memoize based on the parameters of the initialize() call\n // The first request sets up the nodeArg and taskArgs - we are assuming that all requests to run this target are coming from the same\n // `lage info` call\n const { config, targetGraph, dependencyMap, packageTree, root, pool, targetHasher } = await initialize({\n cwd,\n logger,\n nodeArg: request.nodeOptions,\n taskArgs: request.taskArgs,\n serverControls,\n concurrency,\n tasks,\n });\n\n const runners = runnerPickerOptions(request.nodeOptions, config.npmClient, request.taskArgs);\n\n const id = getTargetId(request.packageName, request.task);\n\n if (!targetGraph.targets.has(id)) {\n logger.info(`Target not found: ${request.packageName}#${request.task}`);\n return {\n packageName: request.packageName,\n task: request.task,\n exitCode: 1,\n };\n }\n\n logger.info(`Running target: ${request.packageName}#${request.task}`);\n\n const target = targetGraph.targets.get(id)!;\n const task = {\n target,\n runners,\n };\n\n const writableStdout = new MemoryStream();\n const writableStderr = new MemoryStream();\n let pipedStdout: Readable;\n let pipedStderr: Readable;\n\n const targetRun: TargetRun = {\n queueTime: process.hrtime(),\n target,\n duration: [0, 0],\n startTime: [0, 0],\n status: \"queued\",\n threadId: 0,\n };\n\n let results: {\n packageName?: string;\n task: string;\n cwd: string;\n exitCode: number;\n inputs: string[];\n outputs: string[];\n stdout: string;\n stderr: string;\n id: string;\n globalInputHashFile: string;\n };\n\n const inputs = getInputFiles(target, dependencyMap, packageTree);\n\n for (const dep of target.dependencies) {\n if (dep === getStartTargetId()) {\n continue;\n }\n\n const depTarget = targetGraph.targets.get(dep)!;\n inputs.push(path.join(path.relative(root, depTarget.cwd), getHashFilePath(depTarget)).replace(/\\\\/g, \"/\"));\n }\n\n // Write the target hash to a file for its dependants to use\n const targetHashFile = getHashFilePath(target);\n const targetHashFullPath = path.join(target.cwd, targetHashFile);\n\n try {\n if (!fs.existsSync(path.dirname(targetHashFullPath))) {\n fs.mkdirSync(path.dirname(targetHashFullPath), { recursive: true });\n }\n\n fs.writeFileSync(targetHashFullPath, await targetHasher.hash(target));\n } catch (e) {\n throw new ConnectError(`Error writing target hash file: ${targetHashFullPath}`, Code.Internal);\n }\n\n const targetGlobalInputHashRelativePath = getGlobalInputHashFilePath(target);\n\n try {\n await pool.exec(\n task,\n 0,\n (worker, stdout, stderr) => {\n logger.info(`[${worker.threadId}] ${request.packageName}#${request.task} start`);\n\n pipedStdout = stdout;\n pipedStderr = stderr;\n\n stdout.pipe(writableStdout);\n stderr.pipe(writableStderr);\n\n targetRun.threadId = worker.threadId;\n targetRun.status = \"running\";\n targetRun.startTime = process.hrtime();\n },\n (worker) => {\n logger.info(`Max Worker Memory Usage: ${formatBytes(pool.stats().maxWorkerMemoryUsage)}`);\n\n // logger.info the main process memory usage\n const memoryUsage = process.memoryUsage();\n logger.info(\n `Main Process Memory Usage: RSS: ${formatBytes(memoryUsage.rss)} Heap Total: ${formatBytes(\n memoryUsage.heapTotal\n )} Heap Used: ${formatBytes(memoryUsage.heapUsed)}`\n );\n\n targetRun.status = \"success\";\n targetRun.duration = hrtimeDiff(targetRun.startTime, process.hrtime());\n\n logger.info(\n `[${worker.threadId}] ${request.packageName}#${request.task} end: ${formatDuration(hrToSeconds(targetRun.duration))}`\n );\n pipedStdout.unpipe(writableStdout);\n pipedStderr.unpipe(writableStderr);\n }\n );\n\n const outputs = getOutputFiles(root, target, config.cacheOptions?.outputGlob, packageTree);\n const targetHashFileRelativePath = path.relative(root, targetHashFullPath).replace(/\\\\/g, \"/\");\n outputs.push(targetHashFileRelativePath);\n\n results = {\n packageName: request.packageName,\n task: request.task,\n cwd: target.cwd,\n exitCode: 0,\n inputs,\n outputs,\n stdout: writableStdout.toString(),\n stderr: writableStderr.toString(),\n id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n };\n } catch (e) {\n const outputs = getOutputFiles(root, target, config.cacheOptions?.outputGlob, packageTree);\n const targetHashFileRelativePath = path.relative(root, targetHashFullPath).replace(/\\\\/g, \"/\");\n outputs.push(targetHashFileRelativePath);\n\n targetRun.status = \"failed\";\n targetRun.duration = hrtimeDiff(targetRun.startTime, process.hrtime());\n\n results = {\n packageName: request.packageName,\n task: request.task,\n cwd: target.cwd,\n exitCode: 1,\n inputs,\n outputs,\n stdout: \"\",\n stderr: e instanceof Error ? e.toString() : \"\",\n id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n };\n }\n\n logger.info(\n `${request.packageName}#${request.task} results: \\n${JSON.stringify(\n {\n packageName: results.packageName,\n task: results.task,\n cwd: results.cwd,\n exitCode: results.exitCode,\n inputs: results.inputs,\n outputs: results.outputs,\n id: results.id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n },\n null,\n 2\n )}\\n------`,\n results\n );\n\n return results;\n },\n };\n}\n"],"names":["createLageService","initializedPromise","formatBytes","bytes","toFixed","createInitializedPromise","cwd","logger","serverControls","nodeArg","taskArgs","concurrency","tasks","config","getConfig","root","getWorkspaceManagerRoot","maxWorkers","getConcurrency","info","join","pipeline","packageInfos","getPackageInfos","targetGraph","createTargetGraph","dependencies","dependents","ignore","repoWideChanges","scope","undefined","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","targetHasher","TargetHasher","environmentGlob","cacheKey","cliArgs","initialize","packageTree","dependencyMap","filteredPipeline","filterPipelineDefinitions","targets","values","pool","AggregatedPool","maxWorkersByGroup","Map","getMaxWorkersPerTask","groupBy","target","task","script","require","resolve","workerOptions","stdout","stderr","workerData","runners","runnerPickerOptions","npmClient","shouldCache","shouldResetCache","workerIdleMemoryLimit","abortController","signal","addEventListener","close","on","silly","stats","maxWorkerMemoryUsage","countdownToShutdown","options","ping","pong","runTarget","request","global","gc","clearCountdown","nodeOptions","id","getTargetId","packageName","has","exitCode","get","writableStdout","MemoryStream","writableStderr","pipedStdout","pipedStderr","targetRun","queueTime","process","hrtime","duration","startTime","status","threadId","results","inputs","getInputFiles","dep","getStartTargetId","depTarget","push","path","relative","getHashFilePath","replace","targetHashFile","targetHashFullPath","fs","existsSync","dirname","mkdirSync","recursive","writeFileSync","hash","e","ConnectError","Code","Internal","targetGlobalInputHashRelativePath","getGlobalInputHashFilePath","exec","worker","pipe","memoryUsage","rss","heapTotal","heapUsed","hrtimeDiff","formatDuration","hrToSeconds","unpipe","getOutputFiles","targetHashFileRelativePath","toString","globalInputHashFile","Error","JSON","stringify"],"mappings":";;;;+BA8JsBA;;;eAAAA;;;wBA9J8D;qBAE9B;6BACU;gCACa;mCAC3C;mCAEQ;wBACoB;gCAC/B;8BACF;qCACO;2CACM;8BAEc;6DACvC;2DACF;oCAC6C;;;;;;AAY5D,IAAIC;AAgBJ,SAASC,YAAYC,KAAa;IAChC,OAAO,GAAG,AAACA,CAAAA,QAAQ,OAAO,IAAG,EAAGC,OAAO,CAAC,GAAG,GAAG,CAAC;AACjD;AAEA,eAAeC,yBAAyB,EAAEC,GAAG,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,KAAK,EAAqB;IAC/H,IAAIX,oBAAoB;QACtB,OAAOA;IACT;IAEA,MAAMY,SAAS,MAAMC,IAAAA,iBAAS,EAACR;IAC/B,MAAMS,OAAOC,IAAAA,uCAAuB,EAACV;IACrC,MAAMW,aAAaC,IAAAA,sBAAc,EAACP,aAAaE,OAAOF,WAAW;IAEjEJ,OAAOY,IAAI,CAAC,CAAC,kBAAkB,EAAEF,WAAW,iBAAiB,EAAEL,MAAMQ,IAAI,CAAC,OAAO;IAEjF,MAAM,EAAEC,QAAQ,EAAE,GAAGR;IAErB,MAAMS,eAAeC,IAAAA,+BAAe,EAACR;IAErCR,OAAOY,IAAI,CAAC;IACZ,MAAMK,cAAc,MAAMC,IAAAA,oCAAiB,EAAC;QAC1ClB;QACAQ;QACAW,cAAc;QACdC,YAAY;QACZC,QAAQ,EAAE;QACVP;QACAQ,iBAAiBhB,OAAOgB,eAAe;QACvCC,OAAOC;QACPC,OAAOD;QACPE,SAASpB,OAAOqB,YAAY,CAACC,UAAU;QACvCvB;QACAU;QACAc,YAAYvB,OAAOuB,UAAU;QAC7BC,2BAA2BxB,OAAOwB,yBAAyB;IAC7D;IAEA,MAAMC,eAAe,IAAIC,oBAAY,CAAC;QACpCxB;QACAyB,iBAAiB3B,OAAOqB,YAAY,EAAEM,mBAAmB,EAAE;QAC3DjC;QACAkC,UAAU5B,OAAOqB,YAAY,EAAEO;QAC/BC,SAAShC;IACX;IAEAH,OAAOY,IAAI,CAAC;IACZ,MAAMmB,aAAaK,UAAU;IAE7BpC,OAAOY,IAAI,CAAC;IAEZ,MAAMyB,cAAcN,aAAaM,WAAW;IAC5C,MAAMC,gBAAgBP,aAAaO,aAAa;IAEhD,MAAMC,mBAAmBC,IAAAA,oDAAyB,EAACvB,YAAYwB,OAAO,CAACC,MAAM,IAAIpC,OAAOQ,QAAQ;IAEhGd,OAAOY,IAAI,CAAC;IACZ,MAAM+B,OAAO,IAAIC,iCAAc,CAAC;QAC9B5C;QACA6C,mBAAmB,IAAIC,IAAI;eAAIC,IAAAA,4BAAoB,EAACR,kBAAkB7B;SAAY;QAClFsC,SAAS,CAAC,EAAEC,MAAM,EAAE,GAAKA,OAAOC,IAAI;QACpCxC;QACAyC,QAAQC,QAAQC,OAAO,CAAC;QACxBC,eAAe;YACbC,QAAQ;YACRC,QAAQ;YACRC,YAAY;gBACVC,SAAS;oBACP,GAAGC,IAAAA,wCAAmB,EAACzD,SAASI,OAAOsD,SAAS,EAAEzD,SAAS;oBAC3D,GAAGG,OAAOoD,OAAO;oBACjBG,aAAa;oBACbC,kBAAkB;gBACpB;YACF;QACF;QACAC,uBAAuBzD,OAAOyD,qBAAqB;IACrD;IAEA9D,eAAe+D,eAAe,CAACC,MAAM,CAACC,gBAAgB,CAAC,SAAS;QAC9D,KAAKvB,MAAMwB;IACb;IAEAxB,MAAMyB,GAAG,eAAe;QACtBpE,OAAOqE,KAAK,CAAC,CAAC,yBAAyB,EAAE1E,YAAYgD,MAAM2B,QAAQC,uBAAuB;IAC5F;IAEA5B,MAAMyB,GAAG,QAAQ;QACfpE,OAAOY,IAAI,CAAC;QACZX,eAAeuE,mBAAmB;IACpC;IAEAxE,OAAOY,IAAI,CAAC;IACZ,OAAO;QAAEN;QAAQW;QAAaoB;QAAaC;QAAe9B;QAAMmC;QAAMZ;IAAa;AACrF;AAEA;;;;;CAKC,GACD,eAAeK,WAAWqC,OAA0B;IAClD/E,qBAAqBI,yBAAyB2E;IAC9C,OAAO/E;AACT;AAUO,eAAeD,kBAAkB,EACtCM,GAAG,EACHE,cAAc,EACdD,MAAM,EACNI,WAAW,EACXC,KAAK,EACoB;IACzB,OAAO;QACL,MAAMqE;YACJ,OAAO;gBAAEC,MAAM;YAAK;QACtB;QAEA,MAAMC,WAAUC,OAAO;YACrB,IAAIC,OAAOC,EAAE,EAAE;gBACbD,OAAOC,EAAE;YACX;YAEA9E,eAAe+E,cAAc;YAE7B,2FAA2F;YAC3F,qIAAqI;YACrI,mBAAmB;YACnB,MAAM,EAAE1E,MAAM,EAAEW,WAAW,EAAEqB,aAAa,EAAED,WAAW,EAAE7B,IAAI,EAAEmC,IAAI,EAAEZ,YAAY,EAAE,GAAG,MAAMK,WAAW;gBACrGrC;gBACAC;gBACAE,SAAS2E,QAAQI,WAAW;gBAC5B9E,UAAU0E,QAAQ1E,QAAQ;gBAC1BF;gBACAG;gBACAC;YACF;YAEA,MAAMqD,UAAUC,IAAAA,wCAAmB,EAACkB,QAAQI,WAAW,EAAE3E,OAAOsD,SAAS,EAAEiB,QAAQ1E,QAAQ;YAE3F,MAAM+E,KAAKC,IAAAA,wBAAW,EAACN,QAAQO,WAAW,EAAEP,QAAQ3B,IAAI;YAExD,IAAI,CAACjC,YAAYwB,OAAO,CAAC4C,GAAG,CAACH,KAAK;gBAChClF,OAAOY,IAAI,CAAC,CAAC,kBAAkB,EAAEiE,QAAQO,WAAW,CAAC,CAAC,EAAEP,QAAQ3B,IAAI,EAAE;gBACtE,OAAO;oBACLkC,aAAaP,QAAQO,WAAW;oBAChClC,MAAM2B,QAAQ3B,IAAI;oBAClBoC,UAAU;gBACZ;YACF;YAEAtF,OAAOY,IAAI,CAAC,CAAC,gBAAgB,EAAEiE,QAAQO,WAAW,CAAC,CAAC,EAAEP,QAAQ3B,IAAI,EAAE;YAEpE,MAAMD,SAAShC,YAAYwB,OAAO,CAAC8C,GAAG,CAACL;YACvC,MAAMhC,OAAO;gBACXD;gBACAS;YACF;YAEA,MAAM8B,iBAAiB,IAAIC,0BAAY;YACvC,MAAMC,iBAAiB,IAAID,0BAAY;YACvC,IAAIE;YACJ,IAAIC;YAEJ,MAAMC,YAAuB;gBAC3BC,WAAWC,QAAQC,MAAM;gBACzB/C;gBACAgD,UAAU;oBAAC;oBAAG;iBAAE;gBAChBC,WAAW;oBAAC;oBAAG;iBAAE;gBACjBC,QAAQ;gBACRC,UAAU;YACZ;YAEA,IAAIC;YAaJ,MAAMC,SAASC,IAAAA,qBAAa,EAACtD,QAAQX,eAAeD;YAEpD,KAAK,MAAMmE,OAAOvD,OAAO9B,YAAY,CAAE;gBACrC,IAAIqF,QAAQC,IAAAA,6BAAgB,KAAI;oBAC9B;gBACF;gBAEA,MAAMC,YAAYzF,YAAYwB,OAAO,CAAC8C,GAAG,CAACiB;gBAC1CF,OAAOK,IAAI,CAACC,aAAI,CAAC/F,IAAI,CAAC+F,aAAI,CAACC,QAAQ,CAACrG,MAAMkG,UAAU3G,GAAG,GAAG+G,IAAAA,mCAAe,EAACJ,YAAYK,OAAO,CAAC,OAAO;YACvG;YAEA,4DAA4D;YAC5D,MAAMC,iBAAiBF,IAAAA,mCAAe,EAAC7D;YACvC,MAAMgE,qBAAqBL,aAAI,CAAC/F,IAAI,CAACoC,OAAOlD,GAAG,EAAEiH;YAEjD,IAAI;gBACF,IAAI,CAACE,WAAE,CAACC,UAAU,CAACP,aAAI,CAACQ,OAAO,CAACH,sBAAsB;oBACpDC,WAAE,CAACG,SAAS,CAACT,aAAI,CAACQ,OAAO,CAACH,qBAAqB;wBAAEK,WAAW;oBAAK;gBACnE;gBAEAJ,WAAE,CAACK,aAAa,CAACN,oBAAoB,MAAMlF,aAAayF,IAAI,CAACvE;YAC/D,EAAE,OAAOwE,GAAG;gBACV,MAAM,IAAIC,iBAAY,CAAC,CAAC,gCAAgC,EAAET,oBAAoB,EAAEU,SAAI,CAACC,QAAQ;YAC/F;YAEA,MAAMC,oCAAoCC,IAAAA,8CAA0B,EAAC7E;YAErE,IAAI;gBACF,MAAMN,KAAKoF,IAAI,CACb7E,MACA,GACA,CAAC8E,QAAQzE,QAAQC;oBACfxD,OAAOY,IAAI,CAAC,CAAC,CAAC,EAAEoH,OAAO5B,QAAQ,CAAC,EAAE,EAAEvB,QAAQO,WAAW,CAAC,CAAC,EAAEP,QAAQ3B,IAAI,CAAC,MAAM,CAAC;oBAE/EyC,cAAcpC;oBACdqC,cAAcpC;oBAEdD,OAAO0E,IAAI,CAACzC;oBACZhC,OAAOyE,IAAI,CAACvC;oBAEZG,UAAUO,QAAQ,GAAG4B,OAAO5B,QAAQ;oBACpCP,UAAUM,MAAM,GAAG;oBACnBN,UAAUK,SAAS,GAAGH,QAAQC,MAAM;gBACtC,GACA,CAACgC;oBACChI,OAAOY,IAAI,CAAC,CAAC,yBAAyB,EAAEjB,YAAYgD,KAAK2B,KAAK,GAAGC,oBAAoB,GAAG;oBAExF,4CAA4C;oBAC5C,MAAM2D,cAAcnC,QAAQmC,WAAW;oBACvClI,OAAOY,IAAI,CACT,CAAC,gCAAgC,EAAEjB,YAAYuI,YAAYC,GAAG,EAAE,aAAa,EAAExI,YAC7EuI,YAAYE,SAAS,EACrB,YAAY,EAAEzI,YAAYuI,YAAYG,QAAQ,GAAG;oBAGrDxC,UAAUM,MAAM,GAAG;oBACnBN,UAAUI,QAAQ,GAAGqC,IAAAA,wBAAU,EAACzC,UAAUK,SAAS,EAAEH,QAAQC,MAAM;oBAEnEhG,OAAOY,IAAI,CACT,CAAC,CAAC,EAAEoH,OAAO5B,QAAQ,CAAC,EAAE,EAAEvB,QAAQO,WAAW,CAAC,CAAC,EAAEP,QAAQ3B,IAAI,CAAC,MAAM,EAAEqF,IAAAA,4BAAc,EAACC,IAAAA,yBAAW,EAAC3C,UAAUI,QAAQ,IAAI;oBAEvHN,YAAY8C,MAAM,CAACjD;oBACnBI,YAAY6C,MAAM,CAAC/C;gBACrB;gBAGF,MAAMhE,UAAUgH,IAAAA,8BAAc,EAAClI,MAAMyC,QAAQ3C,OAAOqB,YAAY,EAAEC,YAAYS;gBAC9E,MAAMsG,6BAA6B/B,aAAI,CAACC,QAAQ,CAACrG,MAAMyG,oBAAoBF,OAAO,CAAC,OAAO;gBAC1FrF,QAAQiF,IAAI,CAACgC;gBAEbtC,UAAU;oBACRjB,aAAaP,QAAQO,WAAW;oBAChClC,MAAM2B,QAAQ3B,IAAI;oBAClBnD,KAAKkD,OAAOlD,GAAG;oBACfuF,UAAU;oBACVgB;oBACA5E;oBACA6B,QAAQiC,eAAeoD,QAAQ;oBAC/BpF,QAAQkC,eAAekD,QAAQ;oBAC/B1D;oBACA2D,qBAAqBhB;gBACvB;YACF,EAAE,OAAOJ,GAAG;gBACV,MAAM/F,UAAUgH,IAAAA,8BAAc,EAAClI,MAAMyC,QAAQ3C,OAAOqB,YAAY,EAAEC,YAAYS;gBAC9E,MAAMsG,6BAA6B/B,aAAI,CAACC,QAAQ,CAACrG,MAAMyG,oBAAoBF,OAAO,CAAC,OAAO;gBAC1FrF,QAAQiF,IAAI,CAACgC;gBAEb9C,UAAUM,MAAM,GAAG;gBACnBN,UAAUI,QAAQ,GAAGqC,IAAAA,wBAAU,EAACzC,UAAUK,SAAS,EAAEH,QAAQC,MAAM;gBAEnEK,UAAU;oBACRjB,aAAaP,QAAQO,WAAW;oBAChClC,MAAM2B,QAAQ3B,IAAI;oBAClBnD,KAAKkD,OAAOlD,GAAG;oBACfuF,UAAU;oBACVgB;oBACA5E;oBACA6B,QAAQ;oBACRC,QAAQiE,aAAaqB,QAAQrB,EAAEmB,QAAQ,KAAK;oBAC5C1D;oBACA2D,qBAAqBhB;gBACvB;YACF;YAEA7H,OAAOY,IAAI,CACT,GAAGiE,QAAQO,WAAW,CAAC,CAAC,EAAEP,QAAQ3B,IAAI,CAAC,YAAY,EAAE6F,KAAKC,SAAS,CACjE;gBACE5D,aAAaiB,QAAQjB,WAAW;gBAChClC,MAAMmD,QAAQnD,IAAI;gBAClBnD,KAAKsG,QAAQtG,GAAG;gBAChBuF,UAAUe,QAAQf,QAAQ;gBAC1BgB,QAAQD,QAAQC,MAAM;gBACtB5E,SAAS2E,QAAQ3E,OAAO;gBACxBwD,IAAImB,QAAQnB,EAAE;gBACd2D,qBAAqBhB;YACvB,GACA,MACA,GACA,QAAQ,CAAC,EACXxB;YAGF,OAAOA;QACT;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/commands/server/lageService.ts"],"sourcesContent":["import { type ConfigOptions, getConfig, getConcurrency, getMaxWorkersPerTask } from \"@lage-run/config\";\nimport type { Logger } from \"@lage-run/logger\";\nimport { ConnectError, Code, type ILageService } from \"@lage-run/rpc\";\nimport { getStartTargetId, getTargetId, type TargetGraph } from \"@lage-run/target-graph\";\nimport { type DependencyMap, getPackageInfos, getWorkspaceManagerRoot } from \"workspace-tools\";\nimport { createTargetGraph } from \"../run/createTargetGraph.js\";\nimport { type Readable } from \"stream\";\nimport { type Pool, AggregatedPool } from \"@lage-run/worker-threads-pool\";\nimport { getInputFiles, type PackageTree, TargetHasher } from \"@lage-run/hasher\";\nimport { getOutputFiles } from \"./getOutputFiles.js\";\nimport { MemoryStream } from \"./MemoryStream.js\";\nimport { getBuiltInRunners } from \"../../getBuiltInRunners.js\";\nimport { filterPipelineDefinitions } from \"../run/filterPipelineDefinitions.js\";\nimport type { TargetRun } from \"@lage-run/scheduler-types\";\nimport { formatDuration, hrToSeconds, hrtimeDiff } from \"@lage-run/format-hrtime\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { getGlobalInputHashFilePath, getHashFilePath } from \"../targetHashFilePath.js\";\n\ninterface LageServiceContext {\n config: ConfigOptions;\n targetGraph: TargetGraph;\n packageTree: PackageTree;\n dependencyMap: DependencyMap;\n root: string;\n pool: Pool;\n targetHasher: TargetHasher;\n}\n\nlet initializedPromise: Promise<LageServiceContext> | undefined;\ninterface ServiceControls {\n abortController: AbortController;\n countdownToShutdown: () => void;\n clearCountdown: () => void;\n}\ninterface InitializeOptions {\n cwd: string;\n logger: Logger;\n serverControls: ServiceControls;\n concurrency?: number;\n nodeArg?: string;\n taskArgs: string[];\n tasks: string[];\n}\n\nfunction formatBytes(bytes: number) {\n return `${(bytes / 1024 / 1024).toFixed(2)} MB`;\n}\n\nasync function createInitializedPromise({ cwd, logger, serverControls, nodeArg, taskArgs, concurrency, tasks }: InitializeOptions) {\n if (initializedPromise) {\n return initializedPromise;\n }\n\n const config = await getConfig(cwd);\n const root = getWorkspaceManagerRoot(cwd)!;\n const maxWorkers = getConcurrency(concurrency, config.concurrency);\n\n logger.info(`Initializing with ${maxWorkers} workers, tasks: ${tasks.join(\", \")}`);\n\n const { pipeline } = config;\n\n const packageInfos = getPackageInfos(root);\n\n logger.info(\"Initializing target graph\");\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: false,\n dependents: false,\n ignore: [],\n pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: undefined,\n since: undefined,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n priorities: config.priorities,\n enableTargetConfigMerging: config.enableTargetConfigMerging,\n });\n\n const targetHasher = new TargetHasher({\n root,\n environmentGlob: config.cacheOptions?.environmentGlob ?? [],\n logger,\n cacheKey: config.cacheOptions?.cacheKey,\n cliArgs: taskArgs,\n });\n\n logger.info(\"Initializing hasher\");\n await targetHasher.initialize();\n\n logger.info(\"Initializing dependency map\");\n\n const packageTree = targetHasher.packageTree!;\n const dependencyMap = targetHasher.dependencyMap;\n\n const filteredPipeline = filterPipelineDefinitions(targetGraph.targets.values(), config.pipeline);\n\n logger.info(\"Initializing Pool\");\n const pool = new AggregatedPool({\n logger,\n maxWorkersByGroup: new Map([...getMaxWorkersPerTask(filteredPipeline, maxWorkers)]),\n groupBy: ({ target }) => target.task,\n maxWorkers,\n script: require.resolve(\"./singleTargetWorker.js\"),\n workerOptions: {\n stdout: true,\n stderr: true,\n workerData: {\n runners: {\n ...getBuiltInRunners({ nodeArg, npmCmd: config.npmClient, taskArgs }),\n ...config.runners,\n shouldCache: false,\n shouldResetCache: false,\n },\n },\n },\n workerIdleMemoryLimit: config.workerIdleMemoryLimit,\n });\n\n serverControls.abortController.signal.addEventListener(\"abort\", () => {\n void pool?.close();\n });\n\n pool?.on(\"freedWorker\", () => {\n logger.silly(`Max Worker Memory Usage: ${formatBytes(pool?.stats().maxWorkerMemoryUsage)}`);\n });\n\n pool?.on(\"idle\", () => {\n logger.info(\"All workers are idle, shutting down after timeout\");\n serverControls.countdownToShutdown();\n });\n\n logger.info(\"done initializing\");\n return { config, targetGraph, packageTree, dependencyMap, root, pool, targetHasher };\n}\n\n/**\n * Initializes the lageService: the extra \"initializePromise\" ensures only one initialization is done at a time across threads\n * @param cwd\n * @param logger\n * @returns\n */\nasync function initialize(options: InitializeOptions): Promise<LageServiceContext> {\n initializedPromise = createInitializedPromise(options);\n return initializedPromise;\n}\n\ninterface CreateLageServiceOptions {\n cwd: string;\n serverControls: ServiceControls;\n logger: Logger;\n concurrency?: number;\n tasks: string[];\n}\n\nexport async function createLageService({\n cwd,\n serverControls,\n logger,\n concurrency,\n tasks,\n}: CreateLageServiceOptions): Promise<ILageService> {\n return {\n async ping() {\n return { pong: true };\n },\n\n async runTarget(request) {\n if (global.gc) {\n global.gc();\n }\n\n serverControls.clearCountdown();\n\n // THIS IS A BIG ASSUMPTION; TODO: memoize based on the parameters of the initialize() call\n // The first request sets up the nodeArg and taskArgs - we are assuming that all requests to run this target are coming from the same\n // `lage info` call\n const { config, targetGraph, dependencyMap, packageTree, root, pool, targetHasher } = await initialize({\n cwd,\n logger,\n nodeArg: request.nodeOptions,\n taskArgs: request.taskArgs,\n serverControls,\n concurrency,\n tasks,\n });\n\n const runners = getBuiltInRunners({ nodeArg: request.nodeOptions, npmCmd: config.npmClient, taskArgs: request.taskArgs });\n\n const id = getTargetId(request.packageName, request.task);\n\n if (!targetGraph.targets.has(id)) {\n logger.info(`Target not found: ${request.packageName}#${request.task}`);\n return {\n packageName: request.packageName,\n task: request.task,\n exitCode: 1,\n };\n }\n\n logger.info(`Running target: ${request.packageName}#${request.task}`);\n\n const target = targetGraph.targets.get(id)!;\n const task = {\n target,\n runners,\n };\n\n const writableStdout = new MemoryStream();\n const writableStderr = new MemoryStream();\n let pipedStdout: Readable;\n let pipedStderr: Readable;\n\n const targetRun: TargetRun = {\n queueTime: process.hrtime(),\n target,\n duration: [0, 0],\n startTime: [0, 0],\n status: \"queued\",\n threadId: 0,\n };\n\n let results: {\n packageName?: string;\n task: string;\n cwd: string;\n exitCode: number;\n inputs: string[];\n outputs: string[];\n stdout: string;\n stderr: string;\n id: string;\n globalInputHashFile: string;\n };\n\n const inputs = getInputFiles(target, dependencyMap, packageTree);\n\n for (const dep of target.dependencies) {\n if (dep === getStartTargetId()) {\n continue;\n }\n\n const depTarget = targetGraph.targets.get(dep)!;\n inputs.push(path.join(path.relative(root, depTarget.cwd), getHashFilePath(depTarget)).replace(/\\\\/g, \"/\"));\n }\n\n // Write the target hash to a file for its dependants to use\n const targetHashFile = getHashFilePath(target);\n const targetHashFullPath = path.join(target.cwd, targetHashFile);\n\n try {\n if (!fs.existsSync(path.dirname(targetHashFullPath))) {\n fs.mkdirSync(path.dirname(targetHashFullPath), { recursive: true });\n }\n\n fs.writeFileSync(targetHashFullPath, await targetHasher.hash(target));\n } catch (e) {\n throw new ConnectError(`Error writing target hash file: ${targetHashFullPath}`, Code.Internal);\n }\n\n const targetGlobalInputHashRelativePath = getGlobalInputHashFilePath(target);\n\n try {\n await pool.exec(\n task,\n 0,\n (worker, stdout, stderr) => {\n logger.info(`[${worker.threadId}] ${request.packageName}#${request.task} start`);\n\n pipedStdout = stdout;\n pipedStderr = stderr;\n\n stdout.pipe(writableStdout);\n stderr.pipe(writableStderr);\n\n targetRun.threadId = worker.threadId;\n targetRun.status = \"running\";\n targetRun.startTime = process.hrtime();\n },\n (worker) => {\n logger.info(`Max Worker Memory Usage: ${formatBytes(pool.stats().maxWorkerMemoryUsage)}`);\n\n // logger.info the main process memory usage\n const memoryUsage = process.memoryUsage();\n logger.info(\n `Main Process Memory Usage: RSS: ${formatBytes(memoryUsage.rss)} Heap Total: ${formatBytes(\n memoryUsage.heapTotal\n )} Heap Used: ${formatBytes(memoryUsage.heapUsed)}`\n );\n\n targetRun.status = \"success\";\n targetRun.duration = hrtimeDiff(targetRun.startTime, process.hrtime());\n\n logger.info(\n `[${worker.threadId}] ${request.packageName}#${request.task} end: ${formatDuration(hrToSeconds(targetRun.duration))}`\n );\n pipedStdout.unpipe(writableStdout);\n pipedStderr.unpipe(writableStderr);\n }\n );\n\n const outputs = getOutputFiles(root, target, config.cacheOptions?.outputGlob, packageTree);\n const targetHashFileRelativePath = path.relative(root, targetHashFullPath).replace(/\\\\/g, \"/\");\n outputs.push(targetHashFileRelativePath);\n\n results = {\n packageName: request.packageName,\n task: request.task,\n cwd: target.cwd,\n exitCode: 0,\n inputs,\n outputs,\n stdout: writableStdout.toString(),\n stderr: writableStderr.toString(),\n id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n };\n } catch (e) {\n const outputs = getOutputFiles(root, target, config.cacheOptions?.outputGlob, packageTree);\n const targetHashFileRelativePath = path.relative(root, targetHashFullPath).replace(/\\\\/g, \"/\");\n outputs.push(targetHashFileRelativePath);\n\n targetRun.status = \"failed\";\n targetRun.duration = hrtimeDiff(targetRun.startTime, process.hrtime());\n\n results = {\n packageName: request.packageName,\n task: request.task,\n cwd: target.cwd,\n exitCode: 1,\n inputs,\n outputs,\n stdout: \"\",\n stderr: e instanceof Error ? e.toString() : \"\",\n id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n };\n }\n\n logger.info(\n `${request.packageName}#${request.task} results: \\n${JSON.stringify(\n {\n packageName: results.packageName,\n task: results.task,\n cwd: results.cwd,\n exitCode: results.exitCode,\n inputs: results.inputs,\n outputs: results.outputs,\n id: results.id,\n globalInputHashFile: targetGlobalInputHashRelativePath,\n },\n null,\n 2\n )}\\n------`,\n results\n );\n\n return results;\n },\n };\n}\n"],"names":["createLageService","initializedPromise","formatBytes","bytes","toFixed","createInitializedPromise","cwd","logger","serverControls","nodeArg","taskArgs","concurrency","tasks","config","getConfig","root","getWorkspaceManagerRoot","maxWorkers","getConcurrency","info","join","pipeline","packageInfos","getPackageInfos","targetGraph","createTargetGraph","dependencies","dependents","ignore","repoWideChanges","scope","undefined","since","outputs","cacheOptions","outputGlob","priorities","enableTargetConfigMerging","targetHasher","TargetHasher","environmentGlob","cacheKey","cliArgs","initialize","packageTree","dependencyMap","filteredPipeline","filterPipelineDefinitions","targets","values","pool","AggregatedPool","maxWorkersByGroup","Map","getMaxWorkersPerTask","groupBy","target","task","script","require","resolve","workerOptions","stdout","stderr","workerData","runners","getBuiltInRunners","npmCmd","npmClient","shouldCache","shouldResetCache","workerIdleMemoryLimit","abortController","signal","addEventListener","close","on","silly","stats","maxWorkerMemoryUsage","countdownToShutdown","options","ping","pong","runTarget","request","global","gc","clearCountdown","nodeOptions","id","getTargetId","packageName","has","exitCode","get","writableStdout","MemoryStream","writableStderr","pipedStdout","pipedStderr","targetRun","queueTime","process","hrtime","duration","startTime","status","threadId","results","inputs","getInputFiles","dep","getStartTargetId","depTarget","push","path","relative","getHashFilePath","replace","targetHashFile","targetHashFullPath","fs","existsSync","dirname","mkdirSync","recursive","writeFileSync","hash","e","ConnectError","Code","Internal","targetGlobalInputHashRelativePath","getGlobalInputHashFilePath","exec","worker","pipe","memoryUsage","rss","heapTotal","heapUsed","hrtimeDiff","formatDuration","hrToSeconds","unpipe","getOutputFiles","targetHashFileRelativePath","toString","globalInputHashFile","Error","JSON","stringify"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { TargetRunnerPickerOptions } from "@lage-run/runners";
2
+ export declare function getBuiltInRunners(params: {
3
+ nodeArg: string | undefined;
4
+ npmCmd: string;
5
+ taskArgs: string[];
6
+ }): TargetRunnerPickerOptions;
@@ -2,18 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "runnerPickerOptions", {
5
+ Object.defineProperty(exports, "getBuiltInRunners", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return runnerPickerOptions;
8
+ return getBuiltInRunners;
9
9
  }
10
10
  });
11
- function runnerPickerOptions(nodeArg, npmCmd, taskArgs) {
11
+ function getBuiltInRunners(params) {
12
+ const { nodeArg, npmCmd, taskArgs } = params;
12
13
  return {
13
14
  npmScript: {
14
15
  script: require.resolve("./runners/NpmScriptRunner.js"),
15
16
  options: {
16
- nodeArg,
17
+ nodeOptions: nodeArg,
17
18
  taskArgs,
18
19
  npmCmd
19
20
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/getBuiltInRunners.ts"],"sourcesContent":["import type { NpmScriptRunnerOptions, TargetRunnerPickerOptions, WorkerRunnerOptions } from \"@lage-run/runners\";\n\nexport function getBuiltInRunners(params: { nodeArg: string | undefined; npmCmd: string; taskArgs: string[] }): TargetRunnerPickerOptions {\n const { nodeArg, npmCmd, taskArgs } = params;\n return {\n npmScript: {\n script: require.resolve(\"./runners/NpmScriptRunner.js\"),\n options: {\n nodeOptions: nodeArg,\n taskArgs,\n npmCmd,\n } satisfies NpmScriptRunnerOptions,\n },\n worker: {\n script: require.resolve(\"./runners/WorkerRunner.js\"),\n options: {\n taskArgs,\n } satisfies WorkerRunnerOptions,\n },\n noop: {\n script: require.resolve(\"./runners/NoOpRunner.js\"),\n options: {},\n },\n };\n}\n"],"names":["getBuiltInRunners","params","nodeArg","npmCmd","taskArgs","npmScript","script","require","resolve","options","nodeOptions","worker","noop"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,kBAAkBC,MAA2E;IAC3G,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGH;IACtC,OAAO;QACLI,WAAW;YACTC,QAAQC,QAAQC,OAAO,CAAC;YACxBC,SAAS;gBACPC,aAAaR;gBACbE;gBACAD;YACF;QACF;QACAQ,QAAQ;YACNL,QAAQC,QAAQC,OAAO,CAAC;YACxBC,SAAS;gBACPL;YACF;QACF;QACAQ,MAAM;YACJN,QAAQC,QAAQC,OAAO,CAAC;YACxBC,SAAS,CAAC;QACZ;IACF;AACF"}
package/lib/index.d.ts CHANGED
@@ -1,8 +1,3 @@
1
- export type { CacheOptions } from "@lage-run/config";
2
- export type { ConfigOptions } from "@lage-run/config";
3
- export type { Priority } from "@lage-run/config";
4
- export type { PipelineDefinition } from "@lage-run/config";
5
- export type { LoggerOptions } from "@lage-run/config";
6
- export type { TargetRunnerPickerOptions } from "@lage-run/runners";
7
- export type { Target } from "@lage-run/target-graph";
8
- export type { TargetConfig } from "@lage-run/target-graph";
1
+ export type { CacheOptions, ConfigFileOptions, ConfigOptions, LoggerOptions, PipelineDefinition, Priority } from "@lage-run/config";
2
+ export type { NpmScriptRunnerOptions, NpmScriptTargetOptions, TargetRunnerPickerOptions, TargetRunOptions, TargetRunResult, WorkerRunnerFunction, WorkerRunnerFunctionOptions, WorkerRunnerOptions, WorkerTargetOptions, } from "@lage-run/runners";
3
+ export type { Target, TargetConfig } from "@lage-run/target-graph";
@@ -17,7 +17,7 @@ async function optimizeTargetGraph(graph, runnerPicker, createBackCompatGraph) {
17
17
  return true;
18
18
  }
19
19
  if (target.id === (0, _targetgraph.getStartTargetId)()) {
20
- return createBackCompatGraph ? true : false;
20
+ return createBackCompatGraph;
21
21
  }
22
22
  const runner = await runnerPicker.pick(target);
23
23
  if (await runner.shouldRun(target)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/optimizeTargetGraph.ts"],"sourcesContent":["import type { TargetRunnerPicker } from \"@lage-run/runners\";\nimport { type TargetGraph, removeNodes, transitiveReduction, getStartTargetId, type Target } from \"@lage-run/target-graph\";\n\nexport async function optimizeTargetGraph(\n graph: TargetGraph,\n runnerPicker: TargetRunnerPicker,\n createBackCompatGraph: boolean\n): Promise<Target[]> {\n const targetMinimizedNodes = await removeNodes([...graph.targets.values()], async (target) => {\n if (target.type === \"noop\") {\n return true;\n }\n\n if (target.id === getStartTargetId()) {\n return createBackCompatGraph ? true : false;\n }\n\n const runner = await runnerPicker.pick(target);\n if (await runner.shouldRun(target)) {\n return false;\n }\n\n return true;\n });\n\n if (createBackCompatGraph) {\n return targetMinimizedNodes;\n }\n\n const reduced = transitiveReduction(targetMinimizedNodes);\n\n // Update the dependents of nodes based on the new set of dependencies\n // first build up a dependency map for quick lookup\n const dependencyMap = new Map<string, Set<string>>();\n for (const node of reduced) {\n for (const depId of node.dependencies) {\n if (!dependencyMap.has(depId)) {\n dependencyMap.set(depId, new Set<string>());\n }\n dependencyMap.get(depId)!.add(node.id);\n }\n }\n\n // update the dependents of each node\n for (const node of reduced) {\n const dependents = new Set<string>();\n if (dependencyMap.has(node.id)) {\n dependencyMap.get(node.id)!.forEach((dependentId) => dependents.add(dependentId));\n }\n\n node.dependents = Array.from(dependents);\n }\n\n return reduced;\n}\n"],"names":["optimizeTargetGraph","graph","runnerPicker","createBackCompatGraph","targetMinimizedNodes","removeNodes","targets","values","target","type","id","getStartTargetId","runner","pick","shouldRun","reduced","transitiveReduction","dependencyMap","Map","node","depId","dependencies","has","set","Set","get","add","dependents","forEach","dependentId","Array","from"],"mappings":";;;;+BAGsBA;;;eAAAA;;;6BAF4E;AAE3F,eAAeA,oBACpBC,KAAkB,EAClBC,YAAgC,EAChCC,qBAA8B;IAE9B,MAAMC,uBAAuB,MAAMC,IAAAA,wBAAW,EAAC;WAAIJ,MAAMK,OAAO,CAACC,MAAM;KAAG,EAAE,OAAOC;QACjF,IAAIA,OAAOC,IAAI,KAAK,QAAQ;YAC1B,OAAO;QACT;QAEA,IAAID,OAAOE,EAAE,KAAKC,IAAAA,6BAAgB,KAAI;YACpC,OAAOR,wBAAwB,OAAO;QACxC;QAEA,MAAMS,SAAS,MAAMV,aAAaW,IAAI,CAACL;QACvC,IAAI,MAAMI,OAAOE,SAAS,CAACN,SAAS;YAClC,OAAO;QACT;QAEA,OAAO;IACT;IAEA,IAAIL,uBAAuB;QACzB,OAAOC;IACT;IAEA,MAAMW,UAAUC,IAAAA,gCAAmB,EAACZ;IAEpC,sEAAsE;IACtE,mDAAmD;IACnD,MAAMa,gBAAgB,IAAIC;IAC1B,KAAK,MAAMC,QAAQJ,QAAS;QAC1B,KAAK,MAAMK,SAASD,KAAKE,YAAY,CAAE;YACrC,IAAI,CAACJ,cAAcK,GAAG,CAACF,QAAQ;gBAC7BH,cAAcM,GAAG,CAACH,OAAO,IAAII;YAC/B;YACAP,cAAcQ,GAAG,CAACL,OAAQM,GAAG,CAACP,KAAKT,EAAE;QACvC;IACF;IAEA,qCAAqC;IACrC,KAAK,MAAMS,QAAQJ,QAAS;QAC1B,MAAMY,aAAa,IAAIH;QACvB,IAAIP,cAAcK,GAAG,CAACH,KAAKT,EAAE,GAAG;YAC9BO,cAAcQ,GAAG,CAACN,KAAKT,EAAE,EAAGkB,OAAO,CAAC,CAACC,cAAgBF,WAAWD,GAAG,CAACG;QACtE;QAEAV,KAAKQ,UAAU,GAAGG,MAAMC,IAAI,CAACJ;IAC/B;IAEA,OAAOZ;AACT"}
1
+ {"version":3,"sources":["../src/optimizeTargetGraph.ts"],"sourcesContent":["import type { TargetRunnerPicker } from \"@lage-run/runners\";\nimport { type TargetGraph, removeNodes, transitiveReduction, getStartTargetId, type Target } from \"@lage-run/target-graph\";\n\nexport async function optimizeTargetGraph(\n graph: TargetGraph,\n runnerPicker: TargetRunnerPicker,\n createBackCompatGraph: boolean\n): Promise<Target[]> {\n const targetMinimizedNodes = await removeNodes([...graph.targets.values()], async (target) => {\n if (target.type === \"noop\") {\n return true;\n }\n\n if (target.id === getStartTargetId()) {\n return createBackCompatGraph;\n }\n\n const runner = await runnerPicker.pick(target);\n if (await runner.shouldRun(target)) {\n return false;\n }\n\n return true;\n });\n\n if (createBackCompatGraph) {\n return targetMinimizedNodes;\n }\n\n const reduced = transitiveReduction(targetMinimizedNodes);\n\n // Update the dependents of nodes based on the new set of dependencies\n // first build up a dependency map for quick lookup\n const dependencyMap = new Map<string, Set<string>>();\n for (const node of reduced) {\n for (const depId of node.dependencies) {\n if (!dependencyMap.has(depId)) {\n dependencyMap.set(depId, new Set<string>());\n }\n dependencyMap.get(depId)!.add(node.id);\n }\n }\n\n // update the dependents of each node\n for (const node of reduced) {\n const dependents = new Set<string>();\n if (dependencyMap.has(node.id)) {\n dependencyMap.get(node.id)!.forEach((dependentId) => dependents.add(dependentId));\n }\n\n node.dependents = Array.from(dependents);\n }\n\n return reduced;\n}\n"],"names":["optimizeTargetGraph","graph","runnerPicker","createBackCompatGraph","targetMinimizedNodes","removeNodes","targets","values","target","type","id","getStartTargetId","runner","pick","shouldRun","reduced","transitiveReduction","dependencyMap","Map","node","depId","dependencies","has","set","Set","get","add","dependents","forEach","dependentId","Array","from"],"mappings":";;;;+BAGsBA;;;eAAAA;;;6BAF4E;AAE3F,eAAeA,oBACpBC,KAAkB,EAClBC,YAAgC,EAChCC,qBAA8B;IAE9B,MAAMC,uBAAuB,MAAMC,IAAAA,wBAAW,EAAC;WAAIJ,MAAMK,OAAO,CAACC,MAAM;KAAG,EAAE,OAAOC;QACjF,IAAIA,OAAOC,IAAI,KAAK,QAAQ;YAC1B,OAAO;QACT;QAEA,IAAID,OAAOE,EAAE,KAAKC,IAAAA,6BAAgB,KAAI;YACpC,OAAOR;QACT;QAEA,MAAMS,SAAS,MAAMV,aAAaW,IAAI,CAACL;QACvC,IAAI,MAAMI,OAAOE,SAAS,CAACN,SAAS;YAClC,OAAO;QACT;QAEA,OAAO;IACT;IAEA,IAAIL,uBAAuB;QACzB,OAAOC;IACT;IAEA,MAAMW,UAAUC,IAAAA,gCAAmB,EAACZ;IAEpC,sEAAsE;IACtE,mDAAmD;IACnD,MAAMa,gBAAgB,IAAIC;IAC1B,KAAK,MAAMC,QAAQJ,QAAS;QAC1B,KAAK,MAAMK,SAASD,KAAKE,YAAY,CAAE;YACrC,IAAI,CAACJ,cAAcK,GAAG,CAACF,QAAQ;gBAC7BH,cAAcM,GAAG,CAACH,OAAO,IAAII;YAC/B;YACAP,cAAcQ,GAAG,CAACL,OAAQM,GAAG,CAACP,KAAKT,EAAE;QACvC;IACF;IAEA,qCAAqC;IACrC,KAAK,MAAMS,QAAQJ,QAAS;QAC1B,MAAMY,aAAa,IAAIH;QACvB,IAAIP,cAAcK,GAAG,CAACH,KAAKT,EAAE,GAAG;YAC9BO,cAAcQ,GAAG,CAACN,KAAKT,EAAE,EAAGkB,OAAO,CAAC,CAACC,cAAgBF,WAAWD,GAAG,CAACG;QACtE;QAEAV,KAAKQ,UAAU,GAAGG,MAAMC,IAAI,CAACJ;IAC/B;IAEA,OAAOZ;AACT"}
@@ -1,6 +1,6 @@
1
1
  import type { LogLevel } from "@lage-run/logger";
2
2
  /** All the built-in reporter names */
3
- export type BuiltInReporterName = "default" | "profile" | "json" | "azureDevops" | "adoLog" | "npmLog" | "old" | "verboseFileLog" | "vfl" | "fancy";
3
+ export type BuiltInReporterName = "default" | "profile" | "json" | "azureDevops" | "adoLog" | "githubActions" | "gha" | "npmLog" | "old" | "verboseFileLog" | "vfl" | "fancy";
4
4
  /** Built-in or custom reporter name */
5
5
  export type ReporterName = BuiltInReporterName | string;
6
6
  /** All the built-in reporter names */
@@ -23,6 +23,8 @@ _export(exports, {
23
23
  verboseFileLog: true,
24
24
  vfl: true,
25
25
  adoLog: true,
26
+ githubActions: true,
27
+ gha: true,
26
28
  fancy: true,
27
29
  default: true,
28
30
  // Not encouraged
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/ReporterInitOptions.ts"],"sourcesContent":["import type { LogLevel } from \"@lage-run/logger\";\n\n/** All the built-in reporter names */\nexport type BuiltInReporterName =\n | \"default\"\n | \"profile\"\n | \"json\"\n | \"azureDevops\"\n | \"adoLog\"\n | \"npmLog\"\n | \"old\"\n | \"verboseFileLog\"\n | \"vfl\"\n | \"fancy\";\n/** Built-in or custom reporter name */\nexport type ReporterName = BuiltInReporterName | string;\n\n/** Whether each built-in reporter name should be listed in doc output */\nconst shouldListBuiltInReporters: Record<BuiltInReporterName, boolean> = {\n json: true,\n azureDevops: true,\n npmLog: true,\n verboseFileLog: true,\n vfl: true,\n adoLog: true,\n fancy: true,\n default: true,\n // Not encouraged\n old: false,\n // Intended to be set via --profile\n profile: false,\n};\n\n/** All the built-in reporter names */\nexport const builtInReporterNames: string[] = Object.keys(shouldListBuiltInReporters);\n\n/** Built-in reporter names that should be listed in doc output */\nexport const logBuiltInReporterNames: string[] = builtInReporterNames.filter(\n (name) => shouldListBuiltInReporters[name as BuiltInReporterName]\n);\n\nexport interface ReporterInitOptions {\n reporter: ReporterName[] | ReporterName | undefined;\n progress: boolean;\n verbose: boolean;\n grouped: boolean;\n concurrency: number;\n logLevel: keyof typeof LogLevel;\n profile?: boolean | string;\n logFile?: string;\n indented?: boolean;\n}\n"],"names":["builtInReporterNames","logBuiltInReporterNames","shouldListBuiltInReporters","json","azureDevops","npmLog","verboseFileLog","vfl","adoLog","fancy","default","old","profile","Object","keys","filter","name"],"mappings":";;;;;;;;;;;QAkCaA;eAAAA;;QAGAC;eAAAA;;;AApBb,uEAAuE,GACvE,MAAMC,6BAAmE;IACvEC,MAAM;IACNC,aAAa;IACbC,QAAQ;IACRC,gBAAgB;IAChBC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,SAAS;IACT,iBAAiB;IACjBC,KAAK;IACL,mCAAmC;IACnCC,SAAS;AACX;AAGO,MAAMZ,uBAAiCa,OAAOC,IAAI,CAACZ;AAGnD,MAAMD,0BAAoCD,qBAAqBe,MAAM,CAC1E,CAACC,OAASd,0BAA0B,CAACc,KAA4B"}
1
+ {"version":3,"sources":["../../src/types/ReporterInitOptions.ts"],"sourcesContent":["import type { LogLevel } from \"@lage-run/logger\";\n\n/** All the built-in reporter names */\nexport type BuiltInReporterName =\n | \"default\"\n | \"profile\"\n | \"json\"\n | \"azureDevops\"\n | \"adoLog\"\n | \"githubActions\"\n | \"gha\"\n | \"npmLog\"\n | \"old\"\n | \"verboseFileLog\"\n | \"vfl\"\n | \"fancy\";\n/** Built-in or custom reporter name */\nexport type ReporterName = BuiltInReporterName | string;\n\n/** Whether each built-in reporter name should be listed in doc output */\nconst shouldListBuiltInReporters: Record<BuiltInReporterName, boolean> = {\n json: true,\n azureDevops: true,\n npmLog: true,\n verboseFileLog: true,\n vfl: true,\n adoLog: true,\n githubActions: true,\n gha: true,\n fancy: true,\n default: true,\n // Not encouraged\n old: false,\n // Intended to be set via --profile\n profile: false,\n};\n\n/** All the built-in reporter names */\nexport const builtInReporterNames: string[] = Object.keys(shouldListBuiltInReporters);\n\n/** Built-in reporter names that should be listed in doc output */\nexport const logBuiltInReporterNames: string[] = builtInReporterNames.filter(\n (name) => shouldListBuiltInReporters[name as BuiltInReporterName]\n);\n\nexport interface ReporterInitOptions {\n reporter: ReporterName[] | ReporterName | undefined;\n progress: boolean;\n verbose: boolean;\n grouped: boolean;\n concurrency: number;\n logLevel: keyof typeof LogLevel;\n profile?: boolean | string;\n logFile?: string;\n indented?: boolean;\n}\n"],"names":["builtInReporterNames","logBuiltInReporterNames","shouldListBuiltInReporters","json","azureDevops","npmLog","verboseFileLog","vfl","adoLog","githubActions","gha","fancy","default","old","profile","Object","keys","filter","name"],"mappings":";;;;;;;;;;;QAsCaA;eAAAA;;QAGAC;eAAAA;;;AAtBb,uEAAuE,GACvE,MAAMC,6BAAmE;IACvEC,MAAM;IACNC,aAAa;IACbC,QAAQ;IACRC,gBAAgB;IAChBC,KAAK;IACLC,QAAQ;IACRC,eAAe;IACfC,KAAK;IACLC,OAAO;IACPC,SAAS;IACT,iBAAiB;IACjBC,KAAK;IACL,mCAAmC;IACnCC,SAAS;AACX;AAGO,MAAMd,uBAAiCe,OAAOC,IAAI,CAACd;AAGnD,MAAMD,0BAAoCD,qBAAqBiB,MAAM,CAC1E,CAACC,OAAShB,0BAA0B,CAACgB,KAA4B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lage-run/cli",
3
- "version": "0.33.2",
3
+ "version": "0.33.4",
4
4
  "description": "Command Line Interface for Lage",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,25 +15,26 @@
15
15
  "main": "lib/index.js",
16
16
  "types": "lib/index.d.ts",
17
17
  "scripts": {
18
- "build": "tsc",
19
- "start": "tsc -w --preserveWatchOutput",
20
- "test": "monorepo-scripts jest",
18
+ "build": "yarn types && yarn transpile",
19
+ "transpile": "monorepo-scripts transpile",
20
+ "types": "yarn run -T tsc",
21
+ "test": "yarn run -T jest",
21
22
  "lint": "monorepo-scripts lint"
22
23
  },
23
24
  "dependencies": {
24
- "@lage-run/cache": "^1.4.4",
25
- "@lage-run/config": "^0.7.2",
26
- "@lage-run/format-hrtime": "^0.1.7",
27
- "@lage-run/globby": "^14.2.2",
28
- "@lage-run/hasher": "^1.9.2",
29
- "@lage-run/logger": "^1.3.2",
30
- "@lage-run/reporters": "^1.3.7",
31
- "@lage-run/rpc": "^1.4.2",
32
- "@lage-run/runners": "^1.2.6",
33
- "@lage-run/scheduler": "^1.5.16",
34
- "@lage-run/scheduler-types": "^0.3.28",
35
- "@lage-run/target-graph": "^0.12.2",
36
- "@lage-run/worker-threads-pool": "^0.9.2",
25
+ "@lage-run/cache": "^1.4.6",
26
+ "@lage-run/config": "^0.8.0",
27
+ "@lage-run/format-hrtime": "^0.1.8",
28
+ "@lage-run/globby": "^13.0.1",
29
+ "@lage-run/hasher": "^1.9.3",
30
+ "@lage-run/logger": "^1.3.3",
31
+ "@lage-run/reporters": "^1.4.0",
32
+ "@lage-run/rpc": "^1.4.3",
33
+ "@lage-run/runners": "^1.3.0",
34
+ "@lage-run/scheduler": "^1.5.18",
35
+ "@lage-run/scheduler-types": "^0.3.29",
36
+ "@lage-run/target-graph": "^0.12.3",
37
+ "@lage-run/worker-threads-pool": "^0.9.3",
37
38
  "chokidar": "^3.6.0",
38
39
  "commander": "^9.5.0",
39
40
  "execa": "^5.1.1",
@@ -41,7 +42,7 @@
41
42
  "is-interactive": "^1.0.0",
42
43
  "proper-lockfile": "^4.1.2",
43
44
  "shell-quote": "^1.8.3",
44
- "workspace-tools": "^0.40.4"
45
+ "workspace-tools": "^0.41.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@lage-run/monorepo-fixture": "^0.1.0",
@@ -49,7 +50,8 @@
49
50
  "@types/proper-lockfile": "^4.1.4",
50
51
  "@types/shell-quote": "^1.7.5"
51
52
  },
52
- "publishConfig": {
53
- "access": "public"
54
- }
53
+ "files": [
54
+ "lib/!(__*)",
55
+ "lib/!(__*)/**"
56
+ ]
55
57
  }