feat: fork and onboard @unabandoned/JSONStream (vendor through, node:test suite) - #1
Merged
Merged
Conversation
… through Re-scope the package to @unabandoned/JSONStream, point repo/bugs/homepage at the fork, and set engines.node to >=22.12. Drop the abandoned through runtime dependency by inlining it at lib/through.js (it has zero deps of its own and JSONStream's parse/stringify streams are built directly on its queue/write/end surface, so a drop-in vendor keeps behaviour identical). Keep jsonparse as the sole runtime dep, pinned exactly for Renovate to track.
…m dev tree
Rewrite every test against node:test + node:assert. tape-based files reuse the
shared tap-adapter shim; the it-is/process.on('exit') scripts become explicit
node:test cases; and the round-trip tests use a small local event-stream shim
(readArray/writeArray/connect) instead of the abandoned event-stream package.
Remove the bespoke test/run.js runner (node --test replaces it) and the dead
gen.js stress script.
Thin callers pinned to unabandoned/.github reusable-*.yml (ci, codeql, commitlint, publish, release-please, release-cut, release-security, scorecard, renovate-config), plus renovate.json (extends the shared preset, forkProcessing enabled), release-please config/manifest, commitlint config and the commit-msg githook.
This was referenced Aug 14, 2026
00o-sh
added a commit
that referenced
this pull request
Aug 14, 2026
Follow-up to #1. The onboarding merged with the package named `@unabandoned/JSONStream`, but **npm forbids uppercase letters in new package names** — that name can't be published, and it can't even be resolved as an `npm:` alias (npm fails name validation with _"name can no longer contain capital letters"_, which is exactly what broke `npm install` in the first repoint PR). This renames the published package to the lowercase **`@unabandoned/jsonstream`**. What does **not** change: - The GitHub repo stays `unabandoned/JSONStream`. - Consumers keep the dependency **key** `JSONStream`, aliased to `npm:@unabandoned/jsonstream@^1`, so `node_modules/JSONStream` and `require('JSONStream')` are unchanged — no consumer code changes. - The `JSONStream.parse` / `JSONStream.stringify` API is untouched. Also updates `package` in `.unabandoned.yml` to match (validated). `node --test test/*.js` still passes (28/28) — the rename is inert to behaviour. --- _Generated by [Claude Code](https://claude.ai/code/session_01Wa4Hra9ctCDzbpPUaQB9mG)_
00o-sh
added a commit
that referenced
this pull request
Aug 14, 2026
🤖 I have created a release *beep* *boop* --- ## [1.4.0](jsonstream-v1.3.5...jsonstream-v1.4.0) (2026-08-14) ### Features * add option for emitting keys ([9aa2446](9aa2446)) * fork and onboard @unabandoned/JSONStream (vendor through, node:test suite) ([#1](#1)) ([f11ffef](f11ffef)) ### Bug Fixes * lowercase npm package name to @unabandoned/jsonstream ([#4](#4)) ([76dfce6](76dfce6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
00o-sh
added a commit
to unabandoned/deps-sort
that referenced
this pull request
Aug 14, 2026
Repoints the `JSONStream` runtime dependency to `npm:@unabandoned/jsonstream@^1`, so the abandoned upstream (and its abandoned `through` dependency) leaves deps-sort' transitive tree. Part of adopting JSONStream into the program — see unabandoned/JSONStream#1 / unabandoned/JSONStream#4 and the tracking issue unabandoned/browser-pack#3. The dependency **key** stays `JSONStream` (aliased to `npm:@unabandoned/jsonstream`), so `node_modules/JSONStream` and `require('JSONStream')` are unchanged — the fork is a drop-in with the same `JSONStream.parse` / `JSONStream.stringify` API, no code changes. ## Verification Installed deps-sort's full tree with `@unabandoned/jsonstream` (packed from the fork) standing in for the alias and ran the suite: **9 tests, 9 pass, 0 fail** on Node 22.22 and Node 24.19. `require('JSONStream')` resolved to the fork. ## Ordering note⚠️ **CI here stays red until `@unabandoned/jsonstream` is published to npm** (unabandoned/JSONStream#4 → release → publish). `npm install` can't resolve the alias until then; this is the expected publish-ordering dependency, verified above via a local install of the exact package contents. Holding ready-for-review in the meantime. --- _Generated by [Claude Code](https://claude.ai/code/session_01Wa4Hra9ctCDzbpPUaQB9mG)_
00o-sh
added a commit
to unabandoned/module-deps
that referenced
this pull request
Aug 14, 2026
Repoints the `JSONStream` runtime dependency to `npm:@unabandoned/JSONStream@^1`, so the abandoned upstream (and its abandoned `through` dependency) leaves module-deps' transitive tree. Part of adopting JSONStream into the program — see unabandoned/JSONStream#1 and the tracking issue unabandoned/browser-pack#3. The fork is a drop-in: same `JSONStream.parse` / `JSONStream.stringify` API, so `require('JSONStream')` is unchanged and there are no code changes — only the dependency spec. ## Verification Installed module-deps' full tree with `@unabandoned/JSONStream` (packed from unabandoned/JSONStream#1) standing in for the alias and ran the suite: **51 tests, 51 pass, 0 fail** on Node 22.22 and Node 24.19. `require('JSONStream')` resolved to the fork. ## Ordering note⚠️ **CI here will stay red until `@unabandoned/JSONStream` is published to npm** — `npm install` can't resolve `npm:@unabandoned/JSONStream@^1` until then. This is the expected publish-ordering dependency: merge + release + publish unabandoned/JSONStream#1 first, then re-run CI on this PR and it will go green (verified above via a local install of the exact package contents). Holding this PR ready-for-review in the meantime. --- _Generated by [Claude Code](https://claude.ai/code/session_01Wa4Hra9ctCDzbpPUaQB9mG)_
00o-sh
added a commit
to unabandoned/insert-module-globals
that referenced
this pull request
Aug 14, 2026
Repoints the `JSONStream` runtime dependency to `npm:@unabandoned/jsonstream@^1`, so the abandoned upstream (and its abandoned `through` dependency) leaves insert-module-globals' transitive tree. Part of adopting JSONStream into the program — see unabandoned/JSONStream#1 / unabandoned/JSONStream#4 and the tracking issue unabandoned/browser-pack#3. The dependency **key** stays `JSONStream` (aliased to `npm:@unabandoned/jsonstream`), so `node_modules/JSONStream` and `require('JSONStream')` are unchanged — the fork is a drop-in with the same `JSONStream.parse` / `JSONStream.stringify` API, no code changes. ## Verification Installed the full tree with `@unabandoned/jsonstream` (packed from the fork) standing in for the alias and ran the suite: **17 pass, 0 fail, 1 skip** (the pre-existing `windows partitions` platform skip) on Node 22.22 and Node 24.19. `require('JSONStream')` resolved to the fork. ## Ordering note⚠️ **CI here stays red until `@unabandoned/jsonstream` is published to npm** (unabandoned/JSONStream#4 → release → publish). `npm install` can't resolve the alias until then; this is the expected publish-ordering dependency, verified above via a local install of the exact package contents. Holding ready-for-review in the meantime. --- _Generated by [Claude Code](https://claude.ai/code/session_01Wa4Hra9ctCDzbpPUaQB9mG)_
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adopts JSONStream into the
unabandonedprogram. JSONStream is unmaintained (last release 2018) and shipped the abandonedthroughruntime dependency, so per the org directive (abandoned + any outdated dep → fork and own; fix forward, don't pin) it's a fork/own target. This is the standard@unabandonedonboarding plus a fix-forward cleanup of its tree.Tracking issue: unabandoned/browser-pack#3
Tree cleanup (fix forward)
through→ vendored.throughis abandoned. It has zero deps of its own and JSONStream'sparse()/stringify()streams are built directly on itsqueue()/write()/end()surface, so it's inlined verbatim atlib/through.js(MIT header preserved) and the external dependency is dropped. Behaviour is identical.jsonparsekept. Zero-dep leaf, still current — kept as the sole runtime dependency, pinned exactly so Renovate tracks it.Runtime dependency tree after this change:
@unabandoned/JSONStream → jsonparse(one leaf, no abandoned deps).Test suite →
node:testThe upstream suite depended on a heavy, abandoned dev tree (
tape,it-is,assertions,render,trees,event-stream). It's ported tonode:test+node:assertwith a near-zero dev tree:tap-adaptershim.it-is/process.on('exit')scripts become explicitnode:testcases.event-streamshim (readArray/writeArray/connect) instead of the abandoned package.test/run.js(bespoke runner) and the deadgen.jsstress script are removed.Only
@commitlint/*remains indevDependencies.Onboarding
@unabandoned/JSONStream; repo/bugs/homepage URLs updated;engines.nodeset to>=22.12.unabandoned/.github(ci, codeql, commitlint, publish, release-please, release-cut, release-security, scorecard, renovate-config).renovate.json(extends shared preset,forkProcessingenabled), release-please config/manifest, commitlint config + commit-msg githook,.npmrc,.gitignore..unabandoned.ymldashboard metadata listing the four consumers (module-deps, deps-sort, insert-module-globals, browser-pack).Verification
node --test test/*.js— 28 tests, 28 pass, 0 fail on Node 22.22 and Node 24.19 (exit 0 on both). Metadata validated withscripts/validate_metadata.pyfromunabandoned/.github.Once this releases and publishes, the four consumer forks repoint their
JSONStreamdependency tonpm:@unabandoned/JSONStream@^1(separate PRs), removing JSONStream from browserify's transitive tree.Generated by Claude Code