@rhost/testkit 1.4.0 → 1.5.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.
Files changed (73) hide show
  1. package/README.md +1 -0
  2. package/dist/cli/index.js +15 -4
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/init.d.ts.map +1 -1
  5. package/dist/cli/init.js +107 -19
  6. package/dist/cli/init.js.map +1 -1
  7. package/dist/cli/lint.d.ts +2 -0
  8. package/dist/cli/lint.d.ts.map +1 -0
  9. package/dist/cli/lint.js +163 -0
  10. package/dist/cli/lint.js.map +1 -0
  11. package/dist/cli/mush-format.d.ts +2 -0
  12. package/dist/cli/mush-format.d.ts.map +1 -0
  13. package/dist/cli/mush-format.js +232 -0
  14. package/dist/cli/mush-format.js.map +1 -0
  15. package/dist/client.d.ts +43 -1
  16. package/dist/client.d.ts.map +1 -1
  17. package/dist/client.js +78 -5
  18. package/dist/client.js.map +1 -1
  19. package/dist/index.d.ts +3 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +10 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/offline/document.d.ts +8 -0
  24. package/dist/offline/document.d.ts.map +1 -0
  25. package/dist/offline/document.js +124 -0
  26. package/dist/offline/document.js.map +1 -0
  27. package/dist/offline/expect.d.ts +27 -0
  28. package/dist/offline/expect.d.ts.map +1 -0
  29. package/dist/offline/expect.js +90 -0
  30. package/dist/offline/expect.js.map +1 -0
  31. package/dist/offline/index.d.ts +5 -0
  32. package/dist/offline/index.d.ts.map +1 -0
  33. package/dist/offline/index.js +14 -0
  34. package/dist/offline/index.js.map +1 -0
  35. package/dist/offline/mock-client.d.ts +19 -0
  36. package/dist/offline/mock-client.d.ts.map +1 -0
  37. package/dist/offline/mock-client.js +36 -0
  38. package/dist/offline/mock-client.js.map +1 -0
  39. package/dist/offline/mock-world.d.ts +30 -0
  40. package/dist/offline/mock-world.d.ts.map +1 -0
  41. package/dist/offline/mock-world.js +64 -0
  42. package/dist/offline/mock-world.js.map +1 -0
  43. package/dist/offline/reduced-expect.d.ts +38 -0
  44. package/dist/offline/reduced-expect.d.ts.map +1 -0
  45. package/dist/offline/reduced-expect.js +61 -0
  46. package/dist/offline/reduced-expect.js.map +1 -0
  47. package/dist/offline/runner.d.ts +13 -0
  48. package/dist/offline/runner.d.ts.map +1 -0
  49. package/dist/offline/runner.js +174 -0
  50. package/dist/offline/runner.js.map +1 -0
  51. package/dist/offline/types.d.ts +78 -0
  52. package/dist/offline/types.d.ts.map +1 -0
  53. package/dist/offline/types.js +3 -0
  54. package/dist/offline/types.js.map +1 -0
  55. package/dist/reporter.d.ts +3 -1
  56. package/dist/reporter.d.ts.map +1 -1
  57. package/dist/reporter.js +20 -0
  58. package/dist/reporter.js.map +1 -1
  59. package/dist/runner.d.ts +39 -0
  60. package/dist/runner.d.ts.map +1 -1
  61. package/dist/runner.js +82 -15
  62. package/dist/runner.js.map +1 -1
  63. package/dist/validator/formatter.js +13 -2
  64. package/dist/validator/formatter.js.map +1 -1
  65. package/dist/validator/mush-format.d.ts +43 -0
  66. package/dist/validator/mush-format.d.ts.map +1 -0
  67. package/dist/validator/mush-format.js +484 -0
  68. package/dist/validator/mush-format.js.map +1 -0
  69. package/dist/validator/mush-lint.d.ts +22 -0
  70. package/dist/validator/mush-lint.d.ts.map +1 -0
  71. package/dist/validator/mush-lint.js +590 -0
  72. package/dist/validator/mush-lint.js.map +1 -0
  73. package/package.json +10 -2
