@shivaedev/events 0.1.0 → 0.3.0
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 +18 -0
- package/README.md +5 -1
- package/dist/append.d.ts.map +1 -1
- package/dist/append.js +3 -1
- package/dist/append.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/append.ts +3 -1
- package/src/types.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0 - 2026-11-04
|
|
4
|
+
|
|
5
|
+
### Breaking
|
|
6
|
+
|
|
7
|
+
- TypeScript source exports now use `@shivaedev/source` instead of `source`. Replace `source` with `@shivaedev/source` in Node `--conditions`, TypeScript `customConditions`, and Vite/Vitest `resolve.conditions`. Bare `source` selects built JavaScript; no compatibility alias is provided.
|
|
8
|
+
|
|
9
|
+
## 0.2.0 - 2026-11-04
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Accept empty event batches in `append` to record durable request receipts at the existing stream version without appending events, running projections or publishing change keys. Retries retain the original receipt version after later events.
|
|
14
|
+
|
|
15
|
+
## 0.1.1 - 2026-11-03
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Update `@shivaedev/sql` from 0.35.0 to 0.36.0.
|
|
20
|
+
|
|
3
21
|
## 0.1.0 - 2026-11-03
|
|
4
22
|
|
|
5
23
|
### Added
|
package/README.md
CHANGED
|
@@ -76,10 +76,14 @@ Projection `apply` receives `{ stream, streamVersion, requestId, value }`. `appl
|
|
|
76
76
|
|
|
77
77
|
### Append from a command
|
|
78
78
|
|
|
79
|
-
Call `append({ stream, requestId, expectedVersion, events })` with a
|
|
79
|
+
Call `append({ stream, requestId, expectedVersion, events })` with a batch. It returns the resulting stream version. Events, request recognition, projection progress and repository writes share `sql.transact`. A projection failure rolls them all back, including earlier events in the batch. An enclosing transaction must also use `transact`.
|
|
80
|
+
|
|
81
|
+
When a command decides the state already matches, pass `events: []`. The same transaction checks `expectedVersion` and durably records the request receipt at that version, including version zero for an empty stream. It appends no event, runs no projection (including pending projection work) and publishes no change keys.
|
|
80
82
|
|
|
81
83
|
Choose a stable request id before retrying a command. It is unique across the store. `AlreadyDone` from `errors.ts` carries the original `stream`, `streamVersion` and `requestId`; handle it as a completed request. It takes precedence over a stale expected version. `StreamConflict` carries `stream`, `expectedVersion` and `actualVersion`; reload the stream and decide the command again. Concurrent PostgreSQL writers use the same checks.
|
|
82
84
|
|
|
85
|
+
An empty batch has the same request recognition: retrying it returns `AlreadyDone` with its original version even after a newer event changes the stream. Use that version with `read(stream)` to recover the original result from history instead of returning the latest projection. The retry leaves newer events and projections untouched.
|
|
86
|
+
|
|
83
87
|
### Read, catch up and rebuild
|
|
84
88
|
|
|
85
89
|
`read(stream)` returns decoded events in stream-version order. `catchUp` applies events missing from each named projection, tracking progress separately for each stream. Call it when adding a projection or consuming history written by a store configuration without that projection. Calling it again does not reapply events. An event that was uncommitted during a pass remains eligible for the next pass; there is no global sequence high-water mark.
|
package/dist/append.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../src/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI3D,eAAO,MAAM,MAAM,GAAyC,CAAC,EAAE,CAAC,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../src/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI3D,eAAO,MAAM,MAAM,GAAyC,CAAC,EAAE,CAAC,EAAE,YAAY,sYAsC5E,CAAC"}
|
package/dist/append.js
CHANGED
|
@@ -28,7 +28,9 @@ export const append = Effect.fn("Events.append")(function* (options, command) {
|
|
|
28
28
|
yield* sql `insert into events_log (store, stream, stream_version, request_id, event_version, payload)
|
|
29
29
|
values (${options.name}, ${command.stream}, ${command.expectedVersion + index + 1}, ${command.requestId}, ${options.version}, ${JSON.stringify(payload)}::jsonb)`;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
if (command.events.length > 0) {
|
|
32
|
+
yield* projectStream(options, command.stream);
|
|
33
|
+
}
|
|
32
34
|
return version;
|
|
33
35
|
}), { onSqlError: (error) => error });
|
|
34
36
|
});
|
package/dist/append.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append.js","sourceRoot":"","sources":["../src/append.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"append.js","sourceRoot":"","sources":["../src/append.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface EventStoreOptions<A, E, TUpcastError> {
|
|
|
25
25
|
readonly version: number;
|
|
26
26
|
}
|
|
27
27
|
export interface Append<A> {
|
|
28
|
-
readonly events: readonly
|
|
28
|
+
readonly events: readonly A[];
|
|
29
29
|
readonly expectedVersion: number;
|
|
30
30
|
readonly requestId: string;
|
|
31
31
|
readonly stream: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shivaedev/events",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Durable event history and rebuildable SQL projections for Effect applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"effect"
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
"imports": {
|
|
21
21
|
"#test/*": "./src/test-support/*",
|
|
22
22
|
"#*.ts": {
|
|
23
|
-
"source": "./src/*.ts",
|
|
23
|
+
"@shivaedev/source": "./src/*.ts",
|
|
24
24
|
"types": "./dist/*.d.ts",
|
|
25
25
|
"default": "./dist/*.js"
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
29
29
|
"./*.ts": {
|
|
30
|
-
"source": "./src/*.ts",
|
|
30
|
+
"@shivaedev/source": "./src/*.ts",
|
|
31
31
|
"types": "./dist/*.d.ts",
|
|
32
32
|
"default": "./dist/*.js"
|
|
33
33
|
},
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
"README.md"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@shivaedev/sql": "0.
|
|
46
|
+
"@shivaedev/sql": "0.37.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@effect/sql-pg": "4.0.6",
|
|
50
|
-
"@shivaedev/changes": "0.
|
|
51
|
-
"@shivaedev/quality": "0.
|
|
52
|
-
"@shivaedev/test-sql": "0.
|
|
53
|
-
"@shivaedev/test-story": "0.
|
|
50
|
+
"@shivaedev/changes": "0.10.0",
|
|
51
|
+
"@shivaedev/quality": "0.60.0",
|
|
52
|
+
"@shivaedev/test-sql": "0.20.0",
|
|
53
|
+
"@shivaedev/test-story": "0.38.0",
|
|
54
54
|
"@types/node": "24.19.2",
|
|
55
55
|
"effect": "4.0.6",
|
|
56
56
|
"typescript": "7.0.2",
|
package/src/append.ts
CHANGED
|
@@ -38,7 +38,9 @@ export const append = Effect.fn("Events.append")(function* <A, E, TUpcastError>(
|
|
|
38
38
|
yield* sql`insert into events_log (store, stream, stream_version, request_id, event_version, payload)
|
|
39
39
|
values (${options.name}, ${command.stream}, ${command.expectedVersion + index + 1}, ${command.requestId}, ${options.version}, ${JSON.stringify(payload)}::jsonb)`;
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
if (command.events.length > 0) {
|
|
42
|
+
yield* projectStream(options, command.stream);
|
|
43
|
+
}
|
|
42
44
|
return version;
|
|
43
45
|
}),
|
|
44
46
|
{ onSqlError: (error) => error },
|
package/src/types.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface EventStoreOptions<A, E, TUpcastError> {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export interface Append<A> {
|
|
34
|
-
readonly events: readonly
|
|
34
|
+
readonly events: readonly A[];
|
|
35
35
|
readonly expectedVersion: number;
|
|
36
36
|
readonly requestId: string;
|
|
37
37
|
readonly stream: string;
|