@zakkster/lite-project 1.1.0 → 1.1.1

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 CHANGED
@@ -3,6 +3,41 @@
3
3
  All notable changes to `@zakkster/lite-project` are documented here. The format
4
4
  follows Keep a Changelog; this project adheres to semantic versioning.
5
5
 
6
+ ## [1.1.1] - 2026-09-03
7
+
8
+ ### Added
9
+
10
+ - **`VERSION`** export from `Project.js` (declared in `Project.d.ts`), kept in
11
+ exact sync with `package.json`, so a consumer can read the shipped version at
12
+ runtime.
13
+ - Gated torture harness under `test/torture/` (dev-only; not shipped). Seven
14
+ tiers run strictly sequentially behind `node --expose-gc test/torture.mjs`:
15
+ T0 metamorphic laws, T1 degenerate inputs, T4 reconcile door, T5 oracle fuzz,
16
+ T6 zero-alloc gate, T7 retention soak, T9 controls. Gate RULES:
17
+ `maxMajor 0`, `maxPauseMs 4`, `maxArrayBuffersGrowth 0` under `stabilize:"deep"`.
18
+ Witnessed on a green run (default seed):
19
+ `leak=size 0/0 findings=0 warnings=0 | gc major=0 minor=0 maxMs=0.00 |
20
+ retained=0.00 B/op growths=0`
21
+ (the `alloc=` per-op heap-bracket reading prints as-is, `n/a` when
22
+ inconclusive; the binding alloc gates are `checkNoGc`, the zero-retention
23
+ gate below, and the structural deltas below).
24
+ The get/set/clear triangle on warmed keys leaves `poolGrowths` and
25
+ `totalAllocations` deltas both 0 over 200k toggles; 4096 build/tear-down cycles
26
+ return the leak tracker to `size()===0`; `prune()` reclaims >= 19990 of 20000
27
+ unbounded-read slots.
28
+ - Retained-allocation gate (`measureAllocs` + `checkAllocs` with
29
+ `maxBytesPerCall: 0`, the profiler's zero-retention assertion): the warmed
30
+ get/set/clear triangle retains 0 B/call (min over 8 batches), catching
31
+ arbitrary JS-object retention that the asynchronously-delivered `gc.major`
32
+ count cannot see; an unsettled or inconclusive reading fails the gate.
33
+
34
+ ### Changed
35
+
36
+ - Peer dependency floor is now `@zakkster/lite-signal ^1.5.0` (was a pinned
37
+ preview build). No behaviour change: 1.5.0 is the current stable line and
38
+ supplies every surface this package uses (`batch` 1.0.0, `hasObservers` 1.1.4,
39
+ `createRoot` 1.5.0).
40
+
6
41
  ## [1.1.0] - 2026-07-16
7
42
 
8
43
  ### Added
package/Project.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- // Type declarations for @zakkster/lite-project v1.1.0
1
+ // Type declarations for @zakkster/lite-project v1.1.1
2
2
  // Zero-GC projections for @zakkster/lite-signal.
3
3
  // (c) 2026 Zahary Shinikchiev <shinikchiev@yahoo.com> -- MIT
4
4
 
5
+ export const VERSION: string;
6
+
5
7
  /**
6
8
  * A reactive keyed source a projection can wrap. Any object with a reactive
7
9
  * `get(key)` and a `set(key, value)` qualifies (the built-in `keyedStore`, a
package/Project.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @zakkster/lite-project v1.1.0 -- zero-GC projections for @zakkster/lite-signal.
2
+ * @zakkster/lite-project v1.1.1 -- zero-GC projections for @zakkster/lite-signal.
3
3
  * -----------------------------------------------------------------------------
4
4
  * A projection is a granular, derived, NON-MUTATING reactive view over a keyed
5
5
  * source: a lens that can carry ephemeral overlays (optimistic edits, merges,
@@ -59,6 +59,8 @@ import {
59
59
  hasObservers as _hasObservers,
60
60
  } from "@zakkster/lite-signal";
61
61
 
62
+ export const VERSION = "1.1.1";
63
+
62
64
  // Module-level sentinel for "this key has no overlay". A unique symbol, never a
63
65
  // per-operation allocation. Stored directly in the overlay signal's value slot, so
64
66
  // "absent" and "present with value V" share one node and one field -- no boxing.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zakkster/lite-project",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Zero-GC projections for @zakkster/lite-signal: granular, derived, non-mutating reactive overlays with commit / revert / reconcile, and draft adapters for lite-store and lite-room.",
5
5
  "type": "module",
6
6
  "main": "./Project.js",
@@ -24,11 +24,18 @@
24
24
  "LICENSE.txt"
25
25
  ],
26
26
  "scripts": {
27
- "test": "node --test",
28
- "test:torture": "node bench/torture/overlay-fuzzer.mjs"
27
+ "test": "node --test test/*_test.mjs",
28
+ "torture": "node --expose-gc test/torture.mjs",
29
+ "verify": "npm test && npm run torture",
30
+ "prepublishOnly": "npm run verify"
29
31
  },
30
32
  "peerDependencies": {
31
- "@zakkster/lite-signal": "^1.6.0-preview.2"
33
+ "@zakkster/lite-signal": "^1.5.0"
34
+ },
35
+ "devDependencies": {
36
+ "@zakkster/lite-gc-profiler": "^1.16.0",
37
+ "@zakkster/lite-leak": "^1.10.0",
38
+ "@zakkster/lite-signal": "^1.5.0"
32
39
  },
33
40
  "keywords": [
34
41
  "reactive",
@@ -53,6 +60,10 @@
53
60
  "url": "git+https://github.com/PeshoVurtoleta/lite-project.git"
54
61
  },
55
62
  "homepage": "https://github.com/PeshoVurtoleta/lite-project#readme",
63
+ "bugs": {
64
+ "url": "https://github.com/PeshoVurtoleta/lite-project/issues",
65
+ "email": "shinikchiev@yahoo.com"
66
+ },
56
67
  "funding": {
57
68
  "type": "github",
58
69
  "url": "https://github.com/sponsors/PeshoVurtoleta"