@xapp/arachne-web-service 1.9.0 → 1.9.1
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 +13 -1
- package/lib/ArachneWebService.js +186 -124
- package/lib/ArachneWebService.js.map +1 -1
- package/lib/models.d.ts +6 -1
- package/lib/utils/extractContacts.d.ts +1 -1
- package/lib/utils/extractContacts.js +4 -2
- package/lib/utils/extractContacts.js.map +1 -1
- package/lib/utils/findBestFaviconURL.js +47 -15
- package/lib/utils/findBestFaviconURL.js.map +1 -1
- package/lib/utils/getBusinessCategoryFromSchema.d.ts +2 -2
- package/lib/utils/getBusinessCategoryFromSchema.js +16 -16
- package/lib/utils/getBusinessCategoryFromSchema.js.map +1 -1
- package/lib/utils/getBusinessData.d.ts +4 -4
- package/lib/utils/getBusinessData.js +63 -26
- package/lib/utils/getBusinessData.js.map +1 -1
- package/package.json +11 -11
|
@@ -118,6 +118,18 @@ export interface WebsiteData {
|
|
|
118
118
|
*/
|
|
119
119
|
failedRequests?: ArachneRequest[];
|
|
120
120
|
}
|
|
121
|
+
export interface Callbacks {
|
|
122
|
+
/**
|
|
123
|
+
* A callback that will be called with partial data as it is collected.
|
|
124
|
+
*
|
|
125
|
+
* The point field is a reference to where the data was collected.
|
|
126
|
+
*
|
|
127
|
+
* @param data
|
|
128
|
+
* @param point
|
|
129
|
+
* @returns
|
|
130
|
+
*/
|
|
131
|
+
onPartialData?: (data: Partial<WebsiteData>, point?: string) => void;
|
|
132
|
+
}
|
|
121
133
|
export declare class ArachneWebService {
|
|
122
134
|
/**
|
|
123
135
|
* Get data on the provided website.
|
|
@@ -126,5 +138,5 @@ export declare class ArachneWebService {
|
|
|
126
138
|
* @param options
|
|
127
139
|
* @returns
|
|
128
140
|
*/
|
|
129
|
-
getWebsiteData(url: string, options?: ArachneAppGetInfoOptions): Promise<WebsiteData>;
|
|
141
|
+
getWebsiteData(url: string, options?: ArachneAppGetInfoOptions, callbacks?: Callbacks): Promise<WebsiteData>;
|
|
130
142
|
}
|
package/lib/ArachneWebService.js
CHANGED
|
@@ -89,12 +89,18 @@ class ArachneWebService {
|
|
|
89
89
|
* @returns
|
|
90
90
|
*/
|
|
91
91
|
getWebsiteData(url_1) {
|
|
92
|
-
return __awaiter(this, arguments, void 0, function* (url, options = {}) {
|
|
92
|
+
return __awaiter(this, arguments, void 0, function* (url, options = {}, callbacks) {
|
|
93
|
+
// Setup initial data structures, these will be populated as we gather more information
|
|
93
94
|
const site = {};
|
|
94
95
|
const detectedTechnologies = [];
|
|
95
96
|
const schema = {};
|
|
96
97
|
const screenshots = [];
|
|
97
98
|
let business = {};
|
|
99
|
+
// if we have a callback, we will call it with partial data
|
|
100
|
+
let onPartialData = () => { };
|
|
101
|
+
if (typeof (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onPartialData) === "function") {
|
|
102
|
+
onPartialData = callbacks.onPartialData;
|
|
103
|
+
}
|
|
98
104
|
// use the one from options or default to defaultBrowserBuilder
|
|
99
105
|
const { buildBrowser = defaultBrowserBuilder } = options;
|
|
100
106
|
// first get the sitemap
|
|
@@ -147,7 +153,7 @@ class ArachneWebService {
|
|
|
147
153
|
if (pageWait) {
|
|
148
154
|
(0, stentor_logger_1.log)().info(`Waiting for ${pageWaitTime} ms for page to completely load.`);
|
|
149
155
|
yield (0, arachne_1.autoScroll)(page, pageWaitTime);
|
|
150
|
-
(0, stentor_logger_1.log)().info(
|
|
156
|
+
(0, stentor_logger_1.log)().info("...and done waiting.");
|
|
151
157
|
}
|
|
152
158
|
// Get the raw HTML
|
|
153
159
|
// It is important to use page.content() versus response.text() since
|
|
@@ -155,73 +161,115 @@ class ArachneWebService {
|
|
|
155
161
|
// on the page while response.text() only gives you the HTML from the original GET
|
|
156
162
|
const html = yield page.content();
|
|
157
163
|
const $ = cheerio.load(html);
|
|
158
|
-
|
|
164
|
+
// SAVE HTML & MARKDOWN
|
|
165
|
+
(0, stentor_logger_1.log)().info(`Converting HTML to markdown...`);
|
|
166
|
+
// Convert to markdown
|
|
167
|
+
const markdown = new arachne_parsers_1.ArachneHTMLtoText({
|
|
168
|
+
stripTags: [...arachne_parsers_1.DEFAULT_STRIP_TAGS, "head", "img", "iframe", "style"],
|
|
169
|
+
}).convert(html, true);
|
|
170
|
+
(0, stentor_logger_1.log)().debug(`Markdown: ${markdown.length} characters`);
|
|
171
|
+
if (options.markdownPath) {
|
|
172
|
+
const path = (0, path_1.resolve)(options.markdownPath, `${fileName}.md`);
|
|
173
|
+
(0, stentor_logger_1.log)().debug(`Writing markdown to ${path}...`);
|
|
174
|
+
yield fs.promises.writeFile(path, markdown);
|
|
175
|
+
(0, stentor_logger_1.log)().debug(`Markdown written.`);
|
|
176
|
+
}
|
|
177
|
+
if (options.htmlPath) {
|
|
178
|
+
const path = (0, path_1.resolve)(options.htmlPath, `${fileName}.html`);
|
|
179
|
+
(0, stentor_logger_1.log)().debug(`Writing HTML to ${path}...`);
|
|
180
|
+
yield fs.promises.writeFile(path, html);
|
|
181
|
+
(0, stentor_logger_1.log)().debug(`HTML written.`);
|
|
182
|
+
}
|
|
183
|
+
// DONE SAVING MARKDOWN & HTML
|
|
184
|
+
const description = $('meta[name="description"]').attr("content");
|
|
159
185
|
const htmlHasContactInfo = (0, extractContacts_1.hasContactInfo)(html);
|
|
160
186
|
if (htmlHasContactInfo) {
|
|
161
187
|
(0, stentor_logger_1.log)().info(`Contact information detected in the HTML.`);
|
|
162
188
|
}
|
|
163
189
|
const htmlExtractedContacts = (0, extractContacts_1.extractContacts)(html);
|
|
164
190
|
const things = new arachne_parsers_1.ArachneJSONLD(html).getThings();
|
|
165
|
-
|
|
166
|
-
// TODO: Why aren't we using this?
|
|
167
|
-
// let homeConstructionBusiness: HomeAndConstructionBusiness | undefined;
|
|
168
|
-
(0, stentor_logger_1.log)().info('Looking through JSON Schema...');
|
|
191
|
+
(0, stentor_logger_1.log)().info("Looking through JSON Schema...");
|
|
169
192
|
for (const thing of things) {
|
|
170
193
|
if ((0, arachne_parsers_1.isLocalBusiness)(thing)) {
|
|
171
194
|
(0, stentor_logger_1.log)().debug(`Found local business information`);
|
|
172
|
-
localBusiness = thing;
|
|
173
195
|
schema.localBusiness = thing;
|
|
174
196
|
}
|
|
175
197
|
else if ((0, arachne_parsers_1.isHomeConstructionBusiness)(thing)) {
|
|
176
198
|
(0, stentor_logger_1.log)().debug(`Found home construction business`);
|
|
177
|
-
// homeConstructionBusiness = thing;
|
|
178
199
|
schema.homeConstructionBusiness = thing;
|
|
179
200
|
}
|
|
201
|
+
else if ((0, arachne_parsers_1.isOrganization)(thing)) {
|
|
202
|
+
(0, stentor_logger_1.log)().debug(`Found organization information`);
|
|
203
|
+
schema.organization = thing;
|
|
204
|
+
}
|
|
180
205
|
else {
|
|
181
206
|
(0, stentor_logger_1.log)().debug(`Found JSON Schema ${thing["@id"]} ${thing["@type"]}`);
|
|
207
|
+
// console.log(thing);
|
|
182
208
|
}
|
|
183
209
|
}
|
|
184
|
-
// We
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if (typeof localBusinessLogo === "string") {
|
|
188
|
-
try {
|
|
189
|
-
const square = yield (0, image_1.imageIsSquare)(localBusinessLogo, 75);
|
|
190
|
-
if (square) {
|
|
191
|
-
(0, stentor_logger_1.log)().debug(`Found a square logo from json+ld ${localBusinessLogo}`);
|
|
192
|
-
site.logo = localBusinessLogo;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch (e) {
|
|
196
|
-
(0, stentor_logger_1.log)().debug(`Error determining if logo is square ${e}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
// See if we are installed
|
|
210
|
+
// We now go through and try to find data from what we have!
|
|
211
|
+
const businessData = yield (0, getBusinessData_1.getBusinessDataFromSchema)(schema);
|
|
212
|
+
business = Object.assign({}, businessData);
|
|
201
213
|
if (!site.logo) {
|
|
202
|
-
// try to get the
|
|
214
|
+
// try to get the
|
|
203
215
|
(0, stentor_logger_1.log)().debug(`Looking for logo from favicon`);
|
|
204
216
|
const favicon = yield (0, findBestFaviconURL_1.findBestFaviconURL)(page, request.url);
|
|
205
217
|
(0, stentor_logger_1.log)().debug(`Found a favicon ${favicon}, using it.`);
|
|
206
218
|
// favicons are typically square, lets use it?
|
|
207
219
|
site.logo = favicon;
|
|
208
220
|
}
|
|
221
|
+
if (!business.logo && (site === null || site === void 0 ? void 0 : site.logo)) {
|
|
222
|
+
(0, stentor_logger_1.log)().info(`Setting business logo from site logo.`);
|
|
223
|
+
business.logo = site.logo;
|
|
224
|
+
}
|
|
225
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(business.phoneNumbers)) {
|
|
226
|
+
(0, stentor_logger_1.log)().info(`Phone numbers from schema ${(_a = business.phoneNumbers) === null || _a === void 0 ? void 0 : _a.map((p) => p.number).join(", ")}`);
|
|
227
|
+
}
|
|
228
|
+
// If we have no phone numbers from the schema, but we have some from the HTML
|
|
229
|
+
if (!(0, stentor_utils_1.existsAndNotEmpty)(business.phoneNumbers) &&
|
|
230
|
+
(0, stentor_utils_1.existsAndNotEmpty)(htmlExtractedContacts.phoneNumbers)) {
|
|
231
|
+
(0, stentor_logger_1.log)().info(`Updating business phone numbers from HTML. ${htmlExtractedContacts.phoneNumbers.join(", ")}`);
|
|
232
|
+
business.phoneNumbers = htmlExtractedContacts.phoneNumbers.map((p) => ({ number: p }));
|
|
233
|
+
}
|
|
234
|
+
// If we have no emails from the schema, but we have some from the HTML
|
|
235
|
+
if (!business.email && (0, stentor_utils_1.existsAndNotEmpty)(htmlExtractedContacts.emails)) {
|
|
236
|
+
(0, stentor_logger_1.log)().info(`Updating business email from HTML. ${htmlExtractedContacts.emails.join(", ")}`);
|
|
237
|
+
business.email = htmlExtractedContacts.emails.map((e) => ({ email: e }));
|
|
238
|
+
}
|
|
239
|
+
if (!business.category && ((schema === null || schema === void 0 ? void 0 : schema.localBusiness) || (schema === null || schema === void 0 ? void 0 : schema.homeConstructionBusiness))) {
|
|
240
|
+
business.category = (0, getBusinessCategoryFromSchema_1.getBusinessCategoryFromSchema)((schema === null || schema === void 0 ? void 0 : schema.localBusiness) || (schema === null || schema === void 0 ? void 0 : schema.homeConstructionBusiness));
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* PARTIAL DATA AVAILABLE
|
|
244
|
+
*
|
|
245
|
+
* Initial site load will have basic schema data and business data.
|
|
246
|
+
*/
|
|
247
|
+
onPartialData({
|
|
248
|
+
url,
|
|
249
|
+
site,
|
|
250
|
+
detectedTechnologies,
|
|
251
|
+
business,
|
|
252
|
+
schema,
|
|
253
|
+
screenshots,
|
|
254
|
+
}, "AFTER_SITE_LOAD");
|
|
209
255
|
// Try to figure out primary color, requires a screenshot saved to disk to analyze
|
|
210
256
|
if (options.screenshotsPath) {
|
|
211
257
|
const path = (0, path_1.resolve)(options.screenshotsPath, `${fileName}.png`);
|
|
212
258
|
(0, stentor_logger_1.log)().debug(`Saving screenshot to ${path}`);
|
|
213
259
|
const captureBeyondViewport = options.viewportSize ? false : true;
|
|
214
260
|
const fullPage = options.viewportSize ? false : true;
|
|
215
|
-
yield page
|
|
261
|
+
yield page
|
|
262
|
+
.screenshot({
|
|
216
263
|
path,
|
|
217
264
|
fullPage,
|
|
218
|
-
captureBeyondViewport
|
|
219
|
-
})
|
|
265
|
+
captureBeyondViewport,
|
|
266
|
+
})
|
|
267
|
+
.catch((e) => {
|
|
220
268
|
(0, stentor_logger_1.log)().error(`Error saving screenshot`);
|
|
221
269
|
console.error(e);
|
|
222
270
|
});
|
|
223
271
|
screenshots.push({
|
|
224
|
-
filePath: path
|
|
272
|
+
filePath: path,
|
|
225
273
|
});
|
|
226
274
|
(0, stentor_logger_1.log)().debug(`Screenshot saved.`);
|
|
227
275
|
(0, stentor_logger_1.log)().debug(`Analyzing colors...`);
|
|
@@ -259,7 +307,7 @@ class ArachneWebService {
|
|
|
259
307
|
continue;
|
|
260
308
|
default:
|
|
261
309
|
}
|
|
262
|
-
const debugPreview =
|
|
310
|
+
const debugPreview = "\x1b[48;2;" + (0, image_1.hexToRGB)(current === null || current === void 0 ? void 0 : current.hex) + "m \x1b[0m";
|
|
263
311
|
debugSwatches = `${debugSwatches} ${swatch} (${current === null || current === void 0 ? void 0 : current.population}):${current === null || current === void 0 ? void 0 : current.hex} ${debugPreview} `;
|
|
264
312
|
}
|
|
265
313
|
}
|
|
@@ -271,9 +319,9 @@ class ArachneWebService {
|
|
|
271
319
|
}
|
|
272
320
|
site.primaryColor = mostPopular === null || mostPopular === void 0 ? void 0 : mostPopular.hex;
|
|
273
321
|
site.secondaryColor = (0, image_1.complementHexColor)(site.primaryColor);
|
|
274
|
-
const primaryPreview =
|
|
275
|
-
const secondaryPreview =
|
|
276
|
-
const vibrantPreview =
|
|
322
|
+
const primaryPreview = "\x1b[48;2;" + (0, image_1.hexToRGB)(site.primaryColor) + "m \x1b[0m";
|
|
323
|
+
const secondaryPreview = "\x1b[48;2;" + (0, image_1.hexToRGB)(site.secondaryColor) + "m \x1b[0m";
|
|
324
|
+
const vibrantPreview = "\x1b[48;2;" + (0, image_1.hexToRGB)(site.vibrantColor) + "m \x1b[0m";
|
|
277
325
|
(0, stentor_logger_1.log)().debug(`Primary color: ${site.primaryColor} ${primaryPreview}`);
|
|
278
326
|
(0, stentor_logger_1.log)().debug(`Secondary color: ${site.secondaryColor} ${secondaryPreview}`);
|
|
279
327
|
(0, stentor_logger_1.log)().debug(`Vibrant color: ${site.vibrantColor} ${vibrantPreview}`);
|
|
@@ -283,34 +331,33 @@ class ArachneWebService {
|
|
|
283
331
|
else {
|
|
284
332
|
(0, stentor_logger_1.log)().info(`screenshotsPath not provided, cannot determine primaryColor and secondaryColor`);
|
|
285
333
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
(0, stentor_logger_1.log)().debug(`HTML written.`);
|
|
301
|
-
}
|
|
334
|
+
// Done looking for colors
|
|
335
|
+
/**
|
|
336
|
+
* PARTIAL DATA AVAILABLE
|
|
337
|
+
*
|
|
338
|
+
* We now have primaryColor, secondaryColor, and screenshots available.
|
|
339
|
+
*/
|
|
340
|
+
onPartialData({
|
|
341
|
+
url,
|
|
342
|
+
site,
|
|
343
|
+
detectedTechnologies,
|
|
344
|
+
business,
|
|
345
|
+
schema,
|
|
346
|
+
screenshots,
|
|
347
|
+
}, "AFTER_COLORS");
|
|
302
348
|
let aiData = undefined;
|
|
303
349
|
const { openAIKey } = options;
|
|
304
350
|
// Use OpenAI to determine Call To Action
|
|
305
351
|
if (openAIKey) {
|
|
306
352
|
(0, stentor_logger_1.log)().debug(`Calling GenerativeAI for website data...`);
|
|
307
353
|
const genService = new GenerativeAIService_1.GenerativeAIService({
|
|
308
|
-
key: openAIKey,
|
|
354
|
+
key: openAIKey,
|
|
355
|
+
page,
|
|
309
356
|
});
|
|
310
357
|
aiData = yield genService.getWebsiteAI(markdown, {
|
|
311
358
|
url,
|
|
312
359
|
site,
|
|
313
|
-
schema
|
|
360
|
+
schema,
|
|
314
361
|
});
|
|
315
362
|
if (!aiData) {
|
|
316
363
|
(0, stentor_logger_1.log)().info(`No AI Data received from GenerativeAI.`);
|
|
@@ -325,19 +372,21 @@ class ArachneWebService {
|
|
|
325
372
|
(0, stentor_logger_1.log)().warn(`No phone numbers detected in the markdown but AI found some, removing AI phone numbers.`);
|
|
326
373
|
aiData.phone_numbers = [];
|
|
327
374
|
}
|
|
328
|
-
if (((
|
|
375
|
+
if (((_b = options === null || options === void 0 ? void 0 : options.dataOptions) === null || _b === void 0 ? void 0 : _b.preferContactUsPage) && ((_c = site.pages) === null || _c === void 0 ? void 0 : _c.contactUs)) {
|
|
329
376
|
(0, stentor_logger_1.log)().info(`Using Contact Us page for data.`);
|
|
330
377
|
const contactUsPageUrl = site.pages.contactUs;
|
|
331
378
|
yield page.goto(contactUsPageUrl);
|
|
332
379
|
const contactUsHTML = yield page.content();
|
|
333
|
-
const contactUsMarkdown = new arachne_parsers_1.ArachneHTMLtoText({
|
|
380
|
+
const contactUsMarkdown = new arachne_parsers_1.ArachneHTMLtoText({
|
|
381
|
+
stripTags: [...arachne_parsers_1.DEFAULT_STRIP_TAGS, "head", "img", "iframe", "style"],
|
|
382
|
+
}).convert(contactUsHTML, true);
|
|
334
383
|
if ((0, extractContacts_1.hasContactInfo)(contactUsMarkdown)) {
|
|
335
384
|
const extractedContacts = (0, extractContacts_1.extractContacts)(contactUsMarkdown);
|
|
336
385
|
const contactUsData = yield genService.getWebsiteAI(contactUsMarkdown, {
|
|
337
|
-
url: contactUsPageUrl
|
|
386
|
+
url: contactUsPageUrl,
|
|
338
387
|
});
|
|
339
|
-
const contactEmail = (
|
|
340
|
-
const contactPhoneNumbers = (
|
|
388
|
+
const contactEmail = (_d = contactUsData === null || contactUsData === void 0 ? void 0 : contactUsData.email) === null || _d === void 0 ? void 0 : _d.filter((e) => e.email.length > 0);
|
|
389
|
+
const contactPhoneNumbers = (_e = contactUsData === null || contactUsData === void 0 ? void 0 : contactUsData.phone_numbers) === null || _e === void 0 ? void 0 : _e.filter((p) => p.number.length > 0);
|
|
341
390
|
if ((0, stentor_utils_1.existsAndNotEmpty)(contactPhoneNumbers) && aiData) {
|
|
342
391
|
(0, stentor_logger_1.log)().info(`Updating with contact us phone numbers.\n${JSON.stringify(contactPhoneNumbers)}`);
|
|
343
392
|
aiData.phone_numbers = contactPhoneNumbers;
|
|
@@ -357,17 +406,19 @@ class ArachneWebService {
|
|
|
357
406
|
(0, stentor_logger_1.log)().info(`No detected contact information in the Contact Us page`);
|
|
358
407
|
}
|
|
359
408
|
}
|
|
360
|
-
if ((
|
|
409
|
+
if ((_f = options === null || options === void 0 ? void 0 : options.dataOptions) === null || _f === void 0 ? void 0 : _f.preferHeaderInfo) {
|
|
361
410
|
(0, stentor_logger_1.log)().info(`Looking at header information for data.`);
|
|
362
|
-
const headerHTML = yield page.evaluate(() => { var _a; return (_a = document.querySelector(
|
|
411
|
+
const headerHTML = yield page.evaluate(() => { var _a; return (_a = document.querySelector("header")) === null || _a === void 0 ? void 0 : _a.outerHTML; });
|
|
363
412
|
if (headerHTML) {
|
|
364
|
-
const headerMarkdown = new arachne_parsers_1.ArachneHTMLtoText({
|
|
413
|
+
const headerMarkdown = new arachne_parsers_1.ArachneHTMLtoText({
|
|
414
|
+
stripTags: ["script", "head", "img", "iframe", "style"],
|
|
415
|
+
}).convert(headerHTML, true);
|
|
365
416
|
if ((0, extractContacts_1.hasContactInfo)(headerMarkdown)) {
|
|
366
417
|
const headerData = yield genService.getWebsiteAI(headerMarkdown, {
|
|
367
|
-
url
|
|
418
|
+
url,
|
|
368
419
|
});
|
|
369
|
-
const headerEmails = (
|
|
370
|
-
const headerPhoneNumbers = (
|
|
420
|
+
const headerEmails = (_g = headerData === null || headerData === void 0 ? void 0 : headerData.email) === null || _g === void 0 ? void 0 : _g.filter((e) => e.email.length > 0);
|
|
421
|
+
const headerPhoneNumbers = (_h = headerData === null || headerData === void 0 ? void 0 : headerData.phone_numbers) === null || _h === void 0 ? void 0 : _h.filter((p) => p.number.length > 0);
|
|
371
422
|
if ((0, stentor_utils_1.existsAndNotEmpty)(headerPhoneNumbers) && aiData) {
|
|
372
423
|
(0, stentor_logger_1.log)().info(`Updating with header phone numbers.\n${JSON.stringify(headerPhoneNumbers)}`);
|
|
373
424
|
aiData.phone_numbers = headerPhoneNumbers;
|
|
@@ -402,8 +453,63 @@ class ArachneWebService {
|
|
|
402
453
|
else {
|
|
403
454
|
(0, stentor_logger_1.log)().info(`OpenAI key not provided, not calling GenerativeAIService.`);
|
|
404
455
|
}
|
|
456
|
+
// Find some AI overrides (if we have the aiData)
|
|
457
|
+
if (aiData === null || aiData === void 0 ? void 0 : aiData.organization_name) {
|
|
458
|
+
business.name = aiData.organization_name;
|
|
459
|
+
}
|
|
460
|
+
if ((aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers) && (0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers)) {
|
|
461
|
+
(0, stentor_logger_1.log)().info(`Updating business phone numbers from AI data. ${(_j = aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers) === null || _j === void 0 ? void 0 : _j.map((p) => p.number).join(", ")}`);
|
|
462
|
+
business.phoneNumbers = aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers;
|
|
463
|
+
}
|
|
464
|
+
if ((aiData === null || aiData === void 0 ? void 0 : aiData.email) && (0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.email)) {
|
|
465
|
+
(0, stentor_logger_1.log)().info(`Updating business email from AI data. ${(_k = aiData === null || aiData === void 0 ? void 0 : aiData.email) === null || _k === void 0 ? void 0 : _k.map((p) => p.email).join(", ")}`);
|
|
466
|
+
business.email = aiData === null || aiData === void 0 ? void 0 : aiData.email;
|
|
467
|
+
}
|
|
468
|
+
if (aiData === null || aiData === void 0 ? void 0 : aiData.industry_category) {
|
|
469
|
+
// It isn't perfect so we need to clean it
|
|
470
|
+
const category = aiData.industry_category; //.replace("_", "-").replace(" ", "-").toLowerCase() as BusinessCategory;
|
|
471
|
+
business.category = category;
|
|
472
|
+
}
|
|
473
|
+
// if no business addresses from schema, look on AI data
|
|
474
|
+
if (!(0, stentor_utils_1.existsAndNotEmpty)(business.addresses) &&
|
|
475
|
+
(aiData === null || aiData === void 0 ? void 0 : aiData.addresses) &&
|
|
476
|
+
(0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.addresses)) {
|
|
477
|
+
(0, stentor_logger_1.log)().info(`Updating business addresses from AI data.`);
|
|
478
|
+
business.addresses = aiData.addresses;
|
|
479
|
+
}
|
|
480
|
+
// Set some items
|
|
481
|
+
if (aiData === null || aiData === void 0 ? void 0 : aiData.description) {
|
|
482
|
+
site.description = aiData.description;
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
site.description = description;
|
|
486
|
+
}
|
|
487
|
+
if (typeof (aiData === null || aiData === void 0 ? void 0 : aiData.parked_domain) === "boolean") {
|
|
488
|
+
site.parkedDomain = aiData.parked_domain;
|
|
489
|
+
}
|
|
490
|
+
if (aiData === null || aiData === void 0 ? void 0 : aiData.calls_to_action) {
|
|
491
|
+
site.callsToAction = aiData.calls_to_action;
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
site.callsToAction = (0, getCallToAction_1.getCallToAction)(html);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* PARTIAL DATA AVAILABLE
|
|
498
|
+
*
|
|
499
|
+
* We now have primaryColor, secondaryColor, and screenshots available.
|
|
500
|
+
*/
|
|
501
|
+
onPartialData({
|
|
502
|
+
url,
|
|
503
|
+
site,
|
|
504
|
+
detectedTechnologies,
|
|
505
|
+
business,
|
|
506
|
+
schema,
|
|
507
|
+
screenshots,
|
|
508
|
+
}, "AFTER_AI");
|
|
405
509
|
(0, stentor_logger_1.log)().debug(`Preparing detectors...`);
|
|
406
|
-
const detectors = (0, stentor_utils_1.existsAndNotEmpty)(options.detectors)
|
|
510
|
+
const detectors = (0, stentor_utils_1.existsAndNotEmpty)(options.detectors)
|
|
511
|
+
? options.detectors || []
|
|
512
|
+
: contants_1.DEFAULT_DETECTORS;
|
|
407
513
|
(0, stentor_logger_1.log)().info(`Detecting ${detectors.length} technologies...`);
|
|
408
514
|
// go through and detect each
|
|
409
515
|
for (const detector of detectors) {
|
|
@@ -436,69 +542,25 @@ class ArachneWebService {
|
|
|
436
542
|
console.error(e);
|
|
437
543
|
}
|
|
438
544
|
}
|
|
439
|
-
// We now go through and try to find data from what we have!
|
|
440
|
-
const businessData = (0, getBusinessData_1.getBusinessData)(schema.localBusiness || schema.homeConstructionBusiness);
|
|
441
|
-
business = Object.assign({}, businessData);
|
|
442
|
-
if ((0, stentor_utils_1.existsAndNotEmpty)(business.phoneNumbers)) {
|
|
443
|
-
(0, stentor_logger_1.log)().info(`Phone numbers from schema ${(_h = business.phoneNumbers) === null || _h === void 0 ? void 0 : _h.map((p) => p.number).join(", ")}`);
|
|
444
|
-
}
|
|
445
|
-
// Find some AI overrides (if we have the aiData)
|
|
446
|
-
if (aiData === null || aiData === void 0 ? void 0 : aiData.organization_name) {
|
|
447
|
-
business.name = aiData.organization_name;
|
|
448
|
-
}
|
|
449
|
-
if ((aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers) && (0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers)) {
|
|
450
|
-
(0, stentor_logger_1.log)().info(`Updating business phone numbers from AI data. ${(_j = aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers) === null || _j === void 0 ? void 0 : _j.map((p) => p.number).join(", ")}`);
|
|
451
|
-
business.phoneNumbers = aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers;
|
|
452
|
-
}
|
|
453
|
-
// If we have no phone numbers from the schema, but we have some from the HTML
|
|
454
|
-
if (!(0, stentor_utils_1.existsAndNotEmpty)(business.phoneNumbers) && (0, stentor_utils_1.existsAndNotEmpty)(htmlExtractedContacts.phoneNumbers)) {
|
|
455
|
-
(0, stentor_logger_1.log)().info(`Updating business phone numbers from HTML. ${htmlExtractedContacts.phoneNumbers.join(", ")}`);
|
|
456
|
-
business.phoneNumbers = htmlExtractedContacts.phoneNumbers.map((p) => ({ number: p }));
|
|
457
|
-
}
|
|
458
|
-
if ((aiData === null || aiData === void 0 ? void 0 : aiData.email) && (0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.email)) {
|
|
459
|
-
(0, stentor_logger_1.log)().info(`Updating business email from AI data. ${(_k = aiData === null || aiData === void 0 ? void 0 : aiData.email) === null || _k === void 0 ? void 0 : _k.map((p) => p.email).join(", ")}`);
|
|
460
|
-
business.email = aiData === null || aiData === void 0 ? void 0 : aiData.email;
|
|
461
|
-
}
|
|
462
|
-
// If we have no emails from the schema, but we have some from the HTML
|
|
463
|
-
if (!business.email && (0, stentor_utils_1.existsAndNotEmpty)(htmlExtractedContacts.emails)) {
|
|
464
|
-
(0, stentor_logger_1.log)().info(`Updating business email from HTML. ${htmlExtractedContacts.emails.join(", ")}`);
|
|
465
|
-
business.email = htmlExtractedContacts.emails.map((e) => ({ email: e }));
|
|
466
|
-
}
|
|
467
|
-
if (aiData === null || aiData === void 0 ? void 0 : aiData.industry_category) {
|
|
468
|
-
// It isn't perfect so we need to clean it
|
|
469
|
-
const category = aiData.industry_category; //.replace("_", "-").replace(" ", "-").toLowerCase() as BusinessCategory;
|
|
470
|
-
business.category = category;
|
|
471
|
-
}
|
|
472
|
-
if (!business.category && ((schema === null || schema === void 0 ? void 0 : schema.localBusiness) || (schema === null || schema === void 0 ? void 0 : schema.homeConstructionBusiness))) {
|
|
473
|
-
business.category = (0, getBusinessCategoryFromSchema_1.getBusinessCategoryFromSchema)((schema === null || schema === void 0 ? void 0 : schema.localBusiness) || (schema === null || schema === void 0 ? void 0 : schema.homeConstructionBusiness));
|
|
474
|
-
}
|
|
475
|
-
// if no business addresses from schema, look on AI data
|
|
476
|
-
if (!(0, stentor_utils_1.existsAndNotEmpty)(business.addresses) && (aiData === null || aiData === void 0 ? void 0 : aiData.addresses) && (0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.addresses)) {
|
|
477
|
-
(0, stentor_logger_1.log)().info(`Updating business addresses from AI data.`);
|
|
478
|
-
business.addresses = aiData.addresses;
|
|
479
|
-
}
|
|
480
|
-
// Set some items
|
|
481
|
-
if (aiData === null || aiData === void 0 ? void 0 : aiData.description) {
|
|
482
|
-
site.description = aiData.description;
|
|
483
|
-
}
|
|
484
|
-
else {
|
|
485
|
-
site.description = description;
|
|
486
|
-
}
|
|
487
|
-
if (typeof (aiData === null || aiData === void 0 ? void 0 : aiData.parked_domain) === "boolean") {
|
|
488
|
-
site.parkedDomain = aiData.parked_domain;
|
|
489
|
-
}
|
|
490
545
|
const godaddyParked = detectedTechnologies.find((d) => d.technology === arachne_parsers_1.GODADDY_PARKED_DOMAIN);
|
|
491
546
|
if (godaddyParked === null || godaddyParked === void 0 ? void 0 : godaddyParked.installed) {
|
|
492
547
|
// little override here, in case we find the parked domain
|
|
493
548
|
site.parkedDomain = true;
|
|
494
549
|
}
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
550
|
+
/**
|
|
551
|
+
* PARTIAL DATA AVAILABLE
|
|
552
|
+
*
|
|
553
|
+
* We now have primaryColor, secondaryColor, and screenshots available.
|
|
554
|
+
*/
|
|
555
|
+
onPartialData({
|
|
556
|
+
url,
|
|
557
|
+
site,
|
|
558
|
+
detectedTechnologies,
|
|
559
|
+
business,
|
|
560
|
+
schema,
|
|
561
|
+
screenshots,
|
|
562
|
+
}, "AFTER_DETECTORS");
|
|
563
|
+
}), // end of the page handler
|
|
502
564
|
});
|
|
503
565
|
yield crawler.run();
|
|
504
566
|
// see if things failed or not
|
|
@@ -514,7 +576,7 @@ class ArachneWebService {
|
|
|
514
576
|
screenshots,
|
|
515
577
|
business,
|
|
516
578
|
failed,
|
|
517
|
-
failedRequests
|
|
579
|
+
failedRequests,
|
|
518
580
|
};
|
|
519
581
|
});
|
|
520
582
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArachneWebService.js","sourceRoot":"","sources":["../src/ArachneWebService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ArachneWebService.js","sourceRoot":"","sources":["../src/ArachneWebService.ts"],"names":[],"mappings":"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"}
|
package/lib/models.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/*! Copyright (c) 2023, XAPP AI */
|
|
2
|
-
import { HomeAndConstructionBusiness, LocalBusiness } from "schema-dts";
|
|
2
|
+
import { HomeAndConstructionBusiness, LocalBusiness, Organization } from "schema-dts";
|
|
3
3
|
import { SiteMapData } from "./utils/getSiteMap";
|
|
4
4
|
export interface WebsiteSchema {
|
|
5
5
|
localBusiness?: LocalBusiness;
|
|
6
6
|
homeConstructionBusiness?: HomeAndConstructionBusiness;
|
|
7
|
+
organization?: Organization;
|
|
7
8
|
}
|
|
8
9
|
export interface WebsiteDescriptiveData {
|
|
9
10
|
/**
|
|
@@ -111,6 +112,10 @@ export interface BusinessData {
|
|
|
111
112
|
* Name of the business
|
|
112
113
|
*/
|
|
113
114
|
name?: string;
|
|
115
|
+
/**
|
|
116
|
+
* A square image that most likely is the logo.
|
|
117
|
+
*/
|
|
118
|
+
logo?: string;
|
|
114
119
|
/**
|
|
115
120
|
* Category of the business.
|
|
116
121
|
*/
|
|
@@ -21,7 +21,7 @@ export declare function hasEmail(text: string): boolean;
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function hasPhoneNumber(text: string): boolean;
|
|
23
23
|
/**
|
|
24
|
-
* Checks if the given text contains emails or phone numbers.
|
|
24
|
+
* Checks if the given text contains emails or phone numbers (filtering out hallucinated numbers).
|
|
25
25
|
*
|
|
26
26
|
* @param text The text to be checked.
|
|
27
27
|
* @returns An object containing arrays of found emails and phone numbers.
|
|
@@ -39,7 +39,7 @@ function hasPhoneNumber(text) {
|
|
|
39
39
|
return extractContacts(text).phoneNumbers.length > 0;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* Checks if the given text contains emails or phone numbers.
|
|
42
|
+
* Checks if the given text contains emails or phone numbers (filtering out hallucinated numbers).
|
|
43
43
|
*
|
|
44
44
|
* @param text The text to be checked.
|
|
45
45
|
* @returns An object containing arrays of found emails and phone numbers.
|
|
@@ -49,7 +49,9 @@ function extractContacts(text) {
|
|
|
49
49
|
const phoneRegex = /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g;
|
|
50
50
|
const foundEmails = text.match(emailRegex) || [];
|
|
51
51
|
// remove any emails that end in .png or .jpg, .webp, jpeg, avif, svg, gif
|
|
52
|
-
const filtered = foundEmails
|
|
52
|
+
const filtered = foundEmails
|
|
53
|
+
.filter((email) => !email.match(/\.(png|jpg|webp|jpeg|avif|svg|bmp|gif)$/))
|
|
54
|
+
.filter((email) => !(0, arachne_utils_1.isHallucinatedPhoneNumber)(email));
|
|
53
55
|
// and dedupe emails
|
|
54
56
|
const emails = Array.from(new Set(filtered));
|
|
55
57
|
const phoneNumbersMatches = text.match(phoneRegex) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractContacts.js","sourceRoot":"","sources":["../../src/utils/extractContacts.ts"],"names":[],"mappings":";AAAA,kCAAkC;;AAUlC,wCASC;AAQD,4BAEC;AAQD,wCAEC;AAQD,
|
|
1
|
+
{"version":3,"file":"extractContacts.js","sourceRoot":"","sources":["../../src/utils/extractContacts.ts"],"names":[],"mappings":";AAAA,kCAAkC;;AAUlC,wCASC;AAQD,4BAEC;AAQD,wCAEC;AAQD,0CAsBC;AAnED,uDAAgE;AAEhE;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,IAAY;IACvC,uCAAuC;IAEvC,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACjC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,IAAY;IACvC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,IAAY;IACxC,MAAM,UAAU,GAAG,sDAAsD,CAAC;IAC1E,MAAM,UAAU,GAAG,gCAAgC,CAAC;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAEjD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,WAAW;SACvB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC1E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,yCAAyB,EAAC,KAAK,CAAC,CAAC,CAAC;IAE1D,oBAAoB;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7C,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAEzD,kDAAkD;IAClD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAChE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAA,yCAAyB,EAAC,MAAM,CAAC,CACjD,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.findBestFaviconURL = findBestFaviconURL;
|
|
13
|
-
const getDOMElementHREF_1 = require("./getDOMElementHREF");
|
|
14
13
|
/**
|
|
15
14
|
* For the given page, find the best favicon URL.
|
|
16
15
|
*
|
|
@@ -22,19 +21,52 @@ const getDOMElementHREF_1 = require("./getDOMElementHREF");
|
|
|
22
21
|
*/
|
|
23
22
|
function findBestFaviconURL(page, pageUrl) {
|
|
24
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
`link[rel="icon"]`,
|
|
28
|
-
`link[rel="shortcut icon"]`
|
|
29
|
-
];
|
|
24
|
+
var _a;
|
|
25
|
+
const rootUrl = new URL(pageUrl).protocol + "//" + new URL(pageUrl).host;
|
|
30
26
|
let faviconUrlFromDocument = null;
|
|
31
|
-
for
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
// look for apple-touch-icon && msapplication-TileImage, these are high res icons
|
|
28
|
+
const highResIcons = yield page.evaluate(() => {
|
|
29
|
+
const icons = document.querySelectorAll(`link[rel="apple-touch-icon"], link[rel="msapplication-TileImage"], link[rel="icon"], link[rel="shortcut icon"]`);
|
|
30
|
+
// return an array of hrefs & sizes
|
|
31
|
+
return Array.from(icons).map((icon) => {
|
|
32
|
+
return {
|
|
33
|
+
href: icon.getAttribute("href"),
|
|
34
|
+
sizes: icon.getAttribute("sizes"),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
// now, look for the highest res icon, not more than 192x192, if we can't find one we just default to the first one we find
|
|
39
|
+
let bestIcon = null;
|
|
40
|
+
for (const icon of highResIcons) {
|
|
41
|
+
if (icon.sizes) {
|
|
42
|
+
const sizes = icon.sizes.split("x");
|
|
43
|
+
if (sizes.length === 2) {
|
|
44
|
+
const width = parseInt(sizes[0]);
|
|
45
|
+
const height = parseInt(sizes[1]);
|
|
46
|
+
if (width <= 192 && height <= 192) {
|
|
47
|
+
if (bestIcon === null) {
|
|
48
|
+
bestIcon = icon;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const bestIconSizes = (_a = bestIcon.sizes) === null || _a === void 0 ? void 0 : _a.split("x");
|
|
52
|
+
if (bestIconSizes) {
|
|
53
|
+
const bestWidth = parseInt(bestIconSizes[0]);
|
|
54
|
+
const bestHeight = parseInt(bestIconSizes[1]);
|
|
55
|
+
if (width > bestWidth && height > bestHeight) {
|
|
56
|
+
bestIcon = icon;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
35
62
|
}
|
|
36
|
-
|
|
37
|
-
|
|
63
|
+
}
|
|
64
|
+
if (bestIcon) {
|
|
65
|
+
faviconUrlFromDocument = bestIcon.href;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// no high res icon found, just use the first one we found
|
|
69
|
+
faviconUrlFromDocument = highResIcons[0].href;
|
|
38
70
|
}
|
|
39
71
|
if (faviconUrlFromDocument === null) {
|
|
40
72
|
// No favicon link found in document, best URL is likley favicon.ico at root
|
|
@@ -47,13 +79,13 @@ function findBestFaviconURL(page, pageUrl) {
|
|
|
47
79
|
// absolute url
|
|
48
80
|
return faviconUrlFromDocument;
|
|
49
81
|
}
|
|
50
|
-
else if (faviconUrlFromDocument.substr(0, 1) ===
|
|
82
|
+
else if (faviconUrlFromDocument.substr(0, 1) === "/") {
|
|
51
83
|
// favicon relative to root
|
|
52
|
-
return
|
|
84
|
+
return rootUrl + faviconUrlFromDocument;
|
|
53
85
|
}
|
|
54
86
|
else {
|
|
55
87
|
// favicon relative to current (pageUrl) URL
|
|
56
|
-
return
|
|
88
|
+
return pageUrl + "/" + faviconUrlFromDocument;
|
|
57
89
|
}
|
|
58
90
|
});
|
|
59
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findBestFaviconURL.js","sourceRoot":"","sources":["../../src/utils/findBestFaviconURL.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"findBestFaviconURL.js","sourceRoot":"","sources":["../../src/utils/findBestFaviconURL.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright (c) 2023, XAPP AI */
|
|
2
|
-
import { HomeAndConstructionBusiness, LocalBusiness } from "schema-dts";
|
|
2
|
+
import { HomeAndConstructionBusiness, LocalBusiness, Organization } from "schema-dts";
|
|
3
3
|
import { BusinessCategory } from "../models";
|
|
4
|
-
export declare function getBusinessCategoryFromSchema(schema: LocalBusiness | HomeAndConstructionBusiness | undefined): BusinessCategory | undefined;
|
|
4
|
+
export declare function getBusinessCategoryFromSchema(schema: LocalBusiness | HomeAndConstructionBusiness | Organization | undefined): BusinessCategory | undefined;
|
|
@@ -15,28 +15,28 @@ function getBusinessCategoryFromSchema(schema) {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
switch (type) {
|
|
18
|
-
case
|
|
19
|
-
return
|
|
20
|
-
case
|
|
21
|
-
return
|
|
18
|
+
case "ProfessionalService":
|
|
19
|
+
return "consulting";
|
|
20
|
+
case "FinancialService":
|
|
21
|
+
return "financial-services";
|
|
22
22
|
case "Electrician":
|
|
23
23
|
case "GeneralContractor":
|
|
24
24
|
case "Plumber":
|
|
25
25
|
case "HVACBusiness":
|
|
26
26
|
case "RoofingContractor":
|
|
27
27
|
case "HousePainter":
|
|
28
|
-
case
|
|
29
|
-
return
|
|
30
|
-
case
|
|
31
|
-
return
|
|
32
|
-
case
|
|
33
|
-
return
|
|
34
|
-
case
|
|
35
|
-
return
|
|
36
|
-
case
|
|
37
|
-
return
|
|
38
|
-
case
|
|
39
|
-
return
|
|
28
|
+
case "HomeAndConstructionBusiness":
|
|
29
|
+
return "home-services-contractors";
|
|
30
|
+
case "InsuranceAgency":
|
|
31
|
+
return "insurance";
|
|
32
|
+
case "LegalService":
|
|
33
|
+
return "legal-services";
|
|
34
|
+
case "RealEstateAgent":
|
|
35
|
+
return "real-estate";
|
|
36
|
+
case "InternetCafe":
|
|
37
|
+
return "technology-services";
|
|
38
|
+
case "TravelAgency":
|
|
39
|
+
return "travel";
|
|
40
40
|
default:
|
|
41
41
|
return undefined;
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBusinessCategoryFromSchema.js","sourceRoot":"","sources":["../../src/utils/getBusinessCategoryFromSchema.ts"],"names":[],"mappings":";AAAA,kCAAkC;;AAMlC,
|
|
1
|
+
{"version":3,"file":"getBusinessCategoryFromSchema.js","sourceRoot":"","sources":["../../src/utils/getBusinessCategoryFromSchema.ts"],"names":[],"mappings":";AAAA,kCAAkC;;AAMlC,sEAuCC;AAzCD,2DAAgD;AAEhD,SAAgB,6BAA6B,CACzC,MAA8E;IAE9E,IAAI,IAAI,GAAW,EAAE,CAAC;IACtB,IAAI,IAAA,yBAAO,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,qBAAqB;YACtB,OAAO,YAAY,CAAC;QACxB,KAAK,kBAAkB;YACnB,OAAO,oBAAoB,CAAC;QAChC,KAAK,aAAa,CAAC;QACnB,KAAK,mBAAmB,CAAC;QACzB,KAAK,SAAS,CAAC;QACf,KAAK,cAAc,CAAC;QACpB,KAAK,mBAAmB,CAAC;QACzB,KAAK,cAAc,CAAC;QACpB,KAAK,6BAA6B;YAC9B,OAAO,2BAA2B,CAAC;QACvC,KAAK,iBAAiB;YAClB,OAAO,WAAW,CAAC;QACvB,KAAK,cAAc;YACf,OAAO,gBAAgB,CAAC;QAC5B,KAAK,iBAAiB;YAClB,OAAO,aAAa,CAAC;QACzB,KAAK,cAAc;YACf,OAAO,qBAAqB,CAAC;QACjC,KAAK,cAAc;YACf,OAAO,QAAQ,CAAC;QACpB;YACI,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { BusinessData } from "../models";
|
|
1
|
+
import { HomeAndConstructionBusiness, LocalBusiness, Organization } from "schema-dts";
|
|
2
|
+
import { BusinessData, WebsiteSchema } from "../models";
|
|
4
3
|
/**
|
|
5
4
|
* Will attempt to extract business data from a schema.org schema.
|
|
6
5
|
*
|
|
7
6
|
* @param schema
|
|
8
7
|
* @returns
|
|
9
8
|
*/
|
|
10
|
-
export declare function getBusinessData(schema: LocalBusiness | HomeAndConstructionBusiness | undefined): Partial<BusinessData
|
|
9
|
+
export declare function getBusinessData(schema: LocalBusiness | HomeAndConstructionBusiness | Organization | undefined): Promise<Partial<BusinessData>>;
|
|
10
|
+
export declare function getBusinessDataFromSchema(schema: WebsiteSchema): Promise<Partial<BusinessData>>;
|
|
@@ -1,7 +1,21 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.getBusinessData = getBusinessData;
|
|
13
|
+
exports.getBusinessDataFromSchema = getBusinessDataFromSchema;
|
|
14
|
+
/*! Copyright (c) 2023, XAPP AI */
|
|
4
15
|
const arachne_parsers_1 = require("@xapp/arachne-parsers");
|
|
16
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
17
|
+
const image_1 = require("./image");
|
|
18
|
+
const getBusinessCategoryFromSchema_1 = require("./getBusinessCategoryFromSchema");
|
|
5
19
|
/**
|
|
6
20
|
* Will attempt to extract business data from a schema.org schema.
|
|
7
21
|
*
|
|
@@ -9,37 +23,60 @@ const arachne_parsers_1 = require("@xapp/arachne-parsers");
|
|
|
9
23
|
* @returns
|
|
10
24
|
*/
|
|
11
25
|
function getBusinessData(schema) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const partial = {};
|
|
16
|
-
if (schema && typeof schema === "object") {
|
|
17
|
-
// try to get it from JSON?
|
|
18
|
-
if (typeof schema.name === "string") {
|
|
19
|
-
partial.name = schema === null || schema === void 0 ? void 0 : schema.name;
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
if (!schema) {
|
|
28
|
+
return {};
|
|
20
29
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const partial = {};
|
|
31
|
+
if (schema && typeof schema === "object") {
|
|
32
|
+
// try to get it from JSON?
|
|
33
|
+
if (typeof schema.name === "string") {
|
|
34
|
+
partial.name = schema === null || schema === void 0 ? void 0 : schema.name;
|
|
35
|
+
}
|
|
36
|
+
if (typeof schema.telephone === "string") {
|
|
37
|
+
partial.phoneNumbers = [{ number: schema.telephone }];
|
|
38
|
+
}
|
|
39
|
+
if (typeof schema.logo === "string") {
|
|
40
|
+
try {
|
|
41
|
+
const square = yield (0, image_1.imageIsSquare)(schema.logo, 75);
|
|
42
|
+
if (square) {
|
|
43
|
+
(0, stentor_logger_1.log)().debug(`Found a square logo from json+ld ${schema.logo}`);
|
|
44
|
+
partial.logo = schema.logo;
|
|
45
|
+
}
|
|
33
46
|
}
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
catch (e) {
|
|
48
|
+
(0, stentor_logger_1.log)().debug(`Error determining if logo is square ${e}`);
|
|
36
49
|
}
|
|
37
|
-
|
|
38
|
-
|
|
50
|
+
}
|
|
51
|
+
if ((0, arachne_parsers_1.isTyped)(schema.address)) {
|
|
52
|
+
const address = schema.address;
|
|
53
|
+
if ((0, arachne_parsers_1.isPostalAddress)(address)) {
|
|
54
|
+
const bizAddress = {};
|
|
55
|
+
if (address.addressLocality && typeof address.addressLocality === "string") {
|
|
56
|
+
bizAddress.locality = address.addressLocality;
|
|
57
|
+
}
|
|
58
|
+
if (address.streetAddress && typeof address.streetAddress === "string") {
|
|
59
|
+
bizAddress.streetAddress = address.streetAddress;
|
|
60
|
+
}
|
|
61
|
+
if (address.postalCode && typeof address.postalCode === "string") {
|
|
62
|
+
bizAddress.postalCode = address.postalCode;
|
|
63
|
+
}
|
|
64
|
+
if (Object.keys(bizAddress).length > 0) {
|
|
65
|
+
partial.addresses = [bizAddress];
|
|
66
|
+
}
|
|
39
67
|
}
|
|
40
68
|
}
|
|
41
69
|
}
|
|
42
|
-
|
|
43
|
-
|
|
70
|
+
partial.category = (0, getBusinessCategoryFromSchema_1.getBusinessCategoryFromSchema)(schema);
|
|
71
|
+
return partial;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function getBusinessDataFromSchema(schema) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const localBusiness = yield getBusinessData(schema.localBusiness);
|
|
77
|
+
const organization = yield getBusinessData(schema.organization);
|
|
78
|
+
const homeAndConstructionBusiness = yield getBusinessData(schema.homeConstructionBusiness);
|
|
79
|
+
return Object.assign(Object.assign(Object.assign({}, homeAndConstructionBusiness), localBusiness), organization);
|
|
80
|
+
});
|
|
44
81
|
}
|
|
45
82
|
//# sourceMappingURL=getBusinessData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBusinessData.js","sourceRoot":"","sources":["../../src/utils/getBusinessData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getBusinessData.js","sourceRoot":"","sources":["../../src/utils/getBusinessData.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.9.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"types": "lib/index",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"files": [
|
|
@@ -14,27 +14,27 @@
|
|
|
14
14
|
"node": "^14 || ^16 || ^18 || ^20.0.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@microsoft/api-extractor": "7.
|
|
17
|
+
"@microsoft/api-extractor": "7.49.2",
|
|
18
18
|
"@sparticuz/chromium": "131.0.1",
|
|
19
19
|
"@types/chai": "4.3.20",
|
|
20
20
|
"@types/mocha": "10.0.10",
|
|
21
|
-
"@types/node": "20.17.
|
|
21
|
+
"@types/node": "20.17.17",
|
|
22
22
|
"@types/sinon": "17.0.3",
|
|
23
23
|
"@types/sinon-chai": "3.2.12",
|
|
24
24
|
"@xapp/config": "0.2.3",
|
|
25
25
|
"chai": "4.5.0",
|
|
26
26
|
"dotenv": "16.4.7",
|
|
27
27
|
"mocha": "10.8.2",
|
|
28
|
-
"puppeteer-core": "
|
|
28
|
+
"puppeteer-core": "24.1.1",
|
|
29
29
|
"sinon": "18.0.1",
|
|
30
30
|
"sinon-chai": "3.7.0",
|
|
31
31
|
"ts-node": "10.9.2",
|
|
32
32
|
"tslib": "2.8.1",
|
|
33
|
-
"typescript": "5.7.
|
|
33
|
+
"typescript": "5.7.3"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@xapp/arachne": "1.9.
|
|
37
|
-
"@xapp/arachne-parsers": "1.9.
|
|
36
|
+
"@xapp/arachne": "1.9.1",
|
|
37
|
+
"@xapp/arachne-parsers": "1.9.1",
|
|
38
38
|
"abort-controller": "3.0.0",
|
|
39
39
|
"gpt-3-encoder": "1.1.4",
|
|
40
40
|
"ico-to-png": "0.2.2",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"node-vibrant": "3.2.1-alpha.1",
|
|
43
43
|
"schema-dts": "1.1.2",
|
|
44
44
|
"sharp": "0.33.5",
|
|
45
|
-
"stentor-logger": "1.59.
|
|
46
|
-
"stentor-models": "1.59.
|
|
47
|
-
"stentor-utils": "1.59.
|
|
45
|
+
"stentor-logger": "1.59.144",
|
|
46
|
+
"stentor-models": "1.59.144",
|
|
47
|
+
"stentor-utils": "1.59.144"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"puppeteer-core": "23.10.2"
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\"",
|
|
57
57
|
"test:f": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\""
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "c8ed6c0412c3eeb6706f1555d9a553ac35952840"
|
|
60
60
|
}
|