@unisphere/cli 1.52.3 → 1.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisphere/cli",
3
- "version": "1.52.3",
3
+ "version": "1.53.0",
4
4
  "bin": {
5
5
  "unisphere": "./src/cli.js"
6
6
  },
@@ -65,6 +65,7 @@
65
65
  "express": "5.1.0",
66
66
  "archiver": "5.3.2",
67
67
  "fast-glob": "3.2.12",
68
+ "watchpack": "2.4.0",
68
69
  "@aws-sdk/client-s3": "3.216.0",
69
70
  "@aws-sdk/client-sts": "3.216.0",
70
71
  "axios": "1.2.0",
@@ -1,2 +1,2 @@
1
1
  import { Command } from 'commander';
2
- export declare const createServeCommand: (parentCommand: Command) => Command;
2
+ export declare const createServeCommand: (parent: Command) => Command;
@@ -11,12 +11,70 @@ const prompts_1 = require("../../utils/prompts/prompts");
11
11
  const build_unisphere_elements_1 = require("../../utils/unisphere/build-unisphere-elements");
12
12
  const serve_languages_1 = require("../../utils/serve-languages");
13
13
  const path = require("path");
14
+ const Watchpack = require("watchpack");
15
+ const promises_1 = require("fs/promises");
16
+ const fs = require("fs");
14
17
  const debug = (0, debug_1.default)('unisphere:runtime:serve');
