Version Packages#411
Merged
Merged
Conversation
freshtonic
self-requested a review
July 17, 2026 08:09
freshtonic
approved these changes
Jul 17, 2026
coderdan
enabled auto-merge
July 17, 2026 08:11
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@cipherstash/eql@3.0.1
Patch Changes
public.eql_v3_jsonfamily, and a new ciphertext-only storage domain is added. The bare namepublic.eql_v3_jsonis now a storage-only domain (a single opaque ciphertext,{v,i,c}envelope, no index terms — the JSON analogue ofpublic.eql_v3_boolean, for encrypt-at-rest with no server-side searchability). The searchable SteVec document that previously held the barepublic.eql_v3_jsonname is renamed topublic.eql_v3_json_search; its supporting domains follow:public.eql_v3_jsonb_entry→public.eql_v3_json_entry, and the containment needleeql_v3.query_jsonb→eql_v3.query_json. This makes the JSON family follow the same convention as every scalar family — the bare family name is the storage-only domain and a suffix (_search, mirroring text's_search) marks the searchable variant. Reach forpublic.eql_v3_json_searchwhen you need containment/field queries over encrypted JSON (@>, path access) andpublic.eql_v3_jsonwhen you only need to store and round-trip an encrypted JSON value. Callers on the previous names must update column declarations and query casts (WHERE doc @> $1::eql_v3.query_json); the bindings,DomainPayload/QueryPayloadparse names, and published JSON Schema file names all move to the new names.@@/eql_v3.matches— it is n-gram token matching, not containment. On the text match/search domains (public.eql_v3_text_match,public.eql_v3_text_search,public.eql_v3_text_search_ore) the fuzzy match was previously spelled with the containment operators@>/<@, backed byeql_v3.contains/eql_v3.contained_by. That promised substring/containment semantics the operation does not provide: it is array containment over two bloom filters built from the downcased 3-gram token set — a probabilistic, order- and multiplicity-insensitive, one-sided match (atruemay be a false positive; afalsenever is). The match is now a single directional operator@@backed byeql_v3.matches(WHERE col @@ $1::public.eql_v3_text_match), and the reversecontained_bydirection is dropped.@>and<@now raise "operator not supported" on the text match domains. The functional GIN index recipe is unchanged (GIN (eql_v3.match_term(col))):col @@ $1inlines throughmatch_termto the same array-containment the index supports. Genuine JSON containment (public.eql_v3_json_search@>/<@,eql_v3.ste_vec_contains) keeps the containment vocabulary and is unaffected. This is the SQL-layer counterpart of the SDK'scontains()→matches()rename; callers or SDKs emittingeql_v3.contains(col, …)/col @> $1for text match must switch toeql_v3.matches(col, …)/col @@ $1in lockstep. See upgrade note U-008.