O Dependabot propôs pdf-parse 1.1.4 → 2.4.5 (#213, fechado). O verify reprovou com
lib/ai/rag/extractors/pdf.ts(26,50): error TS2339: Property 'default' does not exist
porque a v2 é reescrita e exporta a classe PDFParse, não uma função default. Adaptar isso seria pequeno. O que fez o PR ser fechado é outra coisa:
"pdf-parse@2.4.5": { "dependencies": { "@napi-rs/canvas": "0.1.80", "pdfjs-dist": "5.4.296" } }
O pdf-parse@2 É o pdfjs-dist. E lib/ai/rag/extractors/pdf.ts é, por desenho, duas engines independentes:
Primary : pdf-parse
Fallback: pdfjs-dist legacy build (handles layout-heavy/scanned PDFs)
Aceitar o bump colapsa as duas na mesma engine: o fallback deixa de ser fallback, e o PDF que a v5 não lê a v6 também não lê. Medido nos lockfiles:
|
pdfjs-dist |
main |
6.2.108 |
com pdf-parse@2.4.5 |
5.4.296 e 6.2.108 (36 MB + 34 MB) |
Mais @napi-rs/canvas, que é binário nativo — assunto da imagem Docker do self-host.
A decisão
- (a) Ficar em
pdf-parse@1 e manter duas engines de verdade. Custo: uma dependência parada numa major antiga.
- (b) Largar o
pdf-parse e usar pdfjs-dist@6 direto (já está aqui). Aí a segunda tentativa passa a ser outra coisa, ou some conscientemente, e o pdf.ts fica honesto sobre quantas tentativas tem.
O dado que decide é qual das engines extrai melhor os PDFs reais que passam pelo RAG — e isso precisa de corpus, não de leitura de código. Enquanto ninguém medir isso, (a) é o default seguro.
Contexto que pesa: pdf.ts:45 registra que o fallback já esteve inalcançável por um return antes de ler o primeiro byte. Alguém já pagou por essa redundância não funcionar.
O Dependabot propôs
pdf-parse1.1.4 → 2.4.5 (#213, fechado). Overifyreprovou comporque a v2 é reescrita e exporta a classe
PDFParse, não uma função default. Adaptar isso seria pequeno. O que fez o PR ser fechado é outra coisa:O
pdf-parse@2É opdfjs-dist. Elib/ai/rag/extractors/pdf.tsé, por desenho, duas engines independentes:Aceitar o bump colapsa as duas na mesma engine: o fallback deixa de ser fallback, e o PDF que a v5 não lê a v6 também não lê. Medido nos lockfiles:
pdfjs-distmain6.2.108pdf-parse@2.4.55.4.296e6.2.108(36 MB + 34 MB)Mais
@napi-rs/canvas, que é binário nativo — assunto da imagem Docker do self-host.A decisão
pdf-parse@1e manter duas engines de verdade. Custo: uma dependência parada numa major antiga.pdf-parsee usarpdfjs-dist@6direto (já está aqui). Aí a segunda tentativa passa a ser outra coisa, ou some conscientemente, e opdf.tsfica honesto sobre quantas tentativas tem.O dado que decide é qual das engines extrai melhor os PDFs reais que passam pelo RAG — e isso precisa de corpus, não de leitura de código. Enquanto ninguém medir isso, (a) é o default seguro.
Contexto que pesa:
pdf.ts:45registra que o fallback já esteve inalcançável por umreturnantes de ler o primeiro byte. Alguém já pagou por essa redundância não funcionar.