@twoabove/cue 0.4.5 → 0.4.7

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/README.md CHANGED
@@ -37,9 +37,11 @@ console.log(await counter.read.value()); // 5
37
37
  ## Installation
38
38
 
39
39
  ```bash
40
- npm install @twoabove/cue
40
+ npm install @twoabove/cue immer
41
41
  ```
42
42
 
43
+ > **Note:** `immer` is a peer dependency and must be installed alongside cue.
44
+
43
45
  ## Quick Start
44
46
 
45
47
  ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"StateKernel.d.ts","sourceRoot":"","sources":["../../src/core/StateKernel.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,KAAK,EACN,MAAM,iBAAiB,CAAC;AAIzB,qBAAa,WAAW,CAAC,MAAM,SAAS,MAAM;;IAIhC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAErD,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED,IAAI,OAAO,IAAI,MAAM,CAMpB;IAED,kBAAkB;IAKlB,OAAO,CAAC,MAAM,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,KAAK,CAAC;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,KAAK,CAAA;SAAE,CAAC,CAAC;KAC1D;IAsBD,qBAAqB,IAAI,MAAM;IAI/B,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAK/B,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EAAE,EACf,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBvE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO;IAe5E,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EAAE,EACf,GAAG,EAAE,cAAc,GAClB;QACD,SAAS,EAAE,cAAc,CAAC;QAC1B,QAAQ,EAAE,MAAM;YAAE,OAAO,EAAE,KAAK,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB;CAiDF"}
1
+ {"version":3,"file":"StateKernel.d.ts","sourceRoot":"","sources":["../../src/core/StateKernel.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,KAAK,EACN,MAAM,iBAAiB,CAAC;AAIzB,qBAAa,WAAW,CAAC,MAAM,SAAS,MAAM;;IAIhC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAErD,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED,IAAI,OAAO,IAAI,MAAM,CAMpB;IAED,kBAAkB;IAKlB,OAAO,CAAC,MAAM,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,KAAK,CAAC;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,KAAK,CAAA;SAAE,CAAC,CAAC;KAC1D;IAqBD,qBAAqB,IAAI,MAAM;IAI/B,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAK/B,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EAAE,EACf,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBvE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO;IAgB5E,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EAAE,EACf,GAAG,EAAE,cAAc,GAClB;QACD,SAAS,EAAE,cAAc,CAAC;QAC1B,QAAQ,EAAE,MAAM;YAAE,OAAO,EAAE,KAAK,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB;CAiDF"}
@@ -1,4 +1,5 @@
1
1
  import { applyPatches, createDraft, finishDraft, isDraft, } from "immer";
2
+ import { clone } from "../serde";
2
3
  import { _handlers } from "../types/internal";
3
4
  import { invariant } from "../utils/invariants";
4
5
  import { Evolution } from "./Evolution";
@@ -31,7 +32,6 @@ export class StateKernel {
31
32
  }
32
33
  state = applyPatches(state, event.patches);
33
34
  }
34
- // Upcast to latest schema version
35
35
  this.#state = Evolution.applyUpcasters(state, currentSchema, this.def);
36
36
  this.#version = params.baseVersion + BigInt(params.events.length);
37
37
  }
@@ -64,10 +64,11 @@ export class StateKernel {
64
64
  invariant(entry && entry.type === "query", `Handler "${handlerName}" not found or not a query.`);
65
65
  const draft = createDraft(this.state);
66
66
  try {
67
- return entry.fn(draft, ...args, ctx);
67
+ const result = entry.fn(draft, ...args, ctx);
68
+ return clone(result);
68
69
  }
69
70
  finally {
70
- finishDraft(draft); // discards changes
71
+ finishDraft(draft);
71
72
  }
72
73
  }
73
74
  startStream(handlerName, args, ctx) {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
- "version": "0.4.5",
7
+ "version": "0.4.7",
8
8
  "exports": {
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
@@ -46,9 +46,11 @@
46
46
  "LICENSE"
47
47
  ],
48
48
  "dependencies": {
49
- "immer": "^10.2.0",
50
49
  "superjson": "^2.2.3"
51
50
  },
51
+ "peerDependencies": {
52
+ "immer": ">=10.0.0"
53
+ },
52
54
  "scripts": {
53
55
  "prepare": "bun run build",
54
56
  "test:e2e": "sh ./scripts/e2e-test.sh",
@@ -60,6 +62,7 @@
60
62
  "devDependencies": {
61
63
  "@biomejs/biome": "2.3.1",
62
64
  "@types/node": "^24.9.1",
65
+ "immer": "^10.2.0",
63
66
  "@types/pg": "^8.15.5",
64
67
  "@vitest/coverage-v8": "^4.0.4",
65
68
  "expect-type": "^1.2.2",