@bett3r-dev/pv3-types 1.0.0 → 1.11.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 +305 -0
- package/build/adminPlugin.d.ts +24 -0
- package/build/adminPlugin.d.ts.map +1 -0
- package/build/{eventsourcing/utils.js → adminPlugin.js} +1 -1
- package/build/adminPlugin.js.map +1 -0
- package/build/aggregateSchema.d.ts +94 -0
- package/build/aggregateSchema.d.ts.map +1 -0
- package/build/aggregateSchema.js +287 -0
- package/build/aggregateSchema.js.map +1 -0
- package/build/authentication.d.ts +179 -78
- package/build/authentication.d.ts.map +1 -1
- package/build/authentication.js +62 -19
- package/build/authentication.js.map +1 -1
- package/build/cache.d.ts +50 -4
- package/build/cache.d.ts.map +1 -1
- package/build/clusterAdministration.d.ts +712 -225
- package/build/clusterAdministration.d.ts.map +1 -1
- package/build/clusterAdministration.js +175 -52
- package/build/clusterAdministration.js.map +1 -1
- package/build/configuration.d.ts +26 -5
- package/build/configuration.d.ts.map +1 -1
- package/build/database.d.ts +240 -56
- package/build/database.d.ts.map +1 -1
- package/build/database.js +102 -20
- package/build/database.js.map +1 -1
- package/build/endpoints.d.ts +141 -41
- package/build/endpoints.d.ts.map +1 -1
- package/build/endpoints.js +50 -26
- package/build/endpoints.js.map +1 -1
- package/build/errors.d.ts +166 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +276 -0
- package/build/errors.js.map +1 -0
- package/build/evenstore.d.ts +47 -7
- package/build/evenstore.d.ts.map +1 -1
- package/build/eventsourcing/aggregateBuilder.d.ts +17 -8
- package/build/eventsourcing/aggregateBuilder.d.ts.map +1 -1
- package/build/eventsourcing/commandBuilder.d.ts +20 -13
- package/build/eventsourcing/commandBuilder.d.ts.map +1 -1
- package/build/eventsourcing/commandHandlers.d.ts +155 -33
- package/build/eventsourcing/commandHandlers.d.ts.map +1 -1
- package/build/eventsourcing/commandHandlers.js +62 -14
- package/build/eventsourcing/commandHandlers.js.map +1 -1
- package/build/eventsourcing/eventHandlers.d.ts +173 -44
- package/build/eventsourcing/eventHandlers.d.ts.map +1 -1
- package/build/eventsourcing/eventHandlers.js +29 -21
- package/build/eventsourcing/eventHandlers.js.map +1 -1
- package/build/eventsourcing/eventHandlersBuilder.d.ts +18 -12
- package/build/eventsourcing/eventHandlersBuilder.d.ts.map +1 -1
- package/build/eventsourcing/eventHandlersBuilder.js.map +1 -1
- package/build/eventsourcing/eventsourcing.types.d.ts +322 -0
- package/build/eventsourcing/eventsourcing.types.d.ts.map +1 -0
- package/build/eventsourcing/eventsourcing.types.js +26 -0
- package/build/eventsourcing/eventsourcing.types.js.map +1 -0
- package/build/eventsourcing/externalSystemBuilder.d.ts +8 -7
- package/build/eventsourcing/externalSystemBuilder.d.ts.map +1 -1
- package/build/eventsourcing/index.d.ts +2 -378
- package/build/eventsourcing/index.d.ts.map +1 -1
- package/build/eventsourcing/index.js +2 -23
- package/build/eventsourcing/index.js.map +1 -1
- package/build/eventsourcing/invariants.d.ts +34 -10
- package/build/eventsourcing/invariants.d.ts.map +1 -1
- package/build/eventsourcing/shapeChangeForSubscriber.d.ts +33 -0
- package/build/eventsourcing/shapeChangeForSubscriber.d.ts.map +1 -0
- package/build/eventsourcing/shapeChangeForSubscriber.js +47 -0
- package/build/eventsourcing/shapeChangeForSubscriber.js.map +1 -0
- package/build/index.d.ts +6 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -1
- package/build/index.js.map +1 -1
- package/build/infrastructure.d.ts +9 -1
- package/build/infrastructure.d.ts.map +1 -1
- package/build/infrastructure.js +33 -1
- package/build/infrastructure.js.map +1 -1
- package/build/livenessWatchdog.d.ts +28 -0
- package/build/livenessWatchdog.d.ts.map +1 -0
- package/build/livenessWatchdog.js +43 -0
- package/build/livenessWatchdog.js.map +1 -0
- package/build/logger.d.ts +8 -9
- package/build/logger.d.ts.map +1 -1
- package/build/logger.js +18 -6
- package/build/logger.js.map +1 -1
- package/build/outboxManager.d.ts +858 -14
- package/build/outboxManager.d.ts.map +1 -1
- package/build/outboxManager.js +173 -15
- package/build/outboxManager.js.map +1 -1
- package/build/permissions.d.ts +47 -0
- package/build/permissions.d.ts.map +1 -0
- package/build/permissions.js +3 -0
- package/build/permissions.js.map +1 -0
- package/build/ports.d.ts +10 -10
- package/build/ports.d.ts.map +1 -1
- package/build/routesAuth.d.ts +17 -25
- package/build/routesAuth.d.ts.map +1 -1
- package/build/routesAuth.js +4 -14
- package/build/routesAuth.js.map +1 -1
- package/build/typedEventEmitter.d.ts +7 -13
- package/build/typedEventEmitter.d.ts.map +1 -1
- package/build/typedEventEmitter.js +2 -2
- package/build/typedEventEmitter.js.map +1 -1
- package/build/userSession.d.ts +8 -0
- package/build/userSession.d.ts.map +1 -0
- package/build/userSession.js +3 -0
- package/build/userSession.js.map +1 -0
- package/package.json +22 -7
- package/build/eventsourcing/utils.d.ts +0 -4
- package/build/eventsourcing/utils.d.ts.map +0 -1
- package/build/eventsourcing/utils.js.map +0 -1
- package/build/validation.d.ts +0 -64
- package/build/validation.d.ts.map +0 -1
- package/build/validation.js +0 -57
- package/build/validation.js.map +0 -1
- package/src/authentication.ts +0 -273
- package/src/cache.ts +0 -109
- package/src/clusterAdministration.ts +0 -216
- package/src/configuration.ts +0 -71
- package/src/database.ts +0 -157
- package/src/endpoints.ts +0 -198
- package/src/evenstore.ts +0 -27
- package/src/eventsourcing/aggregateBuilder.ts +0 -11
- package/src/eventsourcing/commandBuilder.ts +0 -64
- package/src/eventsourcing/commandHandlers.ts +0 -137
- package/src/eventsourcing/eventHandlers.ts +0 -118
- package/src/eventsourcing/eventHandlersBuilder.ts +0 -42
- package/src/eventsourcing/externalSystemBuilder.ts +0 -20
- package/src/eventsourcing/index.ts +0 -111
- package/src/eventsourcing/invariants.ts +0 -27
- package/src/eventsourcing/utils.ts +0 -4
- package/src/index.ts +0 -15
- package/src/infrastructure.ts +0 -41
- package/src/logger.ts +0 -45
- package/src/outboxManager.ts +0 -36
- package/src/ports.ts +0 -42
- package/src/routesAuth.ts +0 -58
- package/src/typedEventEmitter.ts +0 -73
- package/src/validation.ts +0 -89
- package/tsconfig.json +0 -15
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# @bett3r-dev/pv3-types
|
|
2
|
+
|
|
3
|
+
<!-- MONOWEAVE:BELOW -->
|
|
4
|
+
|
|
5
|
+
## [1.11.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.10.0...@bett3r-dev/pv3-types@1.11.0) "@bett3r-dev/pv3-types" (9/20/2026) <a name="1.11.0"></a>
|
|
6
|
+
|
|
7
|
+
### Changes
|
|
8
|
+
|
|
9
|
+
* feat(eventsourcing): add .stateStored as the named way to declare a state-stored aggregate ([87c7418c](git+https://github.com/bett3r-dev/pv3/commits/87c7418c))
|
|
10
|
+
* Oracle: packages/pv3-library-tests/src/__tests__/eventsourcing/users.aggregate.test.ts ([87c7418c](git+https://github.com/bett3r-dev/pv3/commits/87c7418c))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## [1.10.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.9.0...@bett3r-dev/pv3-types@1.10.0) "@bett3r-dev/pv3-types" (9/13/2026) <a name="1.10.0"></a>
|
|
14
|
+
|
|
15
|
+
### Changes
|
|
16
|
+
|
|
17
|
+
* feat(logger): per-module log levels via logger.moduleLevels ([201c6a68](git+https://github.com/bett3r-dev/pv3/commits/201c6a68))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## [1.9.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.8.0...@bett3r-dev/pv3-types@1.9.0) "@bett3r-dev/pv3-types" (8/26/2026) <a name="1.9.0"></a>
|
|
21
|
+
|
|
22
|
+
### Changes
|
|
23
|
+
|
|
24
|
+
* fix(validation): update ReadmodelDefaultQuerySchema to accept string or number for the `after` cursor ([2767dc66](git+https://github.com/bett3r-dev/pv3/commits/2767dc66))
|
|
25
|
+
* feat(eventsourcing): let a readmodel query declare its own HTTP visibility ([f95d49e1](git+https://github.com/bett3r-dev/pv3/commits/f95d49e1))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [1.8.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.7.0...@bett3r-dev/pv3-types@1.8.0) "@bett3r-dev/pv3-types" (8/25/2026) <a name="1.8.0"></a>
|
|
29
|
+
|
|
30
|
+
### Changes
|
|
31
|
+
|
|
32
|
+
* feat(database): add aggregate operation with GROUP BY to the collection contract ([96d540b4](git+https://github.com/bett3r-dev/pv3/commits/96d540b4))
|
|
33
|
+
* Oracle: packages/pv3-adapter-database-postgres/__tests__/aggregate.deps.test.ts ([96d540b4](git+https://github.com/bett3r-dev/pv3/commits/96d540b4))
|
|
34
|
+
* feat(database): support count, min, max and avg with multi-key grouping ([5e1e7740](git+https://github.com/bett3r-dev/pv3/commits/5e1e7740))
|
|
35
|
+
* Oracle: packages/pv3-adapter-database-postgres/__tests__/aggregate.vocabulary.deps.test.ts ([5e1e7740](git+https://github.com/bett3r-dev/pv3/commits/5e1e7740))
|
|
36
|
+
* feat(database): reject a malformed aggregate spec before deriving from it ([c959d4ec](git+https://github.com/bett3r-dev/pv3/commits/c959d4ec))
|
|
37
|
+
* Oracle: packages/pv3-types/__tests__/aggregateSchema.validation.test.ts ([c959d4ec](git+https://github.com/bett3r-dev/pv3/commits/c959d4ec))
|
|
38
|
+
* feat(types): export deriveAggregateSchema from the public surface ([5673495f](git+https://github.com/bett3r-dev/pv3/commits/5673495f))
|
|
39
|
+
* Oracle: packages/pv3-types/__tests__/aggregateSchema.publicImport.test.ts ([5673495f](git+https://github.com/bett3r-dev/pv3/commits/5673495f))
|
|
40
|
+
* it: jest's `moduleNameMapper` key `@bett3r-dev/pv3-types` is substring-matched, ([5673495f](git+https://github.com/bett3r-dev/pv3/commits/5673495f))
|
|
41
|
+
* fix(types): a group key absent from a row is a nullable column ([0c588572](git+https://github.com/bett3r-dev/pv3/commits/0c588572))
|
|
42
|
+
* Oracle: the flipped case (f) in aggregate.groupkey.deps.test.ts ([0c588572](git+https://github.com/bett3r-dev/pv3/commits/0c588572))
|
|
43
|
+
* feat(database): filter, order and bound a grouped query ([c24d0855](git+https://github.com/bett3r-dev/pv3/commits/c24d0855))
|
|
44
|
+
* Oracle: packages/pv3-adapter-database-postgres/__tests__/aggregate.filterbounds.deps.test.ts ([c24d0855](git+https://github.com/bett3r-dev/pv3/commits/c24d0855))
|
|
45
|
+
* feat(eventsourcing): accept an aggregation spec over HTTP ([4fc44ff6](git+https://github.com/bett3r-dev/pv3/commits/4fc44ff6))
|
|
46
|
+
* Oracle: packages/pv3-library-tests/src/__tests__/eventsourcing/eventhandlers.aggregate.test.ts ([4fc44ff6](git+https://github.com/bett3r-dev/pv3/commits/4fc44ff6))
|
|
47
|
+
* fix(aggregate): close three findings from the whole-PR review ([4261a65a](git+https://github.com/bett3r-dev/pv3/commits/4261a65a))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## [1.7.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.6.0...@bett3r-dev/pv3-types@1.7.0) "@bett3r-dev/pv3-types" (8/15/2026) <a name="1.7.0"></a>
|
|
51
|
+
|
|
52
|
+
### Changes
|
|
53
|
+
|
|
54
|
+
* feat(deployment-units): emit linkedTo endpoints as manifest artifacts (TV1-2257) ([7b4a8d55](git+https://github.com/bett3r-dev/pv3/commits/7b4a8d55))
|
|
55
|
+
* Oracles: computeMDUs.test.ts (17/17), declarationSite.test.ts (6/6). ([7b4a8d55](git+https://github.com/bett3r-dev/pv3/commits/7b4a8d55))
|
|
56
|
+
* feat(pv3-types): add 'array' CLI arg type ([fc1e9c3a](git+https://github.com/bett3r-dev/pv3/commits/fc1e9c3a))
|
|
57
|
+
* feat(pv3-types): record a manual endpoint's route on its declaration site (TV1-2257) ([f59e5c47](git+https://github.com/bett3r-dev/pv3/commits/f59e5c47))
|
|
58
|
+
* feat(eventsourcing): give a readmodel query's formatter the caller it serves ([6a822e2f](git+https://github.com/bett3r-dev/pv3/commits/6a822e2f))
|
|
59
|
+
* Oracle: eventHandlers/__tests__/queryResponseFormatterCaller.test.ts (1 case, ([6a822e2f](git+https://github.com/bett3r-dev/pv3/commits/6a822e2f))
|
|
60
|
+
* here: it passes under an implementation that ignores the caller entirely. ([6a822e2f](git+https://github.com/bett3r-dev/pv3/commits/6a822e2f))
|
|
61
|
+
* feat(eventsourcing): shape realtime deltas per subscriber, not per change ([ba1a0868](git+https://github.com/bett3r-dev/pv3/commits/ba1a0868))
|
|
62
|
+
* feat(pv3-types): make a response formatter a synchronous function of ( data, caller ) ([cd3b556e](git+https://github.com/bett3r-dev/pv3/commits/cd3b556e))
|
|
63
|
+
* Oracle: `yarn build` (exit 0), not a test run — jest is transpile-only here, so ([cd3b556e](git+https://github.com/bett3r-dev/pv3/commits/cd3b556e))
|
|
64
|
+
* fix(pv3-types): declare the infrastructure adapter selector in the config schema ([73eebef7](git+https://github.com/bett3r-dev/pv3/commits/73eebef7))
|
|
65
|
+
* fix(eventsourcing): never let an absent caller skip per-subscriber shaping ([f8605f51](git+https://github.com/bett3r-dev/pv3/commits/f8605f51))
|
|
66
|
+
* fix(pv3-types): clean up optional properties in InfrastructureConfigSchema ([cc5e319a](git+https://github.com/bett3r-dev/pv3/commits/cc5e319a))
|
|
67
|
+
* feat(configuration): expose the last-applied arg snapshot synchronously ([2f567542](git+https://github.com/bett3r-dev/pv3/commits/2f567542))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## [1.6.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.5.0...@bett3r-dev/pv3-types@1.6.0) "@bett3r-dev/pv3-types" (8/2/2026) <a name="1.6.0"></a>
|
|
71
|
+
|
|
72
|
+
### Changes
|
|
73
|
+
|
|
74
|
+
* feat(query-params): marker-sniff rison encoding for object/array query params ([74f85a27](git+https://github.com/bett3r-dev/pv3/commits/74f85a27))
|
|
75
|
+
* Ticket: TV1-1466 ([74f85a27](git+https://github.com/bett3r-dev/pv3/commits/74f85a27))
|
|
76
|
+
* fix(endpoint-validation): decode query before validation for all transports ([7b2210c1](git+https://github.com/bett3r-dev/pv3/commits/7b2210c1))
|
|
77
|
+
* Ticket: TV1-1466 ([7b2210c1](git+https://github.com/bett3r-dev/pv3/commits/7b2210c1))
|
|
78
|
+
* feat(eventstore): enhance reduceMultipleStream to support transactions ([1680d047](git+https://github.com/bett3r-dev/pv3/commits/1680d047))
|
|
79
|
+
* fix(outbox): instrument event flow + restore self-healing OOS recovery ([3069caad](git+https://github.com/bett3r-dev/pv3/commits/3069caad))
|
|
80
|
+
* feat(outbox-types): add notifyPullDebounceMs config field ([988f6901](git+https://github.com/bett3r-dev/pv3/commits/988f6901))
|
|
81
|
+
* feat(outbox): wire scheduler + coordinators into EventDispatcher ([26ae44af](git+https://github.com/bett3r-dev/pv3/commits/26ae44af))
|
|
82
|
+
* Tests: 61/61 pass across 4 eventDispatcher test files. ([26ae44af](git+https://github.com/bett3r-dev/pv3/commits/26ae44af))
|
|
83
|
+
* feat(endpoints): rename defaultVisibility→visibility and add identity-forwarding to internal gateway ([4396abae](git+https://github.com/bett3r-dev/pv3/commits/4396abae))
|
|
84
|
+
* BREAKING: consumers reading `x-default-visibility` from generated OpenAPI ([4396abae](git+https://github.com/bett3r-dev/pv3/commits/4396abae))
|
|
85
|
+
* feat(command-templates): introduce CommandTemplate type and update related components ([dce852f7](git+https://github.com/bett3r-dev/pv3/commits/dce852f7))
|
|
86
|
+
* feat(cache): add incrementByWithExpiry method for Memory and Redis caches ([cd93efc7](git+https://github.com/bett3r-dev/pv3/commits/cd93efc7))
|
|
87
|
+
* feat(errors): enhance AppError with optional logLevel for flexible logging ([2e29c2db](git+https://github.com/bett3r-dev/pv3/commits/2e29c2db))
|
|
88
|
+
* fix(command-handlers): add visibility property to command handlers and builder ([a6262ef4](git+https://github.com/bett3r-dev/pv3/commits/a6262ef4))
|
|
89
|
+
* fix(database): extend watch functionality to include 'invalidate' change type ([901048e5](git+https://github.com/bett3r-dev/pv3/commits/901048e5))
|
|
90
|
+
* fix(eventsourcing): improve event reducer handling by introducing ReducerNOOP and filtering non-noop events ([e11aa2f5](git+https://github.com/bett3r-dev/pv3/commits/e11aa2f5))
|
|
91
|
+
* feat(pv3-adapter-database-postgres): refactor indexing to use generated columns + B-tree ([896376df](git+https://github.com/bett3r-dev/pv3/commits/896376df))
|
|
92
|
+
* Ticket: TV1-1320 ([896376df](git+https://github.com/bett3r-dev/pv3/commits/896376df))
|
|
93
|
+
* feat(pv3,observability): refactor ReadmodelChange to discriminated union, add undici instrumentation, and fix subscription wiring ([088c4cb9](git+https://github.com/bett3r-dev/pv3/commits/088c4cb9))
|
|
94
|
+
* feat(tsgo): migrate build scripts from tsc to tsgo across multiple packages and update TypeScript configuration ([e0cf2b51](git+https://github.com/bett3r-dev/pv3/commits/e0cf2b51))
|
|
95
|
+
* feat(outbox): implement Redis-backed L2 event cache shared across brokers ([a2a50547](git+https://github.com/bett3r-dev/pv3/commits/a2a50547))
|
|
96
|
+
* feat(outbox): enhance outbox manager with Redis-backed L2 event cache and remove legacy channels ([36cf0558](git+https://github.com/bett3r-dev/pv3/commits/36cf0558))
|
|
97
|
+
* fix(database): enhance array filter operations and add notEmpty support ([22c89c89](git+https://github.com/bett3r-dev/pv3/commits/22c89c89))
|
|
98
|
+
* fix(outbox): atomic claimPosition closes bitmap dedup TOCTOU (TV1-1914) ([c32651df](git+https://github.com/bett3r-dev/pv3/commits/c32651df))
|
|
99
|
+
* fix(outbox): claim lease + sweep to recover orphaned claims (TV1-1914 #3) ([8b995ab4](git+https://github.com/bett3r-dev/pv3/commits/8b995ab4))
|
|
100
|
+
* fix(outbox-manager): prevent at-most-once drop on cross-split claim and in-flight bitmap collision (TV1-1914) ([3cf35e26](git+https://github.com/bett3r-dev/pv3/commits/3cf35e26))
|
|
101
|
+
* Ticket: TV1-1506 ([3cf35e26](git+https://github.com/bett3r-dev/pv3/commits/3cf35e26))
|
|
102
|
+
* feat(outbox): resurrect sub-watermark gap recovery; renumber ADR-012 → ADR-013 ([651a9777](git+https://github.com/bett3r-dev/pv3/commits/651a9777))
|
|
103
|
+
* feat(outbox): stamp event.metadata.isRedelivery on definite redeliveries (TV1-1946) ([d039937f](git+https://github.com/bett3r-dev/pv3/commits/d039937f))
|
|
104
|
+
* fix(outbox): stop phantom-gap recovery from re-dispatching handled events ([5f8f169d](git+https://github.com/bett3r-dev/pv3/commits/5f8f169d))
|
|
105
|
+
* Verified: full outbox-manager suite green (113 tests, --runInBand) plus 3 ([5f8f169d](git+https://github.com/bett3r-dev/pv3/commits/5f8f169d))
|
|
106
|
+
* feat(outbox): stream-fed dispatch deduped by shared per-(sub,stream) watermark ([752454ec](git+https://github.com/bett3r-dev/pv3/commits/752454ec))
|
|
107
|
+
* Oracles: bitmapLeak.test.ts (Seam A, re-pointed onto subWm) — exactly-once ([752454ec](git+https://github.com/bett3r-dev/pv3/commits/752454ec))
|
|
108
|
+
* feat(outbox): stamp isRedelivery from the per-(sub,stream) watermark ([4c095c1a](git+https://github.com/bett3r-dev/pv3/commits/4c095c1a))
|
|
109
|
+
* Oracle: eventProcessing.test.ts Seam E (re-pointed onto subWm, 4 tests) — ([4c095c1a](git+https://github.com/bett3r-dev/pv3/commits/4c095c1a))
|
|
110
|
+
* feat(outbox): admin scoped refill + recovery cursor + stream-path errored-stream quarantine ([3df2f99f](git+https://github.com/bett3r-dev/pv3/commits/3df2f99f))
|
|
111
|
+
* feat(outbox): wire the commit-order stream as the production forward feed ([477f8dee](git+https://github.com/bett3r-dev/pv3/commits/477f8dee))
|
|
112
|
+
* Oracle: redisCommitOrderStream.test.ts (real Redis, db:6) — events XADDed to the ([477f8dee](git+https://github.com/bett3r-dev/pv3/commits/477f8dee))
|
|
113
|
+
* feat(outbox): bounded watermark GC keyed on the stream trim horizon ([72883f5b](git+https://github.com/bett3r-dev/pv3/commits/72883f5b))
|
|
114
|
+
* Oracle: watermarkGc.test.ts (real Redis, db:5) — strictly-below dropped, ([72883f5b](git+https://github.com/bett3r-dev/pv3/commits/72883f5b))
|
|
115
|
+
* feat(outbox): emit stream depth / consumer lag / refill / watermark metrics ([deeab3a7](git+https://github.com/bett3r-dev/pv3/commits/deeab3a7))
|
|
116
|
+
* Oracles: instrumentEventProcessing.streamMetrics.test.ts (real MeterProvider + ([deeab3a7](git+https://github.com/bett3r-dev/pv3/commits/deeab3a7))
|
|
117
|
+
* fix(outbox): stream-path retry/quarantine contract, refill trim-floor pin, recovery subWm advance ([9148fa45](git+https://github.com/bett3r-dev/pv3/commits/9148fa45))
|
|
118
|
+
* Oracle: eventProcessing.test.ts. ([9148fa45](git+https://github.com/bett3r-dev/pv3/commits/9148fa45))
|
|
119
|
+
* Doc: outbox-architecture.md "Retryable Error Handling" reconciled with the stream-path contract. ([9148fa45](git+https://github.com/bett3r-dev/pv3/commits/9148fa45))
|
|
120
|
+
* feat(eventsourcing): enhance SSE subscription handling with authoritative readmodel name ([54a34d85](git+https://github.com/bett3r-dev/pv3/commits/54a34d85))
|
|
121
|
+
* feat(docker-events): improve Docker event handling and error resilience ([e8d4c860](git+https://github.com/bett3r-dev/pv3/commits/e8d4c860))
|
|
122
|
+
* fix(outbox): correct stale commitOrderStream fallback doc after D5a de-brand (TV1-1950) ([11fd7a57](git+https://github.com/bett3r-dev/pv3/commits/11fd7a57))
|
|
123
|
+
* feat(outbox): hybrid dedup — null-version events dedup order-free on a position bitmap ([58ba223b](git+https://github.com/bett3r-dev/pv3/commits/58ba223b))
|
|
124
|
+
* feat(outbox): prune null-class bitmap epochs to the trim floor (pruneBitmap) ([5ea6e4f0](git+https://github.com/bett3r-dev/pv3/commits/5ea6e4f0))
|
|
125
|
+
* feat(outbox): dead-letter poison null-events so the stream keeps flowing ([dd54ba6d](git+https://github.com/bett3r-dev/pv3/commits/dd54ba6d))
|
|
126
|
+
* feat(outbox): circuit breaker + half-open per (sub,host) for null events ([22a73639](git+https://github.com/bett3r-dev/pv3/commits/22a73639))
|
|
127
|
+
* feat(outbox): operator drains the DLQ as first-delivery, not replay ([12a0495f](git+https://github.com/bett3r-dev/pv3/commits/12a0495f))
|
|
128
|
+
* fix(outbox): harden null-class breaker — frontier-driven half-open probe + burst-safe trip (verify-build F1/F2/F4) ([e41930f5](git+https://github.com/bett3r-dev/pv3/commits/e41930f5))
|
|
129
|
+
* Tests: rewrote the multi-split probe oracle to prove the frontier-driven probe ([e41930f5](git+https://github.com/bett3r-dev/pv3/commits/e41930f5))
|
|
130
|
+
* feat(subscriptions): enhance live tracking of delivered events and events per second ([d869287b](git+https://github.com/bett3r-dev/pv3/commits/d869287b))
|
|
131
|
+
* feat(subscriptions): implement consumer lag tracking and enhance metrics ([b327f235](git+https://github.com/bett3r-dev/pv3/commits/b327f235))
|
|
132
|
+
* feat(admin): single-entry DLQ retry ([06619993](git+https://github.com/bett3r-dev/pv3/commits/06619993))
|
|
133
|
+
* feat(outbox): DLQ-aware subscription status + fix stale split status after recovery ([54d0a228](git+https://github.com/bett3r-dev/pv3/commits/54d0a228))
|
|
134
|
+
* feat(outbox): improve outbox admin ui ([b632b0b5](git+https://github.com/bett3r-dev/pv3/commits/b632b0b5))
|
|
135
|
+
* feat(outbox): enrich DLQ errors with name/details and capture consumer response body ([675978bb](git+https://github.com/bett3r-dev/pv3/commits/675978bb))
|
|
136
|
+
* Ticket: TV1-1954 ([675978bb](git+https://github.com/bett3r-dev/pv3/commits/675978bb))
|
|
137
|
+
* feat(outbox): whole-split halt on retryable exhaustion + operator restart-datasplit (TV1-1954) ([174c111a](git+https://github.com/bett3r-dev/pv3/commits/174c111a))
|
|
138
|
+
* Recovery: new restartDataSplit(subscriptionId, splitIndex) on the dispatcher + ([174c111a](git+https://github.com/bett3r-dev/pv3/commits/174c111a))
|
|
139
|
+
* Tests: new splitHalt.test.ts (real Redis, db 12) covers halt-on-exhaustion ([174c111a](git+https://github.com/bett3r-dev/pv3/commits/174c111a))
|
|
140
|
+
* feat(outbox): live retry progress on the datasplit view (TV1-1954) ([f02a3f13](git+https://github.com/bett3r-dev/pv3/commits/f02a3f13))
|
|
141
|
+
* feat(outbox): honest backlog figures for halted and retrying datasplits (TV1-1954) ([46620ba3](git+https://github.com/bett3r-dev/pv3/commits/46620ba3))
|
|
142
|
+
* Tests: splitHalt integration suite (real Redis, real pump/gate) extended — ([46620ba3](git+https://github.com/bett3r-dev/pv3/commits/46620ba3))
|
|
143
|
+
* feat(outbox): whole-subscription bulk refill fans out across owning instances ([b4746619](git+https://github.com/bett3r-dev/pv3/commits/b4746619))
|
|
144
|
+
* feat(outbox): multi-stream-list selector + as-new dispatch-time bypass ([f69314e8](git+https://github.com/bett3r-dev/pv3/commits/f69314e8))
|
|
145
|
+
* asFirstDelivery: bypasses the redelivery skip and stamps ([f69314e8](git+https://github.com/bett3r-dev/pv3/commits/f69314e8))
|
|
146
|
+
* fix(eventsourcing): enhance snapshot consistency and aggregate state management ([479b7ed3](git+https://github.com/bett3r-dev/pv3/commits/479b7ed3))
|
|
147
|
+
* fix(command-handlers): type expectedVersion as number so OCC is reachable through executeCommand (TV1-1976 follow-up) ([90bf8d68](git+https://github.com/bett3r-dev/pv3/commits/90bf8d68))
|
|
148
|
+
* feat(outbox-manager): cold-seed versioned dedup watermark to eventstore tip ([3d464ad2](git+https://github.com/bett3r-dev/pv3/commits/3d464ad2))
|
|
149
|
+
* pump: one reduceStream(from:0) scan accumulates per-stream max version, flushes ([3d464ad2](git+https://github.com/bett3r-dev/pv3/commits/3d464ad2))
|
|
150
|
+
* Oracle: seedColdStart.test.ts (boot-silent, force-replay, warm-restart ([3d464ad2](git+https://github.com/bett3r-dev/pv3/commits/3d464ad2))
|
|
151
|
+
* Ref: TV1-1980 ([3d464ad2](git+https://github.com/bett3r-dev/pv3/commits/3d464ad2))
|
|
152
|
+
* feat(outbox-manager): cold-seed null-version positions to the bitmap, batched ([749570fe](git+https://github.com/bett3r-dev/pv3/commits/749570fe))
|
|
153
|
+
* Ref: TV1-1980 ([749570fe](git+https://github.com/bett3r-dev/pv3/commits/749570fe))
|
|
154
|
+
* fix(outbox-manager): standardize spacing in type definitions and function signatures ([0755280e](git+https://github.com/bett3r-dev/pv3/commits/0755280e))
|
|
155
|
+
* Ref: TV1-1980 ([0755280e](git+https://github.com/bett3r-dev/pv3/commits/0755280e))
|
|
156
|
+
* fix(ports): await async onStarted boot callbacks in start(); fail loudly on rejection ([defc9282](git+https://github.com/bett3r-dev/pv3/commits/defc9282))
|
|
157
|
+
* feat(outbox-manager): opt-in structure-ack readiness gate in coordination runtime (TV1-1973 S2) ([b742e898](git+https://github.com/bett3r-dev/pv3/commits/b742e898))
|
|
158
|
+
* fix(eventstore-postgres): find the versioned head of a stream that also holds version-free rows ([9ce89463](git+https://github.com/bett3r-dev/pv3/commits/9ce89463))
|
|
159
|
+
* read: `SELECT v FROM (VALUES (1),(2),(NULL::int)) t(v) ORDER BY v DESC LIMIT ([9ce89463](git+https://github.com/bett3r-dev/pv3/commits/9ce89463))
|
|
160
|
+
* shapes: versioned-only (no NULLs to exclude), empty (no row either way), and ([9ce89463](git+https://github.com/bett3r-dev/pv3/commits/9ce89463))
|
|
161
|
+
* Oracle: __tests__/mixedVersionStream.test.ts — against a real Postgres, since ([9ce89463](git+https://github.com/bett3r-dev/pv3/commits/9ce89463))
|
|
162
|
+
* feat(database): add a bulk upsert primitive to the collection API ([e0c01c6e](git+https://github.com/bett3r-dev/pv3/commits/e0c01c6e))
|
|
163
|
+
* feat(eventstore): ask the eventstore for a stream's head version ([3cfb7c41](git+https://github.com/bett3r-dev/pv3/commits/3cfb7c41))
|
|
164
|
+
* feat(eventsourcing): assert the version the command actually read ([4725b1b5](git+https://github.com/bett3r-dev/pv3/commits/4725b1b5))
|
|
165
|
+
* feat(eventsourcing): rewind a retried command inside a caller-owned transaction ([c5aa40b7](git+https://github.com/bett3r-dev/pv3/commits/c5aa40b7))
|
|
166
|
+
* feat(eventsourcing): let a command declare its concurrency mode ([cc3585d9](git+https://github.com/bett3r-dev/pv3/commits/cc3585d9))
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
## [1.5.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.4.0...@bett3r-dev/pv3-types@1.5.0) "@bett3r-dev/pv3-types" (4/11/2026) <a name="1.5.0"></a>
|
|
170
|
+
|
|
171
|
+
### Changes
|
|
172
|
+
|
|
173
|
+
* fix(build): update packages versions ([79f7da77](git+https://github.com/bett3r-dev/pv3/commits/79f7da77))
|
|
174
|
+
* fix(cache): implement stop method in MemoryCache and enhance MemoryDb readById functionality ([c55afccb](git+https://github.com/bett3r-dev/pv3/commits/c55afccb))
|
|
175
|
+
* fix(eventsourcing): enhance event handlers and readmodel configuration ([1789cd34](git+https://github.com/bett3r-dev/pv3/commits/1789cd34))
|
|
176
|
+
* fix(dependencies): Update jsonschema-definer to 1.5.6 ([6c7e2e45](git+https://github.com/bett3r-dev/pv3/commits/6c7e2e45))
|
|
177
|
+
* fix(pv3-types): rename validation.ts to errors.ts ([50bf4345](git+https://github.com/bett3r-dev/pv3/commits/50bf4345))
|
|
178
|
+
* fix(eventsourcing): standardize custom schema keywords and enhance schema handling ([1c8cbf84](git+https://github.com/bett3r-dev/pv3/commits/1c8cbf84))
|
|
179
|
+
* fix(dependencies): update jsonschema-definer to 1.5.7 and ramda to 0.32.0 ([e5af6e98](git+https://github.com/bett3r-dev/pv3/commits/e5af6e98))
|
|
180
|
+
* fix(dependencies): upgrade jsonschema-definer to 1.5.8 across multiple packages ([3e704d18](git+https://github.com/bett3r-dev/pv3/commits/3e704d18))
|
|
181
|
+
* fix(errors): standardize error handling by adding error codes ([0049c0a0](git+https://github.com/bett3r-dev/pv3/commits/0049c0a0))
|
|
182
|
+
* fix(errors): add error code property to AppError class ([3e50805b](git+https://github.com/bett3r-dev/pv3/commits/3e50805b))
|
|
183
|
+
* feat(command-handlers): add pre-processing functionality to command execution flow ([036eeaaa](git+https://github.com/bett3r-dev/pv3/commits/036eeaaa))
|
|
184
|
+
* fix(authentication): implement Better Auth adapter and enhance authorization capabilities ([02ade1d9](git+https://github.com/bett3r-dev/pv3/commits/02ade1d9))
|
|
185
|
+
* fix(TV1-716): implement account partitioning in readmodel subscriptions ([e79cdfb1](git+https://github.com/bett3r-dev/pv3/commits/e79cdfb1))
|
|
186
|
+
* fix(TV1-862): implement outbox manager improvements for reliability and fault tolerance ([91801daf](git+https://github.com/bett3r-dev/pv3/commits/91801daf))
|
|
187
|
+
* fix(commandHandlers): reorder parameters in executeCommand function for consistency ([bec05c54](git+https://github.com/bett3r-dev/pv3/commits/bec05c54))
|
|
188
|
+
* fix(pv3-admin-server): update AdminServer and UI components to work with the new outbox manager ([c5669071](git+https://github.com/bett3r-dev/pv3/commits/c5669071))
|
|
189
|
+
* feat(TV1-789): implement UserSession write API for enhanced session management ([80e5d86e](git+https://github.com/bett3r-dev/pv3/commits/80e5d86e))
|
|
190
|
+
* fix(endpoints): implement asynchronous documentation generation for OpenAPI ([120e4819](git+https://github.com/bett3r-dev/pv3/commits/120e4819))
|
|
191
|
+
* feat(TV1-933): introduce new admin plugins for authentication and outbox management ([71ee95f3](git+https://github.com/bett3r-dev/pv3/commits/71ee95f3))
|
|
192
|
+
* fix(endpoints): remove artifact types from tags and fix schema registration ([93d3fea1](git+https://github.com/bett3r-dev/pv3/commits/93d3fea1))
|
|
193
|
+
* Ticket: TV1-1060 ([93d3fea1](git+https://github.com/bett3r-dev/pv3/commits/93d3fea1))
|
|
194
|
+
* feat(observability): add outbox channel instrumentation for tracing event dispatch ([01430e0b](git+https://github.com/bett3r-dev/pv3/commits/01430e0b))
|
|
195
|
+
* Ticket: TV1-814 ([01430e0b](git+https://github.com/bett3r-dev/pv3/commits/01430e0b))
|
|
196
|
+
* feat(observability): add command execution instrumentation ([7ae35b7f](git+https://github.com/bett3r-dev/pv3/commits/7ae35b7f))
|
|
197
|
+
* Ticket: TV1-814 ([7ae35b7f](git+https://github.com/bett3r-dev/pv3/commits/7ae35b7f))
|
|
198
|
+
* feat(cache): add list operations and fix hashIncrementBy in memory adapter ([2c3d011c](git+https://github.com/bett3r-dev/pv3/commits/2c3d011c))
|
|
199
|
+
* fix(outbox-manager): increase default maxConsumerQueueSize to 1000 ([d7777d07](git+https://github.com/bett3r-dev/pv3/commits/d7777d07))
|
|
200
|
+
* feat(admin-panel): improve auth, plugin loader, and outbox UI ([c0b96eb0](git+https://github.com/bett3r-dev/pv3/commits/c0b96eb0))
|
|
201
|
+
* feat(cluster-structure): add configurable default automatic data splits ([3cb5a150](git+https://github.com/bett3r-dev/pv3/commits/3cb5a150))
|
|
202
|
+
* Ticket: TV1-1147 ([3cb5a150](git+https://github.com/bett3r-dev/pv3/commits/3cb5a150))
|
|
203
|
+
* fix(clusterAdministration): set default value for defaultAutomaticDataSplits to 5 ([b8ca46ce](git+https://github.com/bett3r-dev/pv3/commits/b8ca46ce))
|
|
204
|
+
* feat(pv3): add deployment units system with MDU computation, manifest generation, and selective loading ([f9a1c35c](git+https://github.com/bett3r-dev/pv3/commits/f9a1c35c))
|
|
205
|
+
* Ticket: TV1-1061 ([f9a1c35c](git+https://github.com/bett3r-dev/pv3/commits/f9a1c35c))
|
|
206
|
+
* feat(eventsourcing): add snapshot subscription change type for initial load ([2ac3bcf3](git+https://github.com/bett3r-dev/pv3/commits/2ac3bcf3))
|
|
207
|
+
* Ticket: TV1-1235 ([2ac3bcf3](git+https://github.com/bett3r-dev/pv3/commits/2ac3bcf3))
|
|
208
|
+
* feat(command-handlers): add payload parameter to InstrumentCommandExecution type ([21cfd1c4](git+https://github.com/bett3r-dev/pv3/commits/21cfd1c4))
|
|
209
|
+
* feat(eventsourcing): add snapshot and signal subscription modes with opt-in options ([9299316e](git+https://github.com/bett3r-dev/pv3/commits/9299316e))
|
|
210
|
+
* Ticket: TV1-1235 ([9299316e](git+https://github.com/bett3r-dev/pv3/commits/9299316e))
|
|
211
|
+
* fix(pv3): update clean script to exclude specific adapters and enhance query parameter validation ([f877c20f](git+https://github.com/bett3r-dev/pv3/commits/f877c20f))
|
|
212
|
+
* feat(outbox): add OTel instrumentation for error pipeline ([4802a2b3](git+https://github.com/bett3r-dev/pv3/commits/4802a2b3))
|
|
213
|
+
* Ticket: TV1-1256 ([4802a2b3](git+https://github.com/bett3r-dev/pv3/commits/4802a2b3))
|
|
214
|
+
* fix(outbox-manager): cache from NOTIFY, debounce, serialized pulls, paginated reads ([02508c98](git+https://github.com/bett3r-dev/pv3/commits/02508c98))
|
|
215
|
+
* Ticket: TV1-1415 ([02508c98](git+https://github.com/bett3r-dev/pv3/commits/02508c98))
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## [1.4.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.3.3...@bett3r-dev/pv3-types@1.4.0) "@bett3r-dev/pv3-types" (10/9/2025) <a name="1.4.0"></a>
|
|
219
|
+
|
|
220
|
+
### Changes
|
|
221
|
+
|
|
222
|
+
* feat(magiclink): add generateMagicLink function for improved magic link handling ([dde2460c](git+https://github.com/bett3r-dev/pv3/commits/dde2460c))
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
## [1.3.3](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.3.2...@bett3r-dev/pv3-types@1.3.3) "@bett3r-dev/pv3-types" (10/3/2025) <a name="1.3.3"></a>
|
|
226
|
+
|
|
227
|
+
### Changes
|
|
228
|
+
|
|
229
|
+
* fix(eventsourcing): Refactor ReadModel => Readmodel across all repo ([094e5dd9](git+https://github.com/bett3r-dev/pv3/commits/094e5dd9))
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
## [1.3.2](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.3.1...@bett3r-dev/pv3-types@1.3.2) "@bett3r-dev/pv3-types" (9/23/2025) <a name="1.3.2"></a>
|
|
233
|
+
|
|
234
|
+
### Changes
|
|
235
|
+
|
|
236
|
+
* fix(eventstore): enhance concurrency error handling and improve commit event logging ([3a9a7462](git+https://github.com/bett3r-dev/pv3/commits/3a9a7462))
|
|
237
|
+
* fix(package): update build scripts and improve type usage in cluster structure ([f7e8d7ec](git+https://github.com/bett3r-dev/pv3/commits/f7e8d7ec))
|
|
238
|
+
* fix(eventHandlers): enhance event schema handling with friendlyName support for Events ([84c6cb74](git+https://github.com/bett3r-dev/pv3/commits/84c6cb74))
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
## [1.3.1](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.3.0...@bett3r-dev/pv3-types@1.3.1) "@bett3r-dev/pv3-types" (7/7/2025) <a name="1.3.1"></a>
|
|
242
|
+
|
|
243
|
+
### Changes
|
|
244
|
+
|
|
245
|
+
* fix(outbox-manager): added an event emitter to notify when error streams are created and fixed ([374c2c8e](git+https://github.com/bett3r-dev/pv3/commits/374c2c8e))
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
## [1.3.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.2.0...@bett3r-dev/pv3-types@1.3.0) "@bett3r-dev/pv3-types" (7/4/2025) <a name="1.3.0"></a>
|
|
249
|
+
|
|
250
|
+
### Changes
|
|
251
|
+
|
|
252
|
+
* feat(cache): add hashLength, setBit, and getBit methods to Memory and Redis cache adapters ([abd06ddd](git+https://github.com/bett3r-dev/pv3/commits/abd06ddd))
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
## [1.2.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.1.0...@bett3r-dev/pv3-types@1.2.0) "@bett3r-dev/pv3-types" (7/2/2025) <a name="1.2.0"></a>
|
|
256
|
+
|
|
257
|
+
### Changes
|
|
258
|
+
|
|
259
|
+
* feat(eventHandlers): add optional byDistinctField property to ReadmodelDefaultQuerySchema for enhanced query flexibility ([11ca6f3a](git+https://github.com/bett3r-dev/pv3/commits/11ca6f3a))
|
|
260
|
+
* feat(outbox-manager): add optional subscriptionId parameter to getSubscriptionStatus route and implement getAllSubscriptionsStatus function for retrieving all subscriptions' statuses ([14a627af](git+https://github.com/bett3r-dev/pv3/commits/14a627af))
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
## [1.1.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.0.6...@bett3r-dev/pv3-types@1.1.0) "@bett3r-dev/pv3-types" (6/26/2025) <a name="1.1.0"></a>
|
|
264
|
+
|
|
265
|
+
### Changes
|
|
266
|
+
|
|
267
|
+
* feat(database): enhance count and query functionality with distinct field support ([5a8c8d2a](git+https://github.com/bett3r-dev/pv3/commits/5a8c8d2a))
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
## [1.0.6](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.0.5...@bett3r-dev/pv3-types@1.0.6) "@bett3r-dev/pv3-types" (6/24/2025) <a name="1.0.6"></a>
|
|
271
|
+
|
|
272
|
+
### Changes
|
|
273
|
+
|
|
274
|
+
* fix(eventsourcing): implement rison encoding for filters, sorts and selects ([138fa75d](git+https://github.com/bett3r-dev/pv3/commits/138fa75d))
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
## [1.0.5](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.0.4...@bett3r-dev/pv3-types@1.0.5) "@bett3r-dev/pv3-types" (6/20/2025) <a name="1.0.5"></a>
|
|
278
|
+
|
|
279
|
+
### Changes
|
|
280
|
+
|
|
281
|
+
* fix: client library types improvement ([46190f29](git+https://github.com/bett3r-dev/pv3/commits/46190f29))
|
|
282
|
+
* fix(outbox): standardize subscription state to be compatible with postgres ([06ccef68](git+https://github.com/bett3r-dev/pv3/commits/06ccef68))
|
|
283
|
+
* fix(validation): correct error class name in UnauthorizedError constructor ([093e1e80](git+https://github.com/bett3r-dev/pv3/commits/093e1e80))
|
|
284
|
+
* fix(database): enhance getCollection and translateSQL to support sequenceIdProperty ([fe35ba1f](git+https://github.com/bett3r-dev/pv3/commits/fe35ba1f))
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
## [1.0.4](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.0.3...@bett3r-dev/pv3-types@1.0.4) "@bett3r-dev/pv3-types" (6/14/2025) <a name="1.0.4"></a>
|
|
288
|
+
|
|
289
|
+
### Changes
|
|
290
|
+
|
|
291
|
+
* fix: enhance QueryHandler and Query types to support RETURN_TYPE for improved type safety ([753dabd8](git+https://github.com/bett3r-dev/pv3/commits/753dabd8))
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
## [1.0.3](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-types@1.0.2...@bett3r-dev/pv3-types@1.0.3) "@bett3r-dev/pv3-types" (6/14/2025) <a name="1.0.3"></a>
|
|
295
|
+
|
|
296
|
+
### Changes
|
|
297
|
+
|
|
298
|
+
* fix: update @bett3r-dev/jsonschema-definer dependency to version 1.5.0 across multiple packages ([a5f23884](git+https://github.com/bett3r-dev/pv3/commits/a5f23884))
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
## 1.0.0
|
|
302
|
+
|
|
303
|
+
### Major Changes
|
|
304
|
+
|
|
305
|
+
- First Official Release of PV3
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type AdminPluginTab = {
|
|
2
|
+
name: string;
|
|
3
|
+
route: string;
|
|
4
|
+
};
|
|
5
|
+
export type AdminPluginManifest = {
|
|
6
|
+
name: string;
|
|
7
|
+
route: string;
|
|
8
|
+
entry: string;
|
|
9
|
+
section?: string;
|
|
10
|
+
icon?: string;
|
|
11
|
+
tabs?: AdminPluginTab[];
|
|
12
|
+
permissions?: string[];
|
|
13
|
+
};
|
|
14
|
+
export type AdminUserContext = {
|
|
15
|
+
id: string;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
export type AdminPluginProps = {
|
|
19
|
+
backendUrl: string;
|
|
20
|
+
user?: AdminUserContext;
|
|
21
|
+
navigate: (path: string) => void;
|
|
22
|
+
basePath: string;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=adminPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminPlugin.d.ts","sourceRoot":"","sources":["../src/adminPlugin.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAE,IAAI,EAAE,MAAM,KAAM,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminPlugin.js","sourceRoot":"","sources":["../src/adminPlugin.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { BaseSchema, ObjectSchema } from '@bett3r-dev/jsonschema-definer';
|
|
2
|
+
import { AggregateSpec, Document } from './database';
|
|
3
|
+
/**
|
|
4
|
+
* The filter schema embedded under `aggregate.filter`, carrying its OWN `$id` — see
|
|
5
|
+
* `collectionFilterSchemaWithId`. Identical rules to `CollectionFilterSchema`, different identity,
|
|
6
|
+
* because both are materialised in the SAME readmodel query document.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AggregateFilterSchema: BaseSchema<Partial<import("./database").CollectionFilterOR<any> & import("./database").CollectionFilterAND<any> & import("./database").CollectionFilterInstance<any>>, true, Readonly<import("@bett3r-dev/jsonschema-definer/dist/base").BaseJsonSchema>>;
|
|
9
|
+
/**
|
|
10
|
+
* Derives the RESPONSE SCHEMA of an aggregate row from the model's schema plus the spec.
|
|
11
|
+
*
|
|
12
|
+
* This is one of the three co-derivations of a single spec value (the other two being the
|
|
13
|
+
* `AggregateRow` TS type and the adapter's SQL). It is deliberately a PURE function of
|
|
14
|
+
* `(modelSchema, spec)` — no ports, no I/O, no dependency on endpoint registration — because
|
|
15
|
+
* the authoring-time consumer (teselly's rule validator) calls it on a spec pv3 never saw at
|
|
16
|
+
* build time. Building it as an internal of endpoint registration is the one decision here
|
|
17
|
+
* that would be expensive to undo.
|
|
18
|
+
*
|
|
19
|
+
* The rules:
|
|
20
|
+
* - a `groupBy` key copies the model's property schema, facets (enum, format) included, made
|
|
21
|
+
* NULLABLE: a row lacking the key groups under SQL NULL, and the adapter projects that group's
|
|
22
|
+
* key as JS `null` (invariant I1 — the schema must accept what the SQL can legitimately hand
|
|
23
|
+
* back);
|
|
24
|
+
* - every OTHER `groupBy` facet survives onto the row rather than being flattened to a loose
|
|
25
|
+
* primitive;
|
|
26
|
+
* - a `count`/`sum` alias is always `number` — neither can be empty (a group exists because a
|
|
27
|
+
* row exists, and the empty sum is COALESCEd to its identity element, 0);
|
|
28
|
+
* - an `avg` alias is `number | null`, and a `min`/`max` alias copies the SOURCE field's
|
|
29
|
+
* property schema verbatim — facets included (invariant I4) — made NULLABLE. This is the
|
|
30
|
+
* half a TS type cannot carry: `AggregateTermType` can say `string`, only the schema can
|
|
31
|
+
* say `format: 'date-time'`, and a consumer generating a client from it would otherwise be
|
|
32
|
+
* handed a looser contract than the readmodel's own. The nullability mirrors
|
|
33
|
+
* `AggregateTermType` exactly: these three functions have no identity element, so a group
|
|
34
|
+
* whose every row lacks the field yields null rather than an invented value. `.nullable()`
|
|
35
|
+
* is the library's own mechanism and preserves the other facets (it widens `type` and, for
|
|
36
|
+
* an enum, appends null to the enum) instead of flattening the schema;
|
|
37
|
+
* - every other model property DISAPPEARS — an aggregate row is a new type, not a partial
|
|
38
|
+
* model.
|
|
39
|
+
*/
|
|
40
|
+
export declare const deriveAggregateSchema: <Model extends Document>(modelSchema: ObjectSchema<any, any>, spec: AggregateSpec<Model>) => ObjectSchema<any, any>;
|
|
41
|
+
/**
|
|
42
|
+
* Charset-checks every value in the spec that reaches SQL by interpolation.
|
|
43
|
+
*
|
|
44
|
+
* Called from `validateSpec` (i.e. from INSIDE `deriveAggregateSchema`), so every caller that
|
|
45
|
+
* DERIVES — the endpoint, teselly's authoring-time validator — inherits it. It is deliberately
|
|
46
|
+
* NOT only there: `aggregate()` does NOT derive, so the Postgres adapter runs this check itself
|
|
47
|
+
* (`assertAggregateBoundsAreValid`, postgres.utils.ts) immediately before interpolating. The
|
|
48
|
+
* derivation is a chokepoint for the HTTP path, not for the port. Exported as well, so the
|
|
49
|
+
* boundary can run it FIRST and
|
|
50
|
+
* report "not a safe identifier" instead of the less useful "not a property of the model" that a
|
|
51
|
+
* membership check would report for the same hostile value.
|
|
52
|
+
*/
|
|
53
|
+
export declare const assertSafeAggregateIdentifiers: <Model extends Document>(spec: AggregateSpec<Model>) => void;
|
|
54
|
+
/**
|
|
55
|
+
* INVARIANT I5 — the spec must be STATIC.
|
|
56
|
+
*
|
|
57
|
+
* This is the condition the whole design rests on, not a hygiene check. `AggregateRow`, the
|
|
58
|
+
* derived JSON Schema and the SQL are all computed FROM the spec; if a `groupBy` key or an
|
|
59
|
+
* aggregate `field` can arrive from a runtime value (an upstream edge in a rule graph, a
|
|
60
|
+
* template placeholder resolved later) then the row shape is not derivable at authoring time and
|
|
61
|
+
* the entire scheme degrades to `any` — silently, because a spec with a placeholder in it is a
|
|
62
|
+
* perfectly well-formed object.
|
|
63
|
+
*
|
|
64
|
+
* So the two runtime-reference shapes are refused explicitly:
|
|
65
|
+
* - a NON-STRING where an identifier belongs (`{ from: 'input.field' }`, the shape a rules-engine
|
|
66
|
+
* edge would produce);
|
|
67
|
+
* - a string carrying template syntax (`{{...}}`, `${...}`), which would otherwise sail through
|
|
68
|
+
* the charset guard's error path with a confusing message.
|
|
69
|
+
* Run BEFORE the charset guard so the failure names the right problem.
|
|
70
|
+
*/
|
|
71
|
+
export declare const assertStaticAggregateSpec: (spec: unknown) => void;
|
|
72
|
+
/**
|
|
73
|
+
* The WIRE schema of an aggregate spec — what a caller may put in the query string.
|
|
74
|
+
*
|
|
75
|
+
* It validates the spec's SHAPE only (the function vocabulary, the bound types, the filter
|
|
76
|
+
* clauses). The SEMANTIC rules — field exists on the model, `sum` over a numeric field, alias
|
|
77
|
+
* collisions — deliberately stay in `deriveAggregateSchema`, which is the single place every
|
|
78
|
+
* caller passes through. Duplicating them here would create two rule sets that can drift.
|
|
79
|
+
*
|
|
80
|
+
* `filter` reuses the same filter DEFINITION (under its own `$id`) so a filter means exactly the same thing on
|
|
81
|
+
* `aggregate` as it does on `query`.
|
|
82
|
+
*/
|
|
83
|
+
export declare const AggregateSpecSchema: ObjectSchema<{
|
|
84
|
+
groupBy: string[];
|
|
85
|
+
aggregates: {
|
|
86
|
+
fn: "avg" | "count" | "max" | "min" | "sum";
|
|
87
|
+
field?: string | undefined;
|
|
88
|
+
as: string;
|
|
89
|
+
}[];
|
|
90
|
+
filter?: Partial<import("./database").CollectionFilterOR<any> & import("./database").CollectionFilterAND<any> & import("./database").CollectionFilterInstance<any>>[] | undefined;
|
|
91
|
+
maxGroups?: number | undefined;
|
|
92
|
+
maxGroupSize?: number | undefined;
|
|
93
|
+
}, true>;
|
|
94
|
+
//# sourceMappingURL=aggregateSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregateSchema.d.ts","sourceRoot":"","sources":["../src/aggregateSchema.ts"],"names":[],"mappings":"AAAA,OAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAgC,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,2PAA8D,CAAC;AAkFjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,QAAQ,eAC7C,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,QAC7B,aAAa,CAAC,KAAK,CAAC,KACzB,YAAY,CAAC,GAAG,EAAE,GAAG,CA2BvB,CAAC;AAmCF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,GAAI,KAAK,SAAS,QAAQ,QAAS,aAAa,CAAC,KAAK,CAAC,SAMjG,CAAC;AAIF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,yBAAyB,SAAW,OAAO,KAAI,IA0B3D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;QAmB9B,CAAC"}
|