@lage-run/cli 0.23.5 → 0.23.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -2,7 +2,28 @@
2
2
  "name": "@lage-run/cli",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 10 Oct 2024 20:14:49 GMT",
5
+ "date": "Fri, 11 Oct 2024 22:09:05 GMT",
6
+ "version": "0.23.6",
7
+ "tag": "@lage-run/cli_v0.23.6",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "kchau@microsoft.com",
12
+ "package": "@lage-run/cli",
13
+ "commit": "cd7a1ed3a889ba4f57205b9779eb292863685dec",
14
+ "comment": "moved the picker creation to be just once to be reused in a singletargetworker"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@lage-run/cli",
19
+ "comment": "Bump @lage-run/reporters to v1.2.12",
20
+ "commit": "not available"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "date": "Thu, 10 Oct 2024 20:14:59 GMT",
6
27
  "version": "0.23.5",
7
28
  "tag": "@lage-run/cli_v0.23.5",
8
29
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Change Log - @lage-run/cli
2
2
 
3
- <!-- This log was last generated on Thu, 10 Oct 2024 20:14:49 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Fri, 11 Oct 2024 22:09:05 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.23.6
8
+
9
+ Fri, 11 Oct 2024 22:09:05 GMT
10
+
11
+ ### Patches
12
+
13
+ - moved the picker creation to be just once to be reused in a singletargetworker (kchau@microsoft.com)
14
+ - Bump @lage-run/reporters to v1.2.12
15
+
7
16
  ## 0.23.5
8
17
 
9
- Thu, 10 Oct 2024 20:14:49 GMT
18
+ Thu, 10 Oct 2024 20:14:59 GMT
10
19
 
11
20
  ### Patches
12
21
 
@@ -21,7 +21,8 @@ async function serverAction(options) {
21
21
  const { port =5332 , host ="localhost" , timeout =1 } = options;
22
22
  const logger = (0, _logger.default)();
23
23
  options.logLevel = options.logLevel ?? "info";
24
- options.reporter = options.reporter ?? "json";
24
+ options.logFile = options.logFile ?? "node_modules/.cache/lage/server.log";
25
+ options.reporter = options.reporter ?? "verboseFileLog";
25
26
  (0, _initializeReporters.initializeReporters)(logger, options);
26
27
  logger.info(`Starting server on http://${host}:${port}`);
27
28
  const abortController = new AbortController();
@@ -1,13 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import type { Logger } from "@lage-run/logger";
3
3
  import type { ILageService } from "@lage-run/rpc";
4
+ interface ServiceControls {
5
+ abortController: AbortController;
6
+ countdownToShutdown: () => void;
7
+ clearCountdown: () => void;
8
+ }
4
9
  export declare function createLageService({ cwd, serverControls, logger, maxWorkers, }: {
5
10
  cwd: string;
6
- serverControls: {
7
- abortController: AbortController;
8
- countdownToShutdown: () => void;
9
- clearCountdown: () => void;
10
- };
11
+ serverControls: ServiceControls;
11
12
  logger: Logger;
12
13
  maxWorkers?: number;
13
14
  }): Promise<ILageService>;
15
+ export {};
@@ -36,7 +36,7 @@ let initializedPromise;
36
36
  * @param cwd
37
37
  * @param logger
38
38
  * @returns
39
- */ async function initialize(cwd, logger) {
39
+ */ async function initialize({ cwd , logger , serverControls , nodeArg , taskArgs , maxWorkers }) {
40
40
  if (initializedPromise) {
41
41
  return await initializedPromise;
42
42
  }
@@ -72,31 +72,41 @@ let initializedPromise;
72
72
  });
73
73
  logger.info("Initializing Package Tree");
74
74
  await packageTree.initialize();
75
+ const pool = new _workerthreadspool.WorkerPool({
76
+ script: require.resolve("./singleTargetWorker.js"),
77
+ maxWorkers,
78
+ workerOptions: {
79
+ stderr: true,
80
+ stdout: true,
81
+ workerData: {
82
+ runners: {
83
+ ...(0, _runnerPickerOptions.runnerPickerOptions)(nodeArg, config.npmClient, taskArgs),
84
+ ...config.runners
85
+ }
86
+ }
87
+ }
88
+ });
89
+ serverControls.abortController.signal.addEventListener("abort", ()=>{
90
+ pool?.close();
91
+ });
92
+ pool?.on("idle", ()=>{
93
+ logger.info("All workers are idle, shutting down after timeout");
94
+ serverControls.countdownToShutdown();
95
+ });
75
96
  return {
76
97
  config,
77
98
  targetGraph,
78
99
  packageTree,
79
100
  dependencyMap,
80
- root
101
+ root,
102
+ pool
81
103
  };
82
104
  }