package/README.md CHANGED
@@ -1231,6 +1231,7 @@ See [ROADMAP.md](./ROADMAP.md) for full details and implementation notes.
1231
1231
  | v1.1.0 | Server pre-flight assertions · Multi-persona test matrix · Side-effect assertion mode |
1232
1232
  | v1.2.0 | Register clobber analyzer · Deploy pipeline with rollback · Dialect compatibility report |
1233
1233
  | v1.3.0 | **Softcode formatter** (`rhost-testkit fmt`) · **Benchmark mode** (`RhostBenchmark`) |
1234
+ | v1.4.0 | **PostgreSQL sidecar** (`docker-compose.yml`) · **`execscript` Jobs bridge** (`scripts/jobs_db.py`) · **`rhost.config.json`** custom scripts dir + mush config · `softcode/` directory |
1234
1235
 
1235
1236
  ### Planned
1236
1237
 
package/dist/cli/index.js CHANGED
@@ -9,6 +9,8 @@ const watch_1 = require("./watch");
9
9
  const init_1 = require("./init");
10
10
  const deploy_1 = require("./deploy");
11
11
  const fmt_1 = require("./fmt");
12
+ const mush_format_1 = require("./mush-format");
13
+ const lint_1 = require("./lint");
12
14
  const args = process.argv.slice(2);
13
15
  const cmd = args[0];
14
16
  switch (cmd) {
@@ -27,6 +29,12 @@ switch (cmd) {
27
29
  case 'fmt':
28
30
  (0, fmt_1.runFmtCli)(args.slice(1));
29
31
  break;
32
+ case 'mush-format':
33
+ (0, mush_format_1.runMushFormatCli)(args.slice(1));
34
+ break;
35
+ case 'lint':
36
+ (0, lint_1.runLintCli)(args.slice(1));
37
+ break;
30
38
  case '--version':
31
39
  case '-v': {
32
40
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -56,9 +64,11 @@ USAGE
56
64
  COMMANDS
57
65
  validate Validate a softcode expression offline (no server needed)
58
66
  watch Watch test files and re-run on change
59
- init Generate CI/CD workflow templates
67
+ init Scaffold project structure and optional CI/CD templates
60
68
  deploy Deploy a softcode file with automatic rollback on failure
61
- fmt Format a softcode file (normalize whitespace)
69
+ fmt Format a softcode expression (normalize whitespace)
70
+ mush-format Two-way converter: expand installer→src or compress src→installer
71
+ lint Static analysis: bare input, missing locks, dead attrs, length budgets
62
72
 
63
73
  OPTIONS
64
74
  -v, --version Print version and exit
@@ -71,8 +81,9 @@ EXAMPLES
71
81
  rhost-testkit validate --file mycode.mush
72
82
  rhost-testkit watch
73
83
  rhost-testkit watch src/__tests__/math.test.ts
74
- rhost-testkit init --ci github
75
- rhost-testkit init --ci gitlab
84
+ rhost-testkit init
85
+ rhost-testkit init my-project
86
+ rhost-testkit init . --ci github
76
87
  rhost-testkit deploy --file mycode.mush --dry-run
77
88
  rhost-testkit fmt mycode.mush
78
89
  rhost-testkit fmt --check mycode.mush
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;;AAE9E,yCAA4C;AAC5C,mCAAsC;AACtC,iCAAoC;AACpC,qCAAwC;AACxC,+BAAkC;AAElC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,QAAQ,GAAG,EAAE,CAAC;IACZ,KAAK,UAAU;QACb,IAAA,yBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM;IAER,KAAK,OAAO;QACV,IAAA,mBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM;IAER,KAAK,MAAM;QACT,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM;IAER,KAAK,QAAQ;QACX,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM;IAER,KAAK,KAAK;QACR,IAAA,eAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM;IAER,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC,CAAC,CAAC;QACV,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI,CAAC;IACV,KAAK,SAAS;QACZ,SAAS,EAAE,CAAC;QACZ,MAAM;IAER;QACE,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,CAAC;QAC3D,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,SAAS;IAChB,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC;iBACG,GAAG,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B3B,CAAC,IAAI,EAAE,CAAC,CAAC;AACV,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;;AAE9E,yCAA4C;AAC5C,mCAAsC;AACtC,iCAAoC;AACpC,qCAAwC;AACxC,+BAAkC;AAClC,+CAAiD;AACjD,iCAAoC;AAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,QAAQ,GAAG,EAAE,CAAC;IACZ,KAAK,UAAU;QACb,IAAA,yBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM;IAER,KAAK,OAAO;QACV,IAAA,mBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM;IAER,KAAK,MAAM;QACT,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM;IAER,KAAK,QAAQ;QACX,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM;IAER,KAAK,KAAK;QACR,IAAA,eAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM;IAER,KAAK,aAAa;QAChB,IAAA,8BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM;IAER,KAAK,MAAM;QACT,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM;IAER,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC,CAAC,CAAC;QACV,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI,CAAC;IACV,KAAK,SAAS;QACZ,SAAS,EAAE,CAAC;QACZ,MAAM;IAER;QACE,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,CAAC;QAC3D,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,SAAS;IAChB,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC;iBACG,GAAG,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC,IAAI,EAAE,CAAC,CAAC;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AA8FA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA2D5E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAiIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA4C5E"}
package/dist/cli/init.js CHANGED
@@ -40,8 +40,41 @@ exports.runInitCli = runInitCli;
40
40
  const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
42
  // ---------------------------------------------------------------------------
43
- // Templates
43
+ // Scaffold templates
44
44
  // ---------------------------------------------------------------------------
45
+ const EXAMPLE_MUSH = `\
46
+ @@ ============================================================================
47
+ @@ Mushcode Installer for: Example
48
+ @@ Version: 1.0.0
49
+ @@ Requires: None
50
+ @@ ============================================================================
51
+
52
+ &CMD_HELLO me=$+hello:@pemit %#=Hello, [name(%#)]!
53
+ &HELP_HELLO me=Usage: +hello — greet yourself
54
+
55
+ @@ ---[ UNINSTALL ]-----------------------------------------------------------
56
+ &CMD_HELLO me=
57
+ &HELP_HELLO me=
58
+ @@ [END OF FILE]
59
+ `;
60
+ const EXAMPLE_TEST = `\
61
+ import { RhostRunner } from '@rhost/testkit';
62
+
63
+ const runner = new RhostRunner();
64
+
65
+ runner.describe('Example', ({ it }) => {
66
+ it('add works', async ({ expect }) => {
67
+ await expect('add(2,3)').toBe('5');
68
+ });
69
+ });
70
+
71
+ runner.run({
72
+ host: process.env.RHOST_HOST ?? 'localhost',
73
+ port: Number(process.env.RHOST_PORT ?? 4201),
74
+ username: process.env.RHOST_USER ?? '#1',
75
+ password: process.env.RHOST_PASS ?? 'potrzebie',
76
+ });
77
+ `;
45
78
  const GITHUB_WORKFLOW = `\
46
79
  name: MUSH Tests
47
80
 
@@ -123,6 +156,7 @@ mush-tests:
123
156
  // Public handler
124
157
  // ---------------------------------------------------------------------------
125
158
  function runInitCli(args, cwd = process.cwd()) {
159
+ let dir = null;
126
160
  let ci = null;
127
161
  let force = false;
128
162
  for (let i = 0; i < args.length; i++) {
@@ -142,24 +176,70 @@ function runInitCli(args, cwd = process.cwd()) {
142
176
  process.exit(0);
143
177
  }
144
178
  else if (!arg.startsWith('-')) {
145
- die(`Unexpected argument: ${arg}`);
179
+ if (dir !== null) {
180
+ die(`Unexpected argument: ${arg}`);
181
+ }
182
+ dir = arg;
146
183
  }
147
184
  else {
148
185
  die(`Unknown option: ${arg}`);
149
186
  }
150
187
  }
151
- if (!ci) {
152
- console.error("rhost-testkit init: --ci <platform> is required\n");
153
- printHelp();
154
- process.exit(1);
188
+ const targetDir = path.resolve(cwd, dir ?? '.');
189
+ // Create the target directory if it doesn't exist
190
+ if (!fs.existsSync(targetDir)) {
191
+ fs.mkdirSync(targetDir, { recursive: true });
192
+ console.log(`rhost-testkit init: created ${targetDir}`);
193
+ }
194
+ // Scaffold project structure
195
+ scaffoldProject(targetDir, force);
196
+ // Optionally write CI workflow
197
+ if (ci) {
198
+ scaffoldCi(targetDir, ci, force);
199
+ }
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // Scaffold helpers
203
+ // ---------------------------------------------------------------------------
204
+ function scaffoldProject(targetDir, force) {
205
+ const dirs = [
206
+ path.join(targetDir, 'softcode'),
207
+ path.join(targetDir, 'src', '__tests__'),
208
+ path.join(targetDir, 'dist'),
209
+ ];
210
+ for (const d of dirs) {
211
+ if (!fs.existsSync(d)) {
212
+ fs.mkdirSync(d, { recursive: true });
213
+ console.log(`rhost-testkit init: created ${d}`);
214
+ }
215
+ }
216
+ const files = [
217
+ {
218
+ file: path.join(targetDir, 'softcode', 'example.mush'),
219
+ content: EXAMPLE_MUSH,
220
+ },
221
+ {
222
+ file: path.join(targetDir, 'src', '__tests__', 'example.test.ts'),
223
+ content: EXAMPLE_TEST,
224
+ },
225
+ ];
226
+ for (const { file, content } of files) {
227
+ if (fs.existsSync(file) && !force) {
228
+ console.log(`rhost-testkit init: ${file} already exists (use --force to overwrite)`);
229
+ continue;
230
+ }
231
+ fs.writeFileSync(file, content, 'utf8');
232
+ console.log(`rhost-testkit init: wrote ${file}`);
155
233
  }
234
+ }
235
+ function scaffoldCi(targetDir, ci, force) {
156
236
  const targets = {
157
237
  github: {
158
- file: path.join(cwd, '.github', 'workflows', 'mush-tests.yml'),
238
+ file: path.join(targetDir, '.github', 'workflows', 'mush-tests.yml'),
159
239
  content: GITHUB_WORKFLOW,
160
240
  },
161
241
  gitlab: {
162
- file: path.join(cwd, '.gitlab-ci.yml'),
242
+ file: path.join(targetDir, '.gitlab-ci.yml'),
163
243
  content: GITLAB_CI,
164
244
  },
165
245
  };
@@ -168,8 +248,8 @@ function runInitCli(args, cwd = process.cwd()) {
168
248
  die(`--ci: unknown platform '${ci}' — use 'github' or 'gitlab'`);
169
249
  }
170
250
  if (fs.existsSync(target.file) && !force) {
171
- console.warn(`rhost-testkit init: ${target.file} already exists. Use --force to overwrite.`);
172
- process.exit(0);
251
+ console.log(`rhost-testkit init: ${target.file} already exists (use --force to overwrite)`);
252
+ return;
173
253
  }
174
254
  const dir = path.dirname(target.file);
175
255
  if (!fs.existsSync(dir)) {
@@ -184,20 +264,28 @@ function runInitCli(args, cwd = process.cwd()) {
184
264
  function printHelp() {
185
265
  console.log(`
186
266
  USAGE
187
- rhost-testkit init --ci <platform>
267
+ rhost-testkit init [dir] [--ci <platform>] [--force]
188
268
 
189
- PLATFORMS
190
- github Generate .github/workflows/mush-tests.yml
191
- gitlab Generate .gitlab-ci.yml
269
+ ARGUMENTS
270
+ dir Directory to initialise (default: current directory)
271
+ Created automatically if it does not exist.
192
272
 
193
273
  OPTIONS
194
- --force Overwrite an existing file
195
- -h, --help Show this help
274
+ --ci <platform> Also generate a CI/CD workflow file
275
+ Platforms: github, gitlab
276
+ --force Overwrite existing files
277
+ -h, --help Show this help
278
+
279
+ SCAFFOLD
280
+ softcode/example.mush Starter installer file
281
+ src/__tests__/example.test.ts Starter RhostRunner test
282
+ dist/ Output directory (empty)
196
283
 
197
284
  EXAMPLES
198
- rhost-testkit init --ci github
199
- rhost-testkit init --ci gitlab
200
- rhost-testkit init --ci github --force
285
+ rhost-testkit init
286
+ rhost-testkit init my-project
287
+ rhost-testkit init . --ci github
288
+ rhost-testkit init my-project --ci gitlab --force
201
289
  `.trim());
202
290
  }
203
291
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+H9E,gCA4CC;AAzKD,uCAAyB;AACzB,2CAA6B;AAE7B,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,YAAY,GAAG;;;;;;;;;;;;;;CAcpB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;CAiBpB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CvB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjB,CAAC;AAEF,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAgB,UAAU,CAAC,IAAc,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAClE,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACnE,CAAC;YACD,EAAE,GAAG,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC1C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACf,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,GAAG,GAAG,GAAG,CAAC;QACd,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;IAEhD,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,6BAA6B;IAC7B,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAElC,+BAA+B;IAC/B,IAAI,EAAE,EAAE,CAAC;QACL,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,eAAe,CAAC,SAAiB,EAAE,KAAc;IACtD,MAAM,IAAI,GAAG;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;KAC/B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAA6C;QACpD;YACI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC;YACtD,OAAO,EAAE,YAAY;SACxB;QACD;YACI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,CAAC;YACjE,OAAO,EAAE,YAAY;SACxB;KACJ,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,4CAA4C,CAAC,CAAC;YACrF,SAAS;QACb,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB,EAAE,EAAU,EAAE,KAAc;IAC7D,MAAM,OAAO,GAAsD;QAC/D,MAAM,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC;YACpE,OAAO,EAAE,eAAe;SAC3B;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;YAC5C,OAAO,EAAE,SAAS;SACrB;KACJ,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,GAAG,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAC5F,OAAO;IACX,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,SAAS,SAAS;IACd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBf,CAAC,IAAI,EAAE,CAAC,CAAC;AACV,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,GAAG,CAAC,GAAW;IACpB,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runLintCli(args: string[], cwd?: string): void;
2
+ //# sourceMappingURL=lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAQA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA+C5E"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // rhost-testkit lint — static analysis CLI
4
+ // ---------------------------------------------------------------------------
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runLintCli = runLintCli;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const mush_lint_1 = require("../validator/mush-lint");
43
+ function runLintCli(args, cwd = process.cwd()) {
44
+ if (args.includes('--help') || args.includes('-h')) {
45
+ printHelp();
46
+ process.exit(0);
47
+ }
48
+ const jsonMode = args.includes('--json');
49
+ const strict = args.includes('--strict'); // exit 1 on any WARN too
50
+ const files = args.filter(a => !a.startsWith('-'));
51
+ if (files.length === 0) {
52
+ const input = fs.readFileSync('/dev/stdin', 'utf8');
53
+ const result = (0, mush_lint_1.lintContent)(input, '<stdin>');
54
+ printResult('<stdin>', result.diagnostics, jsonMode);
55
+ process.exit(exitCode(result.errors, result.warnings, strict));
56
+ return;
57
+ }
58
+ let totalErrors = 0;
59
+ let totalWarnings = 0;
60
+ let exitWithError = false;
61
+ for (const file of files) {
62
+ const resolved = path.resolve(cwd, file);
63
+ if (!fs.existsSync(resolved)) {
64
+ console.error(`rhost-testkit lint: file not found: ${resolved}`);
65
+ process.exit(1);
66
+ }
67
+ const content = fs.readFileSync(resolved, 'utf8');
68
+ const result = (0, mush_lint_1.lintContent)(content, file);
69
+ printResult(path.relative(cwd, resolved), result.diagnostics, jsonMode);
70
+ totalErrors += result.errors;
71
+ totalWarnings += result.warnings;
72
+ if (exitCode(result.errors, result.warnings, strict) > 0) {
73
+ exitWithError = true;
74
+ }
75
+ }
76
+ if (files.length > 1 && !jsonMode) {
77
+ console.log(`\nTotal: ${totalErrors} error(s), ${totalWarnings} warning(s) across ${files.length} file(s)`);
78
+ }
79
+ process.exit(exitWithError ? 1 : 0);
80
+ }
81
+ function exitCode(errors, warnings, strict) {
82
+ if (errors > 0)
83
+ return 1;
84
+ if (strict && warnings > 0)
85
+ return 1;
86
+ return 0;
87
+ }
88
+ function printResult(filename, diags, jsonMode) {
89
+ if (jsonMode) {
90
+ console.log(JSON.stringify({ file: filename, diagnostics: diags }));
91
+ return;
92
+ }
93
+ if (diags.length === 0) {
94
+ console.log(`${filename}: clean`);
95
+ return;
96
+ }
97
+ const errors = diags.filter(d => d.severity === 'ERROR').length;
98
+ const warnings = diags.filter(d => d.severity === 'WARN').length;
99
+ const infos = diags.filter(d => d.severity === 'INFO').length;
100
+ const hdr = `mush-lint: ${filename}`;
101
+ console.log(hdr);
102
+ console.log('='.repeat(hdr.length));
103
+ for (const d of diags) {
104
+ const attrPart = d.attr ? ` [${d.attr}]` : '';
105
+ const loc = `line ${d.line}`;
106
+ console.log(`${padRight(d.severity, 7)} ${padRight(d.code, 4)} ${padRight(loc, 10)}${attrPart} ${d.message}`);
107
+ }
108
+ const summary = [];
109
+ if (errors > 0)
110
+ summary.push(`${errors} error(s)`);
111
+ if (warnings > 0)
112
+ summary.push(`${warnings} warning(s)`);
113
+ if (infos > 0)
114
+ summary.push(`${infos} info`);
115
+ console.log(`\n${summary.join(', ')}`);
116
+ if (errors > 0) {
117
+ console.log('Packaging blocked until errors are resolved.');
118
+ }
119
+ }
120
+ function padRight(s, n) {
121
+ return s.length >= n ? s : s + ' '.repeat(n - s.length);
122
+ }
123
+ function printHelp() {
124
+ console.log(`
125
+ USAGE
126
+ rhost-testkit lint [options] [file...]
127
+
128
+ OPTIONS
129
+ --json Output diagnostics as JSON (one object per file, newline-delimited)
130
+ --strict Exit 1 on warnings as well as errors
131
+
132
+ SEVERITY
133
+ ERROR Must fix before packaging (blocks mush-build Phase 6)
134
+ WARN Should fix; explain if skipping
135
+ INFO Style suggestion
136
+
137
+ CHECKS
138
+ S1 Bare user input in @pemit/@emit/think
139
+ S2 @create without @lock
140
+ S3 execscript() with user-controlled argument
141
+ S4 User input in @switch case label
142
+ S5 Hardcoded dbref in HELP* attributes
143
+ C1 FN_* accepts %0 without input guard
144
+ C2 CMD_* with no HELP* entry
145
+ C3 Installer missing header/footer markers
146
+ C4 Installer missing UNINSTALL section
147
+ F1 @@ comment line exceeds 78 chars
148
+ F2 Separator line not exactly 78 chars
149
+ F3 Wrong attribute order (Config→UDFs→Commands→Help)
150
+ F4 Comment style mismatch (// or ## instead of @@)
151
+ L1 Attribute body exceeds 7500 chars (approaching Rhost limit)
152
+ I1 Attribute name not uppercase
153
+ I2 No Version field in installer header
154
+ I3 No Requires field in installer header
155
+
156
+ EXAMPLES
157
+ rhost-testkit lint softcode/my-system.mush
158
+ rhost-testkit lint dist/my-system.installer.txt
159
+ rhost-testkit lint --strict softcode/*.mush
160
+ rhost-testkit lint --json dist/my-system.installer.txt
161
+ `.trim());
162
+ }
163
+ //# sourceMappingURL=lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runMushFormatCli(args: string[], cwd?: string): void;
2
+ //# sourceMappingURL=mush-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mush-format.d.ts","sourceRoot":"","sources":["../../src/cli/mush-format.ts"],"names":[],"mappings":"AAYA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAmBlF"}