@cleaver/breakcheck 0.2.3 → 0.2.5
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 +46 -13
- package/dist/cli/commands/help.js +10 -3
- package/dist/cli/commands/help.js.map +1 -1
- package/dist/cli/commands/snapshot.js +25 -0
- package/dist/cli/commands/snapshot.js.map +1 -1
- package/dist/cli/commands/view.js +1 -1
- package/dist/cli/commands/view.js.map +1 -1
- package/dist/cli/url-manifest.d.ts +18 -0
- package/dist/cli/url-manifest.js +63 -0
- package/dist/cli/url-manifest.js.map +1 -0
- package/dist/cli/utils.js +2 -2
- package/dist/cli/utils.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ To get meaningful comparisons, you need to tell Breakcheck what to ignore. This
|
|
|
48
48
|
|
|
49
49
|
### Syntax
|
|
50
50
|
|
|
51
|
-
Rules can be a single line for one action or a `do/end` block for multiple actions on the same element. Comments start with `--`.
|
|
51
|
+
Rules can be a single line for one action or a `do/end` block for multiple actions on the same element. Selectors use the full CSS syntax supported by Cheerio, including combinators, groups, pseudo-classes, escaped identifiers, and quoted attribute values. A selector and its `do:` or block `do` delimiter must share one physical header line; block `do` may only be followed by whitespace or a comment. Comments start with `--`.
|
|
52
52
|
|
|
53
53
|
**Single Action:**
|
|
54
54
|
|
|
@@ -80,6 +80,8 @@ end
|
|
|
80
80
|
- `replace:"<replacement>"`: The string to replace matches with. Can use capture groups like `$1`.
|
|
81
81
|
- `content_regex:"<pattern>"`: Applies the action only if the element's text content matches the regex.
|
|
82
82
|
|
|
83
|
+
Modifier values are always double-quoted. Use `\"` for a quote and `\\` for a literal backslash; regex escapes such as `\d`, `\w`, and `\?` remain intact. Rules are validated eagerly, before HTML processing. `include` is intentionally a compatibility no-op. Content rewrites preserve nested markup and apply independently to each descendant text node, so matches never span element boundaries.
|
|
84
|
+
|
|
83
85
|
### Rules Example (`rules.breakcheck`)
|
|
84
86
|
|
|
85
87
|
Here is an example rules file that demonstrates how to handle common dynamic content:
|
|
@@ -131,10 +133,36 @@ breakcheck snapshot [options]
|
|
|
131
133
|
| `-i, --include <patterns...>` | Glob patterns for URLs to include. | |
|
|
132
134
|
| `-e, --exclude <patterns...>` | Glob patterns for URLs to exclude. | |
|
|
133
135
|
| `-t, --type <type>` | The crawler to use (`cheerio` or `playwright`). | `cheerio` |
|
|
136
|
+
| `--url-file <path>` | Crawl exactly the root-relative paths in a file, or `-` for stdin. | |
|
|
134
137
|
| `-w, --write-urls <path>` | Generate a plain text file of all crawled URLs at the specified path. | |
|
|
135
138
|
| `--json-logs` | Output logs in JSON format (useful for automation). | |
|
|
136
139
|
| `--no-json-logs` | Output logs in pretty format (default, user-friendly). | |
|
|
137
140
|
|
|
141
|
+
#### Exact URL manifests
|
|
142
|
+
|
|
143
|
+
`--url-file` changes snapshotting to exact-manifest mode. The required
|
|
144
|
+
`--url` provides the origin for the paths, and only the listed paths are
|
|
145
|
+
requested. The base path `/` is not implicit, and links found in responses are
|
|
146
|
+
not followed. `--include` and `--exclude` are not valid with this option.
|
|
147
|
+
|
|
148
|
+
The file is newline-delimited. Blank lines and lines whose first non-whitespace
|
|
149
|
+
character is `#` are ignored. Every remaining entry must be a root-relative
|
|
150
|
+
path beginning with exactly one `/`, such as `/about` or
|
|
151
|
+
`/blog/post?preview=1`. Absolute URLs, relative paths, and scheme-relative
|
|
152
|
+
paths such as `//other.example/path` are rejected. Duplicate canonical paths
|
|
153
|
+
are requested once, in first-seen order. All invalid entries are reported with
|
|
154
|
+
source line numbers and the snapshot does not start if any entry is invalid.
|
|
155
|
+
|
|
156
|
+
Pass `-` as the value to read from stdin:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
generate-url-list | breakcheck snapshot --url https://example.com \
|
|
160
|
+
--name selected --url-file -
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The file produced by `--write-urls` is compatible with `--url-file` and can be
|
|
164
|
+
edited before the next snapshot.
|
|
165
|
+
|
|
138
166
|
### `compare`
|
|
139
167
|
|
|
140
168
|
Compares two snapshots, applies rules, and saves the results.
|
|
@@ -143,14 +171,14 @@ Compares two snapshots, applies rules, and saves the results.
|
|
|
143
171
|
breakcheck compare [options]
|
|
144
172
|
```
|
|
145
173
|
|
|
146
|
-
| Option
|
|
147
|
-
|
|
|
148
|
-
| `-b, --before <name>`
|
|
149
|
-
| `-a, --after <name>`
|
|
150
|
-
| `-o, --output <name>`
|
|
151
|
-
| `-r, --rules <directory>`
|
|
152
|
-
| `--json-logs`
|
|
153
|
-
| `--no-json-logs`
|
|
174
|
+
| Option | Description | Default |
|
|
175
|
+
| :------------------------ | :-------------------------------------------------------------------------------------------------------------- | :--------------------------- |
|
|
176
|
+
| `-b, --before <name>` | **(Required)** The name of the "before" snapshot. | |
|
|
177
|
+
| `-a, --after <name>` | **(Required)** The name of the "after" snapshot. | |
|
|
178
|
+
| `-o, --output <name>` | A name for the comparison output directory. | `compare_default` |
|
|
179
|
+
| `-r, --rules <directory>` | Directory containing `rules.breakcheck`; relative paths resolve from the directory where Breakcheck is invoked. | None (unfiltered comparison) |
|
|
180
|
+
| `--json-logs` | Output logs in JSON format (useful for automation). | |
|
|
181
|
+
| `--no-json-logs` | Output logs in pretty format (default, user-friendly). | |
|
|
154
182
|
|
|
155
183
|
### `view`
|
|
156
184
|
|
|
@@ -164,11 +192,11 @@ breakcheck view [comparison-name] [options]
|
|
|
164
192
|
| :---------------- | :---------------------------------- | :---------------- |
|
|
165
193
|
| `comparison-name` | The name of the comparison to view. | `compare_default` |
|
|
166
194
|
|
|
167
|
-
| Option | Description
|
|
168
|
-
| :-------------------- |
|
|
195
|
+
| Option | Description | Default |
|
|
196
|
+
| :-------------------- | :------------------------------------------------------------------------------------------------- | :---------------------- |
|
|
169
197
|
| `-p, --port <number>` | The port to run the view server on. When omitted, starts at 8080 and uses the next available port. | `8080` (next available) |
|
|
170
|
-
| `--json-logs` | Output logs in JSON format (useful for automation).
|
|
171
|
-
| `--no-json-logs` | Output logs in pretty format (default, user-friendly).
|
|
198
|
+
| `--json-logs` | Output logs in JSON format (useful for automation). | |
|
|
199
|
+
| `--no-json-logs` | Output logs in pretty format (default, user-friendly). | |
|
|
172
200
|
|
|
173
201
|
### `list-snapshots`
|
|
174
202
|
|
|
@@ -222,6 +250,11 @@ All commands support these logging options:
|
|
|
222
250
|
| `--json-logs` | Output logs in JSON format (useful for automation) | |
|
|
223
251
|
| `--no-json-logs` | Output logs in pretty format (user-friendly) | ✓ |
|
|
224
252
|
|
|
253
|
+
Snapshot crawler lifecycle and error messages use the same logger as Breakcheck's
|
|
254
|
+
command messages. This means `--json-logs` also produces structured JSON for
|
|
255
|
+
Crawlee records, including a `component` field such as `CheerioCrawler`; the
|
|
256
|
+
default pretty output includes timestamps for both sources.
|
|
257
|
+
|
|
225
258
|
### Use Cases
|
|
226
259
|
|
|
227
260
|
- **Interactive use**: Use the default pretty logging for easy reading during development and testing
|
|
@@ -46,7 +46,7 @@ function showGeneralHelp(logger) {
|
|
|
46
46
|
logger.info(" 2. ⚙️ Make your changes (deploy, migrate, etc.)");
|
|
47
47
|
logger.info(" 3. 📸 Take an 'after' snapshot: breakcheck snapshot --url <url> --name <name>");
|
|
48
48
|
logger.info(" 4. 🔍 Compare the snapshots: breakcheck compare --before <name> --after <name>");
|
|
49
|
-
logger.info(" 5.
|
|
49
|
+
logger.info(" 5. 📜️ View the results: breakcheck view <comparison-name>");
|
|
50
50
|
logger.info("");
|
|
51
51
|
logger.info("Available Commands:");
|
|
52
52
|
logger.info(" snapshot Create a snapshot of a website");
|
|
@@ -86,6 +86,7 @@ function showSnapshotHelp(logger) {
|
|
|
86
86
|
logger.info(" -i, --include <patterns...> Glob patterns for URLs to include");
|
|
87
87
|
logger.info(" -e, --exclude <patterns...> Glob patterns for URLs to exclude");
|
|
88
88
|
logger.info(" -t, --type <type> The crawler to use: cheerio or playwright (default: cheerio)");
|
|
89
|
+
logger.info(" --url-file <path> Crawl exactly paths from a file, or '-' for stdin");
|
|
89
90
|
logger.info(" -w, --write-urls <path> Generate a plain text file of all crawled URLs");
|
|
90
91
|
logger.info(" --json-logs Output logs in JSON format");
|
|
91
92
|
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
@@ -106,6 +107,12 @@ function showSnapshotHelp(logger) {
|
|
|
106
107
|
logger.info(" # Generate a URL list file");
|
|
107
108
|
logger.info(" breakcheck snapshot --url https://my-website.com --write-urls ./crawled-urls.txt");
|
|
108
109
|
logger.info("");
|
|
110
|
+
logger.info(" # Crawl only paths from a manifest file");
|
|
111
|
+
logger.info(" breakcheck snapshot --url https://my-website.com --url-file ./urls.txt");
|
|
112
|
+
logger.info("");
|
|
113
|
+
logger.info(" # Stream a generated manifest through stdin");
|
|
114
|
+
logger.info(" generate-url-list | breakcheck snapshot --url https://my-website.com --url-file -");
|
|
115
|
+
logger.info("");
|
|
109
116
|
logger.info(" # Use JSON logging for automation");
|
|
110
117
|
logger.info(" breakcheck snapshot --url https://my-website.com --json-logs");
|
|
111
118
|
}
|
|
@@ -150,7 +157,7 @@ function showCompareHelp(logger) {
|
|
|
150
157
|
logger.info(' css:.timestamp do: rewrite_content regex:"\\d{2}/\\d{2}/\\d{4}" replace:"DATE_STAMP"');
|
|
151
158
|
}
|
|
152
159
|
function showViewHelp(logger) {
|
|
153
|
-
logger.info("
|
|
160
|
+
logger.info("📺️ VIEW COMMAND");
|
|
154
161
|
logger.info("===============");
|
|
155
162
|
logger.info("");
|
|
156
163
|
logger.info("Starts a local web server to display the results of a comparison in a user-friendly interface.");
|
|
@@ -186,7 +193,7 @@ function showViewHelp(logger) {
|
|
|
186
193
|
logger.info(" 4. Press Ctrl+C to stop the server");
|
|
187
194
|
}
|
|
188
195
|
function showListSnapshotsHelp(logger) {
|
|
189
|
-
logger.info("
|
|
196
|
+
logger.info("📜️ LIST-SNAPSHOTS COMMAND");
|
|
190
197
|
logger.info("=========================");
|
|
191
198
|
logger.info("");
|
|
192
199
|
logger.info("Lists all snapshots that have been saved locally.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC;KACtD,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,oCAAoC;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAe,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,QAAQ,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YAClC,KAAK,UAAU;gBACb,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,SAAS;gBACZ,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,MAAM;gBACT,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,gBAAgB,CAAC;YACtB,KAAK,KAAK;gBACR,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CACT,6DAA6D,CAC9D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,eAAe,CAAC,MAAW;IAClC,MAAM,CAAC,IAAI,CACT,2EAA2E,CAC5E,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CACT,iFAAiF,CAClF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CACT,iFAAiF,CAClF,CAAC;IACF,MAAM,CAAC,IAAI,CACT,kFAAkF,CACnF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createSnapshotFromConfig } from "@cleaver/breakcheck-core";
|
|
2
2
|
import { InteractiveCommand } from "interactive-commander";
|
|
3
|
+
import { parseUrlManifest, readUrlManifest } from "../url-manifest.js";
|
|
3
4
|
import { configureLogger } from "../utils.js";
|
|
4
5
|
export const snapshotCommand = new InteractiveCommand("snapshot")
|
|
5
6
|
.description("Create a snapshot of a website")
|
|
@@ -11,12 +12,25 @@ export const snapshotCommand = new InteractiveCommand("snapshot")
|
|
|
11
12
|
.option("-e, --exclude <patterns...>", "URL patterns to exclude")
|
|
12
13
|
.option("-t, --type <type>", "Crawler type (cheerio or playwright)", "cheerio")
|
|
13
14
|
.option("-w, --write-urls <path>", "Generate a URL list file at the specified path")
|
|
15
|
+
.option("--url-file <path>", "Read an exact root-relative URL manifest from a file, or '-' for stdin")
|
|
14
16
|
.option("--json-logs", "Output logs in JSON format")
|
|
15
17
|
.option("--no-json-logs", "Output logs in pretty format (default)")
|
|
16
18
|
.action(async (options) => {
|
|
17
19
|
// Configure logger based on options
|
|
18
20
|
const logger = configureLogger(options);
|
|
19
21
|
try {
|
|
22
|
+
let urlPaths;
|
|
23
|
+
if (options.urlFile !== undefined) {
|
|
24
|
+
if (options.include || options.exclude) {
|
|
25
|
+
throw new Error("--include and --exclude cannot be used with --url-file because the manifest is exact");
|
|
26
|
+
}
|
|
27
|
+
const source = options.urlFile === "-" ? "stdin" : options.urlFile;
|
|
28
|
+
const manifest = parseUrlManifest(await readUrlManifest(options.urlFile), options.url, source);
|
|
29
|
+
if (manifest.issues.length > 0) {
|
|
30
|
+
throw new Error(formatManifestIssues(manifest.issues));
|
|
31
|
+
}
|
|
32
|
+
urlPaths = manifest.paths;
|
|
33
|
+
}
|
|
20
34
|
// Map CLI options to SnapshotConfig
|
|
21
35
|
const config = {
|
|
22
36
|
baseUrl: options.url,
|
|
@@ -34,6 +48,7 @@ export const snapshotCommand = new InteractiveCommand("snapshot")
|
|
|
34
48
|
includePatterns: options.include,
|
|
35
49
|
excludePatterns: options.exclude,
|
|
36
50
|
},
|
|
51
|
+
urlPaths,
|
|
37
52
|
urlListPath: options.writeUrls,
|
|
38
53
|
};
|
|
39
54
|
// Call API to create snapshot
|
|
@@ -65,4 +80,14 @@ export const snapshotCommand = new InteractiveCommand("snapshot")
|
|
|
65
80
|
process.exit(1);
|
|
66
81
|
}
|
|
67
82
|
});
|
|
83
|
+
function formatManifestIssues(issues) {
|
|
84
|
+
return issues
|
|
85
|
+
.map((issue) => {
|
|
86
|
+
if (issue.type === "entry") {
|
|
87
|
+
return `${issue.source}:${issue.line}: ${issue.message} (${issue.value})`;
|
|
88
|
+
}
|
|
89
|
+
return `${issue.source}: ${issue.message}`;
|
|
90
|
+
})
|
|
91
|
+
.join("\n");
|
|
92
|
+
}
|
|
68
93
|
//# sourceMappingURL=snapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/cli/commands/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/cli/commands/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ export const viewCommand = new InteractiveCommand("view")
|
|
|
40
40
|
logger.info(`🔍 Viewing comparison: ${comparisonName}`);
|
|
41
41
|
const requestedPort = options.port === undefined ? undefined : parseInt(options.port, 10);
|
|
42
42
|
if (requestedPort !== undefined &&
|
|
43
|
-
(isNaN(requestedPort) || requestedPort
|
|
43
|
+
(isNaN(requestedPort) || requestedPort < 1024 || requestedPort > 65535)) {
|
|
44
44
|
logger.error("Port must be a number between 1024 and 65535");
|
|
45
45
|
process.exit(1);
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,cAAsB,EACtB,aAAiC;IAEjC,IAAI,IAAI,GAAG,aAAa,IAAI,iBAAiB,CAAC;IAE9C,OAAO,IAAI,IAAI,aAAa,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,MAAM,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mCAAmC,iBAAiB,QAAQ,aAAa,GAAG,CAC7E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC;KACtD,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CACP,mBAAmB,EACnB,gCAAgC,EAChC,iBAAiB,CAClB;KACA,MAAM,CACL,qBAAqB,EACrB,gFAAgF,CACjF;KACA,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE;IACxC,oCAAoC;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC;QACxD,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEtE,IACE,aAAa,KAAK,SAAS;YAC3B,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
export type UrlManifestIssue = {
|
|
3
|
+
type: "manifest";
|
|
4
|
+
source: string;
|
|
5
|
+
message: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: "entry";
|
|
8
|
+
source: string;
|
|
9
|
+
line: number;
|
|
10
|
+
value: string;
|
|
11
|
+
message: string;
|
|
12
|
+
};
|
|
13
|
+
export interface UrlManifestParseResult {
|
|
14
|
+
paths: string[];
|
|
15
|
+
issues: UrlManifestIssue[];
|
|
16
|
+
}
|
|
17
|
+
export declare function readUrlManifest(source: string, stdin?: Readable): Promise<string>;
|
|
18
|
+
export declare function parseUrlManifest(content: string, baseUrl: string, source: string): UrlManifestParseResult;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { resolveUrlPaths } from "@cleaver/breakcheck-core";
|
|
3
|
+
export async function readUrlManifest(source, stdin = process.stdin) {
|
|
4
|
+
try {
|
|
5
|
+
if (source !== "-") {
|
|
6
|
+
return await readFile(source, "utf8");
|
|
7
|
+
}
|
|
8
|
+
stdin.setEncoding("utf8");
|
|
9
|
+
const chunks = [];
|
|
10
|
+
const input = stdin;
|
|
11
|
+
for await (const chunk of input) {
|
|
12
|
+
if (typeof chunk === "string") {
|
|
13
|
+
chunks.push(chunk);
|
|
14
|
+
}
|
|
15
|
+
else if (chunk instanceof Uint8Array) {
|
|
16
|
+
chunks.push(Buffer.from(chunk).toString("utf8"));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new Error("stdin produced a non-text chunk");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return chunks.join("");
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const sourceLabel = source === "-" ? "stdin" : source;
|
|
26
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
27
|
+
throw new Error(`Unable to read URL manifest from ${sourceLabel}: ${message}`, {
|
|
28
|
+
cause: error,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function parseUrlManifest(content, baseUrl, source) {
|
|
33
|
+
const entries = content
|
|
34
|
+
.split(/\r?\n/)
|
|
35
|
+
.map((line, index) => ({ line: index + 1, value: line.trim() }))
|
|
36
|
+
.filter(({ value }) => value !== "" && !value.startsWith("#"));
|
|
37
|
+
const resolution = resolveUrlPaths(baseUrl, entries.map(({ value }) => value));
|
|
38
|
+
const issues = resolution.issues.map((issue) => toManifestIssue(issue, entries, source));
|
|
39
|
+
return {
|
|
40
|
+
paths: resolution.paths,
|
|
41
|
+
issues,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function toManifestIssue(issue, entries, source) {
|
|
45
|
+
if (issue.type === "entry") {
|
|
46
|
+
const entry = entries[issue.index];
|
|
47
|
+
return {
|
|
48
|
+
type: "entry",
|
|
49
|
+
source,
|
|
50
|
+
line: entry?.line ?? issue.index + 1,
|
|
51
|
+
value: entry?.value ?? issue.value,
|
|
52
|
+
message: issue.message,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
type: "manifest",
|
|
57
|
+
source,
|
|
58
|
+
message: issue.type === "base"
|
|
59
|
+
? `${issue.message}: ${issue.value}`
|
|
60
|
+
: issue.message,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=url-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-manifest.js","sourceRoot":"","sources":["../../src/cli/url-manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { configureLogger as configureCoreLogger, logger, } from "@cleaver/breakcheck-core";
|
|
2
2
|
// Global logger instance that can be reconfigured
|
|
3
3
|
let cliLogger = logger;
|
|
4
4
|
/**
|
|
@@ -9,7 +9,7 @@ export function configureLogger(options) {
|
|
|
9
9
|
// --json-logs takes precedence over --no-json-logs
|
|
10
10
|
const useJsonLogs = options.jsonLogs || false;
|
|
11
11
|
// Create a new logger instance with the specified configuration
|
|
12
|
-
cliLogger =
|
|
12
|
+
cliLogger = configureCoreLogger({ useJsonLogs });
|
|
13
13
|
return cliLogger;
|
|
14
14
|
}
|
|
15
15
|
/**
|
package/dist/cli/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,IAAI,mBAAmB,EACtC,MAAM,GACP,MAAM,0BAA0B,CAAC;AAElC,kDAAkD;AAClD,IAAI,SAAS,GAAG,MAAM,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAG/B;IACC,uCAAuC;IACvC,mDAAmD;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAE9C,gEAAgE;IAChE,SAAS,GAAG,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAEjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleaver/breakcheck",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"start:test-server:after": "node src/__test_server__/server-after.js"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@cleaver/breakcheck-core": "^0.2.
|
|
31
|
+
"@cleaver/breakcheck-core": "^0.2.5",
|
|
32
32
|
"commander": "^12.1.0",
|
|
33
33
|
"ejs": "^3.1.10",
|
|
34
34
|
"express": "^4.22.2",
|