@mpis/client 0.0.18 → 0.0.20

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/lib/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { make_message, type IMessageObject } from '@mpis/shared';
2
2
  export { channelClient } from './common/message-channel.js';
3
- export { hookCurrentProcessOutput, listenOutputStream } from './handlers/stdout.js';
3
+ export { hookCurrentProcessOutput, joinMultipleTextStream, listenOnStream } from './handlers/stdout.js';
4
4
  //# sourceMappingURL=api.d.ts.map
package/lib/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/lib/api.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { make_message } from '@mpis/shared';
2
2
  export { channelClient } from './common/message-channel.js';
3
- export { hookCurrentProcessOutput, listenOutputStream } from './handlers/stdout.js';
3
+ export { hookCurrentProcessOutput, joinMultipleTextStream, listenOnStream } from './handlers/stdout.js';
4
4
  //# sourceMappingURL=api.js.map
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/lib/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { argv } from '@idlebox/args/default';
2
2
  import { execa } from 'execa';
3
3
  import { basename } from 'node:path';
4
- import { listenOutputStream } from './api.js';
4
+ import { listenOnStream } from './api.js';
5
5
  const stdinMode = argv.flag(['--stdin']) > 0;
6
6
  const startSignal = argv.single(['--start']) || '';
7
7
  const finishSignal = argv.single(['--finish']);
@@ -52,7 +52,7 @@ const startRegex = startSignal ? new RegExp(startSignal, 'iv') : undefined;
52
52
  const finishRegex = new RegExp(finishSignal, 'iv');
53
53
  const errorRegex = errorSignal ? new RegExp(errorSignal, 'imv') : undefined;
54
54
  const successRegex = successSignal ? new RegExp(successSignal, 'imv') : undefined;
