From 0d79173e5d384e328c00cc5926eb5f82f538ab10 Mon Sep 17 00:00:00 2001 From: babayaga Date: Tue, 25 Nov 2025 11:07:35 +0100 Subject: [PATCH] cleanup --- packages/search/dist-in/lib/email.d.ts | 14 +- packages/search/dist-in/lib/email.js | 2 +- packages/search/dist-in/lib/google.d.ts | 132 +++ packages/search/dist-in/lib/google.js | 14 + .../search/dist-in/lib/googlemaps-utils.d.ts | 13 + .../search/dist-in/lib/googlemaps-utils.js | 89 ++ .../search/dist-in/lib/googlemaps-zod.d.ts | 981 ++++++++++++++++++ packages/search/dist-in/lib/googlemaps-zod.js | 161 +++ packages/search/dist-in/lib/googlemaps.d.ts | 10 +- packages/search/dist-in/lib/googlemaps.js | 91 +- packages/search/dist-in/lib/html.d.ts | 9 +- packages/search/dist-in/lib/html.js | 83 +- packages/search/dist-in/lib/map_types.d.ts | 128 ++- packages/search/dist-in/lib/resolve.d.ts | 3 + packages/search/dist-in/lib/resolve.js | 5 + packages/search/package.json | 6 +- packages/search/src/lib/email.ts | 12 +- packages/search/src/lib/google.ts | 251 +++-- packages/search/src/lib/googlemaps-utils.ts | 103 ++ packages/search/src/lib/googlemaps-zod.ts | 190 ++++ packages/search/src/lib/googlemaps.ts | 126 ++- packages/search/src/lib/html.ts | 110 +- packages/search/src/lib/map_types.ts | 145 ++- .../maps/barcelona/spain/all/all-10.xls | Bin 0 -> 18594 bytes .../maps/barcelona/spain/all/all-10.xls.json | 163 +++ .../spain/category/plastichub-10.xls | Bin 0 -> 18834 bytes .../spain/category/plastichub-10.xls.json | 347 +++++++ .../spain/category/plastichub-10_options.json | 34 + .../maps/barcelona/spain/search-media.json | 304 ++++++ 29 files changed, 3206 insertions(+), 320 deletions(-) create mode 100644 packages/search/dist-in/lib/google.d.ts create mode 100644 packages/search/dist-in/lib/google.js create mode 100644 packages/search/dist-in/lib/googlemaps-utils.d.ts create mode 100644 packages/search/dist-in/lib/googlemaps-utils.js create mode 100644 packages/search/dist-in/lib/googlemaps-zod.d.ts create mode 100644 packages/search/dist-in/lib/googlemaps-zod.js create mode 100644 packages/search/dist-in/lib/resolve.d.ts create mode 100644 packages/search/dist-in/lib/resolve.js create mode 100644 packages/search/src/lib/googlemaps-utils.ts create mode 100644 packages/search/src/lib/googlemaps-zod.ts create mode 100644 packages/search/test/campaign/maps/barcelona/spain/all/all-10.xls create mode 100644 packages/search/test/campaign/maps/barcelona/spain/all/all-10.xls.json create mode 100644 packages/search/test/campaign/maps/barcelona/spain/category/plastichub-10.xls create mode 100644 packages/search/test/campaign/maps/barcelona/spain/category/plastichub-10.xls.json create mode 100644 packages/search/test/campaign/maps/barcelona/spain/category/plastichub-10_options.json create mode 100644 packages/search/test/campaign/maps/barcelona/spain/search-media.json diff --git a/packages/search/dist-in/lib/email.d.ts b/packages/search/dist-in/lib/email.d.ts index dc902aa1..36aebb1c 100644 --- a/packages/search/dist-in/lib/email.d.ts +++ b/packages/search/dist-in/lib/email.d.ts @@ -3,8 +3,14 @@ import { LocalResult } from './map_types.js'; export declare class HtmlToTextTransformer extends MappingDocumentTransformer { static lc_name(): string; constructor(options?: {}); - _transformDocument(document: any): Promise>; + _transformDocument(document: Document): Promise>; } -export declare const cheerioLoader: (url: any) => Promise; -export declare const puppeteerLoader: (url: any, headless: any, location: LocalResult) => Promise; -export declare const findEMail: (question: string, url: string, opts: any, location: LocalResult) => Promise; +export declare const cheerioLoader: (url: string) => Promise; +export declare const puppeteerLoader: (url: string, headless: boolean, location: LocalResult) => Promise; +export declare const findEMail: (question: string, url: string, opts: { + headless?: boolean; + searchFrom?: string; + [key: string]: any; +}, location: LocalResult) => Promise; diff --git a/packages/search/dist-in/lib/email.js b/packages/search/dist-in/lib/email.js index 29ddd1f7..7fc2ea2a 100644 --- a/packages/search/dist-in/lib/email.js +++ b/packages/search/dist-in/lib/email.js @@ -111,4 +111,4 @@ export const findEMail = async (question, url, opts, location) => { location.email && logger.debug(`Found email for ${url} / ${location.title} : ${location.type} : ${location.email} : ${opts.searchFrom}`); return emails; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFFaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV0QyxNQUFNLFVBQVUsR0FBRyxpREFBaUQsQ0FBQTtBQUNwRSxNQUFNLFdBQVcsR0FBRyxzQ0FBc0MsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLElBQUksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWhFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSwwQkFBMEI7SUFDakUsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPLHVCQUF1QixDQUFBO0lBQ2xDLENBQUM7SUFDRCxZQUFZLE9BQU8sR0FBRyxFQUFFO1FBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUTtRQUM3QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFFaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV0QyxNQUFNLFVBQVUsR0FBRyxpREFBaUQsQ0FBQTtBQUNwRSxNQUFNLFdBQVcsR0FBRyxzQ0FBc0MsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLElBQUksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWhFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSwwQkFBMEI7SUFDakUsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPLHVCQUF1QixDQUFBO0lBQ2xDLENBQUM7SUFDRCxZQUFZLE9BQU8sR0FBRyxFQUFFO1FBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBa0I7UUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENB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 \ No newline at end of file diff --git a/packages/search/dist-in/lib/google.d.ts b/packages/search/dist-in/lib/google.d.ts new file mode 100644 index 00000000..95232e53 --- /dev/null +++ b/packages/search/dist-in/lib/google.d.ts @@ -0,0 +1,132 @@ +import { LocationSiteMeta } from "./map_types.js"; +export declare enum GoogleSearchUrls { + EN = "https://www.google.com/", + DE = "https://www.google.de/", + FR = "https://www.google.fr/", + ES = "https://www.google.es/", + IT = "https://www.google.it/", + PT = "https://www.google.pt/", + RU = "https://www.google.ru/", + JP = "https://www.google.co.jp/", + ZH = "https://www.google.com.hk/", + UK = "https://www.google.co.uk/" +} +export interface GpsCoordinates { + latitude: number; + longitude: number; +} +export interface OperatingHours { + thursday: string; + friday: string; + saturday: string; + sunday: string; + monday: string; + tuesday: string; + wednesday: string; +} +export interface Geo { + latitude: number; + lookupSource: string; + longitude: number; + localityLanguageRequested: string; + continent: string; + continentCode: string; + countryName: string; + countryCode: string; + principalSubdivision: string; + principalSubdivisionCode: string; + city: string; + locality: string; + postcode: string; + plusCode: string; + localityInfo: LocalityInfo; +} +export interface LocalityInfo { + administrative: Administrative[]; + informative: Informative[]; +} +export interface Administrative { + name: string; + description: string; + isoName?: string; + order: number; + adminLevel: number; + isoCode?: string; + wikidataId: string; + geonameId: number; +} +export interface Informative { + name: string; + description?: string; + isoName?: string; + order: number; + isoCode?: string; + wikidataId?: string; + geonameId?: number; +} +export interface GoogleMapResult { + position: number; + title: string; + place_id: string; + data_id: string; + data_cid: string; + reviews_link: string; + photos_link: string; + gps_coordinates: GpsCoordinates; + place_id_search: string; + provider_id: string; + rating: number; + reviews: number; + type: string; + types: string[]; + address: string; + open_state: string; + hours: string; + operating_hours: OperatingHours; + website: string; + thumbnail: string; + geo: Geo; +} +export interface GoogleMapResultEx extends GoogleMapResult { + email?: string; +} +export interface GoogleMapPhotos { + search_metadata: SearchMetadata; + search_parameters: SearchParameters; + categories: Category[]; + photos: Photo[]; + serpapi_pagination: SerpapiPagination; +} +export interface SearchMetadata { + id: string; + status: string; + json_endpoint: string; + created_at: string; + processed_at: string; + google_maps_photos_url: string; + raw_html_file: string; + prettify_html_file: string; + total_time_taken: number; +} +export interface SearchParameters { + engine: string; + data_id: string; + hl: string; +} +export interface Category { + title: string; + id: string; +} +export interface Photo { + thumbnail: string; + image: string; + photo_meta_serpapi_link: string; +} +export interface SerpapiPagination { + next: string; + next_page_token: string; +} +export interface GoogleMapResultInternal extends GoogleMapResultEx { + google_media?: GoogleMapPhotos; + meta?: LocationSiteMeta; +} diff --git a/packages/search/dist-in/lib/google.js b/packages/search/dist-in/lib/google.js new file mode 100644 index 00000000..a1cfeddf --- /dev/null +++ b/packages/search/dist-in/lib/google.js @@ -0,0 +1,14 @@ +export var GoogleSearchUrls; +(function (GoogleSearchUrls) { + GoogleSearchUrls["EN"] = "https://www.google.com/"; + GoogleSearchUrls["DE"] = "https://www.google.de/"; + GoogleSearchUrls["FR"] = "https://www.google.fr/"; + GoogleSearchUrls["ES"] = "https://www.google.es/"; + GoogleSearchUrls["IT"] = "https://www.google.it/"; + GoogleSearchUrls["PT"] = "https://www.google.pt/"; + GoogleSearchUrls["RU"] = "https://www.google.ru/"; + GoogleSearchUrls["JP"] = "https://www.google.co.jp/"; + GoogleSearchUrls["ZH"] = "https://www.google.com.hk/"; + GoogleSearchUrls["UK"] = "https://www.google.co.uk/"; +})(GoogleSearchUrls || (GoogleSearchUrls = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nb29nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksZ0JBV1g7QUFYRCxXQUFZLGdCQUFnQjtJQUMxQixrREFBOEIsQ0FBQTtJQUM5QixpREFBNkIsQ0FBQTtJQUM3QixpREFBNkIsQ0FBQTtJQUM3QixpREFBNkIsQ0FBQTtJQUM3QixpREFBNkIsQ0FBQTtJQUM3QixpREFBNkIsQ0FBQTtJQUM3QixpREFBNkIsQ0FBQTtJQUM3QixvREFBZ0MsQ0FBQTtJQUNoQyxxREFBaUMsQ0FBQTtJQUNqQyxvREFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBWFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVczQiJ9 \ No newline at end of file diff --git a/packages/search/dist-in/lib/googlemaps-utils.d.ts b/packages/search/dist-in/lib/googlemaps-utils.d.ts new file mode 100644 index 00000000..1b822519 --- /dev/null +++ b/packages/search/dist-in/lib/googlemaps-utils.d.ts @@ -0,0 +1,13 @@ +export type ParsedURL = { + scheme: string; + host?: string; + path?: string; + query?: Record; + fragment?: string; +}; +export declare const escapeFirstUrlSegment: (url: string) => string; +export declare const handleFs: (path: string) => Promise; +export declare const schemeHandlers: Record Promise>; +export declare const parseCustomUrl: (url: string) => Promise; +export declare const resolvePath: (str: string, query: any, category: any, opts: any) => string; +export declare const cleanObjectStrings: (obj: any) => any; diff --git a/packages/search/dist-in/lib/googlemaps-utils.js b/packages/search/dist-in/lib/googlemaps-utils.js new file mode 100644 index 00000000..bf810cb9 --- /dev/null +++ b/packages/search/dist-in/lib/googlemaps-utils.js @@ -0,0 +1,89 @@ +import * as path from 'path'; +import { URL } from 'url'; +import { isFile, resolve } from '@polymech/commons'; +import { sync as read } from '@polymech/fs/read'; +import { sync as exists } from '@polymech/fs/exists'; +export const escapeFirstUrlSegment = (url) => { + const schemeEndIndex = url.indexOf('://') + 3; + const restOfUrl = url.slice(schemeEndIndex); + const questionMarkIndex = restOfUrl.indexOf('?'); + if (questionMarkIndex !== -1) { + const firstSegment = restOfUrl.slice(0, questionMarkIndex); + const escapedFirstSegment = encodeURIComponent(firstSegment); + return url.slice(0, schemeEndIndex) + escapedFirstSegment + restOfUrl.slice(questionMarkIndex); + } + else { + const escapedFirstSegment = encodeURIComponent(restOfUrl); + return url.slice(0, schemeEndIndex) + escapedFirstSegment; + } +}; +export const handleFs = async (path) => { + return read(path); +}; +export const schemeHandlers = { + // 'osr-ai': handleOsrAi, + 'fs': handleFs, + 'default': handleFs +}; +export const parseCustomUrl = async (url) => { + if (!url.includes('://')) { + const _path = path.resolve(resolve(url)); + if (exists(_path) && isFile(_path)) { + return read(_path, 'json'); + } + } + const parsedUrl = new URL(escapeFirstUrlSegment(url)); + let scheme = parsedUrl.protocol.replace(':', '') || 'default'; + const handler = schemeHandlers[scheme]; + let result = null; + if (handler) { + if (scheme === 'osr-ai') { + result = await handler(parsedUrl.hostname, parsedUrl.searchParams); + } + else { + result = await handler(parsedUrl.pathname); + } + } + return result || url; +}; +export const resolvePath = (str, query, category, opts) => { + return path.resolve(resolve(str, false, { + QUERY: query, + FROM: opts.searchFrom ? opts.searchFrom.split(',').map((s) => s.trim()).join('/') : 'barcelona, spain', + ENGINE: opts.engine, + DOMAIN: opts.google_domain, + LANG: opts.language, + COUNTRY: opts.country, + AREA: opts.area, + CATEGORY: category || 'unknown', + ...opts.variables || {} + })); +}; +const cleanString = (str) => { + if (typeof str !== 'string') { + return str; + } + return str + .replace(/\u202F/g, ' ') // narrow no-break space + .replace(/\u2013/g, '-') // en dash + .replace(/\u2019/g, "'"); // right single quotation mark +}; +export const cleanObjectStrings = (obj) => { + if (!obj) { + return obj; + } + if (Array.isArray(obj)) { + return obj.map(item => cleanObjectStrings(item)); + } + if (typeof obj === 'object') { + return Object.entries(obj).reduce((acc, [key, value]) => { + acc[key] = cleanObjectStrings(value); + return acc; + }, {}); + } + if (typeof obj === 'string') { + return cleanString(obj); + } + return obj; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlbWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ29vZ2xlbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBVXBELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUU7SUFDekQsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakQsSUFBSSxpQkFBaUIsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxHQUFHLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRyxDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sbUJBQW1C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 \ No newline at end of file diff --git a/packages/search/dist-in/lib/googlemaps-zod.d.ts b/packages/search/dist-in/lib/googlemaps-zod.d.ts new file mode 100644 index 00000000..5796d879 --- /dev/null +++ b/packages/search/dist-in/lib/googlemaps-zod.d.ts @@ -0,0 +1,981 @@ +import { z } from 'zod'; +import * as CLI from 'yargs'; +export declare enum ResolveFlags { + PHOTOS = "PHOTOS" +} +export declare const zodSchemaBase: () => z.ZodObject<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, "passthrough", z.ZodTypeAny, z.objectOutputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">, z.objectInputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">>; +export declare const zodSchema: () => z.ZodEffects; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, "passthrough", z.ZodTypeAny, z.objectOutputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">, z.objectInputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">, z.objectInputType<{ + api_key: z.ZodOptional; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + logLevel: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +}, z.ZodTypeAny, "passthrough">>; +export declare const zodSchemaEachExtras: () => z.ZodObject<{ + logLevel: z.ZodDefault; + log: z.ZodOptional; + country: z.ZodString; + area: z.ZodString; + list: z.ZodString; + cwd: z.ZodDefault>; + env: z.ZodDefault; + profile: z.ZodDefault; + migrate: z.ZodDefault; +}, "strip", z.ZodTypeAny, { + logLevel?: string; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}, { + logLevel?: string; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}>; +export declare const zodSchemaEach: () => z.ZodEffects; + blacklist: z.ZodOptional>>; + cache: z.ZodDefault; + category: z.ZodDefault>; + concurrency: z.ZodDefault; + dst: z.ZodOptional; + dump: z.ZodOptional; + engine: z.ZodDefault; + env_key: z.ZodDefault; + filterCity: z.ZodOptional; + filterCountry: z.ZodOptional; + filterContinent: z.ZodOptional; + filterType: z.ZodOptional; + findEMail: z.ZodDefault; + geocode_key: z.ZodOptional; + google_domain: z.ZodDefault; + headless: z.ZodDefault; + language: z.ZodDefault; + limit: z.ZodDefault; + meta: z.ZodDefault; + searchCache: z.ZodDefault; + query: z.ZodDefault; + resolve: z.ZodOptional, "many">>>; + searchCoord: z.ZodOptional; + searchFrom: z.ZodDefault>; + source: z.ZodOptional>]>>; + type: z.ZodDefault>; + zoom: z.ZodDefault>; + index: z.ZodDefault; + store: z.ZodDefault; + variables: z.ZodOptional; +} & { + logLevel: z.ZodDefault; + log: z.ZodOptional; + country: z.ZodString; + area: z.ZodString; + list: z.ZodString; + cwd: z.ZodDefault>; + env: z.ZodDefault; + profile: z.ZodDefault; + migrate: z.ZodDefault; +}, "strip", z.ZodTypeAny, { + api_key?: string; + type?: string; + blacklist?: string[]; + cache?: boolean; + category?: string; + concurrency?: number; + dst?: string; + dump?: string; + engine?: string; + env_key?: string; + filterCity?: string; + filterCountry?: string; + filterContinent?: string; + filterType?: string; + findEMail?: boolean; + geocode_key?: string; + google_domain?: string; + headless?: boolean; + language?: string; + limit?: number; + logLevel?: string; + meta?: boolean; + searchCache?: boolean; + query?: string; + resolve?: ResolveFlags.PHOTOS[]; + searchCoord?: string; + searchFrom?: string; + source?: string | Record; + zoom?: number; + index?: string; + store?: string; + variables?: any; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}, { + api_key?: string; + type?: string; + blacklist?: string[]; + cache?: boolean; + category?: string; + concurrency?: number; + dst?: string; + dump?: string; + engine?: string; + env_key?: string; + filterCity?: string; + filterCountry?: string; + filterContinent?: string; + filterType?: string; + findEMail?: boolean; + geocode_key?: string; + google_domain?: string; + headless?: boolean; + language?: string; + limit?: number; + logLevel?: string; + meta?: boolean; + searchCache?: boolean; + query?: string; + resolve?: ResolveFlags.PHOTOS[]; + searchCoord?: string; + searchFrom?: string; + source?: string | Record; + zoom?: number; + index?: string; + store?: string; + variables?: any; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}>, { + api_key?: string; + type?: string; + blacklist?: string[]; + cache?: boolean; + category?: string; + concurrency?: number; + dst?: string; + dump?: string; + engine?: string; + env_key?: string; + filterCity?: string; + filterCountry?: string; + filterContinent?: string; + filterType?: string; + findEMail?: boolean; + geocode_key?: string; + google_domain?: string; + headless?: boolean; + language?: string; + limit?: number; + logLevel?: string; + meta?: boolean; + searchCache?: boolean; + query?: string; + resolve?: ResolveFlags.PHOTOS[]; + searchCoord?: string; + searchFrom?: string; + source?: string | Record; + zoom?: number; + index?: string; + store?: string; + variables?: any; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}, { + api_key?: string; + type?: string; + blacklist?: string[]; + cache?: boolean; + category?: string; + concurrency?: number; + dst?: string; + dump?: string; + engine?: string; + env_key?: string; + filterCity?: string; + filterCountry?: string; + filterContinent?: string; + filterType?: string; + findEMail?: boolean; + geocode_key?: string; + google_domain?: string; + headless?: boolean; + language?: string; + limit?: number; + logLevel?: string; + meta?: boolean; + searchCache?: boolean; + query?: string; + resolve?: ResolveFlags.PHOTOS[]; + searchCoord?: string; + searchFrom?: string; + source?: string | Record; + zoom?: number; + index?: string; + store?: string; + variables?: any; + log?: string; + country?: string; + area?: string; + list?: string; + cwd?: string; + env?: string; + profile?: string; + migrate?: boolean; +}>; +export type IOptionsGoogleMaps = z.infer>; +export type IOptionsGoogleMapsInput = z.input>; +export type IOptionsGoogleMapsEach = z.infer>; +export type IOptionsGoogleMapsEachInput = z.input>; +export declare const yargsOptions: (yargs: CLI.Argv) => CLI.Argv; +export declare const yargsOptionsEach: (yargs: CLI.Argv) => CLI.Argv; +export declare const meta_schema: z.ZodObject<{ + og: z.ZodObject<{ + url: z.ZodString; + type: z.ZodString; + title: z.ZodString; + site_name: z.ZodString; + }, "strip", z.ZodTypeAny, { + type?: string; + url?: string; + title?: string; + site_name?: string; + }, { + type?: string; + url?: string; + title?: string; + site_name?: string; + }>; + meta: z.ZodObject<{ + url: z.ZodString; + title: z.ZodString; + }, "strip", z.ZodTypeAny, { + url?: string; + title?: string; + }, { + url?: string; + title?: string; + }>; + links: z.ZodArray; + images: z.ZodArray, "many">; + allLinks: z.ZodArray; + keywords: z.ZodArray; + instagram: z.ZodString; + structured: z.ZodArray; + breadcrumb: z.ZodObject<{ + "@id": z.ZodString; + }, "strip", z.ZodTypeAny, { + "@id"?: string; + }, { + "@id"?: string; + }>; + inLanguage: z.ZodString; + dateModified: z.ZodString; + datePublished: z.ZodString; + potentialAction: z.ZodArray; + }, "strip", z.ZodTypeAny, { + "@type"?: string; + target?: string[]; + }, { + "@type"?: string; + target?: string[]; + }>, "many">; + }, "strip", z.ZodTypeAny, { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + }, { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + }>, z.ZodObject<{ + "@id": z.ZodString; + "@type": z.ZodString; + itemListElement: z.ZodArray, "many">; + }, "strip", z.ZodTypeAny, { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + }, { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + }>, z.ZodObject<{ + "@id": z.ZodString; + url: z.ZodString; + name: z.ZodString; + "@type": z.ZodString; + inLanguage: z.ZodString; + description: z.ZodString; + potentialAction: z.ZodArray; + "query-input": z.ZodObject<{ + "@type": z.ZodString; + valueName: z.ZodString; + valueRequired: z.ZodBoolean; + }, "strip", z.ZodTypeAny, { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }, { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }>; + }, "strip", z.ZodTypeAny, { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }, { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }>, "many">; + }, "strip", z.ZodTypeAny, { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + }, { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + }>]>, "many">; + "@context": z.ZodString; + }, "strip", z.ZodTypeAny, { + "@graph"?: ({ + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + } | { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + } | { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + })[]; + "@context"?: string; + }, { + "@graph"?: ({ + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + } | { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + } | { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + })[]; + "@context"?: string; + }>, "many">; +}, "strip", z.ZodTypeAny, { + meta?: { + url?: string; + title?: string; + }; + og?: { + type?: string; + url?: string; + title?: string; + site_name?: string; + }; + links?: unknown[]; + images?: { + src?: string; + }[]; + allLinks?: string[]; + keywords?: unknown[]; + instagram?: string; + structured?: { + "@graph"?: ({ + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + } | { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + } | { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + })[]; + "@context"?: string; + }[]; +}, { + meta?: { + url?: string; + title?: string; + }; + og?: { + type?: string; + url?: string; + title?: string; + site_name?: string; + }; + links?: unknown[]; + images?: { + src?: string; + }[]; + allLinks?: string[]; + keywords?: unknown[]; + instagram?: string; + structured?: { + "@graph"?: ({ + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + isPartOf?: { + "@id"?: string; + }; + breadcrumb?: { + "@id"?: string; + }; + inLanguage?: string; + dateModified?: string; + datePublished?: string; + potentialAction?: { + "@type"?: string; + target?: string[]; + }[]; + } | { + "@id"?: string; + "@type"?: string; + itemListElement?: { + name?: string; + "@type"?: string; + position?: number; + }[]; + } | { + url?: string; + "@id"?: string; + name?: string; + "@type"?: string; + inLanguage?: string; + potentialAction?: { + "@type"?: string; + target?: { + "@type"?: string; + urlTemplate?: string; + }; + "query-input"?: { + "@type"?: string; + valueName?: string; + valueRequired?: boolean; + }; + }[]; + description?: string; + })[]; + "@context"?: string; + }[]; +}>; diff --git a/packages/search/dist-in/lib/googlemaps-zod.js b/packages/search/dist-in/lib/googlemaps-zod.js new file mode 100644 index 00000000..ea5e6c3b --- /dev/null +++ b/packages/search/dist-in/lib/googlemaps-zod.js @@ -0,0 +1,161 @@ +import { z } from 'zod'; +import { toYargs } from '@polymech/commons'; +export var ResolveFlags; +(function (ResolveFlags) { + ResolveFlags["PHOTOS"] = "PHOTOS"; +})(ResolveFlags || (ResolveFlags = {})); +const o = { + query: "plastichub", + engine: "google_maps", + type: "search", + q: "plastichub", + ll: "@41.6911354,2.1652746,13z", + google_domain: "google.es", + hl: "en", + searchFrom: "barcelona, spain", + api_key: "517879d08bd8f13df9c4265c42aea8cfe960942f3a10e8774bbec11becbfb687", + geocode_key: "65bcf01943459613018206nmi9830a9", + openai: { + key: "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", + "key-p": "sk-x9O7hWAAeDCdX6HVyv49R2NV7JhFjGhUj7gG5szBoBT3BlbkFJfzB9Mo7j8Yl3xevSgeoSR-GXpftEevoS4ybwJrcWsA", + }, + headless: false, + bigdata: { + key: "bdc_26a67478a1f1492faf5cec9c498da553", + }, +}; +// Base schema without transformation - allows merging +export const zodSchemaBase = () => z.object({ + api_key: z.string().optional().describe('API Key'), + blacklist: z + .array(z.string()) + .default(['bazar.preciousplastic.com']) + .describe('A list of hostnames to exclude from the results').optional(), + cache: z.boolean().default(false), + category: z.string().optional().default('category'), + concurrency: z.number().default(3).describe('The concurrency level for async operations'), + dst: z.string().optional().describe('${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'), + dump: z.string().optional(), + engine: z.string().default('google_maps'), + env_key: z.string().default('OSR-CONFIG'), + filterCity: z.string().optional(), + filterCountry: z.string().optional(), + filterContinent: z.string().optional(), + filterType: z.string().optional(), + findEMail: z.boolean().default(false), + geocode_key: z.string().optional(), + google_domain: z.string().default('google.com'), + headless: z.boolean().default(true).describe('Headless mode'), + language: z.string().default('en'), + limit: z.number().default(5), + logLevel: z.string().default('info'), + meta: z.boolean().default(true), + searchCache: z.boolean().default(false).describe('Use search cache'), + query: z.string().default('plastichub'), + resolve: z.array(z.nativeEnum(ResolveFlags)).default([ResolveFlags.PHOTOS]).optional(), + searchCoord: z.string().optional(), + searchFrom: z.string().optional().default('barcelona, spain'), + source: z.union([z.string(), z.record(z.string(), z.array(z.string()))]).optional(), + type: z.string().optional().default('search'), + zoom: z.number().optional().default(13), + index: z.string().default('${OSR_ROOT}/osr-directory/meta/index.json').describe('Index file'), + store: z.string().default('${OSR_ROOT}/osr-directory/meta/index.db').describe('Index store'), + variables: z.any().optional(), +}) + .passthrough(); +// Schema with transformation applied +export const zodSchema = () => zodSchemaBase() + .transform((data) => { + if (!data.source) { + data.source = { + [data.category || 'unknown']: [data.query], + }; + } + return data; +}); +export const zodSchemaEachExtras = () => z.object({ + logLevel: z.string().default('info'), + log: z.string().optional(), + country: z.string().describe('The country to search in, variable ${COUNTRY}'), + area: z.string().describe('The city to search in, variable ${AREA}'), + list: z.string().describe('List of items to process, FILE|GLOB|AI-Query, provided as ${TOWN}'), + cwd: z.string().optional().default('./').describe('the current working directory to use, otherwise . is being assumed'), + env: z.string().default(''), + profile: z.string().default('${OSR_ROOT}/osr-templates/osrl/.osrl.json'), + migrate: z.boolean().default(false), +}); +// Merge the base schemas first, then apply transformation +export const zodSchemaEach = () => zodSchemaBase() + .merge(zodSchemaEachExtras()) + .transform((data) => { + if (!data.source) { + data.source = { + [data.category || 'unknown']: [data.query], + }; + } + return data; +}) + .describe('IOptionsGoogleMapsEach'); +export const yargsOptions = (yargs) => toYargs(yargs, zodSchema()); +export const yargsOptionsEach = (yargs) => toYargs(yargs, zodSchemaEach()); +export const meta_schema = z.object({ + og: z.object({ + url: z.string(), + type: z.string(), + title: z.string(), + site_name: z.string() + }), + meta: z.object({ url: z.string(), title: z.string() }), + links: z.array(z.unknown()), + images: z.array(z.object({ src: z.string() })), + allLinks: z.array(z.string()), + keywords: z.array(z.unknown()), + instagram: z.string(), + structured: z.array(z.object({ + "@graph": z.array(z.union([ + z.object({ + "@id": z.string(), + url: z.string(), + name: z.string(), + "@type": z.string(), + isPartOf: z.object({ "@id": z.string() }), + breadcrumb: z.object({ "@id": z.string() }), + inLanguage: z.string(), + dateModified: z.string(), + datePublished: z.string(), + potentialAction: z.array(z.object({ "@type": z.string(), target: z.array(z.string()) })) + }), + z.object({ + "@id": z.string(), + "@type": z.string(), + itemListElement: z.array(z.object({ + name: z.string(), + "@type": z.string(), + position: z.number() + })) + }), + z.object({ + "@id": z.string(), + url: z.string(), + name: z.string(), + "@type": z.string(), + inLanguage: z.string(), + description: z.string(), + potentialAction: z.array(z.object({ + "@type": z.string(), + target: z.object({ + "@type": z.string(), + urlTemplate: z.string() + }), + "query-input": z.object({ + "@type": z.string(), + valueName: z.string(), + valueRequired: z.boolean() + }) + })) + }) + ])), + "@context": z.string() + })) +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlbWFwcy16b2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2dvb2dsZW1hcHMtem9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE1BQU0sQ0FBTixJQUFZLFlBRVg7QUFGRCxXQUFZLFlBQVk7SUFDcEIsaUNBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUZXLFlBQVksS0FBWixZQUFZLFFBRXZCO0FBRUQsTUFBTSxDQUFDLEdBQUc7SUFDTixLQUFLLEVBQUUsWUFBWTtJQUNuQixNQUFNLEVBQUUsYUFBYTtJQUNyQixJQUFJLEVBQUUsUUFBUTtJQUNkLENBQUMsRUFBRSxZQUFZO0lBQ2YsRUFBRSxFQUFFLDJCQUEyQjtJQUMvQixhQUFhLEVBQUUsV0FBVztJQUMxQixFQUFFLEVBQUUsSUFBSTtJQUNSLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsT0FBTyxFQUFFLGtFQUFrRTtJQUMzRSxXQUFXLEVBQUUsaUNBQWlDO0lBQzlDLE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxzS0FBc0s7UUFDM0ssT0FBTyxFQUFFLGlHQUFpRztLQUM3RztJQUNELFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFO1FBQ0wsR0FBRyxFQUFFLHNDQUFzQztLQUM5QztDQUNKLENBQUE7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUM5QixDQUFDLENBQUMsTUFBTSxDQUNKO0lBQ0ksT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2xELFNBQVMsRUFBRSxDQUFDO1NBQ1AsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQixP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 \ No newline at end of file diff --git a/packages/search/dist-in/lib/googlemaps.d.ts b/packages/search/dist-in/lib/googlemaps.d.ts index f0bf1798..fc65f683 100644 --- a/packages/search/dist-in/lib/googlemaps.d.ts +++ b/packages/search/dist-in/lib/googlemaps.d.ts @@ -1,8 +1,8 @@ -import { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, IOptionsGoogleMaps, IOptionsGoogleMapsEach } from './googlemaps-zod.js'; -export { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, IOptionsGoogleMaps, IOptionsGoogleMapsEach }; +import { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, IOptionsGoogleMaps, IOptionsGoogleMapsInput, IOptionsGoogleMapsEach, IOptionsGoogleMapsEachInput, ResolveFlags } from './googlemaps-zod.js'; +export { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, IOptionsGoogleMaps, IOptionsGoogleMapsInput, IOptionsGoogleMapsEach, IOptionsGoogleMapsEachInput, ResolveFlags }; import type { GoogleParameters } from "serpapi"; import { IScaleserpSearch } from './types.js'; -import { LocalResult } from './map_types.js'; +import { GoogleMapResultInternal, type GoogleMapResult } from './google.js'; export declare enum SearchQueriesES { INJECTION = "inyecci\u00F3n de plastico" } @@ -20,8 +20,8 @@ export declare const defaultSearchParamsMapsES: (query: any, zoom: any, mixin?: hl: string; }; export declare const searchVendorSA: (query: string, location: string, key: string, opts: GoogleParameters) => Promise>; -export declare const searchGoogleMap: (query: string, key: string, opts: IOptionsGoogleMaps) => Promise; +export declare const searchGoogleMap: (query: string, key: string, opts: IOptionsGoogleMaps) => Promise; export declare const parse: (argv: IOptionsGoogleMaps) => IOptionsGoogleMaps; -export declare const googleMaps: (opts: IOptionsGoogleMaps) => Promise; +export declare const googleMaps: (opts: IOptionsGoogleMapsInput) => Promise; export declare const migrate: (opts: IOptionsGoogleMapsEach) => Promise; export declare const each: (opts: IOptionsGoogleMapsEach) => Promise; diff --git a/packages/search/dist-in/lib/googlemaps.js b/packages/search/dist-in/lib/googlemaps.js index 162210f0..9ed74503 100644 --- a/packages/search/dist-in/lib/googlemaps.js +++ b/packages/search/dist-in/lib/googlemaps.js @@ -3,14 +3,14 @@ import { CONFIG_DEFAULT, DEFAULT_ROOTS, pathInfo, filesEx } from '@polymech/comm import { cleanObjectStrings } from './googlemaps-utils.js'; import { parse as parseProfile } from '@polymech/commons/profile'; import { isFile, resolve, substitute } from '@polymech/commons'; -import { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, } from './googlemaps-zod.js'; +import { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, ResolveFlags, } from './googlemaps-zod.js'; import { parseCustomUrl, resolvePath } from './googlemaps-utils.js'; -export { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach }; +export { zodSchema, zodSchemaEach, yargsOptions, yargsOptionsEach, ResolveFlags }; import { clone } from '../options.js'; import { sync as write } from '@polymech/fs/write'; import { sync as read } from '@polymech/fs/read'; import { sync as exists } from '@polymech/fs/exists'; -import { isArray, isObject, isString } from '@polymech/core/primitives'; +import { isArray, isObject } from '@polymech/core/primitives'; import pMap from 'p-map'; import { get_cached_object, set_cached_object } from '@polymech/cache/lib'; import { OSR_CACHE } from '@polymech/commons'; @@ -23,6 +23,7 @@ import { reverse, REVERSE_DEFAULT } from './geo.js'; import { writeReport } from '../lib/report_map.js'; import { geocode_forward } from './geo.js'; import { store as getStore } from '@polymech/registry'; +import axios from 'axios'; const MODULE_NAME = 'osr-search'; const queryExtras = ''; export var SearchQueriesES; @@ -155,7 +156,7 @@ export const searchGoogleMap = async (query, key, opts) => { results = results.filter((r) => r.geo.continent.toLowerCase() === opts.filterContinent.toLowerCase()); } if (opts.filterType) { - results = results.filter((r) => r.filterType === opts.filterType); + results = results.filter((r) => r.type === opts.filterType); } results = results.filter((r) => r.gps_coordinates); const beforeCached = results.length; @@ -209,7 +210,6 @@ const enrichResults = async (results, index, opts) => { } if (entry.meta && entry.website && !entry.email) { try { - logger.debug(`searching email for ${entry.website}`); return findEMail(SEARCH_AI_PROMPTS.GET_EMAIL, entry.website, opts, entry); } catch (e) { @@ -218,6 +218,30 @@ const enrichResults = async (results, index, opts) => { } }, { concurrency: 1 }); } + if (opts.resolve?.includes(ResolveFlags.PHOTOS)) { + await pMap(results, async (entry) => { + if (entry.google_media || !entry.data_id) { + return; + } + if (index[entry.title] && index[entry.title].google_media) { + entry.google_media = index[entry.title].google_media; + return; + } + try { + if (!entry.photos_link) + return; + const url = `${entry.photos_link}&api_key=${opts.api_key}`; + const response = await axios.get(url); + const photos = response.data; + if (photos) { + entry.google_media = photos; + } + } + catch (e) { + logger.error(`Error retrieving photo data for ${entry.title}`, e); + } + }, { concurrency: opts.concurrency }); + } return results; }; export const parse = (argv) => { @@ -232,7 +256,7 @@ export const parse = (argv) => { logger.warn('No serpapi key found in config!'); return; } - const opts = { + let opts = { query: argv.query, ...defaultSearchParamsMapsES(argv.query, argv.zoom), ...argv, @@ -242,29 +266,28 @@ export const parse = (argv) => { headless: argv.headless ? true : false, bigdata: { key: config.bigdata.key } }; - opts.source && isString(opts.source) && (opts.source = path.resolve(resolve(args.source, false))); - if (isString(opts.source)) { + opts = zodSchema().parse(opts); + /* + opts.source && isString(opts.source) && (opts.source = path.resolve(resolve(args.source, false))) + + if (opts.source && isString(opts.source)) { if (exists(opts.source)) { - opts.source = read(opts.source, 'json'); - } - else { - logger.error(`Source file ${args.source} not found : ${opts.source}`); - return; + opts.source = read(opts.source, 'json') + } else { + logger.error(`Source file ${args.source} not found : ${opts.source}`) + return } } + */ if (!opts.source && !opts.query) { logger.warn(`Invalid source and query`); return; } if (opts.index) { - opts.index = path.resolve(resolve(args.index, false)); + opts.index = path.resolve(resolve(opts.index, false)); } if (opts.store) { - opts.store = path.resolve(resolve(args.store, false)); - } - if (!opts.source) { - opts.source = {}; - opts.source[opts.category] = [opts.query]; + opts.store = path.resolve(resolve(opts.store, false)); } if (!opts.api_key) { logger.error('No Serpapi key found in config or options!'); @@ -300,9 +323,11 @@ export const googleMaps = async (opts) => { let ret = []; const search = async (query, category, opts) => { opts = clone(opts); - opts.dst = resolvePath(path.join(opts.cwd || '', opts.dst || ''), query, category, opts); - logger.debug(`output destination --dst "${opts.dst}"`); - if (opts.cache !== false && exists(opts.dst + '.json')) { + if (opts.dst) { + opts.dst = resolvePath(path.join(opts.cwd || '', opts.dst || ''), query, category, opts); + logger.debug(`output destination --dst "${opts.dst}"`); + } + if (opts.dst && opts.cache !== false && exists(opts.dst + '.json')) { const cachedPath = opts.dst + '.json'; const cached = read(cachedPath, 'json') || []; logger.debug(`Searching ${opts.query} with ${opts.searchFrom} :: returning cached ${cached.length}`); @@ -310,36 +335,33 @@ export const googleMaps = async (opts) => { return cached; } try { - logger.debug(`Searching ${opts.query} with ${opts.searchFrom}`); const sr = await searchGoogleMap(query, opts.api_key, { ...opts }); if (sr && sr.length && opts.dst) { - logger.debug('Writing', opts.dst); write(opts.dst + '.json', sr); writeReport(sr, opts.dst, opts); const parts = path.parse(opts.dst); write(path.join(parts.dir, parts.name + '_options.json'), cleanOptions(opts)); - // writeReport(sr, opts.dst.replace('.xlsx', '.md'), opts) } ret = [...ret, ...sr]; - logger.debug(`Searching ${opts.query} with ${opts.searchFrom}`); - return ret; + return sr; } catch (error) { logger.error('Error searching GoogleMaps : ' + error.message, error, error.stack); + return []; } }; - const all = await pMap(Object.keys(opts.source), (k) => { + // @todos : retry, ... + const all = (await pMap(Object.keys(opts.source), (k) => { return pMap(opts.source[k], (t) => { return search(t, k, opts); }, { - concurrency: 1 + concurrency: 1, }); }, { - concurrency: 1 - }); + concurrency: 1, + })).flat(2); if (opts.dst) { opts.dst = resolvePath(opts.dst, 'all', 'all', opts); - logger.debug(`final output destination --dst "${opts.dst}"`); let existingResults = []; if (exists(opts.dst + '.json')) { existingResults = read(opts.dst + '.json', 'json') || []; @@ -350,8 +372,7 @@ export const googleMaps = async (opts) => { map.set(obj.place_id, obj); } return map; - }, new Map()).values()) - .map(cleanObjectStrings) + }, new Map()).values()).map(cleanObjectStrings) .map((r) => { if (r.website && typeof r.website === 'string' && r.website.startsWith('/url?q=')) { try { @@ -459,4 +480,4 @@ export const each = async (opts) => { opts.log && write(path.resolve(resolve(opts.log)), all); return all; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlbWFwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ29vZ2xlbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBWSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFMUQsT0FBTyxFQUFDLEtBQUssSUFBSSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUvRCxPQUFPLEVBQ0gsU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEdBR25CLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQThDLENBQUE7QUFFL0csT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVyQyxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN2RSxPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFF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SyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQy9DLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO1lBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO1lBQ3pELFNBQVM7U0FDWixDQUFBO1FBQ0QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sR0FBRyxDQUFBO0lBQ2QsQ0FBQyxFQUNELEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUNyQixDQUFBO0lBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDdkQsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUEifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlbWFwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ29vZ2xlbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBWSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFMUQsT0FBTyxFQUFFLEtBQUssSUFBSSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUvRCxPQUFPLEVBQ0gsU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEVBS2hCLFlBQVksR0FDZixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFvRyxZQUFZLEVBQUUsQ0FBQTtBQUVuTCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXJDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFDdkUsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxp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 \ No newline at end of file diff --git a/packages/search/dist-in/lib/html.d.ts b/packages/search/dist-in/lib/html.d.ts index 45b5c0a8..55b90625 100644 --- a/packages/search/dist-in/lib/html.d.ts +++ b/packages/search/dist-in/lib/html.d.ts @@ -1,15 +1,15 @@ import { AxiosRequestConfig } from "axios"; import { Browser } from 'puppeteer'; import * as puppeteer from 'puppeteer'; -import { LocalResult } from './map_types.js'; +import { LocalResult, LocationSiteMeta } from './map_types.js'; export declare const STATS_SUFFIX = "_stats.json"; export declare const SESSION_EVENTS_SUFFIX = "_session.json"; export declare const TRACE_SUFFIX = "_trace.json"; export declare var scope: Scope; export declare const extractEmail: (input: string) => string | null; -export declare const meta: (loc: LocalResult, options: any) => Promise; -export declare const isValidUrl: (url: any) => boolean; -export declare const parse: (url: string, config: AxiosRequestConfig, options: any) => Promise<{}>; +export declare const meta: (loc: LocalResult, options: any) => Promise; +export declare const isValidUrl: (url: string) => boolean; +export declare const parse: (url: string, config: AxiosRequestConfig | null, options: any) => Promise; export declare const getScope: (cliArgs?: any) => Scope; export declare function capture_responses(scope: Scope, page: puppeteer.Page): Promise; export declare class Scope { @@ -27,4 +27,3 @@ export declare class Scope { init(): Promise; } export declare const body: (url: string) => Promise; -export declare const contactUrl: (url: any) => Promise; diff --git a/packages/search/dist-in/lib/html.js b/packages/search/dist-in/lib/html.js index 504b98ff..861cfd96 100644 --- a/packages/search/dist-in/lib/html.js +++ b/packages/search/dist-in/lib/html.js @@ -1,12 +1,10 @@ import https from 'https'; import axios from "axios"; -import { parse as HTML } from "node-html-parser"; import * as cheerio from "cheerio"; import * as path from 'path'; import { URL } from 'url'; import * as puppeteer from 'puppeteer'; import { logger } from '../index.js'; -import { parse as retrieveMeta } from './html.js'; export const STATS_SUFFIX = '_stats.json'; export const SESSION_EVENTS_SUFFIX = '_session.json'; export const TRACE_SUFFIX = '_trace.json'; @@ -34,7 +32,7 @@ export const meta = async (loc, options) => { return; } try { - const _meta = await retrieveMeta(loc.website, null, options) || {}; + const _meta = await parse(loc.website, null, options) || {}; loc.meta = _meta; loc.instagram = _meta.instagram; loc.facebook = _meta.facebook; @@ -42,6 +40,7 @@ export const meta = async (loc, options) => { loc.linkedin = _meta.linkedin; loc.twitter = _meta.twitter; loc.email = (_meta.allLinks || []).map((l) => extractEmail(l)).filter((e) => e !== null)[0]; + return _meta; } catch (error) { logger.error('Error retrieving meta data : ' + loc.website, error.message); @@ -58,9 +57,8 @@ export const isValidUrl = (url) => { return false; } }; -const readMetaTags = (el, name) => { - var prop = el.getAttribute('name') || el.getAttribute('property'); - return prop == name ? el.getAttribute('content') : null; +const readMetaTags = ($, name) => { + return $(`meta[name="${name}"]`).attr('content') || $(`meta[property="${name}"]`).attr('content') || null; }; export const parse = async (url, config, options) => { if (!/(^http(s?):\/\/[^\s$.?#].[^\s]*)/i.test(url)) @@ -75,47 +73,46 @@ export const parse = async (url, config, options) => { }, timeout: 10000 }); - const $ = HTML(data); + const $ = cheerio.load(data); const og = {}; const meta = {}; const images = []; const links = []; let allLinks = []; - const title = $.querySelector('title'); + const title = $('title').text(); if (title) - meta.title = title.text; - const canonical = $.querySelector('link[rel=canonical]'); + meta.title = title; + const canonical = $('link[rel=canonical]').attr('href'); if (canonical) { - meta.url = canonical.getAttribute('href'); + meta.url = canonical; } - const metas = $.querySelectorAll('meta'); - for (let i = 0; i < metas.length; i++) { - const el = metas[i]; - // const prop = el.getAttribute('property') || el.getAttribute('name'); - ['title', 'description', 'image'].forEach(s => { - const val = readMetaTags(el, s); - if (val) - meta[s] = val; - }); - ['og:title', 'og:description', 'og:image', 'og:url', 'og:site_name', 'og:type'].forEach(s => { - const val = readMetaTags(el, s); - if (val) - og[s.split(':')[1]] = val; - }); - } - $.querySelectorAll('img').forEach(el => { - let src = el.getAttribute('src'); + ['title', 'description', 'image'].forEach(s => { + const val = readMetaTags($, s); + if (val) + meta[s] = val; + }); + ['og:title', 'og:description', 'og:image', 'og:url', 'og:site_name', 'og:type'].forEach(s => { + const val = readMetaTags($, s); + if (val) + og[s.split(':')[1]] = val; + }); + $('img').each((i, el) => { + let src = $(el).attr('src'); if (src) { - src = new URL(src, url).href; - images.push({ src }); + try { + src = new URL(src, url).href; + images.push({ src }); + } + catch (e) { + // ignore invalid urls + } } }); - const _$ = cheerio.load(data); // Array to store JSON-LD data const jsonLdArray = []; // Select all