googlemaps-kit 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -2
- package/dist/books.d.ts +30 -0
- package/dist/books.d.ts.map +1 -0
- package/dist/books.js +77 -0
- package/dist/books.js.map +1 -0
- package/dist/client/http-client.d.ts +3 -1
- package/dist/client/http-client.d.ts.map +1 -1
- package/dist/client/http-client.js +14 -3
- package/dist/client/http-client.js.map +1 -1
- package/dist/client/namespaces.d.ts +1 -4
- package/dist/client/namespaces.d.ts.map +1 -1
- package/dist/client/namespaces.js +1 -5
- package/dist/client/namespaces.js.map +1 -1
- package/dist/finance/client.d.ts +19 -0
- package/dist/finance/client.d.ts.map +1 -0
- package/dist/finance/client.js +75 -0
- package/dist/finance/client.js.map +1 -0
- package/dist/finance/parsers.d.ts +13 -0
- package/dist/finance/parsers.d.ts.map +1 -0
- package/dist/finance/parsers.js +146 -0
- package/dist/finance/parsers.js.map +1 -0
- package/dist/finance/types.d.ts +76 -0
- package/dist/finance/types.d.ts.map +1 -0
- package/dist/finance/types.js +2 -0
- package/dist/finance/types.js.map +1 -0
- package/dist/finance.d.ts +5 -0
- package/dist/finance.d.ts.map +1 -0
- package/dist/finance.js +4 -0
- package/dist/finance.js.map +1 -0
- package/dist/flights/client.d.ts +9 -0
- package/dist/flights/client.d.ts.map +1 -0
- package/dist/flights/client.js +14 -0
- package/dist/flights/client.js.map +1 -0
- package/dist/flights/parsers.d.ts +11 -0
- package/dist/flights/parsers.d.ts.map +1 -0
- package/dist/flights/parsers.js +64 -0
- package/dist/flights/parsers.js.map +1 -0
- package/dist/flights/types.d.ts +52 -0
- package/dist/flights/types.d.ts.map +1 -0
- package/dist/flights/types.js +2 -0
- package/dist/flights/types.js.map +1 -0
- package/dist/flights.d.ts +5 -0
- package/dist/flights.d.ts.map +1 -0
- package/dist/flights.js +4 -0
- package/dist/flights.js.map +1 -0
- package/dist/gemini-web/client.d.ts +16 -0
- package/dist/gemini-web/client.d.ts.map +1 -0
- package/dist/gemini-web/client.js +110 -0
- package/dist/gemini-web/client.js.map +1 -0
- package/dist/gemini-web/parsers.d.ts +5 -0
- package/dist/gemini-web/parsers.d.ts.map +1 -0
- package/dist/gemini-web/parsers.js +62 -0
- package/dist/gemini-web/parsers.js.map +1 -0
- package/dist/gemini-web/types.d.ts +47 -0
- package/dist/gemini-web/types.d.ts.map +1 -0
- package/dist/gemini-web/types.js +2 -0
- package/dist/gemini-web/types.js.map +1 -0
- package/dist/gemini-web.d.ts +5 -0
- package/dist/gemini-web.d.ts.map +1 -0
- package/dist/gemini-web.js +4 -0
- package/dist/gemini-web.js.map +1 -0
- package/dist/google-search/client.d.ts +16 -0
- package/dist/google-search/client.d.ts.map +1 -0
- package/dist/google-search/client.js +117 -0
- package/dist/google-search/client.js.map +1 -0
- package/dist/google-search/errors.d.ts +8 -0
- package/dist/google-search/errors.d.ts.map +1 -0
- package/dist/google-search/errors.js +13 -0
- package/dist/google-search/errors.js.map +1 -0
- package/dist/google-search/html.d.ts +12 -0
- package/dist/google-search/html.d.ts.map +1 -0
- package/dist/google-search/html.js +135 -0
- package/dist/google-search/html.js.map +1 -0
- package/dist/google-search/parsers.d.ts +6 -0
- package/dist/google-search/parsers.d.ts.map +1 -0
- package/dist/google-search/parsers.js +177 -0
- package/dist/google-search/parsers.js.map +1 -0
- package/dist/google-search/types.d.ts +66 -0
- package/dist/google-search/types.d.ts.map +1 -0
- package/dist/google-search/types.js +2 -0
- package/dist/google-search/types.js.map +1 -0
- package/dist/google-search.d.ts +6 -0
- package/dist/google-search.d.ts.map +1 -0
- package/dist/google-search.js +4 -0
- package/dist/google-search.js.map +1 -0
- package/dist/hotels/client.d.ts +9 -0
- package/dist/hotels/client.d.ts.map +1 -0
- package/dist/hotels/client.js +14 -0
- package/dist/hotels/client.js.map +1 -0
- package/dist/hotels/parsers.d.ts +7 -0
- package/dist/hotels/parsers.d.ts.map +1 -0
- package/dist/hotels/parsers.js +74 -0
- package/dist/hotels/parsers.js.map +1 -0
- package/dist/hotels/types.d.ts +55 -0
- package/dist/hotels/types.d.ts.map +1 -0
- package/dist/hotels/types.js +2 -0
- package/dist/hotels/types.js.map +1 -0
- package/dist/hotels.d.ts +4 -0
- package/dist/hotels.d.ts.map +1 -0
- package/dist/hotels.js +3 -0
- package/dist/hotels.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/known-surfaces.d.ts +0 -6
- package/dist/known-surfaces.d.ts.map +1 -1
- package/dist/known-surfaces.js +0 -6
- package/dist/known-surfaces.js.map +1 -1
- package/dist/lens/client.d.ts +14 -0
- package/dist/lens/client.d.ts.map +1 -0
- package/dist/lens/client.js +116 -0
- package/dist/lens/client.js.map +1 -0
- package/dist/lens/errors.d.ts +8 -0
- package/dist/lens/errors.d.ts.map +1 -0
- package/dist/lens/errors.js +13 -0
- package/dist/lens/errors.js.map +1 -0
- package/dist/lens/types.d.ts +27 -0
- package/dist/lens/types.d.ts.map +1 -0
- package/dist/lens/types.js +2 -0
- package/dist/lens/types.js.map +1 -0
- package/dist/lens.d.ts +8 -0
- package/dist/lens.d.ts.map +1 -0
- package/dist/lens.js +5 -0
- package/dist/lens.js.map +1 -0
- package/dist/news.d.ts +46 -0
- package/dist/news.d.ts.map +1 -0
- package/dist/news.js +202 -0
- package/dist/news.js.map +1 -0
- package/dist/pagespeed/client.d.ts +28 -0
- package/dist/pagespeed/client.d.ts.map +1 -0
- package/dist/pagespeed/client.js +222 -0
- package/dist/pagespeed/client.js.map +1 -0
- package/dist/pagespeed/errors.d.ts +9 -0
- package/dist/pagespeed/errors.d.ts.map +1 -0
- package/dist/pagespeed/errors.js +15 -0
- package/dist/pagespeed/errors.js.map +1 -0
- package/dist/pagespeed/parsers.d.ts +7 -0
- package/dist/pagespeed/parsers.d.ts.map +1 -0
- package/dist/pagespeed/parsers.js +236 -0
- package/dist/pagespeed/parsers.js.map +1 -0
- package/dist/pagespeed/types.d.ts +156 -0
- package/dist/pagespeed/types.d.ts.map +1 -0
- package/dist/pagespeed/types.js +2 -0
- package/dist/pagespeed/types.js.map +1 -0
- package/dist/pagespeed/wire.d.ts +10 -0
- package/dist/pagespeed/wire.d.ts.map +1 -0
- package/dist/pagespeed/wire.js +96 -0
- package/dist/pagespeed/wire.js.map +1 -0
- package/dist/pagespeed.d.ts +6 -0
- package/dist/pagespeed.d.ts.map +1 -0
- package/dist/pagespeed.js +4 -0
- package/dist/pagespeed.js.map +1 -0
- package/dist/platform/catalog.d.ts.map +1 -1
- package/dist/platform/catalog.js +0 -9
- package/dist/platform/catalog.js.map +1 -1
- package/dist/services/environment/air-quality.d.ts.map +1 -1
- package/dist/services/environment/air-quality.js +3 -7
- package/dist/services/environment/air-quality.js.map +1 -1
- package/dist/services/environment/weather.d.ts +4 -1
- package/dist/services/environment/weather.d.ts.map +1 -1
- package/dist/services/environment/weather.js +12 -3
- package/dist/services/environment/weather.js.map +1 -1
- package/dist/services/reviews.d.ts.map +1 -1
- package/dist/services/reviews.js +4 -1
- package/dist/services/reviews.js.map +1 -1
- package/dist/translate.d.ts +75 -0
- package/dist/translate.d.ts.map +1 -0
- package/dist/translate.js +126 -0
- package/dist/translate.js.map +1 -0
- package/dist/travel-google/common.d.ts +24 -0
- package/dist/travel-google/common.d.ts.map +1 -0
- package/dist/travel-google/common.js +72 -0
- package/dist/travel-google/common.js.map +1 -0
- package/dist/trends/client.d.ts +17 -0
- package/dist/trends/client.d.ts.map +1 -0
- package/dist/trends/client.js +86 -0
- package/dist/trends/client.js.map +1 -0
- package/dist/trends/errors.d.ts +8 -0
- package/dist/trends/errors.d.ts.map +1 -0
- package/dist/trends/errors.js +13 -0
- package/dist/trends/errors.js.map +1 -0
- package/dist/trends/links.d.ts +8 -0
- package/dist/trends/links.d.ts.map +1 -0
- package/dist/trends/links.js +71 -0
- package/dist/trends/links.js.map +1 -0
- package/dist/trends/parsers.d.ts +5 -0
- package/dist/trends/parsers.d.ts.map +1 -0
- package/dist/trends/parsers.js +126 -0
- package/dist/trends/parsers.js.map +1 -0
- package/dist/trends/types.d.ts +71 -0
- package/dist/trends/types.d.ts.map +1 -0
- package/dist/trends/types.js +2 -0
- package/dist/trends/types.js.map +1 -0
- package/dist/trends.d.ts +9 -0
- package/dist/trends.d.ts.map +1 -0
- package/dist/trends.js +8 -0
- package/dist/trends.js.map +1 -0
- package/dist/types/common.d.ts +0 -2
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/utils/google-web.d.ts +24 -0
- package/dist/utils/google-web.d.ts.map +1 -0
- package/dist/utils/google-web.js +150 -0
- package/dist/utils/google-web.js.map +1 -0
- package/dist/youtube/client.d.ts +19 -0
- package/dist/youtube/client.d.ts.map +1 -0
- package/dist/youtube/client.js +115 -0
- package/dist/youtube/client.js.map +1 -0
- package/dist/youtube/errors.d.ts +8 -0
- package/dist/youtube/errors.d.ts.map +1 -0
- package/dist/youtube/errors.js +13 -0
- package/dist/youtube/errors.js.map +1 -0
- package/dist/youtube/parsers.d.ts +9 -0
- package/dist/youtube/parsers.d.ts.map +1 -0
- package/dist/youtube/parsers.js +213 -0
- package/dist/youtube/parsers.js.map +1 -0
- package/dist/youtube/types.d.ts +90 -0
- package/dist/youtube/types.d.ts.map +1 -0
- package/dist/youtube/types.js +2 -0
- package/dist/youtube/types.js.map +1 -0
- package/dist/youtube.d.ts +9 -0
- package/dist/youtube.d.ts.map +1 -0
- package/dist/youtube.js +6 -0
- package/dist/youtube.js.map +1 -0
- package/docs/books.md +18 -0
- package/docs/environment-research.md +65 -0
- package/docs/finance-research.md +153 -0
- package/docs/finance.md +43 -0
- package/docs/gemini-web.md +36 -0
- package/docs/google-ai-books-research.md +53 -0
- package/docs/google-media-research.md +105 -0
- package/docs/google-search-research.md +36 -0
- package/docs/google-search.md +53 -0
- package/docs/google-services-research.md +135 -0
- package/docs/google-travel-research.md +86 -0
- package/docs/internal/reverse-engineering.md +85 -0
- package/docs/lens.md +54 -0
- package/docs/maps-revalidation.md +31 -0
- package/docs/news.md +35 -0
- package/docs/pagespeed-research.md +153 -0
- package/docs/pagespeed.md +135 -0
- package/docs/reviews-research.md +33 -0
- package/docs/translate.md +78 -0
- package/docs/trends-research.md +82 -0
- package/docs/trends.md +75 -0
- package/docs/youtube.md +72 -0
- package/package.json +77 -2
- package/dist/services/aerial-view.d.ts +0 -22
- package/dist/services/aerial-view.d.ts.map +0 -1
- package/dist/services/aerial-view.js +0 -107
- package/dist/services/aerial-view.js.map +0 -1
- package/dist/types/aerial-view.d.ts +0 -39
- package/dist/types/aerial-view.d.ts.map +0 -1
- package/dist/types/aerial-view.js +0 -2
- package/dist/types/aerial-view.js.map +0 -1
package/dist/known-surfaces.d.ts
CHANGED
|
@@ -207,12 +207,6 @@ export declare const KNOWN_SURFACES: {
|
|
|
207
207
|
readonly path: "/maps/vt/proto + viewport share URLs";
|
|
208
208
|
readonly notes: "Composable tile sessions (map.tiles) and buildViewportLink — not the billed Maps JavaScript API.";
|
|
209
209
|
};
|
|
210
|
-
readonly aerialView: {
|
|
211
|
-
readonly status: "auth-required";
|
|
212
|
-
readonly method: "GET";
|
|
213
|
-
readonly path: "aerialview.googleapis.com/v1/videos:*";
|
|
214
|
-
readonly notes: "Aerial View API only — consumer place preview does not expose cinematic video URIs. map.aerialView with GMAPS_AERIAL_VIEW_API_KEY.";
|
|
215
|
-
};
|
|
216
210
|
readonly mapsUrlBuilders: {
|
|
217
211
|
readonly status: "working";
|
|
218
212
|
readonly method: "N/A";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"known-surfaces.d.ts","sourceRoot":"","sources":["../src/known-surfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"known-surfaces.d.ts","sourceRoot":"","sources":["../src/known-surfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8dqB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAElE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,EAAE,CAI9E"}
|
package/dist/known-surfaces.js
CHANGED
|
@@ -200,12 +200,6 @@ export const KNOWN_SURFACES = {
|
|
|
200
200
|
path: '/maps/vt/proto + viewport share URLs',
|
|
201
201
|
notes: 'Composable tile sessions (map.tiles) and buildViewportLink — not the billed Maps JavaScript API.',
|
|
202
202
|
},
|
|
203
|
-
aerialView: {
|
|
204
|
-
status: 'auth-required',
|
|
205
|
-
method: 'GET',
|
|
206
|
-
path: 'aerialview.googleapis.com/v1/videos:*',
|
|
207
|
-
notes: 'Aerial View API only — consumer place preview does not expose cinematic video URIs. map.aerialView with GMAPS_AERIAL_VIEW_API_KEY.',
|
|
208
|
-
},
|
|
209
203
|
mapsUrlBuilders: {
|
|
210
204
|
status: 'working',
|
|
211
205
|
method: 'N/A',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"known-surfaces.js","sourceRoot":"","sources":["../src/known-surfaces.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"known-surfaces.js","sourceRoot":"","sources":["../src/known-surfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LensConfig, LensSearchLinkOptions, LensSearchSession, LensUploadOptions } from './types.js';
|
|
2
|
+
/** Builds the image-URL navigation offered by Google's shipped Lens upload service. */
|
|
3
|
+
export declare function buildLensSearchUrl(url: string, options?: LensSearchLinkOptions): string;
|
|
4
|
+
/** Starts anonymous Lens uploads; result recognition remains subject to Google's access checks. */
|
|
5
|
+
export declare class LensClient {
|
|
6
|
+
private readonly fetcher;
|
|
7
|
+
private readonly locale;
|
|
8
|
+
private readonly timeoutMs;
|
|
9
|
+
constructor(config?: LensConfig);
|
|
10
|
+
searchUrl(url: string): string;
|
|
11
|
+
/** Uploads caller-supplied image bytes and returns Google's redirect without loading result pages. */
|
|
12
|
+
createSearch(image: Uint8Array | Blob, options?: LensUploadOptions): Promise<LensSearchSession>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lens/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAS1G,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAS3F;AAED,mGAAmG;AACnG,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBACvB,MAAM,GAAE,UAAe;IAOnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAE9B,sGAAsG;IAChG,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiD1G"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { LensError } from './errors.js';
|
|
2
|
+
function imageUrl(value) {
|
|
3
|
+
let url;
|
|
4
|
+
try {
|
|
5
|
+
url = new URL(value);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
throw new TypeError('Lens requires an absolute HTTP or HTTPS image URL');
|
|
9
|
+
}
|
|
10
|
+
if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password)
|
|
11
|
+
throw new TypeError('Lens requires an HTTP or HTTPS image URL without credentials');
|
|
12
|
+
return url.toString();
|
|
13
|
+
}
|
|
14
|
+
/** Builds the image-URL navigation offered by Google's shipped Lens upload service. */
|
|
15
|
+
export function buildLensSearchUrl(url, options = {}) {
|
|
16
|
+
const endpoint = new URL('https://lens.google.com/v3/upload');
|
|
17
|
+
endpoint.searchParams.set('url', imageUrl(url));
|
|
18
|
+
endpoint.searchParams.set('ep', 'gsbubu');
|
|
19
|
+
endpoint.searchParams.set('st', String(Date.now()));
|
|
20
|
+
endpoint.searchParams.set('vpw', '1280');
|
|
21
|
+
endpoint.searchParams.set('vph', '720');
|
|
22
|
+
if (options.locale)
|
|
23
|
+
endpoint.searchParams.set('hl', options.locale);
|
|
24
|
+
return endpoint.toString();
|
|
25
|
+
}
|
|
26
|
+
/** Starts anonymous Lens uploads; result recognition remains subject to Google's access checks. */
|
|
27
|
+
export class LensClient {
|
|
28
|
+
fetcher;
|
|
29
|
+
locale;
|
|
30
|
+
timeoutMs;
|
|
31
|
+
constructor(config = {}) {
|
|
32
|
+
this.fetcher = config.fetch ?? globalThis.fetch;
|
|
33
|
+
this.locale = config.locale ?? 'en-US';
|
|
34
|
+
this.timeoutMs = config.timeoutMs ?? 30_000;
|
|
35
|
+
if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0 || this.timeoutMs > 2_147_483_647)
|
|
36
|
+
throw new RangeError('timeoutMs must be positive and no greater than 2147483647');
|
|
37
|
+
}
|
|
38
|
+
searchUrl(url) { return buildLensSearchUrl(url, { locale: this.locale }); }
|
|
39
|
+
/** Uploads caller-supplied image bytes and returns Google's redirect without loading result pages. */
|
|
40
|
+
async createSearch(image, options = {}) {
|
|
41
|
+
const mimeType = options.mimeType ?? ((image instanceof Blob ? image.type : '') || 'image/png');
|
|
42
|
+
if (!['image/png', 'image/jpeg', 'image/webp', 'image/gif'].includes(mimeType))
|
|
43
|
+
throw new TypeError('Lens supports PNG, JPEG, WebP, or GIF image bytes');
|
|
44
|
+
const blob = image instanceof Blob ? new Blob([image], { type: mimeType }) : image instanceof Uint8Array ? new Blob([new Uint8Array(image).buffer], { type: mimeType }) : undefined;
|
|
45
|
+
if (!blob || blob.size === 0)
|
|
46
|
+
throw new TypeError('A nonempty image Blob or Uint8Array is required');
|
|
47
|
+
if ((options.width === undefined) !== (options.height === undefined))
|
|
48
|
+
throw new TypeError('width and height must be provided together');
|
|
49
|
+
if (options.width !== undefined && (!Number.isSafeInteger(options.width) || options.width <= 0 || !Number.isSafeInteger(options.height) || options.height <= 0))
|
|
50
|
+
throw new RangeError('Image dimensions must be positive integers');
|
|
51
|
+
if (options.signal?.aborted)
|
|
52
|
+
throw options.signal.reason ?? new DOMException('The operation was aborted', 'AbortError');
|
|
53
|
+
const body = new FormData();
|
|
54
|
+
// The shipped UEShwc service submits encoded_image and optional processed_image_dimensions.
|
|
55
|
+
body.set('encoded_image', blob, options.filename ?? `image.${mimeType === 'image/jpeg' ? 'jpg' : mimeType.slice(6)}`);
|
|
56
|
+
if (options.width !== undefined)
|
|
57
|
+
body.set('processed_image_dimensions', `${options.width},${options.height}`);
|
|
58
|
+
const endpoint = new URL('https://lens.google.com/v3/upload');
|
|
59
|
+
endpoint.searchParams.set('ep', 'gsbubb');
|
|
60
|
+
endpoint.searchParams.set('st', String(Date.now()));
|
|
61
|
+
endpoint.searchParams.set('hl', this.locale);
|
|
62
|
+
endpoint.searchParams.set('vpw', '1280');
|
|
63
|
+
endpoint.searchParams.set('vph', '720');
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
const abort = () => controller.abort(options.signal?.reason ?? new DOMException('The operation was aborted', 'AbortError'));
|
|
66
|
+
options.signal?.addEventListener('abort', abort, { once: true });
|
|
67
|
+
const timer = setTimeout(() => controller.abort(new LensError('Lens upload timed out', 'timeout')), this.timeoutMs);
|
|
68
|
+
timer.unref?.();
|
|
69
|
+
try {
|
|
70
|
+
const response = await this.fetcher(endpoint.toString(), { method: 'POST', body, redirect: 'manual', signal: controller.signal });
|
|
71
|
+
const text = await response.text();
|
|
72
|
+
if (controller.signal.aborted)
|
|
73
|
+
throw controller.signal.reason;
|
|
74
|
+
const retry = response.headers.get('retry-after');
|
|
75
|
+
const retryAfterMs = retry && /^\d+(?:\.\d+)?$/.test(retry) ? Number(retry) * 1000 : undefined;
|
|
76
|
+
if (response.status === 429)
|
|
77
|
+
throw new LensError('Google Lens rate limited this request', 'rate-limit', 429, retryAfterMs);
|
|
78
|
+
if (/g-recaptcha|Our systems have detected unusual traffic|\/sorry\//i.test(text) || response.url.includes('/sorry/'))
|
|
79
|
+
throw new LensError('Google Lens returned a traffic challenge', 'blocked', response.status);
|
|
80
|
+
if (response.status === 401)
|
|
81
|
+
throw new LensError('Google Lens requires authentication', 'auth-required', 401);
|
|
82
|
+
const location = response.headers.get('location');
|
|
83
|
+
if (location && [301, 302, 303, 307, 308].includes(response.status)) {
|
|
84
|
+
let target;
|
|
85
|
+
try {
|
|
86
|
+
target = new URL(location, endpoint);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
throw new LensError('Google Lens returned a malformed redirect', 'parse', response.status);
|
|
90
|
+
}
|
|
91
|
+
if (target.hostname === 'accounts.google.com' || target.pathname.includes('ServiceLogin'))
|
|
92
|
+
throw new LensError('Google Lens requires authentication', 'auth-required', response.status);
|
|
93
|
+
if (target.protocol !== 'https:' || !['www.google.com', 'google.com', 'lens.google.com'].includes(target.hostname) || target.username || target.password || target.port)
|
|
94
|
+
throw new LensError('Google Lens returned an unexpected redirect', 'parse', response.status);
|
|
95
|
+
if (target.pathname.startsWith('/sorry/'))
|
|
96
|
+
throw new LensError('Google Lens requires a traffic challenge', 'blocked', response.status);
|
|
97
|
+
return { url: target.toString(), raw: { status: response.status, location, body: text } };
|
|
98
|
+
}
|
|
99
|
+
if (!response.ok)
|
|
100
|
+
throw new LensError(`Google Lens returned HTTP ${response.status}`, 'http', response.status, retryAfterMs);
|
|
101
|
+
throw new LensError('Google Lens did not provide a results redirect', 'parse', response.status);
|
|
102
|
+
}
|
|
103
|
+
catch (cause) {
|
|
104
|
+
if (controller.signal.aborted)
|
|
105
|
+
throw controller.signal.reason;
|
|
106
|
+
if (cause instanceof LensError)
|
|
107
|
+
throw cause;
|
|
108
|
+
throw new LensError('Google Lens upload failed', 'network', undefined, undefined, { cause });
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
clearTimeout(timer);
|
|
112
|
+
options.signal?.removeEventListener('abort', abort);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lens/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type LensErrorKind = 'http' | 'blocked' | 'auth-required' | 'rate-limit' | 'parse' | 'network' | 'timeout';
|
|
2
|
+
export declare class LensError extends Error {
|
|
3
|
+
readonly kind: LensErrorKind;
|
|
4
|
+
readonly status?: number | undefined;
|
|
5
|
+
readonly retryAfterMs?: number | undefined;
|
|
6
|
+
constructor(message: string, kind: LensErrorKind, status?: number | undefined, retryAfterMs?: number | undefined, options?: ErrorOptions);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lens/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAClH,qBAAa,SAAU,SAAQ,KAAK;IACL,QAAQ,CAAC,IAAI,EAAE,aAAa;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM;gBAAvG,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,aAAa,EAAW,MAAM,CAAC,EAAE,MAAM,YAAA,EAAW,YAAY,CAAC,EAAE,MAAM,YAAA,EAAE,OAAO,CAAC,EAAE,YAAY;CAI5I"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class LensError extends Error {
|
|
2
|
+
kind;
|
|
3
|
+
status;
|
|
4
|
+
retryAfterMs;
|
|
5
|
+
constructor(message, kind, status, retryAfterMs, options) {
|
|
6
|
+
super(message, options);
|
|
7
|
+
this.kind = kind;
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.retryAfterMs = retryAfterMs;
|
|
10
|
+
this.name = 'LensError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lens/errors.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACI;IAA8B;IAA0B;IAA9F,YAAY,OAAe,EAAW,IAAmB,EAAW,MAAe,EAAW,YAAqB,EAAE,OAAsB;QACzI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QADY,SAAI,GAAJ,IAAI,CAAe;QAAW,WAAM,GAAN,MAAM,CAAS;QAAW,iBAAY,GAAZ,YAAY,CAAS;QAEjH,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface LensConfig {
|
|
2
|
+
fetch?: typeof globalThis.fetch;
|
|
3
|
+
locale?: string;
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface LensRequestOptions {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
export interface LensUploadOptions extends LensRequestOptions {
|
|
10
|
+
filename?: string;
|
|
11
|
+
mimeType?: 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif';
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface LensSearchLinkOptions {
|
|
16
|
+
locale?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface LensSearchSession {
|
|
19
|
+
/** Google-issued results URL; opening it may still require an access challenge. */
|
|
20
|
+
url: string;
|
|
21
|
+
raw: {
|
|
22
|
+
status: number;
|
|
23
|
+
location: string;
|
|
24
|
+
body: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lens/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,kBAAkB;IAAG,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE;AAC5D,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lens/types.ts"],"names":[],"mappings":""}
|
package/dist/lens.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { LensClient, buildLensSearchUrl } from './lens/client.js';
|
|
2
|
+
export { LensError } from './lens/errors.js';
|
|
3
|
+
export type { LensErrorKind } from './lens/errors.js';
|
|
4
|
+
export type * from './lens/types.js';
|
|
5
|
+
import { LensClient } from './lens/client.js';
|
|
6
|
+
import type { LensConfig } from './lens/types.js';
|
|
7
|
+
export declare function lens(config?: LensConfig): LensClient;
|
|
8
|
+
//# sourceMappingURL=lens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lens.d.ts","sourceRoot":"","sources":["../src/lens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,wBAAgB,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,UAAU,CAAmC"}
|
package/dist/lens.js
ADDED
package/dist/lens.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lens.js","sourceRoot":"","sources":["../src/lens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,IAAI,CAAC,SAAqB,EAAE,IAAgB,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/news.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type GoogleWebConfig, type GoogleWebRequestOptions } from './utils/google-web.js';
|
|
2
|
+
export { GoogleWebError } from './utils/google-web.js';
|
|
3
|
+
export interface GoogleNewsConfig extends GoogleWebConfig {
|
|
4
|
+
language?: string;
|
|
5
|
+
country?: string;
|
|
6
|
+
edition?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GoogleNewsOptions extends GoogleWebRequestOptions {
|
|
9
|
+
language?: string;
|
|
10
|
+
country?: string;
|
|
11
|
+
edition?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface GoogleNewsArticle {
|
|
14
|
+
title: string;
|
|
15
|
+
url: string;
|
|
16
|
+
guid?: string;
|
|
17
|
+
publishedAt?: string;
|
|
18
|
+
source?: {
|
|
19
|
+
name: string;
|
|
20
|
+
url?: string;
|
|
21
|
+
};
|
|
22
|
+
descriptionHtml?: string;
|
|
23
|
+
rawXml: string;
|
|
24
|
+
}
|
|
25
|
+
export interface GoogleNewsFeed {
|
|
26
|
+
title: string;
|
|
27
|
+
url: string;
|
|
28
|
+
language?: string;
|
|
29
|
+
copyright?: string;
|
|
30
|
+
articles: GoogleNewsArticle[];
|
|
31
|
+
rawXml: string;
|
|
32
|
+
}
|
|
33
|
+
/** Parse Google News RSS metadata; article links remain Google's publisher redirects. */
|
|
34
|
+
export declare function parseGoogleNewsRss(xml: string): GoogleNewsFeed;
|
|
35
|
+
/** Public headline and query feeds, separate from paid third-party news APIs. */
|
|
36
|
+
export declare class GoogleNewsClient {
|
|
37
|
+
private readonly fetcher;
|
|
38
|
+
private readonly timeoutMs;
|
|
39
|
+
private readonly defaults;
|
|
40
|
+
constructor(config?: GoogleNewsConfig);
|
|
41
|
+
headlines(options?: GoogleNewsOptions): Promise<GoogleNewsFeed>;
|
|
42
|
+
search(query: string, options?: GoogleNewsOptions): Promise<GoogleNewsFeed>;
|
|
43
|
+
private feed;
|
|
44
|
+
}
|
|
45
|
+
export declare function googleNews(config?: GoogleNewsConfig): GoogleNewsClient;
|
|
46
|
+
//# sourceMappingURL=news.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"news.d.ts","sourceRoot":"","sources":["../src/news.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2D,KAAK,eAAe,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEpJ,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IAAG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACnH,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAAG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5H,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AA+HpJ,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAuB9D;AAED,iFAAiF;AACjF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAEhC,MAAM,GAAE,gBAAqB;IAMzC,SAAS,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IAEnE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;YAKjE,IAAI;CAUnB;AAED,wBAAgB,UAAU,CAAC,MAAM,GAAE,gBAAqB,GAAG,gBAAgB,CAAyC"}
|
package/dist/news.js
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { googleWebText, GoogleWebError, positiveTimeout, xmlText } from './utils/google-web.js';
|
|
2
|
+
export { GoogleWebError } from './utils/google-web.js';
|
|
3
|
+
function malformedXml(message = 'Malformed Google News RSS feed') {
|
|
4
|
+
throw new GoogleWebError(message, 'parse');
|
|
5
|
+
}
|
|
6
|
+
function xmlTagEnd(xml, start) {
|
|
7
|
+
let quote;
|
|
8
|
+
for (let i = start; i < xml.length; i++) {
|
|
9
|
+
const character = xml[i];
|
|
10
|
+
if (quote) {
|
|
11
|
+
if (character === quote)
|
|
12
|
+
quote = undefined;
|
|
13
|
+
}
|
|
14
|
+
else if (character === '"' || character === "'")
|
|
15
|
+
quote = character;
|
|
16
|
+
else if (character === '>')
|
|
17
|
+
return i;
|
|
18
|
+
else if (character === '<')
|
|
19
|
+
return malformedXml();
|
|
20
|
+
}
|
|
21
|
+
return malformedXml();
|
|
22
|
+
}
|
|
23
|
+
function xmlAttributes(value) {
|
|
24
|
+
const attributes = Object.create(null);
|
|
25
|
+
const pattern = /\s+([A-Za-z_][\w.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/y;
|
|
26
|
+
let cursor = 0;
|
|
27
|
+
while (cursor < value.length) {
|
|
28
|
+
if (!value.slice(cursor).trim())
|
|
29
|
+
break;
|
|
30
|
+
pattern.lastIndex = cursor;
|
|
31
|
+
const match = pattern.exec(value);
|
|
32
|
+
if (!match || match[1] in attributes)
|
|
33
|
+
return malformedXml('Malformed Google News XML attributes');
|
|
34
|
+
attributes[match[1]] = xmlText(match[2] ?? match[3]);
|
|
35
|
+
cursor = pattern.lastIndex;
|
|
36
|
+
}
|
|
37
|
+
return attributes;
|
|
38
|
+
}
|
|
39
|
+
function xmlRoot(xml) {
|
|
40
|
+
if (typeof xml !== 'string' || xml.length > 10_000_000)
|
|
41
|
+
return malformedXml('RSS exceeds the supported input size');
|
|
42
|
+
const stack = [];
|
|
43
|
+
let root;
|
|
44
|
+
let cursor = 0, count = 0;
|
|
45
|
+
while (cursor < xml.length) {
|
|
46
|
+
if (xml[cursor] !== '<') {
|
|
47
|
+
const next = xml.indexOf('<', cursor);
|
|
48
|
+
const end = next === -1 ? xml.length : next;
|
|
49
|
+
const text = xml.slice(cursor, end);
|
|
50
|
+
const parent = stack[stack.length - 1];
|
|
51
|
+
if (parent)
|
|
52
|
+
parent.parts.push(text);
|
|
53
|
+
else if (text.trim())
|
|
54
|
+
return malformedXml();
|
|
55
|
+
cursor = end;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (xml.startsWith('<!--', cursor)) {
|
|
59
|
+
const end = xml.indexOf('-->', cursor + 4);
|
|
60
|
+
if (end === -1 || xml.slice(cursor + 4, end).includes('--'))
|
|
61
|
+
return malformedXml('Malformed Google News XML comment');
|
|
62
|
+
cursor = end + 3;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (xml.startsWith('<![CDATA[', cursor)) {
|
|
66
|
+
const parent = stack[stack.length - 1];
|
|
67
|
+
const end = xml.indexOf(']]>', cursor + 9);
|
|
68
|
+
if (!parent || end === -1)
|
|
69
|
+
return malformedXml('Malformed Google News CDATA');
|
|
70
|
+
parent.parts.push({ cdata: xml.slice(cursor + 9, end) });
|
|
71
|
+
cursor = end + 3;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (xml.startsWith('<?', cursor)) {
|
|
75
|
+
const end = xml.indexOf('?>', cursor + 2);
|
|
76
|
+
if (end === -1)
|
|
77
|
+
return malformedXml('Malformed Google News XML processing instruction');
|
|
78
|
+
cursor = end + 2;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (xml.startsWith('<!', cursor))
|
|
82
|
+
return malformedXml('RSS declarations and external entities are unsupported');
|
|
83
|
+
const end = xmlTagEnd(xml, cursor + 1);
|
|
84
|
+
const token = xml.slice(cursor + 1, end);
|
|
85
|
+
if (token.startsWith('/')) {
|
|
86
|
+
const match = /^\/([A-Za-z_][\w.:-]*)\s*$/.exec(token);
|
|
87
|
+
const node = stack.pop();
|
|
88
|
+
if (!match || !node || node.name !== match[1])
|
|
89
|
+
return malformedXml('Mismatched Google News XML element');
|
|
90
|
+
node.closing = xml.slice(cursor, end + 1);
|
|
91
|
+
node.end = end + 1;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const match = /^([A-Za-z_][\w.:-]*)([\s\S]*)$/.exec(token);
|
|
95
|
+
if (!match)
|
|
96
|
+
return malformedXml();
|
|
97
|
+
const selfClosing = /\/\s*$/.test(match[2]);
|
|
98
|
+
const attributeText = selfClosing ? match[2].replace(/\/\s*$/, '') : match[2];
|
|
99
|
+
const node = {
|
|
100
|
+
name: match[1], attributes: xmlAttributes(attributeText), parts: [], children: [],
|
|
101
|
+
opening: xml.slice(cursor, end + 1), closing: '', start: cursor, end: end + 1,
|
|
102
|
+
};
|
|
103
|
+
const parent = stack[stack.length - 1];
|
|
104
|
+
if (parent) {
|
|
105
|
+
parent.children.push(node);
|
|
106
|
+
parent.parts.push(node);
|
|
107
|
+
}
|
|
108
|
+
else if (root)
|
|
109
|
+
return malformedXml('Google News RSS has multiple root elements');
|
|
110
|
+
else
|
|
111
|
+
root = node;
|
|
112
|
+
if (++count > 50_000 || stack.length >= 64)
|
|
113
|
+
return malformedXml('RSS exceeds supported XML complexity');
|
|
114
|
+
if (!selfClosing)
|
|
115
|
+
stack.push(node);
|
|
116
|
+
}
|
|
117
|
+
cursor = end + 1;
|
|
118
|
+
}
|
|
119
|
+
if (stack.length || !root)
|
|
120
|
+
return malformedXml('Truncated Google News RSS feed');
|
|
121
|
+
return root;
|
|
122
|
+
}
|
|
123
|
+
function elementContent(element) {
|
|
124
|
+
return element.parts.map(part => typeof part === 'string' ? xmlText(part) : 'cdata' in part ? part.cdata : xmlText(part.opening) + elementContent(part) + xmlText(part.closing)).join('');
|
|
125
|
+
}
|
|
126
|
+
function field(element, name) {
|
|
127
|
+
const child = element.children.find(item => item.name === name);
|
|
128
|
+
return child ? elementContent(child) : undefined;
|
|
129
|
+
}
|
|
130
|
+
function httpUrl(value, name) {
|
|
131
|
+
let url;
|
|
132
|
+
try {
|
|
133
|
+
url = new URL(value);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
throw new GoogleWebError(`Google News has an invalid ${name}`, 'parse');
|
|
137
|
+
}
|
|
138
|
+
if ((url.protocol !== 'https:' && url.protocol !== 'http:') || url.username || url.password)
|
|
139
|
+
throw new GoogleWebError(`Google News has an invalid ${name}`, 'parse');
|
|
140
|
+
return url.toString();
|
|
141
|
+
}
|
|
142
|
+
/** Parse Google News RSS metadata; article links remain Google's publisher redirects. */
|
|
143
|
+
export function parseGoogleNewsRss(xml) {
|
|
144
|
+
const root = xmlRoot(xml);
|
|
145
|
+
const channels = root.children.filter(child => child.name === 'channel');
|
|
146
|
+
if (root.name !== 'rss' || channels.length !== 1)
|
|
147
|
+
return malformedXml();
|
|
148
|
+
const channel = channels[0];
|
|
149
|
+
const title = field(channel, 'title'), link = field(channel, 'link');
|
|
150
|
+
if (!title || !link)
|
|
151
|
+
throw new GoogleWebError('Google News RSS has no channel title or URL', 'parse');
|
|
152
|
+
const articles = channel.children.filter(child => child.name === 'item').map(item => {
|
|
153
|
+
const rawXml = xml.slice(item.start, item.end);
|
|
154
|
+
const title = field(item, 'title'), link = field(item, 'link');
|
|
155
|
+
if (!title || !link)
|
|
156
|
+
throw new GoogleWebError('Google News article has no title or URL', 'parse');
|
|
157
|
+
const source = item.children.find(child => child.name === 'source');
|
|
158
|
+
const sourceUrl = source?.attributes.url;
|
|
159
|
+
const date = field(item, 'pubDate');
|
|
160
|
+
if (date && !Number.isFinite(Date.parse(date)))
|
|
161
|
+
throw new GoogleWebError('Google News article has an invalid publication date', 'parse');
|
|
162
|
+
return {
|
|
163
|
+
title, url: httpUrl(link, 'article URL'), guid: field(item, 'guid'),
|
|
164
|
+
publishedAt: date ? new Date(date).toISOString() : undefined,
|
|
165
|
+
source: source ? { name: elementContent(source), url: sourceUrl ? httpUrl(sourceUrl, 'source URL') : undefined } : undefined,
|
|
166
|
+
descriptionHtml: field(item, 'description'), rawXml,
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
return { title, url: httpUrl(link, 'channel URL'), language: field(channel, 'language'), copyright: field(channel, 'copyright'), articles, rawXml: xml };
|
|
170
|
+
}
|
|
171
|
+
/** Public headline and query feeds, separate from paid third-party news APIs. */
|
|
172
|
+
export class GoogleNewsClient {
|
|
173
|
+
fetcher;
|
|
174
|
+
timeoutMs;
|
|
175
|
+
defaults;
|
|
176
|
+
constructor(config = {}) {
|
|
177
|
+
this.fetcher = config.fetch ?? globalThis.fetch;
|
|
178
|
+
this.timeoutMs = positiveTimeout(config.timeoutMs ?? 30_000);
|
|
179
|
+
this.defaults = config;
|
|
180
|
+
}
|
|
181
|
+
headlines(options = {}) { return this.feed('/rss', options); }
|
|
182
|
+
search(query, options = {}) {
|
|
183
|
+
if (typeof query !== 'string' || !query.trim())
|
|
184
|
+
throw new TypeError('Google News query must not be empty');
|
|
185
|
+
return this.feed('/rss/search', options, query);
|
|
186
|
+
}
|
|
187
|
+
async feed(path, options, query) {
|
|
188
|
+
const language = options.language ?? this.defaults.language ?? 'en-US';
|
|
189
|
+
const country = options.country ?? this.defaults.country ?? 'US';
|
|
190
|
+
const edition = options.edition ?? this.defaults.edition ?? `${country}:${language.split('-')[0]}`;
|
|
191
|
+
if (!/^[a-zA-Z]{2,8}(?:-[a-zA-Z0-9]{1,8})*$/.test(language) || !/^[A-Z]{2}$/.test(country) || !/^[A-Z]{2}:[a-zA-Z-]+$/.test(edition))
|
|
192
|
+
throw new TypeError('Invalid Google News locale or edition');
|
|
193
|
+
const url = new URL(path, 'https://news.google.com');
|
|
194
|
+
for (const [key, value] of Object.entries({ hl: language, gl: country, ceid: edition }))
|
|
195
|
+
url.searchParams.set(key, value);
|
|
196
|
+
if (query !== undefined)
|
|
197
|
+
url.searchParams.set('q', query);
|
|
198
|
+
return parseGoogleNewsRss(await googleWebText(this.fetcher, url, { method: 'GET' }, this.timeoutMs, options.signal));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export function googleNews(config = {}) { return new GoogleNewsClient(config); }
|
|
202
|
+
//# sourceMappingURL=news.js.map
|
package/dist/news.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"news.js","sourceRoot":"","sources":["../src/news.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AnalyzeOptions, CreateAnalysisOptions, PageSpeedAnalysis, PageSpeedConfig, PageSpeedRequestOptions, RunPagespeedOptions, RunPagespeedResponse, WaitForAnalysisOptions } from './types.js';
|
|
2
|
+
/** A keyless PageSpeed web client with an explicit official API method. */
|
|
3
|
+
export declare class PageSpeedClient {
|
|
4
|
+
private readonly fetcher;
|
|
5
|
+
private readonly locale;
|
|
6
|
+
private readonly requestTimeoutMs;
|
|
7
|
+
private readonly apiKey?;
|
|
8
|
+
private session?;
|
|
9
|
+
private requestId;
|
|
10
|
+
constructor(config?: PageSpeedConfig);
|
|
11
|
+
/** Starts the website's mobile and desktop Lighthouse, URL CrUX, and origin CrUX jobs. */
|
|
12
|
+
createAnalysis(url: string, options?: CreateAnalysisOptions): Promise<PageSpeedAnalysis>;
|
|
13
|
+
/** Retrieves an existing analysis by ID or a pagespeed.web.dev report URL. */
|
|
14
|
+
getAnalysis(idOrReportUrl: string, options?: PageSpeedRequestOptions): Promise<PageSpeedAnalysis>;
|
|
15
|
+
/** Refreshes pending jobs once and merges them by result ID. */
|
|
16
|
+
pollAnalysis(analysisOrId: PageSpeedAnalysis | string, options?: PageSpeedRequestOptions): Promise<PageSpeedAnalysis>;
|
|
17
|
+
/** Waits for jobs to finish; per-job errors remain available on the returned results. */
|
|
18
|
+
waitForAnalysis(analysisOrId: PageSpeedAnalysis | string, options?: WaitForAnalysisOptions): Promise<PageSpeedAnalysis>;
|
|
19
|
+
/** Creates an analysis and waits for both strategies and their field-data jobs. */
|
|
20
|
+
analyze(url: string, options?: AnalyzeOptions): Promise<PageSpeedAnalysis>;
|
|
21
|
+
/** Calls the documented v5 API; categories and API keys apply only to this method. */
|
|
22
|
+
runPagespeed(url: string, options?: RunPagespeedOptions): Promise<RunPagespeedResponse>;
|
|
23
|
+
private bootstrap;
|
|
24
|
+
private rpc;
|
|
25
|
+
private request;
|
|
26
|
+
}
|
|
27
|
+
export declare function pageSpeed(config?: PageSpeedConfig): PageSpeedClient;
|
|
28
|
+
//# sourceMappingURL=client.d.ts.map
|