doc-detective 4.0.2-dev.9 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/src/detectTests.d.ts.map +1 -1
- package/dist/common/src/detectTests.js +43 -12
- package/dist/common/src/detectTests.js.map +1 -1
- package/dist/common/src/fileTypes.d.ts.map +1 -1
- package/dist/common/src/fileTypes.js +10 -0
- package/dist/common/src/fileTypes.js.map +1 -1
- package/dist/common/src/schemas/schemas.json +868 -112
- package/dist/common/src/types/generated/checkLink_v3.d.ts +6 -0
- package/dist/common/src/types/generated/checkLink_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/config_v3.d.ts +6 -0
- package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/goTo_v3.d.ts +6 -0
- package/dist/common/src/types/generated/goTo_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts +6 -0
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/screenshot_v3.d.ts +2 -2
- package/dist/common/src/types/generated/step_v3.d.ts +14 -2
- package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/test_v3.d.ts +28 -4
- package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +10 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/integrations/heretto.d.ts.map +1 -1
- package/dist/core/integrations/heretto.js +6 -1
- package/dist/core/integrations/heretto.js.map +1 -1
- package/dist/core/tests/checkLink.d.ts.map +1 -1
- package/dist/core/tests/checkLink.js +17 -2
- package/dist/core/tests/checkLink.js.map +1 -1
- package/dist/core/tests/goTo.d.ts.map +1 -1
- package/dist/core/tests/goTo.js +17 -2
- package/dist/core/tests/goTo.js.map +1 -1
- package/dist/core/tests/loadCookie.d.ts.map +1 -1
- package/dist/core/tests/loadCookie.js +12 -2
- package/dist/core/tests/loadCookie.js.map +1 -1
- package/dist/core/tests/saveScreenshot.d.ts +15 -1
- package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
- package/dist/core/tests/saveScreenshot.js +171 -50
- package/dist/core/tests/saveScreenshot.js.map +1 -1
- package/dist/core/utils.d.ts +9 -2
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +234 -14
- package/dist/core/utils.js.map +1 -1
- package/dist/index.cjs +1235 -181
- package/package.json +16 -2
package/dist/core/utils.js
CHANGED
|
@@ -2,9 +2,11 @@ import fs from "node:fs";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import crypto from "node:crypto";
|
|
5
|
+
import dns from "node:dns/promises";
|
|
6
|
+
import net from "node:net";
|
|
5
7
|
import axios from "axios";
|
|
6
8
|
import { spawn } from "node:child_process";
|
|
7
|
-
export { outputResults, loadEnvs, log, timestamp, replaceEnvs, spawnCommand, inContainer, cleanTemp, calculateFractionalDifference, fetchFile, isRelativeUrl, };
|
|
9
|
+
export { outputResults, loadEnvs, log, timestamp, getOrInitRunTimestamp, replaceEnvs, spawnCommand, inContainer, cleanTemp, calculateFractionalDifference, fetchFile, isRelativeUrl, appendQueryParams, redactUrlForOutput, assertUrlHostIsPublic, sanitizeFilesystemName, };
|
|
8
10
|
function isRelativeUrl(url) {
|
|
9
11
|
try {
|
|
10
12
|
new URL(url);
|
|
@@ -16,6 +18,47 @@ function isRelativeUrl(url) {
|
|
|
16
18
|
return true;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
21
|
+
function appendQueryParams(url, params) {
|
|
22
|
+
if (!params || typeof params !== "object" || Array.isArray(params))
|
|
23
|
+
return url;
|
|
24
|
+
const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== null);
|
|
25
|
+
if (entries.length === 0)
|
|
26
|
+
return url;
|
|
27
|
+
// Split off the fragment so new params land before it, not inside.
|
|
28
|
+
const hashIdx = url.indexOf("#");
|
|
29
|
+
const fragment = hashIdx >= 0 ? url.slice(hashIdx) : "";
|
|
30
|
+
const base = hashIdx >= 0 ? url.slice(0, hashIdx) : url;
|
|
31
|
+
const queryIdx = base.indexOf("?");
|
|
32
|
+
const pathAndAuthority = queryIdx >= 0 ? base.slice(0, queryIdx) : base;
|
|
33
|
+
const existingQuery = queryIdx >= 0 ? base.slice(queryIdx + 1) : "";
|
|
34
|
+
// Walk the existing query and drop only the segments whose key collides
|
|
35
|
+
// with a new entry; everything else is preserved byte-for-byte. Then
|
|
36
|
+
// append the new pairs (encoded fresh). This avoids re-encoding any
|
|
37
|
+
// non-colliding pair — `URLSearchParams.toString()` would otherwise
|
|
38
|
+
// normalize `+` for spaces and percent-encode `:` / `,` etc., which
|
|
39
|
+
// breaks signed URLs and strict backends. New params always go through
|
|
40
|
+
// encodeURIComponent so callers can pass arbitrary strings.
|
|
41
|
+
const newKeys = new Set(entries.map(([k]) => k));
|
|
42
|
+
const preservedSegments = existingQuery
|
|
43
|
+
? existingQuery.split("&").filter((segment) => {
|
|
44
|
+
if (!segment)
|
|
45
|
+
return false;
|
|
46
|
+
const eqIdx = segment.indexOf("=");
|
|
47
|
+
const rawKey = eqIdx >= 0 ? segment.slice(0, eqIdx) : segment;
|
|
48
|
+
let decodedKey;
|
|
49
|
+
try {
|
|
50
|
+
decodedKey = decodeURIComponent(rawKey);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
decodedKey = rawKey;
|
|
54
|
+
}
|
|
55
|
+
return !newKeys.has(decodedKey);
|
|
56
|
+
})
|
|
57
|
+
: [];
|
|
58
|
+
const newPairs = entries.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
|
|
59
|
+
const query = [...preservedSegments, ...newPairs].join("&");
|
|
60
|
+
return pathAndAuthority + (query ? "?" + query : "") + fragment;
|
|
61
|
+
}
|
|
19
62
|
// Delete all contents of doc-detective temp directory
|
|
20
63
|
function cleanTemp() {
|
|
21
64
|
const tempDir = path.join(os.tmpdir(), "doc-detective");
|
|
@@ -32,29 +75,196 @@ function cleanTemp() {
|
|
|
32
75
|
});
|
|
33
76
|
}
|
|
34
77
|
}
|
|
35
|
-
// Fetch a file from a URL and save to a temp directory
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
78
|
+
// Fetch a file from a URL and save to a temp directory.
|
|
79
|
+
// With `{ binary: true }`, fetches as arraybuffer and preserves raw bytes —
|
|
80
|
+
// required for images and other non-text payloads. Binary fetches also apply
|
|
81
|
+
// hard limits (timeout, max body size, max redirects) so a misbehaving server
|
|
82
|
+
// can't stall or OOM the run.
|
|
83
|
+
// Otherwise, non-JSON responses are stringified (text pass-through).
|
|
84
|
+
// Returns `{ result: "error", message }` on failure.
|
|
85
|
+
const FETCH_BINARY_DEFAULTS = {
|
|
86
|
+
responseType: "arraybuffer",
|
|
87
|
+
timeout: 30_000,
|
|
88
|
+
maxContentLength: 50 * 1024 * 1024,
|
|
89
|
+
maxBodyLength: 50 * 1024 * 1024,
|
|
90
|
+
maxRedirects: 5,
|
|
91
|
+
};
|
|
92
|
+
// Replace characters that are invalid in filenames on Windows (and often
|
|
93
|
+
// problematic on other platforms) with `_`. Keeps dots, hyphens, and
|
|
94
|
+
// alphanumerics untouched so names stay recognizable. Also rejects leading
|
|
95
|
+
// dots that could turn the file into a traversal segment.
|
|
96
|
+
function sanitizeFilesystemName(name, fallback) {
|
|
97
|
+
if (!name || name === "." || name === "..")
|
|
98
|
+
return fallback;
|
|
99
|
+
// Control chars 0x00-0x1f + Windows reserved: < > : " / \ | ? *
|
|
100
|
+
const cleaned = name.replace(/[\x00-\x1f<>:"/\\|?*]/g, "_");
|
|
101
|
+
// After replacement, guard against all-dots or empty results.
|
|
102
|
+
if (!cleaned || /^\.+$/.test(cleaned))
|
|
103
|
+
return fallback;
|
|
104
|
+
return cleaned;
|
|
105
|
+
}
|
|
106
|
+
// Derive a safe on-disk filename from a URL. URL-derived strings can contain
|
|
107
|
+
// path separators (`/`, `\`), traversal segments (`..`), or characters that
|
|
108
|
+
// are invalid in filenames on Windows (`:<>"|?*`). `path.basename` strips
|
|
109
|
+
// directory components; `sanitizeFilesystemName` then neutralizes remaining
|
|
110
|
+
// unsafe characters so `fetchFile` works on every platform.
|
|
111
|
+
function safeFilenameFromUrl(fileURL, fallback) {
|
|
112
|
+
let raw;
|
|
113
|
+
try {
|
|
114
|
+
raw = new URL(fileURL).pathname;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
raw = fileURL;
|
|
118
|
+
}
|
|
119
|
+
raw = raw.split("?")[0].split("#")[0];
|
|
120
|
+
const base = path.basename(raw.replace(/\\/g, "/"));
|
|
121
|
+
return sanitizeFilesystemName(base, fallback);
|
|
122
|
+
}
|
|
123
|
+
// Strip query string and fragment from a URL for display/logging. S3
|
|
124
|
+
// pre-signed URLs carry tokens/signatures in the query; leaking them into
|
|
125
|
+
// step descriptions, debug logs, or result outputs exposes credentials.
|
|
126
|
+
// The full URL with query is still used for the fetch itself — only the
|
|
127
|
+
// *reported* form is redacted.
|
|
128
|
+
function redactUrlForOutput(value) {
|
|
129
|
+
try {
|
|
130
|
+
const url = new URL(value);
|
|
131
|
+
url.search = "";
|
|
132
|
+
url.hash = "";
|
|
133
|
+
return url.toString();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return value.split("?")[0].split("#")[0];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Private/loopback/link-local IP ranges that binary URL fetches refuse to
|
|
140
|
+
// reach by default. Covers IPv4 RFC1918, loopback, link-local (169.254/16),
|
|
141
|
+
// carrier-grade NAT (100.64/10), and the cloud-metadata special cases
|
|
142
|
+
// (169.254.169.254 is inside link-local and thus covered).
|
|
143
|
+
function isPrivateOrLoopbackAddress(ip) {
|
|
144
|
+
if (!ip)
|
|
145
|
+
return false;
|
|
146
|
+
if (net.isIPv4(ip)) {
|
|
147
|
+
const [a, b] = ip.split(".").map(Number);
|
|
148
|
+
if (a === 10)
|
|
149
|
+
return true;
|
|
150
|
+
if (a === 127)
|
|
151
|
+
return true;
|
|
152
|
+
if (a === 0)
|
|
153
|
+
return true;
|
|
154
|
+
if (a === 169 && b === 254)
|
|
155
|
+
return true;
|
|
156
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
157
|
+
return true;
|
|
158
|
+
if (a === 192 && b === 168)
|
|
159
|
+
return true;
|
|
160
|
+
if (a === 100 && b >= 64 && b <= 127)
|
|
161
|
+
return true;
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
if (net.isIPv6(ip)) {
|
|
165
|
+
const normalized = ip.toLowerCase();
|
|
166
|
+
if (normalized === "::1")
|
|
167
|
+
return true;
|
|
168
|
+
if (normalized === "::")
|
|
169
|
+
return true;
|
|
170
|
+
if (normalized.startsWith("fc") || normalized.startsWith("fd"))
|
|
171
|
+
return true; // unique local
|
|
172
|
+
if (normalized.startsWith("fe80:"))
|
|
173
|
+
return true; // link-local
|
|
174
|
+
if (normalized.startsWith("::ffff:")) {
|
|
175
|
+
// IPv4-mapped: recurse on the embedded v4
|
|
176
|
+
return isPrivateOrLoopbackAddress(normalized.replace("::ffff:", ""));
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
// Reject URLs whose host resolves to a loopback/private IP, unless the
|
|
183
|
+
// caller explicitly opts in (DOC_DETECTIVE_ALLOW_LOCAL_URLS=true). Tests
|
|
184
|
+
// and trusted internal integrations set the env var; normal doc-spec input
|
|
185
|
+
// does not, so an untrusted spec can't pivot through doc-detective to hit
|
|
186
|
+
// cloud metadata or intranet services.
|
|
187
|
+
//
|
|
188
|
+
// Note: this is a best-effort check. DNS rebinding and TOCTOU races are
|
|
189
|
+
// possible between resolution and connect; for true SSRF-grade isolation,
|
|
190
|
+
// wire in an agent that validates the actual remote address at connect
|
|
191
|
+
// time. This guard covers the common misuse cases.
|
|
192
|
+
async function assertUrlHostIsPublic(fileURL) {
|
|
193
|
+
if (process.env.DOC_DETECTIVE_ALLOW_LOCAL_URLS === "true")
|
|
194
|
+
return;
|
|
195
|
+
let parsed;
|
|
196
|
+
try {
|
|
197
|
+
parsed = new URL(fileURL);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
throw new Error(`Invalid URL: ${redactUrlForOutput(fileURL)}`);
|
|
201
|
+
}
|
|
202
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
203
|
+
throw new Error(`Unsupported URL scheme (${parsed.protocol}) for ${redactUrlForOutput(fileURL)}`);
|
|
204
|
+
}
|
|
205
|
+
const host = parsed.hostname.replace(/^\[|\]$/g, "");
|
|
206
|
+
// Direct IP literals: check immediately.
|
|
207
|
+
if (net.isIP(host)) {
|
|
208
|
+
if (isPrivateOrLoopbackAddress(host)) {
|
|
209
|
+
throw new Error(`Refusing to fetch private/loopback address (${host}). Set DOC_DETECTIVE_ALLOW_LOCAL_URLS=true to allow.`);
|
|
210
|
+
}
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Hostnames: resolve and check every answer (A + AAAA).
|
|
214
|
+
const lower = host.toLowerCase();
|
|
215
|
+
if (lower === "localhost" || lower.endsWith(".localhost")) {
|
|
216
|
+
throw new Error(`Refusing to fetch localhost (${host}). Set DOC_DETECTIVE_ALLOW_LOCAL_URLS=true to allow.`);
|
|
217
|
+
}
|
|
218
|
+
let addresses;
|
|
219
|
+
try {
|
|
220
|
+
addresses = await dns.lookup(host, { all: true });
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
throw new Error(`Couldn't resolve host ${host} for SSRF check: ${error.message}`);
|
|
224
|
+
}
|
|
225
|
+
for (const { address } of addresses) {
|
|
226
|
+
if (isPrivateOrLoopbackAddress(address)) {
|
|
227
|
+
throw new Error(`Host ${host} resolves to a private/loopback address (${address}); refusing to fetch. Set DOC_DETECTIVE_ALLOW_LOCAL_URLS=true to allow.`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async function fetchFile(fileURL, opts = {}) {
|
|
39
232
|
try {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
233
|
+
if (opts.binary) {
|
|
234
|
+
// Only gate binary fetches for now — the text path is an internal
|
|
235
|
+
// loader used by the test-detection pipeline and pre-dates this
|
|
236
|
+
// change; expanding SSRF coverage there belongs in its own PR.
|
|
237
|
+
await assertUrlHostIsPublic(fileURL);
|
|
238
|
+
}
|
|
239
|
+
const response = await axios.get(fileURL, opts.binary ? FETCH_BINARY_DEFAULTS : undefined);
|
|
240
|
+
let data;
|
|
241
|
+
if (opts.binary) {
|
|
242
|
+
data = Buffer.from(response.data);
|
|
243
|
+
}
|
|
244
|
+
else if (typeof response.data === "object") {
|
|
245
|
+
data = JSON.stringify(response.data, null, 2);
|
|
43
246
|
}
|
|
44
247
|
else {
|
|
45
|
-
|
|
248
|
+
data = response.data.toString();
|
|
46
249
|
}
|
|
47
|
-
const fileName = fileURL
|
|
48
|
-
const hash = crypto.createHash("md5").update(
|
|
250
|
+
const fileName = safeFilenameFromUrl(fileURL, "fetched_file");
|
|
251
|
+
const hash = crypto.createHash("md5").update(data).digest("hex");
|
|
49
252
|
const ddTempDir = path.join(os.tmpdir(), "doc-detective");
|
|
50
253
|
const filePath = path.join(ddTempDir, `${hash}_${fileName}`);
|
|
51
|
-
//
|
|
254
|
+
// Defense in depth: ensure the resolved path is still inside ddTempDir.
|
|
255
|
+
const resolvedDir = path.resolve(ddTempDir);
|
|
256
|
+
const resolvedFile = path.resolve(filePath);
|
|
257
|
+
if (!resolvedFile.startsWith(resolvedDir + path.sep)) {
|
|
258
|
+
return {
|
|
259
|
+
result: "error",
|
|
260
|
+
message: new Error(`Refusing to write outside temp dir: ${resolvedFile}`),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
52
263
|
if (!fs.existsSync(ddTempDir)) {
|
|
53
264
|
fs.mkdirSync(ddTempDir, { recursive: true });
|
|
54
265
|
}
|
|
55
|
-
// If file doesn't exist, write it
|
|
56
266
|
if (!fs.existsSync(filePath)) {
|
|
57
|
-
fs.writeFileSync(filePath,
|
|
267
|
+
fs.writeFileSync(filePath, data);
|
|
58
268
|
}
|
|
59
269
|
return { result: "success", path: filePath };
|
|
60
270
|
}
|
|
@@ -179,6 +389,16 @@ function timestamp() {
|
|
|
179
389
|
let timestamp = new Date();
|
|
180
390
|
return `${timestamp.getFullYear()}${("0" + (timestamp.getMonth() + 1)).slice(-2)}${("0" + timestamp.getDate()).slice(-2)}-${("0" + timestamp.getHours()).slice(-2)}${("0" + timestamp.getMinutes()).slice(-2)}${("0" + timestamp.getSeconds()).slice(-2)}`;
|
|
181
391
|
}
|
|
392
|
+
// Memoize one timestamp per run on the config object so every URL-referenced
|
|
393
|
+
// screenshot in a single run lands in the same folder.
|
|
394
|
+
function getOrInitRunTimestamp(config) {
|
|
395
|
+
if (!config)
|
|
396
|
+
return timestamp();
|
|
397
|
+
if (!config.__runTimestamp) {
|
|
398
|
+
config.__runTimestamp = timestamp();
|
|
399
|
+
}
|
|
400
|
+
return config.__runTimestamp;
|
|
401
|
+
}
|
|
182
402
|
// Perform a native command in the current working directory.
|
|
183
403
|
/**
|
|
184
404
|
* Executes a command in a child process using the `spawn` function from the `child_process` module.
|
package/dist/core/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
|