@unisphere/cli 1.48.2 → 1.49.1
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/lws.config.js +5 -0
- package/package.json +1 -1
- package/src/lib/commands/language/serve-command.js +6 -104
- package/src/lib/commands/language/serve-command.js.map +1 -1
- package/src/lib/commands/runtime/serve-command.js +15 -4
- package/src/lib/commands/runtime/serve-command.js.map +1 -1
- package/src/lib/utils/serve-languages.d.ts +5 -0
- package/src/lib/utils/serve-languages.js +116 -0
- package/src/lib/utils/serve-languages.js.map +1 -0
package/lws.config.js
ADDED
package/package.json
CHANGED
|
@@ -4,12 +4,7 @@ exports.createServeCommand = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const debug_1 = require("debug");
|
|
6
6
|
const utils_1 = require("../../utils/utils");
|
|
7
|
-
const
|
|
8
|
-
const express = require("express");
|
|
9
|
-
const path = require("path");
|
|
10
|
-
const fs = require("fs");
|
|
11
|
-
const glob = require("glob");
|
|
12
|
-
const prepare_languages_1 = require("../../utils/prepare-languages");
|
|
7
|
+
const serve_languages_1 = require("../../utils/serve-languages");
|
|
13
8
|
const debug = (0, debug_1.default)('unisphere:languages:serve');
|
|
14
9
|
const createServeCommand = (parentCommand) => {
|
|
15
10
|
const command = parentCommand.command('serve');
|
|
@@ -24,104 +19,11 @@ const createServeCommand = (parentCommand) => {
|
|
|
24
19
|
const { verbose, cwd, port, watch } = options;
|
|
25
20
|
const workingDirectory = cwd || process.cwd();
|
|
26
21
|
const servePort = port || '8001';
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
suspendRecursion: true,
|
|
33
|
-
});
|
|
34
|
-
if (!workspace) {
|
|
35
|
-
debug(`No .unisphere file found in the directory ${cwd}`);
|
|
36
|
-
throw new Error(`No .unisphere file found in the directory`);
|
|
37
|
-
}
|
|
38
|
-
// Create Express server
|
|
39
|
-
const app = express();
|
|
40
|
-
// Helper function to find package directory by name
|
|
41
|
-
const findPackageDirectory = (packageName) => {
|
|
42
|
-
debug(`Searching for package: ${packageName}`);
|
|
43
|
-
const searchPatterns = (0, prepare_languages_1.getSearchPatterns)(workingDirectory);
|
|
44
|
-
// Search for package.json files
|
|
45
|
-
const normalizedPackageName = decodeURIComponent(packageName);
|
|
46
|
-
let foundPackagePath = null;
|
|
47
|
-
for (const pattern of searchPatterns) {
|
|
48
|
-
debug(`Searching in pattern: ${pattern.packageRootPath}`);
|
|
49
|
-
const packageJsonFiles = glob.sync(pattern.packageRootPath);
|
|
50
|
-
for (const packageJsonFile of packageJsonFiles) {
|
|
51
|
-
try {
|
|
52
|
-
debug(`Checking package.json at: ${packageJsonFile}`);
|
|
53
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonFile, 'utf8'));
|
|
54
|
-
if (packageJson.name === normalizedPackageName) {
|
|
55
|
-
foundPackagePath = path.dirname(packageJsonFile);
|
|
56
|
-
debug(`Found package at: ${foundPackagePath}, returning ${foundPackagePath}/${pattern.languagesPath}`);
|
|
57
|
-
return path.join(foundPackagePath, pattern.languagesPath);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
debug(`Error parsing package.json at ${packageJsonFile}: ${error.message}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
66
|
-
};
|
|
67
|
-
// Route to handle language file requests
|
|
68
|
-
app.get('/:packageName/:language.json', (req, res) => {
|
|
69
|
-
const { packageName, language } = req.params;
|
|
70
|
-
debug(`Received request for package: ${packageName}, language: ${language}`);
|
|
71
|
-
// Find the package directory
|
|
72
|
-
const packageDir = findPackageDirectory(packageName);
|
|
73
|
-
if (!packageDir) {
|
|
74
|
-
debug(`Package not found: ${packageName}`);
|
|
75
|
-
return res
|
|
76
|
-
.status(404)
|
|
77
|
-
.json({ error: `Package not found: ${packageName}` });
|
|
78
|
-
}
|
|
79
|
-
// Look for language file in the package directory
|
|
80
|
-
const languageFilePath = path.join(packageDir, `${language}.json`);
|
|
81
|
-
debug(`Checking language file: ${languageFilePath}`);
|
|
82
|
-
// Check if the file exists
|
|
83
|
-
if (fs.existsSync(languageFilePath)) {
|
|
84
|
-
try {
|
|
85
|
-
const fileContent = fs.readFileSync(languageFilePath, 'utf8');
|
|
86
|
-
const jsonContent = JSON.parse(fileContent);
|
|
87
|
-
// Set appropriate headers
|
|
88
|
-
res.setHeader('Content-Type', 'application/json');
|
|
89
|
-
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
90
|
-
// Send the JSON content
|
|
91
|
-
res.status(200).json(jsonContent);
|
|
92
|
-
debug(`Successfully served language file: ${languageFilePath}`);
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
debug(`Error reading or parsing language file: ${error.message}`);
|
|
96
|
-
res
|
|
97
|
-
.status(500)
|
|
98
|
-
.json({ error: 'Error reading or parsing language file' });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
debug(`Language file not found: ${languageFilePath}`);
|
|
103
|
-
res.status(404).json({ error: 'Language file not found' });
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
// Start the server
|
|
107
|
-
const server = app.listen(parseInt(servePort), () => {
|
|
108
|
-
console.log(`Language server running at http://localhost:${servePort}`);
|
|
109
|
-
console.log(`Access language files at http://localhost:${servePort}/[package-name]/[language].json (package name is encoded: '@' replaced with '__' and '/' with '_')`);
|
|
110
|
-
});
|
|
111
|
-
// Handle server shutdown
|
|
112
|
-
process.on('SIGINT', () => {
|
|
113
|
-
debug('Shutting down language server');
|
|
114
|
-
server.close(() => {
|
|
115
|
-
console.log('Language server stopped');
|
|
116
|
-
process.exit(0);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
debug('Error in serve-languages command:', error);
|
|
122
|
-
console.error(`Error: ${error.message}`);
|
|
123
|
-
process.exit(1);
|
|
124
|
-
}
|
|
22
|
+
yield (0, serve_languages_1.serveLanguages)({
|
|
23
|
+
verbose,
|
|
24
|
+
cwd: workingDirectory,
|
|
25
|
+
port: servePort,
|
|
26
|
+
});
|
|
125
27
|
}));
|
|
126
28
|
return command;
|
|
127
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/language/serve-command.ts"],"names":[],"mappings":";;;;AACA,iCAA0B;AAC1B,6CAAqD;
|
|
1
|
+
{"version":3,"file":"serve-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/language/serve-command.ts"],"names":[],"mappings":";;;;AACA,iCAA0B;AAC1B,6CAAqD;AAUrD,iEAA6D;AAE7D,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,2BAA2B,CAAC,CAAC;AAE1C,MAAM,kBAAkB,GAAG,CAAC,aAAsB,EAAW,EAAE;IACpE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO;SACJ,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,CAAC;SAC/C,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;SAC/C,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,IAAI,CAAC,WAAW,EAAE,wBAAgB,CAAC;SACnC,MAAM,CACL,CAAO,OAMN,EAAE,EAAE;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,gBAAgB,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,IAAI,MAAM,CAAC;QAEjC,MAAM,IAAA,gCAAc,EAAC;YACnB,OAAO;YACP,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC,CAAA,CACF,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA/BW,QAAA,kBAAkB,sBA+B7B"}
|
|
@@ -9,6 +9,8 @@ const execa = require("execa");
|
|
|
9
9
|
const workspace_1 = require("../../utils/unisphere/workspace");
|
|
10
10
|
const prompts_1 = require("../../utils/prompts/prompts");
|
|
11
11
|
const build_unisphere_elements_1 = require("../../utils/unisphere/build-unisphere-elements");
|
|
12
|
+
const serve_languages_1 = require("../../utils/serve-languages");
|
|
13
|
+
const path = require("path");
|
|
12
14
|
const debug = (0, debug_1.default)('unisphere:runtime:serve');
|
|
13
15
|
const BUILD_TIMEOUT = 300000; // 5 minutes
|
|
14
16
|
const KILL_TIMEOUT = 5000; // 5 seconds
|
|
@@ -20,23 +22,24 @@ const createServeCommand = (parentCommand) => {
|
|
|
20
22
|
.addArgument(new commander_1.Argument('runtime', 'the runtime to serve'))
|
|
21
23
|
.option('--cwd <name>', 'the working directory')
|
|
22
24
|
.option('--no-watch', 'disable watching for changes')
|
|
25
|
+
.option('--no-language-server', 'disable language server')
|
|
23
26
|
.option('--https', 'use secure protocol')
|
|
24
27
|
.option('--port <port>', 'the port to serve the runtime on')
|
|
25
28
|
.hook('preAction', utils_1.printVerboseHook)
|
|
26
29
|
.action((runtime, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
30
|
var _a, _b;
|
|
28
|
-
const { verbose, cwd, port, watch } = options;
|
|
31
|
+
const { verbose, cwd, port, watch, noLanguageServer } = options;
|
|
29
32
|
const workingDirectory = cwd || process.cwd();
|
|
30
33
|
const servePort = port || '8300';
|
|
31
34
|
try {
|
|
32
35
|
console.log(`Starting runtime server for runtime: ${runtime}`);
|
|
33
36
|
debug(`Working directory: ${workingDirectory}`);
|
|
34
37
|
debug(`Port: ${servePort}`);
|
|
35
|
-
const workspace = yield (0, workspace_1.getUnisphereWorkspace)(
|
|
38
|
+
const workspace = yield (0, workspace_1.getUnisphereWorkspace)(workingDirectory, {
|
|
36
39
|
suspendRecursion: true,
|
|
37
40
|
});
|
|
38
41
|
if (!workspace) {
|
|
39
|
-
debug(`No .unisphere file found in the directory ${
|
|
42
|
+
debug(`No .unisphere file found in the directory ${workingDirectory}`);
|
|
40
43
|
throw new Error(`No .unisphere file found in the directory`);
|
|
41
44
|
}
|
|
42
45
|
const runtimeNxProjectName = runtime === 'loader'
|
|
@@ -125,11 +128,19 @@ const createServeCommand = (parentCommand) => {
|
|
|
125
128
|
distFolder,
|
|
126
129
|
'-p',
|
|
127
130
|
servePort,
|
|
131
|
+
verbose ? '--verbose' : null,
|
|
128
132
|
options.https ? '--https' : null,
|
|
129
133
|
].filter(Boolean), {
|
|
130
|
-
cwd:
|
|
134
|
+
cwd: path.resolve(__dirname, '../../../../'),
|
|
131
135
|
stdio: 'inherit',
|
|
132
136
|
});
|
|
137
|
+
if (!noLanguageServer) {
|
|
138
|
+
(0, serve_languages_1.serveLanguages)({
|
|
139
|
+
verbose,
|
|
140
|
+
cwd: workingDirectory,
|
|
141
|
+
port: '8900',
|
|
142
|
+
});
|
|
143
|
+
}
|
|
133
144
|
const processes = [loaderProcess, serverProcess];
|
|
134
145
|
// Handle process cleanup
|
|
135
146
|
const cleanup = () => cleanupProcesses(processes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/serve-command.ts"],"names":[],"mappings":";;;;AAAA,yCAAsD;AACtD,iCAA0B;AAC1B,6CAAqD;AACrD,+BAA+B;AAC/B,+DAAwE;AACxE,yDAAiE;AACjE,6FAAiF;
|
|
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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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serveLanguages = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = require("debug");
|
|
6
|
+
const workspace_1 = require("./unisphere/workspace");
|
|
7
|
+
const express = require("express");
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const fs = require("fs");
|
|
10
|
+
const glob = require("glob");
|
|
11
|
+
const prepare_languages_1 = require("./prepare-languages");
|
|
12
|
+
const debug = (0, debug_1.default)('unisphere:languages:serve');
|
|
13
|
+
const serveLanguages = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
try {
|
|
15
|
+
console.log(`Starting runtime server for languages`);
|
|
16
|
+
debug(`Working directory: ${options.cwd}`);
|
|
17
|
+
debug(`Port: ${options.port}`);
|
|
18
|
+
const workspace = yield (0, workspace_1.getUnisphereWorkspace)(options.cwd, {
|
|
19
|
+
suspendRecursion: true,
|
|
20
|
+
});
|
|
21
|
+
if (!workspace) {
|
|
22
|
+
debug(`No .unisphere file found in the directory ${options.cwd}`);
|
|
23
|
+
throw new Error(`No .unisphere file found in the directory`);
|
|
24
|
+
}
|
|
25
|
+
// Create Express server
|
|
26
|
+
const app = express();
|
|
27
|
+
// Helper function to find package directory by name
|
|
28
|
+
const findPackageDirectory = (packageName) => {
|
|
29
|
+
debug(`Searching for package: ${packageName}`);
|
|
30
|
+
const searchPatterns = (0, prepare_languages_1.getSearchPatterns)(options.cwd);
|
|
31
|
+
// Search for package.json files
|
|
32
|
+
const normalizedPackageName = packageName
|
|
33
|
+
.replace(/__/g, '@')
|
|
34
|
+
.replace(/_/g, '/');
|
|
35
|
+
let foundPackagePath = null;
|
|
36
|
+
for (const pattern of searchPatterns) {
|
|
37
|
+
debug(`Searching in pattern: ${pattern.packageRootPath}`);
|
|
38
|
+
const packageJsonFiles = glob.sync(pattern.packageRootPath);
|
|
39
|
+
for (const packageJsonFile of packageJsonFiles) {
|
|
40
|
+
try {
|
|
41
|
+
debug(`Checking package.json at: ${packageJsonFile}`);
|
|
42
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonFile, 'utf8'));
|
|
43
|
+
if (packageJson.name === normalizedPackageName) {
|
|
44
|
+
foundPackagePath = path.dirname(packageJsonFile);
|
|
45
|
+
debug(`Found package at: ${foundPackagePath}, returning ${foundPackagePath}/${pattern.languagesPath}`);
|
|
46
|
+
return path.join(foundPackagePath, pattern.languagesPath);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
debug(`Error parsing package.json at ${packageJsonFile}: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
};
|
|
56
|
+
// Route to handle language file requests
|
|
57
|
+
app.get('/:packageName/:language.json', (req, res) => {
|
|
58
|
+
const { packageName, language } = req.params;
|
|
59
|
+
debug(`Received request for package: ${packageName}, language: ${language}`);
|
|
60
|
+
// Find the package directory
|
|
61
|
+
const packageDir = findPackageDirectory(packageName);
|
|
62
|
+
if (!packageDir) {
|
|
63
|
+
debug(`Package not found: ${packageName}`);
|
|
64
|
+
return res
|
|
65
|
+
.status(404)
|
|
66
|
+
.json({ error: `Package not found: ${packageName}` });
|
|
67
|
+
}
|
|
68
|
+
// Look for language file in the package directory
|
|
69
|
+
const languageFilePath = path.join(packageDir, `${language}.json`);
|
|
70
|
+
debug(`Checking language file: ${languageFilePath}`);
|
|
71
|
+
// Check if the file exists
|
|
72
|
+
if (fs.existsSync(languageFilePath)) {
|
|
73
|
+
try {
|
|
74
|
+
const fileContent = fs.readFileSync(languageFilePath, 'utf8');
|
|
75
|
+
const jsonContent = JSON.parse(fileContent);
|
|
76
|
+
// Set appropriate headers
|
|
77
|
+
res.setHeader('Content-Type', 'application/json');
|
|
78
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
79
|
+
// Send the JSON content
|
|
80
|
+
res.status(200).json(jsonContent);
|
|
81
|
+
debug(`Successfully served language file: ${languageFilePath}`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
debug(`Error reading or parsing language file: ${error.message}`);
|
|
85
|
+
res
|
|
86
|
+
.status(500)
|
|
87
|
+
.json({ error: 'Error reading or parsing language file' });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
debug(`Language file not found: ${languageFilePath}`);
|
|
92
|
+
res.status(404).json({ error: 'Language file not found' });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Start the server
|
|
96
|
+
const server = app.listen(parseInt(options.port), () => {
|
|
97
|
+
console.log(`Language server running at http://localhost:${options.port}`);
|
|
98
|
+
console.log(`Access language files at http://localhost:${options.port}/[package-name]/[language].json (package name is encoded: '@' replaced with '__' and '/' with '_')`);
|
|
99
|
+
});
|
|
100
|
+
// Handle server shutdown
|
|
101
|
+
process.on('SIGINT', () => {
|
|
102
|
+
debug('Shutting down language server');
|
|
103
|
+
server.close(() => {
|
|
104
|
+
console.log('Language server stopped');
|
|
105
|
+
process.exit(0);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
debug('Error in serve-languages command:', error);
|
|
111
|
+
console.error(`Error: ${error.message}`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
exports.serveLanguages = serveLanguages;
|
|
116
|
+
//# sourceMappingURL=serve-languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-languages.js","sourceRoot":"","sources":["../../../../../../packages/unisphere-cli/src/lib/utils/serve-languages.ts"],"names":[],"mappings":"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"}
|