@xapp/arachne-web-service 1.19.0 → 1.21.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/lib/ArachneWebService.d.ts +32 -3
- package/lib/ArachneWebService.js +162 -61
- package/lib/ArachneWebService.js.map +1 -1
- package/lib/GenerativeAIService.d.ts +17 -0
- package/lib/GenerativeAIService.js +70 -26
- package/lib/GenerativeAIService.js.map +1 -1
- package/lib/contants.d.ts +13 -1
- package/lib/contants.js +61 -1
- package/lib/contants.js.map +1 -1
- package/lib/models.d.ts +72 -1
- package/lib/models.js +10 -0
- package/lib/models.js.map +1 -1
- package/lib/utils/aboutUs.d.ts +34 -0
- package/lib/utils/aboutUs.js +144 -0
- package/lib/utils/aboutUs.js.map +1 -0
- package/lib/utils/getPrompt.d.ts +8 -0
- package/lib/utils/getPrompt.js +27 -0
- package/lib/utils/getPrompt.js.map +1 -1
- package/lib/utils/getSiteMap.d.ts +34 -1
- package/lib/utils/getSiteMap.js +127 -3
- package/lib/utils/getSiteMap.js.map +1 -1
- package/lib/utils/pagePatterns.d.ts +16 -1
- package/lib/utils/pagePatterns.js +21 -1
- package/lib/utils/pagePatterns.js.map +1 -1
- package/lib/utils/subpageDetection.d.ts +140 -0
- package/lib/utils/subpageDetection.js +259 -0
- package/lib/utils/subpageDetection.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TAB_CLOSE_TIMEOUT_MS = exports.MIN_SUBPAGE_BUDGET_MS = exports.DEFAULT_MAX_SUBPAGES = exports.DEFAULT_SUBPAGE_TIMEOUT_MS = void 0;
|
|
13
|
+
exports.isSameSite = isSameSite;
|
|
14
|
+
exports.isSubpageDetectionEnabled = isSubpageDetectionEnabled;
|
|
15
|
+
exports.resolveSubpageTargets = resolveSubpageTargets;
|
|
16
|
+
exports.mergeDetectorResults = mergeDetectorResults;
|
|
17
|
+
exports.loadSameSitePage = loadSameSitePage;
|
|
18
|
+
exports.createLazyTab = createLazyTab;
|
|
19
|
+
exports.detectOnSubpages = detectOnSubpages;
|
|
20
|
+
/*! Copyright (c) 2026, XAPP AI */
|
|
21
|
+
const arachne_1 = require("@xapp/arachne");
|
|
22
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
23
|
+
const contants_1 = require("../contants");
|
|
24
|
+
/** Default budget for one subpage: navigation plus detectors. */
|
|
25
|
+
exports.DEFAULT_SUBPAGE_TIMEOUT_MS = 10000;
|
|
26
|
+
/** Default cap on subpages visited in one crawl. */
|
|
27
|
+
exports.DEFAULT_MAX_SUBPAGES = 3;
|
|
28
|
+
/** A subpage is not started with less than this left of the overall budget. */
|
|
29
|
+
exports.MIN_SUBPAGE_BUDGET_MS = 1000;
|
|
30
|
+
/** Longest wait for a subpage tab to close before moving on. */
|
|
31
|
+
exports.TAB_CLOSE_TIMEOUT_MS = 2000;
|
|
32
|
+
const SUBPAGE_TYPES = ["bookingPage", "contactUs", "aboutUs"];
|
|
33
|
+
function parseHttpUrl(value) {
|
|
34
|
+
try {
|
|
35
|
+
const url = new URL(value);
|
|
36
|
+
return url.protocol === "http:" || url.protocol === "https:" ? url : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch (_a) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function siteHost(url) {
|
|
43
|
+
return url.hostname.toLowerCase().replace(/^www\./, "");
|
|
44
|
+
}
|
|
45
|
+
/** Same page regardless of scheme, www, fragment or a trailing slash. */
|
|
46
|
+
function pageKey(url) {
|
|
47
|
+
return `${siteHost(url)}${url.pathname.replace(/\/+$/, "")}${url.search}`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* True when `candidate` is an http(s) URL on the same site as `base`. www and the apex count as the same site;
|
|
51
|
+
* any other subdomain does not.
|
|
52
|
+
*/
|
|
53
|
+
function isSameSite(candidate, base) {
|
|
54
|
+
const a = parseHttpUrl(candidate);
|
|
55
|
+
const b = parseHttpUrl(base);
|
|
56
|
+
return !!a && !!b && siteHost(a) === siteHost(b);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* True when the options ask for at least one page.
|
|
60
|
+
*/
|
|
61
|
+
function isSubpageDetectionEnabled(options) {
|
|
62
|
+
return Array.isArray(options === null || options === void 0 ? void 0 : options.pages) && options.pages.length > 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Picks the subpages to visit: the configured page types that were discovered and are on the same site as the
|
|
66
|
+
* homepage, one visit per page type and per URL, never the homepage itself, at most `maxPages`.
|
|
67
|
+
*
|
|
68
|
+
* @param pages Discovered pages, e.g. `site.pages`
|
|
69
|
+
* @param homepageUrl The URL the crawl started from
|
|
70
|
+
* @param options Subpage detection options
|
|
71
|
+
*/
|
|
72
|
+
function resolveSubpageTargets(pages, homepageUrl, options) {
|
|
73
|
+
var _a;
|
|
74
|
+
if (!isSubpageDetectionEnabled(options) || !pages) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const home = parseHttpUrl(homepageUrl);
|
|
78
|
+
if (!home) {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
const maxPages = typeof (options === null || options === void 0 ? void 0 : options.maxPages) === "number" && options.maxPages >= 0
|
|
82
|
+
? Math.floor(options.maxPages)
|
|
83
|
+
: exports.DEFAULT_MAX_SUBPAGES;
|
|
84
|
+
const targets = [];
|
|
85
|
+
const seenTypes = new Set();
|
|
86
|
+
const seenPages = new Set([pageKey(home)]);
|
|
87
|
+
for (const pageType of (_a = options === null || options === void 0 ? void 0 : options.pages) !== null && _a !== void 0 ? _a : []) {
|
|
88
|
+
if (targets.length >= maxPages)
|
|
89
|
+
break;
|
|
90
|
+
if (!SUBPAGE_TYPES.includes(pageType) || seenTypes.has(pageType))
|
|
91
|
+
continue;
|
|
92
|
+
seenTypes.add(pageType);
|
|
93
|
+
const url = pages[pageType];
|
|
94
|
+
if (!url) {
|
|
95
|
+
(0, stentor_logger_1.log)().debug(`Subpage detection: no ${pageType} page was discovered.`);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (!isSameSite(url, homepageUrl)) {
|
|
99
|
+
(0, stentor_logger_1.log)().info(`Subpage detection: not visiting off-site ${pageType} page ${url}`);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const key = pageKey(new URL(url));
|
|
103
|
+
if (seenPages.has(key)) {
|
|
104
|
+
(0, stentor_logger_1.log)().debug(`Subpage detection: ${pageType} page ${url} is already visited.`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
seenPages.add(key);
|
|
108
|
+
targets.push({ pageType, url });
|
|
109
|
+
}
|
|
110
|
+
return targets;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Merges one page's detector results into the results gathered so far.
|
|
114
|
+
*
|
|
115
|
+
* Each technology appears once. A technology not seen yet is added with `source`. A technology already detected
|
|
116
|
+
* keeps its first source; one only reported as not installed so far is replaced, in place, by a detection.
|
|
117
|
+
*
|
|
118
|
+
* @param target Results gathered so far, mutated
|
|
119
|
+
* @param incoming Results from the page
|
|
120
|
+
* @param source The page they came from
|
|
121
|
+
*/
|
|
122
|
+
function mergeDetectorResults(target, incoming, source) {
|
|
123
|
+
for (const result of incoming) {
|
|
124
|
+
const sourced = Object.assign(Object.assign({}, result), { source });
|
|
125
|
+
const index = target.findIndex((existing) => existing.technology === result.technology);
|
|
126
|
+
if (index < 0) {
|
|
127
|
+
target.push(sourced);
|
|
128
|
+
}
|
|
129
|
+
else if (!target[index].installed && result.installed) {
|
|
130
|
+
target[index] = sourced;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Navigates to a page on the same site and returns its rendered HTML.
|
|
136
|
+
*
|
|
137
|
+
* Rejects, without navigating, for an off-site URL; and rejects when the page does not load within `timeoutMs`,
|
|
138
|
+
* answers with an error status, or redirects off-site.
|
|
139
|
+
*
|
|
140
|
+
* @param page The live page to navigate
|
|
141
|
+
* @param url The page to load
|
|
142
|
+
* @param homepageUrl The URL the crawl started from
|
|
143
|
+
* @param timeoutMs Budget for the navigation and reading the content
|
|
144
|
+
*/
|
|
145
|
+
function loadSameSitePage(page, url, homepageUrl, timeoutMs) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
if (!isSameSite(url, homepageUrl)) {
|
|
148
|
+
throw new Error(`Refusing to navigate to off-site page ${url}`);
|
|
149
|
+
}
|
|
150
|
+
return (0, arachne_1.promiseWithTimeout)(timeoutMs, () => __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
const response = yield page.goto(url, { waitUntil: "load", timeout: timeoutMs });
|
|
152
|
+
const status = response ? response.status() : undefined;
|
|
153
|
+
// status 0 comes from file: URLs
|
|
154
|
+
if (status === undefined || (status !== 0 && (status < 200 || status > 299))) {
|
|
155
|
+
throw new Error(`${url} returned status ${status}`);
|
|
156
|
+
}
|
|
157
|
+
const finalUrl = page.url();
|
|
158
|
+
if (!isSameSite(finalUrl, homepageUrl)) {
|
|
159
|
+
throw new Error(`${url} redirected off-site to ${finalUrl}`);
|
|
160
|
+
}
|
|
161
|
+
return page.content();
|
|
162
|
+
}), `Loading ${url} exceeded ${timeoutMs}ms`);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* A tab that is only opened when first needed, so subpage visits never navigate the page the homepage detectors
|
|
167
|
+
* ran on: a detector that outlived its budget keeps reading the homepage's DOM, not a subpage's.
|
|
168
|
+
*
|
|
169
|
+
* Use one per page visit and `close()` it in a `finally`. Closing is what cancels a navigation that outlived its
|
|
170
|
+
* budget; a timeout race alone leaves it pending, and a second `goto()` on that tab would fail.
|
|
171
|
+
*
|
|
172
|
+
* @param open Opens a new tab and applies the same setup as the crawler's own pages
|
|
173
|
+
* @param closeTimeoutMs Longest wait for the tab to close
|
|
174
|
+
*/
|
|
175
|
+
function createLazyTab(open, closeTimeoutMs = exports.TAB_CLOSE_TIMEOUT_MS) {
|
|
176
|
+
let opening;
|
|
177
|
+
let closed = false;
|
|
178
|
+
return {
|
|
179
|
+
get: () => {
|
|
180
|
+
if (closed) {
|
|
181
|
+
return Promise.reject(new Error("Subpage tab is already closed"));
|
|
182
|
+
}
|
|
183
|
+
if (!opening) {
|
|
184
|
+
opening = open();
|
|
185
|
+
}
|
|
186
|
+
return opening;
|
|
187
|
+
},
|
|
188
|
+
close: () => __awaiter(this, void 0, void 0, function* () {
|
|
189
|
+
closed = true;
|
|
190
|
+
if (!opening) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const closing = opening
|
|
194
|
+
.then((tab) => (tab.isClosed() ? undefined : tab.close({ runBeforeUnload: false })))
|
|
195
|
+
.catch((e) => {
|
|
196
|
+
(0, stentor_logger_1.log)().debug(`Subpage tab could not be opened or closed: ${e instanceof Error ? e.message : e}`);
|
|
197
|
+
});
|
|
198
|
+
yield (0, arachne_1.promiseWithTimeout)(closeTimeoutMs, () => closing, "Closing the subpage tab timed out").catch((e) => {
|
|
199
|
+
(0, stentor_logger_1.log)().warn(`${e.message}, it will be closed when it finishes opening.`);
|
|
200
|
+
});
|
|
201
|
+
}),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Visits each target in turn, each on a fresh tab closed once that target is done, and runs the detector chain on it.
|
|
206
|
+
*
|
|
207
|
+
* A page that fails to load, errors, or does not finish its detectors within its budget is skipped and its partial
|
|
208
|
+
* results are discarded; results already gathered are never lost. Nothing is started once less than
|
|
209
|
+
* MIN_SUBPAGE_BUDGET_MS is left before `deadline`.
|
|
210
|
+
*
|
|
211
|
+
* @returns What happened on each target
|
|
212
|
+
*/
|
|
213
|
+
function detectOnSubpages(props) {
|
|
214
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
const { openTab, homepageUrl, targets, detectors, detectedTechnologies, pageTimeoutMs, deadline, onPageContent, tabCloseTimeoutMs = exports.TAB_CLOSE_TIMEOUT_MS, } = props;
|
|
216
|
+
const visits = [];
|
|
217
|
+
for (const target of targets) {
|
|
218
|
+
const remaining = deadline - Date.now();
|
|
219
|
+
if (remaining < Math.min(exports.MIN_SUBPAGE_BUDGET_MS, pageTimeoutMs)) {
|
|
220
|
+
const reason = `handler budget exhausted (${Math.max(0, remaining)}ms left)`;
|
|
221
|
+
(0, stentor_logger_1.log)().info(`Subpage detection: skipping ${target.pageType} page ${target.url}, ${reason}`);
|
|
222
|
+
visits.push(Object.assign(Object.assign({}, target), { status: "skipped", reason }));
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
const budget = Math.min(pageTimeoutMs, remaining);
|
|
226
|
+
const started = Date.now();
|
|
227
|
+
const results = [];
|
|
228
|
+
// A fresh tab per target: if this target's navigation outlives its budget, closing the tab cancels it,
|
|
229
|
+
// so the next target never starts a navigation on a tab that still has one pending.
|
|
230
|
+
const tab = createLazyTab(openTab, tabCloseTimeoutMs);
|
|
231
|
+
try {
|
|
232
|
+
yield (0, arachne_1.promiseWithTimeout)(budget, () => __awaiter(this, void 0, void 0, function* () {
|
|
233
|
+
const page = yield tab.get();
|
|
234
|
+
const html = yield loadSameSitePage(page, target.url, homepageUrl, budget);
|
|
235
|
+
if (onPageContent) {
|
|
236
|
+
onPageContent(target, html);
|
|
237
|
+
}
|
|
238
|
+
yield (0, contants_1.runDetectorChain)(detectors, html, page, (r) => results.push(...r));
|
|
239
|
+
}), `Subpage ${target.url} exceeded its budget of ${budget}ms`);
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
243
|
+
(0, stentor_logger_1.log)().warn(`Subpage detection: skipping ${target.pageType} page ${target.url}: ${reason}`);
|
|
244
|
+
visits.push(Object.assign(Object.assign({}, target), { status: "skipped", reason }));
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
finally {
|
|
248
|
+
yield tab.close();
|
|
249
|
+
}
|
|
250
|
+
mergeDetectorResults(detectedTechnologies, results, { pageType: target.pageType, url: target.url });
|
|
251
|
+
const installed = results.filter((r) => r.installed).map((r) => r.technology);
|
|
252
|
+
(0, stentor_logger_1.log)().info(`Subpage detection: ${target.pageType} page ${target.url} took ${Date.now() - started}ms, ` +
|
|
253
|
+
`detected ${installed.length ? installed.join(", ") : "nothing"}`);
|
|
254
|
+
visits.push(Object.assign(Object.assign({}, target), { status: "detected" }));
|
|
255
|
+
}
|
|
256
|
+
return visits;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=subpageDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subpageDetection.js","sourceRoot":"","sources":["../../src/utils/subpageDetection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xapp/arachne-web-service",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"types": "lib/index",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"files": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@xapp/arachne": "1.17.4",
|
|
37
|
-
"@xapp/arachne-parsers": "1.
|
|
37
|
+
"@xapp/arachne-parsers": "1.17.0",
|
|
38
38
|
"gpt-3-encoder": "1.1.4",
|
|
39
39
|
"ico-to-png": "0.2.2",
|
|
40
40
|
"node-vibrant": "3.2.1-alpha.1",
|