55
- listenOutputStream(reading_stream, {
55
+ listenOnStream(reading_stream, {
56
56
  title,
57
57
  start: startRegex,
58
58
  stop: finishRegex,
package/lib/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -70,7 +70,7 @@ export class AbstractChannelClient extends EnhancedAsyncDisposable {
70
70
  async send(message) {
71
71
  try {
72
72
  if (this.cstate === ConnectionState.Connected) {
73
- this.logger.debug `emit: ${message.event}()`;
73
+ this.logger.debug `emit buildstate: ${message.event}()`;
74
74
  await this._send({
75
75
  ...message,
76
76
  __brand__: messageBrand,
@@ -79,7 +79,7 @@ export class AbstractChannelClient extends EnhancedAsyncDisposable {
79
79
  });
80
80
  }
81
81
  else {
82
- this.logger.debug `(${ConnectionState[this.cstate]}) will emit: ${message.event}()`;
82
+ this.logger.debug `(${ConnectionState[this.cstate]}) will emit buildstate: ${message.event}()`;
83
83
  this.queuedMessage = message;
84
84
  if (this.cstate === ConnectionState.Disconnected) {
85
85
  await this.connect();
@@ -139,7 +139,7 @@ export class VoidClient extends AbstractChannelClient {
139
139
  async _disconnect() { }
140
140
  async _connect() { }
141
141
  _send(message) {
142
- this.logger.warn `VoidClient: sending: \x1B[38;5;11m${message.event}\x1B[39m message=[${message.message}] output=stripe<${message.output}>`;
142
+ this.logger.warn `VoidClient: sending: \x1B[1;38;5;11m${message.event}\x1B[39m message=[${message.message}] output=stripe<${message.output ?? ''}>`;
143
143
  }
144
144
  }
145
145
  //# sourceMappingURL=abs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../src/channel-client/abs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../src/channel-client/abs.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
+ import { PassThrough, type TransformOptions } from 'node:stream';
1
2
  interface IOptions {
2
3
  title?: string;
3
4
  start?: RegExp;
4
5
  stop: RegExp;
5
6
  isFailed(stop_line: string, full_output: string): boolean;
6
7
  }
7
- export declare function listenOutputStream(stream: NodeJS.ReadableStream, options: IOptions): void;
8
- export declare function hookCurrentProcessOutput(options: IOptions): void;
8
+ export declare function listenOnStream(stream: NodeJS.ReadableStream, options: IOptions): void;
9
+ export declare function joinMultipleTextStream(streams: NodeJS.ReadableStream[]): PassThrough;
10
+ interface IHookOptions {
11
+ injection?(who: 'stdout' | 'stderr'): NodeJS.ReadWriteStream | undefined;
12
+ transform?: TransformOptions['transform'];
13
+ }
14
+ export declare function hookCurrentProcessOutput({ transform, injection }: IHookOptions): void;
9
15
  export {};
10
16
  //# sourceMappingURL=stdout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdout.d.ts","sourceRoot":"","sources":["../../src/handlers/stdout.ts"],"names":[],"mappings":"AAIA,UAAU,QAAQ;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,QA2DlF;AACD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,QAazD"}
1
+ {"version":3,"file":"stdout.d.ts","sourceRoot":"","sources":["../../src/handlers/stdout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK5E,UAAU,QAAQ;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,QA6D9E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,eAgBtE;AAED,UAAU,YAAY;IACrB,SAAS,CAAC,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;IACzE,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,YAAY,QAiC9E"}
@@ -1,7 +1,7 @@
1
- import { PassThrough } from 'node:stream';
1
+ import { PassThrough, Transform } from 'node:stream';
2
2
  import split2 from 'split2';
3
3
  import { channelClient } from '../common/message-channel.js';
4
- export function listenOutputStream(stream, options) {
4
+ export function listenOnStream(stream, options) {
5
5
  if (options.title)
6
6
  channelClient.friendlyTitle = options.title;
7
7
  function emit_failed() {
@@ -32,6 +32,7 @@ export function listenOutputStream(stream, options) {
32
32
  memory += '\n';
33
33
  if (!options.stop.test(line))
34
34
  return;
35
+ started = false;
35
36
  lastFailed = options.isFailed(line, memory);
36
37
  if (lastFailed) {
37
38
  emit_failed();
@@ -58,16 +59,51 @@ export function listenOutputStream(stream, options) {
58
59
  });
59
60
  stream.pipe(reading_stream, { end: true });
60
61
  }
61
- export function hookCurrentProcessOutput(options) {
62
- const pipe = new PassThrough({});
63
- listenOutputStream(pipe, options);
64
- function makePipeFunction(originalWrite) {
65
- return function (...args) {
66
- pipe.write.apply(pipe, args);
67
- return originalWrite.apply(this, args);
68
- };
62
+ export function joinMultipleTextStream(streams) {
63
+ streams = [...streams];
64
+ const joinStream = new PassThrough({});
65
+ for (const stream of streams) {
66
+ stream.pipe(joinStream, { end: false });
67
+ stream.on('end', () => {
68
+ const index = streams.indexOf(stream);
69
+ if (index !== -1) {
70
+ streams.splice(index, 1);
71
+ }
72
+ if (streams.length === 0) {
73
+ joinStream.end();
74
+ }
75
+ });
76
+ }
77
+ return joinStream;
78
+ }
79
+ export function hookCurrentProcessOutput({ transform, injection }) {
80
+ function makePipeFunction(who, original) {
81
+ const injection_stream = injection?.(who);
82
+ if (!injection_stream && !transform) {
83
+ // 没有注入流,也没有转换需求
84
+ return;
85
+ }
86
+ const hook = transform ? new Transform({ transform }) : new PassThrough();
87
+ const originalWrite = original.write.bind(original);
88
+ original.write = hook.write.bind(hook); // 任何对stdout/err的写入都会改成对hook流的写入
89
+ // 但是hook本身向stdout/err写入时需要绕过hook,否则就死循环了
90
+ // mocked 等价于原始版本的 stdout/err
91
+ const mocked = new Proxy(original, {
92
+ get(target, prop, receiver) {
93
+ if (prop === 'write') {
94
+ return originalWrite;
95
+ }
96
+ return Reflect.get(target, prop, receiver);
97
+ },
98
+ });
99
+ if (injection_stream) {
100
+ hook.pipe(injection_stream, { end: true }).pipe(mocked, { end: false });
101
+ }
102
+ else if (transform) {
103
+ hook.pipe(mocked, { end: false });
104
+ }
69
105
  }
70
- process.stdout.write = makePipeFunction(process.stdout.write);
71
- process.stderr.write = makePipeFunction(process.stderr.write);
106
+ makePipeFunction('stdout', process.stdout);
107
+ makePipeFunction('stderr', process.stderr);
72
108
  }
73
109
  //# sourceMappingURL=stdout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdout.js","sourceRoot":"","sources":["../../src/handlers/stdout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stdout.js","sourceRoot":"","sources":["../../src/handlers/stdout.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mpis/client",
3
3
  "type": "module",
4
- "version": "0.0.18",
4
+ "version": "0.0.20",
5
5
  "keywords": [],
6
6
  "exports": {
7
7
  ".": {
@@ -16,24 +16,24 @@
16
16
  "dependencies": {
17
17
  "execa": "^9.6.1",
18
18
  "split2": "^4.2.0",
19
- "@idlebox/args": "^0.0.25",
20
- "@idlebox/common": "^1.5.16",
21
- "@idlebox/logger": "^0.0.19",
22
- "@idlebox/source-map-support": "^0.0.18",
23
- "@mpis/shared": "^0.0.12"
19
+ "@idlebox/args": "^0.0.26",
20
+ "@idlebox/common": "^1.5.17",
21
+ "@mpis/shared": "^0.0.13",
22
+ "@idlebox/logger": "^0.0.21",
23
+ "@idlebox/source-map-support": "^0.0.19"
24
24
  },
25
25
  "devDependencies": {
26
- "@types/node": "^25.0.8",
26
+ "@types/node": "^25.5.0",
27
+ "@idlebox/esbuild-executer": "^0.0.15",
27
28
  "@build-script/baseline-rig": "latest",
28
- "@idlebox/esbuild-executer": "^0.0.13",
29
- "@mpis/run": "^0.0.20"
29
+ "@mpis/run": "^0.0.22"
30
30
  },
31
31
  "sideEffects": false,
32
32
  "license": "MIT",
33
33
  "author": "GongT <admin@gongt.me>",
34
34
  "repository": {
35
35
  "type": "git",
36
- "url": "https://github.com/GongT/baobao",
36
+ "url": "git+https://github.com/GongT/baobao.git",
37
37
  "directory": "@mpis/client"
38
38
  },
39
39
  "main": "./lib/api.js",
package/src/api.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { make_message, type IMessageObject } from '@mpis/shared';
2
2
  export { channelClient } from './common/message-channel.js';
3
- export { hookCurrentProcessOutput, listenOutputStream } from './handlers/stdout.js';
3
+ export { hookCurrentProcessOutput, joinMultipleTextStream, listenOnStream } from './handlers/stdout.js';
package/src/bin.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { argv } from '@idlebox/args/default';
2
2
  import { execa } from 'execa';
3
3
  import { basename } from 'node:path';
4
- import { listenOutputStream } from './api.js';
4
+ import { listenOnStream } from './api.js';
5
5
 
6
6
  const stdinMode = argv.flag(['--stdin']) > 0;
7
7
  const startSignal = argv.single(['--start']) || '';
@@ -58,7 +58,7 @@ const finishRegex = new RegExp(finishSignal, 'iv');
58
58
  const errorRegex = errorSignal ? new RegExp(errorSignal, 'imv') : undefined;
59
59
  const successRegex = successSignal ? new RegExp(successSignal, 'imv') : undefined;
60
60
 
61
- listenOutputStream(reading_stream, {
61
+ listenOnStream(reading_stream, {
62
62
  title,
63
63
  start: startRegex,
64
64
  stop: finishRegex,
@@ -81,7 +81,7 @@ export abstract class AbstractChannelClient extends EnhancedAsyncDisposable {
81
81
  private async send(message: IUserMessageObject) {
82
82
  try {
83
83
  if (this.cstate === ConnectionState.Connected) {
84
- this.logger.debug`emit: ${message.event}()`;
84
+ this.logger.debug`emit buildstate: ${message.event}()`;
85
85
  await this._send({
86
86
  ...message,
87
87
  __brand__: messageBrand,
@@ -89,7 +89,7 @@ export abstract class AbstractChannelClient extends EnhancedAsyncDisposable {
89
89
  pid: process.pid,
90
90
  });
91
91
  } else {
92
- this.logger.debug`(${ConnectionState[this.cstate]}) will emit: ${message.event}()`;
92
+ this.logger.debug`(${ConnectionState[this.cstate]}) will emit buildstate: ${message.event}()`;
93
93
  this.queuedMessage = message;
94
94
 
95
95
  if (this.cstate === ConnectionState.Disconnected) {
@@ -156,6 +156,6 @@ export class VoidClient extends AbstractChannelClient {
156
156
  protected override async _disconnect(): Promise<void> {}
157
157
  protected override async _connect(): Promise<void> {}
158
158
  protected override _send(message: IMessageObject): void {
159
- this.logger.warn`VoidClient: sending: \x1B[38;5;11m${message.event}\x1B[39m message=[${message.message}] output=stripe<${message.output}>`;
159
+ this.logger.warn`VoidClient: sending: \x1B[1;38;5;11m${message.event}\x1B[39m message=[${message.message}] output=stripe<${message.output ?? ''}>`;
160
160
  }
161
161
  }
@@ -1,4 +1,5 @@
1
- import { PassThrough } from 'node:stream';
1
+ import { PassThrough, Transform, type TransformOptions } from 'node:stream';
2
+ import type { WriteStream } from 'node:tty';
2
3
  import split2 from 'split2';
3
4
  import { channelClient } from '../common/message-channel.js';
4
5
 
@@ -9,7 +10,7 @@ interface IOptions {
9
10
  isFailed(stop_line: string, full_output: string): boolean;
10
11
  }
11
12
 
12
- export function listenOutputStream(stream: NodeJS.ReadableStream, options: IOptions) {
13
+ export function listenOnStream(stream: NodeJS.ReadableStream, options: IOptions) {
13
14
  if (options.title) channelClient.friendlyTitle = options.title;
14
15
 
15
16
  function emit_failed() {
@@ -45,6 +46,8 @@ export function listenOutputStream(stream: NodeJS.ReadableStream, options: IOpti
45
46
  memory += '\n';
46
47
  if (!options.stop.test(line)) return;
47
48
 
49
+ started = false;
50
+
48
51
  lastFailed = options.isFailed(line, memory);
49
52
  if (lastFailed) {
50
53
  emit_failed();
@@ -69,17 +72,61 @@ export function listenOutputStream(stream: NodeJS.ReadableStream, options: IOpti
69
72
 
70
73
  stream.pipe(reading_stream, { end: true });
71
74
  }
72
- export function hookCurrentProcessOutput(options: IOptions) {
73
- const pipe = new PassThrough({});
74
- listenOutputStream(pipe, options);
75
-
76
- function makePipeFunction(originalWrite: (...args: any[]) => boolean) {
77
- return function (this: NodeJS.WriteStream, ...args: any[]) {
78
- pipe.write.apply(pipe, args as any);
79
- return originalWrite.apply(this, args);
80
- };
75
+
76
+ export function joinMultipleTextStream(streams: NodeJS.ReadableStream[]) {
77
+ streams = [...streams];
78
+ const joinStream = new PassThrough({});
79
+ for (const stream of streams) {
80
+ stream.pipe(joinStream, { end: false });
81
+ stream.on('end', () => {
82
+ const index = streams.indexOf(stream);
83
+ if (index !== -1) {
84
+ streams.splice(index, 1);
85
+ }
86
+ if (streams.length === 0) {
87
+ joinStream.end();
88
+ }
89
+ });
90
+ }
91
+ return joinStream;
92
+ }
93
+
94
+ interface IHookOptions {
95
+ injection?(who: 'stdout' | 'stderr'): NodeJS.ReadWriteStream | undefined;
96
+ transform?: TransformOptions['transform'];
97
+ }
98
+
99
+ export function hookCurrentProcessOutput({ transform, injection }: IHookOptions) {
100
+ function makePipeFunction(who: 'stdout' | 'stderr', original: WriteStream) {
101
+ const injection_stream = injection?.(who);
102
+ if (!injection_stream && !transform) {
103
+ // 没有注入流,也没有转换需求
104
+ return;
105
+ }
106
+
107
+ const hook = transform ? new Transform({ transform }) : new PassThrough();
108
+ const originalWrite = original.write.bind(original);
109
+
110
+ original.write = hook.write.bind(hook); // 任何对stdout/err的写入都会改成对hook流的写入
111
+
112
+ // 但是hook本身向stdout/err写入时需要绕过hook,否则就死循环了
113
+ // mocked 等价于原始版本的 stdout/err
114
+ const mocked = new Proxy(original, {
115
+ get(target, prop, receiver) {
116
+ if (prop === 'write') {
117
+ return originalWrite;
118
+ }
119
+ return Reflect.get(target, prop, receiver);
120
+ },
121
+ });
122
+
123
+ if (injection_stream) {
124
+ hook.pipe(injection_stream, { end: true }).pipe(mocked, { end: false });
125
+ } else if (transform) {
126
+ hook.pipe(mocked, { end: false });
127
+ }
81
128
  }
82
129
 
83
- process.stdout.write = makePipeFunction(process.stdout.write);
84
- process.stderr.write = makePipeFunction(process.stderr.write);
130
+ makePipeFunction('stdout', process.stdout);
131
+ makePipeFunction('stderr', process.stderr);
85
132
  }