@rhost/testkit 1.5.3 → 1.6.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/README.md +187 -7
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/server-bin.d.ts +3 -0
- package/dist/cli/server-bin.d.ts.map +1 -0
- package/dist/cli/server-bin.js +6 -0
- package/dist/cli/server-bin.js.map +1 -0
- package/dist/cli/server.d.ts +12 -0
- package/dist/cli/server.d.ts.map +1 -0
- package/dist/cli/server.js +339 -0
- package/dist/cli/server.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -1
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +71 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -4
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +24 -1
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +63 -5
- package/dist/connection.js.map +1 -1
- package/dist/container.d.ts +7 -7
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +73 -10
- package/dist/container.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/offline/runner.d.ts +1 -1
- package/dist/offline/runner.d.ts.map +1 -1
- package/dist/offline/runner.js +3 -3
- package/dist/offline/runner.js.map +1 -1
- package/dist/pueblo.d.ts +40 -0
- package/dist/pueblo.d.ts.map +1 -0
- package/dist/pueblo.js +265 -0
- package/dist/pueblo.js.map +1 -0
- package/package.json +10 -4
package/dist/connection.d.ts
CHANGED
|
@@ -11,14 +11,37 @@ declare class AsyncLineQueue {
|
|
|
11
11
|
drainSync(): string[];
|
|
12
12
|
cancelAll(reason: string): void;
|
|
13
13
|
}
|
|
14
|
+
export interface MushConnectionOptions {
|
|
15
|
+
/**
|
|
16
|
+
* When true, connects via WebSocket (RFC 6455) instead of raw TCP.
|
|
17
|
+
* Requires RhostMUSH compiled with ENABLE_WEBSOCKETS. Default: false.
|
|
18
|
+
*/
|
|
19
|
+
useWebSocket?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* WebSocket request path. Default: '/'.
|
|
22
|
+
* Only relevant when useWebSocket is true.
|
|
23
|
+
*/
|
|
24
|
+
websocketPath?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Use wss:// instead of ws://. Requires a TLS terminator (e.g. stunnel)
|
|
27
|
+
* in front of the MUSH port. Default: false.
|
|
28
|
+
*/
|
|
29
|
+
websocketSecure?: boolean;
|
|
30
|
+
}
|
|
14
31
|
export declare class MushConnection extends EventEmitter {
|
|
15
32
|
private readonly host;
|
|
16
33
|
private readonly port;
|
|
17
34
|
private socket;
|
|
35
|
+
private ws;
|
|
18
36
|
private rawBuffer;
|
|
19
37
|
readonly lines: AsyncLineQueue;
|
|
20
|
-
|
|
38
|
+
private readonly useWebSocket;
|
|
39
|
+
private readonly websocketPath;
|
|
40
|
+
private readonly websocketSecure;
|
|
41
|
+
constructor(host: string, port: number, options?: MushConnectionOptions);
|
|
21
42
|
connect(connectTimeoutMs?: number): Promise<void>;
|
|
43
|
+
private connectTcp;
|
|
44
|
+
private connectWebSocket;
|
|
22
45
|
private onData;
|
|
23
46
|
send(command: string): void;
|
|
24
47
|
close(): Promise<void>;
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC;;;GAGG;AACH,cAAM,cAAc;IAChB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgF;IAE/F,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBxC,SAAS,IAAI,MAAM,EAAE;IAMrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAIlC;AAED,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,cAAe,SAAQ,YAAY;IAUxC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAM;IACvB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAGrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAC7B,OAAO,GAAE,qBAA0B;IASvC,OAAO,CAAC,gBAAgB,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,MAAM;IAWd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAc3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBzB"}
|
package/dist/connection.js
CHANGED
|
@@ -32,10 +32,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.MushConnection = void 0;
|
|
37
40
|
const net = __importStar(require("net"));
|
|
38
41
|
const events_1 = require("events");
|
|
42
|
+
const ws_1 = __importDefault(require("ws"));
|
|
39
43
|
/**
|
|
40
44
|
* Async FIFO queue for lines received from the server.
|
|
41
45
|
* Delivers directly to waiting consumers; buffers when none are waiting.
|
|
@@ -86,15 +90,24 @@ class AsyncLineQueue {
|
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
class MushConnection extends events_1.EventEmitter {
|
|
89
|
-
constructor(host, port) {
|
|
93
|
+
constructor(host, port, options = {}) {
|
|
90
94
|
super();
|
|
91
95
|
this.host = host;
|
|
92
96
|
this.port = port;
|
|
93
97
|
this.socket = null;
|
|
98
|
+
this.ws = null;
|
|
94
99
|
this.rawBuffer = '';
|
|
95
100
|
this.lines = new AsyncLineQueue();
|
|
101
|
+
this.useWebSocket = options.useWebSocket ?? false;
|
|
102
|
+
this.websocketPath = options.websocketPath ?? '/';
|
|
103
|
+
this.websocketSecure = options.websocketSecure ?? false;
|
|
96
104
|
}
|
|
97
105
|
connect(connectTimeoutMs = 10000) {
|
|
106
|
+
return this.useWebSocket
|
|
107
|
+
? this.connectWebSocket(connectTimeoutMs)
|
|
108
|
+
: this.connectTcp(connectTimeoutMs);
|
|
109
|
+
}
|
|
110
|
+
connectTcp(connectTimeoutMs) {
|
|
98
111
|
return new Promise((resolve, reject) => {
|
|
99
112
|
this.socket = new net.Socket();
|
|
100
113
|
this.socket.setEncoding('utf8');
|
|
@@ -105,7 +118,7 @@ class MushConnection extends events_1.EventEmitter {
|
|
|
105
118
|
reject(new Error(`connect() timed out after ${connectTimeoutMs}ms`));
|
|
106
119
|
});
|
|
107
120
|
this.socket.connect(this.port, this.host, () => {
|
|
108
|
-
this.socket.setTimeout(0);
|
|
121
|
+
this.socket.setTimeout(0);
|
|
109
122
|
this.socket.removeAllListeners('error');
|
|
110
123
|
this.socket.removeAllListeners('timeout');
|
|
111
124
|
this.socket.on('error', (err) => this.emit('error', err));
|
|
@@ -118,6 +131,33 @@ class MushConnection extends events_1.EventEmitter {
|
|
|
118
131
|
});
|
|
119
132
|
});
|
|
120
133
|
}
|
|
134
|
+
connectWebSocket(connectTimeoutMs) {
|
|
135
|
+
return new Promise((resolve, reject) => {
|
|
136
|
+
const scheme = this.websocketSecure ? 'wss' : 'ws';
|
|
137
|
+
const url = `${scheme}://${this.host}:${this.port}${this.websocketPath}`;
|
|
138
|
+
this.ws = new ws_1.default(url);
|
|
139
|
+
const timer = setTimeout(() => {
|
|
140
|
+
this.ws.terminate();
|
|
141
|
+
reject(new Error(`connect() timed out after ${connectTimeoutMs}ms`));
|
|
142
|
+
}, connectTimeoutMs);
|
|
143
|
+
this.ws.once('open', () => {
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
this.ws.on('error', (err) => this.emit('error', err));
|
|
146
|
+
this.ws.on('close', () => {
|
|
147
|
+
this.lines.cancelAll('Connection closed');
|
|
148
|
+
this.emit('close');
|
|
149
|
+
});
|
|
150
|
+
this.ws.on('message', (data) => {
|
|
151
|
+
this.onData(data.toString());
|
|
152
|
+
});
|
|
153
|
+
resolve();
|
|
154
|
+
});
|
|
155
|
+
this.ws.once('error', (err) => {
|
|
156
|
+
clearTimeout(timer);
|
|
157
|
+
reject(err);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
}
|
|
121
161
|
onData(chunk) {
|
|
122
162
|
this.rawBuffer += chunk;
|
|
123
163
|
let newlineIdx;
|
|
@@ -129,12 +169,30 @@ class MushConnection extends events_1.EventEmitter {
|
|
|
129
169
|
}
|
|
130
170
|
}
|
|
131
171
|
send(command) {
|
|
132
|
-
if (
|
|
133
|
-
|
|
172
|
+
if (this.useWebSocket) {
|
|
173
|
+
if (!this.ws || this.ws.readyState !== ws_1.default.OPEN) {
|
|
174
|
+
throw new Error('Not connected');
|
|
175
|
+
}
|
|
176
|
+
this.ws.send(command + '\r\n');
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
if (!this.socket || this.socket.destroyed) {
|
|
180
|
+
throw new Error('Not connected');
|
|
181
|
+
}
|
|
182
|
+
this.socket.write(command + '\r\n');
|
|
134
183
|
}
|
|
135
|
-
this.socket.write(command + '\r\n');
|
|
136
184
|
}
|
|
137
185
|
close() {
|
|
186
|
+
if (this.useWebSocket) {
|
|
187
|
+
return new Promise((resolve) => {
|
|
188
|
+
if (!this.ws || this.ws.readyState === ws_1.default.CLOSED) {
|
|
189
|
+
resolve();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this.ws.once('close', () => resolve());
|
|
193
|
+
this.ws.close();
|
|
194
|
+
});
|
|
195
|
+
}
|
|
138
196
|
return new Promise((resolve) => {
|
|
139
197
|
if (!this.socket || this.socket.destroyed) {
|
|
140
198
|
resolve();
|
package/dist/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/container.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { RhostConfig } from './config';
|
|
2
2
|
export interface ContainerConnectionInfo {
|
|
3
3
|
host: string;
|
|
4
|
+
/** Plain MUSH / telnet port */
|
|
4
5
|
port: number;
|
|
6
|
+
/** stunnel TLS port, if stunnel was enabled */
|
|
7
|
+
stunnelPort?: number;
|
|
5
8
|
}
|
|
6
9
|
export declare class RhostContainer {
|
|
7
10
|
private started;
|
|
@@ -23,6 +26,9 @@ export declare class RhostContainer {
|
|
|
23
26
|
* The first build clones and compiles RhostMUSH from source — allow 5-10
|
|
24
27
|
* minutes. Subsequent runs reuse Docker's layer cache.
|
|
25
28
|
*
|
|
29
|
+
* Compile-time features in `config.build` (enableWebSockets, enableSsl,
|
|
30
|
+
* enablePueblo, enableReality, extraCflags) are passed as Docker build args.
|
|
31
|
+
*
|
|
26
32
|
* @param projectRoot Path to the rhostmush-docker directory.
|
|
27
33
|
* Defaults to `../` relative to this file (i.e. the repo root).
|
|
28
34
|
* @param config Optional config overrides. If omitted, `rhost.config.json`
|
|
@@ -31,13 +37,7 @@ export declare class RhostContainer {
|
|
|
31
37
|
static fromSource(projectRoot?: string, config?: RhostConfig): RhostContainer;
|
|
32
38
|
/**
|
|
33
39
|
* Start the container. Blocks until port 4201 is accepting connections.
|
|
34
|
-
* Returns
|
|
35
|
-
*
|
|
36
|
-
* If `config.scriptsDir` is set, the directory is copied into the container
|
|
37
|
-
* at `/home/rhost/game/scripts` before startup.
|
|
38
|
-
*
|
|
39
|
-
* If `config.mushConfig` is set, the file is copied into the container at
|
|
40
|
-
* `/home/rhost/game/mush.config` before startup.
|
|
40
|
+
* Returns host/port info to pass to `RhostClient`.
|
|
41
41
|
*
|
|
42
42
|
* @param startupTimeout Max ms to wait for the server to be ready.
|
|
43
43
|
* Default: 120000 (2 min). Increase for slow machines or first builds.
|
package/dist/container.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,WAAW,EAAyD,MAAM,UAAU,CAAC;AAE9F,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC,OAAO;IAKP;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,SAA6B,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc;IAK1F;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc;IAkB7E;;;;;;OAMG;IACG,KAAK,CAAC,cAAc,SAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA+EvE,oEAAoE;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,kEAAkE;IAClE,iBAAiB,IAAI,uBAAuB;CAc/C"}
|
package/dist/container.js
CHANGED
|
@@ -57,6 +57,18 @@ exports.RhostContainer = void 0;
|
|
|
57
57
|
*
|
|
58
58
|
* RhostContainer.fromSource(undefined, { scriptsDir: './my-scripts' })
|
|
59
59
|
*
|
|
60
|
+
* Compile-time features (fromSource only)
|
|
61
|
+
* ────────────────────────────────────────
|
|
62
|
+
* RhostContainer.fromSource(undefined, {
|
|
63
|
+
* build: { enableWebSockets: true, enableSsl: true }
|
|
64
|
+
* })
|
|
65
|
+
*
|
|
66
|
+
* stunnel TLS wrapper
|
|
67
|
+
* ───────────────────
|
|
68
|
+
* RhostContainer.fromImage('lcanady/rhostmush:latest', {
|
|
69
|
+
* stunnel: { enable: true, acceptPort: 4203, certFile: './cert.pem' }
|
|
70
|
+
* })
|
|
71
|
+
*
|
|
60
72
|
* See `src/config.ts` for the full `RhostConfig` interface.
|
|
61
73
|
*/
|
|
62
74
|
const fs = __importStar(require("fs"));
|
|
@@ -67,6 +79,9 @@ const config_1 = require("./config");
|
|
|
67
79
|
const CONTAINER_SCRIPTS_PATH = '/home/rhost/game/scripts';
|
|
68
80
|
/** Path inside the container where mush.config lives. */
|
|
69
81
|
const CONTAINER_MUSH_CONFIG_PATH = '/home/rhost/game/mush.config';
|
|
82
|
+
/** Path inside the container where stunnel cert/key are copied. */
|
|
83
|
+
const CONTAINER_STUNNEL_CERT_PATH = '/home/rhost/stunnel-cert.pem';
|
|
84
|
+
const CONTAINER_STUNNEL_KEY_PATH = '/home/rhost/stunnel-key.pem';
|
|
70
85
|
class RhostContainer {
|
|
71
86
|
constructor(factory, config) {
|
|
72
87
|
this.started = null;
|
|
@@ -91,6 +106,9 @@ class RhostContainer {
|
|
|
91
106
|
* The first build clones and compiles RhostMUSH from source — allow 5-10
|
|
92
107
|
* minutes. Subsequent runs reuse Docker's layer cache.
|
|
93
108
|
*
|
|
109
|
+
* Compile-time features in `config.build` (enableWebSockets, enableSsl,
|
|
110
|
+
* enablePueblo, enableReality, extraCflags) are passed as Docker build args.
|
|
111
|
+
*
|
|
94
112
|
* @param projectRoot Path to the rhostmush-docker directory.
|
|
95
113
|
* Defaults to `../` relative to this file (i.e. the repo root).
|
|
96
114
|
* @param config Optional config overrides. If omitted, `rhost.config.json`
|
|
@@ -102,24 +120,23 @@ class RhostContainer {
|
|
|
102
120
|
: path.resolve(__dirname, '../');
|
|
103
121
|
const cfg = config ?? (0, config_1.loadConfig)() ?? {};
|
|
104
122
|
return new RhostContainer(async () => {
|
|
105
|
-
|
|
123
|
+
let builder = testcontainers_1.GenericContainer.fromDockerfile(root);
|
|
124
|
+
if (cfg.build) {
|
|
125
|
+
builder = builder.withBuildArgs((0, config_1.buildArgsFromConfig)(cfg.build));
|
|
126
|
+
}
|
|
127
|
+
return builder.build();
|
|
106
128
|
}, cfg);
|
|
107
129
|
}
|
|
108
130
|
/**
|
|
109
131
|
* Start the container. Blocks until port 4201 is accepting connections.
|
|
110
|
-
* Returns
|
|
111
|
-
*
|
|
112
|
-
* If `config.scriptsDir` is set, the directory is copied into the container
|
|
113
|
-
* at `/home/rhost/game/scripts` before startup.
|
|
114
|
-
*
|
|
115
|
-
* If `config.mushConfig` is set, the file is copied into the container at
|
|
116
|
-
* `/home/rhost/game/mush.config` before startup.
|
|
132
|
+
* Returns host/port info to pass to `RhostClient`.
|
|
117
133
|
*
|
|
118
134
|
* @param startupTimeout Max ms to wait for the server to be ready.
|
|
119
135
|
* Default: 120000 (2 min). Increase for slow machines or first builds.
|
|
120
136
|
*/
|
|
121
137
|
async start(startupTimeout = 120000) {
|
|
122
138
|
let base = await this.factory();
|
|
139
|
+
// ── File copies ───────────────────────────────────────────────────────
|
|
123
140
|
if (this.config.scriptsDir) {
|
|
124
141
|
if (!fs.existsSync(this.config.scriptsDir)) {
|
|
125
142
|
throw new Error(`RhostContainer: scriptsDir not found: ${this.config.scriptsDir}`);
|
|
@@ -138,8 +155,49 @@ class RhostContainer {
|
|
|
138
155
|
target: CONTAINER_MUSH_CONFIG_PATH,
|
|
139
156
|
}]);
|
|
140
157
|
}
|
|
158
|
+
// ── stunnel ──────────────────────────────────────────────────────────
|
|
159
|
+
const stunnelCfg = this.config.stunnel;
|
|
160
|
+
const stunnelEnabled = stunnelCfg?.enable === true;
|
|
161
|
+
const stunnelAcceptPort = stunnelCfg?.acceptPort ?? 4203;
|
|
162
|
+
if (stunnelEnabled) {
|
|
163
|
+
// Build env vars from scratch rather than using stunnelEnvFromConfig()
|
|
164
|
+
// so that cert/key paths are always set to the in-container paths,
|
|
165
|
+
// never host paths that wouldn't exist inside the container.
|
|
166
|
+
const envVars = { STUNNEL_ENABLE: 'true' };
|
|
167
|
+
if (stunnelCfg.acceptPort)
|
|
168
|
+
envVars['STUNNEL_ACCEPT_PORT'] = String(stunnelCfg.acceptPort);
|
|
169
|
+
if (stunnelCfg.connectPort)
|
|
170
|
+
envVars['STUNNEL_CONNECT_PORT'] = String(stunnelCfg.connectPort);
|
|
171
|
+
const certFile = stunnelCfg.certFile;
|
|
172
|
+
const keyFile = stunnelCfg.keyFile;
|
|
173
|
+
if (certFile) {
|
|
174
|
+
if (!fs.existsSync(certFile)) {
|
|
175
|
+
throw new Error(`RhostContainer: stunnel.certFile not found: ${certFile}`);
|
|
176
|
+
}
|
|
177
|
+
base = base.withCopyFilesToContainer([{ source: certFile, target: CONTAINER_STUNNEL_CERT_PATH }]);
|
|
178
|
+
envVars['STUNNEL_CERT'] = CONTAINER_STUNNEL_CERT_PATH;
|
|
179
|
+
// Separate key file only when it differs from the cert file
|
|
180
|
+
if (keyFile && keyFile !== certFile) {
|
|
181
|
+
if (!fs.existsSync(keyFile)) {
|
|
182
|
+
throw new Error(`RhostContainer: stunnel.keyFile not found: ${keyFile}`);
|
|
183
|
+
}
|
|
184
|
+
base = base.withCopyFilesToContainer([{ source: keyFile, target: CONTAINER_STUNNEL_KEY_PATH }]);
|
|
185
|
+
envVars['STUNNEL_KEY'] = CONTAINER_STUNNEL_KEY_PATH;
|
|
186
|
+
}
|
|
187
|
+
// If keyFile === certFile (combined PEM), stunnel reads key from the same file;
|
|
188
|
+
// STUNNEL_KEY is left unset so entrypoint.sh defaults it to STUNNEL_CERT.
|
|
189
|
+
}
|
|
190
|
+
// If no certFile is given, entrypoint.sh auto-generates a self-signed cert.
|
|
191
|
+
for (const [k, v] of Object.entries(envVars)) {
|
|
192
|
+
base = base.withEnvironment({ [k]: v });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// ── Ports ─────────────────────────────────────────────────────────────
|
|
196
|
+
const exposedPorts = [4201];
|
|
197
|
+
if (stunnelEnabled)
|
|
198
|
+
exposedPorts.push(stunnelAcceptPort);
|
|
141
199
|
this.started = await base
|
|
142
|
-
.withExposedPorts(
|
|
200
|
+
.withExposedPorts(...exposedPorts)
|
|
143
201
|
.withWaitStrategy(testcontainers_1.Wait.forListeningPorts().withStartupTimeout(startupTimeout))
|
|
144
202
|
.start();
|
|
145
203
|
return this.getConnectionInfo();
|
|
@@ -154,10 +212,15 @@ class RhostContainer {
|
|
|
154
212
|
if (!this.started) {
|
|
155
213
|
throw new Error('Container is not running — call start() first.');
|
|
156
214
|
}
|
|
157
|
-
|
|
215
|
+
const info = {
|
|
158
216
|
host: this.started.getHost(),
|
|
159
217
|
port: this.started.getMappedPort(4201),
|
|
160
218
|
};
|
|
219
|
+
const stunnelAcceptPort = this.config.stunnel?.acceptPort ?? 4203;
|
|
220
|
+
if (this.config.stunnel?.enable) {
|
|
221
|
+
info.stunnelPort = this.started.getMappedPort(stunnelAcceptPort);
|
|
222
|
+
}
|
|
223
|
+
return info;
|
|
161
224
|
}
|
|
162
225
|
}
|
|
163
226
|
exports.RhostContainer = RhostContainer;
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export { RhostBenchmark, runBench, formatBenchResults, BenchOptions, BenchmarkRe
|
|
|
14
14
|
export { deploy, parseDeployFile, snapshotObjects, restoreSnapshot, DeployCommand, DeploySnapshot, DeployOptions, DeployResult, } from './deployer';
|
|
15
15
|
export { SnapshotManager, SnapshotStats, SnapshotStatus, SnapshotCheckResult, formatSnapshotDiff } from './snapshots';
|
|
16
16
|
export { RhostWatcher, WatchOptions, discoverTestFiles } from './watcher';
|
|
17
|
+
export { convertPueblo, parsePuebloHandshake, generatePuebloHandshake } from './pueblo';
|
|
18
|
+
export type { PuebloConvertOptions, PuebloHandshake } from './pueblo';
|
|
17
19
|
export { parseDocument, parseDocumentFile, loadFiles, loadGlob, OfflineRunner, OfflineExpect, OfflineExpectError, } from './offline';
|
|
18
20
|
export type { OfflineDocument, OfflineAttr, OfflineExpectChain, OfflineTestContext, OfflineSuiteContext, OfflineRunOptions, OfflineRunResult, } from './offline';
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGtG,OAAO,EACH,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EACH,WAAW,EACX,aAAa,EACb,SAAS,EACT,WAAW,EACX,MAAM,EACN,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,UAAU,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG1G,OAAO,EACH,MAAM,EACN,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG1E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGtG,OAAO,EACH,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EACH,WAAW,EACX,aAAa,EACb,SAAS,EACT,WAAW,EACX,MAAM,EACN,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,UAAU,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG1G,OAAO,EACH,MAAM,EACN,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxF,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGtE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OfflineExpectError = exports.OfflineExpect = exports.OfflineRunner = exports.loadGlob = exports.loadFiles = exports.parseDocumentFile = exports.parseDocument = exports.discoverTestFiles = exports.RhostWatcher = exports.formatSnapshotDiff = exports.SnapshotManager = exports.restoreSnapshot = exports.snapshotObjects = exports.parseDeployFile = exports.deploy = exports.formatBenchResults = exports.runBench = exports.RhostBenchmark = exports.format = exports.BUILTIN_FUNCTIONS = exports.compatibilityReport = exports.validateFile = exports.validate = exports.RhostRunner = exports.Reporter = exports.PreflightError = exports.assertConfigEquals = exports.assertFunctionMissing = exports.assertFunctionExists = exports.preflightCheck = exports.preflight = exports.WorldSideEffectError = exports.WorldSnapshot = exports.RhostWorld = exports.RhostExpectError = exports.RhostExpect = exports.isRhostError = exports.RhostAssertionError = exports.RhostAssert = exports.CONFIG_FILENAME = exports.loadConfig = exports.RhostContainer = exports.MushConnection = exports.stripAnsi = exports.RhostClient = void 0;
|
|
3
|
+
exports.OfflineExpectError = exports.OfflineExpect = exports.OfflineRunner = exports.loadGlob = exports.loadFiles = exports.parseDocumentFile = exports.parseDocument = exports.generatePuebloHandshake = exports.parsePuebloHandshake = exports.convertPueblo = exports.discoverTestFiles = exports.RhostWatcher = exports.formatSnapshotDiff = exports.SnapshotManager = exports.restoreSnapshot = exports.snapshotObjects = exports.parseDeployFile = exports.deploy = exports.formatBenchResults = exports.runBench = exports.RhostBenchmark = exports.format = exports.BUILTIN_FUNCTIONS = exports.compatibilityReport = exports.validateFile = exports.validate = exports.RhostRunner = exports.Reporter = exports.PreflightError = exports.assertConfigEquals = exports.assertFunctionMissing = exports.assertFunctionExists = exports.preflightCheck = exports.preflight = exports.WorldSideEffectError = exports.WorldSnapshot = exports.RhostWorld = exports.RhostExpectError = exports.RhostExpect = exports.isRhostError = exports.RhostAssertionError = exports.RhostAssert = exports.CONFIG_FILENAME = exports.loadConfig = exports.RhostContainer = exports.MushConnection = exports.stripAnsi = exports.RhostClient = void 0;
|
|
4
4
|
// Core client
|
|
5
5
|
var client_1 = require("./client");
|
|
6
6
|
Object.defineProperty(exports, "RhostClient", { enumerable: true, get: function () { return client_1.RhostClient; } });
|
|
@@ -71,6 +71,11 @@ Object.defineProperty(exports, "formatSnapshotDiff", { enumerable: true, get: fu
|
|
|
71
71
|
var watcher_1 = require("./watcher");
|
|
72
72
|
Object.defineProperty(exports, "RhostWatcher", { enumerable: true, get: function () { return watcher_1.RhostWatcher; } });
|
|
73
73
|
Object.defineProperty(exports, "discoverTestFiles", { enumerable: true, get: function () { return watcher_1.discoverTestFiles; } });
|
|
74
|
+
// Pueblo markup → semantic HTML converter
|
|
75
|
+
var pueblo_1 = require("./pueblo");
|
|
76
|
+
Object.defineProperty(exports, "convertPueblo", { enumerable: true, get: function () { return pueblo_1.convertPueblo; } });
|
|
77
|
+
Object.defineProperty(exports, "parsePuebloHandshake", { enumerable: true, get: function () { return pueblo_1.parsePuebloHandshake; } });
|
|
78
|
+
Object.defineProperty(exports, "generatePuebloHandshake", { enumerable: true, get: function () { return pueblo_1.generatePuebloHandshake; } });
|
|
74
79
|
// Offline static analysis — no server required
|
|
75
80
|
var offline_1 = require("./offline");
|
|
76
81
|
Object.defineProperty(exports, "parseDocument", { enumerable: true, get: function () { return offline_1.parseDocument; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,mCAAsG;AAA7F,qGAAA,WAAW,OAAA;AAAsD,mGAAA,SAAS,OAAA;AAEnF,aAAa;AACb,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,YAAY;AACZ,yCAAsE;AAA7D,2GAAA,cAAc,OAAA;AAEvB,SAAS;AACT,mCAAoE;AAA3D,oGAAA,UAAU,OAAA;AAAe,yGAAA,eAAe,OAAA;AAEjD,+BAA+B;AAC/B,2CAA+F;AAAtF,yGAAA,WAAW,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAmB,0GAAA,YAAY,OAAA;AAExE,iBAAiB;AACjB,mCAAyD;AAAhD,qGAAA,WAAW,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAEtC,wBAAwB;AACxB,iCAAsG;AAA7F,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAA8B,6GAAA,oBAAoB,OAAA;AAEpF,wBAAwB;AACxB,yCAUqB;AATjB,sGAAA,SAAS,OAAA;AACT,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,+GAAA,kBAAkB,OAAA;AAIlB,2GAAA,cAAc,OAAA;AAGlB,WAAW;AACX,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,iBAAiB;AACjB,mCAakB;AAZd,qGAAA,WAAW,OAAA;AAcf,6CAA6C;AAC7C,yCAYqB;AAXjB,qGAAA,QAAQ,OAAA;AACR,yGAAA,YAAY,OAAA;AACZ,gHAAA,mBAAmB,OAAA;AAKnB,8GAAA,iBAAiB,OAAA;AAMrB,qBAAqB;AACrB,mDAA4E;AAAnE,mGAAA,MAAM,OAAA;AAEf,iBAAiB;AACjB,yCAA0G;AAAjG,2GAAA,cAAc,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAErD,kBAAkB;AAClB,uCASoB;AARhB,kGAAA,MAAM,OAAA;AACN,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAOnB,mBAAmB;AACnB,yCAAsH;AAA7G,4GAAA,eAAe,OAAA;AAAsD,+GAAA,kBAAkB,OAAA;AAEhG,aAAa;AACb,qCAA0E;AAAjE,uGAAA,YAAY,OAAA;AAAgB,4GAAA,iBAAiB,OAAA;AAEtD,+CAA+C;AAC/C,qCAQmB;AAPjB,wGAAA,aAAa,OAAA;AACb,4GAAA,iBAAiB,OAAA;AACjB,oGAAA,SAAS,OAAA;AACT,mGAAA,QAAQ,OAAA;AACR,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,mCAAsG;AAA7F,qGAAA,WAAW,OAAA;AAAsD,mGAAA,SAAS,OAAA;AAEnF,aAAa;AACb,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,YAAY;AACZ,yCAAsE;AAA7D,2GAAA,cAAc,OAAA;AAEvB,SAAS;AACT,mCAAoE;AAA3D,oGAAA,UAAU,OAAA;AAAe,yGAAA,eAAe,OAAA;AAEjD,+BAA+B;AAC/B,2CAA+F;AAAtF,yGAAA,WAAW,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAmB,0GAAA,YAAY,OAAA;AAExE,iBAAiB;AACjB,mCAAyD;AAAhD,qGAAA,WAAW,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAEtC,wBAAwB;AACxB,iCAAsG;AAA7F,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAA8B,6GAAA,oBAAoB,OAAA;AAEpF,wBAAwB;AACxB,yCAUqB;AATjB,sGAAA,SAAS,OAAA;AACT,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,+GAAA,kBAAkB,OAAA;AAIlB,2GAAA,cAAc,OAAA;AAGlB,WAAW;AACX,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,iBAAiB;AACjB,mCAakB;AAZd,qGAAA,WAAW,OAAA;AAcf,6CAA6C;AAC7C,yCAYqB;AAXjB,qGAAA,QAAQ,OAAA;AACR,yGAAA,YAAY,OAAA;AACZ,gHAAA,mBAAmB,OAAA;AAKnB,8GAAA,iBAAiB,OAAA;AAMrB,qBAAqB;AACrB,mDAA4E;AAAnE,mGAAA,MAAM,OAAA;AAEf,iBAAiB;AACjB,yCAA0G;AAAjG,2GAAA,cAAc,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAErD,kBAAkB;AAClB,uCASoB;AARhB,kGAAA,MAAM,OAAA;AACN,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAOnB,mBAAmB;AACnB,yCAAsH;AAA7G,4GAAA,eAAe,OAAA;AAAsD,+GAAA,kBAAkB,OAAA;AAEhG,aAAa;AACb,qCAA0E;AAAjE,uGAAA,YAAY,OAAA;AAAgB,4GAAA,iBAAiB,OAAA;AAEtD,0CAA0C;AAC1C,mCAAwF;AAA/E,uGAAA,aAAa,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAGrE,+CAA+C;AAC/C,qCAQmB;AAPjB,wGAAA,aAAa,OAAA;AACb,4GAAA,iBAAiB,OAAA;AACjB,oGAAA,SAAS,OAAA;AACT,mGAAA,QAAQ,OAAA;AACR,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA"}
|
package/dist/offline/runner.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { OfflineSuiteContext, OfflineRunOptions, OfflineRunResult } from '.
|
|
|
2
2
|
export declare class OfflineRunner {
|
|
3
3
|
private readonly root;
|
|
4
4
|
describe(name: string, fn: (ctx: OfflineSuiteContext) => void): this;
|
|
5
|
-
run(options?: OfflineRunOptions): OfflineRunResult
|
|
5
|
+
run(options?: OfflineRunOptions): Promise<OfflineRunResult>;
|
|
6
6
|
private _runJest;
|
|
7
7
|
private _registerJestNode;
|
|
8
8
|
private _runStandalone;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/offline/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EAMnB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA+EjB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGnB;IAEF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAOpE,GAAG,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/offline/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EAMnB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA+EjB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGnB;IAEF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAOpE,GAAG,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa/D,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,iBAAiB;YAsBX,cAAc;YAQd,UAAU;YA2BV,SAAS;IA+BvB,OAAO,CAAC,WAAW;CAOpB"}
|
package/dist/offline/runner.js
CHANGED
|
@@ -63,7 +63,7 @@ class OfflineRunner {
|
|
|
63
63
|
run(options = {}) {
|
|
64
64
|
const useJest = options.useJest ?? (typeof describe !== 'undefined' && typeof it !== 'undefined');
|
|
65
65
|
if (useJest) {
|
|
66
|
-
return this._runJest(this.root, options);
|
|
66
|
+
return Promise.resolve(this._runJest(this.root, options));
|
|
67
67
|
}
|
|
68
68
|
return this._runStandalone(this.root, options);
|
|
69
69
|
}
|
|
@@ -108,10 +108,10 @@ class OfflineRunner {
|
|
|
108
108
|
// -------------------------------------------------------------------------
|
|
109
109
|
// Standalone executor
|
|
110
110
|
// -------------------------------------------------------------------------
|
|
111
|
-
_runStandalone(root, opts) {
|
|
111
|
+
async _runStandalone(root, opts) {
|
|
112
112
|
const result = { passed: 0, failed: 0, skipped: 0, total: 0, duration: 0, failures: [] };
|
|
113
113
|
const start = Date.now();
|
|
114
|
-
this._execSuite(root, [], result, opts);
|
|
114
|
+
await this._execSuite(root, [], result, opts);
|
|
115
115
|
result.duration = Date.now() - start;
|
|
116
116
|
return result;
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/offline/runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/offline/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/pueblo.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pueblo markup → semantic HTML converter
|
|
3
|
+
*
|
|
4
|
+
* Converts the mixed stream that RhostMUSH emits after a PUEBLOCLIENT
|
|
5
|
+
* handshake (raw HTML tags + plain text + ANSI) into clean, safe,
|
|
6
|
+
* semantic HTML. Pure TypeScript — no DOMParser, works in Node.js.
|
|
7
|
+
*
|
|
8
|
+
* Reference: http://www.legacymud.com/pueblo/pueblo_ext.html
|
|
9
|
+
*/
|
|
10
|
+
/** Options for `convertPueblo` (reserved for future extension). */
|
|
11
|
+
export interface PuebloConvertOptions {
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parsed representation of a Pueblo client handshake.
|
|
16
|
+
* @deprecated parsePuebloHandshake now returns boolean — kept for compat.
|
|
17
|
+
*/
|
|
18
|
+
export interface PuebloHandshake {
|
|
19
|
+
version: string;
|
|
20
|
+
supportsXchCmd: boolean;
|
|
21
|
+
extra: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert a Pueblo-enhanced mixed stream into clean, safe semantic HTML.
|
|
25
|
+
*
|
|
26
|
+
* @param input Raw string received from a Pueblo-enabled RhostMUSH server.
|
|
27
|
+
* @returns Sanitized HTML string.
|
|
28
|
+
*/
|
|
29
|
+
export declare function convertPueblo(input: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Returns true when the input line begins with the PUEBLOCLIENT keyword,
|
|
32
|
+
* indicating this is a Pueblo client handshake.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parsePuebloHandshake(input: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Returns the canonical Pueblo client handshake string that should be sent
|
|
37
|
+
* to a Pueblo-enabled RhostMUSH server immediately after connecting.
|
|
38
|
+
*/
|
|
39
|
+
export declare function generatePuebloHandshake(): string;
|
|
40
|
+
//# sourceMappingURL=pueblo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pueblo.d.ts","sourceRoot":"","sources":["../src/pueblo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AA2LD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA4EnD;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
|