@ia-qa/self-healing 1.3.4 → 1.4.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/README.md +53 -2
- package/TUTORIAL.md +31 -0
- package/dist/browser/discover.d.ts +28 -0
- package/dist/browser/discover.js +107 -0
- package/dist/browser/discover.js.map +1 -0
- package/dist/cli/baseline.js +13 -9
- package/dist/cli/baseline.js.map +1 -1
- package/dist/cli/diff.js +14 -1
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/discover.d.ts +17 -0
- package/dist/cli/discover.js +179 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/index.js +17 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/map.d.ts +1 -0
- package/dist/cli/map.js +12 -0
- package/dist/cli/map.js.map +1 -1
- package/dist/cli/run.js +12 -2
- package/dist/cli/run.js.map +1 -1
- package/dist/crawl.d.ts +44 -0
- package/dist/crawl.js +131 -0
- package/dist/crawl.js.map +1 -0
- package/dist/discovery/safety.d.ts +99 -0
- package/dist/discovery/safety.js +151 -0
- package/dist/discovery/safety.js.map +1 -0
- package/dist/discovery/sitemap.d.ts +69 -0
- package/dist/discovery/sitemap.js +144 -0
- package/dist/discovery/sitemap.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDiscover = runDiscover;
|
|
4
|
+
const config_1 = require("../config");
|
|
5
|
+
const safety_1 = require("../discovery/safety");
|
|
6
|
+
const sitemap_1 = require("../discovery/sitemap");
|
|
7
|
+
const crawl_1 = require("../crawl");
|
|
8
|
+
/**
|
|
9
|
+
* `ia-qa-heal discover` — propose pages to add to `config.pages`, never map them.
|
|
10
|
+
*
|
|
11
|
+
* Two sources, same output: candidate `{ name, url }` pairs printed for a human to
|
|
12
|
+
* confirm. It is the front door to `map` (which needs the pages listed first), and
|
|
13
|
+
* it holds the same line every other write in this package holds — it *suggests*,
|
|
14
|
+
* and only `--apply` writes, exactly like `ia-qa-heal-ai suggest`. Default is a
|
|
15
|
+
* dry run: discovery is a proposal, not a source of truth for what the app is.
|
|
16
|
+
*
|
|
17
|
+
* --sitemap [url] Read sitemap.xml (default source). Pure HTTP, no browser.
|
|
18
|
+
* --crawl Follow links from inside the logged-in app (needs a browser).
|
|
19
|
+
* --no-reveal Crawl links only; do not open menus/dropdowns to find more.
|
|
20
|
+
* --apply Append the new pages to .ia-qa/config.json (else print only).
|
|
21
|
+
* --max <n> Cap candidates per source. Default 200 (sitemap) / 60 (crawl).
|
|
22
|
+
* --depth <n> Crawl link-depth from the start pages. Default 2.
|
|
23
|
+
*/
|
|
24
|
+
async function runDiscover(args) {
|
|
25
|
+
const opts = parseArgs(args);
|
|
26
|
+
const config = (0, config_1.loadConfig)();
|
|
27
|
+
// Neither flag ⇒ the safe default: read the sitemap, touch nothing.
|
|
28
|
+
const doSitemap = opts.sitemap || (!opts.sitemap && !opts.crawl);
|
|
29
|
+
const doCrawl = opts.crawl;
|
|
30
|
+
const candidates = [];
|
|
31
|
+
if (doSitemap) {
|
|
32
|
+
console.log('🔎 Reading sitemap…');
|
|
33
|
+
const { candidates: found, stats } = await (0, sitemap_1.discoverFromSitemap)(config.baseUrl, {
|
|
34
|
+
sitemapUrl: opts.sitemapUrl,
|
|
35
|
+
maxUrls: opts.max,
|
|
36
|
+
strictHost: opts.strictHost,
|
|
37
|
+
});
|
|
38
|
+
// Say nothing on the happy path — the coverage summary below carries the count.
|
|
39
|
+
// Only speak up for the two things a user must act on: a host mismatch (the
|
|
40
|
+
// reported bug — never a silent "0"), or an empty result and why.
|
|
41
|
+
if (stats.skippedHost > 0) {
|
|
42
|
+
warnHostSkip(stats.skippedHost, stats.otherHosts, config.baseUrl, opts.strictHost);
|
|
43
|
+
}
|
|
44
|
+
else if (found.length === 0) {
|
|
45
|
+
console.log(stats.parsed === 0
|
|
46
|
+
? ' No sitemap found (tried /sitemap.xml and robots.txt).'
|
|
47
|
+
: ` The sitemap listed ${stats.parsed} URL${stats.parsed === 1 ? '' : 's'}, but none map to a page here (downloads, actions or duplicates).`);
|
|
48
|
+
}
|
|
49
|
+
candidates.push(...found);
|
|
50
|
+
}
|
|
51
|
+
if (doCrawl) {
|
|
52
|
+
console.log(`🕷 Crawling from ${config.baseUrl}${opts.reveal ? ' (opening menus to reveal hidden links)' : ' (links only)'}…`);
|
|
53
|
+
const found = await (0, crawl_1.crawlApp)(config, {
|
|
54
|
+
maxDepth: opts.depth,
|
|
55
|
+
maxPages: opts.max,
|
|
56
|
+
reveal: opts.reveal,
|
|
57
|
+
strictHost: opts.strictHost,
|
|
58
|
+
// Sitemap hits seed the crawl frontier when both run together.
|
|
59
|
+
seeds: candidates.filter((c) => c.source === 'sitemap').map((c) => c.url),
|
|
60
|
+
onVisit: (url, n) => console.log(` visited ${url} (${n} link${n === 1 ? '' : 's'})`),
|
|
61
|
+
});
|
|
62
|
+
console.log(` ${found.length} page${found.length === 1 ? '' : 's'} reachable by crawling.`);
|
|
63
|
+
candidates.push(...found);
|
|
64
|
+
}
|
|
65
|
+
const added = (0, safety_1.mergePages)(config.pages, candidates, config.baseUrl);
|
|
66
|
+
// The whole surface discovery could see, deduped across both sources by path.
|
|
67
|
+
const discovered = new Set(candidates.map((c) => (0, safety_1.normalizedPath)(c.url, config.baseUrl))).size;
|
|
68
|
+
reportCoverage(discovered, added);
|
|
69
|
+
if (added.length === 0)
|
|
70
|
+
return;
|
|
71
|
+
if (opts.apply) {
|
|
72
|
+
const pages = [...config.pages, ...added.map((c) => ({ name: c.name, url: c.url }))];
|
|
73
|
+
const file = (0, config_1.saveConfig)({ ...config, pages });
|
|
74
|
+
console.log(`\n✅ Added ${added.length} page${added.length === 1 ? '' : 's'} to config.pages → ${file}`);
|
|
75
|
+
console.log(' Next: `ia-qa-heal map` to capture their contracts.');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log('\nRun again with --apply to add the uncovered pages to config.pages.');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The point of the whole verb: not "here are some URLs", but "here is how much of
|
|
83
|
+
* your app you are NOT covering". `map` only ever sees `config.pages`; a live suite
|
|
84
|
+
* (capture) only sees what it visits; the app overview only sees links out of pages
|
|
85
|
+
* already mapped. Every one of those has the same blind spot — pages you don't
|
|
86
|
+
* already touch. Discovery is the only source that sees the whole declared surface,
|
|
87
|
+
* so the summary leads with the gap, and the list is the actionable part: the pages
|
|
88
|
+
* to add before `map` can cover them.
|
|
89
|
+
*/
|
|
90
|
+
function reportCoverage(discovered, uncovered) {
|
|
91
|
+
if (discovered === 0)
|
|
92
|
+
return; // nothing found — the source block already said why
|
|
93
|
+
const mapped = discovered - uncovered.length;
|
|
94
|
+
if (uncovered.length === 0) {
|
|
95
|
+
console.log(`\n🗺 Coverage — all ${discovered} discovered page${discovered === 1 ? '' : 's'} already in config.pages ✅`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
console.log(`\n🗺 Coverage — ${mapped} of ${discovered} discovered pages in config.pages · ` +
|
|
99
|
+
`${uncovered.length} not yet covered:`);
|
|
100
|
+
const nameW = Math.max(4, ...uncovered.map((c) => c.name.length));
|
|
101
|
+
console.log(`\n ${'name'.padEnd(nameW)} url (source)`);
|
|
102
|
+
for (const c of uncovered) {
|
|
103
|
+
console.log(` ${c.name.padEnd(nameW)} ${c.url} (${c.source})`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Name the host mismatch and the way out. This is the whole point of the fix: the
|
|
108
|
+
* old code dropped every off-host URL and printed "0 URLs", so an apex `baseUrl`
|
|
109
|
+
* against a `www.` sitemap looked like an empty sitemap. Here we say which host the
|
|
110
|
+
* URLs were on, which host `baseUrl` is, and — depending on whether normalization is
|
|
111
|
+
* already on — how to reconcile them.
|
|
112
|
+
*/
|
|
113
|
+
function warnHostSkip(count, otherHosts, baseUrl, strictHost) {
|
|
114
|
+
let baseHost = baseUrl;
|
|
115
|
+
try {
|
|
116
|
+
baseHost = new URL(baseUrl).host;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
/* keep the raw string */
|
|
120
|
+
}
|
|
121
|
+
const on = otherHosts.length > 0 ? `on ${otherHosts.map((h) => `"${h}"`).join(', ')}` : 'on a different host';
|
|
122
|
+
console.warn(` ⚠ ${count} sitemap URL${count === 1 ? '' : 's'} ${on}, not baseUrl's host "${baseHost}" — skipped.`);
|
|
123
|
+
if (strictHost) {
|
|
124
|
+
// The classic apex/www case, now behind the opt-out the user chose.
|
|
125
|
+
console.warn(` If it is the same site, drop --strict-host (www./apex are then one site), ` +
|
|
126
|
+
`or set baseUrl to that host.`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Normalization is already on, so this is a genuinely different host.
|
|
130
|
+
console.warn(` That is a different site, not a www./apex variant. If you meant to include it, ` +
|
|
131
|
+
`set baseUrl to match it (discovery stores relative paths, so pick the host map should load).`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function parseArgs(args) {
|
|
135
|
+
const opts = { sitemap: false, crawl: false, reveal: true, apply: false, strictHost: false };
|
|
136
|
+
for (let i = 0; i < args.length; i++) {
|
|
137
|
+
const a = args[i];
|
|
138
|
+
switch (a) {
|
|
139
|
+
case '--sitemap': {
|
|
140
|
+
opts.sitemap = true;
|
|
141
|
+
const next = args[i + 1];
|
|
142
|
+
if (next && !next.startsWith('-')) {
|
|
143
|
+
opts.sitemapUrl = next;
|
|
144
|
+
i++;
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case '--crawl':
|
|
149
|
+
opts.crawl = true;
|
|
150
|
+
break;
|
|
151
|
+
case '--no-reveal':
|
|
152
|
+
opts.reveal = false;
|
|
153
|
+
break;
|
|
154
|
+
case '--strict-host':
|
|
155
|
+
opts.strictHost = true;
|
|
156
|
+
break;
|
|
157
|
+
case '--apply':
|
|
158
|
+
opts.apply = true;
|
|
159
|
+
break;
|
|
160
|
+
case '--max':
|
|
161
|
+
opts.max = requireInt(a, args[++i]);
|
|
162
|
+
break;
|
|
163
|
+
case '--depth':
|
|
164
|
+
opts.depth = requireInt(a, args[++i]);
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
throw new Error(`Unknown option "${a}" for \`discover\`. See \`ia-qa-heal help\`.`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return opts;
|
|
171
|
+
}
|
|
172
|
+
function requireInt(flag, value) {
|
|
173
|
+
const n = Number(value);
|
|
174
|
+
if (!value || !Number.isInteger(n) || n <= 0) {
|
|
175
|
+
throw new Error(`${flag} needs a positive integer, got "${value ?? ''}".`);
|
|
176
|
+
}
|
|
177
|
+
return n;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const diff_1 = require("./diff");
|
|
|
9
9
|
const fix_1 = require("./fix");
|
|
10
10
|
const ingest_1 = require("./ingest");
|
|
11
11
|
const run_1 = require("./run");
|
|
12
|
+
const discover_1 = require("./discover");
|
|
12
13
|
// dist/cli/ → package root; npm ships package.json in every tarball.
|
|
13
14
|
const VERSION = require('../../package.json').version;
|
|
14
15
|
const HELP = `ia-qa-heal — self-healing E2E toolkit (MVP)
|
|
@@ -23,6 +24,19 @@ of \`init\` (see the wizard's non-TTY guidance).
|
|
|
23
24
|
|
|
24
25
|
Usage:
|
|
25
26
|
ia-qa-heal init Interactive setup wizard (writes .ia-qa/config.json)
|
|
27
|
+
ia-qa-heal discover Propose pages for config.pages — never maps, only suggests
|
|
28
|
+
--sitemap [url] read sitemap.xml (default source; pure HTTP,
|
|
29
|
+
no browser). Falls back to robots.txt.
|
|
30
|
+
--crawl follow links from inside the logged-in app
|
|
31
|
+
(needs a browser; reuses config.auth). Ultra-safe:
|
|
32
|
+
same-origin GET only, never visits logout/delete/
|
|
33
|
+
pay… URLs, opens menus/dropdowns to reveal hidden
|
|
34
|
+
links but performs no action, presses Escape to close
|
|
35
|
+
--no-reveal crawl links only; do not open any menu/dropdown
|
|
36
|
+
--depth <n> crawl link-depth from the start pages (default 2)
|
|
37
|
+
--max <n> cap candidates per source
|
|
38
|
+
--strict-host treat www. and apex as different hosts (default: one site)
|
|
39
|
+
--apply append the new pages to config.json (else print only)
|
|
26
40
|
ia-qa-heal map [page] Map configured pages → .ia-qa/mapping/<page>.json + .md
|
|
27
41
|
Also rebuilds _overview.md (the app index) and
|
|
28
42
|
_navigation.md/.svg (the nav graph, when there is
|
|
@@ -113,6 +127,9 @@ async function main() {
|
|
|
113
127
|
case 'init':
|
|
114
128
|
await (0, init_1.runInit)();
|
|
115
129
|
break;
|
|
130
|
+
case 'discover':
|
|
131
|
+
await (0, discover_1.runDiscover)(rest);
|
|
132
|
+
break;
|
|
116
133
|
case 'map':
|
|
117
134
|
await (0, map_1.runMap)(arg);
|
|
118
135
|
break;
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,sCAAuC;AACvC,iCAAiC;AACjC,+BAA+B;AAC/B,yCAAyC;AACzC,iCAAiC;AACjC,+BAA+B;AAC/B,qCAAqC;AACrC,+BAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,sCAAuC;AACvC,iCAAiC;AACjC,+BAA+B;AAC/B,yCAAyC;AACzC,iCAAiC;AACjC,+BAA+B;AAC/B,qCAAqC;AACrC,+BAA+B;AAC/B,yCAAyC;AAEzC,qEAAqE;AACrE,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAiB,CAAC;AAEhE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEZ,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,GAAuB,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YACD,GAAG,GAAG,IAAI,CAAC;YACX,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACxE,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAA,cAAO,GAAE,CAAC;YAChB,MAAM;QACR,KAAK,UAAU;YACb,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,KAAK;YACR,MAAM,IAAA,YAAM,EAAC,GAAG,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,UAAU;YACb,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;YACpB,MAAM;QACR,KAAK,KAAK;YACR,MAAM,IAAA,YAAM,EAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,KAAK;YACR,MAAM,IAAA,YAAM,EAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,SAAS,IAAI,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/cli/map.d.ts
CHANGED
|
@@ -61,3 +61,4 @@ export declare function samePath(a: string, b: string): boolean;
|
|
|
61
61
|
* teach less than one.
|
|
62
62
|
*/
|
|
63
63
|
export declare function assertLanded(page: Page, target: PageTarget, wanted: string, config: IaQaConfig): Promise<void>;
|
|
64
|
+
export declare function login(page: Page, config: IaQaConfig): Promise<void>;
|
package/dist/cli/map.js
CHANGED
|
@@ -38,6 +38,7 @@ exports.runSteps = runSteps;
|
|
|
38
38
|
exports.suggestAuthBlock = suggestAuthBlock;
|
|
39
39
|
exports.samePath = samePath;
|
|
40
40
|
exports.assertLanded = assertLanded;
|
|
41
|
+
exports.login = login;
|
|
41
42
|
const path = __importStar(require("path"));
|
|
42
43
|
const launcher_1 = require("../launcher");
|
|
43
44
|
const config_1 = require("../config");
|
|
@@ -59,6 +60,10 @@ const overview_1 = require("../overview");
|
|
|
59
60
|
*/
|
|
60
61
|
async function runMap(pageNameArg) {
|
|
61
62
|
const config = (0, config_1.loadConfig)();
|
|
63
|
+
if (config.pages.length === 0 && !pageNameArg) {
|
|
64
|
+
throw new Error('No pages configured — nothing to map.\n' +
|
|
65
|
+
' Add pages to .ia-qa/config.json, or pass a page name: ia-qa-heal map <name>');
|
|
66
|
+
}
|
|
62
67
|
const targets = pageNameArg
|
|
63
68
|
? config.pages.filter((p) => p.name === pageNameArg)
|
|
64
69
|
: config.pages;
|
|
@@ -133,6 +138,13 @@ async function runMap(pageNameArg) {
|
|
|
133
138
|
}
|
|
134
139
|
// Last: the index. Rebuilt from disk, so `map <page>` also leaves it accurate.
|
|
135
140
|
writeAppOverview(config);
|
|
141
|
+
// Quick reference: page → URL so the user never has to guess which file is which
|
|
142
|
+
if (!pageNameArg && config.pages.length > 0) {
|
|
143
|
+
console.log('\n📋 Pages mapped:');
|
|
144
|
+
for (const p of config.pages) {
|
|
145
|
+
console.log(` ${p.name.padEnd(25)} ${p.url}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
136
148
|
}
|
|
137
149
|
/**
|
|
138
150
|
* Write `_overview.md`. Never fatal: the page contracts are the deliverable, and
|
package/dist/cli/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/cli/map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/cli/map.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,wBAwGC;AAuLD,4BAuBC;AAmBD,4CAqDC;AAGD,4BAUC;AAkBD,oCAyCC;AAED,sBAiCC;AA9fD,2CAA6B;AAE7B,0CAA4C;AAC5C,sCAA0F;AAC1F,gCAA2F;AAC3F,0CAA2C;AAC3C,sCAA+F;AAC/F,0CAAiD;AACjD,0CAA4C;AAE5C;;;;;;;;;;GAUG;AACI,KAAK,UAAU,MAAM,CAAC,WAAoB;IAC/C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,yCAAyC;YACvC,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;QACpD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,wBAAa,GAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;IAEjC,kFAAkF;IAClF,mDAAmD;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM;YACpB,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtC,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAErC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,+EAA+E;YAC/E,iFAAiF;YACjF,kFAAkF;YAClF,oFAAoF;YACpF,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,IAAI,CAAC,eAAe;gBACzB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,4EAA4E,CACjF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAA0B,EAAC,IAAI,CAAC,CAAC;YACxD,MAAM,OAAO,GAAgB;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,QAAQ;aACT,CAAC;YACF,MAAM,IAAI,GAAG,IAAA,iBAAW,EAAC,OAAO,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,QAAQ,QAAQ,CAAC,MAAM,0BAA0B;gBAC/C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAChF,CAAC;YACF,sFAAsF;YACtF,sFAAsF;YACtF,mFAAmF;YACnF,qFAAqF;YACrF,0EAA0E;YAC1E,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CACV,oFAAoF;oBAClF,oFAAoF;oBACpF,mFAAmF;oBACnF,mDAAmD,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,iFAAiF;IACjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,gEAAgE;QAChE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,wDAAwD;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,iFAAiF;IACjF,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,uBAAuB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI;YAC3D,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,YAAY,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;YACpF,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAClG,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,gDAAgD,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAClF,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,CACzG,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CACT,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,sBAAsB,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,gEAAgE,CACjK,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CACT,0BAA0B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAC7G,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAkB;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAQ,CAAC;IAChC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC;QAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,sCAAsC,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QAED,gCAAgC;QAChC,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,eAAe,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,aAAa,GAAG,IAAA,sBAAa,EAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CACT,gBAAgB,UAAU,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,4BAA4B,IAAA,0BAAiB,EAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,QAAQ,CAC5J,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElD,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAA,6BAAkB,EAAC,aAAa,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CACxG,CAAC;QAEF,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC;YAClB,IAAA,uBAAY,EAAC,IAAI,EAAE,IAAA,mBAAU,GAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,GAAG,CACT,iBAAiB,aAAa,CAAC,QAAQ,CAAC,MAAM,yBAAyB,QAAQ,CAAC,MAAM,gBAAgB,CACvG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAkB;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;IAEjD,wCAAwC;IACxC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,IAAA,iBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,sBAAa,EACjC,OAAO,EACP,KAAK,EACL,SAAS,EACT,kEAAkE,CACnE,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,0BAAiB,EAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CACT,qBAAqB,aAAa,CAAC,QAAQ,CAAC,MAAM,mBAAmB;QACnE,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,qBAAqB,SAAS,yBAAyB,CACvF,CAAC;IAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhD,kBAAkB;IAClB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAA,6BAAkB,EAAC,aAAa,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CACxG,CAAC;IAEF,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3E,MAAM,GAAG,GAAG,IAAA,mBAAU,GAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAA,iBAAW,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvB,IAAA,uBAAY,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;IACnB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG,YAAY;YAC1E,IAAI,WAAW,kBAAkB,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,QAAQ,CAAC,IAAU,EAAE,MAAkB;IAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO;IAElC,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI;iBACP,SAAS,CAAC,IAAwC,EAAE,EAAE,IAAI,EAAE,CAAC;iBAC7D,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,mBAAmB;gBAClF,SAAS,IAAI,WAAW,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,KAAK;gBACnD,uCAAuC,MAAM,CAAC,IAAI,mCAAmC;gBACrF,mBAAmB;gBACnB,iFAAiF;gBACjF,kFAAkF;gBAClF,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACI,KAAK,UAAU,gBAAgB,CAAC,IAAU;IAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACrC,MAAM,WAAW,GAAG,CAAC,EAAW,EAAiB,EAAE;YACjD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,EAAE;gBAAE,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,KAAK;gBAAE,OAAO,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,KAAK;gBAAE,OAAO,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,6EAA6E;QAC7E,sEAAsE;QACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAC1B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACtF,CAAC;QACF,MAAM,MAAM,GACV,KAAK,CAAC,aAAa,CAAC,6CAA6C,CAAC;YAClE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEhC,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAClC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACzD,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC;YACvC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE;YACP,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE;YAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE;SACjD;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,UAAU;YAC1B,cAAc,EAAE,UAAU;SAC3B;KACF,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,yFAAyF;AACzF,SAAgB,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE;QAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,CAAC,CAAC;IACF,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,MAAkB,EAClB,MAAc,EACd,MAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,OAAO;IAErC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CACV,sBAAsB,MAAM,6CAA6C,MAAM,GAAG,CACnF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GACR,YAAY,MAAM,CAAC,IAAI,gBAAgB,MAAM,eAAe,MAAM,yBAAyB;QAC3F,+CAA+C;QAC/C,uCAAuC,MAAM,CAAC,IAAI,kCAAkC,CAAC;IAEvF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,IAAI;YACF,iEAAiE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI;YAC/F,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,yDAAyD;YAC3F,uCAAuC,CAC1C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,KAAK,CACb,IAAI;QACF,wFAAwF;QACxF,CAAC,UAAU;YACT,CAAC,CAAC,0FAA0F;gBAC1F,4CAA4C,UAAU,MAAM;gBAC5D,oEAAoE;YACtE,CAAC,CAAC,yFAAyF;gBACzF,gFAAgF,CAAC,CACxF,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,KAAK,CAAC,IAAU,EAAE,MAAkB;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAK,CAAC;IAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,cAAc,6BAA6B,IAAI,CAAC,cAAc,gCAAgC,CAC5H,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,IAAA,sBAAa,EAAC,WAAW,CAAC;QAC1B,IAAA,sBAAa,EAAC,WAAW,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjE,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,eAAe,8DAA8D,CAC5G,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/cli/run.js
CHANGED
|
@@ -126,8 +126,18 @@ async function runRun(args) {
|
|
|
126
126
|
}
|
|
127
127
|
if (aggregate.verdict === 'BLOCK') {
|
|
128
128
|
emitReport();
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
const blockedPages = aggregate.pageReports.filter((p) => p.verdict === 'BLOCK');
|
|
130
|
+
const fixablePages = aggregate.pageReports.filter((p) => p.verdict === 'FIX');
|
|
131
|
+
const blockedNames = blockedPages.map((p) => p.name).join(', ');
|
|
132
|
+
const fixableNames = fixablePages.map((p) => p.name).join(', ');
|
|
133
|
+
console.error(`⛔ BLOCK — ${blockedPages.length === 1 ? 'page' : 'pages'} ${blockedNames} ${blockedPages.length === 1 ? 'has' : 'have'} lost, ambiguous or rebound selectors.\n` +
|
|
134
|
+
` Nothing was changed — BLOCK stops the entire run so no partial fix is applied blindly.\n` +
|
|
135
|
+
(fixablePages.length > 0
|
|
136
|
+
? ` Pages with only healable drift (${fixableNames}) can still be fixed individually:\n` +
|
|
137
|
+
` ia-qa-heal diff && ia-qa-heal fix --dir\n` +
|
|
138
|
+
` Or target a single page:\n` +
|
|
139
|
+
` ia-qa-heal diff baseline/${fixablePages[0].name}.json mapping/${fixablePages[0].name}.json\n`
|
|
140
|
+
: ` Review the report above — a human must resolve the blockers before \`run\` can proceed.\n`));
|
|
131
141
|
process.exitCode = 1;
|
|
132
142
|
return;
|
|
133
143
|
}
|
package/dist/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
package/dist/crawl.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IaQaConfig } from './config';
|
|
2
|
+
import { Candidate } from './discovery/safety';
|
|
3
|
+
/**
|
|
4
|
+
* Post-auth crawler — the high-ceiling, higher-risk discovery source.
|
|
5
|
+
*
|
|
6
|
+
* The sitemap sees the public surface and stops at the login. This starts *inside*
|
|
7
|
+
* the authenticated app (reusing the exact `login` the `map` command uses) and
|
|
8
|
+
* follows links outward, so it finds the dashboard, the settings, the pages a
|
|
9
|
+
* sitemap never lists. Everything runs on the caller's machine against the caller's
|
|
10
|
+
* app — nothing leaves it, same promise as `map`.
|
|
11
|
+
*
|
|
12
|
+
* The safety model is the whole point (`isSafeCandidateUrl` is the floor; this adds
|
|
13
|
+
* the runtime guards):
|
|
14
|
+
* - Only same-origin GET navigations, and never a URL matching `UNSAFE_URL_RE`
|
|
15
|
+
* (`/logout` would end the session for every page after it; a GET that deletes
|
|
16
|
+
* would destroy data).
|
|
17
|
+
* - "Reveal" clicks — opening a menu/dropdown/dialog to read the links inside —
|
|
18
|
+
* are limited to the disclosure toggles `findRevealTargets` allows, and guarded
|
|
19
|
+
* three ways: if a click navigates it was not a disclosure (record the URL, go
|
|
20
|
+
* back); after reading we press Escape to close; we never click the revealed
|
|
21
|
+
* items, only harvest their hrefs for the BFS to visit as normal navigations.
|
|
22
|
+
* - Reveal goes one level deep only — "open it and that's all", never a menu
|
|
23
|
+
* inside a menu inside a menu.
|
|
24
|
+
*/
|
|
25
|
+
export interface CrawlOptions {
|
|
26
|
+
/** Max link-depth from the start pages. Default 2. */
|
|
27
|
+
maxDepth?: number;
|
|
28
|
+
/** Hard cap on pages visited, so a big app cannot run forever. Default 60. */
|
|
29
|
+
maxPages?: number;
|
|
30
|
+
/** Open disclosure toggles to harvest links hidden behind them. Default true. */
|
|
31
|
+
reveal?: boolean;
|
|
32
|
+
/** Extra start URLs beyond baseUrl + configured pages (e.g. sitemap hits). */
|
|
33
|
+
seeds?: string[];
|
|
34
|
+
/** Treat www./apex as distinct hosts. Off by default (they are one site). */
|
|
35
|
+
strictHost?: boolean;
|
|
36
|
+
/** Called once per visited URL, for progress output. */
|
|
37
|
+
onVisit?: (url: string, found: number) => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Crawl an app behind its configured login and return the pages found that are not
|
|
41
|
+
* already in `config.pages`. Launches its own browser, logs in if `config.auth` is
|
|
42
|
+
* set, and always closes the browser — a thrown error must not strand a process.
|
|
43
|
+
*/
|
|
44
|
+
export declare function crawlApp(config: IaQaConfig, options?: CrawlOptions): Promise<Candidate[]>;
|
package/dist/crawl.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.crawlApp = crawlApp;
|
|
4
|
+
const launcher_1 = require("./launcher");
|
|
5
|
+
const map_1 = require("./cli/map");
|
|
6
|
+
const aom_1 = require("./aom");
|
|
7
|
+
const discover_1 = require("./browser/discover");
|
|
8
|
+
const safety_1 = require("./discovery/safety");
|
|
9
|
+
/** How long to let a revealed menu/dialog settle before reading it. */
|
|
10
|
+
const REVEAL_SETTLE_MS = 250;
|
|
11
|
+
/**
|
|
12
|
+
* Crawl an app behind its configured login and return the pages found that are not
|
|
13
|
+
* already in `config.pages`. Launches its own browser, logs in if `config.auth` is
|
|
14
|
+
* set, and always closes the browser — a thrown error must not strand a process.
|
|
15
|
+
*/
|
|
16
|
+
async function crawlApp(config, options = {}) {
|
|
17
|
+
const maxDepth = options.maxDepth ?? 2;
|
|
18
|
+
const maxPages = options.maxPages ?? 60;
|
|
19
|
+
const reveal = options.reveal !== false;
|
|
20
|
+
const hostOpts = { strictHost: options.strictHost };
|
|
21
|
+
const base = new URL(config.baseUrl);
|
|
22
|
+
const start = new URL(config.baseUrl).toString();
|
|
23
|
+
const found = new Map();
|
|
24
|
+
const visited = new Set();
|
|
25
|
+
const queue = [{ url: start, depth: 0 }];
|
|
26
|
+
const enqueue = (href, depth) => {
|
|
27
|
+
if (!(0, safety_1.isSafeCandidateUrl)(href, config.baseUrl, hostOpts))
|
|
28
|
+
return;
|
|
29
|
+
const abs = new URL(href, config.baseUrl).toString();
|
|
30
|
+
const key = (0, safety_1.normalizedPath)(abs, config.baseUrl);
|
|
31
|
+
if (!found.has(key)) {
|
|
32
|
+
const candidate = (0, safety_1.toCandidate)(abs, config.baseUrl, 'crawl', hostOpts);
|
|
33
|
+
if (candidate)
|
|
34
|
+
found.set(key, candidate);
|
|
35
|
+
}
|
|
36
|
+
if (depth <= maxDepth && !visited.has(key)) {
|
|
37
|
+
queue.push({ url: `${base.origin}${key}`, depth });
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
for (const seed of options.seeds ?? [])
|
|
41
|
+
enqueue(seed, 1);
|
|
42
|
+
const { browser, using } = await (0, launcher_1.launchBrowser)();
|
|
43
|
+
console.log(`🌐 Using ${using}`);
|
|
44
|
+
try {
|
|
45
|
+
const context = config.locale
|
|
46
|
+
? await browser.newContext({ locale: config.locale })
|
|
47
|
+
: await browser.newContext();
|
|
48
|
+
const page = await context.newPage();
|
|
49
|
+
if (config.auth) {
|
|
50
|
+
console.log('🔐 Logging in…');
|
|
51
|
+
await (0, map_1.login)(page, config);
|
|
52
|
+
}
|
|
53
|
+
while (queue.length > 0 && visited.size < maxPages) {
|
|
54
|
+
const { url, depth } = queue.shift();
|
|
55
|
+
const key = (0, safety_1.normalizedPath)(url, config.baseUrl);
|
|
56
|
+
if (visited.has(key))
|
|
57
|
+
continue;
|
|
58
|
+
visited.add(key);
|
|
59
|
+
// A page we actually loaded is a real, reachable page — a candidate in its own
|
|
60
|
+
// right, even when nothing links to it. Without this the start page (and any
|
|
61
|
+
// JS-only entry) is dropped unless some other page happens to link back to it.
|
|
62
|
+
const self = (0, safety_1.toCandidate)(url, config.baseUrl, 'crawl', hostOpts);
|
|
63
|
+
if (self && !found.has(key))
|
|
64
|
+
found.set(key, self);
|
|
65
|
+
let hrefs;
|
|
66
|
+
try {
|
|
67
|
+
hrefs = await visit(page, url, reveal && depth < maxDepth);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// A single page that will not load (timeout, transient error) is not fatal
|
|
71
|
+
// to a discovery run — skip it and keep mapping the rest of the app.
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
options.onVisit?.(key, hrefs.length);
|
|
75
|
+
for (const href of hrefs)
|
|
76
|
+
enqueue(href, depth + 1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
await browser.close();
|
|
81
|
+
}
|
|
82
|
+
return Array.from(found.values());
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load a URL, harvest its links, and — when `reveal` is on — open the safe
|
|
86
|
+
* disclosure toggles to harvest the links hidden behind them too.
|
|
87
|
+
*
|
|
88
|
+
* Returns raw hrefs (paths or absolute URLs); the caller filters them through
|
|
89
|
+
* `isSafeCandidateUrl`, so nothing here has to know the denylist.
|
|
90
|
+
*/
|
|
91
|
+
async function visit(page, url, reveal) {
|
|
92
|
+
await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
|
|
93
|
+
const hrefs = new Set();
|
|
94
|
+
for (const el of await (0, aom_1.extractInteractiveElements)(page)) {
|
|
95
|
+
if (el.href)
|
|
96
|
+
hrefs.add(el.href);
|
|
97
|
+
}
|
|
98
|
+
if (!reveal)
|
|
99
|
+
return Array.from(hrefs);
|
|
100
|
+
// The toggles present on the settled page. Selectors are stamped attributes, so
|
|
101
|
+
// they survive re-query even as the DOM changes around them.
|
|
102
|
+
const targets = await page.evaluate(discover_1.findRevealTargets);
|
|
103
|
+
for (const selector of targets) {
|
|
104
|
+
const urlBefore = page.url();
|
|
105
|
+
try {
|
|
106
|
+
await page.locator(selector).first().click({ timeout: 2000 });
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
continue; // not clickable / detached — the safe outcome is to skip it
|
|
110
|
+
}
|
|
111
|
+
// GUARD: a disclosure toggle does not navigate. If the URL changed, this was a
|
|
112
|
+
// link in disguise — record where it went and step back, rather than crawling
|
|
113
|
+
// on from an unexpected place.
|
|
114
|
+
if (page.url() !== urlBefore) {
|
|
115
|
+
hrefs.add(page.url());
|
|
116
|
+
await page.goBack({ waitUntil: 'domcontentloaded', timeout: 10000 }).catch(() => { });
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
await page.waitForTimeout(REVEAL_SETTLE_MS);
|
|
120
|
+
for (const el of await (0, aom_1.extractInteractiveElements)(page)) {
|
|
121
|
+
if (el.href)
|
|
122
|
+
hrefs.add(el.href);
|
|
123
|
+
}
|
|
124
|
+
// Close whatever opened. Escape dismisses the overwhelming majority of menus and
|
|
125
|
+
// dialogs; if it does not, the next goto resets the page anyway. We never click
|
|
126
|
+
// the revealed items — only read their hrefs.
|
|
127
|
+
await page.keyboard.press('Escape').catch(() => { });
|
|
128
|
+
}
|
|
129
|
+
return Array.from(hrefs);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=crawl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawl.js","sourceRoot":"","sources":["../src/crawl.ts"],"names":[],"mappings":"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"}
|