amenbo 0.5.0 → 0.6.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.en.md +15 -5
- package/README.md +15 -5
- package/dist/cache.js +4 -0
- package/dist/cache.js.map +1 -1
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/core.js +171 -42
- package/dist/core.js.map +1 -1
- package/dist/extract/pdf.d.ts +7 -1
- package/dist/extract/pdf.js +24 -6
- package/dist/extract/pdf.js.map +1 -1
- package/dist/fetcher/browser.d.ts +10 -3
- package/dist/fetcher/browser.js +13 -6
- package/dist/fetcher/browser.js.map +1 -1
- package/dist/fetcher/http.d.ts +12 -14
- package/dist/fetcher/http.js +95 -24
- package/dist/fetcher/http.js.map +1 -1
- package/dist/fetcher/index.d.ts +4 -1
- package/dist/fetcher/index.js +23 -2
- package/dist/fetcher/index.js.map +1 -1
- package/dist/fetcher/ssrfProxy.d.ts +1 -1
- package/dist/fetcher/ssrfProxy.js +5 -1
- package/dist/fetcher/ssrfProxy.js.map +1 -1
- package/dist/formatting.d.ts +9 -1
- package/dist/formatting.js +28 -2
- package/dist/formatting.js.map +1 -1
- package/dist/politeness.d.ts +2 -0
- package/dist/politeness.js +11 -3
- package/dist/politeness.js.map +1 -1
- package/dist/screenshot.d.ts +2 -0
- package/dist/screenshot.js +16 -8
- package/dist/screenshot.js.map +1 -1
- package/dist/server.d.ts +10 -2
- package/dist/server.js +137 -107
- package/dist/server.js.map +1 -1
- package/dist/tokens.d.ts +20 -7
- package/dist/tokens.js +74 -23
- package/dist/tokens.js.map +1 -1
- package/package.json +4 -2
package/dist/core.js
CHANGED
|
@@ -22,7 +22,7 @@ import { evaluateQuality } from "./extract/qualityScore.js";
|
|
|
22
22
|
import { closeBrowser } from "./fetcher/browser.js";
|
|
23
23
|
import { fetchPage } from "./fetcher/index.js";
|
|
24
24
|
import { assertHttpScheme, httpGetBinary } from "./fetcher/http.js";
|
|
25
|
-
import { buildScreenshotContent, formatDiffResponse, formatHandoffResponse, formatMarkdownResponse, formatOutlineResponse, formatPdfResponseFromCache, formatPdfTextResponse, formatUnchangedResponse, } from "./formatting.js";
|
|
25
|
+
import { buildScreenshotContent, formatDiffResponse, formatHandoffResponse, formatMarkdownResponse, formatOutlineResponse, formatPdfImageResponse, formatPdfResponseFromCache, formatPdfTextResponse, formatUnchangedResponse, } from "./formatting.js";
|
|
26
26
|
import { PolitenessManager } from "./politeness.js";
|
|
27
27
|
import { captureTiledScreenshot, DEFAULT_TILE_WIDTH } from "./screenshot.js";
|
|
28
28
|
import { computeBlockHashes, removeTemplateBlocks } from "./templateLearning.js";
|
|
@@ -105,6 +105,17 @@ export function registerCoreShutdownHandlers() {
|
|
|
105
105
|
const DEFAULT_MAX_TOKENS = 8000;
|
|
106
106
|
const DEFAULT_PAGE = 1;
|
|
107
107
|
const DEFAULT_SCREENSHOT_SCALE = 1.0;
|
|
108
|
+
/**
|
|
109
|
+
* そのURLがPDFとしてキャッシュ済みか(pdfPageCountはPDF経路だけが書くメタデータ)。
|
|
110
|
+
*
|
|
111
|
+
* 「解析中でまだキャッシュに現れていない間に届いた同一URLの要求が、HTML経路へ入って
|
|
112
|
+
* 取得をやり直す」という窓は無い。pdf.jsの解析はマクロタスクを一切譲らないため
|
|
113
|
+
* (1000ページのPDFの解析192msの間、5ms間隔のタイマーが0回発火)、後続要求が処理されるのは
|
|
114
|
+
* 解析が終わってキャッシュが書かれた後になる。
|
|
115
|
+
*/
|
|
116
|
+
function isCachedAsPdf(url) {
|
|
117
|
+
return typeof cache.get(url)?.metadata.pdfPageCount === "number";
|
|
118
|
+
}
|
|
108
119
|
/** URLのhostnameを安全に取り出す(不正URLならnull)。Phase 4テンプレート学習のドメインキーに使う。 */
|
|
109
120
|
function safeHostname(url) {
|
|
110
121
|
try {
|
|
@@ -127,9 +138,14 @@ async function fetchAndExtract(url, selector, conditionalHeaders, onProgress) {
|
|
|
127
138
|
// 確認する(guardedFetch内で着地先オリジンが変わった場合のみ呼ばれる。同一オリジン内
|
|
128
139
|
// リダイレクトや初回URLは呼び出し元のpoliteness.guardで確認済みのため二重チェックしない)。
|
|
129
140
|
const checkRobots = (targetUrl) => politeness.checkRobotsAllowed(targetUrl);
|
|
130
|
-
|
|
141
|
+
// content-typeでしかPDFと分からないURLは、プレビュー読み(256KB)で返してもらうと
|
|
142
|
+
// 専用経路が同じURLをもう一度全体取得することになる。この段階で全体を読み切ってもらい、
|
|
143
|
+
// 取得を1回で済ませる(handleFetchToolのhandoff分岐がこのバイト列をそのまま使う)。
|
|
144
|
+
const fullReadMaxBytes = (contentType, finalUrl) => looksLikePdf(finalUrl, contentType) ? DEFAULT_PDF_MAX_BYTES : null;
|
|
145
|
+
const baseOptions = { onProgress, checkRobots, fullReadMaxBytes };
|
|
146
|
+
const fetchResult = await fetchPage(url, conditionalHeaders ? { ...baseOptions, headers: conditionalHeaders } : baseOptions);
|
|
131
147
|
if ("notModified" in fetchResult) {
|
|
132
|
-
return { status: "not_modified" };
|
|
148
|
+
return { status: "not_modified", finalUrl: fetchResult.finalUrl };
|
|
133
149
|
}
|
|
134
150
|
// 機能B: HTML/PDF以外のコンテンツはハンドオフ応答(メタデータ+プレビュー+curl誘導)の対象。
|
|
135
151
|
// Markdown抽出・品質判定・キャッシュ保存は行わない。
|
|
@@ -214,6 +230,37 @@ function pageFromCacheEntry(url, cached, cacheStatus) {
|
|
|
214
230
|
* ため、outline→sectionの推奨フロー等でキャッシュヒットするたびに待機・robots再判定という
|
|
215
231
|
* 自己ペナルティが発生していた不具合の修正。selector指定時は必ずfetchするため常にguardする。
|
|
216
232
|
*/
|
|
233
|
+
/**
|
|
234
|
+
* 同じキーの処理を1本にまとめる。politenessの直列キューは取得の「開始間隔」を空けるだけで
|
|
235
|
+
* 取得自体は並行するため、同じURLへの同時呼び出しが先方へ2回出ていた。あわせて、
|
|
236
|
+
* 先に始まった取得が後から完了して新しいキャッシュを古い内容で上書きする競合も塞ぐ。
|
|
237
|
+
*
|
|
238
|
+
* 進捗通知は相乗りした呼び出しにも配る。まとめた先頭の呼び出しにprogressTokenが無く、
|
|
239
|
+
* 後から相乗りした呼び出しにだけある場合でも、通知が届かなくならないようにするため。
|
|
240
|
+
*/
|
|
241
|
+
class SharedOperations {
|
|
242
|
+
running = new Map();
|
|
243
|
+
run(key, onProgress, operation) {
|
|
244
|
+
const existing = this.running.get(key);
|
|
245
|
+
if (existing) {
|
|
246
|
+
if (onProgress)
|
|
247
|
+
existing.listeners.add(onProgress);
|
|
248
|
+
return existing.promise;
|
|
249
|
+
}
|
|
250
|
+
const listeners = new Set();
|
|
251
|
+
if (onProgress)
|
|
252
|
+
listeners.add(onProgress);
|
|
253
|
+
const notify = (message) => {
|
|
254
|
+
for (const listener of listeners)
|
|
255
|
+
listener(message);
|
|
256
|
+
};
|
|
257
|
+
const promise = operation(notify).finally(() => this.running.delete(key));
|
|
258
|
+
this.running.set(key, { promise, listeners });
|
|
259
|
+
return promise;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/** selector指定時はキャッシュを使わず結果もselector毎に変わるため、まとめる対象にしない。 */
|
|
263
|
+
const pageOperations = new SharedOperations();
|
|
217
264
|
async function resolvePage(url, selector, onProgress) {
|
|
218
265
|
if (selector) {
|
|
219
266
|
await politeness.guard(url, onProgress);
|
|
@@ -243,20 +290,34 @@ async function resolvePage(url, selector, onProgress) {
|
|
|
243
290
|
if (cached && cache.isFresh(cached)) {
|
|
244
291
|
return pageFromCacheEntry(url, cached, "fresh");
|
|
245
292
|
}
|
|
293
|
+
return pageOperations.run(url, onProgress, (notify) => fetchAndResolvePage(url, cached, notify));
|
|
294
|
+
}
|
|
295
|
+
/** resolvePageのうち、実際にサーバーへ取りにいく部分(同一URLでは1本にまとめられる)。 */
|
|
296
|
+
async function fetchAndResolvePage(url, cached, onProgress) {
|
|
246
297
|
// 条件付きGET(304)も含め実際にサーバーへ通信するため、ここでguardする
|
|
247
|
-
// (キャッシュfresh応答で早期returnした場合はguard
|
|
298
|
+
// (キャッシュfresh応答で早期returnした場合はguardしない=呼び出し元のコメント参照)。
|
|
248
299
|
await politeness.guard(url, onProgress);
|
|
249
300
|
const conditionalHeaders = {};
|
|
250
301
|
if (cached?.etag)
|
|
251
302
|
conditionalHeaders["If-None-Match"] = cached.etag;
|
|
252
303
|
if (cached?.lastModified)
|
|
253
304
|
conditionalHeaders["If-Modified-Since"] = cached.lastModified;
|
|
254
|
-
|
|
305
|
+
let result = await fetchAndExtract(url, undefined, Object.keys(conditionalHeaders).length > 0 ? conditionalHeaders : undefined, onProgress);
|
|
255
306
|
if (result.status === "not_modified") {
|
|
256
307
|
if (!cached)
|
|
257
308
|
throw new UnexpectedNotModifiedError(url);
|
|
258
|
-
|
|
259
|
-
|
|
309
|
+
// ETag/Last-Modifiedはリソース間で一意である必要がないため、リダイレクト先が
|
|
310
|
+
// 別のURLへ変わっていても304が返りうる。その304は手元のキャッシュとは別の表現に対する
|
|
311
|
+
// 応答なので、そのまま返すと古い本文を新しいURLの内容として渡してしまう。
|
|
312
|
+
const cachedFinalUrl = cached.metadata.finalUrl ?? url;
|
|
313
|
+
if (result.finalUrl === cachedFinalUrl) {
|
|
314
|
+
cache.touch(url);
|
|
315
|
+
return pageFromCacheEntry(url, cached, "revalidated");
|
|
316
|
+
}
|
|
317
|
+
await politeness.guard(url, onProgress);
|
|
318
|
+
result = await fetchAndExtract(url, undefined, undefined, onProgress);
|
|
319
|
+
if (result.status === "not_modified")
|
|
320
|
+
throw new UnexpectedNotModifiedError(url);
|
|
260
321
|
}
|
|
261
322
|
if (result.status === "handoff") {
|
|
262
323
|
return { kind: "handoff", handoff: result.handoff };
|
|
@@ -344,7 +405,11 @@ async function resolveScreenshot(url, options) {
|
|
|
344
405
|
// guardとは別枠。handleFetchTool冒頭の共通guardは撤去済み)。キャッシュfresh返却時は通らない。
|
|
345
406
|
await politeness.guard(url, options.onProgress);
|
|
346
407
|
options.onProgress?.("スクリーンショットを撮影しています…");
|
|
347
|
-
const captured = await captureTiledScreenshot(url,
|
|
408
|
+
const captured = await captureTiledScreenshot(url, {
|
|
409
|
+
...options,
|
|
410
|
+
// ブラウザ層が別オリジンへリダイレクトした場合もrobots.txtを確認する(HTTP層と同じ扱い)。
|
|
411
|
+
checkRobots: (targetUrl) => politeness.checkRobotsAllowed(targetUrl),
|
|
412
|
+
});
|
|
348
413
|
cache.setScreenshot({
|
|
349
414
|
cacheKey,
|
|
350
415
|
url: captured.finalUrl,
|
|
@@ -360,16 +425,54 @@ async function resolveScreenshot(url, options) {
|
|
|
360
425
|
truncated: captured.truncated,
|
|
361
426
|
};
|
|
362
427
|
}
|
|
363
|
-
|
|
428
|
+
/**
|
|
429
|
+
* 取得中のPDF。キーはURLのみにする。page/max_tokensは応答整形の差でしかなく、
|
|
430
|
+
* そこまでキーに含めると同じPDFを条件違いで別々に取得・解析し、同じキャッシュ行を
|
|
431
|
+
* 競合して更新することになるため。
|
|
432
|
+
*/
|
|
433
|
+
const pdfOperations = new SharedOperations();
|
|
364
434
|
/** PDFはキャッシュ層(§3-3等)を流用しつつ独立した経路で扱う。テキスト層があればMarkdown、無ければ画像タイル。 */
|
|
365
|
-
async function handlePdfFetch(url, page, maxTokens, onProgress) {
|
|
366
|
-
|
|
367
|
-
|
|
435
|
+
async function handlePdfFetch(url, page, maxTokens, onProgress, prefetched) {
|
|
436
|
+
if (!prefetched) {
|
|
437
|
+
const cached = cache.get(url);
|
|
438
|
+
if (cached && cache.isFresh(cached)) {
|
|
439
|
+
return [{ type: "text", text: formatPdfResponseFromCache(url, cached, maxTokens, page) }];
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
const document = await pdfOperations.run(url, onProgress, (notify) => loadPdfDocument(url, notify, prefetched));
|
|
443
|
+
if (document.kind === "cached") {
|
|
444
|
+
const cached = cache.get(url);
|
|
445
|
+
if (!cached)
|
|
446
|
+
throw new UnexpectedNotModifiedError(url);
|
|
447
|
+
// PDF応答フォーマットのcacheStatus型は"fresh"|"miss"のみのため、304再検証も
|
|
448
|
+
// "fresh"として表示する(HTML応答の"revalidated"相当だが、既存フォーマットは変更しない)。
|
|
368
449
|
return [{ type: "text", text: formatPdfResponseFromCache(url, cached, maxTokens, page) }];
|
|
369
450
|
}
|
|
451
|
+
if (document.kind === "text") {
|
|
452
|
+
const paginated = paginateMarkdown(document.markdown, maxTokens, page);
|
|
453
|
+
return [
|
|
454
|
+
{
|
|
455
|
+
type: "text",
|
|
456
|
+
text: formatPdfTextResponse(document.title, document.finalUrl, "miss", document.pageCount, paginated, document.extractedPageCount),
|
|
457
|
+
},
|
|
458
|
+
];
|
|
459
|
+
}
|
|
460
|
+
return [
|
|
461
|
+
{
|
|
462
|
+
type: "text",
|
|
463
|
+
text: formatPdfImageResponse(document.title, document.finalUrl, document.pageCount, document.extractedPageCount, document.images.length),
|
|
464
|
+
},
|
|
465
|
+
...document.images.map((image) => ({ type: "image", data: image.png.toString("base64"), mimeType: "image/png" })),
|
|
466
|
+
];
|
|
467
|
+
}
|
|
468
|
+
/** PDFの取得(必要なら)と解析。同一URLではこれが1本にまとめられる。 */
|
|
469
|
+
async function loadPdfDocument(url, notify, prefetched) {
|
|
470
|
+
if (prefetched)
|
|
471
|
+
return parsePdfDocument(url, prefetched, notify);
|
|
472
|
+
const cached = cache.get(url);
|
|
370
473
|
// レビュー指摘対応: キャッシュfresh応答時は実ネットワークアクセスが発生しないため
|
|
371
474
|
// guardしない(resolvePageと同じ方針)。実際にPDFを取得しに行く直前でのみguardする。
|
|
372
|
-
await politeness.guard(url,
|
|
475
|
+
await politeness.guard(url, notify);
|
|
373
476
|
// 低負荷原則対応: TTL失効後もキャッシュ(etag/last-modified)があれば条件付きGETで再検証する。
|
|
374
477
|
// HTML経路(resolvePage)は既にこの流儀で304時のフルDL+再パースを回避しているのに対し、
|
|
375
478
|
// PDF経路はTTL失効後は常にフルDL+全ページ再パースを行っており、20MB級の官公庁PDFで
|
|
@@ -379,48 +482,66 @@ async function handlePdfFetch(url, page, maxTokens, onProgress) {
|
|
|
379
482
|
conditionalHeaders["If-None-Match"] = cached.etag;
|
|
380
483
|
if (cached?.lastModified)
|
|
381
484
|
conditionalHeaders["If-Modified-Since"] = cached.lastModified;
|
|
382
|
-
const
|
|
485
|
+
const checkRobots = (targetUrl) => politeness.checkRobotsAllowed(targetUrl);
|
|
486
|
+
let binary = await httpGetBinary(url, {
|
|
383
487
|
maxBytes: DEFAULT_PDF_MAX_BYTES,
|
|
384
|
-
checkRobots
|
|
488
|
+
checkRobots,
|
|
385
489
|
...(Object.keys(conditionalHeaders).length > 0 ? { headers: conditionalHeaders } : {}),
|
|
386
490
|
});
|
|
387
491
|
if (binary.status === 304) {
|
|
388
492
|
if (!cached)
|
|
389
493
|
throw new UnexpectedNotModifiedError(url);
|
|
390
|
-
|
|
391
|
-
//
|
|
392
|
-
|
|
393
|
-
|
|
494
|
+
// HTML経路と同じ理由: リダイレクト先が変わっていても304は返りうるため、
|
|
495
|
+
// 着地先が一致するときだけキャッシュ済みの本文を使う(resolvePageのコメント参照)。
|
|
496
|
+
const cachedFinalUrl = cached.metadata.finalUrl ?? url;
|
|
497
|
+
if (binary.finalUrl === cachedFinalUrl) {
|
|
498
|
+
cache.touch(url);
|
|
499
|
+
return { kind: "cached" };
|
|
500
|
+
}
|
|
501
|
+
await politeness.guard(url, notify);
|
|
502
|
+
binary = await httpGetBinary(url, { maxBytes: DEFAULT_PDF_MAX_BYTES, checkRobots });
|
|
503
|
+
if (binary.status === 304)
|
|
504
|
+
throw new UnexpectedNotModifiedError(url);
|
|
394
505
|
}
|
|
395
|
-
|
|
396
|
-
|
|
506
|
+
return parsePdfDocument(url, { bytes: binary.bytes, finalUrl: binary.finalUrl, etag: binary.headers.get("etag"), lastModified: binary.headers.get("last-modified") }, notify);
|
|
507
|
+
}
|
|
508
|
+
/** 取得済みPDFバイト列を解析し、テキスト層があればキャッシュへ書き込む。 */
|
|
509
|
+
async function parsePdfDocument(url, source, notify) {
|
|
510
|
+
notify("PDFを解析しています…");
|
|
511
|
+
const textResult = await extractPdfText(source.bytes);
|
|
397
512
|
if (textResult.hasTextLayer) {
|
|
398
513
|
const markdown = markdownFromPdfText(textResult);
|
|
399
514
|
cache.set({
|
|
400
515
|
url,
|
|
401
|
-
etag:
|
|
402
|
-
lastModified:
|
|
516
|
+
etag: source.etag,
|
|
517
|
+
lastModified: source.lastModified,
|
|
403
518
|
markdown,
|
|
404
|
-
metadata: {
|
|
519
|
+
metadata: {
|
|
520
|
+
title: textResult.title,
|
|
521
|
+
finalUrl: source.finalUrl,
|
|
522
|
+
pdfPageCount: textResult.pageCount,
|
|
523
|
+
pdfExtractedPageCount: textResult.extractedPageCount,
|
|
524
|
+
},
|
|
405
525
|
});
|
|
406
|
-
|
|
407
|
-
|
|
526
|
+
return {
|
|
527
|
+
kind: "text",
|
|
528
|
+
title: textResult.title,
|
|
529
|
+
finalUrl: source.finalUrl,
|
|
530
|
+
markdown,
|
|
531
|
+
pageCount: textResult.pageCount,
|
|
532
|
+
extractedPageCount: textResult.extractedPageCount,
|
|
533
|
+
};
|
|
408
534
|
}
|
|
409
535
|
// テキスト層が実質無い(スキャンPDF): 先頭ページから画像タイルとして返す(キャッシュ非対象)
|
|
410
|
-
const images = await renderPdfPages(
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
].join("\n");
|
|
420
|
-
return [
|
|
421
|
-
{ type: "text", text: header },
|
|
422
|
-
...images.map((image) => ({ type: "image", data: image.png.toString("base64"), mimeType: "image/png" })),
|
|
423
|
-
];
|
|
536
|
+
const images = await renderPdfPages(source.bytes);
|
|
537
|
+
return {
|
|
538
|
+
kind: "images",
|
|
539
|
+
title: textResult.title,
|
|
540
|
+
finalUrl: source.finalUrl,
|
|
541
|
+
pageCount: textResult.pageCount,
|
|
542
|
+
extractedPageCount: textResult.extractedPageCount,
|
|
543
|
+
images,
|
|
544
|
+
};
|
|
424
545
|
}
|
|
425
546
|
// テスト用export(既存スタイルに合わせた最小のテスト可能化。politeness.guard呼び出し回数の検証用)。
|
|
426
547
|
export async function handleFetchTool(input) {
|
|
@@ -437,7 +558,9 @@ export async function handleFetchTool(input) {
|
|
|
437
558
|
// 各経路(resolvePage/handlePdfFetch/resolveScreenshot)の内部で、必要な箇所にのみ
|
|
438
559
|
// 個別に行う設計へ変更した(このファイル内の各所コメント参照)。
|
|
439
560
|
assertHttpScheme(input.url);
|
|
440
|
-
|
|
561
|
+
// URL拡張子に現れないPDF(`/download?id=123`型)は初回取得後にPDFとしてキャッシュされる。
|
|
562
|
+
// その記録も入口判定に使わないと、2回目以降だけHTMLページの応答形式で返ってしまう。
|
|
563
|
+
if (looksLikePdf(input.url, null) || isCachedAsPdf(input.url)) {
|
|
441
564
|
return handlePdfFetch(input.url, page, maxTokens, input.onProgress);
|
|
442
565
|
}
|
|
443
566
|
// 公開品質バグ修正: mode: screenshot(section未指定時)はMarkdown抽出結果を一切使わないため、
|
|
@@ -467,7 +590,13 @@ export async function handleFetchTool(input) {
|
|
|
467
590
|
if ("kind" in resolvedOrHandoff) {
|
|
468
591
|
const { handoff } = resolvedOrHandoff;
|
|
469
592
|
if (looksLikePdf(handoff.finalUrl, handoff.contentType)) {
|
|
470
|
-
|
|
593
|
+
// fullReadMaxBytesで本体を読み切っているため、ここで取得し直さない。
|
|
594
|
+
return handlePdfFetch(input.url, page, maxTokens, input.onProgress, {
|
|
595
|
+
bytes: handoff.bytes,
|
|
596
|
+
finalUrl: handoff.finalUrl,
|
|
597
|
+
etag: handoff.etag,
|
|
598
|
+
lastModified: handoff.lastModified,
|
|
599
|
+
});
|
|
471
600
|
}
|
|
472
601
|
return [{ type: "text", text: formatHandoffResponse(handoff, maxTokens) }];
|
|
473
602
|
}
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/extract/pdf.d.ts
CHANGED
|
@@ -4,14 +4,20 @@ export interface PdfTextResult {
|
|
|
4
4
|
/** ページ毎のプレーンテキスト(hasTextLayer=falseの場合は空配列)。 */
|
|
5
5
|
pages: string[];
|
|
6
6
|
pageCount: number;
|
|
7
|
+
/** 実際にテキスト抽出したページ数(上限で打ち切った場合はpageCountより小さい)。 */
|
|
8
|
+
extractedPageCount: number;
|
|
7
9
|
title: string | null;
|
|
8
10
|
}
|
|
9
11
|
/** URLまたはContent-TypeからPDFかどうかを判定する。 */
|
|
10
12
|
export declare function looksLikePdf(url: string, contentType: string | null): boolean;
|
|
11
13
|
/** PDFバイト列がサイズ上限を超えていないか確認する。超過時は型付きエラーを投げる。 */
|
|
12
14
|
export declare function assertPdfSizeWithinLimit(url: string, byteLength: number, maxBytes?: number): void;
|
|
15
|
+
export interface ExtractPdfTextOptions {
|
|
16
|
+
/** テキスト抽出するページ数の上限(既定 MAX_TEXT_PAGES)。 */
|
|
17
|
+
maxPages?: number;
|
|
18
|
+
}
|
|
13
19
|
/** PDFバイト列からテキスト層を抽出する。実質的にテキストが無ければhasTextLayer=false。 */
|
|
14
|
-
export declare function extractPdfText(bytes: Uint8Array): Promise<PdfTextResult>;
|
|
20
|
+
export declare function extractPdfText(bytes: Uint8Array, options?: ExtractPdfTextOptions): Promise<PdfTextResult>;
|
|
15
21
|
/** テキスト抽出結果をページ見出し付きのMarkdown相当プレーンテキストへ整形する。 */
|
|
16
22
|
export declare function markdownFromPdfText(result: PdfTextResult): string;
|
|
17
23
|
export interface PdfPageImage {
|
package/dist/extract/pdf.js
CHANGED
|
@@ -20,6 +20,12 @@ export const DEFAULT_PDF_MAX_BYTES = 20 * 1024 * 1024; // 20MB
|
|
|
20
20
|
const MIN_TEXT_CHARS_PER_PAGE = 30;
|
|
21
21
|
// 画像フォールバック時、トークン予算保護のため先頭N ページのみラスタライズする
|
|
22
22
|
const MAX_RENDER_PAGES = 10;
|
|
23
|
+
/**
|
|
24
|
+
* テキスト抽出するページ数の上限。20MBのバイト上限は処理時間を抑えない
|
|
25
|
+
* (実測: 30,000ページ・9.8MBのPDFで92.5秒。ページ数に対して超線形に伸びる)。
|
|
26
|
+
* 3,000ページなら約1秒で、統計年鑑のような大部の資料でも実用上到達しない水準。
|
|
27
|
+
*/
|
|
28
|
+
const MAX_TEXT_PAGES = 3000;
|
|
23
29
|
const RENDER_SCALE = 1.5;
|
|
24
30
|
/** URLまたはContent-TypeからPDFかどうかを判定する。 */
|
|
25
31
|
export function looksLikePdf(url, contentType) {
|
|
@@ -38,16 +44,25 @@ export function assertPdfSizeWithinLimit(url, byteLength, maxBytes = DEFAULT_PDF
|
|
|
38
44
|
throw new PayloadTooLargeError(url, byteLength, maxBytes);
|
|
39
45
|
}
|
|
40
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* pdf.jsはdataに渡したバイト列の下敷きのArrayBufferをワーカーへtransferするため、
|
|
49
|
+
* 呼び出し元の配列がその場でdetachされる(byteLengthが0になる)。テキスト層が無いPDFで
|
|
50
|
+
* 同じバイト列を画像化しようとすると必ず失敗していたため、渡す前に複製する。
|
|
51
|
+
*/
|
|
52
|
+
function toOwnedCopy(bytes) {
|
|
53
|
+
return new Uint8Array(bytes);
|
|
54
|
+
}
|
|
41
55
|
/** PDFバイト列からテキスト層を抽出する。実質的にテキストが無ければhasTextLayer=false。 */
|
|
42
|
-
export async function extractPdfText(bytes) {
|
|
56
|
+
export async function extractPdfText(bytes, options = {}) {
|
|
43
57
|
// verbosity: 0 (ERRORS)にしてpdf.jsの警告ログでstdout/stderrを汚さないようにする
|
|
44
|
-
const loadingTask = getDocument({ data: bytes, useSystemFonts: true, verbosity: 0 });
|
|
58
|
+
const loadingTask = getDocument({ data: toOwnedCopy(bytes), useSystemFonts: true, verbosity: 0 });
|
|
45
59
|
try {
|
|
46
60
|
const doc = await loadingTask.promise;
|
|
47
61
|
const pageCount = doc.numPages;
|
|
62
|
+
const extractedPageCount = Math.min(pageCount, options.maxPages ?? MAX_TEXT_PAGES);
|
|
48
63
|
const pages = [];
|
|
49
64
|
let totalChars = 0;
|
|
50
|
-
for (let i = 1; i <=
|
|
65
|
+
for (let i = 1; i <= extractedPageCount; i++) {
|
|
51
66
|
const page = await doc.getPage(i);
|
|
52
67
|
const content = await page.getTextContent();
|
|
53
68
|
const pageText = content.items.map((item) => ("str" in item ? item.str : "")).join("");
|
|
@@ -57,8 +72,11 @@ export async function extractPdfText(bytes) {
|
|
|
57
72
|
const metadata = await doc.getMetadata().catch(() => null);
|
|
58
73
|
const infoTitle = metadata?.info?.Title ?? "";
|
|
59
74
|
const title = infoTitle.trim() || null;
|
|
60
|
-
|
|
61
|
-
|
|
75
|
+
// ページ数上限で打ち切った場合、テキスト層の有無は先頭extractedPageCountページから判断する。
|
|
76
|
+
// 先頭がスキャンで後半にテキスト層があるPDFは画像フォールバックへ倒れるが、
|
|
77
|
+
// 全ページを読むと処理時間が有界にならないため、この近似を受け入れる。
|
|
78
|
+
const hasTextLayer = extractedPageCount > 0 && totalChars / extractedPageCount >= MIN_TEXT_CHARS_PER_PAGE;
|
|
79
|
+
return { hasTextLayer, pages: hasTextLayer ? pages : [], pageCount, extractedPageCount, title };
|
|
62
80
|
}
|
|
63
81
|
finally {
|
|
64
82
|
await loadingTask.destroy();
|
|
@@ -71,7 +89,7 @@ export function markdownFromPdfText(result) {
|
|
|
71
89
|
/** テキスト層が無いPDFのフォールバック: 各ページをPNGにラスタライズする(先頭MAX_RENDER_PAGESまで)。 */
|
|
72
90
|
export async function renderPdfPages(bytes) {
|
|
73
91
|
// verbosity: 0 (ERRORS)にしてpdf.jsの警告ログでstdout/stderrを汚さないようにする
|
|
74
|
-
const loadingTask = getDocument({ data: bytes, useSystemFonts: true, verbosity: 0 });
|
|
92
|
+
const loadingTask = getDocument({ data: toOwnedCopy(bytes), useSystemFonts: true, verbosity: 0 });
|
|
75
93
|
try {
|
|
76
94
|
const doc = await loadingTask.promise;
|
|
77
95
|
const pageCount = Math.min(doc.numPages, MAX_RENDER_PAGES);
|
package/dist/extract/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/extract/pdf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE9D,mDAAmD;AACnD,gDAAgD;AAChD,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,0CAA0C;AAC1C,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,YAAY,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/extract/pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ export declare function hideConsentBanners(page: Page): Promise<number>;
|
|
|
61
61
|
* Playwright側では現実的に組み込めないため、遷移前検証+リクエスト時の再検証という
|
|
62
62
|
* 「可能な範囲」の対策にとどめる。
|
|
63
63
|
*/
|
|
64
|
-
export declare function navigateSafely(page: Page, url: string, timeoutMs: number): Promise<PlaywrightResponse | null>;
|
|
64
|
+
export declare function navigateSafely(page: Page, url: string, timeoutMs: number, options?: SafeNavigationOptions): Promise<PlaywrightResponse | null>;
|
|
65
65
|
/**
|
|
66
66
|
* page.goto()の失敗が、ERR_HTTP2_PROTOCOL_ERROR系(実機検証: initial.inc等でPlaywright
|
|
67
67
|
* pinビルドのChromiumのみ発生し、素のcurl --http2やシステムのGoogle Chromeでは成功する
|
|
@@ -75,6 +75,13 @@ export interface BrowserNavigation {
|
|
|
75
75
|
page: Page;
|
|
76
76
|
response: PlaywrightResponse | null;
|
|
77
77
|
}
|
|
78
|
+
export interface SafeNavigationOptions {
|
|
79
|
+
/**
|
|
80
|
+
* メインフレームが別オリジンへ遷移した際に呼ばれるrobots.txt確認
|
|
81
|
+
* (fetcher/http.tsのHttpGetOptions.checkRobotsと同じ役割)。拒否時はそのまま伝播する。
|
|
82
|
+
*/
|
|
83
|
+
checkRobots?: ((url: string) => Promise<void>) | undefined;
|
|
84
|
+
}
|
|
78
85
|
/**
|
|
79
86
|
* 共有chromiumでcontext/pageを作りnavigateSafelyでナビゲーションする。ERR_HTTP2_PROTOCOL_ERROR系
|
|
80
87
|
* で失敗した場合のみ、システムのGoogle Chromeへ1回だけフォールバックする。
|
|
@@ -85,6 +92,6 @@ export interface BrowserNavigation {
|
|
|
85
92
|
* - システムにChromeが無くgetSystemChromeBrowser自体が失敗した場合
|
|
86
93
|
* Chromeでの再試行も失敗した場合は、そちらのエラー(Chrome経由での実際の失敗内容)を投げる。
|
|
87
94
|
*/
|
|
88
|
-
export declare function openPageAndNavigate(url: string, timeoutMs: number, contextOptions?: BrowserContextOptions): Promise<BrowserNavigation>;
|
|
95
|
+
export declare function openPageAndNavigate(url: string, timeoutMs: number, contextOptions?: BrowserContextOptions, navigationOptions?: SafeNavigationOptions): Promise<BrowserNavigation>;
|
|
89
96
|
/** Playwrightでページをレンダリングし、レンダリング後のHTMLを取得する。 */
|
|
90
|
-
export declare function fetchWithBrowser(url: string, timeoutMs?: number): Promise<BrowserFetchResult>;
|
|
97
|
+
export declare function fetchWithBrowser(url: string, timeoutMs?: number, navigationOptions?: SafeNavigationOptions): Promise<BrowserFetchResult>;
|
package/dist/fetcher/browser.js
CHANGED
|
@@ -284,8 +284,9 @@ function guardRequestUrl(rawUrl, hostGuardCache) {
|
|
|
284
284
|
* Playwright側では現実的に組み込めないため、遷移前検証+リクエスト時の再検証という
|
|
285
285
|
* 「可能な範囲」の対策にとどめる。
|
|
286
286
|
*/
|
|
287
|
-
export async function navigateSafely(page, url, timeoutMs) {
|
|
287
|
+
export async function navigateSafely(page, url, timeoutMs, options = {}) {
|
|
288
288
|
await guardPublicAddress(url);
|
|
289
|
+
const initialOrigin = new URL(url).origin;
|
|
289
290
|
let blockedError = null;
|
|
290
291
|
const hostGuardCache = new Map();
|
|
291
292
|
const handler = async (route, request) => {
|
|
@@ -294,6 +295,12 @@ export async function navigateSafely(page, url, timeoutMs) {
|
|
|
294
295
|
try {
|
|
295
296
|
if (isMainFrameNavigation) {
|
|
296
297
|
await guardPublicAddress(requestUrl);
|
|
298
|
+
// HTTP層(guardedFetch)は別オリジンへのリダイレクト着地でrobots.txtを再確認するのに、
|
|
299
|
+
// ブラウザ層はSSRFしか見ていなかった。同じリダイレクトでも取得経路が違うだけで
|
|
300
|
+
// 拒否されたりされなかったりするため、判定を揃える。
|
|
301
|
+
if (options.checkRobots && new URL(requestUrl).origin !== initialOrigin) {
|
|
302
|
+
await options.checkRobots(requestUrl);
|
|
303
|
+
}
|
|
297
304
|
}
|
|
298
305
|
else {
|
|
299
306
|
await guardRequestUrl(requestUrl, hostGuardCache);
|
|
@@ -348,12 +355,12 @@ export function isChromiumHttp2NavigationError(error) {
|
|
|
348
355
|
* - システムにChromeが無くgetSystemChromeBrowser自体が失敗した場合
|
|
349
356
|
* Chromeでの再試行も失敗した場合は、そちらのエラー(Chrome経由での実際の失敗内容)を投げる。
|
|
350
357
|
*/
|
|
351
|
-
export async function openPageAndNavigate(url, timeoutMs, contextOptions = {}) {
|
|
358
|
+
export async function openPageAndNavigate(url, timeoutMs, contextOptions = {}, navigationOptions = {}) {
|
|
352
359
|
const primaryBrowser = await getBrowser();
|
|
353
360
|
const primaryContext = await primaryBrowser.newContext(contextOptions);
|
|
354
361
|
try {
|
|
355
362
|
const page = await primaryContext.newPage();
|
|
356
|
-
const response = await navigateSafely(page, url, timeoutMs);
|
|
363
|
+
const response = await navigateSafely(page, url, timeoutMs, navigationOptions);
|
|
357
364
|
return { context: primaryContext, page, response };
|
|
358
365
|
}
|
|
359
366
|
catch (primaryError) {
|
|
@@ -381,7 +388,7 @@ export async function openPageAndNavigate(url, timeoutMs, contextOptions = {}) {
|
|
|
381
388
|
}
|
|
382
389
|
try {
|
|
383
390
|
const page = await chromeContext.newPage();
|
|
384
|
-
const response = await navigateSafely(page, url, timeoutMs);
|
|
391
|
+
const response = await navigateSafely(page, url, timeoutMs, navigationOptions);
|
|
385
392
|
return { context: chromeContext, page, response };
|
|
386
393
|
}
|
|
387
394
|
catch (fallbackError) {
|
|
@@ -391,8 +398,8 @@ export async function openPageAndNavigate(url, timeoutMs, contextOptions = {}) {
|
|
|
391
398
|
}
|
|
392
399
|
}
|
|
393
400
|
/** Playwrightでページをレンダリングし、レンダリング後のHTMLを取得する。 */
|
|
394
|
-
export async function fetchWithBrowser(url, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
395
|
-
const { context, page, response } = await openPageAndNavigate(url, timeoutMs, { userAgent: USER_AGENT });
|
|
401
|
+
export async function fetchWithBrowser(url, timeoutMs = DEFAULT_TIMEOUT_MS, navigationOptions = {}) {
|
|
402
|
+
const { context, page, response } = await openPageAndNavigate(url, timeoutMs, { userAgent: USER_AGENT }, navigationOptions);
|
|
396
403
|
try {
|
|
397
404
|
await hideConsentBanners(page).catch(() => {
|
|
398
405
|
// ページ評価に失敗しても取得自体は継続する(ベストエフォート)
|