@xapp/arachne-web-service 1.1.0 → 1.2.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 +19 -0
- package/lib/ArachneWebService.js +72 -94
- package/lib/ArachneWebService.js.map +1 -1
- package/lib/GenerativeAIService.d.ts +36 -0
- package/lib/GenerativeAIService.js +125 -0
- package/lib/GenerativeAIService.js.map +1 -0
- package/lib/models.d.ts +17 -0
- package/lib/utils/getPrompt.js +1 -1
- package/lib/utils/getPrompt.js.map +1 -1
- package/lib/utils/getSiteMap.d.ts +5 -1
- package/lib/utils/getSiteMap.js +20 -4
- package/lib/utils/getSiteMap.js.map +1 -1
- package/lib/utils/image.d.ts +0 -1
- package/lib/utils/image.js +19 -4
- package/lib/utils/image.js.map +1 -1
- package/package.json +13 -12
|
@@ -45,8 +45,27 @@ export interface ArachneAppGetInfoOptions {
|
|
|
45
45
|
* Override the default Detectors
|
|
46
46
|
*/
|
|
47
47
|
detectors?: DetectorConstructor[];
|
|
48
|
+
/**
|
|
49
|
+
* Optional settings to configure where data is pulled from.
|
|
50
|
+
*/
|
|
51
|
+
dataOptions?: {
|
|
52
|
+
/**
|
|
53
|
+
* Prefers information presented on the Contact Us page for information like email & phone number.
|
|
54
|
+
*
|
|
55
|
+
* This can sometimes be different from what is found in JSON Schema data.
|
|
56
|
+
*/
|
|
57
|
+
preferContactUsPage?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Prefers contact information found in the <header> tag.
|
|
60
|
+
*/
|
|
61
|
+
preferHeaderInfo?: boolean;
|
|
62
|
+
};
|
|
48
63
|
}
|
|
49
64
|
export interface WebsiteData {
|
|
65
|
+
/**
|
|
66
|
+
* Website
|
|
67
|
+
*/
|
|
68
|
+
url: string;
|
|
50
69
|
/**
|
|
51
70
|
* Descriptive metadata for the website.
|
|
52
71
|
*/
|
package/lib/ArachneWebService.js
CHANGED
|
@@ -44,16 +44,16 @@ const cheerio = __importStar(require("cheerio"));
|
|
|
44
44
|
const arachne_1 = require("@xapp/arachne");
|
|
45
45
|
const arachne_parsers_1 = require("@xapp/arachne-parsers");
|
|
46
46
|
const stentor_logger_1 = require("stentor-logger");
|
|
47
|
+
const stentor_utils_1 = require("stentor-utils");
|
|
47
48
|
const node_vibrant_1 = __importDefault(require("node-vibrant"));
|
|
48
49
|
const findBestFaviconURL_1 = require("./utils/findBestFaviconURL");
|
|
49
50
|
const image_1 = require("./utils/image");
|
|
50
51
|
const isLambda_1 = require("./utils/isLambda");
|
|
51
52
|
const getSiteMap_1 = require("./utils/getSiteMap");
|
|
52
|
-
const getPrompt_1 = require("./utils/getPrompt");
|
|
53
53
|
const getBusinessData_1 = require("./utils/getBusinessData");
|
|
54
54
|
const getCallToAction_1 = require("./utils/getCallToAction");
|
|
55
55
|
const getBusinessCategoryFromSchema_1 = require("./utils/getBusinessCategoryFromSchema");
|
|
56
|
-
const
|
|
56
|
+
const GenerativeAIService_1 = require("./GenerativeAIService");
|
|
57
57
|
exports.DEFAULT_DETECTORS = [
|
|
58
58
|
arachne_parsers_1.XAPPDetector,
|
|
59
59
|
// Home Service Tools
|
|
@@ -94,8 +94,10 @@ class ArachneWebService {
|
|
|
94
94
|
const screenshots = [];
|
|
95
95
|
let business = {};
|
|
96
96
|
// first get the sitemap
|
|
97
|
-
const
|
|
98
|
-
|
|
97
|
+
const siteMapData = yield (0, getSiteMap_1.getSiteMap)(url);
|
|
98
|
+
if (siteMapData) {
|
|
99
|
+
site.pages = Object.assign({}, siteMapData);
|
|
100
|
+
}
|
|
99
101
|
const queue = new arachne_1.MemoryRequestQueue();
|
|
100
102
|
queue.addRequest({ url });
|
|
101
103
|
const launchOptions = {
|
|
@@ -117,6 +119,7 @@ class ArachneWebService {
|
|
|
117
119
|
(0, stentor_logger_1.log)().debug('Looking for chrome-aws-lambda...');
|
|
118
120
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
119
121
|
const chromium = require('@sparticuz/chrome-aws-lambda');
|
|
122
|
+
(0, stentor_logger_1.log)().debug('Launching puppeteer...');
|
|
120
123
|
browser = yield chromium.puppeteer.launch({
|
|
121
124
|
args: chromium.args,
|
|
122
125
|
defaultViewport: chromium.defaultViewport,
|
|
@@ -136,7 +139,7 @@ class ArachneWebService {
|
|
|
136
139
|
browser,
|
|
137
140
|
pageHandlerTimeout,
|
|
138
141
|
pageHandler: (page, request) => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
-
var _a;
|
|
142
|
+
var _a, _b, _c, _d;
|
|
140
143
|
const title = yield page.title();
|
|
141
144
|
const u = new URL(url);
|
|
142
145
|
const fileName = `${u.hostname}${u.pathname}`.replace(/[./]/g, "_");
|
|
@@ -155,7 +158,8 @@ class ArachneWebService {
|
|
|
155
158
|
const description = $('meta[name="description"]').attr('content');
|
|
156
159
|
const things = new arachne_parsers_1.ArachneJSONLD(html).getThings();
|
|
157
160
|
let localBusiness;
|
|
158
|
-
|
|
161
|
+
// TODO: Why aren't we using this?
|
|
162
|
+
// let homeConstructionBusiness: HomeAndConstructionBusiness | undefined;
|
|
159
163
|
(0, stentor_logger_1.log)().info('Looking through JSON Schema...');
|
|
160
164
|
for (const thing of things) {
|
|
161
165
|
if ((0, arachne_parsers_1.isLocalBusiness)(thing)) {
|
|
@@ -165,7 +169,7 @@ class ArachneWebService {
|
|
|
165
169
|
}
|
|
166
170
|
else if ((0, arachne_parsers_1.isHomeConstructionBusiness)(thing)) {
|
|
167
171
|
(0, stentor_logger_1.log)().debug(`Found home construction business`);
|
|
168
|
-
homeConstructionBusiness = thing;
|
|
172
|
+
// homeConstructionBusiness = thing;
|
|
169
173
|
schema.homeConstructionBusiness = thing;
|
|
170
174
|
}
|
|
171
175
|
else {
|
|
@@ -176,10 +180,15 @@ class ArachneWebService {
|
|
|
176
180
|
if (localBusiness && typeof localBusiness !== "string") {
|
|
177
181
|
const localBusinessLogo = localBusiness.logo;
|
|
178
182
|
if (typeof localBusinessLogo === "string") {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
try {
|
|
184
|
+
const square = yield (0, image_1.imageIsSquare)(localBusinessLogo, 75);
|
|
185
|
+
if (square) {
|
|
186
|
+
(0, stentor_logger_1.log)().debug(`Found a square logo from json+ld ${localBusinessLogo}`);
|
|
187
|
+
site.logo = localBusinessLogo;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
(0, stentor_logger_1.log)().debug(`Error determining if logo is square ${e}`);
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
194
|
}
|
|
@@ -281,96 +290,59 @@ class ArachneWebService {
|
|
|
281
290
|
const { openAIKey } = options;
|
|
282
291
|
// Use OpenAI to determine Call To Action
|
|
283
292
|
if (openAIKey) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
let prompt = webPrompt.prompt;
|
|
287
|
-
let maxTokens = webPrompt.maxTokens;
|
|
288
|
-
let tokens = webPrompt.tokens;
|
|
289
|
-
// first try if over max tokens
|
|
290
|
-
if (maxTokens < 0 && aboutUs) {
|
|
291
|
-
// load about us
|
|
292
|
-
(0, stentor_logger_1.log)().info(`Too many tokens, attempting to load about us page at ${aboutUs}...`);
|
|
293
|
-
yield page.goto(aboutUs);
|
|
294
|
-
(0, stentor_logger_1.log)().info(`Loaded...`);
|
|
295
|
-
const aboutUsHTML = yield page.content();
|
|
296
|
-
(0, stentor_logger_1.log)().debug(aboutUsHTML);
|
|
297
|
-
(0, stentor_logger_1.log)().debug("====");
|
|
298
|
-
const aboutUsMarkdown = new arachne_parsers_1.ArachneHTMLtoText({ stripTags: [...arachne_parsers_1.DEFAULT_STRIP_TAGS, "head", "img", "iframe", "style"] }).convert(aboutUsHTML, true);
|
|
299
|
-
const aboutUsPrompt = (0, getPrompt_1.getWebMarkdownPrompt)(aboutUsMarkdown, url);
|
|
300
|
-
(0, stentor_logger_1.log)().debug(aboutUsMarkdown);
|
|
301
|
-
(0, stentor_logger_1.log)().info(`About Us tokens: ${aboutUsPrompt.tokens} max: ${aboutUsPrompt.maxTokens}`);
|
|
302
|
-
if (aboutUsPrompt.maxTokens > 0) {
|
|
303
|
-
(0, stentor_logger_1.log)().info(`Using about us page.`);
|
|
304
|
-
prompt = aboutUsPrompt.prompt;
|
|
305
|
-
maxTokens = aboutUsPrompt.maxTokens;
|
|
306
|
-
tokens = aboutUsPrompt.tokens;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
if (maxTokens < 0 && localBusiness || homeConstructionBusiness) {
|
|
310
|
-
(0, stentor_logger_1.log)().info(`Too many tokens, attempting to use LocalBusiness schema to generate description.`);
|
|
311
|
-
// try second prompt where we send the JSON.
|
|
312
|
-
const jsonSchemaPrompt = (0, getPrompt_1.getJSONSchemaPrompt)(localBusiness || homeConstructionBusiness, url);
|
|
313
|
-
(0, stentor_logger_1.log)().info(`JSON Schema tokens: ${jsonSchemaPrompt.tokens} max: ${jsonSchemaPrompt.maxTokens}`);
|
|
314
|
-
if (jsonSchemaPrompt.maxTokens > 0) {
|
|
315
|
-
(0, stentor_logger_1.log)().info(`LocalBusiness JSON fits within token limit, using it.`);
|
|
316
|
-
prompt = jsonSchemaPrompt.prompt;
|
|
317
|
-
maxTokens = jsonSchemaPrompt.maxTokens;
|
|
318
|
-
tokens = jsonSchemaPrompt.tokens;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
(0, stentor_logger_1.log)().info(`Final prompt is ${tokens} tokens, setting max_tokens to ${maxTokens}.`);
|
|
322
|
-
const options = {
|
|
323
|
-
method: 'POST',
|
|
324
|
-
headers: {
|
|
325
|
-
'Content-Type': 'application/json',
|
|
326
|
-
'Authorization': `Bearer ${openAIKey}`,
|
|
327
|
-
},
|
|
328
|
-
body: JSON.stringify({
|
|
329
|
-
model: "text-davinci-003",
|
|
330
|
-
prompt,
|
|
331
|
-
temperature: 0.25,
|
|
332
|
-
max_tokens: maxTokens,
|
|
333
|
-
top_p: 1,
|
|
334
|
-
frequency_penalty: 0,
|
|
335
|
-
presence_penalty: 0
|
|
336
|
-
})
|
|
337
|
-
};
|
|
338
|
-
// eslint-disable-next-line no-console
|
|
339
|
-
console.time("open_ai_web");
|
|
340
|
-
let status = 999;
|
|
341
|
-
const openAIResponse = yield fetch('https://api.openai.com/v1/completions', options).then((response) => {
|
|
342
|
-
status = response.status;
|
|
343
|
-
if (status === 200) {
|
|
344
|
-
return response.json();
|
|
345
|
-
}
|
|
346
|
-
return response;
|
|
347
|
-
}).finally(() => {
|
|
348
|
-
// eslint-disable-next-line no-console
|
|
349
|
-
console.timeEnd("open_ai_web");
|
|
293
|
+
const genService = new GenerativeAIService_1.GenerativeAIService({
|
|
294
|
+
key: openAIKey, page
|
|
350
295
|
});
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
296
|
+
aiData = yield genService.getWebsiteAI(markdown, {
|
|
297
|
+
url,
|
|
298
|
+
site,
|
|
299
|
+
schema
|
|
300
|
+
});
|
|
301
|
+
if (((_a = options === null || options === void 0 ? void 0 : options.dataOptions) === null || _a === void 0 ? void 0 : _a.preferContactUsPage) && ((_b = site.pages) === null || _b === void 0 ? void 0 : _b.contactUs)) {
|
|
302
|
+
(0, stentor_logger_1.log)().info(`Using Contact Us page for data.`);
|
|
303
|
+
const contactUsPageUrl = site.pages.contactUs;
|
|
304
|
+
yield page.goto(contactUsPageUrl);
|
|
305
|
+
const contactUsHTML = yield page.content();
|
|
306
|
+
const contactUsMarkdown = new arachne_parsers_1.ArachneHTMLtoText({ stripTags: [...arachne_parsers_1.DEFAULT_STRIP_TAGS, "head", "img", "iframe", "style"] }).convert(contactUsHTML, true);
|
|
307
|
+
const contactUsData = yield genService.getWebsiteAI(contactUsMarkdown, {
|
|
308
|
+
url: contactUsPageUrl
|
|
309
|
+
});
|
|
310
|
+
const contactEmail = contactUsData === null || contactUsData === void 0 ? void 0 : contactUsData.email;
|
|
311
|
+
const contactPhoneNumbers = contactUsData === null || contactUsData === void 0 ? void 0 : contactUsData.phone_numbers;
|
|
312
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(contactPhoneNumbers) && aiData) {
|
|
313
|
+
(0, stentor_logger_1.log)().info(`Updating with contact us phone numbers.\n${JSON.stringify(contactPhoneNumbers)}`);
|
|
314
|
+
aiData.phone_numbers = contactPhoneNumbers;
|
|
359
315
|
}
|
|
360
|
-
|
|
361
|
-
(0, stentor_logger_1.log)().
|
|
362
|
-
|
|
316
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(contactEmail) && aiData) {
|
|
317
|
+
(0, stentor_logger_1.log)().info(`Updating with contact us emails.\n${JSON.stringify(contactEmail)}`);
|
|
318
|
+
aiData.email = contactEmail;
|
|
363
319
|
}
|
|
364
320
|
}
|
|
365
|
-
|
|
366
|
-
(0, stentor_logger_1.log)().
|
|
367
|
-
|
|
321
|
+
if ((_c = options === null || options === void 0 ? void 0 : options.dataOptions) === null || _c === void 0 ? void 0 : _c.preferHeaderInfo) {
|
|
322
|
+
(0, stentor_logger_1.log)().info(`Looking at header information for data.`);
|
|
323
|
+
const headerHTML = yield page.evaluate(() => { var _a; return (_a = document.querySelector('header')) === null || _a === void 0 ? void 0 : _a.outerHTML; });
|
|
324
|
+
if (headerHTML) {
|
|
325
|
+
const headerMarkdown = new arachne_parsers_1.ArachneHTMLtoText({ stripTags: ["script", "head", "img", "iframe", "style"] }).convert(headerHTML, true);
|
|
326
|
+
const headerData = yield genService.getWebsiteAI(headerMarkdown, {
|
|
327
|
+
url
|
|
328
|
+
});
|
|
329
|
+
const headerEmails = headerData === null || headerData === void 0 ? void 0 : headerData.email;
|
|
330
|
+
const headerPhoneNumbers = headerData === null || headerData === void 0 ? void 0 : headerData.phone_numbers;
|
|
331
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(headerPhoneNumbers) && aiData) {
|
|
332
|
+
(0, stentor_logger_1.log)().info(`Updating with header phone numbers.\n${JSON.stringify(headerPhoneNumbers)}`);
|
|
333
|
+
aiData.phone_numbers = headerPhoneNumbers;
|
|
334
|
+
}
|
|
335
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(headerEmails) && aiData) {
|
|
336
|
+
(0, stentor_logger_1.log)().info(`Updating with header emails.\n${JSON.stringify(headerEmails)}`);
|
|
337
|
+
aiData.email = headerEmails;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
368
340
|
}
|
|
369
341
|
}
|
|
370
342
|
const detectors = [];
|
|
371
343
|
// take
|
|
372
344
|
if ((0, stentor_utils_1.existsAndNotEmpty)(options.detectors)) {
|
|
373
|
-
(
|
|
345
|
+
(_d = options.detectors) === null || _d === void 0 ? void 0 : _d.forEach((Detector) => {
|
|
374
346
|
detectors.push(new Detector(html, page));
|
|
375
347
|
});
|
|
376
348
|
}
|
|
@@ -388,6 +360,12 @@ class ArachneWebService {
|
|
|
388
360
|
if (aiData === null || aiData === void 0 ? void 0 : aiData.organization_name) {
|
|
389
361
|
business.name = aiData.organization_name;
|
|
390
362
|
}
|
|
363
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers)) {
|
|
364
|
+
business.phoneNumbers = aiData === null || aiData === void 0 ? void 0 : aiData.phone_numbers;
|
|
365
|
+
}
|
|
366
|
+
if ((0, stentor_utils_1.existsAndNotEmpty)(aiData === null || aiData === void 0 ? void 0 : aiData.email)) {
|
|
367
|
+
business.email = aiData === null || aiData === void 0 ? void 0 : aiData.email;
|
|
368
|
+
}
|
|
391
369
|
if (aiData === null || aiData === void 0 ? void 0 : aiData.industry_category) {
|
|
392
370
|
// It isn't perfect so we need to clean it
|
|
393
371
|
const category = aiData.industry_category; //.replace("_", "-").replace(" ", "-").toLowerCase() as BusinessCategory;
|
|
@@ -409,11 +387,11 @@ class ArachneWebService {
|
|
|
409
387
|
else {
|
|
410
388
|
site.callsToAction = (0, getCallToAction_1.getCallToAction)(html);
|
|
411
389
|
}
|
|
412
|
-
})
|
|
413
|
-
// end of the page handler
|
|
390
|
+
}) // end of the page handler
|
|
414
391
|
});
|
|
415
392
|
yield crawler.run();
|
|
416
393
|
return {
|
|
394
|
+
url,
|
|
417
395
|
site,
|
|
418
396
|
detectedTechnologies,
|
|
419
397
|
schema,
|
|
@@ -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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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*! Copyright (c) 2024, XAPP AI */
|
|
2
|
+
import { ArachnePage } from "@xapp/arachne";
|
|
3
|
+
import { BusinessCategory, WebsiteDescriptiveData, WebsiteSchema } from "./models";
|
|
4
|
+
export interface WebsiteAI {
|
|
5
|
+
organization_name?: string;
|
|
6
|
+
email?: {
|
|
7
|
+
email: string;
|
|
8
|
+
purpose?: string;
|
|
9
|
+
}[];
|
|
10
|
+
phone_numbers?: {
|
|
11
|
+
number: string;
|
|
12
|
+
purpose?: string;
|
|
13
|
+
}[];
|
|
14
|
+
addresses?: string;
|
|
15
|
+
services?: string[];
|
|
16
|
+
calls_to_action?: {
|
|
17
|
+
url?: string;
|
|
18
|
+
callToAction: string;
|
|
19
|
+
}[];
|
|
20
|
+
description: string;
|
|
21
|
+
industry_category?: BusinessCategory;
|
|
22
|
+
}
|
|
23
|
+
export type WebsiteAIData = {
|
|
24
|
+
url: string;
|
|
25
|
+
site?: Pick<WebsiteDescriptiveData, "pages">;
|
|
26
|
+
schema?: WebsiteSchema;
|
|
27
|
+
};
|
|
28
|
+
export declare class GenerativeAIService {
|
|
29
|
+
private key;
|
|
30
|
+
private page;
|
|
31
|
+
constructor(props: {
|
|
32
|
+
key: string;
|
|
33
|
+
page: ArachnePage;
|
|
34
|
+
});
|
|
35
|
+
getWebsiteAI(markdown: string, data: WebsiteAIData): Promise<WebsiteAI | undefined>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
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.GenerativeAIService = void 0;
|
|
13
|
+
const arachne_parsers_1 = require("@xapp/arachne-parsers");
|
|
14
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
15
|
+
const getPrompt_1 = require("./utils/getPrompt");
|
|
16
|
+
class GenerativeAIService {
|
|
17
|
+
constructor(props) {
|
|
18
|
+
this.key = props.key;
|
|
19
|
+
this.page = props.page;
|
|
20
|
+
}
|
|
21
|
+
getWebsiteAI(markdown, data) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const { url, site, schema } = data;
|
|
24
|
+
(0, stentor_logger_1.log)().info(`🔍Getting website AI for ${url}`);
|
|
25
|
+
const pages = site === null || site === void 0 ? void 0 : site.pages;
|
|
26
|
+
const localBusiness = schema === null || schema === void 0 ? void 0 : schema.localBusiness;
|
|
27
|
+
const homeConstructionBusiness = schema === null || schema === void 0 ? void 0 : schema.homeConstructionBusiness;
|
|
28
|
+
let aiData = undefined;
|
|
29
|
+
const webPrompt = (0, getPrompt_1.getWebMarkdownPrompt)(markdown, url);
|
|
30
|
+
let prompt = webPrompt.prompt;
|
|
31
|
+
let maxTokens = webPrompt.maxTokens;
|
|
32
|
+
let tokens = webPrompt.tokens;
|
|
33
|
+
(0, stentor_logger_1.log)().info(`markdown tokens: ${tokens} max: ${maxTokens}`);
|
|
34
|
+
// first try if over max tokens
|
|
35
|
+
if (maxTokens < 0 && (pages === null || pages === void 0 ? void 0 : pages.aboutUs)) {
|
|
36
|
+
const aboutUs = pages.aboutUs;
|
|
37
|
+
// load about us
|
|
38
|
+
(0, stentor_logger_1.log)().info(`Raw Markdown has too many tokens, attempting to load about us page at ${aboutUs}...`);
|
|
39
|
+
yield this.page.goto(aboutUs);
|
|
40
|
+
(0, stentor_logger_1.log)().info(`Loaded...`);
|
|
41
|
+
const aboutUsHTML = yield this.page.content();
|
|
42
|
+
(0, stentor_logger_1.log)().debug(aboutUsHTML);
|
|
43
|
+
(0, stentor_logger_1.log)().debug("====");
|
|
44
|
+
const aboutUsMarkdown = new arachne_parsers_1.ArachneHTMLtoText({ stripTags: [...arachne_parsers_1.DEFAULT_STRIP_TAGS, "head", "img", "iframe", "style"] }).convert(aboutUsHTML, true);
|
|
45
|
+
const aboutUsPrompt = (0, getPrompt_1.getWebMarkdownPrompt)(aboutUsMarkdown, url);
|
|
46
|
+
(0, stentor_logger_1.log)().debug(aboutUsMarkdown);
|
|
47
|
+
(0, stentor_logger_1.log)().info(`About Us tokens: ${aboutUsPrompt.tokens} max: ${aboutUsPrompt.maxTokens}`);
|
|
48
|
+
if (aboutUsPrompt.maxTokens > 0) {
|
|
49
|
+
(0, stentor_logger_1.log)().info(`Using about us page.`);
|
|
50
|
+
prompt = aboutUsPrompt.prompt;
|
|
51
|
+
maxTokens = aboutUsPrompt.maxTokens;
|
|
52
|
+
tokens = aboutUsPrompt.tokens;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (maxTokens < 0 && localBusiness || homeConstructionBusiness) {
|
|
56
|
+
(0, stentor_logger_1.log)().info(`Too many tokens, attempting to use LocalBusiness schema to generate description.`);
|
|
57
|
+
// try second prompt where we send the JSON.
|
|
58
|
+
const jsonSchemaPrompt = (0, getPrompt_1.getJSONSchemaPrompt)(localBusiness || homeConstructionBusiness, url);
|
|
59
|
+
(0, stentor_logger_1.log)().info(`JSON Schema tokens: ${jsonSchemaPrompt.tokens} max: ${jsonSchemaPrompt.maxTokens}`);
|
|
60
|
+
if (jsonSchemaPrompt.maxTokens > 0) {
|
|
61
|
+
(0, stentor_logger_1.log)().info(`LocalBusiness JSON fits within token limit, using it.`);
|
|
62
|
+
prompt = jsonSchemaPrompt.prompt;
|
|
63
|
+
maxTokens = jsonSchemaPrompt.maxTokens;
|
|
64
|
+
tokens = jsonSchemaPrompt.tokens;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
(0, stentor_logger_1.log)().info(`Final prompt is ${tokens} tokens, setting max_tokens to ${maxTokens}.`);
|
|
68
|
+
// TODO: one more attempt, use original markdown but limit it to the first
|
|
69
|
+
if (maxTokens < 0) {
|
|
70
|
+
(0, stentor_logger_1.log)().warn(`Unable to get website AI for ${url}, too many tokens.`);
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
const options = {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
'Content-Type': 'application/json',
|
|
77
|
+
'Authorization': `Bearer ${this.key}`,
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
model: "gpt-3.5-turbo-instruct",
|
|
81
|
+
prompt,
|
|
82
|
+
temperature: 0.25,
|
|
83
|
+
max_tokens: maxTokens,
|
|
84
|
+
top_p: 1,
|
|
85
|
+
frequency_penalty: 0,
|
|
86
|
+
presence_penalty: 0
|
|
87
|
+
})
|
|
88
|
+
};
|
|
89
|
+
// eslint-disable-next-line no-console
|
|
90
|
+
console.time("open_ai_web");
|
|
91
|
+
let status = 999;
|
|
92
|
+
const openAIResponse = yield fetch('https://api.openai.com/v1/completions', options).then((response) => {
|
|
93
|
+
status = response.status;
|
|
94
|
+
if (status === 200) {
|
|
95
|
+
return response.json();
|
|
96
|
+
}
|
|
97
|
+
return response;
|
|
98
|
+
}).finally(() => {
|
|
99
|
+
// eslint-disable-next-line no-console
|
|
100
|
+
console.timeEnd("open_ai_web");
|
|
101
|
+
});
|
|
102
|
+
if (status === 200) {
|
|
103
|
+
const usage = openAIResponse.usage;
|
|
104
|
+
(0, stentor_logger_1.log)().info(`OpenAI token usage: prompt ${usage.prompt_tokens} completion ${usage.completion_tokens} total ${usage.total_tokens}`);
|
|
105
|
+
// Add the leading { as it is included in the query
|
|
106
|
+
const completion = `{\n${openAIResponse.choices[0].text}`;
|
|
107
|
+
try {
|
|
108
|
+
aiData = JSON.parse(completion);
|
|
109
|
+
(0, stentor_logger_1.log)().debug(JSON.stringify(aiData, undefined, 2));
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
(0, stentor_logger_1.log)().warn(`Unable to parse AI response.`);
|
|
113
|
+
(0, stentor_logger_1.log)().info(completion);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
(0, stentor_logger_1.log)().warn(`Unabled to get website info from OpenAI status:${status}`);
|
|
118
|
+
(0, stentor_logger_1.log)().debug(openAIResponse);
|
|
119
|
+
}
|
|
120
|
+
return aiData;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.GenerativeAIService = GenerativeAIService;
|
|
125
|
+
//# sourceMappingURL=GenerativeAIService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerativeAIService.js","sourceRoot":"","sources":["../src/GenerativeAIService.ts"],"names":[],"mappings":"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"}
|
package/lib/models.d.ts
CHANGED
|
@@ -20,6 +20,13 @@ export interface WebsiteDescriptiveData {
|
|
|
20
20
|
* A description of the organization found on the website
|
|
21
21
|
*/
|
|
22
22
|
description?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Pages found from the sitemap
|
|
25
|
+
*/
|
|
26
|
+
pages?: {
|
|
27
|
+
contactUs?: string;
|
|
28
|
+
aboutUs?: string;
|
|
29
|
+
};
|
|
23
30
|
/**
|
|
24
31
|
* Phone numbers
|
|
25
32
|
*/
|
|
@@ -86,6 +93,9 @@ export interface BusinessData {
|
|
|
86
93
|
* Category of the business.
|
|
87
94
|
*/
|
|
88
95
|
category?: BusinessCategory;
|
|
96
|
+
/**
|
|
97
|
+
* What services the business provides.
|
|
98
|
+
*/
|
|
89
99
|
services?: (HOME_SERVICES | HOME_CONSTRUCTION_SERVICES | PROFESSIONAL_SERVICES)[];
|
|
90
100
|
/**
|
|
91
101
|
* How the business describes themselves
|
|
@@ -98,6 +108,13 @@ export interface BusinessData {
|
|
|
98
108
|
number: string;
|
|
99
109
|
purpose?: string;
|
|
100
110
|
}[];
|
|
111
|
+
/**
|
|
112
|
+
* Email addresses and their purpose.
|
|
113
|
+
*/
|
|
114
|
+
email?: {
|
|
115
|
+
email: string;
|
|
116
|
+
purpose?: string;
|
|
117
|
+
}[];
|
|
101
118
|
/**
|
|
102
119
|
* Primary business address
|
|
103
120
|
*/
|
package/lib/utils/getPrompt.js
CHANGED
|
@@ -10,7 +10,7 @@ function getTokens(prompt, response = 550) {
|
|
|
10
10
|
}
|
|
11
11
|
exports.getTokens = getTokens;
|
|
12
12
|
function getWebMarkdownPrompt(markdown, url) {
|
|
13
|
-
const prompt = `Your task is to analyze the contents of a website (provided in markdown below) found at ${url} and provide information about the organization from what is on the website. You will only provide information available through the website content about the services they provide, contact information and a description of the business.\n\n===========\n${markdown}\n===========\nPlease print out in JSON format information about the website above with the following keys:\n\n\"organization_name\" - The name of the organization for the website.\n\"phone_numbers\" - An array of phone numbers for the organization. If available, include what they are used for such as \"customer support\" or \"sales\", if unknown then leave it blank. Use an object with keys: number and purpose.\n\"addresses\" - An array of addresses for the organization.\n\"services\" - An array of the top five unique most common services the organization provides, they should be
|
|
13
|
+
const prompt = `Your task is to analyze the contents of a website (provided in markdown below) found at ${url} and provide information about the organization from what is on the website. You will only provide information available through the website content about the services they provide, contact information and a description of the business.\n\n===========\n${markdown}\n===========\nPlease print out in JSON format on one line information about the website above with the following keys:\n\n\"organization_name\" - The name of the organization for the website.\n\"email\" - An array of emails for the organization. If available, include what they are used for such as \"sales\" or \"info\", if unknown then leave it blank. Use an object with keys: email and purpose.\n\"phone_numbers\" - An array of phone numbers for the organization. If available, include what they are used for such as \"main phone\", \"customer support\" or \"sales\", if unknown then leave it blank. Use an object with keys: number and purpose.\n\"addresses\" - An array of addresses for the organization.\n\"services\" - An array of the top five unique most common services the organization provides, they should be concise and no more than a few words such as \"Roofing\", \"Conversational AI Services\", \"Bathroom Remodelling\"\n\"calls_to_action\" - An array of the top five unique calls to action found on the site and their fully formed URL if they have one. Good examples of calls to actions are \"Request Demo\", \"Get Started\", \"Free Quote\", \"Schedule Consultation\", \"Sign Up\". Bad examples are \"Learn More\" or \"Follow us on Facebook\". Use an object with keys: url & callToAction in the array. For the url please combine it properly with the website's URL.\n\"description\" - A description of what the organization does, include the name of the organization, their services, their location, phone number, email. Keep it concise and to a few sentences and around 480 characters.\n\"industry_category\" - A description of which industry category the business is in. Only pick from one of the following and use the value in quotes: \"business-coaching\" - Business provides coaching services for other business, \"consulting\" - Business provides consulting services, \"financial-services\" - Business provides wealth & asset management services, \"home-services-cleaning\" - Provide janitorial and cleaning services, \"home-services-contractors\" - Electricians, plumbers, roofers, and other technicians and contractors, \"home-services-outdoor\" - Lawn care, gardeners and other outsides residential services, \"insurance\" - Insurance agents and brokers, \"legal-services\" - Lawyers, \"life-coaching\" - Life coaching services, \"real-estate\" - Real estate agents and brokers, \"technology-services\" - IT consultants and software services, \"travel\" - Travel agents\n\n{`;
|
|
14
14
|
const tokens = getTokens(prompt);
|
|
15
15
|
return Object.assign({ prompt }, tokens);
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrompt.js","sourceRoot":"","sources":["../../src/utils/getPrompt.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"getPrompt.js","sourceRoot":"","sources":["../../src/utils/getPrompt.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAQ5C,SAAgB,SAAS,CAAC,MAAc,EAAE,WAAmB,GAAG;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,SAAS,GAAW,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEnD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AALD,8BAKC;AAGD,SAAgB,oBAAoB,CAAC,QAAgB,EAAE,GAAW;IAE9D,MAAM,MAAM,GAAG,2FAA2F,GAAG,iQAAiQ,QAAQ,88EAA88E,CAAC;IACr0F,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,uBACI,MAAM,IACH,MAAM,EACZ;AACL,CAAC;AARD,oDAQC;AAED,SAAgB,mBAAmB,CAAC,IAAS,EAAE,GAAW;IAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,UAAU,2DAA2D,GAAG,saAAsa,CAAC;IACjgB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,uBACI,MAAM,IACH,MAAM,EACZ;AACL,CAAC;AAVD,kDAUC"}
|
|
@@ -12,4 +12,8 @@ import "abort-controller/polyfill";
|
|
|
12
12
|
* @returns
|
|
13
13
|
*/
|
|
14
14
|
export declare function getSitemap(sitemapUrl: string): Promise<string[]>;
|
|
15
|
-
export
|
|
15
|
+
export interface SiteMapData {
|
|
16
|
+
aboutUs?: string;
|
|
17
|
+
contactUs?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function getSiteMap(url: string): Promise<SiteMapData | undefined>;
|
package/lib/utils/getSiteMap.js
CHANGED
|
@@ -32,7 +32,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
35
|
+
exports.getSiteMap = exports.getSitemap = void 0;
|
|
36
36
|
/*! Copyright (c) 2023, XAPP AI */
|
|
37
37
|
require("isomorphic-fetch"); // must be at top, making available to all
|
|
38
38
|
require("abort-controller/polyfill");
|
|
@@ -93,7 +93,7 @@ function getSitemap(sitemapUrl) {
|
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
exports.getSitemap = getSitemap;
|
|
96
|
-
function
|
|
96
|
+
function getSiteMap(url) {
|
|
97
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
98
|
const siteUrl = new URL(url);
|
|
99
99
|
const originalPath = siteUrl.pathname;
|
|
@@ -133,8 +133,24 @@ function getAboutUs(url) {
|
|
|
133
133
|
const aboutUsRegex = /\/(about(-us)?|company\/about|who-we-are|our-story|info\/about|en\/about|about\/our-company)(\/)?$/i;
|
|
134
134
|
return aboutUsRegex.test(path);
|
|
135
135
|
});
|
|
136
|
-
|
|
136
|
+
if (aboutUs) {
|
|
137
|
+
(0, stentor_logger_1.log)().debug(`Found about us page at ${aboutUs}`);
|
|
138
|
+
}
|
|
139
|
+
const contactUs = filtered.find((value) => {
|
|
140
|
+
const url = new URL(value);
|
|
141
|
+
const path = url.pathname;
|
|
142
|
+
// provided by OpenAI
|
|
143
|
+
const contactUsRegex = /\/(contact(-us)?|contactus|contact-us|contact\/|contact\/us|contact\/contact-us)(\/)?$/i;
|
|
144
|
+
return contactUsRegex.test(path);
|
|
145
|
+
});
|
|
146
|
+
if (contactUs) {
|
|
147
|
+
(0, stentor_logger_1.log)().debug(`Found contact us page at ${contactUs}`);
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
aboutUs,
|
|
151
|
+
contactUs
|
|
152
|
+
};
|
|
137
153
|
});
|
|
138
154
|
}
|
|
139
|
-
exports.
|
|
155
|
+
exports.getSiteMap = getSiteMap;
|
|
140
156
|
//# sourceMappingURL=getSiteMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSiteMap.js","sourceRoot":"","sources":["../../src/utils/getSiteMap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAkC;AAClC,4BAA0B,CAAC,0CAA0C;AACrE,qCAAkC;AAClC,iDAAmC;AAEnC,mDAAqC;AAErC,MAAM,YAAY,GAAG,CAAO,GAAW,EAAmB,EAAE;IAExD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC;IAErB,wFAAwF;IACxF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAGhE,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxD,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC,CAAA,CAAA;AAED;;;;;;;;;GASG;AACH,SAAsB,UAAU,CAAC,UAAkB;;QAC/C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YAC5B,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,OAAO,GAAa,EAAE,CAAC;QAE3B,mBAAmB;QACnB,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AA7BD,gCA6BC;
|
|
1
|
+
{"version":3,"file":"getSiteMap.js","sourceRoot":"","sources":["../../src/utils/getSiteMap.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/image.d.ts
CHANGED
package/lib/utils/image.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*! Copyright (c) 2022, XAPP AI */
|
|
3
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -14,7 +13,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
13
|
};
|
|
15
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
15
|
exports.generateImage = exports.hexToRGB = exports.complementHexColor = exports.imageIsSquare = void 0;
|
|
16
|
+
/*! Copyright (c) 2022, XAPP AI */
|
|
17
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
17
18
|
const sharp_1 = __importDefault(require("sharp"));
|
|
19
|
+
const ico_to_png_1 = __importDefault(require("ico-to-png"));
|
|
18
20
|
/**
|
|
19
21
|
* Determines if the image at the URL provided is square.
|
|
20
22
|
*
|
|
@@ -26,11 +28,24 @@ const sharp_1 = __importDefault(require("sharp"));
|
|
|
26
28
|
*/
|
|
27
29
|
function imageIsSquare(url, minimumSize) {
|
|
28
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
(0, stentor_logger_1.log)().debug(`Fetching image from ${url}`);
|
|
29
32
|
const img = yield fetch(url);
|
|
30
33
|
const arrayBuffer = yield img.arrayBuffer();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
let imgBuffer = Buffer.from(arrayBuffer);
|
|
35
|
+
if (url.endsWith(".ico")) {
|
|
36
|
+
// turn it into a png
|
|
37
|
+
(0, stentor_logger_1.log)().debug(`Converting ico to png...`);
|
|
38
|
+
imgBuffer = yield (0, ico_to_png_1.default)(imgBuffer, 75);
|
|
39
|
+
}
|
|
40
|
+
let image;
|
|
41
|
+
try {
|
|
42
|
+
image = yield (0, sharp_1.default)(imgBuffer);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const errorMessage = typeof (error === null || error === void 0 ? void 0 : error.message) === "string" ? ` Error determining squareness: ${error.message}` : "Error when parsing image buffer for squareness determination.";
|
|
46
|
+
throw new Error(errorMessage);
|
|
47
|
+
}
|
|
48
|
+
const meta = yield (image === null || image === void 0 ? void 0 : image.metadata());
|
|
34
49
|
const width = meta.width;
|
|
35
50
|
const height = meta.height;
|
|
36
51
|
const isSquare = width === height;
|
package/lib/utils/image.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.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.2.0",
|
|
4
4
|
"types": "lib/index",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"files": [
|
|
@@ -17,31 +17,32 @@
|
|
|
17
17
|
"@microsoft/api-extractor": "7.39.1",
|
|
18
18
|
"@types/chai": "4.3.11",
|
|
19
19
|
"@types/mocha": "10.0.6",
|
|
20
|
-
"@types/node": "18.19.
|
|
21
|
-
"@types/sinon": "
|
|
20
|
+
"@types/node": "18.19.8",
|
|
21
|
+
"@types/sinon": "17.0.3",
|
|
22
22
|
"@types/sinon-chai": "3.2.12",
|
|
23
23
|
"@xapp/config": "0.2.3",
|
|
24
|
-
"chai": "4.
|
|
24
|
+
"chai": "4.4.1",
|
|
25
25
|
"dotenv": "16.3.1",
|
|
26
26
|
"mocha": "10.2.0",
|
|
27
|
-
"sinon": "
|
|
27
|
+
"sinon": "17.0.1",
|
|
28
28
|
"sinon-chai": "3.7.0",
|
|
29
29
|
"ts-node": "10.9.2",
|
|
30
30
|
"tslib": "2.6.2",
|
|
31
31
|
"typescript": "5.3.3"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@xapp/arachne": "1.
|
|
35
|
-
"@xapp/arachne-parsers": "1.
|
|
34
|
+
"@xapp/arachne": "1.2.0",
|
|
35
|
+
"@xapp/arachne-parsers": "1.2.0",
|
|
36
36
|
"abort-controller": "3.0.0",
|
|
37
37
|
"gpt-3-encoder": "1.1.4",
|
|
38
|
+
"ico-to-png": "0.2.1",
|
|
38
39
|
"isomorphic-fetch": "3.0.0",
|
|
39
40
|
"node-vibrant": "3.2.1-alpha.1",
|
|
40
41
|
"schema-dts": "1.1.2",
|
|
41
|
-
"sharp": "0.
|
|
42
|
-
"stentor-logger": "1.58.
|
|
43
|
-
"stentor-models": "1.58.
|
|
44
|
-
"stentor-utils": "1.58.
|
|
42
|
+
"sharp": "0.33.2",
|
|
43
|
+
"stentor-logger": "1.58.89",
|
|
44
|
+
"stentor-models": "1.58.87",
|
|
45
|
+
"stentor-utils": "1.58.89"
|
|
45
46
|
},
|
|
46
47
|
"scripts": {
|
|
47
48
|
"api": "api-extractor run --local",
|
|
@@ -49,5 +50,5 @@
|
|
|
49
50
|
"clean": "rm -rf ./lib/*",
|
|
50
51
|
"test:f": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\""
|
|
51
52
|
},
|
|
52
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "5d8335a9a3b53608e03c81097be860a920e0612e"
|
|
53
54
|
}
|