Version Packages - #859
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
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
stash@1.1.0
Minor Changes
d473745: Rewrite
db validateaseql validate, for the EQL v3 domain-type vocabulary.Fixes a false finding on the most ordinary v3 columns. The old rule set
checked for
ore/unique/match/ste_vecindexes and never learnedabout
ope. EQL v3's default ordering domains emitope, sotypes.IntegerOrd('age')andtypes.TimestampOrd('created_at')were bothreported as "Column is encrypted but has no indexes — it will not be
searchable". They are now silent.
The command reads your tables through the new
EncryptionClient.getSchemas(), so it sees each column's concrete domainrather than the lossy encrypt config, and gains a database pass when one is
reachable.
Schema checks (no database needed):
_ord_oredomain is declared — its ORE operator class needs superuserbooleancolumnmatchindex on a non-text domainste_vec) index withouttypes.JsonDatabase checks (skipped with a notice, not a failure, when no database is
reachable):
schema.table) — not checked_ord_oredomain where the EQL install could not create the ORE operator class--exclude-operator-familyis removed: it warned that anoreindex would notsupport
ORDER BYwithout operator families, and the pinned EQL v3 bundleself-adapts.
eql install/eql upgradehad already rejected the flag;validatewas its last consumer.The database pass inspects
current_schema()only, and distinguishes fourreasons a declared table can be missing from it, so that only the last fails
the command. In another schema (Prisma
multiSchema, a tenant schema): aWarning naming that schema. Present but invisible to the connected role: a
Warning carrying the
GRANT SELECTto run —information_schemareports onlywhat the role holds a privilege on, so a missing grant is not a missing
migration. Declared as
schema.table: a Warning saying it was not checked,because validate matches table names unqualified. Absent everywhere: an Error.
Reported once per table rather than once per column.
The relation lookup that answers those questions excludes
pg_*andinformation_schema. Unscoped it matched the system views namedcolumns,domains,parameters,routines,sequences,tablesandtriggers— allordinary application table names — so a project declaring one of them that had
not run its migration was told the table "exists in schema information_schema",
as a Warning, and the command exited 0 on a genuinely unapplied migration.
An unqualified name found in more than one schema is now reported as an Info
naming the relation that was actually checked (
"public"."users") and theother schemas holding that name. A bare name resolves through
search_path, sousersin bothpublicand Supabase'sauthleft it ambiguous which relationevery other finding described. Info, not Warning: it must not fail or
de-clean an ordinary Supabase project.
Two of those used to exit 1 and no longer do: a privilege-invisible table and
a schema-qualified declaration were both reported as "does not exist in any
schema", which sent people to re-run a migration that had already run.
Against a project whose
@cipherstash/stackpredatesgetSchemas(), validatesays so and falls back to the encrypt config, running the index-derived rules
and skipping the domain ones.
stash db validatekeeps working as a deprecated alias, likedb install/db upgrade/db status. Exits 1 on errors only.Patch Changes
@cipherstash/stack@1.1.0
Minor Changes
93d62c2: Add
EncryptionClient.getSchemas()— the tables passed toEncryption({ schemas }), returned by reference.This is the domain-bearing view of your schema.
getEncryptConfig()returnswhat the FFI consumes: each column builds to
{ cast_as, indexes }, and theconcrete EQL v3 domain name is dropped. That makes
cast_as: 'number'with anopeindex ambiguous acrosseql_v3_integer_ord,smallint_ord,real_ord,double_ordandnumeric_ord— so tooling that has to reason about thedeclared domain (schema linting, drift-checking a live database's
information_schema.columns.domain_name) could not recover it from a clientalone.
getSchemas()closes that gap. Read a column's domain withcolumn.getEqlType(), its capabilities withcolumn.getQueryCapabilities(),and its DB name with
column.getName():stash eql validateis the first consumer.@cipherstash/stack-drizzle@1.1.0
Patch Changes
@cipherstash/stack-prisma@1.1.0
Patch Changes
@cipherstash/stack-supabase@1.1.0
Patch Changes
@cipherstash/wizard@1.1.0
@cipherstash/e2e@0.0.4
Patch Changes
@cipherstash/basic-example@1.2.15
Patch Changes
@cipherstash/prisma-example@0.1.1
Patch Changes
@cipherstash/bench@0.0.6
Patch Changes
@cipherstash/test-kit@0.0.2
Patch Changes