Add TypeScript implementation of esque - #52
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…okups Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tion Wires configuration, migration loader, ES operations, and the distributed lock into the main Esque class, mirroring the Python orchestrator's execution flow and integrity-check logic method-for-method. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rations runMigrations previously released the lock in a finally block, which meant a lock-release failure would unconditionally overwrite whatever the try/catch was about to throw (or discard a successful migration entirely). Execution and release outcomes are now captured separately: a release failure never masks a real execution error (and is at least warned about if both fail), and a release-only failure after a successful migration now produces a clear, file-scoped error instead of an unrelated one. Also adds the missing test for the order-mismatch branch of verifyRecordIntegrity's OR condition, which no existing test exercised. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…id lock timeout Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds the TypeScript implementation to the project overview, repository structure, build commands, CI/CD, code conventions, and compatibility test harness sections. Also corrects a stale claim that the Python implementation uses httpx instead of the official elasticsearch client. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… that TypeScript exists Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… example Co-Authored-By: Claude Fable 5 <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.
Summary
implementations/typescript/, published to npm asesque-ts(Node 22+, ESM, strict TypeScript, official@elastic/elasticsearchclient, commander CLI).dev/latestdist-tag split), a git-tag-based SemVer version script, pre-commit hook coverage, dev container support, and full CLAUDE.md documentation.Test plan
cd implementations/typescript && npm test— 56/56 passing (version ordering, template resolution, canonical checksum incl. two pinned cross-implementation reference vectors, migration loader with fail-loud malformed-YAML handling, distributed lock, ES document (de)serialization, integrity verification)npm run lint && npm run typecheck && npm run build— cleancd tests && uv run pytest . -v— 52/52 passing (17 scenarios × 3 implementations + 1 cross-implementation checksum equivalency test), run against a live Elasticsearch 9.3.0 container via testcontainers.githooks/pre-commit) runs JVM + Python + TypeScript checks + the full compat suite end-to-end and passesFollow-up required before the CI publish steps will succeed: a maintainer needs to create the
NPM_TOKENrepository secret (an npm automation token with publish rights foresque-ts).🤖 Generated with Claude Code