chore(deps): bump @e4a/pg-js to ^1.5.0#94
Conversation
Picks up encryption4all/postguard-js#52 (resumable downloads via Range header on transient stream failures). Skips the 1.4.0 release in passing — same SDK lineage; jumping straight to 1.5.0 gets both the chunk-PUT retry/backoff (1.4) and the download Range-resume (1.5) in one go. Public-API note: pg-js's `downloadFileWithRetry` now returns the ReadableStream synchronously rather than wrapped in a Promise. This addon does not call that function directly — it consumes pg-js via `PostGuard.open()` / `Opened.decrypt()` which is unchanged — so no addon-side code change needed. `tsc --noEmit`, `vitest run`, and `npm run build` all clean.
|
/dobby please review this dependency bump |
|
Dobby sees the request! Dobby will check the pg-js bump, verify the lockfile resolution, validate the API note about the synchronous |
There was a problem hiding this comment.
Review summary — LGTM ✅
This bumps @e4a/pg-js from ^1.3.0 → ^1.5.0, picking up postguard-js #47 (chunk PUT retry + exponential backoff, UploadSessionExpiredError) and #52 (Range-based resumable downloads). Both upstream PRs are merged to pg-js main.
Verified locally
package-lock.jsonresolves@e4a/pg-js@1.5.0with a valid integrity hash.npm installclean, no advisories.npx tsc --noEmitpasses.npx vitest run— 21 passed, 108 todo (pre-existing baseline).npm run build— Build complete.- CI
buildjob is green;releasecorrectly skipped (no version tag).
API-impact verification
The PR body claims the addon is unaffected by the upstream signature change to downloadFileWithRetry (now returns ReadableStream synchronously instead of Promise<ReadableStream>). I confirmed this:
- The addon only imports from pg-js:
PostGuard,DecryptDataResult,DecryptFileResult(yivi-popup.ts) andbuildMime,extractCiphertext,extractUploadUuid,injectMimeHeaders(background.ts). No directdownloadFileWithRetrycall. - Decryption goes through
pg.open({...}).decrypt(...)(yivi-popup.ts:161-177), which is awaited. Stream-level read errors propagate through that await as before. - Internally, pg-js's
decrypt.tsnow wraps the synchronousReadableStreaminsidePromise.all— non-thenable values are passed through unchanged, so the call site is still correct.
Notes
- The unchecked manual end-to-end Thunderbird test in the test plan is the only remaining item; everything else automated is green.
- No transitive dep red flags.
Recommend: ready for merge once the manual TB roundtrip is done.
|
Thanks @dobby-coder for the approval. Manual TB roundtrip against dev cryptify before merge — flagged in the test plan, will run before flipping. |
|
@rubenhensen all dobby checks green — ready for your review and merge when you've run the manual smoke tests called out in the test plan. |
Picks up encryption4all/postguard-js#52 (resumable downloads via Range on transient failures) and #47 (chunk PUT retry/backoff with exponential jitter, surfacing of `UploadSessionExpiredError`). Skips 1.4.0 in passing — same SDK lineage, single bump grabs both.
Public-API note
pg-js's `downloadFileWithRetry` now returns the `ReadableStream` synchronously instead of wrapping it in a Promise. The addon does not call that function directly — it consumes pg-js via `PostGuard.open()` / `Opened.decrypt()`, which is unchanged. No addon-side code change needed.
Stream-level errors that previously surfaced as a Promise rejection from `await downloadFileWithRetry` now surface on the consumer's first `read()`. Since the addon's only access path is through `Opened.decrypt()`, those errors continue to propagate via the surrounding `await`.
Test plan