83
105
  initializedPromise = createInitializedPromise();
84
106
  return await initializedPromise;
85
107
  }
86
- let pool;
87
108
  async function createLageService({ cwd , serverControls , logger , maxWorkers }) {
88
109
  logger.info(`Server started with ${maxWorkers} workers`);
89
- pool = new _workerthreadspool.WorkerPool({
90
- script: require.resolve("./singleTargetWorker.js"),
91
- maxWorkers
92
- });
93
- serverControls.abortController.signal.addEventListener("abort", ()=>{
94
- pool?.close();
95
- });
96
- pool?.on("idle", ()=>{
97
- logger.info("All workers are idle, shutting down after timeout");
98
- serverControls.countdownToShutdown();
99
- });
100
110
  return {
101
111
  async ping () {
102
112
  return {
@@ -105,7 +115,17 @@ async function createLageService({ cwd , serverControls , logger , maxWorkers }
105
115
  },
106
116
  async runTarget (request) {
107
117
  serverControls.clearCountdown();
108
- const { config , targetGraph , dependencyMap , packageTree , root } = await initialize(cwd, logger);
118
+ // THIS IS A BIG ASSUMPTION; TODO: memoize based on the parameters of the initialize() call
119
+ // The first request sets up the nodeArg and taskArgs - we are assuming that all requests to run this target are coming from the same
120
+ // `lage info` call
121
+ const { config , targetGraph , dependencyMap , packageTree , root , pool } = await initialize({
122
+ cwd,
123
+ logger,
124
+ nodeArg: request.nodeOptions,
125
+ taskArgs: request.taskArgs,
126
+ serverControls,
127
+ maxWorkers
128
+ });
109
129
  logger.info("Running target", request);
110
130
  const runners = (0, _runnerPickerOptions.runnerPickerOptions)(request.nodeOptions, config.npmClient, request.taskArgs);
111
131
  const id = (0, _targetgraph.getTargetId)(request.packageName, request.task);
@@ -4,10 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  const _workerthreadspool = require("@lage-run/worker-threads-pool");
6
6
  const _runners = require("@lage-run/runners");
7
+ const _worker_threads = require("worker_threads");
8
+ async function setup(options) {
9
+ const { runners } = options;
10
+ const runnerPicker = new _runners.TargetRunnerPicker(runners);
11
+ return {
12
+ options,
13
+ runnerPicker
14
+ };
15
+ }
7
16
  (async ()=>{
17
+ const { runnerPicker } = await setup(_worker_threads.workerData);
8
18
  async function run(data, abortSignal) {
9
19
  let value = undefined;
10
- const runnerPicker = new _runners.TargetRunnerPicker(data.runners);
11
20
  const runner = await runnerPicker.pick(data.target);
12
21
  value = await runner.run({
13
22
  target: data.target,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lage-run/cli",
3
- "version": "0.23.5",
3
+ "version": "0.23.6",
4
4
  "description": "Command Line Interface for Lage",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "@lage-run/globby": "^14.2.0",
27
27
  "@lage-run/hasher": "^1.6.0",
28
28
  "@lage-run/logger": "^1.3.1",
29
- "@lage-run/reporters": "^1.2.11",
29
+ "@lage-run/reporters": "^1.2.12",
30
30
  "@lage-run/rpc": "^1.2.3",
31
31
  "@lage-run/runners": "^1.0.3",
32
32
  "@lage-run/scheduler": "^1.3.3",