15
- const BUILD_TIMEOUT = 300000; // 5 minutes
16
- const KILL_TIMEOUT = 5000; // 5 seconds
17
- const createServeCommand = (parentCommand) => {
18
- const command = parentCommand.command('serve');
19
- command
18
+ const BUILD_TIMEOUT = 300000;
19
+ const KILL_TIMEOUT = 5000;
20
+ const DEBOUNCE_MS = 300;
21
+ const changedFiles = new Set();
22
+ let debounceTimeout = null;
23
+ let currentBuildProcess = null;
24
+ function wait(ms) {
25
+ return new Promise((r) => setTimeout(r, ms));
26
+ }
27
+ function waitForBuildLockRelease(dir_1) {
28
+ return tslib_1.__awaiter(this, arguments, void 0, function* (dir, maxWaitMs = 60000) {
29
+ const lock = path.join(dir, '.runtime-build.lock');
30
+ console.log('[unisphere] waiting for build lock release', lock);
31
+ while (fs.existsSync(lock)) {
32
+ try {
33
+ const content = fs.readFileSync(lock, 'utf-8');
34
+ const timestamp = parseInt(content.trim(), 10);
35
+ if (!isNaN(timestamp)) {
36
+ const age = Date.now() - timestamp;
37
+ if (age > maxWaitMs) {
38
+ throw new Error(`Timeout waiting for build lock release (age: ${age}ms)`);
39
+ }
40
+ }
41
+ }
42
+ catch (err) {
43
+ console.warn('[unisphere] failed to read lock file', err);
44
+ // Continue loop and check again
45
+ }
46
+ yield wait(100);
47
+ }
48
+ });
49
+ }
50
+ function acquireBuildLock(dir) {
51
+ const lock = path.join(dir, '.runtime-build.lock');
52
+ fs.mkdirSync(dir, { recursive: true });
53
+ try {
54
+ const fd = fs.openSync(lock, 'wx'); // 'wx' = fail if file exists
55
+ fs.writeSync(fd, String(Date.now()));
56
+ fs.closeSync(fd);
57
+ console.log('[unisphere] build lock acquired', lock);
58
+ return true;
59
+ }
60
+ catch (err) {
61
+ if (err.code === 'EEXIST') {
62
+ return false;
63
+ }
64
+ else {
65
+ throw err;
66
+ }
67
+ }
68
+ }
69
+ function releaseBuildLock(dir) {
70
+ const file = path.join(dir, '.runtime-build.lock');
71
+ if (fs.existsSync(file))
72
+ fs.unlinkSync(file);
73
+ console.log('[unisphere] build lock released', file);
74
+ }
75
+ const createServeCommand = (parent) => {
76
+ return parent
77
+ .command('serve')
20
78
  .description('serve a unisphere runtime element')
21
79
  .option('--verbose', 'output debug logs', false)
22
80
  .addArgument(new commander_1.Argument('runtime', 'the runtime to serve'))
@@ -27,101 +85,65 @@ const createServeCommand = (parentCommand) => {
27
85
  .option('--port <port>', 'the port to serve the runtime on')
28
86
  .hook('preAction', utils_1.printVerboseHook)
29
87
  .action((runtime, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
30
- var _a, _b;
31
- const { verbose, cwd, port, watch, languageServer } = options;
88
+ const { verbose, cwd, port, watch, languageServer, https } = options;
32
89
  const workingDirectory = cwd || process.cwd();
33
90
  const servePort = port || '8300';
34
91
  try {
35
- console.log(`Starting runtime server for runtime: ${runtime}`);
36
- debug(`Working directory: ${workingDirectory}`);
37
- debug(`Port: ${servePort}`);
38
92
  const workspace = yield (0, workspace_1.getUnisphereWorkspace)(workingDirectory, {
39
93
  suspendRecursion: true,
40
94
  });
41
- if (!workspace) {
42
- debug(`No .unisphere file found in the directory ${workingDirectory}`);
43
- throw new Error(`No .unisphere file found in the directory`);
44
- }
45
- const runtimeNxProjectName = runtime === 'loader'
46
- ? workspace.config.elements.loader.nxProjectName
95
+ if (!workspace)
96
+ throw new Error(`No .unisphere file found in ${workingDirectory}`);
97
+ const runtimeConfig = runtime === 'loader'
98
+ ? workspace.config.elements.loader
47
99
  : runtime === 'workspace'
48
- ? workspace.config.elements.workspace.nxProjectName
49
- : (_a = workspace.config.elements.runtimes[runtime]) === null || _a === void 0 ? void 0 : _a.nxProjectName;
50
- const distFolder = runtime === 'loader'
51
- ? workspace.config.elements.loader.distFolder
52
- : runtime === 'workspace'
53
- ? workspace.config.elements.workspace.distFolder
54
- : (_b = workspace.config.elements.runtimes[runtime]) === null || _b === void 0 ? void 0 : _b.distFolder;
55
- if (!runtimeNxProjectName || !distFolder) {
56
- throw new Error(`No nx project name or dist folder found for runtime ${runtime}`);
57
- }
58
- debug(`Dist folder: ${distFolder}`);
59
- debug(`Nx project name: ${runtimeNxProjectName}`);
60
- const cleanupProcesses = (processes) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
61
- for (const proc of processes) {
62
- if (proc.killed)
63
- continue;
64
- proc.kill('SIGTERM');
65
- yield new Promise((resolve) => setTimeout(resolve, KILL_TIMEOUT));
66
- if (!proc.killed)
67
- proc.kill('SIGKILL');
68
- }
69
- });
70
- const loaderProcess = execa('npx', [
71
- 'nx',
72
- 'run',
73
- `${runtimeNxProjectName}:build`,
74
- '--skip-nx-cache',
75
- verbose ? '--verbose' : '',
76
- watch ? '--watch' : '',
77
- ].filter(Boolean), {
78
- cwd: workingDirectory,
79
- env: (0, build_unisphere_elements_1.getUnisphereEnv)(false, 'runtime'),
80
- stdio: 'pipe',
81
- });
82
- // Pipe both stdout and stderr
83
- if (loaderProcess.stdout) {
84
- loaderProcess.stdout.pipe(process.stdout);
85
- }
86
- if (loaderProcess.stderr) {
87
- loaderProcess.stderr.pipe(process.stderr);
88
- }
89
- // Wait for initial build with timeout
90
- yield Promise.race([
91
- new Promise((resolve, reject) => {
92
- let buildStarted = false;
93
- const timeoutId = setTimeout(() => {
94
- reject(new Error(`Build timed out after ${BUILD_TIMEOUT / 1000} seconds`));
95
- }, BUILD_TIMEOUT);
96
- const onStdout = (data) => {
97
- var _a;
98
- const dataString = data.toString().trim();
99
- if (!buildStarted && /Starting compilation/.test(dataString)) {
100
- buildStarted = true;
101
- console.log('Build started...');
102
- }
103
- if (/index\.dev\.esm\.js/.test(dataString)) {
104
- clearTimeout(timeoutId);
105
- (_a = loaderProcess.stdout) === null || _a === void 0 ? void 0 : _a.off('data', onStdout);
106
- resolve();
100
+ ? workspace.config.elements.workspace
101
+ : workspace.config.elements.runtimes[runtime];
102
+ const { nxProjectName, distFolder } = runtimeConfig;
103
+ if (!nxProjectName || !distFolder)
104
+ throw new Error(`Invalid runtime config for ${runtime}`);
105
+ const lockFolder = path.resolve(workspace.repository.repositoryRootPath, 'dist');
106
+ function buildRuntime(throwError) {
107
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
108
+ var _a, _b;
109
+ try {
110
+ const start = Date.now();
111
+ while (!acquireBuildLock(lockFolder)) {
112
+ if (Date.now() - start > 60000) {
113
+ throw new Error('Timeout acquiring build lock');
114
+ }
115
+ yield wait(100 + Math.random() * 200); // jittered retry
107
116
  }
108
- };
109
- if (loaderProcess.stdout) {
110
- loaderProcess.stdout.on('data', onStdout);
117
+ currentBuildProcess = execa('npx', [
118
+ 'nx',
119
+ 'run',
120
+ `${nxProjectName}:build`,
121
+ verbose ? '--verbose' : '',
122
+ ].filter(Boolean), {
123
+ cwd: workingDirectory,
124
+ env: (0, build_unisphere_elements_1.getUnisphereEnv)(false, 'runtime'),
125
+ stdio: 'pipe',
126
+ });
127
+ (_a = currentBuildProcess.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
128
+ (_b = currentBuildProcess.stderr) === null || _b === void 0 ? void 0 : _b.pipe(process.stderr);
129
+ yield currentBuildProcess;
130
+ console.log('✅ Build completed.');
111
131
  }
112
- loaderProcess.on('error', (error) => {
113
- clearTimeout(timeoutId);
114
- reject(new Error(`Build process error: ${error.message}`));
115
- });
116
- loaderProcess.on('exit', (code) => {
117
- if (code !== 0 && !watch) {
118
- clearTimeout(timeoutId);
119
- reject(new Error(`Build process exited with code ${code}`));
120
- }
121
- });
122
- }),
123
- new Promise((_, reject) => setTimeout(() => reject(new Error('Build timed out')), BUILD_TIMEOUT)),
124
- ]);
132
+ catch (err) {
133
+ if (throwError)
134
+ throw err;
135
+ if (err.isCanceled)
136
+ console.log('⚠️ Build canceled.');
137
+ else
138
+ console.error('❌ Build failed:', err.shortMessage || err.message);
139
+ }
140
+ finally {
141
+ releaseBuildLock(lockFolder);
142
+ currentBuildProcess = null;
143
+ }
144
+ });
145
+ }
146
+ yield buildRuntime(true);
125
147
  const serverProcess = execa('npx', [
126
148
  'local-web-server',
127
149
  '-d',
@@ -129,63 +151,71 @@ const createServeCommand = (parentCommand) => {
129
151
  '-p',
130
152
  servePort,
131
153
  verbose ? '--verbose' : null,
132
- options.https ? '--https' : null,
154
+ https ? '--https' : null,
133
155
  ].filter(Boolean), {
134
- cwd: path.resolve(__dirname, '../../../../'), // cwd must be the root of the lws.config.js file
156
+ cwd: path.resolve(__dirname, '../../../../'),
135
157
  stdio: 'inherit',
136
158
  });
137
159
  if (!languageServer) {
138
- (0, serve_languages_1.serveLanguages)({
139
- verbose,
140
- cwd: workingDirectory,
141
- port: '8900',
142
- });
160
+ (0, serve_languages_1.serveLanguages)({ verbose, cwd: workingDirectory, port: '8900' });
143
161
  }
144
162
  else {
145
- console.log('Language server disabled, to enable use --language-server (can run only on one runtime at a time)');
163
+ console.log('Language server disabled. Use --language-server to enable.');
146
164
  }
147
- const processes = [loaderProcess, serverProcess];
148
- // Handle process cleanup
149
- const cleanup = () => cleanupProcesses(processes);
165
+ const processes = [serverProcess];
166
+ const cleanup = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
167
+ for (const p of processes) {
168
+ if (!p.killed) {
169
+ p.kill('SIGTERM');
170
+ yield wait(KILL_TIMEOUT);
171
+ if (!p.killed)
172
+ p.kill('SIGKILL');
173
+ }
174
+ }
175
+ });
150
176
  process.on('SIGINT', cleanup);
151
177
  process.on('SIGTERM', cleanup);
152
- // Handle process errors
153
- serverProcess.on('error', (error) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
154
- console.error('Server process error:', error);
155
- yield cleanup();
156
- process.exit(1);
157
- }));
158
- loaderProcess.on('error', (error) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
159
- console.error('Build process error:', error);
160
- yield cleanup();
161
- process.exit(1);
162
- }));
163
178
  if (watch) {
164
- loaderProcess.on('exit', (code) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
165
- if (code !== 0) {
166
- console.error(`Build process exited with code ${code}`);
167
- yield cleanup();
168
- process.exit(code !== null && code !== void 0 ? code : 1);
179
+ const watchpack = new Watchpack({
180
+ aggregateTimeout: 300,
181
+ poll: false,
182
+ });
183
+ const packagesDir = path.resolve(workingDirectory, 'unisphere/packages');
184
+ const srcDirs = (yield (0, promises_1.readdir)(packagesDir))
185
+ .map((pkg) => path.join(packagesDir, pkg, 'src'))
186
+ .filter((p) => fs.existsSync(p));
187
+ console.log('[watchpack] Watching src dirs:', srcDirs);
188
+ watchpack.watch([], srcDirs, Date.now());
189
+ watchpack.on('change', (filePath) => {
190
+ if (/\.(ts|tsx|js|jsx)$/.test(filePath)) {
191
+ changedFiles.add(filePath);
192
+ if (debounceTimeout)
193
+ clearTimeout(debounceTimeout);
194
+ if (currentBuildProcess) {
195
+ console.log('🛑 Killing previous build...');
196
+ currentBuildProcess.kill('SIGTERM', {
197
+ forceKillAfterTimeout: 2000,
198
+ });
199
+ currentBuildProcess = null;
200
+ }
201
+ debounceTimeout = setTimeout(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
202
+ const files = [...changedFiles].map((absPath) => path.relative(workingDirectory, absPath));
203
+ changedFiles.clear();
204
+ console.log(`🌀 Detected ${files.length} file changes. Running nx affected...`, { files });
205
+ yield buildRuntime(false);
206
+ }), DEBOUNCE_MS);
169
207
  }
170
- }));
208
+ });
209
+ process.on('SIGINT', () => watchpack.close());
210
+ process.on('SIGTERM', () => watchpack.close());
171
211
  }
172
- yield Promise.race([
173
- Promise.all(processes),
174
- new Promise((_, reject) => {
175
- serverProcess.on('exit', (code) => {
176
- if (code !== 0) {
177
- reject(new Error(`Server exited with code ${code}`));
178
- }
179
- });
180
- }),
181
- ]);
212
+ yield serverProcess;
182
213
  }
183
214
  catch (error) {
184
- debug('Error in serve command:', error);
215
+ debug('Serve error:', error);
185
216
  (0, prompts_1.logErrorAndRethrow)(`Failed to serve runtime ${runtime}: ${error.message}`);
186
217
  }
187
218
  }));
188
- return command;
189
219
  };
190
220
  exports.createServeCommand = createServeCommand;
191
221
  //# sourceMappingURL=serve-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/serve-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/serve-command.ts"],"names":[],"mappings":"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"}