@cisco_open/linting-orchestrator 1.0.0-rc.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.
- package/LICENSE +201 -0
- package/NOTICE +5 -0
- package/README.md +43 -0
- package/build/cli/api-client.d.ts +170 -0
- package/build/cli/api-client.d.ts.map +1 -0
- package/build/cli/api-client.js +284 -0
- package/build/cli/api-client.js.map +1 -0
- package/build/cli/commands/agents.d.ts +7 -0
- package/build/cli/commands/agents.d.ts.map +1 -0
- package/build/cli/commands/agents.js +694 -0
- package/build/cli/commands/agents.js.map +1 -0
- package/build/cli/commands/completion.d.ts +9 -0
- package/build/cli/commands/completion.d.ts.map +1 -0
- package/build/cli/commands/completion.js +177 -0
- package/build/cli/commands/completion.js.map +1 -0
- package/build/cli/commands/config.d.ts +10 -0
- package/build/cli/commands/config.d.ts.map +1 -0
- package/build/cli/commands/config.js +284 -0
- package/build/cli/commands/config.js.map +1 -0
- package/build/cli/commands/health.d.ts +11 -0
- package/build/cli/commands/health.d.ts.map +1 -0
- package/build/cli/commands/health.js +38 -0
- package/build/cli/commands/health.js.map +1 -0
- package/build/cli/commands/help.d.ts +6 -0
- package/build/cli/commands/help.d.ts.map +1 -0
- package/build/cli/commands/help.js +20 -0
- package/build/cli/commands/help.js.map +1 -0
- package/build/cli/commands/history.d.ts +11 -0
- package/build/cli/commands/history.d.ts.map +1 -0
- package/build/cli/commands/history.js +50 -0
- package/build/cli/commands/history.js.map +1 -0
- package/build/cli/commands/jobs.d.ts +12 -0
- package/build/cli/commands/jobs.d.ts.map +1 -0
- package/build/cli/commands/jobs.js +84 -0
- package/build/cli/commands/jobs.js.map +1 -0
- package/build/cli/commands/lint.d.ts +15 -0
- package/build/cli/commands/lint.d.ts.map +1 -0
- package/build/cli/commands/lint.js +384 -0
- package/build/cli/commands/lint.js.map +1 -0
- package/build/cli/commands/ps.d.ts +8 -0
- package/build/cli/commands/ps.d.ts.map +1 -0
- package/build/cli/commands/ps.js +74 -0
- package/build/cli/commands/ps.js.map +1 -0
- package/build/cli/commands/reproduce.d.ts +9 -0
- package/build/cli/commands/reproduce.d.ts.map +1 -0
- package/build/cli/commands/reproduce.js +31 -0
- package/build/cli/commands/reproduce.js.map +1 -0
- package/build/cli/commands/reset.d.ts +5 -0
- package/build/cli/commands/reset.d.ts.map +1 -0
- package/build/cli/commands/reset.js +13 -0
- package/build/cli/commands/reset.js.map +1 -0
- package/build/cli/commands/results.d.ts +13 -0
- package/build/cli/commands/results.d.ts.map +1 -0
- package/build/cli/commands/results.js +129 -0
- package/build/cli/commands/results.js.map +1 -0
- package/build/cli/commands/rulesets/check.d.ts +12 -0
- package/build/cli/commands/rulesets/check.d.ts.map +1 -0
- package/build/cli/commands/rulesets/check.js +226 -0
- package/build/cli/commands/rulesets/check.js.map +1 -0
- package/build/cli/commands/rulesets/index.d.ts +5 -0
- package/build/cli/commands/rulesets/index.d.ts.map +1 -0
- package/build/cli/commands/rulesets/index.js +6 -0
- package/build/cli/commands/rulesets/index.js.map +1 -0
- package/build/cli/commands/rulesets/view.d.ts +16 -0
- package/build/cli/commands/rulesets/view.d.ts.map +1 -0
- package/build/cli/commands/rulesets/view.js +100 -0
- package/build/cli/commands/rulesets/view.js.map +1 -0
- package/build/cli/commands/start.d.ts +16 -0
- package/build/cli/commands/start.d.ts.map +1 -0
- package/build/cli/commands/start.js +167 -0
- package/build/cli/commands/start.js.map +1 -0
- package/build/cli/commands/status.d.ts +9 -0
- package/build/cli/commands/status.d.ts.map +1 -0
- package/build/cli/commands/status.js +46 -0
- package/build/cli/commands/status.js.map +1 -0
- package/build/cli/commands/stop.d.ts +11 -0
- package/build/cli/commands/stop.d.ts.map +1 -0
- package/build/cli/commands/stop.js +78 -0
- package/build/cli/commands/stop.js.map +1 -0
- package/build/cli/config-manager.d.ts +134 -0
- package/build/cli/config-manager.d.ts.map +1 -0
- package/build/cli/config-manager.js +288 -0
- package/build/cli/config-manager.js.map +1 -0
- package/build/cli/formatters.d.ts +62 -0
- package/build/cli/formatters.d.ts.map +1 -0
- package/build/cli/formatters.js +715 -0
- package/build/cli/formatters.js.map +1 -0
- package/build/cli/history-manager.d.ts +97 -0
- package/build/cli/history-manager.d.ts.map +1 -0
- package/build/cli/history-manager.js +201 -0
- package/build/cli/history-manager.js.map +1 -0
- package/build/cli/index.d.ts +16 -0
- package/build/cli/index.d.ts.map +1 -0
- package/build/cli/index.js +335 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/list-rulesets.d.ts +15 -0
- package/build/cli/list-rulesets.d.ts.map +1 -0
- package/build/cli/list-rulesets.js +193 -0
- package/build/cli/list-rulesets.js.map +1 -0
- package/build/cli/utils/connection-error.d.ts +9 -0
- package/build/cli/utils/connection-error.d.ts.map +1 -0
- package/build/cli/utils/connection-error.js +30 -0
- package/build/cli/utils/connection-error.js.map +1 -0
- package/build/cli/utils/embedded-server.d.ts +21 -0
- package/build/cli/utils/embedded-server.d.ts.map +1 -0
- package/build/cli/utils/embedded-server.js +61 -0
- package/build/cli/utils/embedded-server.js.map +1 -0
- package/build/cli/utils/mode-validator.d.ts +13 -0
- package/build/cli/utils/mode-validator.d.ts.map +1 -0
- package/build/cli/utils/mode-validator.js +31 -0
- package/build/cli/utils/mode-validator.js.map +1 -0
- package/build/cli/utils/port-checker.d.ts +20 -0
- package/build/cli/utils/port-checker.d.ts.map +1 -0
- package/build/cli/utils/port-checker.js +49 -0
- package/build/cli/utils/port-checker.js.map +1 -0
- package/build/config.d.ts +57 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +527 -0
- package/build/config.js.map +1 -0
- package/build/document-accessor.d.ts +79 -0
- package/build/document-accessor.d.ts.map +1 -0
- package/build/document-accessor.js +148 -0
- package/build/document-accessor.js.map +1 -0
- package/build/formatters/reproduce-markdown.d.ts +14 -0
- package/build/formatters/reproduce-markdown.d.ts.map +1 -0
- package/build/formatters/reproduce-markdown.js +182 -0
- package/build/formatters/reproduce-markdown.js.map +1 -0
- package/build/formatters/sarif-builder.d.ts +86 -0
- package/build/formatters/sarif-builder.d.ts.map +1 -0
- package/build/formatters/sarif-builder.js +276 -0
- package/build/formatters/sarif-builder.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +174 -0
- package/build/index.js.map +1 -0
- package/build/logger.d.ts +38 -0
- package/build/logger.d.ts.map +1 -0
- package/build/logger.js +105 -0
- package/build/logger.js.map +1 -0
- package/build/mock-server.d.ts +2 -0
- package/build/mock-server.d.ts.map +1 -0
- package/build/mock-server.js +290 -0
- package/build/mock-server.js.map +1 -0
- package/build/orchestrator.d.ts +149 -0
- package/build/orchestrator.d.ts.map +1 -0
- package/build/orchestrator.js +874 -0
- package/build/orchestrator.js.map +1 -0
- package/build/ruleset-loader.d.ts +79 -0
- package/build/ruleset-loader.d.ts.map +1 -0
- package/build/ruleset-loader.js +514 -0
- package/build/ruleset-loader.js.map +1 -0
- package/build/schemas.d.ts +2568 -0
- package/build/schemas.d.ts.map +1 -0
- package/build/schemas.js +674 -0
- package/build/schemas.js.map +1 -0
- package/build/server.d.ts +39 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +834 -0
- package/build/server.js.map +1 -0
- package/build/storage/memory-storage.d.ts +190 -0
- package/build/storage/memory-storage.d.ts.map +1 -0
- package/build/storage/memory-storage.js +629 -0
- package/build/storage/memory-storage.js.map +1 -0
- package/build/storage/redis-storage.d.ts +134 -0
- package/build/storage/redis-storage.d.ts.map +1 -0
- package/build/storage/redis-storage.js +236 -0
- package/build/storage/redis-storage.js.map +1 -0
- package/build/storage/storage-adapter.d.ts +189 -0
- package/build/storage/storage-adapter.d.ts.map +1 -0
- package/build/storage/storage-adapter.js +36 -0
- package/build/storage/storage-adapter.js.map +1 -0
- package/build/types.d.ts +981 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +5 -0
- package/build/types.js.map +1 -0
- package/build/utils/version.d.ts +40 -0
- package/build/utils/version.d.ts.map +1 -0
- package/build/utils/version.js +94 -0
- package/build/utils/version.js.map +1 -0
- package/build/validation.d.ts +95 -0
- package/build/validation.d.ts.map +1 -0
- package/build/validation.js +150 -0
- package/build/validation.js.map +1 -0
- package/build/worker-pool.d.ts +137 -0
- package/build/worker-pool.d.ts.map +1 -0
- package/build/worker-pool.js +549 -0
- package/build/worker-pool.js.map +1 -0
- package/build/worker.d.ts +2 -0
- package/build/worker.d.ts.map +1 -0
- package/build/worker.js +427 -0
- package/build/worker.js.map +1 -0
- package/package.json +110 -0
- package/rulesets/CHANGELOG.md +25 -0
- package/rulesets/config/rulesets.yaml +96 -0
- package/rulesets/sources/README.md +47 -0
- package/rulesets/sources/example/oas-recommended/v1.0.0/ruleset.yaml +6 -0
- package/rulesets/sources/example/oas-recommended/v2.0.0/ruleset.yaml +14 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedded Server Lifecycle Management
|
|
3
|
+
*
|
|
4
|
+
* Handles auto-start/stop of embedded server for CLI commands
|
|
5
|
+
*/
|
|
6
|
+
import { startServer } from '../../server.js';
|
|
7
|
+
import { createEmbeddedModeConfig } from '../../config.js';
|
|
8
|
+
import { getConfigManager } from '../config-manager.js';
|
|
9
|
+
/**
|
|
10
|
+
* Start embedded server if needed based on CLI config
|
|
11
|
+
* Returns shutdown function to be called in finally block
|
|
12
|
+
*
|
|
13
|
+
* @param apiUrl Optional API URL override (if provided, don't start embedded server)
|
|
14
|
+
* @returns Shutdown function or null if server not started
|
|
15
|
+
*/
|
|
16
|
+
export async function maybeStartEmbeddedServer(apiUrl) {
|
|
17
|
+
// If explicit API URL provided, assume external server
|
|
18
|
+
if (apiUrl) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
// Check CLI config for mode
|
|
22
|
+
const configManager = getConfigManager();
|
|
23
|
+
const config = await configManager.get();
|
|
24
|
+
// Only auto-start if in embedded mode
|
|
25
|
+
if (config.defaultMode !== 'embedded') {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
// Start embedded server (TODO: add quiet flag to startServer())
|
|
29
|
+
const serverConfig = createEmbeddedModeConfig();
|
|
30
|
+
const server = await startServer(serverConfig);
|
|
31
|
+
// Return shutdown function
|
|
32
|
+
return async () => {
|
|
33
|
+
// Forcefully close server
|
|
34
|
+
try {
|
|
35
|
+
await server.shutdown();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Ignore shutdown errors in embedded mode
|
|
39
|
+
}
|
|
40
|
+
// Force exit after brief delay if still hanging
|
|
41
|
+
setTimeout(() => {
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}, 1000).unref();
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get API URL based on current CLI configuration
|
|
48
|
+
*
|
|
49
|
+
* @param explicitUrl Optional explicit URL override
|
|
50
|
+
* @returns API URL to use
|
|
51
|
+
*/
|
|
52
|
+
export async function getApiUrl(explicitUrl) {
|
|
53
|
+
if (explicitUrl) {
|
|
54
|
+
return explicitUrl;
|
|
55
|
+
}
|
|
56
|
+
const configManager = getConfigManager();
|
|
57
|
+
const config = await configManager.get();
|
|
58
|
+
const port = config.ports[config.defaultMode];
|
|
59
|
+
return `http://localhost:${port}`;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=embedded-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-server.js","sourceRoot":"","sources":["../../../src/cli/utils/embedded-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAe;IAEf,uDAAuD;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;IAEzC,sCAAsC;IACtC,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;IAE/C,2BAA2B;IAC3B,OAAO,KAAK,IAAI,EAAE;QAChB,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0CAA0C;QAC5C,CAAC;QAED,gDAAgD;QAChD,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAoB;IAClD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,oBAAoB,IAAI,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mode-specific command validation
|
|
3
|
+
*
|
|
4
|
+
* Ensures commands are only used in appropriate modes
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check if command is allowed in current mode
|
|
8
|
+
* Exits with helpful error message if not allowed
|
|
9
|
+
*
|
|
10
|
+
* @param commandName Name of the command being run
|
|
11
|
+
*/
|
|
12
|
+
export declare function requireServerMode(commandName: string): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=mode-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-validator.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/mode-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mode-specific command validation
|
|
3
|
+
*
|
|
4
|
+
* Ensures commands are only used in appropriate modes
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { getConfigManager } from '../config-manager.js';
|
|
8
|
+
/**
|
|
9
|
+
* Check if command is allowed in current mode
|
|
10
|
+
* Exits with helpful error message if not allowed
|
|
11
|
+
*
|
|
12
|
+
* @param commandName Name of the command being run
|
|
13
|
+
*/
|
|
14
|
+
export async function requireServerMode(commandName) {
|
|
15
|
+
const configManager = getConfigManager();
|
|
16
|
+
const config = await configManager.get();
|
|
17
|
+
if (config.defaultMode === 'embedded') {
|
|
18
|
+
console.error(chalk.red(`\n❌ Command '${commandName}' is not available in embedded mode\n`));
|
|
19
|
+
console.log('Embedded mode is for quick, self-contained linting without server management.');
|
|
20
|
+
console.log('This command is only available in standalone or companion modes.\n');
|
|
21
|
+
console.log(chalk.cyan('Available commands in embedded mode:'));
|
|
22
|
+
console.log(' • spectify lint <file> - Lint an OpenAPI document');
|
|
23
|
+
console.log(' • spectify health - Check service health (embedded server)');
|
|
24
|
+
console.log(' • spectify rulesets - List available rulesets');
|
|
25
|
+
console.log(' • spectify config - Manage CLI configuration\n');
|
|
26
|
+
console.log(chalk.cyan('To use this command, switch to standalone mode:'));
|
|
27
|
+
console.log(` spectify config set mode standalone\n`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=mode-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-validator.js","sourceRoot":"","sources":["../../../src/cli/utils/mode-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;IAEzC,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,WAAW,uCAAuC,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Port Checker - Utility to check if a port is available
|
|
3
|
+
*/
|
|
4
|
+
export interface PortCheckResult {
|
|
5
|
+
available: boolean;
|
|
6
|
+
port: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Check if a port is available
|
|
10
|
+
*/
|
|
11
|
+
export declare function isPortAvailable(port: number): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Find the next available port starting from a given port
|
|
14
|
+
*/
|
|
15
|
+
export declare function findAvailablePort(startPort: number, maxAttempts?: number): Promise<number | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Check multiple ports and return their availability status
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkPorts(ports: number[]): Promise<PortCheckResult[]>;
|
|
20
|
+
//# sourceMappingURL=port-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-checker.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/port-checker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAQ5E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Port Checker - Utility to check if a port is available
|
|
3
|
+
*/
|
|
4
|
+
import net from 'net';
|
|
5
|
+
/**
|
|
6
|
+
* Check if a port is available
|
|
7
|
+
*/
|
|
8
|
+
export async function isPortAvailable(port) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
const server = net.createServer();
|
|
11
|
+
server.once('error', (err) => {
|
|
12
|
+
if (err.code === 'EADDRINUSE') {
|
|
13
|
+
resolve(false);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
resolve(false);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
server.once('listening', () => {
|
|
20
|
+
server.close();
|
|
21
|
+
resolve(true);
|
|
22
|
+
});
|
|
23
|
+
server.listen(port, '0.0.0.0');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Find the next available port starting from a given port
|
|
28
|
+
*/
|
|
29
|
+
export async function findAvailablePort(startPort, maxAttempts = 10) {
|
|
30
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
31
|
+
const port = startPort + i;
|
|
32
|
+
const available = await isPortAvailable(port);
|
|
33
|
+
if (available) {
|
|
34
|
+
return port;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check multiple ports and return their availability status
|
|
41
|
+
*/
|
|
42
|
+
export async function checkPorts(ports) {
|
|
43
|
+
const results = await Promise.all(ports.map(async (port) => ({
|
|
44
|
+
port,
|
|
45
|
+
available: await isPortAvailable(port),
|
|
46
|
+
})));
|
|
47
|
+
return results;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=port-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-checker.js","sourceRoot":"","sources":["../../../src/cli/utils/port-checker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,cAAsB,EAAE;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe;IAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI;QACJ,SAAS,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC;KACvC,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader for OpenAPI Lint Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Zero-config by default with sensible defaults
|
|
5
|
+
* Optional YAML file for advanced configuration
|
|
6
|
+
* Environment variable overrides always available
|
|
7
|
+
*/
|
|
8
|
+
import 'dotenv/config';
|
|
9
|
+
import type { OrchestratorConfig } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a resolver module name to its absolute file path.
|
|
12
|
+
* Module lives in `{packageRoot}/resolvers/{name}.js`.
|
|
13
|
+
* Returns `undefined` if `name` is falsy (disabled).
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveResolverPath(name: string | undefined): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the orchestrator home directory.
|
|
18
|
+
* SPECTIFY_HOME env var overrides the default ~/.spectify.
|
|
19
|
+
* Used as the base for all runtime data (uploads, reports, config).
|
|
20
|
+
*/
|
|
21
|
+
export declare function spectifyHome(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Load configuration from optional file or use defaults
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadConfig(configPath?: string): Promise<OrchestratorConfig>;
|
|
26
|
+
/**
|
|
27
|
+
* Validate configuration
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateConfig(config: OrchestratorConfig): void;
|
|
30
|
+
/**
|
|
31
|
+
* Get configuration summary for logging
|
|
32
|
+
*/
|
|
33
|
+
export declare function getConfigSummary(config: OrchestratorConfig): Record<string, any>;
|
|
34
|
+
/**
|
|
35
|
+
* Create lightweight configuration for embedded mode
|
|
36
|
+
*
|
|
37
|
+
* Used by CLI when starting embedded server
|
|
38
|
+
* Optimized for single-user, developer laptop use
|
|
39
|
+
*/
|
|
40
|
+
export declare function createEmbeddedModeConfig(overrides?: Partial<OrchestratorConfig>): OrchestratorConfig;
|
|
41
|
+
/**
|
|
42
|
+
* Create production configuration for standalone server mode
|
|
43
|
+
*
|
|
44
|
+
* Used when running spectifyd as dedicated process
|
|
45
|
+
* Optimized for production, multi-user, always-on deployments
|
|
46
|
+
* Document store defaults to ~/.spectify/uploads (user home directory)
|
|
47
|
+
*/
|
|
48
|
+
export declare function createStandaloneModeConfig(overrides?: Partial<OrchestratorConfig>): OrchestratorConfig;
|
|
49
|
+
/**
|
|
50
|
+
* Create configuration for MCP companion mode
|
|
51
|
+
*
|
|
52
|
+
* Used when the orchestrator is started by MCP OpenAPI Analyzer
|
|
53
|
+
* Shares MCP's document store, lighter resource footprint
|
|
54
|
+
* Document store path MUST be provided explicitly (no default)
|
|
55
|
+
*/
|
|
56
|
+
export declare function createCompanionModeConfig(overrides?: Partial<OrchestratorConfig>): OrchestratorConfig;
|
|
57
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,eAAe,CAAC;AAMvB,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,YAAY,CAAC;AAOnE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIhF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAqDD;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwBjF;AAuND;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAgC/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAchF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAyDpG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAyDtG;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAuDrG"}
|