@rhost/testkit 1.5.3 → 1.6.0

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/config.js CHANGED
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.CONFIG_FILENAME = void 0;
37
37
  exports.loadConfig = loadConfig;
38
+ exports.buildArgsFromConfig = buildArgsFromConfig;
39
+ exports.stunnelEnvFromConfig = stunnelEnvFromConfig;
38
40
  /**
39
41
  * rhost.config.json loader
40
42
  *
@@ -49,6 +51,26 @@ exports.loadConfig = loadConfig;
49
51
  * "mushConfig": "./mush.conf"
50
52
  * }
51
53
  * ```
54
+ *
55
+ * Full example with build flags and stunnel:
56
+ * ```json
57
+ * {
58
+ * "scriptsDir": "./scripts",
59
+ * "mushConfig": "./mush.conf",
60
+ * "build": {
61
+ * "enableWebSockets": true,
62
+ * "enableSsl": true,
63
+ * "extraCflags": "-DPUEBLO"
64
+ * },
65
+ * "stunnel": {
66
+ * "enable": true,
67
+ * "acceptPort": 4203,
68
+ * "connectPort": 4201,
69
+ * "certFile": "./certs/server.pem",
70
+ * "keyFile": "./certs/server.key"
71
+ * }
72
+ * }
73
+ * ```
52
74
  */
53
75
  const fs = __importStar(require("fs"));
54
76
  const path = __importStar(require("path"));
@@ -60,8 +82,7 @@ exports.CONFIG_FILENAME = 'rhost.config.json';
60
82
  * container simply starts with its built-in defaults.
61
83
  *
62
84
  * @throws SyntaxError when the file exists but is not valid JSON.
63
- * @throws Error when `scriptsDir` or `mushConfig` resolve to a path
64
- * outside the project directory (path traversal guard).
85
+ * @throws Error when path fields resolve outside the project directory.
65
86
  */
