@glubean/cli 0.1.2 → 0.1.3

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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `glubean redact` — Preview redaction on a result JSON file.
3
+ *
4
+ * Reads a .result.json file, applies the project's redaction config,
5
+ * and writes the redacted version to stdout or a file.
6
+ */
7
+ export interface RedactCommandOptions {
8
+ input?: string;
9
+ output?: string;
10
+ stdout?: boolean;
11
+ config?: string[];
12
+ }
13
+ export declare function redactCommand(options: RedactCommandOptions): Promise<void>;
14
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/commands/redact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EhF"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * `glubean redact` — Preview redaction on a result JSON file.
3
+ *
4
+ * Reads a .result.json file, applies the project's redaction config,
5
+ * and writes the redacted version to stdout or a file.
6
+ */
7
+ import { readFile, writeFile } from "node:fs/promises";
8
+ import { resolve } from "node:path";
9
+ import { loadConfig } from "../lib/config.js";
10
+ const colors = {
11
+ red: "\x1b[31m",
12
+ green: "\x1b[32m",
13
+ yellow: "\x1b[33m",
14
+ cyan: "\x1b[36m",
15
+ dim: "\x1b[2m",
16
+ bold: "\x1b[1m",
17
+ reset: "\x1b[0m",
18
+ };
19
+ export async function redactCommand(options) {
20
+ const cwd = process.cwd();
21
+ // Find input file
22
+ const inputPath = resolve(cwd, options.input ?? "glubean-run.result.json");
23
+ let raw;
24
+ try {
25
+ raw = await readFile(inputPath, "utf-8");
26
+ }
27
+ catch {
28
+ console.error(`${colors.red}Could not read: ${inputPath}${colors.reset}`);
29
+ console.error(`${colors.dim}Run tests with --result-json first, or specify a path with --input.${colors.reset}`);
30
+ process.exit(1);
31
+ }
32
+ let payload;
33
+ try {
34
+ payload = JSON.parse(raw);
35
+ }
36
+ catch {
37
+ console.error(`${colors.red}Invalid JSON: ${inputPath}${colors.reset}`);
38
+ process.exit(1);
39
+ }
40
+ if (!payload.tests || !Array.isArray(payload.tests)) {
41
+ console.error(`${colors.red}Not a valid result file (missing tests array): ${inputPath}${colors.reset}`);
42
+ process.exit(1);
43
+ }
44
+ // Load config (includes redaction settings)
45
+ const glubeanConfig = await loadConfig(cwd, options.config);
46
+ // Apply redaction
47
+ const { RedactionEngine, createBuiltinPlugins, redactEvent } = await import("@glubean/redaction");
48
+ const engine = new RedactionEngine({
49
+ config: glubeanConfig.redaction,
50
+ plugins: createBuiltinPlugins(glubeanConfig.redaction),
51
+ });
52
+ let redactionCount = 0;
53
+ const redactedPayload = {
54
+ ...payload,
55
+ tests: payload.tests.map((t) => ({
56
+ ...t,
57
+ events: t.events.map((e) => {
58
+ const redacted = redactEvent(engine, e);
59
+ if (JSON.stringify(redacted) !== JSON.stringify(e)) {
60
+ redactionCount++;
61
+ }
62
+ return redacted;
63
+ }),
64
+ })),
65
+ };
66
+ const redactedJson = JSON.stringify(redactedPayload, null, 2);
67
+ if (options.stdout) {
68
+ process.stdout.write(redactedJson + "\n");
69
+ return;
70
+ }
71
+ // Write to output file (default: <input>.redacted.json or overwrite input)
72
+ const outputPath = options.output
73
+ ? resolve(cwd, options.output)
74
+ : inputPath.replace(/\.json$/, ".redacted.json");
75
+ await writeFile(outputPath, redactedJson + "\n", "utf-8");
76
+ console.log(`${colors.bold}${colors.cyan}🔒 Redaction Preview${colors.reset}`);
77
+ console.log();
78
+ console.log(`${colors.dim}Input: ${inputPath}${colors.reset}`);
79
+ console.log(`${colors.dim}Output: ${outputPath}${colors.reset}`);
80
+ console.log(`${colors.dim}Config: ${glubeanConfig.redaction.replacementFormat} format${colors.reset}`);
81
+ console.log();
82
+ console.log(`${colors.green}✓ ${redactionCount} event(s) redacted across ${payload.tests.length} test(s)${colors.reset}`);
83
+ }
84
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/commands/redact.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgVH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyWH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
package/dist/main.js CHANGED
@@ -21,6 +21,7 @@ import { loginCommand } from "./commands/login.js";
21
21
  import { patchCommand } from "./commands/patch.js";
