@akala/pm 3.3.3 → 3.4.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/dist/fork.js CHANGED
@@ -32,11 +32,12 @@ source_map_support_1.default.install();
32
32
  const path = __importStar(require("path"));
33
33
  const ac = __importStar(require("@akala/commands"));
34
34
  const promises_1 = require("fs/promises");
35
- const start_1 = require("./commands/start");
35
+ const ipc_adapter_1 = require("./ipc-adapter");
36
36
  const net_1 = require("net");
37
37
  const core_1 = require("@akala/core");
38
38
  const cli_1 = __importStar(require("@akala/cli"));
39
39
  const commands_1 = require("@akala/commands");
40
+ const serve_metadata_1 = require("@akala/commands/src/serve-metadata");
40
41
  var isPm = false;
41
42
  cli_1.default.useMiddleware({
42
43
  handle: async (c) => {
@@ -59,7 +60,7 @@ logMiddleware.preAction(async (c) => {
59
60
  await ac.Processors.FileSystem.discoverCommands(c.options.program, cliContainer, { processor: processor, isDirectory: folderOrFile.isDirectory() });
60
61
  });
61
62
  const initMiddleware = new cli_1.NamespaceMiddleware(null);
62
- cli_1.default.option('program', { needsValue: true }).option('name', { needsValue: true }).
63
+ cli_1.default.option('program', { needsValue: true }).option('name', { needsValue: true }).option('tls', { needsValue: false }).
63
64
  use(async (c) => //If pure js file
64
65
  {
65
66
  folderOrFile = await (0, promises_1.lstat)(c.options.program);
@@ -87,28 +88,34 @@ cli_1.default.option('program', { needsValue: true }).option('name', { needsValu
87
88
  ac.Triggers.addCliOptions(init, initMiddleware);
88
89
  initMiddleware.option('pmSocket', { aliases: ['pm-socket', 'pm-sock'] }).action(async (c) => {
89
90
  let pm;
91
+ let pmConnectInfo;
90
92
  if (!isPm) {
91
93
  if (process.connected) {
92
- pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new start_1.IpcAdapter(process), cliContainer), true));
94
+ pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new ipc_adapter_1.IpcAdapter(process), cliContainer), true));
93
95
  }
94
96
  else {
95
97
  const pmSocket = new net_1.Socket();
96
- await new Promise((resolve, reject) => {
97
- pmSocket.on('error', reject);
98
- const remote = /^(?:([^:]+):)?(\d+)$/.exec(c.options.pmSocket);
99
- if (!remote) {
100
- pmSocket.connect(c.options.pmSocket, resolve);
101
- }
102
- else {
103
- const host = remote[1];
104
- const port = remote[2];
105
- if (host)
106
- pmSocket.connect(Number(port), host, resolve);
107
- else
108
- pmSocket.connect(Number(port), resolve);
109
- }
110
- });
111
- pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new ac.NetSocketAdapter(pmSocket), cliContainer), true));
98
+ const x = await ac.connectByPreference(pmConnectInfo = (0, serve_metadata_1.parseMetadata)(c.options.pmSocket, c.options.tls), { container: cliContainer });
99
+ pm = x.container;
100
+ // await new Promise<void>((resolve, reject) =>
101
+ // {
102
+ // pmSocket.on('error', reject)
103
+ // const remote = /^(?:([^:]+):)?(\d+)$/.exec(c.options.pmSocket);
104
+ // if (!remote)
105
+ // {
106
+ // pmSocket.connect(c.options.pmSocket, resolve);
107
+ // }
108
+ // else
109
+ // {
110
+ // const host = remote[1];
111
+ // const port = remote[2];
112
+ // if (host)
113
+ // pmSocket.connect(Number(port), host, resolve);
114
+ // else
115
+ // pmSocket.connect(Number(port), resolve);
116
+ // }
117
+ // })
118
+ // pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new ac.NetSocketAdapter(pmSocket), cliContainer), true));
112
119
  }
113
120
  // eslint-disable-next-line @typescript-eslint/no-var-requires
114
121
  (0, commands_1.registerCommands)(require('../commands.json').commands.map(ac.Metadata.extractCommandMetadata), null, pm);
@@ -118,6 +125,12 @@ cli_1.default.option('program', { needsValue: true }).option('name', { needsValu
118
125
  else
119
126
  pm = cliContainer;
120
127
  (0, core_1.module)('@akala/pm').register('container', pm);
128
+ cliContainer.register(new commands_1.SelfDefinedCommand(async (connectionId) => {
129
+ if (!pmConnectInfo)
130
+ pmConnectInfo = await pm.dispatch('connect', 'pm');
131
+ var pm2 = await ac.connectByPreference(pmConnectInfo, { container: cliContainer });
132
+ await pm2.container.dispatch('bridge', connectionId);
133
+ }, '$bridge'));
121
134
  if (init)
122
135
  await cliContainer.dispatch(init, { options: c.options, param: c.args, _trigger: 'cli', pm: pm, context: c });
123
136
  let stop;
package/dist/fork.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fork.js","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -64,7 +64,7 @@ function sidecar(options, noCache) {
64
64
  catch (e) {
65
65
  if (e && e.statusCode == 404 || !meta.connect) {
66
66
  var c = new commands_1.Container(meta.container.name, null, (0, core_1.module)('@akala/pm').resolve('container').processor);
67
- c.processor.useMiddleware(1, {
67
+ c.processor.useMiddleware(0, {
68
68
  handle(origin, cmd, param) {
69
69
  if (cmd.name.startsWith(meta.container.name + '.'))
70
70
  return undefined;
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="webpack-env" />
3
+ import { ChildProcess } from "child_process";
4
+ import * as jsonrpc from '@akala/json-rpc-ws';
5
+ import { SocketAdapterEventMap } from "@akala/json-rpc-ws";
6
+ export declare class IpcAdapter implements jsonrpc.SocketAdapter {
7
+ private cp;
8
+ get open(): boolean;
9
+ pipe(socket: jsonrpc.SocketAdapter<unknown>): void;
10
+ close(): void;
11
+ send(data: string): void;
12
+ on<K extends keyof SocketAdapterEventMap>(event: K, handler: (ev: SocketAdapterEventMap[K]) => void): void;
13
+ once<K extends keyof SocketAdapterEventMap>(event: K, handler: (ev: SocketAdapterEventMap[K]) => void): void;
14
+ constructor(cp: ChildProcess | NodeJS.Process);
15
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IpcAdapter = void 0;
4
+ class IpcAdapter {
5
+ cp;
6
+ get open() { return !!this.cp.pid; }
7
+ pipe(socket) {
8
+ this.on('message', (message) => socket.send(message));
9
+ this.on('close', () => socket.close());
10
+ }
11
+ close() {
12
+ this.cp.disconnect();
13
+ }
14
+ send(data) {
15
+ if (this.cp.send)
16
+ this.cp.send(data + '\n');
17
+ else
18
+ console.warn(`process ${this.cp.pid} does not support send over IPC`);
19
+ }
20
+ on(event, handler) {
21
+ switch (event) {
22
+ case 'message':
23
+ this.cp.on('message', handler);
24
+ break;
25
+ case 'open':
26
+ handler(null);
27
+ break;
28
+ case 'close':
29
+ this.cp.on('disconnect', handler);
30
+ break;
31
+ }
32
+ }
33
+ once(event, handler) {
34
+ switch (event) {
35
+ case 'message':
36
+ this.cp.once('message', handler);
37
+ break;
38
+ case 'open':
39
+ handler(null);
40
+ break;
41
+ case 'close':
42
+ this.cp.once('disconnect', () => handler(null));
43
+ break;
44
+ }
45
+ }
46
+ constructor(cp) {
47
+ this.cp = cp;
48
+ }
49
+ }
50
+ exports.IpcAdapter = IpcAdapter;
51
+ //# sourceMappingURL=ipc-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-adapter.js","sourceRoot":"","sources":["../src/ipc-adapter.ts"],"names":[],"mappings":";;;AAKA,MAAa,UAAU;IAuDC;IArDpB,IAAI,IAAI,KAAc,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAG7C,IAAI,CAAC,MAAsC;QAEvC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,IAAY;QAEb,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI;YACZ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;;YAG1B,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,GAAG,iCAAiC,CAAC,CAAC;IAC9E,CAAC;IACD,EAAE,CAAwC,KAAQ,EAAE,OAA+C;QAE/F,QAAQ,KAAK,EACb;YACI,KAAK,SAAS;gBACV,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,MAAM;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAClC,MAAM;SACb;IACL,CAAC;IAED,IAAI,CAAwC,KAAQ,EAAE,OAA+C;QAEjG,QAAQ,KAAK,EACb;YACI,KAAK,SAAS;gBACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACjC,MAAM;YACV,KAAK,MAAM;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,MAAM;SACb;IACL,CAAC;IAED,YAAoB,EAAiC;QAAjC,OAAE,GAAF,EAAE,CAA+B;IAErD,CAAC;CAEJ;AA3DD,gCA2DC"}
package/dist/state.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { Container } from "@akala/commands";
3
3
  import { ChildProcess } from "child_process";
4
- import { Deferred, SerializableObject } from "@akala/json-rpc-ws";
4
+ import { Deferred, SerializableObject, SocketAdapter } from "@akala/json-rpc-ws";
5
5
  import { ServeMetadata } from "@akala/commands";
6
6
  import { ProxyConfiguration } from "@akala/config";
7
7
  export default interface State {
@@ -10,6 +10,9 @@ export default interface State {
10
10
  };
11
11
  isDaemon: boolean;
12
12
  config: ProxyConfiguration<StateConfiguration>;
13
+ bridges: {
14
+ [key: string]: SocketAdapter;
15
+ };
13
16
  }
14
17
  export interface StateConfiguration {
15
18
  containers: {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "pm": "dist/cli.js",
5
5
  "pm-fork": "dist/fork.js"
6
6
  },
7
- "version": "3.3.3",
7
+ "version": "3.4.1",
8
8
  "scripts": {
9
9
  "test": "echo 1",
10
10
  "generate": "ac generate dist/commands commands.json",
@@ -19,11 +19,11 @@
19
19
  },
20
20
  "homepage": "https://akala.js.org/pm",
21
21
  "dependencies": {
22
- "@akala/cli": "^2.1.6",
23
- "@akala/commands": "^3.1.2",
24
- "@akala/config": "^1.1.17",
25
- "@akala/core": "^9.0.2",
26
- "@akala/json-rpc-ws": "^9.4.2",
22
+ "@akala/cli": "^2.1.8",
23
+ "@akala/commands": "^3.2.0",
24
+ "@akala/config": "^1.1.19",
25
+ "@akala/core": "^9.0.4",
26
+ "@akala/json-rpc-ws": "^9.5.0",
27
27
  "reflect-metadata": "^0.1.13",
28
28
  "source-map-support": "^0.5.21"
29
29
  },
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/npenin/akala/master/packages/commands/command-schema.json",
3
+ "fs": {
4
+ "inject": [
5
+ "param.0",
6
+ "param.1"
7
+ ]
8
+ },
9
+ "jsonrpc": {
10
+ "inject": [
11
+ "param.0",
12
+ "socket"
13
+ ]
14
+ },
15
+ "": {
16
+ "inject": []
17
+ }
18
+ }
@@ -0,0 +1,9 @@
1
+ import { Container } from "@akala/commands";
2
+ import { SocketAdapter } from "@akala/json-rpc-ws";
3
+ import State from "../state";
4
+
5
+ export default function (this: State, connectionId: string, socket: SocketAdapter)
6
+ {
7
+ this.bridges[connectionId].pipe(socket);
8
+ socket.pipe(this.bridges[connectionId]);
9
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/npenin/akala/master/packages/commands/command-schema.json",
3
+ "jsonrpc": {
4
+ "inject": [
5
+ "param.0",
6
+ "socket"
7
+ ]
8
+ },
9
+ "": {
10
+ "inject": [
11
+ "param.0",
12
+ "param.1"
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ import { ErrorWithStatus } from "@akala/cli";
2
+ import { SocketAdapter } from "@akala/json-rpc-ws";
3
+ import { randomUUID } from "crypto";
4
+ import State from "../state";
5
+
6
+ export default async function (this: State, name: string, socket: SocketAdapter)
7
+ {
8
+ var cp = this.processes[name];
9
+ if (!cp)
10
+ throw new ErrorWithStatus(404, `There is no such process with name ${name}`);
11
+ const connectionId = randomUUID();
12
+ this.bridges[connectionId] = socket;
13
+ await cp.dispatch('$bridge', connectionId);
14
+ }
@@ -2,7 +2,7 @@ import { Container, Metadata, updateCommands } from "@akala/commands";
2
2
 
3
3
  export default async function (remoteContainer: Container<void>)
4
4
  {
5
- const metadata: Metadata.Container = await remoteContainer.dispatch('$metadata');
5
+ const metadata: Metadata.Container = await remoteContainer.dispatch('$metadata', true);
6
6
  remoteContainer.name = metadata.name;
7
7
  updateCommands(metadata.commands, null, remoteContainer);
8
8
  }
@@ -5,10 +5,10 @@ import pmContainer from '../container';
5
5
  import * as jsonrpc from '@akala/json-rpc-ws'
6
6
  import { eachAsync, logger } from "@akala/core";
7
7
  import { NewLinePrefixer } from "../new-line-prefixer.js";
8
- import { SocketAdapterEventMap } from "@akala/json-rpc-ws";
9
8
  import { CliContext, ErrorWithStatus } from "@akala/cli";
10
9
  import getRandomName from "./name";
11
10
  import { ProxyConfiguration } from "@akala/config";
11
+ import { IpcAdapter } from "../ipc-adapter";
12
12
 
13
13
  export default async function start(this: State, pm: pmContainer.container & Container<State>, name: string, context?: CliContext<{ new?: boolean, name: string, inspect?: boolean, verbose?: boolean, wait?: boolean }>): Promise<void | { execPath: string, args: string[], cwd: string, stdio: StdioOptions, shell: boolean, windowsHide: boolean }>
14
14
  {
@@ -182,70 +182,4 @@ export default async function start(this: State, pm: pmContainer.container & Con
182
182
  }
183
183
  }
184
184
 
185
- export class IpcAdapter implements jsonrpc.SocketAdapter
186
- {
187
- get open(): boolean { return !!this.cp.pid }
188
- close(): void
189
- {
190
- this.cp.disconnect();
191
- }
192
- send(data: string): void
193
- {
194
- if (this.cp.send)
195
- this.cp.send(data + '\n');
196
- else
197
- console.warn(`process ${this.cp.pid} does not support send over IPC`);
198
- }
199
- on<K extends keyof SocketAdapterEventMap>(event: K, handler: (ev: SocketAdapterEventMap[K]) => void): void
200
- {
201
- switch (event)
202
- {
203
- case 'message':
204
- this.cp.on('message', handler);
205
- break;
206
- case 'open':
207
- handler(null);
208
- break;
209
- case 'close':
210
- this.cp.on('disconnect', handler);
211
- break;
212
- }
213
- }
214
-
215
- once<K extends keyof SocketAdapterEventMap>(event: K, handler: (ev: SocketAdapterEventMap[K]) => void): void
216
- {
217
- switch (event)
218
- {
219
- case 'message':
220
- this.cp.once('message', handler);
221
- break;
222
- case 'open':
223
- handler(null);
224
- break;
225
- case 'close':
226
- this.cp.once('disconnect', () => handler(null));
227
- break;
228
- }
229
- }
230
-
231
- constructor(private cp: ChildProcess | NodeJS.Process)
232
- {
233
- }
234
-
235
- // _write(chunk: string | Buffer, encoding: string, callback: (error?: any) => void)
236
- // {
237
- // // The underlying source only deals with strings.
238
- // if (Buffer.isBuffer(chunk))
239
- // chunk = chunk.toString('utf8');
240
- // if (this.cp.send)
241
- // this.cp.send(chunk + '\n', callback);
242
- // else
243
- // callback(new Error('there is no send method on this process'));
244
- // }
245
-
246
- // _read()
247
- // {
248
- // }
249
- }
250
-
251
185
  start.$inject = ['$container', 'param.0', 'options']
package/src/container.ts CHANGED
@@ -5,18 +5,20 @@ namespace commands
5
5
  {
6
6
  export interface container
7
7
  {
8
- dispatch (cmd:'connect', ...args: [Argument0<typeof import('./commands/connect').default>, Argument1<typeof import('./commands/connect').default>]): ReturnType<typeof import('./commands/connect').default>
9
- dispatch (cmd:'config', ...args: [Argument0<typeof import('./commands/config').default>, Argument1<typeof import('./commands/config').default>]): ReturnType<typeof import('./commands/config').default>
10
- dispatch (cmd:'install', ...args: [Argument0<typeof import('./commands/install').default>]): ReturnType<typeof import('./commands/install').default>
11
8
  dispatch (cmd:'$init', ...args: [Argument1<typeof import('./commands/$init').default>]): ReturnType<typeof import('./commands/$init').default>
9
+ dispatch (cmd:'bridge', ...args: [Argument0<typeof import('./commands/bridge').default>, Argument1<typeof import('./commands/bridge').default>]): ReturnType<typeof import('./commands/bridge').default>
10
+ dispatch (cmd:'config', ...args: [Argument0<typeof import('./commands/config').default>, Argument1<typeof import('./commands/config').default>]): ReturnType<typeof import('./commands/config').default>
11
+ dispatch (cmd:'connect', ...args: [Argument0<typeof import('./commands/connect').default>, Argument1<typeof import('./commands/connect').default>]): ReturnType<typeof import('./commands/connect').default>
12
12
  dispatch (cmd:'discover', ...args: [Argument0<typeof import('./commands/discover').default>, Argument1<typeof import('./commands/discover').default>]): ReturnType<typeof import('./commands/discover').default>
13
+ dispatch (cmd:'install', ...args: [Argument0<typeof import('./commands/install').default>]): ReturnType<typeof import('./commands/install').default>
13
14
  dispatch (cmd:'link', ...args: [Argument0<typeof import('./commands/link').default>, Argument1<typeof import('./commands/link').default>]): ReturnType<typeof import('./commands/link').default>
14
- dispatch (cmd:'ls', ...args: []): ReturnType<typeof import('./commands/ls').default>
15
- dispatch (cmd:'name', ...args: [Argument0<typeof import('./commands/name').default>]): ReturnType<typeof import('./commands/name').default>
16
15
  dispatch (cmd:'log', ...args: [Argument0<typeof import('./commands/log').default>]): ReturnType<typeof import('./commands/log').default>
17
- dispatch (cmd:'reload-metadata', ...args: [Argument0<typeof import('./commands/reload-metadata').default>]): ReturnType<typeof import('./commands/reload-metadata').default>
16
+ dispatch (cmd:'ls', ...args: []): ReturnType<typeof import('./commands/ls').default>
18
17
  dispatch (cmd:'map', ...args: [Argument0<typeof import('./commands/map').default>, Argument1<typeof import('./commands/map').default>, Argument2<typeof import('./commands/map').default>, Argument3<typeof import('./commands/map').default>]): ReturnType<typeof import('./commands/map').default>
18
+ dispatch (cmd:'name', ...args: [Argument0<typeof import('./commands/name').default>]): ReturnType<typeof import('./commands/name').default>
19
+ dispatch (cmd:'proxy', ...args: [Argument0<typeof import('./commands/proxy').default>, Argument1<typeof import('./commands/proxy').default>]): ReturnType<typeof import('./commands/proxy').default>
19
20
  dispatch (cmd:'ready', ...args: []): ReturnType<typeof import('./commands/ready').default>
21
+ dispatch (cmd:'reload-metadata', ...args: [Argument0<typeof import('./commands/reload-metadata').default>]): ReturnType<typeof import('./commands/reload-metadata').default>
20
22
  dispatch (cmd:'start', ...args: [Argument1<typeof import('./commands/start').default>, Argument2<typeof import('./commands/start').default>]): ReturnType<typeof import('./commands/start').default>
21
23
  dispatch (cmd:'status', ...args: [Argument0<typeof import('./commands/status').default>]): ReturnType<typeof import('./commands/status').default>
22
24
  dispatch (cmd:'stop', ...args: [Argument0<typeof import('./commands/stop').default>]): ReturnType<typeof import('./commands/stop').default>
@@ -25,18 +27,20 @@ namespace commands
25
27
  }
26
28
  export interface proxy
27
29
  {
28
- 'connect'(...args: [Argument0<typeof import('./commands/connect').default>, Argument1<typeof import('./commands/connect').default>]): ReturnType<typeof import('./commands/connect').default>
29
- 'config'(...args: [Argument0<typeof import('./commands/config').default>, Argument1<typeof import('./commands/config').default>]): ReturnType<typeof import('./commands/config').default>
30
- 'install'(...args: [Argument0<typeof import('./commands/install').default>]): ReturnType<typeof import('./commands/install').default>
31
30
  '$init'(...args: [Argument1<typeof import('./commands/$init').default>]): ReturnType<typeof import('./commands/$init').default>
31
+ 'bridge'(...args: [Argument0<typeof import('./commands/bridge').default>, Argument1<typeof import('./commands/bridge').default>]): ReturnType<typeof import('./commands/bridge').default>
32
+ 'config'(...args: [Argument0<typeof import('./commands/config').default>, Argument1<typeof import('./commands/config').default>]): ReturnType<typeof import('./commands/config').default>
33
+ 'connect'(...args: [Argument0<typeof import('./commands/connect').default>, Argument1<typeof import('./commands/connect').default>]): ReturnType<typeof import('./commands/connect').default>
32
34
  'discover'(...args: [Argument0<typeof import('./commands/discover').default>, Argument1<typeof import('./commands/discover').default>]): ReturnType<typeof import('./commands/discover').default>
35
+ 'install'(...args: [Argument0<typeof import('./commands/install').default>]): ReturnType<typeof import('./commands/install').default>
33
36
  'link'(...args: [Argument0<typeof import('./commands/link').default>, Argument1<typeof import('./commands/link').default>]): ReturnType<typeof import('./commands/link').default>
34
- 'ls'(...args: []): ReturnType<typeof import('./commands/ls').default>
35
- 'name'(...args: [Argument0<typeof import('./commands/name').default>]): ReturnType<typeof import('./commands/name').default>
36
37
  'log'(...args: [Argument0<typeof import('./commands/log').default>]): ReturnType<typeof import('./commands/log').default>
37
- 'reload-metadata'(...args: [Argument0<typeof import('./commands/reload-metadata').default>]): ReturnType<typeof import('./commands/reload-metadata').default>
38
+ 'ls'(...args: []): ReturnType<typeof import('./commands/ls').default>
38
39
  'map'(...args: [Argument0<typeof import('./commands/map').default>, Argument1<typeof import('./commands/map').default>, Argument2<typeof import('./commands/map').default>, Argument3<typeof import('./commands/map').default>]): ReturnType<typeof import('./commands/map').default>
40
+ 'name'(...args: [Argument0<typeof import('./commands/name').default>]): ReturnType<typeof import('./commands/name').default>
41
+ 'proxy'(...args: [Argument0<typeof import('./commands/proxy').default>, Argument1<typeof import('./commands/proxy').default>]): ReturnType<typeof import('./commands/proxy').default>
39
42
  'ready'(...args: []): ReturnType<typeof import('./commands/ready').default>
43
+ 'reload-metadata'(...args: [Argument0<typeof import('./commands/reload-metadata').default>]): ReturnType<typeof import('./commands/reload-metadata').default>
40
44
  'start'(...args: [Argument1<typeof import('./commands/start').default>, Argument2<typeof import('./commands/start').default>]): ReturnType<typeof import('./commands/start').default>
41
45
  'status'(...args: [Argument0<typeof import('./commands/status').default>]): ReturnType<typeof import('./commands/status').default>
42
46
  'stop'(...args: [Argument0<typeof import('./commands/stop').default>]): ReturnType<typeof import('./commands/stop').default>
package/src/fork.ts CHANGED
@@ -4,12 +4,13 @@ sms.install();
4
4
  import * as path from 'path'
5
5
  import * as ac from '@akala/commands';
6
6
  import { lstat } from 'fs/promises';
7
- import { IpcAdapter } from './commands/start';
7
+ import { IpcAdapter } from "./ipc-adapter";
8
8
  import { Socket } from 'net';
9
9
  import { logger, Logger, module as coreModule } from '@akala/core';
10
10
  import program, { buildCliContextFromProcess, NamespaceMiddleware } from '@akala/cli';
11
11
  import { Stats } from 'fs';
12
- import { registerCommands } from '@akala/commands';
12
+ import { registerCommands, SelfDefinedCommand } from '@akala/commands';
13
+ import { parseMetadata } from '@akala/commands/src/serve-metadata';
13
14
 
14
15
  var isPm = false;
15
16
 
@@ -25,7 +26,7 @@ let folderOrFile: Stats;
25
26
  let cliContainer: ac.Container<unknown>;
26
27
  let processor: ac.CommandProcessor;
27
28
  let log: Logger;
28
- const logMiddleware = new NamespaceMiddleware<{ program: string, name: string }>(null).option<string, 'verbose'>('verbose', { aliases: ['v',] });
29
+ const logMiddleware = new NamespaceMiddleware<{ program: string, name: string, tls: boolean }>(null).option<string, 'verbose'>('verbose', { aliases: ['v',] });
29
30
  logMiddleware.preAction(async c =>
30
31
  {
31
32
  if (c.options.verbose)
@@ -37,8 +38,8 @@ logMiddleware.preAction(async c =>
37
38
 
38
39
  await ac.Processors.FileSystem.discoverCommands(c.options.program, cliContainer, { processor: processor, isDirectory: folderOrFile.isDirectory() });
39
40
  });
40
- const initMiddleware = new NamespaceMiddleware<{ program: string, name: string }>(null);
41
- program.option<string, 'program'>('program', { needsValue: true }).option<string, 'name'>('name', { needsValue: true }).
41
+ const initMiddleware = new NamespaceMiddleware<{ program: string, name: string, tls: boolean }>(null);
42
+ program.option<string, 'program'>('program', { needsValue: true }).option<string, 'name'>('name', { needsValue: true }).option<boolean, 'tls'>('tls', { needsValue: false }).
42
43
  use(async c => //If pure js file
43
44
  {
44
45
  folderOrFile = await lstat(c.options.program);
@@ -71,7 +72,10 @@ program.option<string, 'program'>('program', { needsValue: true }).option<string
71
72
 
72
73
  initMiddleware.option<string, 'pmSocket'>('pmSocket', { aliases: ['pm-socket', 'pm-sock'] }).action(async c =>
73
74
  {
75
+
74
76
  let pm: ac.Container<unknown>;
77
+ let pmConnectInfo: ac.ServeMetadata;
78
+
75
79
  if (!isPm)
76
80
  {
77
81
  if (process.connected)
@@ -81,25 +85,27 @@ program.option<string, 'program'>('program', { needsValue: true }).option<string
81
85
  else
82
86
  {
83
87
  const pmSocket = new Socket();
84
- await new Promise<void>((resolve, reject) =>
85
- {
86
- pmSocket.on('error', reject)
87
- const remote = /^(?:([^:]+):)?(\d+)$/.exec(c.options.pmSocket);
88
- if (!remote)
89
- {
90
- pmSocket.connect(c.options.pmSocket, resolve);
91
- }
92
- else
93
- {
94
- const host = remote[1];
95
- const port = remote[2];
96
- if (host)
97
- pmSocket.connect(Number(port), host, resolve);
98
- else
99
- pmSocket.connect(Number(port), resolve);
100
- }
101
- })
102
- pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new ac.NetSocketAdapter(pmSocket), cliContainer), true));
88
+ const x = await ac.connectByPreference(pmConnectInfo = parseMetadata(c.options.pmSocket, c.options.tls), { container: cliContainer });
89
+ pm = x.container;
90
+ // await new Promise<void>((resolve, reject) =>
91
+ // {
92
+ // pmSocket.on('error', reject)
93
+ // const remote = /^(?:([^:]+):)?(\d+)$/.exec(c.options.pmSocket);
94
+ // if (!remote)
95
+ // {
96
+ // pmSocket.connect(c.options.pmSocket, resolve);
97
+ // }
98
+ // else
99
+ // {
100
+ // const host = remote[1];
101
+ // const port = remote[2];
102
+ // if (host)
103
+ // pmSocket.connect(Number(port), host, resolve);
104
+ // else
105
+ // pmSocket.connect(Number(port), resolve);
106
+ // }
107
+ // })
108
+ // pm = new ac.Container('pm', null, new ac.Processors.JsonRpc(ac.Processors.JsonRpc.getConnection(new ac.NetSocketAdapter(pmSocket), cliContainer), true));
103
109
  }
104
110
  // eslint-disable-next-line @typescript-eslint/no-var-requires
105
111
  registerCommands(require('../commands.json').commands.map(ac.Metadata.extractCommandMetadata), null, pm);
@@ -112,6 +118,15 @@ program.option<string, 'program'>('program', { needsValue: true }).option<string
112
118
 
113
119
  coreModule('@akala/pm').register('container', pm);
114
120
 
121
+ cliContainer.register(new SelfDefinedCommand(async (connectionId: string) =>
122
+ {
123
+ if (!pmConnectInfo)
124
+ pmConnectInfo = await pm.dispatch('connect', 'pm');
125
+ var pm2 = await ac.connectByPreference(pmConnectInfo, { container: cliContainer });
126
+ await pm2.container.dispatch('bridge', connectionId);
127
+ }, '$bridge'));
128
+
129
+
115
130
  if (init)
116
131
  await cliContainer.dispatch(init, { options: c.options, param: c.args, _trigger: 'cli', pm: pm, context: c });
117
132
 
package/src/index.ts CHANGED
@@ -86,7 +86,7 @@ export function sidecar(options?: Omit<ConnectionPreference, 'metadata'> | SideC
86
86
  if (e && e.statusCode == 404 || !meta.connect)
87
87
  {
88
88
  var c = new Container(meta.container.name, null, module('@akala/pm').resolve('container').processor);
89
- c.processor.useMiddleware(1, {
89
+ c.processor.useMiddleware(0, {
90
90
  handle(origin, cmd, param)
91
91
  {
92
92
  if (cmd.name.startsWith(meta.container.name + '.'))