66
87
  function loadConfig(searchDir = process.cwd()) {
67
88
  const configPath = path.join(searchDir, exports.CONFIG_FILENAME);
@@ -70,8 +91,6 @@ function loadConfig(searchDir = process.cwd()) {
70
91
  }
71
92
  const raw = fs.readFileSync(configPath, 'utf8');
72
93
  const parsed = JSON.parse(raw);
73
- // Resolve relative paths to absolute, anchored at the config file location,
74
- // then assert they remain within the project root (searchDir).
75
94
  const root = path.resolve(searchDir) + path.sep;
76
95
  const base = path.dirname(configPath);
77
96
  function resolveConfined(field, value) {
@@ -89,6 +108,39 @@ function loadConfig(searchDir = process.cwd()) {
89
108
  if (parsed.mushConfig) {
90
109
  parsed.mushConfig = resolveConfined('mushConfig', parsed.mushConfig);
91
110
  }
111
+ if (parsed.stunnel?.certFile) {
112
+ parsed.stunnel.certFile = resolveConfined('stunnel.certFile', parsed.stunnel.certFile);
113
+ }
114
+ if (parsed.stunnel?.keyFile) {
115
+ parsed.stunnel.keyFile = resolveConfined('stunnel.keyFile', parsed.stunnel.keyFile);
116
+ }
92
117
  return parsed;
93
118
  }
119
+ /** Convert a RhostBuildConfig into Docker build-arg key/value pairs. */
120
+ function buildArgsFromConfig(build) {
121
+ const args = {};
122
+ if (build.enableWebSockets)
123
+ args['ENABLE_WEBSOCKETS'] = '1';
124
+ if (build.enableReality)
125
+ args['ENABLE_REALITY'] = '1';
126
+ if (build.extraCflags)
127
+ args['EXTRA_CFLAGS'] = build.extraCflags;
128
+ return args;
129
+ }
130
+ /** Convert a RhostStunnelConfig into container environment variables. */
131
+ function stunnelEnvFromConfig(stunnel) {
132
+ const env = {};
133
+ if (stunnel.enable) {
134
+ env['STUNNEL_ENABLE'] = 'true';
135
+ if (stunnel.acceptPort)
136
+ env['STUNNEL_ACCEPT_PORT'] = String(stunnel.acceptPort);
137
+ if (stunnel.connectPort)
138
+ env['STUNNEL_CONNECT_PORT'] = String(stunnel.connectPort);
139
+ if (stunnel.certFile)
140
+ env['STUNNEL_CERT'] = stunnel.certFile;
141
+ if (stunnel.keyFile)
142
+ env['STUNNEL_KEY'] = stunnel.keyFile;
143
+ }
144
+ return env;
145
+ }
94
146
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,gCAgCC;AA/ED;;;;;;;;;;;;;;GAcG;AACH,uCAAyB;AACzB,2CAA6B;AAEhB,QAAA,eAAe,GAAG,mBAAmB,CAAC;AAmBnD;;;;;;;;;GASG;AACH,SAAgB,UAAU,CAAC,YAAoB,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAe,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IAE9C,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC,SAAS,eAAe,CAAC,KAAa,EAAE,KAAa;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACX,uBAAuB,KAAK,2CAA2C;gBACvE,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI;gBAC/C,oBAAoB,QAAQ,EAAE,CACjC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -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
- constructor(host: string, port: number);
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>;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;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,qBAAa,cAAe,SAAQ,YAAY;IAKhC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAU,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJhE,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAAM;IACvB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;gBAEF,IAAI,EAAE,MAAM,EAAmB,IAAI,EAAE,MAAM;IAKxE,OAAO,CAAC,gBAAgB,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhD,OAAO,CAAC,MAAM;IAWd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAUzB"}
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"}
@@ -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); // disable timeout after connection established
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 (!this.socket || this.socket.destroyed) {
133
- throw new Error('Not connected');
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();
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -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 the host and dynamically-assigned port to pass to `RhostClient`.
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.
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,WAAW,EAAc,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAUD,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;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc;IAY7E;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,cAAc,SAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqCvE,oEAAoE;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,kEAAkE;IAClE,iBAAiB,IAAI,uBAAuB;CAS/C"}
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
- return testcontainers_1.GenericContainer.fromDockerfile(root).build();
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 the host and dynamically-assigned port to pass to `RhostClient`.
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(4201)
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
- return {
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;
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,mDAIwB;AACxB,qCAA8F;AAU9F,6DAA6D;AAC7D,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAE1D,yDAAyD;AACzD,MAAM,0BAA0B,GAAG,8BAA8B,CAAC;AAElE,mEAAmE;AACnE,MAAM,2BAA2B,GAAG,8BAA8B,CAAC;AACnE,MAAM,0BAA0B,GAAI,6BAA6B,CAAC;AAIlE,MAAa,cAAc;IAKvB,YAAoB,OAAyB,EAAE,MAAmB;QAJ1D,YAAO,GAAgC,IAAI,CAAC;QAKhD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAI,MAAM,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,0BAA0B,EAAE,MAAoB;QACrE,MAAM,GAAG,GAAG,MAAM,IAAI,IAAA,mBAAU,GAAE,IAAI,EAAE,CAAC;QACzC,OAAO,IAAI,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,iCAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CAAC,WAAoB,EAAE,MAAoB;QACxD,MAAM,IAAI,GAAG,WAAW;YACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,MAAM,IAAI,IAAA,mBAAU,GAAE,IAAI,EAAE,CAAC;QAEzC,OAAO,IAAI,cAAc,CAAC,KAAK,IAAI,EAAE;YACjC,IAAI,OAAO,GAAG,iCAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAA,4BAAmB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,MAAO;QAChC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAEhC,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBACxC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAC9B,MAAM,EAAE,sBAAsB;iBACjC,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAC9B,MAAM,EAAE,0BAA0B;iBACrC,CAAC,CAAC,CAAC;QACR,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,MAAM,cAAc,GAAG,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;QACnD,MAAM,iBAAiB,GAAG,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC;QAEzD,IAAI,cAAc,EAAE,CAAC;YACjB,uEAAuE;YACvE,mEAAmE;YACnE,6DAA6D;YAC7D,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YACnE,IAAI,UAAW,CAAC,UAAU;gBAAG,OAAO,CAAC,qBAAqB,CAAC,GAAI,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC;YAC9F,IAAI,UAAW,CAAC,WAAW;gBAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,UAAW,CAAC,WAAW,CAAC,CAAC;YAE/F,MAAM,QAAQ,GAAG,UAAW,CAAC,QAAQ,CAAC;YACtC,MAAM,OAAO,GAAI,UAAW,CAAC,OAAO,CAAC;YAErC,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;gBAClG,OAAO,CAAC,cAAc,CAAC,GAAG,2BAA2B,CAAC;gBAEtD,4DAA4D;gBAC5D,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;oBAC7E,CAAC;oBACD,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;oBAChG,OAAO,CAAC,aAAa,CAAC,GAAG,0BAA0B,CAAC;gBACxD,CAAC;gBACD,gFAAgF;gBAChF,0EAA0E;YAC9E,CAAC;YACD,4EAA4E;YAE5E,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,MAAM,YAAY,GAAa,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,cAAc;YAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;aACpB,gBAAgB,CAAC,GAAG,YAAY,CAAC;aACjC,gBAAgB,CACb,qBAAI,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAC9D;aACA,KAAK,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,kEAAkE;IAClE,iBAAiB;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,GAA4B;YAClC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;SACzC,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAlKD,wCAkKC"}
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
@@ -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"}
@@ -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;IAatD,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,cAAc;YAQR,UAAU;YA2BV,SAAS;IA+BvB,OAAO,CAAC,WAAW;CAOpB"}
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"}
@@ -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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"}