Conversation
isValueEqual for SS and NS types only checked subset inclusion
(every x in y) without verifying equal length, so {SS: ["a","b"]}
was incorrectly considered equal to {SS: ["a","b","c"]}.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add types, exports, files fields to package.json - Fix README to use AWS SDK v3 imports and package import path - Migrate all commented-out ConditionExpression tests to current API (25 new tests: between, inList, attributeExists, attributeNotExists, attributeType, beginsWith, contains, toContains, not, size, and/or, plus full Condition.build serialization output) - Fix AttributePath.spec.ts error assertions with actual message matchers Test count: 43 -> 68 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace console.log with expect() assertions on all generated expression strings, attribute names, and attribute values including alias collision handling with _ suffixes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reject names containing `[`, `]`, `#`, and `:` in addition to spaces and dots, and include the offending name in the error message. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ReScript now compiles to ESM, tsup bundles into both CJS and ESM formats. Added namespace config, optional rescript peer dependency, and explicit files whitelist. Removed stale jest config and .npmignore. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…isions `_` → `__`, `-` → `_dash_` so that names like `foo_bar` and `foo-bar` no longer produce the same expression placeholder. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cross-type comparisons, nested M/L with mixed types, deeply nested structures, different key counts/lengths, and addValue alias collision handling (reuse, suffix, chained suffixes). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove @Gentype from alias modules (C, K, U, P), keep it on canonical modules (Condition, KeyCondition, Update, Projection). Add src/index.ts barrel that re-exports all types and modules with short-name aliases. Update tsup entry and package.json exports to use the barrel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reconstructed from git tags (v0.0.1 through v0.2.0) plus unreleased refactor branch work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set tsup target to node18 and add engines.node >= 18 - Add node 18 to CI test matrix - Tighten rescript peerDep to >=12.2.0, align examples to ^12.2.0 - Update spec imports from ./Brushless.bs to ./index - Document minimum Node.js version in CHANGELOG Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bump brushless dep, replace AWS SDK v2 with v3 (convertToAttr), rename bsconfig.json to rescript.json, drop jest stack, and expose src/* subpath export for ReScript consumers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add KeyCondition.spec.ts with 20 tests covering all SK condition variants, build output, and register accumulation - Make `sk` optional in `keyCondition` type (omit sk for pk-only queries) - Deprecate `Any` variant using `@as(undefined)` for backwards compat - All 101 tests pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Exercise all 9 overloaded operators (==, !=, <, <=, >, >=, &&, ||, !) with runtime assertions on built expression output. Also covers Size and AttributePath operands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
josher8a
marked this pull request as ready for review
March 7, 2026 23:00
josher8a
added a commit
that referenced
this pull request
Mar 8, 2026
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
Object.magic, leveraging native optionals, and cleaning up theUndefinablemodule in favor of built-inlanguage features
tsupbuild pipeline and barrelindex.tsfor proper dual-format package output_→__,-→_dash_) inAttributeName.toStringto prevent name collisions; validate reserved expression characters(
[,],#,:)attributeValueas a ReScript record type instead of importing an opaque external, improving type safety and portabilitysplitWhenwithString.searchregex for cleaner, faster attribute path parsingnextdist-tagisValueEqualedge cases,SS/NSlength check, expression assertion coverage; simplifyConditionExpressionspecsTest plan
npm testpasses all existing and new specsnpm run buildproduces valid CJS and ESM outputsAttributeName.toStringescaping is injective (no collisions between-and_names)