@noy-db/hub 0.7.0-pre.17 → 0.7.0-pre.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Changelog — hub
|
|
2
2
|
|
|
3
|
+
## 0.7.0-pre.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Two dependency-declaration defects, both invisible to every gate because both
|
|
8
|
+
were satisfied by something that never promised anything.
|
|
9
|
+
|
|
10
|
+
**`happy-dom` was used by 22 packages and declared by 4.** The `as-*`, `on-*`
|
|
11
|
+
and `by-*` families named it in their vitest `environment:` and never declared
|
|
12
|
+
it; it resolved only because `in-react`, `in-pinia`, `in-nuxt` and
|
|
13
|
+
`to-browser-idb` happened to declare it — at **three different majors**
|
|
14
|
+
(`^15.11.7`, `^17.4.4`, `^18.0.0`). So those suites ran against whichever
|
|
15
|
+
version won hoisting, pinned by nothing, and a devDependency bump in an
|
|
16
|
+
unrelated package could have silently changed the DOM implementation under
|
|
17
|
+
them. Every user now declares it, all at one range.
|
|
18
|
+
|
|
19
|
+
⚠️ It is named by no `import` anywhere — only by a vitest config string, or (in
|
|
20
|
+
hub's case) by an `@vitest-environment` DOCBLOCK PRAGMA, which is invisible to
|
|
21
|
+
an import scan and a config grep alike. Found by extracting a family and
|
|
22
|
+
watching it fail to stand alone.
|
|
23
|
+
|
|
24
|
+
⛔ **Declaring it does NOT make the mistake self-detecting, and a sweep alone
|
|
25
|
+
would have implied otherwise.** pnpm's virtual store still satisfies an
|
|
26
|
+
undeclared package from a sibling that declares it — deleting a declaration and
|
|
27
|
+
reinstalling leaves the suite green, including the test that needs the
|
|
28
|
+
environment. So correct manifests today prevent nothing tomorrow. A static
|
|
29
|
+
check (`pnpm check:test-env-deps`, wired into CI) is the part that enforces it;
|
|
30
|
+
the manifests are merely honest. (`require.resolve` reports the opposite —
|
|
31
|
+
Node's algorithm is not pnpm's store, so the probe has to read manifests rather
|
|
32
|
+
than resolve.)
|
|
33
|
+
|
|
34
|
+
**Sibling `peerDependencies` published as EXACT versions**, completing the fix
|
|
35
|
+
started in #1228. That issue converted the `hub` peer to `workspace:^` (which
|
|
36
|
+
publishes as a caret) and left sibling peers at `workspace:*` (which publishes
|
|
37
|
+
as an exact pin), so two satellites from different cuts were mutually
|
|
38
|
+
uninstallable by name. Install-proven with a discriminating control:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
as-xlsx@pre.17 + as-zip@pre.16 -> exit 1 the defect
|
|
42
|
+
as-xlsx@pre.17 + as-zip@pre.17 -> exit 0 control: it is the SKEW, not the pair
|
|
43
|
+
as-csv@pre.17 + in-vue@pre.16 -> exit 0 caret peers DO cross cuts
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Nine sibling edges across seven packages move `workspace:*` → `workspace:^`.
|
|
47
|
+
That changes the FORM without changing the KIND: they stay peers, so a consumer
|
|
48
|
+
still controls instance identity, and no per-pair judgement about whether
|
|
49
|
+
deduplication matters was required.
|
|
50
|
+
|
|
51
|
+
Already-published versions stay broken — an exact peer is frozen in a published
|
|
52
|
+
manifest. What this buys is that the next cut is not broken too.
|
|
53
|
+
|
|
54
|
+
- `check:test-env-deps` now catches OVER-declaration too, and one live instance is
|
|
55
|
+
removed.
|
|
56
|
+
|
|
57
|
+
The guard shipped with the previous fix caught only the missing direction — a
|
|
58
|
+
package running tests in an environment it does not declare. The mirror case
|
|
59
|
+
turns out to be the mechanism the whole class rests on: **a package that
|
|
60
|
+
declares an environment it never runs in is what silently satisfies the packages
|
|
61
|
+
that use it and do not declare it.** The over-declaration is what makes the
|
|
62
|
+
under-declaration invisible.
|
|
63
|
+
|
|
64
|
+
`to-browser-idb` carried exactly that — `happy-dom ^18.0.0` while running
|
|
65
|
+
`environment: 'node'` with a fake-indexeddb polyfill. It was plausibly the
|
|
66
|
+
declarer supplying 18.x to the nine `as-*` suites that named the environment and
|
|
67
|
+
declared nothing. Removed; every genuine user now declares its own.
|
|
68
|
+
|
|
69
|
+
Added after the same mistake was made twice in one day: a substring scan gave
|
|
70
|
+
`by-peer` a declaration for a mention in a COMMENT, and this predated all of it.
|
|
71
|
+
|
|
72
|
+
Mutation-checked in both directions — a package that genuinely uses the
|
|
73
|
+
environment keeps its declaration without firing (no false positive on
|
|
74
|
+
legitimate declarers), and restoring the phantom fails the check.
|
|
75
|
+
|
|
3
76
|
## 0.7.0-pre.17
|
|
4
77
|
|
|
5
78
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noy-db/hub",
|
|
3
|
-
"version": "0.7.0-pre.
|
|
3
|
+
"version": "0.7.0-pre.18",
|
|
4
4
|
"description": "Zero-knowledge, offline-first, encrypted document store — core library with AES-256-GCM, PBKDF2, multi-user keyring, and sync engine",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "vLannaAi <vicio@lanna.ai>",
|
|
@@ -233,14 +233,15 @@
|
|
|
233
233
|
"node": ">=22.0.0"
|
|
234
234
|
},
|
|
235
235
|
"dependencies": {
|
|
236
|
-
"@noy-db/attestation": "0.7.0-pre.
|
|
236
|
+
"@noy-db/attestation": "0.7.0-pre.18"
|
|
237
237
|
},
|
|
238
238
|
"devDependencies": {
|
|
239
239
|
"@types/node": "^22.0.0",
|
|
240
240
|
"esbuild": "^0.25.0",
|
|
241
|
+
"happy-dom": "^18.0.0",
|
|
241
242
|
"zod": "^4.0.0",
|
|
242
243
|
"zod-to-json-schema": "^3.25.2",
|
|
243
|
-
"@noy-db/on-shamir": "0.7.0-pre.
|
|
244
|
+
"@noy-db/on-shamir": "0.7.0-pre.18"
|
|
244
245
|
},
|
|
245
246
|
"peerDependencies": {
|
|
246
247
|
"zod": "^3.0.0 || ^4.0.0",
|