22
22
  import { specSplitCommand } from "./commands/spec_split.js";
23
23
  import { workerCommand } from "./commands/worker.js";
24
+ import { redactCommand } from "./commands/redact.js";
24
25
  import { abortUpdateCheck, checkForUpdates } from "./update_check.js";
25
26
  const program = new Command();
26
27
  program
@@ -286,6 +287,27 @@ workerCmd
286
287
  });
287
288
  });
288
289
  // ─────────────────────────────────────────────────────────────────────────────
290
+ // redact command
291
+ // ─────────────────────────────────────────────────────────────────────────────
292
+ program
293
+ .command("redact")
294
+ .description("Preview redaction on a result JSON file")
295
+ .option("-i, --input <path>", "Input result JSON file (default: glubean-run.result.json)")
296
+ .option("-o, --output <path>", "Output file path (default: <input>.redacted.json)")
297
+ .option("--stdout", "Write redacted JSON to stdout")
298
+ .option("--config <paths>", "Config file(s), comma-separated or repeatable", collect, [])
299
+ .action(async (options) => {
300
+ const configFiles = options.config && options.config.length > 0
301
+ ? options.config.flatMap((v) => v.split(",").map((s) => s.trim()).filter(Boolean))
302
+ : undefined;
303
+ await redactCommand({
304
+ input: options.input,
305
+ output: options.output,
306
+ stdout: options.stdout,
307
+ config: configFiles,
308
+ });
309
+ });
310
+ // ─────────────────────────────────────────────────────────────────────────────
289
311
  // Helpers
290
312
  // ─────────────────────────────────────────────────────────────────────────────
291
313
  /** Collect repeated options into an array (Commander.js pattern) */
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glubean/cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "gb": "./bin/gb.js",
@@ -18,10 +18,10 @@
18
18
  "dotenv": "^16.4.0",
19
19
  "yaml": "^2.7.0",
20
20
  "tsx": "^4.19.0",
21
- "@glubean/scanner": "0.1.2",
22
- "@glubean/runner": "0.1.2",
23
- "@glubean/redaction": "0.1.2",
24
- "@glubean/sdk": "0.1.2"
21
+ "@glubean/sdk": "0.1.3",
22
+ "@glubean/runner": "0.1.3",
23
+ "@glubean/scanner": "0.1.3",
24
+ "@glubean/redaction": "0.1.3"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.0.0",
@@ -1,6 +1,6 @@
1
1
  # Glubean Test Project
2
2
 
3
- API test automation project using `@glubean/sdk`. Runtime is **Deno**. Packages are from **JSR**.
3
+ API test automation project using `@glubean/sdk`. Runtime is **Node.js**. Packages are from **npm**.
4
4
 
5
5
  ## Project Structure
6
6
 
@@ -11,15 +11,15 @@ data/ # Test data files (JSON, CSV, YAML)
11
11
  context/ # API specs and reference docs for AI and tooling
12
12
  .env # Public variables (BASE_URL)
13
13
  .env.secrets # Credentials — gitignored
14
- deno.json # Runtime config, imports, glubean settings
14
+ package.json # Runtime config, dependencies, glubean settings
15
15
  ```
16
16
 
17
17
  ## Setup
18
18
 
19
- If `deno check` or `glubean run` fails with module-not-found errors, run:
19
+ If `glubean run` fails with module-not-found errors, run:
20
20
 
21
21
  ```bash
22
- deno install
22
+ npm install
23
23
  ```
24
24
 
25
25
  ## BEFORE Writing or Modifying Any Test (MANDATORY)
@@ -85,14 +85,11 @@ Cover all applicable boundaries unless the user asked for a narrower scope.
85
85
 
86
86
  ## Import Convention
87
87
 
88
- Always use the import map alias defined in `deno.json`, never hardcoded JSR URLs:
88
+ Always use the npm package name:
89
89
 
90
90
  ```typescript
91
91
  // Correct
92
92
  import { test } from "@glubean/sdk";
93
-
94
- // Wrong — breaks tooling features like trace grouping
95
- import { test } from "jsr:@glubean/sdk@^X.Y.Z";
96
93
  ```
97
94
 
98
95
  ## Conventions
@@ -125,7 +122,7 @@ without human intervention.
125
122
  ### Claude Code
126
123
 
127
124
  ```bash
128
- claude mcp add glubean -- deno run -A jsr:@glubean/mcp
125
+ claude mcp add glubean -- npx @glubean/mcp
129
126
  ```
130
127
 
131
128
  ### Cursor
@@ -136,8 +133,8 @@ Add to `~/.cursor/mcp.json`:
136
133
  {
137
134
  "mcpServers": {
138
135
  "glubean": {
139
- "command": "deno",
140
- "args": ["run", "-A", "jsr:@glubean/mcp"]
136
+ "command": "npx",
137
+ "args": ["@glubean/mcp"]
141
138
  }
142
139
  }
143
140
  }
@@ -148,7 +145,7 @@ Add to `~/.cursor/mcp.json`:
148
145
  - `glubean_run_local_file` — run a test file locally, returns structured results (assertions, logs, traces)
149
146
  - `glubean_discover_tests` — scan a file and return test export metadata (id, name, tags)
150
147
  - `glubean_list_test_files` — list all test files in the project
151
- - `glubean_diagnose_config` — check project config for common issues (.env, deno.json, dirs)
148
+ - `glubean_diagnose_config` — check project config for common issues (.env, package.json, dirs)
152
149
  - `glubean_get_last_run_summary` — get summary of the most recent local run
153
150
  - `glubean_get_local_events` — get filtered events (assertions, logs, traces) from the last run; useful for debugging
154
151
  failures
@@ -9,7 +9,7 @@ This project was generated by `glubean init`.
9
9
  ├── explore/ # Exploratory tests — quick iteration in your editor
10
10
  ├── data/ # Shared test data (JSON, CSV, YAML) used by both
11
11
  ├── context/ # API specs and reference docs for AI and tooling
12
- ├── deno.json # Config: tasks, SDK import, testDir/exploreDir
12
+ ├── package.json # Config: dependencies, scripts, glubean settings
13
13
  ├── .env # Default environment variables (BASE_URL, etc.)
14
14
  ├── .env.secrets # Default secrets (API keys — gitignored)
15
15
  ├── .env.staging # Staging environment variables
@@ -18,17 +18,17 @@ This project was generated by `glubean init`.
18
18
  └── AGENTS.md # AI instructions (Codex, other agents)
19
19
  ```
20
20
 
21
- **Required:** `tests/` and `deno.json`. Everything else is recommended.
21
+ **Required:** `tests/` and `package.json`. Everything else is recommended.
22
22
 
23
23
  > **AI instructions:** Both `CLAUDE.md` and `AGENTS.md` are generated with the same content. Keep whichever your AI tool
24
24
  > reads — **Claude Code** reads `CLAUDE.md`, **Codex** reads `AGENTS.md`, **Cursor** reads both. Delete the one you
25
25
  > don't need.
26
26
 
27
- - **`tests/`** — Your permanent test files (`*.test.ts`). These are what `deno task test` and CI run. All test files
27
+ - **`tests/`** — Your permanent test files (`*.test.ts`). These are what `npm test` and CI run. All test files
28
28
  must end in `.test.ts`.
29
29
  - **`explore/`** — Same `*.test.ts` files, but for interactive exploration. Think of it as a scratchpad: quick API
30
30
  calls, debugging, prototyping. Move files to `tests/` when they're ready to be permanent. Run with
31
- `deno task explore`.
31
+ `npm run explore`.
32
32
  - **`data/`** — Shared test data files (JSON, CSV, YAML). Both `tests/` and `explore/` can import from here. Keeps test
33
33
  logic clean and data reviewable.
34
34
  - **`context/`** — API specs (OpenAPI), reference docs, and anything that helps you (or your AI) understand the API
@@ -39,19 +39,19 @@ These defaults exist because they work well with the CLI tooling and AI workflow
39
39
 
40
40
  ## Prerequisites
41
41
 
42
- 1. Install [Deno](https://deno.land) (v2+):
42
+ 1. Install [Node.js](https://nodejs.org) (v18+):
43
43
 
44
44
  ```bash
45
45
  # macOS
46
- brew install deno
46
+ brew install node
47
47
 
48
- # or see https://docs.deno.com/runtime/getting_started/installation/
48
+ # or see https://nodejs.org/en/download/
49
49
  ```
50
50
 
51
- 2. Install the Glubean CLI:
51
+ 2. Install dependencies:
52
52
 
53
53
  ```bash
54
- deno install -Ag -n glubean jsr:@glubean/cli
54
+ npm install
55
55
  ```
56
56
 
57
57
  ## Quick start
@@ -61,16 +61,16 @@ deno install -Ag -n glubean jsr:@glubean/cli
61
61
  3. Run tests:
62
62
 
63
63
  ```bash
64
- deno task test # run all tests in tests/
65
- deno task test:verbose # with detailed output
66
- deno task test:staging # run against staging environment
67
- deno task explore # run explore/ tests
64
+ npm test # run all tests in tests/
65
+ npm run test:verbose # with detailed output
66
+ npm run test:staging # run against staging environment
67
+ npm run explore # run explore/ tests
68
68
  ```
69
69
 
70
70
  Or run a specific file:
71
71
 
72
72
  ```bash
73
- glubean run tests/demo.test.ts --verbose
73
+ npx @glubean/cli run tests/demo.test.ts --verbose
74
74
  ```
75
75
 
76
76
  ## Environment switching
@@ -78,18 +78,18 @@ glubean run tests/demo.test.ts --verbose
78
78
  The same tests can run against different environments by switching env files. Each env file pairs with a secrets file
79
79
  automatically:
80
80
 
81
- | Env file | Secrets file | Task shortcut |
81
+ | Env file | Secrets file | Script shortcut |
82
82
  | -------------- | ---------------------- | ------------------------ |
83
- | `.env` | `.env.secrets` | `deno task test` |
84
- | `.env.staging` | `.env.staging.secrets` | `deno task test:staging` |
83
+ | `.env` | `.env.secrets` | `npm test` |
84
+ | `.env.staging` | `.env.staging.secrets` | `npm run test:staging` |
85
85
 
86
86
  To add more environments (e.g. production), create `.env.production` and `.env.production.secrets`, then run:
87
87
 
88
88
  ```bash
89
- glubean run --env-file .env.production
89
+ npx @glubean/cli run --env-file .env.production
90
90
  ```
91
91
 
92
- Or add a task in `deno.json`:
92
+ Or add a script in `package.json`:
93
93
 
94
94
  ```json
95
95
  "test:production": "glubean run --env-file .env.production"
@@ -146,8 +146,8 @@ Glubean also ships an MCP (Model Context Protocol) server so your AI tool can **
146
146
  {
147
147
  "mcpServers": {
148
148
  "glubean": {
149
- "command": "deno",
150
- "args": ["run", "-A", "jsr:@glubean/mcp"],
149
+ "command": "npx",
150
+ "args": ["@glubean/mcp"],
151
151
  "description": "Glubean test runner and cloud integration"
152
152
  }
153
153
  }
@@ -29,7 +29,7 @@ You are a Glubean test expert. Generate, run, and fix API tests using `@glubean/
29
29
  2. **Read existing tests** — check `tests/` and `explore/` for patterns, configure files, and naming conventions already
30
30
  in use.
31
31
  3. **Write tests** — generate test files following the SDK API and conventions below.
32
- 4. **Run tests** — use MCP tool `glubean_run_local_file` to execute. If MCP is unavailable, use `deno task test` via
32
+ 4. **Run tests** — use MCP tool `glubean_run_local_file` to execute. If MCP is unavailable, use `npm test` via
33
33
  Bash.
34
34
  5. **Fix failures** — read the structured failure output, fix the test code, and rerun. Repeat until green.
35
35
 
@@ -45,19 +45,17 @@ data/ # Test data files (JSON, CSV, YAML)
45
45
  context/ # OpenAPI specs and reference docs
46
46
  .env # Public variables (BASE_URL)
47
47
  .env.secrets # Credentials — gitignored
48
- deno.json # Runtime config, imports, glubean settings
48
+ package.json # Runtime config, dependencies, glubean settings
49
49
  ```
50
50
 
51
51
  ## Import convention
52
52
 
53
- Always use the import map alias from `deno.json`:
53
+ Always use the npm package name:
54
54
 
55
55
  ```typescript
56
56
  import { configure, fromCsv, fromDir, fromYaml, test } from "@glubean/sdk";
57
57
  ```
58
58
 
59
- Never use `jsr:` URLs directly.
60
-
61
59
  ---
62
60
 
63
61
  ## SDK API Reference
@@ -377,6 +375,6 @@ say so explicitly.
377
375
  - No tags on tests
378
376
  - Creating resources without teardown cleanup
379
377
  - Guessing endpoint paths — always check the spec first
380
- - Using `jsr:` URLs instead of `@glubean/sdk` alias
378
+ - Using hardcoded URLs instead of `@glubean/sdk` package
381
379
  - Using `any` or `unknown` for HTTP response types — always provide a type parameter: `.json<{ id: string }>()`, not
382
380
  `.json<any>()`. The SDK is fully typed; if you know the shape from the spec, type it.
@@ -112,7 +112,7 @@ export const scenarioTests = test.each(
112
112
 
113
113
  return { status: res.status };
114
114
  })
115
- // deno-lint-ignore require-await
115
+ // eslint-disable-next-line @typescript-eslint/require-await
116
116
  .step("log result", async (ctx, state, row) => {
117
117
  ctx.log(`${row.method} ${row.path} → ${state.status}`);
118
118
  });
@@ -4,7 +4,7 @@ This is a quick playground for exploring APIs with [Glubean](https://glubean.com
4
4
  request traced.
5
5
 
6
6
  ```bash
7
- deno task explore
7
+ npm run explore
8
8
  ```
9
9
 
10
10
  ## What's here
@@ -5,7 +5,7 @@
5
5
  * auto-traced so you can inspect headers, timing, and response
6
6
  * bodies in the trace viewer.
7
7
  *
8
- * Run: deno task explore
8
+ * Run: npm run explore
9
9
  */
10
10
  import { test } from "@glubean/sdk";
11
11
 
@@ -5,7 +5,7 @@
5
5
  * The trace viewer shows all three requests as a connected flow, not
6
6
  * isolated calls. That's the difference between Glubean and a REST client.
7
7
  *
8
- * Run: deno task explore
8
+ * Run: npm run explore
9
9
  */
10
10
  import { test } from "@glubean/sdk";
11
11
 
@@ -5,7 +5,7 @@
5
5
  * outcome. In VS Code, CodeLens buttons appear above the test so you can
6
6
  * click a specific example to run.
7
7
  *
8
- * Run all: deno task explore
8
+ * Run all: npm run explore
9
9
  * Pick one: glubean run explore/search.test.ts --pick by-name
10
10
  * Pick another: glubean run explore/search.test.ts --pick no-results
11
11
  */