Commit 2e6a2ea
fix(plugin-auth): pin the better-auth family to an exact 1.7.2, and gate the declared range against our own import surface (#16634)
* fix(plugin-auth): pin the better-auth family to an exact 1.7.2 (#16186)
`@better-auth/core@1.7.3` deleted `createLocalAccountIssuer` and
`createOAuthAccountIssuer` from `@better-auth/core/db` — and the whole
`account.issuer` column with them — in a PATCH release. `plugin-auth`
imports both names statically, so every consumer of published 17.1.0 /
17.2.0 / 17.3.0 resolved 1.7.3 through the declared `^1.7.2` range and
could not load the plugin at all.
This repo's lockfile held 1.7.2, so every CI job here was green while
the artifact it produced was broken on install. The declared range and
the workspace override target both become exact 1.7.2, so the version
this repo tests is the version a consumer resolves.
Resolutions are unchanged: the lockfile already held 1.7.2 for all
eleven family members, and `pnpm install --lockfile-only` moves only
the echoed specifier strings.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* test(scripts): add the consumer-resolution regression control (#16186)
Pinning the version fixes today's break and leaves the repository exactly
as blind as it was: `pnpm-lock.yaml` held `@better-auth/core@1.7.2`, so
every job here imported the version that still had
`createLocalAccountIssuer` while every consumer resolved `^1.7.2` to
1.7.3 and could not load the plugin at all.
`scripts/check-vendor-export-contract.mjs` closes that class. For every
governed vendor a publishable package statically imports runtime values
from, it asserts the declared range is an EXACT version, that the
installed copy IS that version, and that importing each specifier really
yields every symbol our shipped source takes from it — so "what CI
imported" and "what a consumer resolves" are the same string.
`--resolve` measures the same property instead of proving it: it
enumerates every registry version the DECLARED range admits, installs
each outside this workspace, and fails if any is missing a symbol we
import. Wired into validate-deps.yml, which already has the network and
runs daily; the offline leg runs in the lint farm on every PR.
`check-override-consistency.mjs` structurally cannot cover this — it asks
whether the override target is reachable from the declared range, and
`^1.7.2` agreed with `^1.7.2` all the way onto the broken version.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* chore: wire the vendor export contract into CI and add the changeset (#16186)
The offline leg joins the lint farm (no `paths:` filter — a manifest edit,
a lockfile refresh and a new vendor import can each move it). The network
leg joins validate-deps.yml, which already installs from the registry and
runs daily, so "a vendor published something today" becomes a red here
instead of in a customer's install.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(scripts): route the new gate's entry guard through isEntrypoint (#16186)
`check:entry-guard` caught a hand-typed `process.argv[1]` comparison: it
goes inert through a symlinked checkout, silently, at exit 0 — which for a
gate means a green that never ran.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>1 parent 61b4eb3 commit 2e6a2ea
8 files changed
Lines changed: 736 additions & 67 deletions
File tree
- .changeset
- .github/workflows
- packages/plugins/plugin-auth
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2647 | 2647 | | |
2648 | 2648 | | |
2649 | 2649 | | |
| 2650 | + | |
| 2651 | + | |
| 2652 | + | |
| 2653 | + | |
| 2654 | + | |
| 2655 | + | |
| 2656 | + | |
| 2657 | + | |
| 2658 | + | |
| 2659 | + | |
| 2660 | + | |
| 2661 | + | |
| 2662 | + | |
| 2663 | + | |
| 2664 | + | |
| 2665 | + | |
| 2666 | + | |
| 2667 | + | |
2650 | 2668 | | |
2651 | 2669 | | |
2652 | 2670 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
86 | 112 | | |
87 | 113 | | |
88 | 114 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
| 132 | + | |
131 | 133 | | |
132 | 134 | | |
133 | 135 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments