@cleaver/breakcheck-core 0.2.4 → 0.3.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 +134 -1
- package/dist/api/index.d.ts +23 -5
- package/dist/api/index.js +71 -10
- package/dist/api/index.js.map +1 -1
- package/dist/core/check/index.d.ts +9 -0
- package/dist/core/check/index.js +116 -0
- package/dist/core/check/index.js.map +1 -0
- package/dist/core/compare/classes/ComparisonRepository.d.ts +11 -0
- package/dist/core/compare/classes/ComparisonRepository.js +26 -4
- package/dist/core/compare/classes/ComparisonRepository.js.map +1 -1
- package/dist/core/compare/index.js +22 -6
- package/dist/core/compare/index.js.map +1 -1
- package/dist/core/crawler/implementations/cheerio.d.ts +1 -1
- package/dist/core/crawler/implementations/cheerio.js +2 -2
- package/dist/core/crawler/implementations/cheerio.js.map +1 -1
- package/dist/core/crawler/implementations/playwright.d.ts +1 -1
- package/dist/core/crawler/implementations/playwright.js +2 -2
- package/dist/core/crawler/implementations/playwright.js.map +1 -1
- package/dist/core/crawler/index.d.ts +13 -2
- package/dist/core/crawler/index.js +25 -6
- package/dist/core/crawler/index.js.map +1 -1
- package/dist/core/crawler/url-paths.d.ts +18 -0
- package/dist/core/crawler/url-paths.js +113 -0
- package/dist/core/crawler/url-paths.js.map +1 -0
- package/dist/core/rules/RulesDsl.js +273 -56
- package/dist/core/rules/RulesDsl.js.map +1 -1
- package/dist/core/rules/RulesEngine.js +56 -17
- package/dist/core/rules/RulesEngine.js.map +1 -1
- package/dist/core/snapshot/classes/SnapshotRepository.d.ts +15 -2
- package/dist/core/snapshot/classes/SnapshotRepository.js +110 -9
- package/dist/core/snapshot/classes/SnapshotRepository.js.map +1 -1
- package/dist/core/snapshot/index.d.ts +3 -2
- package/dist/core/snapshot/index.js +41 -3
- package/dist/core/snapshot/index.js.map +1 -1
- package/dist/core/snapshot/route-coverage.d.ts +3 -0
- package/dist/core/snapshot/route-coverage.js +18 -0
- package/dist/core/snapshot/route-coverage.js.map +1 -0
- package/dist/core/snapshot/update-routes.d.ts +4 -0
- package/dist/core/snapshot/update-routes.js +58 -0
- package/dist/core/snapshot/update-routes.js.map +1 -0
- package/dist/core/view/index.d.ts +2 -1
- package/dist/core/view/index.js +4 -4
- package/dist/core/view/index.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +18 -0
- package/dist/lib/config.js +363 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/crawlee-logger.d.ts +2 -0
- package/dist/lib/crawlee-logger.js +43 -0
- package/dist/lib/crawlee-logger.js.map +1 -0
- package/dist/lib/logger.d.ts +8 -3
- package/dist/lib/logger.js +11 -1
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/root.d.ts +1 -1
- package/dist/lib/root.js +17 -6
- package/dist/lib/root.js.map +1 -1
- package/dist/lib/storage.d.ts +12 -0
- package/dist/lib/storage.js +76 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/types/api.d.ts +47 -0
- package/dist/types/compare.d.ts +5 -2
- package/dist/types/config.d.ts +72 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/rules.d.ts +8 -3
- package/dist/types/rules.js.map +1 -1
- package/package.json +11 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RulesEngine.js","sourceRoot":"","sources":["../../../src/core/rules/RulesEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"RulesEngine.js","sourceRoot":"","sources":["../../../src/core/rules/RulesEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
+
import * as fs from "fs/promises";
|
|
2
|
+
import { type StorageContext } from "../../../lib/storage.js";
|
|
1
3
|
import { SnapshotData, SnapshotSummary } from "../../../types/snapshot.js";
|
|
2
4
|
import { LoadedSnapshot } from "./LoadedSnapshot.js";
|
|
5
|
+
type SnapshotFileOperations = Pick<typeof fs, "cp" | "copyFile" | "readFile" | "writeFile" | "rename" | "rm">;
|
|
3
6
|
export declare class SnapshotRepository {
|
|
4
7
|
private readonly snapshotsDir;
|
|
8
|
+
private readonly fileOperations;
|
|
5
9
|
private constructor();
|
|
6
10
|
/**
|
|
7
11
|
* Creates a new SnapshotRepository instance using the project root directory
|
|
8
12
|
* @returns Promise<SnapshotRepository>
|
|
9
13
|
*/
|
|
10
|
-
static create(): Promise<SnapshotRepository>;
|
|
14
|
+
static create(storageDir?: string): Promise<SnapshotRepository>;
|
|
15
|
+
/** Creates a repository from an already-resolved shared storage context. */
|
|
16
|
+
static createWithStorageContext(storageContext: StorageContext): SnapshotRepository;
|
|
11
17
|
/**
|
|
12
18
|
* Creates a new SnapshotRepository instance with a custom snapshots directory
|
|
13
19
|
* @param snapshotsDir Custom directory path for snapshots
|
|
14
20
|
* @returns Promise<SnapshotRepository>
|
|
15
21
|
*/
|
|
16
|
-
static createWithCustomDir(snapshotsDir: string): Promise<SnapshotRepository>;
|
|
22
|
+
static createWithCustomDir(snapshotsDir: string, fileOperations?: Partial<SnapshotFileOperations>): Promise<SnapshotRepository>;
|
|
17
23
|
/**
|
|
18
24
|
* Normalizes a URL by removing scheme, hostname, and port
|
|
19
25
|
* @param url The URL to normalize
|
|
@@ -25,6 +31,8 @@ export declare class SnapshotRepository {
|
|
|
25
31
|
* Returns the number of non-error pages saved
|
|
26
32
|
*/
|
|
27
33
|
saveSnapshot(name: string, data: SnapshotData): Promise<number>;
|
|
34
|
+
/** Replaces only the requested routes in an existing snapshot. */
|
|
35
|
+
replaceSnapshotRoutes(targetName: string, sourceName: string, routes: readonly string[], signal?: AbortSignal): Promise<void>;
|
|
28
36
|
/**
|
|
29
37
|
* Load a snapshot from disk
|
|
30
38
|
*/
|
|
@@ -36,8 +44,13 @@ export declare class SnapshotRepository {
|
|
|
36
44
|
* @param filter Optional function to filter URLs
|
|
37
45
|
*/
|
|
38
46
|
generateUrlList(name: string, outputPath?: string, filter?: (url: string, statusCode: number) => boolean): Promise<string>;
|
|
47
|
+
/** Deletes one named snapshot without removing the storage root. */
|
|
48
|
+
deleteSnapshot(name: string): Promise<boolean>;
|
|
49
|
+
/** Deletes all direct child snapshot directories and returns their names. */
|
|
50
|
+
deleteAllSnapshots(): Promise<string[]>;
|
|
39
51
|
/**
|
|
40
52
|
* List all available snapshots with their details
|
|
41
53
|
*/
|
|
42
54
|
listSnapshots(): Promise<SnapshotSummary[]>;
|
|
43
55
|
}
|
|
56
|
+
export {};
|
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
import * as fs from "fs/promises";
|
|
2
2
|
import * as path from "path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
3
4
|
import { promisify } from "util";
|
|
4
5
|
import * as zlib from "zlib";
|
|
5
6
|
import { findRootDir } from "../../../lib/root.js";
|
|
7
|
+
import { deleteAllStorageEntries, deleteStorageEntry, resolveStorageEntry, } from "../../../lib/storage.js";
|
|
6
8
|
import { LoadedSnapshot } from "./LoadedSnapshot.js";
|
|
7
9
|
const gzip = promisify(zlib.gzip);
|
|
8
10
|
export class SnapshotRepository {
|
|
9
11
|
snapshotsDir;
|
|
10
|
-
|
|
12
|
+
fileOperations;
|
|
13
|
+
constructor(snapshotsDir, fileOperations = fs) {
|
|
11
14
|
this.snapshotsDir = snapshotsDir;
|
|
15
|
+
this.fileOperations = fileOperations;
|
|
12
16
|
}
|
|
13
17
|
/**
|
|
14
18
|
* Creates a new SnapshotRepository instance using the project root directory
|
|
15
19
|
* @returns Promise<SnapshotRepository>
|
|
16
20
|
*/
|
|
17
|
-
static async create() {
|
|
18
|
-
const rootDir = await findRootDir();
|
|
19
|
-
const snapshotsDir = path.join(rootDir, "snapshots");
|
|
21
|
+
static async create(storageDir) {
|
|
22
|
+
const rootDir = storageDir === undefined ? await findRootDir() : storageDir;
|
|
23
|
+
const snapshotsDir = path.join(path.resolve(storageDir ?? rootDir), "snapshots");
|
|
20
24
|
return new SnapshotRepository(snapshotsDir);
|
|
21
25
|
}
|
|
26
|
+
/** Creates a repository from an already-resolved shared storage context. */
|
|
27
|
+
static createWithStorageContext(storageContext) {
|
|
28
|
+
return new SnapshotRepository(storageContext.snapshotsDir);
|
|
29
|
+
}
|
|
22
30
|
/**
|
|
23
31
|
* Creates a new SnapshotRepository instance with a custom snapshots directory
|
|
24
32
|
* @param snapshotsDir Custom directory path for snapshots
|
|
25
33
|
* @returns Promise<SnapshotRepository>
|
|
26
34
|
*/
|
|
27
|
-
static async createWithCustomDir(snapshotsDir) {
|
|
28
|
-
return new SnapshotRepository(snapshotsDir);
|
|
35
|
+
static async createWithCustomDir(snapshotsDir, fileOperations = {}) {
|
|
36
|
+
return new SnapshotRepository(snapshotsDir, { ...fs, ...fileOperations });
|
|
29
37
|
}
|
|
30
38
|
/**
|
|
31
39
|
* Normalizes a URL by removing scheme, hostname, and port
|
|
@@ -47,8 +55,8 @@ export class SnapshotRepository {
|
|
|
47
55
|
* Returns the number of non-error pages saved
|
|
48
56
|
*/
|
|
49
57
|
async saveSnapshot(name, data) {
|
|
58
|
+
const snapshotDir = resolveStorageEntry(this.snapshotsDir, name, "snapshot");
|
|
50
59
|
await fs.mkdir(this.snapshotsDir, { recursive: true });
|
|
51
|
-
const snapshotDir = path.join(this.snapshotsDir, name);
|
|
52
60
|
try {
|
|
53
61
|
await fs.rm(snapshotDir, { recursive: true, force: true });
|
|
54
62
|
}
|
|
@@ -100,11 +108,96 @@ export class SnapshotRepository {
|
|
|
100
108
|
await fs.writeFile(indexPath, JSON.stringify(index, null, 2));
|
|
101
109
|
return pageCount;
|
|
102
110
|
}
|
|
111
|
+
/** Replaces only the requested routes in an existing snapshot. */
|
|
112
|
+
async replaceSnapshotRoutes(targetName, sourceName, routes, signal) {
|
|
113
|
+
signal?.throwIfAborted();
|
|
114
|
+
if (targetName === sourceName) {
|
|
115
|
+
throw new Error("The source and target snapshots must be different.");
|
|
116
|
+
}
|
|
117
|
+
if (routes.length === 0) {
|
|
118
|
+
throw new Error("At least one route is required for a baseline update.");
|
|
119
|
+
}
|
|
120
|
+
const targetDir = resolveStorageEntry(this.snapshotsDir, targetName, "snapshot");
|
|
121
|
+
const sourceDir = resolveStorageEntry(this.snapshotsDir, sourceName, "snapshot");
|
|
122
|
+
const temporaryDir = `${targetDir}.route-update-${randomUUID()}`;
|
|
123
|
+
const backupDir = `${targetDir}.route-backup-${randomUUID()}`;
|
|
124
|
+
let backupCreated = false;
|
|
125
|
+
let committed = false;
|
|
126
|
+
try {
|
|
127
|
+
const targetIndexPath = path.join(targetDir, "index.json");
|
|
128
|
+
const sourceIndexPath = path.join(sourceDir, "index.json");
|
|
129
|
+
const targetIndex = JSON.parse(await this.fileOperations.readFile(targetIndexPath, "utf8"));
|
|
130
|
+
const sourceIndex = JSON.parse(await this.fileOperations.readFile(sourceIndexPath, "utf8"));
|
|
131
|
+
const sourcePagesDir = path.join(sourceDir, "pages");
|
|
132
|
+
const targetPagesDir = path.join(temporaryDir, "pages");
|
|
133
|
+
const uniqueRoutes = [...new Set(routes)];
|
|
134
|
+
for (const route of uniqueRoutes) {
|
|
135
|
+
if (!route.startsWith("/") || route.startsWith("//")) {
|
|
136
|
+
throw new Error(`Invalid root-relative route "${route}".`);
|
|
137
|
+
}
|
|
138
|
+
const sourcePage = sourceIndex.urls[route];
|
|
139
|
+
if (!sourcePage) {
|
|
140
|
+
throw new Error(`The source snapshot does not contain route "${route}".`);
|
|
141
|
+
}
|
|
142
|
+
const filename = `${Buffer.from(route).toString("base64url")}.json.gz`;
|
|
143
|
+
if (sourcePage.filename !== filename) {
|
|
144
|
+
throw new Error(`The source snapshot has an invalid page entry for "${route}".`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
await this.fileOperations.cp(targetDir, temporaryDir, {
|
|
148
|
+
recursive: true,
|
|
149
|
+
errorOnExist: true,
|
|
150
|
+
});
|
|
151
|
+
for (const route of uniqueRoutes) {
|
|
152
|
+
const sourcePage = sourceIndex.urls[route];
|
|
153
|
+
if (!sourcePage) {
|
|
154
|
+
throw new Error(`The source snapshot does not contain route "${route}".`);
|
|
155
|
+
}
|
|
156
|
+
const filename = sourcePage.filename;
|
|
157
|
+
await this.fileOperations.copyFile(path.join(sourcePagesDir, filename), path.join(targetPagesDir, filename));
|
|
158
|
+
targetIndex.urls[route] = { ...sourcePage };
|
|
159
|
+
}
|
|
160
|
+
const now = new Date().toISOString();
|
|
161
|
+
targetIndex.metadata = {
|
|
162
|
+
...targetIndex.metadata,
|
|
163
|
+
baseUrl: sourceIndex.metadata.baseUrl,
|
|
164
|
+
timestamp: now,
|
|
165
|
+
totalPages: Object.keys(targetIndex.urls).length,
|
|
166
|
+
};
|
|
167
|
+
const sourceMetadata = JSON.parse(await this.fileOperations.readFile(path.join(sourceDir, "metadata.json"), "utf8"));
|
|
168
|
+
await this.fileOperations.writeFile(path.join(temporaryDir, "metadata.json"), JSON.stringify({ ...sourceMetadata, timestamp: now }, null, 2));
|
|
169
|
+
await this.fileOperations.writeFile(path.join(temporaryDir, "index.json"), JSON.stringify(targetIndex, null, 2));
|
|
170
|
+
signal?.throwIfAborted();
|
|
171
|
+
await this.fileOperations.rename(targetDir, backupDir);
|
|
172
|
+
backupCreated = true;
|
|
173
|
+
try {
|
|
174
|
+
signal?.throwIfAborted();
|
|
175
|
+
await this.fileOperations.rename(temporaryDir, targetDir);
|
|
176
|
+
committed = true;
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
await this.fileOperations.rename(backupDir, targetDir);
|
|
180
|
+
backupCreated = false;
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
await this.fileOperations.rm(backupDir, { recursive: true, force: true });
|
|
184
|
+
backupCreated = false;
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
await this.fileOperations.rm(temporaryDir, {
|
|
188
|
+
recursive: true,
|
|
189
|
+
force: true,
|
|
190
|
+
});
|
|
191
|
+
if (backupCreated && !committed) {
|
|
192
|
+
await this.fileOperations.rename(backupDir, targetDir);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
103
196
|
/**
|
|
104
197
|
* Load a snapshot from disk
|
|
105
198
|
*/
|
|
106
199
|
async loadSnapshot(name) {
|
|
107
|
-
const snapshotDir =
|
|
200
|
+
const snapshotDir = resolveStorageEntry(this.snapshotsDir, name, "snapshot");
|
|
108
201
|
// Load metadata
|
|
109
202
|
const metadataPath = path.join(snapshotDir, "metadata.json");
|
|
110
203
|
const metadataContent = await fs.readFile(metadataPath, "utf-8");
|
|
@@ -125,7 +218,7 @@ export class SnapshotRepository {
|
|
|
125
218
|
* @param filter Optional function to filter URLs
|
|
126
219
|
*/
|
|
127
220
|
async generateUrlList(name, outputPath, filter) {
|
|
128
|
-
const snapshotDir =
|
|
221
|
+
const snapshotDir = resolveStorageEntry(this.snapshotsDir, name, "snapshot");
|
|
129
222
|
// Load index
|
|
130
223
|
const indexPath = path.join(snapshotDir, "index.json");
|
|
131
224
|
const indexContent = await fs.readFile(indexPath, "utf-8");
|
|
@@ -142,6 +235,14 @@ export class SnapshotRepository {
|
|
|
142
235
|
await fs.writeFile(finalOutputPath, content);
|
|
143
236
|
return finalOutputPath;
|
|
144
237
|
}
|
|
238
|
+
/** Deletes one named snapshot without removing the storage root. */
|
|
239
|
+
async deleteSnapshot(name) {
|
|
240
|
+
return deleteStorageEntry(this.snapshotsDir, name, "snapshot");
|
|
241
|
+
}
|
|
242
|
+
/** Deletes all direct child snapshot directories and returns their names. */
|
|
243
|
+
async deleteAllSnapshots() {
|
|
244
|
+
return deleteAllStorageEntries(this.snapshotsDir, "snapshot");
|
|
245
|
+
}
|
|
145
246
|
/**
|
|
146
247
|
* List all available snapshots with their details
|
|
147
248
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnapshotRepository.js","sourceRoot":"","sources":["../../../../src/core/snapshot/classes/SnapshotRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SnapshotRepository.js","sourceRoot":"","sources":["../../../../src/core/snapshot/classes/SnapshotRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { SnapshotConfig, SnapshotResult } from "../../types/api.js";
|
|
1
|
+
import type { SnapshotConfig, SnapshotResult } from "../../types/api.js";
|
|
2
2
|
import { SnapshotRepository } from "./classes/SnapshotRepository.js";
|
|
3
3
|
export { LoadedSnapshot } from "./classes/LoadedSnapshot.js";
|
|
4
4
|
export { SnapshotRepository } from "./classes/SnapshotRepository.js";
|
|
5
|
+
export { validateSnapshotRoutes } from "./route-coverage.js";
|
|
5
6
|
/**
|
|
6
7
|
* Creates a snapshot of a website based on the provided configuration.
|
|
7
8
|
* Orchestrates calls to Crawler and Snapshot Manager.
|
|
8
9
|
*/
|
|
9
|
-
export declare function createSnapshot(config: SnapshotConfig, snapshotRepository: SnapshotRepository): Promise<SnapshotResult>;
|
|
10
|
+
export declare function createSnapshot(config: SnapshotConfig, snapshotRepository: SnapshotRepository, signal?: AbortSignal): Promise<SnapshotResult>;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Dataset } from "crawlee";
|
|
2
2
|
import { logger } from "../../lib/logger.js";
|
|
3
|
+
import { resolveUrlPaths } from "../crawler/url-paths.js";
|
|
3
4
|
import { BreakcheckCrawler } from "../crawler/index.js";
|
|
4
5
|
export { LoadedSnapshot } from "./classes/LoadedSnapshot.js";
|
|
5
6
|
export { SnapshotRepository } from "./classes/SnapshotRepository.js";
|
|
7
|
+
export { validateSnapshotRoutes } from "./route-coverage.js";
|
|
6
8
|
/**
|
|
7
9
|
* Creates a snapshot of a website based on the provided configuration.
|
|
8
10
|
* Orchestrates calls to Crawler and Snapshot Manager.
|
|
9
11
|
*/
|
|
10
|
-
export async function createSnapshot(config, snapshotRepository) {
|
|
12
|
+
export async function createSnapshot(config, snapshotRepository, signal) {
|
|
11
13
|
const startTime = Date.now();
|
|
12
14
|
const errors = [];
|
|
13
15
|
try {
|
|
@@ -20,10 +22,32 @@ export async function createSnapshot(config, snapshotRepository) {
|
|
|
20
22
|
logger.error({ config }, "Snapshot creation failed: name is required");
|
|
21
23
|
throw new Error("name is required");
|
|
22
24
|
}
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
+
const manifest = config.urlPaths === undefined
|
|
26
|
+
? undefined
|
|
27
|
+
: resolveUrlPaths(config.baseUrl, config.urlPaths);
|
|
28
|
+
if (manifest?.issues.length) {
|
|
29
|
+
throw new Error(formatUrlPathIssues(manifest.issues));
|
|
30
|
+
}
|
|
31
|
+
const startUrls = manifest?.paths.map((urlPath) => new URL(urlPath, config.baseUrl).href);
|
|
32
|
+
if (startUrls &&
|
|
33
|
+
config.crawlSettings.maxRequests !== undefined &&
|
|
34
|
+
config.crawlSettings.maxRequests < startUrls.length) {
|
|
35
|
+
throw new Error(`maxRequests (${config.crawlSettings.maxRequests}) must be at least the number of unique manifest paths (${startUrls.length})`);
|
|
36
|
+
}
|
|
37
|
+
if (startUrls &&
|
|
38
|
+
(config.crawlSettings.includePatterns?.length ||
|
|
39
|
+
config.crawlSettings.excludePatterns?.length)) {
|
|
40
|
+
throw new Error("includePatterns and excludePatterns cannot be used with an exact URL manifest");
|
|
41
|
+
}
|
|
42
|
+
const crawler = new BreakcheckCrawler(config.crawlSettings, {
|
|
43
|
+
startUrls,
|
|
44
|
+
followLinks: config.urlPaths === undefined,
|
|
45
|
+
});
|
|
46
|
+
const { datasetName, errors: crawlErrors } = await crawler.crawl(signal);
|
|
47
|
+
signal?.throwIfAborted();
|
|
25
48
|
errors.push(...crawlErrors);
|
|
26
49
|
const dataset = await Dataset.open(datasetName);
|
|
50
|
+
signal?.throwIfAborted();
|
|
27
51
|
const pageCount = await snapshotRepository.saveSnapshot(config.name, {
|
|
28
52
|
dataset,
|
|
29
53
|
metadata: {
|
|
@@ -64,4 +88,18 @@ export async function createSnapshot(config, snapshotRepository) {
|
|
|
64
88
|
};
|
|
65
89
|
}
|
|
66
90
|
}
|
|
91
|
+
function formatUrlPathIssues(issues) {
|
|
92
|
+
return issues
|
|
93
|
+
.map((issue) => {
|
|
94
|
+
switch (issue.type) {
|
|
95
|
+
case "base":
|
|
96
|
+
return `${issue.message}: ${issue.value}`;
|
|
97
|
+
case "entry":
|
|
98
|
+
return `Manifest path ${issue.index + 1} (${issue.value}): ${issue.message}`;
|
|
99
|
+
case "manifest":
|
|
100
|
+
return issue.message;
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
.join("; ");
|
|
104
|
+
}
|
|
67
105
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/snapshot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/snapshot/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Returns route and page-count problems found in a captured snapshot. */
|
|
2
|
+
export async function validateSnapshotRoutes(snapshot, routes) {
|
|
3
|
+
const failures = [];
|
|
4
|
+
for (const route of routes) {
|
|
5
|
+
const page = await snapshot.getPage(route);
|
|
6
|
+
if (!page) {
|
|
7
|
+
failures.push(`The crawl did not capture route "${route}".`);
|
|
8
|
+
}
|
|
9
|
+
else if (page.statusCode < 200 || page.statusCode >= 400) {
|
|
10
|
+
failures.push(`Route "${route}" returned HTTP ${page.statusCode}.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (snapshot.index.metadata.totalPages !== routes.length) {
|
|
14
|
+
failures.push(`Expected ${routes.length} route(s), but captured ${snapshot.index.metadata.totalPages}.`);
|
|
15
|
+
}
|
|
16
|
+
return failures;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=route-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-coverage.js","sourceRoot":"","sources":["../../../src/core/snapshot/route-coverage.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAwB,EACxB,MAAyB;IAEzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,oCAAoC,KAAK,IAAI,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,mBAAmB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CACX,YAAY,MAAM,CAAC,MAAM,2BAA2B,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SnapshotConfig, SnapshotResult, SnapshotRouteUpdateResult } from "../../types/api.js";
|
|
2
|
+
import type { SnapshotRepository } from "./classes/SnapshotRepository.js";
|
|
3
|
+
/** Crawls selected routes and atomically merges them into a stored baseline. */
|
|
4
|
+
export declare function updateSnapshotRoutes(config: SnapshotConfig, baselineSnapshotId: string, snapshotRepository: SnapshotRepository, createSnapshot: (config: SnapshotConfig, signal?: AbortSignal) => Promise<SnapshotResult>, signal?: AbortSignal): Promise<SnapshotRouteUpdateResult>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { resolveUrlPaths } from "../crawler/url-paths.js";
|
|
3
|
+
import { validateSnapshotRoutes } from "./route-coverage.js";
|
|
4
|
+
/** Crawls selected routes and atomically merges them into a stored baseline. */
|
|
5
|
+
export async function updateSnapshotRoutes(config, baselineSnapshotId, snapshotRepository, createSnapshot, signal) {
|
|
6
|
+
signal?.throwIfAborted();
|
|
7
|
+
if (config.urlPaths === undefined) {
|
|
8
|
+
throw new Error("A URL manifest is required for a route-scoped baseline update.");
|
|
9
|
+
}
|
|
10
|
+
if ((config.crawlSettings.includePatterns?.length ?? 0) > 0 ||
|
|
11
|
+
(config.crawlSettings.excludePatterns?.length ?? 0) > 0) {
|
|
12
|
+
throw new Error("Exact-route baseline updates cannot use crawl includePatterns or excludePatterns.");
|
|
13
|
+
}
|
|
14
|
+
const manifest = resolveUrlPaths(config.baseUrl, config.urlPaths);
|
|
15
|
+
if (manifest.issues.length > 0) {
|
|
16
|
+
throw new Error(manifest.issues.map((issue) => issue.message).join("; "));
|
|
17
|
+
}
|
|
18
|
+
await snapshotRepository.loadSnapshot(baselineSnapshotId);
|
|
19
|
+
signal?.throwIfAborted();
|
|
20
|
+
const stagingSnapshotId = `baseline_update_${randomUUID()}`;
|
|
21
|
+
try {
|
|
22
|
+
const snapshot = await createSnapshot({
|
|
23
|
+
...config,
|
|
24
|
+
name: stagingSnapshotId,
|
|
25
|
+
urlPaths: manifest.paths,
|
|
26
|
+
crawlSettings: {
|
|
27
|
+
...config.crawlSettings,
|
|
28
|
+
baseUrl: config.baseUrl,
|
|
29
|
+
includePatterns: [],
|
|
30
|
+
excludePatterns: [],
|
|
31
|
+
},
|
|
32
|
+
}, signal);
|
|
33
|
+
if (snapshot.status === "failed") {
|
|
34
|
+
throw new Error(snapshot.message);
|
|
35
|
+
}
|
|
36
|
+
signal?.throwIfAborted();
|
|
37
|
+
if (snapshot.errors.length > 0) {
|
|
38
|
+
throw new Error(snapshot.errors
|
|
39
|
+
.map((error) => `${error.url}: ${error.message}`)
|
|
40
|
+
.join("; "));
|
|
41
|
+
}
|
|
42
|
+
const stagedSnapshot = await snapshotRepository.loadSnapshot(snapshot.snapshotId);
|
|
43
|
+
const failures = await validateSnapshotRoutes(stagedSnapshot, manifest.paths);
|
|
44
|
+
if (failures.length > 0)
|
|
45
|
+
throw new Error(failures.join("; "));
|
|
46
|
+
signal?.throwIfAborted();
|
|
47
|
+
await snapshotRepository.replaceSnapshotRoutes(baselineSnapshotId, stagingSnapshotId, manifest.paths, signal);
|
|
48
|
+
return {
|
|
49
|
+
snapshotId: baselineSnapshotId,
|
|
50
|
+
updatedRoutes: manifest.paths,
|
|
51
|
+
pageCount: manifest.paths.length,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await snapshotRepository.deleteSnapshot(stagingSnapshotId);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=update-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-routes.js","sourceRoot":"","sources":["../../../src/core/snapshot/update-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
|
-
|
|
2
|
+
import type { StorageOptions } from "../../types/api.js";
|
|
3
|
+
export declare function startViewServer(comparisonName: string, port?: number, options?: StorageOptions): Promise<http.Server>;
|
package/dist/core/view/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import http from "node:http";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { logger } from "../../lib/logger.js";
|
|
6
|
-
import {
|
|
6
|
+
import { resolveStorageContext, resolveStorageEntry, } from "../../lib/storage.js";
|
|
7
7
|
import { createDiffHandler, createIndexHandler } from "./index.handlers.js";
|
|
8
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
9
|
const __dirname = path.dirname(__filename);
|
|
10
|
-
export async function startViewServer(comparisonName, port = 8080) {
|
|
10
|
+
export async function startViewServer(comparisonName, port = 8080, options = {}) {
|
|
11
11
|
const app = express();
|
|
12
|
-
const
|
|
13
|
-
const comparisonDir =
|
|
12
|
+
const storageContext = await resolveStorageContext(options.storageDir);
|
|
13
|
+
const comparisonDir = resolveStorageEntry(storageContext.comparisonsDir, comparisonName, "comparison");
|
|
14
14
|
app.set("view engine", "ejs");
|
|
15
15
|
app.set("views", path.join(__dirname, "..", "..", "views"));
|
|
16
16
|
app.get("/", createIndexHandler(comparisonDir));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/view/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/view/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAAsB,EACtB,IAAI,GAAW,IAAI,EACnB,OAAO,GAAmB,EAAE;IAE5B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,mBAAmB,CACvC,cAAc,CAAC,cAAc,EAC7B,cAAc,EACd,YAAY,CACb,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpE,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,mBAAmB,GAAG,CAAC,KAA4B,EAAE,EAAE;YAC3D,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;YAC5D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAEpD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;YACnC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
export * from "./api/index.js";
|
|
2
|
-
export { createSnapshotFromConfig, listSnapshots, runComparison } from "./api/index.js";
|
|
2
|
+
export { createSnapshotFromConfig, deleteAllComparisons, deleteAllSnapshots, deleteComparison, listSnapshots, runComparison, deleteSnapshot, } from "./api/index.js";
|
|
3
3
|
export * from "./core/view/index.js";
|
|
4
|
+
export * from "./core/crawler/url-paths.js";
|
|
4
5
|
export * from "./lib/logger.js";
|
|
6
|
+
export * from "./lib/config.js";
|
|
5
7
|
export { createLogger, logger } from "./lib/logger.js";
|
|
6
8
|
export * from "./types/api.js";
|
|
7
|
-
export type { ComparisonConfig, SnapshotConfig, SnapshotResult } from "./types/api.js";
|
|
9
|
+
export type { ComparisonConfig, SnapshotConfig, SnapshotResult, StorageOptions, } from "./types/api.js";
|
|
10
|
+
export { resolveStorageContext } from "./lib/storage.js";
|
|
11
|
+
export type { StorageContext } from "./lib/storage.js";
|
|
8
12
|
export * from "./types/compare.js";
|
|
9
13
|
export * from "./types/crawler.js";
|
|
10
14
|
export type { CrawlError } from "./types/crawler.js";
|
|
11
15
|
export * from "./types/rules.js";
|
|
12
16
|
export * from "./types/snapshot.js";
|
|
13
17
|
export type { SnapshotSummary } from "./types/snapshot.js";
|
|
18
|
+
export * from "./types/config.js";
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
export * from "./api/index.js";
|
|
2
2
|
// Explicit exports for CLI and other consumers
|
|
3
|
-
export { createSnapshotFromConfig, listSnapshots, runComparison } from "./api/index.js";
|
|
3
|
+
export { createSnapshotFromConfig, deleteAllComparisons, deleteAllSnapshots, deleteComparison, listSnapshots, runComparison, deleteSnapshot, } from "./api/index.js";
|
|
4
4
|
export * from "./core/view/index.js";
|
|
5
|
+
export * from "./core/crawler/url-paths.js";
|
|
5
6
|
export * from "./lib/logger.js";
|
|
7
|
+
export * from "./lib/config.js";
|
|
6
8
|
export { createLogger, logger } from "./lib/logger.js";
|
|
7
9
|
export * from "./types/api.js";
|
|
10
|
+
export { resolveStorageContext } from "./lib/storage.js";
|
|
8
11
|
export * from "./types/compare.js";
|
|
9
12
|
export * from "./types/crawler.js";
|
|
10
13
|
export * from "./types/rules.js";
|
|
11
14
|
export * from "./types/snapshot.js";
|
|
15
|
+
export * from "./types/config.js";
|
|
12
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,+CAA+C;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,+CAA+C;AAC/C,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACvD,cAAc,gBAAgB,CAAC;AAO/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,mBAAmB,CAAC"}
|