@qodalis/cli-server-node 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +146 -0
- package/dist/abstractions/cli-command-author.d.ts +11 -0
- package/dist/abstractions/cli-command-author.d.ts.map +1 -0
- package/dist/abstractions/cli-command-author.js +14 -0
- package/dist/abstractions/cli-command-author.js.map +1 -0
- package/dist/abstractions/cli-command-parameter-descriptor.d.ts +18 -0
- package/dist/abstractions/cli-command-parameter-descriptor.d.ts.map +1 -0
- package/dist/abstractions/cli-command-parameter-descriptor.js +21 -0
- package/dist/abstractions/cli-command-parameter-descriptor.js.map +1 -0
- package/dist/abstractions/cli-command-processor.d.ts +26 -0
- package/dist/abstractions/cli-command-processor.d.ts.map +1 -0
- package/dist/abstractions/cli-command-processor.js +14 -0
- package/dist/abstractions/cli-command-processor.js.map +1 -0
- package/dist/abstractions/cli-process-command.d.ts +9 -0
- package/dist/abstractions/cli-process-command.d.ts.map +1 -0
- package/dist/abstractions/cli-process-command.js +3 -0
- package/dist/abstractions/cli-process-command.js.map +1 -0
- package/dist/abstractions/index.d.ts +5 -0
- package/dist/abstractions/index.d.ts.map +1 -0
- package/dist/abstractions/index.js +11 -0
- package/dist/abstractions/index.js.map +1 -0
- package/dist/controllers/cli-controller.d.ts +4 -0
- package/dist/controllers/cli-controller.d.ts.map +1 -0
- package/dist/controllers/cli-controller.js +42 -0
- package/dist/controllers/cli-controller.js.map +1 -0
- package/dist/create-cli-server.d.ts +25 -0
- package/dist/create-cli-server.d.ts.map +1 -0
- package/dist/create-cli-server.js +35 -0
- package/dist/create-cli-server.js.map +1 -0
- package/dist/extensions/cli-builder.d.ts +9 -0
- package/dist/extensions/cli-builder.d.ts.map +1 -0
- package/dist/extensions/cli-builder.js +18 -0
- package/dist/extensions/cli-builder.js.map +1 -0
- package/dist/extensions/index.d.ts +2 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +6 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/models/cli-server-command-descriptor.d.ts +16 -0
- package/dist/models/cli-server-command-descriptor.d.ts.map +1 -0
- package/dist/models/cli-server-command-descriptor.js +3 -0
- package/dist/models/cli-server-command-descriptor.js.map +1 -0
- package/dist/models/cli-server-output.d.ts +23 -0
- package/dist/models/cli-server-output.d.ts.map +1 -0
- package/dist/models/cli-server-output.js +3 -0
- package/dist/models/cli-server-output.js.map +1 -0
- package/dist/models/cli-server-response.d.ts +6 -0
- package/dist/models/cli-server-response.d.ts.map +1 -0
- package/dist/models/cli-server-response.js +3 -0
- package/dist/models/cli-server-response.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +3 -0
- package/dist/models/index.js.map +1 -0
- package/dist/processors/cli-base64-command-processor.d.ts +11 -0
- package/dist/processors/cli-base64-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-base64-command-processor.js +40 -0
- package/dist/processors/cli-base64-command-processor.js.map +1 -0
- package/dist/processors/cli-echo-command-processor.d.ts +8 -0
- package/dist/processors/cli-echo-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-echo-command-processor.js +14 -0
- package/dist/processors/cli-echo-command-processor.js.map +1 -0
- package/dist/processors/cli-hash-command-processor.d.ts +10 -0
- package/dist/processors/cli-hash-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-hash-command-processor.js +30 -0
- package/dist/processors/cli-hash-command-processor.js.map +1 -0
- package/dist/processors/cli-http-command-processor.d.ts +11 -0
- package/dist/processors/cli-http-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-http-command-processor.js +79 -0
- package/dist/processors/cli-http-command-processor.js.map +1 -0
- package/dist/processors/cli-status-command-processor.d.ts +7 -0
- package/dist/processors/cli-status-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-status-command-processor.js +18 -0
- package/dist/processors/cli-status-command-processor.js.map +1 -0
- package/dist/processors/cli-system-command-processor.d.ts +8 -0
- package/dist/processors/cli-system-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-system-command-processor.js +33 -0
- package/dist/processors/cli-system-command-processor.js.map +1 -0
- package/dist/processors/cli-uuid-command-processor.d.ts +10 -0
- package/dist/processors/cli-uuid-command-processor.d.ts.map +1 -0
- package/dist/processors/cli-uuid-command-processor.js +27 -0
- package/dist/processors/cli-uuid-command-processor.js.map +1 -0
- package/dist/processors/index.d.ts +8 -0
- package/dist/processors/index.d.ts.map +1 -0
- package/dist/processors/index.js +18 -0
- package/dist/processors/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +43 -0
- package/dist/server.js.map +1 -0
- package/dist/services/cli-command-executor-service.d.ts +12 -0
- package/dist/services/cli-command-executor-service.d.ts.map +1 -0
- package/dist/services/cli-command-executor-service.js +45 -0
- package/dist/services/cli-command-executor-service.js.map +1 -0
- package/dist/services/cli-command-registry.d.ts +14 -0
- package/dist/services/cli-command-registry.d.ts.map +1 -0
- package/dist/services/cli-command-registry.js +32 -0
- package/dist/services/cli-command-registry.js.map +1 -0
- package/dist/services/cli-event-socket-manager.d.ts +15 -0
- package/dist/services/cli-event-socket-manager.d.ts.map +1 -0
- package/dist/services/cli-event-socket-manager.js +60 -0
- package/dist/services/cli-event-socket-manager.js.map +1 -0
- package/dist/services/cli-response-builder.d.ts +22 -0
- package/dist/services/cli-response-builder.d.ts.map +1 -0
- package/dist/services/cli-response-builder.js +36 -0
- package/dist/services/cli-response-builder.js.map +1 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/index.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliCommandExecutorService = void 0;
|
|
4
|
+
class CliCommandExecutorService {
|
|
5
|
+
_registry;
|
|
6
|
+
constructor(_registry) {
|
|
7
|
+
this._registry = _registry;
|
|
8
|
+
}
|
|
9
|
+
async executeAsync(command) {
|
|
10
|
+
const processor = this._registry.findProcessor(command.command, command.chainCommands?.length ? command.chainCommands : undefined);
|
|
11
|
+
if (!processor) {
|
|
12
|
+
return {
|
|
13
|
+
exitCode: 1,
|
|
14
|
+
outputs: [
|
|
15
|
+
{
|
|
16
|
+
type: 'text',
|
|
17
|
+
value: `Unknown command: ${command.command}`,
|
|
18
|
+
style: 'error',
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const result = await processor.handleAsync(command);
|
|
25
|
+
return {
|
|
26
|
+
exitCode: 0,
|
|
27
|
+
outputs: [{ type: 'text', value: result }],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return {
|
|
32
|
+
exitCode: 1,
|
|
33
|
+
outputs: [
|
|
34
|
+
{
|
|
35
|
+
type: 'text',
|
|
36
|
+
value: `Error executing command: ${err.message ?? err}`,
|
|
37
|
+
style: 'error',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.CliCommandExecutorService = CliCommandExecutorService;
|
|
45
|
+
//# sourceMappingURL=cli-command-executor-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-executor-service.js","sourceRoot":"","sources":["../../src/services/cli-command-executor-service.ts"],"names":[],"mappings":";;;AAQA,MAAa,yBAAyB;IACL;IAA7B,YAA6B,SAA8B;QAA9B,cAAS,GAAT,SAAS,CAAqB;IAAG,CAAC;IAE/D,KAAK,CAAC,YAAY,CAAC,OAA0B;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAC1C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CACpE,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO;gBACH,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,oBAAoB,OAAO,CAAC,OAAO,EAAE;wBAC5C,KAAK,EAAE,OAAO;qBACjB;iBACJ;aACJ,CAAC;QACN,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO;gBACH,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC7C,CAAC;QACN,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO;gBACH,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,4BAA4B,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE;wBACvD,KAAK,EAAE,OAAO;qBACjB;iBACJ;aACJ,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAzCD,8DAyCC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ICliCommandProcessor } from '../abstractions';
|
|
2
|
+
export interface ICliCommandRegistry {
|
|
3
|
+
readonly processors: ReadonlyArray<ICliCommandProcessor>;
|
|
4
|
+
register(processor: ICliCommandProcessor): void;
|
|
5
|
+
findProcessor(command: string, chainCommands?: string[]): ICliCommandProcessor | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare class CliCommandRegistry implements ICliCommandRegistry {
|
|
8
|
+
private _processors;
|
|
9
|
+
get processors(): ReadonlyArray<ICliCommandProcessor>;
|
|
10
|
+
register(processor: ICliCommandProcessor): void;
|
|
11
|
+
findProcessor(command: string, chainCommands?: string[]): ICliCommandProcessor | undefined;
|
|
12
|
+
private resolveChain;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=cli-command-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-registry.d.ts","sourceRoot":"","sources":["../../src/services/cli-command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAAC;CAC9F;AAED,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,WAAW,CAAgD;IAEnE,IAAI,UAAU,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAEpD;IAED,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI/C,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,SAAS;IAS1F,OAAO,CAAC,YAAY;CAkBvB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliCommandRegistry = void 0;
|
|
4
|
+
class CliCommandRegistry {
|
|
5
|
+
_processors = new Map();
|
|
6
|
+
get processors() {
|
|
7
|
+
return Array.from(this._processors.values());
|
|
8
|
+
}
|
|
9
|
+
register(processor) {
|
|
10
|
+
this._processors.set(processor.command.toLowerCase(), processor);
|
|
11
|
+
}
|
|
12
|
+
findProcessor(command, chainCommands) {
|
|
13
|
+
const processor = this._processors.get(command.toLowerCase());
|
|
14
|
+
if (!processor || !chainCommands?.length) {
|
|
15
|
+
return processor;
|
|
16
|
+
}
|
|
17
|
+
return this.resolveChain(processor, chainCommands);
|
|
18
|
+
}
|
|
19
|
+
resolveChain(processor, chainCommands) {
|
|
20
|
+
let current = processor;
|
|
21
|
+
for (const sub of chainCommands) {
|
|
22
|
+
const child = current.processors?.find((p) => p.command.toLowerCase() === sub.toLowerCase());
|
|
23
|
+
if (!child) {
|
|
24
|
+
return current.allowUnlistedCommands ? current : undefined;
|
|
25
|
+
}
|
|
26
|
+
current = child;
|
|
27
|
+
}
|
|
28
|
+
return current;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.CliCommandRegistry = CliCommandRegistry;
|
|
32
|
+
//# sourceMappingURL=cli-command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-registry.js","sourceRoot":"","sources":["../../src/services/cli-command-registry.ts"],"names":[],"mappings":";;;AAQA,MAAa,kBAAkB;IACnB,WAAW,GAAsC,IAAI,GAAG,EAAE,CAAC;IAEnE,IAAI,UAAU;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAA+B;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,aAAwB;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAEO,YAAY,CAChB,SAA+B,EAC/B,aAAuB;QAEvB,IAAI,OAAO,GAAG,SAAS,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CACvD,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAtCD,gDAsCC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Server } from 'http';
|
|
2
|
+
export declare class CliEventSocketManager {
|
|
3
|
+
private _wss;
|
|
4
|
+
private readonly _clients;
|
|
5
|
+
/**
|
|
6
|
+
* Attach to an HTTP server and listen for WebSocket upgrades on /ws/cli/events.
|
|
7
|
+
*/
|
|
8
|
+
attach(server: Server): void;
|
|
9
|
+
/**
|
|
10
|
+
* Broadcast a disconnect event to all connected clients and close sockets.
|
|
11
|
+
*/
|
|
12
|
+
broadcastDisconnect(): Promise<void>;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cli-event-socket-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-event-socket-manager.d.ts","sourceRoot":"","sources":["../../src/services/cli-event-socket-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IAEjD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2B5B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1C,OAAO,IAAI,IAAI;CAOlB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliEventSocketManager = void 0;
|
|
4
|
+
const ws_1 = require("ws");
|
|
5
|
+
class CliEventSocketManager {
|
|
6
|
+
_wss = null;
|
|
7
|
+
_clients = new Set();
|
|
8
|
+
/**
|
|
9
|
+
* Attach to an HTTP server and listen for WebSocket upgrades on /ws/cli/events.
|
|
10
|
+
*/
|
|
11
|
+
attach(server) {
|
|
12
|
+
this._wss = new ws_1.WebSocketServer({ noServer: true });
|
|
13
|
+
server.on('upgrade', (request, socket, head) => {
|
|
14
|
+
if (request.url !== '/ws/cli/events') {
|
|
15
|
+
return; // Let other upgrade handlers (if any) handle it
|
|
16
|
+
}
|
|
17
|
+
this._wss.handleUpgrade(request, socket, head, (ws) => {
|
|
18
|
+
this._wss.emit('connection', ws, request);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
this._wss.on('connection', (ws) => {
|
|
22
|
+
this._clients.add(ws);
|
|
23
|
+
ws.send(JSON.stringify({ type: 'connected' }));
|
|
24
|
+
ws.on('close', () => {
|
|
25
|
+
this._clients.delete(ws);
|
|
26
|
+
});
|
|
27
|
+
ws.on('error', () => {
|
|
28
|
+
this._clients.delete(ws);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Broadcast a disconnect event to all connected clients and close sockets.
|
|
34
|
+
*/
|
|
35
|
+
async broadcastDisconnect() {
|
|
36
|
+
const message = JSON.stringify({ type: 'disconnect' });
|
|
37
|
+
const promises = [];
|
|
38
|
+
for (const ws of this._clients) {
|
|
39
|
+
if (ws.readyState === ws_1.WebSocket.OPEN) {
|
|
40
|
+
promises.push(new Promise((resolve) => {
|
|
41
|
+
ws.send(message, () => {
|
|
42
|
+
ws.close(1000, 'Server shutting down');
|
|
43
|
+
resolve();
|
|
44
|
+
});
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
await Promise.all(promises);
|
|
49
|
+
this._clients.clear();
|
|
50
|
+
}
|
|
51
|
+
dispose() {
|
|
52
|
+
for (const ws of this._clients) {
|
|
53
|
+
ws.terminate();
|
|
54
|
+
}
|
|
55
|
+
this._clients.clear();
|
|
56
|
+
this._wss?.close();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.CliEventSocketManager = CliEventSocketManager;
|
|
60
|
+
//# sourceMappingURL=cli-event-socket-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-event-socket-manager.js","sourceRoot":"","sources":["../../src/services/cli-event-socket-manager.ts"],"names":[],"mappings":";;;AAAA,2BAAgD;AAGhD,MAAa,qBAAqB;IACtB,IAAI,GAA2B,IAAI,CAAC;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAAa,CAAC;IAEjD;;OAEG;IACH,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC3C,IAAI,OAAO,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;gBACnC,OAAO,CAAC,gDAAgD;YAC5D,CAAC;YAED,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBACnD,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAE/C,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CACT,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC1B,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;wBAClB,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;wBACvC,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CACL,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;CACJ;AAlED,sDAkEC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CliServerResponse } from '../models';
|
|
2
|
+
export interface ICliResponseBuilder {
|
|
3
|
+
writeText(text: string, style?: 'success' | 'error' | 'info' | 'warning'): void;
|
|
4
|
+
writeTable(headers: string[], rows: string[][]): void;
|
|
5
|
+
writeList(items: string[], ordered?: boolean): void;
|
|
6
|
+
writeJson(value: any): void;
|
|
7
|
+
writeKeyValue(entries: Record<string, string>): void;
|
|
8
|
+
setExitCode(code: number): void;
|
|
9
|
+
build(): CliServerResponse;
|
|
10
|
+
}
|
|
11
|
+
export declare class CliResponseBuilder implements ICliResponseBuilder {
|
|
12
|
+
private _exitCode;
|
|
13
|
+
private _outputs;
|
|
14
|
+
writeText(text: string, style?: 'success' | 'error' | 'info' | 'warning'): void;
|
|
15
|
+
writeTable(headers: string[], rows: string[][]): void;
|
|
16
|
+
writeList(items: string[], ordered?: boolean): void;
|
|
17
|
+
writeJson(value: any): void;
|
|
18
|
+
writeKeyValue(entries: Record<string, string>): void;
|
|
19
|
+
setExitCode(code: number): void;
|
|
20
|
+
build(): CliServerResponse;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=cli-response-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-response-builder.d.ts","sourceRoot":"","sources":["../../src/services/cli-response-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAChF,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,IAAI,iBAAiB,CAAC;CAC9B;AAED,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAyB;IAEzC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAI/E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;IAIrD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,UAAQ,GAAG,IAAI;IAIjD,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAI3B,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAOpD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,KAAK,IAAI,iBAAiB;CAM7B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliResponseBuilder = void 0;
|
|
4
|
+
class CliResponseBuilder {
|
|
5
|
+
_exitCode = 0;
|
|
6
|
+
_outputs = [];
|
|
7
|
+
writeText(text, style) {
|
|
8
|
+
this._outputs.push({ type: 'text', value: text, ...(style ? { style } : {}) });
|
|
9
|
+
}
|
|
10
|
+
writeTable(headers, rows) {
|
|
11
|
+
this._outputs.push({ type: 'table', headers, rows });
|
|
12
|
+
}
|
|
13
|
+
writeList(items, ordered = false) {
|
|
14
|
+
this._outputs.push({ type: 'list', items, ordered });
|
|
15
|
+
}
|
|
16
|
+
writeJson(value) {
|
|
17
|
+
this._outputs.push({ type: 'json', value });
|
|
18
|
+
}
|
|
19
|
+
writeKeyValue(entries) {
|
|
20
|
+
this._outputs.push({
|
|
21
|
+
type: 'key-value',
|
|
22
|
+
entries: Object.entries(entries).map(([key, value]) => ({ key, value })),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
setExitCode(code) {
|
|
26
|
+
this._exitCode = code;
|
|
27
|
+
}
|
|
28
|
+
build() {
|
|
29
|
+
return {
|
|
30
|
+
exitCode: this._exitCode,
|
|
31
|
+
outputs: this._outputs,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.CliResponseBuilder = CliResponseBuilder;
|
|
36
|
+
//# sourceMappingURL=cli-response-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-response-builder.js","sourceRoot":"","sources":["../../src/services/cli-response-builder.ts"],"names":[],"mappings":";;;AAaA,MAAa,kBAAkB;IACnB,SAAS,GAAG,CAAC,CAAC;IACd,QAAQ,GAAsB,EAAE,CAAC;IAEzC,SAAS,CAAC,IAAY,EAAE,KAAgD;QACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,UAAU,CAAC,OAAiB,EAAE,IAAgB;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,KAAe,EAAE,OAAO,GAAG,KAAK;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,KAAU;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,OAA+B;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;SAC3E,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK;QACD,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC;IACN,CAAC;CACJ;AArCD,gDAqCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ICliCommandRegistry, CliCommandRegistry } from './cli-command-registry';
|
|
2
|
+
export { ICliResponseBuilder, CliResponseBuilder } from './cli-response-builder';
|
|
3
|
+
export { ICliCommandExecutorService, CliCommandExecutorService } from './cli-command-executor-service';
|
|
4
|
+
export { CliEventSocketManager } from './cli-event-socket-manager';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliEventSocketManager = exports.CliCommandExecutorService = exports.CliResponseBuilder = exports.CliCommandRegistry = void 0;
|
|
4
|
+
var cli_command_registry_1 = require("./cli-command-registry");
|
|
5
|
+
Object.defineProperty(exports, "CliCommandRegistry", { enumerable: true, get: function () { return cli_command_registry_1.CliCommandRegistry; } });
|
|
6
|
+
var cli_response_builder_1 = require("./cli-response-builder");
|
|
7
|
+
Object.defineProperty(exports, "CliResponseBuilder", { enumerable: true, get: function () { return cli_response_builder_1.CliResponseBuilder; } });
|
|
8
|
+
var cli_command_executor_service_1 = require("./cli-command-executor-service");
|
|
9
|
+
Object.defineProperty(exports, "CliCommandExecutorService", { enumerable: true, get: function () { return cli_command_executor_service_1.CliCommandExecutorService; } });
|
|
10
|
+
var cli_event_socket_manager_1 = require("./cli-event-socket-manager");
|
|
11
|
+
Object.defineProperty(exports, "CliEventSocketManager", { enumerable: true, get: function () { return cli_event_socket_manager_1.CliEventSocketManager; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,+DAAiF;AAAnD,0HAAA,kBAAkB,OAAA;AAChD,+DAAiF;AAAnD,0HAAA,kBAAkB,OAAA;AAChD,+EAAuG;AAAlE,yIAAA,yBAAyB,OAAA;AAC9D,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qodalis/cli-server-node",
|
|
3
|
+
"version": "1.0.0-beta.1",
|
|
4
|
+
"description": "Node.js CLI server for Qodalis CLI ecosystem — use as a library in existing Express apps or run standalone",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"qodalis-cli-server": "dist/server.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"start": "tsx src/server.ts",
|
|
18
|
+
"dev": "tsx watch src/server.ts"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"cli",
|
|
22
|
+
"qodalis",
|
|
23
|
+
"terminal",
|
|
24
|
+
"commands",
|
|
25
|
+
"cli-server",
|
|
26
|
+
"command-processor"
|
|
27
|
+
],
|
|
28
|
+
"author": "Nicolae Lupei <nicolae.lupei@qodalis.com>",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/qodalis-solutions/cli-server-node"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://qodalis.com/",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"cors": "^2.8.5",
|
|
37
|
+
"express": "^4.21.0",
|
|
38
|
+
"ws": "^8.18.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/cors": "^2.8.17",
|
|
42
|
+
"@types/express": "^4.17.21",
|
|
43
|
+
"@types/node": "^22.0.0",
|
|
44
|
+
"@types/ws": "^8.5.13",
|
|
45
|
+
"tsx": "^4.19.0",
|
|
46
|
+
"typescript": "^5.6.0"
|
|
47
|
+
}
|
|
48
|
+
}
|