initial commit for v5 harper upgrade - #2
Open
BboyAkers wants to merge 9 commits into
Open
Conversation
- Bump harper 5.0.11 -> 5.0.28 (latest) - Add @harperfast/integration-testing + typescript (pinned 5.9.3 to satisfy typescript-eslint peer range) + mqtt dev deps - Add integration tests for the pub/sub paths: MQTT publish/subscribe, MQTT->REST persistence, and the REST table-export backbone - Resolve the harper CLI via harperBinPath (harper's exports map only exposes ".", so harper/dist/bin/harper.js is not resolvable) - Add .github/workflows/integration-tests.yml (Node 22/24/26, pinned action hashes, working-directory: harper) - Commit harper/package-lock.json (un-ignore it) with ws native optional deps so npm ci is reproducible across Node 22/24/26 - Add base tsconfig.json and fix the shared eslint config's tsconfig resolution for typed linting of the tests - Branding: HarperDB -> Harper in harper/README.md prose; fix stale v4 install command (harperdb -> harper) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
BboyAkers
commented
Jun 11, 2026
BboyAkers
commented
Jun 11, 2026
BboyAkers
commented
Jun 11, 2026
Update the test name and doc-comment to reference Sensors/102, matching the topic actually used in the test body. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Member
Author
|
Review follow-up (autonomous agent): Fixed blocking findings: corrected stale |
Bump the harper dependency to ^5.2.1 and regenerate the lockfile. Regenerated in full so the optional native deps (bufferutil, utf-8-validate, segfault-handler) stay in the tree for Linux CI. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous commit changed harper from an exact 5.0.28 pin to ^5.2.1, altering this repo's pinning style. Restore the exact pin at 5.2.1. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous lockfile was generated with npm 11, which does not auto-install the peer dependencies of an optional dependency. harper 5.2.1 pulls alasql, which optionally depends on react-native-fs, whose peers (react-native, react) npm 12 installs and npm 11 does not. CI runs npm 12 on Node 24/26, so npm ci failed there with those packages "missing from lock file" while Node 22 (npm 11) passed. Regenerated with npm 12 so the lockfile carries the full tree. lockfileVersion stays 3; npm ci verified under both npm 11 and npm 12. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Harper v4 -> v5 upgrade (Getting-Started-PubSub)
Completes the in-progress v5 upgrade on this branch. The Harper app lives in
harper/and is schema-only (tablesSensorsandTopicsexported over REST + MQTT/WS/SSE); there is no app JS, so there was noharperdbimport/global footprint to migrate — the v4->v5 work is the dependency/CLI swap plus tooling.Changes
harper5.0.11->5.0.28(latest). CLI scripts already swappedharperdb->harper(run/dev/deploy) in the prior commits on this branch.harper/integrationTests/) using@harperfast/integration-testing, covering the pub/sub paths:mqtt.test.ts— MQTT subscriber receives a message published toSensors/{id}; MQTT publish is persisted and readable over REST.rest.test.ts— REST table-export backbone: PUT/GET aSensorsrecord and aTopicsmessage.integrationTests/fixture/) holds onlyconfig.yaml+schema.graphql+package.jsonso the harness pre-installs the component without copyingnode_modules.harperBinPathis resolved from theharperpackage main entry — harper'sexportsmap only exposes".", soharper/dist/bin/harper.jsis not directly resolvable (documented harness escape hatch)..github/workflows/integration-tests.ymlat repo root. Node matrix[22, 24, 26], actions pinned to commit hashes,working-directory: harper,cache-dependency-path: harper/package-lock.json.harper/package-lock.json(the root.gitignorewas ignoring it; added a negation) sonpm ciis reproducible. Regenerated cleanly — includeswsnative optional deps (bufferutil/utf-8-validate/node-gyp-build) sonpm cipasses on Node 24/26, not just 22. AllresolvedURLs point at the public registry (nofile:/.tgz).typescriptto5.9.3(latest6.xviolates the>=4.8.4 <6.0.0peer range required by the@harperdb/code-guidelineseslint toolchain). Added a basetsconfig.jsonand a small eslint override so typed linting resolves the project's tsconfig (the shared config hardcodesproject: './tsconfig.json'relative to its own package dir).HarperDB->Harperinharper/README.mdprose; fixed the stale v4 install command (npm install -g harperdb->harper). Left@harperdb/code-guidelinesand livedocs.harperdb.io/github.com/HarperDBURLs intact.Migration items
Table.get()shape, frozen records, transaction/context,blob.save(), child-process spawning, install scripts, module-loader config: N/A — this is a schema-only component with no application JS/DB code.Tests
npm run test:integration— 4/4 pass locally when run with--isolation=none(binds127.0.0.1).EADDRNOTAVAILfor127.0.0.2+) because the machine has no loopback aliases configured — this is environmental, not a code issue. CI runs onubuntu-latest, which supports the full127.0.0.0/8range, so the pooled run works there. Relying on the CI run for the pooled-mode test gate.Flagged for a human
harper-mqtt-getting-started(unscoped). If it should move to the current Harper npm scope, that's a manual decision — not done here.🤖 Generated with Claude Code