@natsail/effect 0.1.0 → 0.2.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/README.md +159 -17
- package/dist/index.d.ts +111 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +337 -15
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -1,47 +1,189 @@
|
|
|
1
1
|
# @natsail/effect
|
|
2
2
|
|
|
3
|
-
`@natsail/effect` gives Effect programs
|
|
3
|
+
`@natsail/effect` gives Effect v4 programs scoped Core NATS and JetStream Streams, typed operations and failures, and optional shared-session Streams over one NATSail runtime.
|
|
4
|
+
|
|
5
|
+
The current v4 adapter targets `effect@4.0.0-rc.112`. Install the matching Effect release candidate while this version is published under NATSail's prerelease tag.
|
|
4
6
|
|
|
5
7
|
```sh
|
|
6
|
-
pnpm add effect @natsail/core @natsail/session @natsail/effect
|
|
8
|
+
pnpm add effect@4.0.0-rc.112 @natsail/core @natsail/jetstream @natsail/session @natsail/effect
|
|
7
9
|
```
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## Core subject Streams
|
|
12
|
+
|
|
13
|
+
Use `subscribe()` when every Effect consumer should own one ephemeral Core NATS subscription:
|
|
10
14
|
|
|
11
15
|
```ts
|
|
12
16
|
import { Effect, Stream } from 'effect'
|
|
13
17
|
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { createSessionRegistry } from '@natsail/session'
|
|
18
|
+
import { natsCodecs } from '@natsail/core'
|
|
19
|
+
import { makeNatsailScopedLayer, subscribe } from '@natsail/effect'
|
|
17
20
|
|
|
18
21
|
const NatsLive = makeNatsailScopedLayer(
|
|
19
22
|
Effect.sync(() => ({
|
|
20
23
|
runtime: createNatsRuntime({ connect: connectToNats }),
|
|
21
|
-
sessions: createSessionRegistry(
|
|
24
|
+
sessions: createSessionRegistry(),
|
|
22
25
|
}))
|
|
23
26
|
)
|
|
24
27
|
|
|
25
|
-
const
|
|
28
|
+
const messages = subscribe(
|
|
29
|
+
{
|
|
30
|
+
subject: 'chat.room.*',
|
|
31
|
+
queue: 'chat-workers',
|
|
32
|
+
codec: natsCodecs.json<ChatMessage>(),
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
bufferSize: 256,
|
|
36
|
+
overflowStrategy: 'suspend',
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
const program = messages.pipe(
|
|
41
|
+
Stream.runForEach((message) => Effect.log(message)),
|
|
42
|
+
Effect.provide(NatsLive)
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The Stream is cold. Starting a consumer creates one subscription; completion, failure, or interruption closes it. Wildcard subjects, queue groups, codecs, and metadata-aware `decode(message)` functions use the same Core NATS options as `runtime.subscribe()`.
|
|
47
|
+
|
|
48
|
+
Subject Streams queue at most 32 decoded messages by default. Their overflow policy is explicit:
|
|
49
|
+
|
|
50
|
+
- `suspend` is the default and waits for downstream capacity before NATSail's awaited delivery handler returns.
|
|
51
|
+
- `error` fails with `NatsailStreamBufferOverflowError` rather than losing a message.
|
|
52
|
+
- `dropping` drops a new message when the buffer is full.
|
|
53
|
+
- `sliding` keeps the newest messages by dropping the oldest buffered message.
|
|
54
|
+
|
|
55
|
+
The bound is measured in messages, not bytes. Core NATS remains ephemeral and at-most-once: local backpressure cannot add server retention, acknowledgement, or replay. Use JetStream when an application cannot tolerate missed messages.
|
|
56
|
+
|
|
57
|
+
`NatsailSubjectError` distinguishes subscription creation, readiness, and source/decoding failure while retaining the original cause.
|
|
58
|
+
|
|
59
|
+
For sustained streams, compose the subscription with Effect's native chunk operators instead of accumulating the entire stream:
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
const processMessages = messages.pipe(
|
|
63
|
+
Stream.rechunk(256),
|
|
64
|
+
Stream.runForEachArray((batch) => persistBatch(batch))
|
|
65
|
+
)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`Stream.rechunk()` bounds each processing batch, and `runForEachArray()` invokes the application once per non-empty batch. Avoid `Stream.runCollect()` for unbounded subjects because it retains every message until the Stream completes.
|
|
69
|
+
|
|
70
|
+
## JetStream delivery
|
|
71
|
+
|
|
72
|
+
Use `jetStreamEvents()` when the application needs both ordered deliveries and the exact replay-to-live boundary. `jetStreamDeliveries()` exposes the same delivery path without the control event:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { natsCodecs } from '@natsail/core'
|
|
76
|
+
import { jetStreamEvents } from '@natsail/effect'
|
|
77
|
+
|
|
78
|
+
const events = jetStreamEvents(
|
|
79
|
+
{
|
|
80
|
+
stream: 'CHAT',
|
|
81
|
+
filter: 'chat.room.>',
|
|
82
|
+
start: 'all',
|
|
83
|
+
codec: natsCodecs.json<ChatEvent>(),
|
|
84
|
+
maxBufferedMessages: 64,
|
|
85
|
+
recovery: { delayMs: 500 },
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
bufferSize: 256,
|
|
89
|
+
overflowStrategy: 'suspend',
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The Stream is cold and scoped. NATSail owns the ordered consumer, checkpoint, duplicate policy, and package-level recovery. Effect owns downstream demand and structured cancellation. The default local Effect buffer is 32 events and suspends the awaited JetStream handler when full. Durable delivery deliberately supports only `suspend` and `error`; dropping or sliding would incorrectly allow the source checkpoint to advance past an event that was never admitted to the Effect Stream.
|
|
95
|
+
|
|
96
|
+
Delivery into the bounded Stream is the ordered-consumer acceptance boundary. If durable completion must mean that a business Effect succeeded—not merely that the event entered the Stream—use `runJetStreamProcessor()` and its explicit-ack consumer.
|
|
97
|
+
|
|
98
|
+
`maxBufferedMessages` or `maxBufferedBytes` controls the nats.js pull buffer. `bufferSize` controls the second, decoded Effect queue. Both bounds remain explicit.
|
|
99
|
+
|
|
100
|
+
## Atomic replay materialization
|
|
101
|
+
|
|
102
|
+
`materializeJetStream()` avoids rendering every intermediate historical state. It emits an initial `replaying` state, silently reduces bounded replay batches, emits one complete `live` state at catch-up, and then emits microbatched live updates:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { Effect, Stream } from 'effect'
|
|
106
|
+
|
|
107
|
+
import { materializeJetStream } from '@natsail/effect'
|
|
108
|
+
|
|
109
|
+
const conversation = materializeJetStream(
|
|
110
|
+
{
|
|
111
|
+
stream: 'CHAT',
|
|
112
|
+
filter: `chat.room.${roomId}`,
|
|
113
|
+
start: 'all',
|
|
114
|
+
codec: chatEventCodec,
|
|
115
|
+
maxBufferedMessages: 64,
|
|
116
|
+
recovery: {},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
initial: () => emptyConversation(),
|
|
120
|
+
reduceBatch: (state, deliveries) =>
|
|
121
|
+
Effect.sync(() => reduceConversationBatch(state, deliveries)),
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
bufferSize: 256,
|
|
125
|
+
batchSize: 256,
|
|
126
|
+
batchWithin: '16 millis',
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
const render = conversation.pipe(Stream.runForEach((snapshot) => updateConversation(snapshot.data)))
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
`reduceBatch` is a native Effect. Its typed error and service requirements remain in the returned Stream type. Package-owned recovery can resume admitted events while the current materialized state remains alive. A fresh materializer rebuilds from replay, so `resume` is rejected until a state store can commit the materialized state and cursor atomically.
|
|
134
|
+
|
|
135
|
+
## Explicit-ack processing
|
|
136
|
+
|
|
137
|
+
Use `runJetStreamProcessor()` for durable work queues or other named consumer workflows:
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { runJetStreamProcessor } from '@natsail/effect'
|
|
141
|
+
|
|
142
|
+
const worker = runJetStreamProcessor(
|
|
143
|
+
{
|
|
144
|
+
stream: 'JOBS',
|
|
145
|
+
consumer: { mode: 'ensure', name: 'email-workers' },
|
|
146
|
+
filter: 'jobs.email',
|
|
147
|
+
start: 'all',
|
|
148
|
+
codec: emailJobCodec,
|
|
149
|
+
maxAckPending: 32,
|
|
150
|
+
recovery: { delayMs: 500 },
|
|
151
|
+
},
|
|
152
|
+
(delivery) => sendEmail(delivery.value)
|
|
153
|
+
)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The package waits for the handler Effect before the underlying processor acknowledges the message. Package-owned recovery reopens the named consumer after infrastructure failures while preserving its acknowledgement floor. Typed application failures remain terminal typed Effect failures; consumer-contract and final processor lifecycle failures use `NatsailJetStreamError`.
|
|
157
|
+
|
|
158
|
+
## Service and request/reply
|
|
159
|
+
|
|
160
|
+
The same scoped Layer supplies the `Natsail` service for publish, request/reply, reconnect, connection inspection, and escape hatches:
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
const request = Effect.gen(function* () {
|
|
26
164
|
const nats = yield* Natsail
|
|
27
165
|
|
|
28
|
-
yield* nats.publish('
|
|
166
|
+
yield* nats.publish('jobs.created', encodedJob)
|
|
29
167
|
|
|
30
|
-
yield* nats
|
|
31
|
-
.
|
|
32
|
-
|
|
168
|
+
return yield* nats.request({
|
|
169
|
+
subject: 'jobs.lookup',
|
|
170
|
+
data: encodedRequest,
|
|
171
|
+
codec: natsCodecs.json<Job>(),
|
|
172
|
+
})
|
|
33
173
|
}).pipe(Effect.provide(NatsLive))
|
|
34
174
|
```
|
|
35
175
|
|
|
36
|
-
`makeNatsailScopedLayer()` closes the session registry and runtime when the Layer scope exits
|
|
176
|
+
An interrupted request aborts the underlying NATS request. `makeNatsailScopedLayer()` closes the session registry and runtime when the Layer scope exits. `makeNatsailLayer()` supplies application-owned objects without closing them.
|
|
177
|
+
|
|
178
|
+
## Shared sessions
|
|
37
179
|
|
|
38
|
-
`sessionSnapshots()` and `sessionValues()`
|
|
180
|
+
`sessionSnapshots()` and `sessionValues()` remain available for application state that should share one validated `SessionRegistry` source. Each Effect consumer retains one registry handle, and the handle is released whenever the Stream completes, fails, or is interrupted.
|
|
39
181
|
|
|
40
|
-
Session Streams queue at most 32 snapshots by default. Overflow fails with `NatsailStreamBufferOverflowError
|
|
182
|
+
Session Streams queue at most 32 snapshots by default. Overflow fails with `NatsailStreamBufferOverflowError`; applications may explicitly choose `dropping`, `sliding`, a different bound, or `unbounded`.
|
|
41
183
|
|
|
42
|
-
|
|
184
|
+
Session snapshot buffering happens after the registry updates. Use direct subject Streams when downstream Effect demand must reach the NATSail delivery handler.
|
|
43
185
|
|
|
44
|
-
The service exposes `runtime` and `sessions`
|
|
186
|
+
NATSail continues to own connection, authentication, ordered-consumer recovery, and checkpoints. The Effect adapter does not create a second connection or retry loop. The service exposes `runtime` and `sessions` for JetStream manager calls and other advanced nats.js or custom session operations without leaving the Layer-owned lifecycle.
|
|
45
187
|
|
|
46
188
|
## License
|
|
47
189
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Context, Effect, Layer, Stream } from 'effect';
|
|
2
|
-
import type {
|
|
1
|
+
import { Cause, Context, Effect, Layer, Stream } from 'effect';
|
|
2
|
+
import type { Duration } from 'effect';
|
|
3
|
+
import type { CoreRequestOptions, CoreSubscriptionOptions, NatsConnection, NatsRuntime, NatsRuntimeEvent, NatsRuntimeReconnectOptions, NatsRuntimeStatusEvent } from '@natsail/core';
|
|
4
|
+
import { type JetStreamCatchUp, type JetStreamDelivery, type JetStreamProcessingDelivery, type JetStreamProcessorOptions, type ReducingJetStreamSessionOptions, type JetStreamSessionSourceOptions, type StreamCursor } from '@natsail/jetstream';
|
|
3
5
|
import type { SessionDefinition, SessionRegistry, SessionRegistryEvent, SessionSnapshot } from '@natsail/session';
|
|
4
6
|
export type NatsailOperation = 'connection' | 'publish' | 'reconnect' | 'request' | 'restart-session' | 'runtime-events' | 'session-events';
|
|
5
|
-
declare const NatsailOperationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) =>
|
|
7
|
+
declare const NatsailOperationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
6
8
|
readonly _tag: "NatsailOperationError";
|
|
7
9
|
} & Readonly<A>;
|
|
8
10
|
export declare class NatsailOperationError extends NatsailOperationError_base<{
|
|
@@ -12,7 +14,7 @@ export declare class NatsailOperationError extends NatsailOperationError_base<{
|
|
|
12
14
|
}> {
|
|
13
15
|
}
|
|
14
16
|
export type NatsailSessionErrorStage = 'acquire' | 'source';
|
|
15
|
-
declare const NatsailSessionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) =>
|
|
17
|
+
declare const NatsailSessionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
16
18
|
readonly _tag: "NatsailSessionError";
|
|
17
19
|
} & Readonly<A>;
|
|
18
20
|
export declare class NatsailSessionError extends NatsailSessionError_base<{
|
|
@@ -22,7 +24,7 @@ export declare class NatsailSessionError extends NatsailSessionError_base<{
|
|
|
22
24
|
readonly cause: unknown;
|
|
23
25
|
}> {
|
|
24
26
|
}
|
|
25
|
-
declare const NatsailStreamBufferOverflowError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) =>
|
|
27
|
+
declare const NatsailStreamBufferOverflowError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
26
28
|
readonly _tag: "NatsailStreamBufferOverflowError";
|
|
27
29
|
} & Readonly<A>;
|
|
28
30
|
export declare class NatsailStreamBufferOverflowError extends NatsailStreamBufferOverflowError_base<{
|
|
@@ -33,6 +35,77 @@ export declare class NatsailStreamBufferOverflowError extends NatsailStreamBuffe
|
|
|
33
35
|
}
|
|
34
36
|
export type NatsailSessionStreamError = NatsailSessionError | NatsailStreamBufferOverflowError;
|
|
35
37
|
export type NatsailStreamOverflowStrategy = 'error' | 'dropping' | 'sliding';
|
|
38
|
+
export type NatsailSubjectStreamOverflowStrategy = NatsailStreamOverflowStrategy | 'suspend';
|
|
39
|
+
export type NatsailSubjectErrorStage = 'subscribe' | 'ready' | 'source';
|
|
40
|
+
declare const NatsailSubjectError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
41
|
+
readonly _tag: "NatsailSubjectError";
|
|
42
|
+
} & Readonly<A>;
|
|
43
|
+
export declare class NatsailSubjectError extends NatsailSubjectError_base<{
|
|
44
|
+
readonly subject: string;
|
|
45
|
+
readonly queue?: string;
|
|
46
|
+
readonly stage: NatsailSubjectErrorStage;
|
|
47
|
+
readonly message: string;
|
|
48
|
+
readonly cause: unknown;
|
|
49
|
+
}> {
|
|
50
|
+
}
|
|
51
|
+
export type NatsailSubjectStreamError = NatsailSubjectError | NatsailStreamBufferOverflowError;
|
|
52
|
+
export interface NatsailSubjectStreamOptions {
|
|
53
|
+
/** Maximum decoded messages waiting for the Effect consumer. Defaults to 32. */
|
|
54
|
+
readonly bufferSize?: number;
|
|
55
|
+
/**
|
|
56
|
+
* `suspend` applies local backpressure and is the default. `error` fails
|
|
57
|
+
* instead of losing messages. `dropping` and `sliding` are explicit
|
|
58
|
+
* best-effort policies for ephemeral subjects.
|
|
59
|
+
*/
|
|
60
|
+
readonly overflowStrategy?: NatsailSubjectStreamOverflowStrategy;
|
|
61
|
+
}
|
|
62
|
+
export type NatsailJetStreamErrorStage = 'subscribe' | 'ready' | 'catch-up' | 'source' | 'processor';
|
|
63
|
+
declare const NatsailJetStreamError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
64
|
+
readonly _tag: "NatsailJetStreamError";
|
|
65
|
+
} & Readonly<A>;
|
|
66
|
+
export declare class NatsailJetStreamError extends NatsailJetStreamError_base<{
|
|
67
|
+
readonly stream: string;
|
|
68
|
+
readonly filter: string | readonly string[];
|
|
69
|
+
readonly stage: NatsailJetStreamErrorStage;
|
|
70
|
+
readonly message: string;
|
|
71
|
+
readonly cause: unknown;
|
|
72
|
+
}> {
|
|
73
|
+
}
|
|
74
|
+
export type NatsailJetStreamStreamError = NatsailJetStreamError | NatsailStreamBufferOverflowError;
|
|
75
|
+
export interface NatsailJetStreamStreamOptions {
|
|
76
|
+
/** Maximum deliveries and control events waiting for Effect. Defaults to 32. */
|
|
77
|
+
readonly bufferSize?: number;
|
|
78
|
+
/** Reliable streams suspend by default. `error` terminates before a delivery is lost. */
|
|
79
|
+
readonly overflowStrategy?: 'suspend' | 'error';
|
|
80
|
+
}
|
|
81
|
+
export type NatsailJetStreamEvent<T> = {
|
|
82
|
+
readonly type: 'delivery';
|
|
83
|
+
readonly delivery: JetStreamDelivery<T>;
|
|
84
|
+
} | {
|
|
85
|
+
readonly type: 'caught-up';
|
|
86
|
+
readonly catchUp: JetStreamCatchUp;
|
|
87
|
+
};
|
|
88
|
+
export interface NatsailJetStreamMaterializer<Value, State, E = never, R = never> {
|
|
89
|
+
readonly initial: () => State;
|
|
90
|
+
/** Called serially with one non-empty bounded batch. */
|
|
91
|
+
readonly reduceBatch: (state: State, deliveries: readonly JetStreamDelivery<Value>[]) => Effect.Effect<State, E, R>;
|
|
92
|
+
}
|
|
93
|
+
/** A fresh materializer must rebuild state and therefore cannot resume only an event cursor. */
|
|
94
|
+
export type NatsailJetStreamMaterializeSourceOptions<T> = ReducingJetStreamSessionOptions<T>;
|
|
95
|
+
export interface NatsailJetStreamMaterializeOptions extends NatsailJetStreamStreamOptions {
|
|
96
|
+
/** Maximum deliveries reduced in one application call. Defaults to 256. */
|
|
97
|
+
readonly batchSize?: number;
|
|
98
|
+
/** Maximum wait before a partial live batch is reduced. Defaults to 16ms. */
|
|
99
|
+
readonly batchWithin?: Duration.Input;
|
|
100
|
+
}
|
|
101
|
+
export interface NatsailJetStreamMaterializedState<State> {
|
|
102
|
+
readonly phase: 'replaying' | 'live';
|
|
103
|
+
readonly data: State;
|
|
104
|
+
readonly cursor?: StreamCursor;
|
|
105
|
+
readonly replay: {
|
|
106
|
+
readonly delivered: number;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
36
109
|
export interface NatsailSessionStreamOptions {
|
|
37
110
|
/** Maximum queued snapshots. Defaults to 32. Use `unbounded` only deliberately. */
|
|
38
111
|
readonly bufferSize?: number | 'unbounded';
|
|
@@ -57,16 +130,48 @@ export interface NatsailService {
|
|
|
57
130
|
reconnect(options?: NatsRuntimeReconnectOptions): Effect.Effect<NatsConnection, NatsailOperationError>;
|
|
58
131
|
publish(subject: string, data?: Parameters<NatsRuntime['publish']>[1], options?: Parameters<NatsRuntime['publish']>[2]): Effect.Effect<void, NatsailOperationError>;
|
|
59
132
|
request<T>(options: CoreRequestOptions<T>): Effect.Effect<T, NatsailOperationError>;
|
|
133
|
+
/** Creates a cold, scoped Stream over one ephemeral Core NATS subscription. */
|
|
134
|
+
subscribe<T>(options: CoreSubscriptionOptions<T>, streamOptions?: NatsailSubjectStreamOptions): Stream.Stream<T, NatsailSubjectStreamError>;
|
|
135
|
+
/** Ordered replay plus live delivery with an explicit caught-up event. */
|
|
136
|
+
jetStreamEvents<T>(options: JetStreamSessionSourceOptions<T>, streamOptions?: NatsailJetStreamStreamOptions): Stream.Stream<NatsailJetStreamEvent<T>, NatsailJetStreamStreamError>;
|
|
137
|
+
/** Ordered JetStream deliveries without the caught-up control event. */
|
|
138
|
+
jetStreamDeliveries<T>(options: JetStreamSessionSourceOptions<T>, streamOptions?: NatsailJetStreamStreamOptions): Stream.Stream<JetStreamDelivery<T>, NatsailJetStreamStreamError>;
|
|
139
|
+
/** Rebuilds replay silently, emits once at catch-up, then microbatches live state. */
|
|
140
|
+
materializeJetStream<Value, State, E, R>(options: NatsailJetStreamMaterializeSourceOptions<Value>, materializer: NatsailJetStreamMaterializer<Value, State, E, R>, streamOptions?: NatsailJetStreamMaterializeOptions): Stream.Stream<NatsailJetStreamMaterializedState<State>, NatsailJetStreamStreamError | E, R>;
|
|
141
|
+
/** Runs an explicit-ack processor and acknowledges only after the Effect succeeds. */
|
|
142
|
+
runJetStreamProcessor<T, E, R>(options: JetStreamProcessorOptions<T>, handler: (delivery: JetStreamProcessingDelivery<T>) => Effect.Effect<void, E, R>): Effect.Effect<void, NatsailJetStreamError | E, R>;
|
|
60
143
|
restartSession(key: string): Effect.Effect<void, NatsailOperationError>;
|
|
61
144
|
sessionSnapshots<T>(definition: SessionDefinition<T>, options?: NatsailSessionStreamOptions): Stream.Stream<SessionSnapshot<T>, NatsailSessionStreamError>;
|
|
62
145
|
sessionValues<T>(definition: SessionDefinition<T>, options?: NatsailSessionStreamOptions): Stream.Stream<T, NatsailSessionStreamError>;
|
|
63
146
|
}
|
|
64
|
-
declare const Natsail_base: Context.
|
|
147
|
+
declare const Natsail_base: Context.ServiceClass<Natsail, "@natsail/effect/Natsail", NatsailService>;
|
|
65
148
|
/** Context service supplied by a NATSail Effect Layer. */
|
|
66
149
|
export declare class Natsail extends Natsail_base {
|
|
67
150
|
}
|
|
68
151
|
/** Creates a service over application-owned runtime and registry objects. */
|
|
69
152
|
export declare function makeNatsail(resource: NatsailResource): NatsailService;
|
|
153
|
+
/**
|
|
154
|
+
* Creates a cold Core NATS subject Stream that reads its runtime from the
|
|
155
|
+
* `Natsail` service. Each consumer owns one scoped subscription.
|
|
156
|
+
*/
|
|
157
|
+
export declare function subscribe<T>(options: CoreSubscriptionOptions<T>, streamOptions?: NatsailSubjectStreamOptions): Stream.Stream<T, NatsailSubjectStreamError, Natsail>;
|
|
158
|
+
/**
|
|
159
|
+
* Creates a cold ordered JetStream Stream with an explicit replay-complete
|
|
160
|
+
* event. NATSail remains the single owner of recovery and checkpoints.
|
|
161
|
+
*/
|
|
162
|
+
export declare function jetStreamEvents<T>(options: JetStreamSessionSourceOptions<T>, streamOptions?: NatsailJetStreamStreamOptions): Stream.Stream<NatsailJetStreamEvent<T>, NatsailJetStreamStreamError, Natsail>;
|
|
163
|
+
/** Creates a cold ordered JetStream Stream containing delivery values only. */
|
|
164
|
+
export declare function jetStreamDeliveries<T>(options: JetStreamSessionSourceOptions<T>, streamOptions?: NatsailJetStreamStreamOptions): Stream.Stream<JetStreamDelivery<T>, NatsailJetStreamStreamError, Natsail>;
|
|
165
|
+
/**
|
|
166
|
+
* Rebuilds historical state without rendering every intermediate state, emits
|
|
167
|
+
* one atomic live snapshot at catch-up, and then emits microbatched updates.
|
|
168
|
+
*/
|
|
169
|
+
export declare function materializeJetStream<Value, State, E, R>(options: NatsailJetStreamMaterializeSourceOptions<Value>, materializer: NatsailJetStreamMaterializer<Value, State, E, R>, streamOptions?: NatsailJetStreamMaterializeOptions): Stream.Stream<NatsailJetStreamMaterializedState<State>, NatsailJetStreamStreamError | E, Natsail | R>;
|
|
170
|
+
/**
|
|
171
|
+
* Runs a named explicit-ack JetStream processor. The message is acknowledged
|
|
172
|
+
* only after the supplied Effect completes successfully.
|
|
173
|
+
*/
|
|
174
|
+
export declare function runJetStreamProcessor<T, E, R>(options: JetStreamProcessorOptions<T>, handler: (delivery: JetStreamProcessingDelivery<T>) => Effect.Effect<void, E, R>): Effect.Effect<void, NatsailJetStreamError | E, Natsail | R>;
|
|
70
175
|
/** Supplies an existing resource without taking ownership of it. */
|
|
71
176
|
export declare function makeNatsailLayer(resource: NatsailResource): Layer.Layer<Natsail>;
|
|
72
177
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,29 @@
|
|
|
1
|
-
import { Context, Data, Effect, Layer, Option, Stream } from 'effect';
|
|
1
|
+
import { Cause, Context, Data, Effect, Exit, Layer, Option, Queue, Stream } from 'effect';
|
|
2
|
+
import { createJetStreamSessionSource, processJetStream, } from '@natsail/jetstream';
|
|
2
3
|
export class NatsailOperationError extends Data.TaggedError('NatsailOperationError') {
|
|
3
4
|
}
|
|
4
5
|
export class NatsailSessionError extends Data.TaggedError('NatsailSessionError') {
|
|
5
6
|
}
|
|
6
7
|
export class NatsailStreamBufferOverflowError extends Data.TaggedError('NatsailStreamBufferOverflowError') {
|
|
7
8
|
}
|
|
9
|
+
export class NatsailSubjectError extends Data.TaggedError('NatsailSubjectError') {
|
|
10
|
+
}
|
|
11
|
+
export class NatsailJetStreamError extends Data.TaggedError('NatsailJetStreamError') {
|
|
12
|
+
}
|
|
8
13
|
/** Context service supplied by a NATSail Effect Layer. */
|
|
9
|
-
export class Natsail extends Context.
|
|
14
|
+
export class Natsail extends Context.Service()('@natsail/effect/Natsail') {
|
|
15
|
+
}
|
|
16
|
+
class JetStreamEffectFailure {
|
|
17
|
+
error;
|
|
18
|
+
constructor(error) {
|
|
19
|
+
this.error = error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
class JetStreamEffectCause {
|
|
23
|
+
cause;
|
|
24
|
+
constructor(cause) {
|
|
25
|
+
this.cause = cause;
|
|
26
|
+
}
|
|
10
27
|
}
|
|
11
28
|
const DEFAULT_STREAM_BUFFER_SIZE = 32;
|
|
12
29
|
function describeCause(cause) {
|
|
@@ -42,7 +59,7 @@ function resolveStreamOptions(options = {}) {
|
|
|
42
59
|
return {
|
|
43
60
|
bufferSize,
|
|
44
61
|
overflowStrategy,
|
|
45
|
-
|
|
62
|
+
callbackOptions: bufferSize === 'unbounded'
|
|
46
63
|
? { bufferSize: 'unbounded' }
|
|
47
64
|
: {
|
|
48
65
|
bufferSize,
|
|
@@ -50,9 +67,272 @@ function resolveStreamOptions(options = {}) {
|
|
|
50
67
|
},
|
|
51
68
|
};
|
|
52
69
|
}
|
|
70
|
+
function resolveSubjectStreamOptions(options = {}) {
|
|
71
|
+
const bufferSize = options.bufferSize ?? DEFAULT_STREAM_BUFFER_SIZE;
|
|
72
|
+
const overflowStrategy = options.overflowStrategy ?? 'suspend';
|
|
73
|
+
if (!Number.isSafeInteger(bufferSize) || bufferSize <= 0) {
|
|
74
|
+
throw new TypeError('NATSail Effect subject bufferSize must be a positive safe integer');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
bufferSize,
|
|
78
|
+
overflowStrategy,
|
|
79
|
+
callbackStrategy: overflowStrategy === 'error' ? 'dropping' : overflowStrategy,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function resolveJetStreamStreamOptions(options = {}) {
|
|
83
|
+
const bufferSize = options.bufferSize ?? DEFAULT_STREAM_BUFFER_SIZE;
|
|
84
|
+
const overflowStrategy = options.overflowStrategy ?? 'suspend';
|
|
85
|
+
if (!Number.isSafeInteger(bufferSize) || bufferSize <= 0) {
|
|
86
|
+
throw new TypeError('NATSail Effect JetStream bufferSize must be a positive safe integer');
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
bufferSize,
|
|
90
|
+
overflowStrategy,
|
|
91
|
+
callbackStrategy: overflowStrategy === 'error' ? 'dropping' : 'suspend',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function subjectError(options, stage, cause) {
|
|
95
|
+
return new NatsailSubjectError({
|
|
96
|
+
subject: options.subject,
|
|
97
|
+
...(options.queue === undefined ? {} : { queue: options.queue }),
|
|
98
|
+
stage,
|
|
99
|
+
cause,
|
|
100
|
+
message: `NATSail subject ${options.subject} ${stage} failed: ${describeCause(cause)}`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function jetStreamError(options, stage, cause) {
|
|
104
|
+
return new NatsailJetStreamError({
|
|
105
|
+
stream: options.stream,
|
|
106
|
+
filter: options.filter,
|
|
107
|
+
stage,
|
|
108
|
+
cause,
|
|
109
|
+
message: `NATSail JetStream ${options.stream} ${stage} failed: ${describeCause(cause)}`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function createSubjectStream(runtime, options, streamOptions) {
|
|
113
|
+
const resolved = resolveSubjectStreamOptions(streamOptions);
|
|
114
|
+
const streamName = `subject:${options.subject}`;
|
|
115
|
+
return Stream.callback((queue) => Effect.gen(function* () {
|
|
116
|
+
const effectSignal = yield* Effect.abortSignal;
|
|
117
|
+
const signal = options.signal
|
|
118
|
+
? AbortSignal.any([options.signal, effectSignal])
|
|
119
|
+
: effectSignal;
|
|
120
|
+
const subscriptionOptions = { ...options, signal };
|
|
121
|
+
const lease = yield* Effect.acquireRelease(Effect.try({
|
|
122
|
+
try: () => runtime.subscribe(subscriptionOptions, async (value) => {
|
|
123
|
+
const accepted = await Effect.runPromise(Queue.offer(queue, value));
|
|
124
|
+
if (!accepted &&
|
|
125
|
+
resolved.overflowStrategy === 'error' &&
|
|
126
|
+
queue.state._tag === 'Open') {
|
|
127
|
+
const overflow = new NatsailStreamBufferOverflowError({
|
|
128
|
+
stream: streamName,
|
|
129
|
+
capacity: resolved.bufferSize,
|
|
130
|
+
message: `NATSail subject ${options.subject} exceeded its ${resolved.bufferSize}-message Effect buffer`,
|
|
131
|
+
});
|
|
132
|
+
await Effect.runPromise(Queue.fail(queue, overflow));
|
|
133
|
+
throw overflow;
|
|
134
|
+
}
|
|
135
|
+
}),
|
|
136
|
+
catch: (cause) => subjectError(options, 'subscribe', cause),
|
|
137
|
+
}), (active) => Effect.promise(() => active.close().catch(() => undefined)));
|
|
138
|
+
yield* Effect.tryPromise({
|
|
139
|
+
try: () => lease.ready,
|
|
140
|
+
catch: (cause) => subjectError(options, 'ready', cause),
|
|
141
|
+
});
|
|
142
|
+
yield* Effect.tryPromise({
|
|
143
|
+
try: () => lease.closed,
|
|
144
|
+
catch: (cause) => cause instanceof NatsailStreamBufferOverflowError
|
|
145
|
+
? cause
|
|
146
|
+
: subjectError(options, 'source', cause),
|
|
147
|
+
});
|
|
148
|
+
}).pipe(Effect.matchEffect({
|
|
149
|
+
onFailure: (error) => Queue.fail(queue, error),
|
|
150
|
+
onSuccess: () => Queue.end(queue),
|
|
151
|
+
})), {
|
|
152
|
+
bufferSize: resolved.bufferSize,
|
|
153
|
+
strategy: resolved.callbackStrategy,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function createJetStreamEventStream(runtime, options, streamOptions) {
|
|
157
|
+
const resolved = resolveJetStreamStreamOptions(streamOptions);
|
|
158
|
+
const streamName = `jetstream:${options.stream}`;
|
|
159
|
+
return Stream.callback((queue) => Effect.gen(function* () {
|
|
160
|
+
const effectSignal = yield* Effect.abortSignal;
|
|
161
|
+
const signal = options.signal
|
|
162
|
+
? AbortSignal.any([options.signal, effectSignal])
|
|
163
|
+
: effectSignal;
|
|
164
|
+
let resolveCatchUpMarker;
|
|
165
|
+
let rejectCatchUpMarker;
|
|
166
|
+
const catchUpMarkerEnqueued = new Promise((resolve, reject) => {
|
|
167
|
+
resolveCatchUpMarker = resolve;
|
|
168
|
+
rejectCatchUpMarker = reject;
|
|
169
|
+
});
|
|
170
|
+
void catchUpMarkerEnqueued.catch(() => undefined);
|
|
171
|
+
const offerEvent = async (event) => {
|
|
172
|
+
const accepted = await Effect.runPromise(Queue.offer(queue, event));
|
|
173
|
+
if (!accepted && resolved.overflowStrategy === 'error' && queue.state._tag === 'Open') {
|
|
174
|
+
const overflow = new NatsailStreamBufferOverflowError({
|
|
175
|
+
stream: streamName,
|
|
176
|
+
capacity: resolved.bufferSize,
|
|
177
|
+
message: `NATSail JetStream ${options.stream} exceeded its ${resolved.bufferSize}-event Effect buffer`,
|
|
178
|
+
});
|
|
179
|
+
await Effect.runPromise(Queue.fail(queue, overflow));
|
|
180
|
+
throw overflow;
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
const lease = yield* Effect.acquireRelease(Effect.try({
|
|
184
|
+
try: () => {
|
|
185
|
+
const source = createJetStreamSessionSource(runtime, { ...options, signal });
|
|
186
|
+
return source(async (delivery) => {
|
|
187
|
+
if (delivery.replay === 'live')
|
|
188
|
+
await catchUpMarkerEnqueued;
|
|
189
|
+
await offerEvent({ type: 'delivery', delivery });
|
|
190
|
+
});
|
|
191
|
+
},
|
|
192
|
+
catch: (cause) => jetStreamError(options, 'subscribe', cause),
|
|
193
|
+
}), (active) => Effect.promise(() => active.close().catch(() => undefined)));
|
|
194
|
+
yield* Effect.tryPromise({
|
|
195
|
+
try: () => lease.ready,
|
|
196
|
+
catch: (cause) => jetStreamError(options, 'ready', cause),
|
|
197
|
+
});
|
|
198
|
+
const catchUpEvent = lease.caughtUp.then(async (catchUp) => {
|
|
199
|
+
await offerEvent({ type: 'caught-up', catchUp });
|
|
200
|
+
return catchUp;
|
|
201
|
+
});
|
|
202
|
+
void catchUpEvent.then(resolveCatchUpMarker, rejectCatchUpMarker);
|
|
203
|
+
yield* Effect.tryPromise({
|
|
204
|
+
try: () => catchUpEvent,
|
|
205
|
+
catch: (cause) => cause instanceof NatsailStreamBufferOverflowError
|
|
206
|
+
? cause
|
|
207
|
+
: jetStreamError(options, 'catch-up', cause),
|
|
208
|
+
});
|
|
209
|
+
yield* Effect.tryPromise({
|
|
210
|
+
try: () => lease.closed,
|
|
211
|
+
catch: (cause) => cause instanceof NatsailStreamBufferOverflowError
|
|
212
|
+
? cause
|
|
213
|
+
: jetStreamError(options, 'source', cause),
|
|
214
|
+
});
|
|
215
|
+
}).pipe(Effect.matchEffect({
|
|
216
|
+
onFailure: (error) => Queue.fail(queue, error),
|
|
217
|
+
onSuccess: () => Queue.end(queue),
|
|
218
|
+
})), {
|
|
219
|
+
bufferSize: resolved.bufferSize,
|
|
220
|
+
strategy: resolved.callbackStrategy,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
function createJetStreamDeliveryStream(runtime, options, streamOptions) {
|
|
224
|
+
return createJetStreamEventStream(runtime, options, streamOptions).pipe(Stream.filter((event) => event.type === 'delivery'), Stream.map((event) => event.delivery));
|
|
225
|
+
}
|
|
226
|
+
function createJetStreamMaterializedStream(runtime, options, materializer, streamOptions = {}) {
|
|
227
|
+
const batchSize = streamOptions.batchSize ?? 256;
|
|
228
|
+
const batchWithin = streamOptions.batchWithin ?? '16 millis';
|
|
229
|
+
if (options.resume) {
|
|
230
|
+
throw new TypeError('A JetStream materializer cannot resume an event cursor without restoring matching materialized state');
|
|
231
|
+
}
|
|
232
|
+
if (!Number.isSafeInteger(batchSize) || batchSize <= 0) {
|
|
233
|
+
throw new TypeError('NATSail Effect JetStream batchSize must be a positive safe integer');
|
|
234
|
+
}
|
|
235
|
+
return Stream.suspend(() => {
|
|
236
|
+
const initial = materializer.initial();
|
|
237
|
+
const initialAccumulator = {
|
|
238
|
+
phase: 'replaying',
|
|
239
|
+
data: initial,
|
|
240
|
+
replayDelivered: 0,
|
|
241
|
+
};
|
|
242
|
+
const initialSnapshot = {
|
|
243
|
+
phase: 'replaying',
|
|
244
|
+
data: initial,
|
|
245
|
+
replay: { delivered: 0 },
|
|
246
|
+
};
|
|
247
|
+
const updates = createJetStreamEventStream(runtime, options, streamOptions).pipe(Stream.groupedWithin(batchSize, batchWithin), Stream.mapAccumEffect(() => initialAccumulator, (previous, events) => Effect.gen(function* () {
|
|
248
|
+
let data = previous.data;
|
|
249
|
+
let phase = previous.phase;
|
|
250
|
+
let cursor = previous.cursor;
|
|
251
|
+
let replayDelivered = previous.replayDelivered;
|
|
252
|
+
let pending = [];
|
|
253
|
+
const snapshots = [];
|
|
254
|
+
const snapshot = () => ({
|
|
255
|
+
phase: 'live',
|
|
256
|
+
data,
|
|
257
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
258
|
+
replay: { delivered: replayDelivered },
|
|
259
|
+
});
|
|
260
|
+
const reducePending = () => {
|
|
261
|
+
if (pending.length === 0)
|
|
262
|
+
return Effect.void;
|
|
263
|
+
const deliveries = pending;
|
|
264
|
+
pending = [];
|
|
265
|
+
return materializer.reduceBatch(data, deliveries).pipe(Effect.tap((nextData) => Effect.sync(() => {
|
|
266
|
+
data = nextData;
|
|
267
|
+
cursor = deliveries[deliveries.length - 1]?.cursor ?? cursor;
|
|
268
|
+
if (phase === 'replaying')
|
|
269
|
+
replayDelivered += deliveries.length;
|
|
270
|
+
})), Effect.asVoid);
|
|
271
|
+
};
|
|
272
|
+
for (const event of events) {
|
|
273
|
+
if (event.type === 'delivery') {
|
|
274
|
+
pending.push(event.delivery);
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
yield* reducePending();
|
|
278
|
+
phase = 'live';
|
|
279
|
+
replayDelivered = event.catchUp.delivered;
|
|
280
|
+
cursor = event.catchUp.cursor ?? cursor;
|
|
281
|
+
snapshots.push(snapshot());
|
|
282
|
+
}
|
|
283
|
+
const hasDeliveriesAfterLastSnapshot = pending.length > 0;
|
|
284
|
+
yield* reducePending();
|
|
285
|
+
if (phase === 'live' && hasDeliveriesAfterLastSnapshot)
|
|
286
|
+
snapshots.push(snapshot());
|
|
287
|
+
const next = {
|
|
288
|
+
phase,
|
|
289
|
+
data,
|
|
290
|
+
replayDelivered,
|
|
291
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
292
|
+
};
|
|
293
|
+
return [next, snapshots];
|
|
294
|
+
})));
|
|
295
|
+
return Stream.concat(Stream.succeed(initialSnapshot), updates);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
function runJetStreamProcessorEffect(runtime, options, handler) {
|
|
299
|
+
return Effect.scoped(Effect.gen(function* () {
|
|
300
|
+
const context = yield* Effect.context();
|
|
301
|
+
const effectSignal = yield* Effect.abortSignal;
|
|
302
|
+
const signal = options.signal ? AbortSignal.any([options.signal, effectSignal]) : effectSignal;
|
|
303
|
+
const processorOptions = { ...options, signal };
|
|
304
|
+
const lease = yield* Effect.acquireRelease(Effect.try({
|
|
305
|
+
try: () => processJetStream(runtime, processorOptions, async (delivery) => {
|
|
306
|
+
const exit = await Effect.runPromiseExitWith(context)(handler(delivery), { signal });
|
|
307
|
+
if (Exit.isFailure(exit)) {
|
|
308
|
+
const expected = Cause.findErrorOption(exit.cause);
|
|
309
|
+
if (Option.isSome(expected))
|
|
310
|
+
throw new JetStreamEffectFailure(expected.value);
|
|
311
|
+
throw new JetStreamEffectCause(exit.cause);
|
|
312
|
+
}
|
|
313
|
+
}),
|
|
314
|
+
catch: (cause) => jetStreamError(options, 'processor', cause),
|
|
315
|
+
}), (active) => Effect.promise(() => active.close().catch(() => undefined)));
|
|
316
|
+
yield* Effect.tryPromise({
|
|
317
|
+
try: () => lease.ready,
|
|
318
|
+
catch: (cause) => jetStreamError(options, 'processor', cause),
|
|
319
|
+
});
|
|
320
|
+
yield* Effect.tryPromise({
|
|
321
|
+
try: () => lease.closed,
|
|
322
|
+
catch: (cause) => cause,
|
|
323
|
+
}).pipe(Effect.catch((cause) => {
|
|
324
|
+
if (cause instanceof JetStreamEffectCause)
|
|
325
|
+
return Effect.failCause(cause.cause);
|
|
326
|
+
const error = cause instanceof JetStreamEffectFailure
|
|
327
|
+
? cause.error
|
|
328
|
+
: jetStreamError(options, 'processor', cause);
|
|
329
|
+
return Effect.fail(error);
|
|
330
|
+
}));
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
53
333
|
function createSessionSnapshotStream(sessions, definition, options) {
|
|
54
334
|
const resolved = resolveStreamOptions(options);
|
|
55
|
-
return Stream.
|
|
335
|
+
return Stream.callback((queue) => Effect.gen(function* () {
|
|
56
336
|
const handle = yield* Effect.acquireRelease(Effect.try({
|
|
57
337
|
try: () => sessions.acquire(definition),
|
|
58
338
|
catch: (cause) => sessionError(definition.key, 'acquire', cause),
|
|
@@ -62,30 +342,35 @@ function createSessionSnapshotStream(sessions, definition, options) {
|
|
|
62
342
|
if (terminal)
|
|
63
343
|
return;
|
|
64
344
|
const snapshot = handle.getSnapshot();
|
|
65
|
-
const accepted =
|
|
345
|
+
const accepted = Queue.offerUnsafe(queue, snapshot);
|
|
66
346
|
if (!accepted &&
|
|
67
347
|
resolved.bufferSize !== 'unbounded' &&
|
|
68
348
|
resolved.overflowStrategy === 'error') {
|
|
69
349
|
terminal = true;
|
|
70
|
-
|
|
350
|
+
Queue.failCauseUnsafe(queue, Cause.fail(new NatsailStreamBufferOverflowError({
|
|
71
351
|
stream: `session:${definition.key}`,
|
|
72
352
|
capacity: resolved.bufferSize,
|
|
73
353
|
message: `NATSail session ${definition.key} exceeded its ${resolved.bufferSize}-snapshot Effect buffer`,
|
|
74
|
-
}));
|
|
354
|
+
})));
|
|
75
355
|
return;
|
|
76
356
|
}
|
|
77
357
|
if (snapshot.phase === 'error') {
|
|
78
358
|
terminal = true;
|
|
79
|
-
|
|
359
|
+
Queue.failCauseUnsafe(queue, Cause.fail(sessionError(definition.key, 'source', snapshot.error ?? new Error('The session source failed'))));
|
|
80
360
|
}
|
|
81
361
|
else if (snapshot.phase === 'closed') {
|
|
82
362
|
terminal = true;
|
|
83
|
-
|
|
363
|
+
Queue.endUnsafe(queue);
|
|
84
364
|
}
|
|
85
365
|
};
|
|
86
366
|
yield* Effect.acquireRelease(Effect.sync(() => handle.subscribe(emitSnapshot)), (unsubscribe) => Effect.sync(unsubscribe));
|
|
87
367
|
emitSnapshot();
|
|
88
|
-
}), resolved.
|
|
368
|
+
}), resolved.callbackOptions.bufferSize === 'unbounded'
|
|
369
|
+
? undefined
|
|
370
|
+
: {
|
|
371
|
+
bufferSize: resolved.callbackOptions.bufferSize,
|
|
372
|
+
strategy: resolved.callbackOptions.strategy,
|
|
373
|
+
});
|
|
89
374
|
}
|
|
90
375
|
/** Creates a service over application-owned runtime and registry objects. */
|
|
91
376
|
export function makeNatsail(resource) {
|
|
@@ -104,17 +389,54 @@ export function makeNatsail(resource) {
|
|
|
104
389
|
...options,
|
|
105
390
|
signal: options.signal ? AbortSignal.any([options.signal, effectSignal]) : effectSignal,
|
|
106
391
|
})),
|
|
392
|
+
subscribe: (options, streamOptions) => createSubjectStream(runtime, options, streamOptions),
|
|
393
|
+
jetStreamEvents: (options, streamOptions) => createJetStreamEventStream(runtime, options, streamOptions),
|
|
394
|
+
jetStreamDeliveries: (options, streamOptions) => createJetStreamDeliveryStream(runtime, options, streamOptions),
|
|
395
|
+
materializeJetStream: (options, materializer, streamOptions) => createJetStreamMaterializedStream(runtime, options, materializer, streamOptions),
|
|
396
|
+
runJetStreamProcessor: (options, handler) => runJetStreamProcessorEffect(runtime, options, handler),
|
|
107
397
|
restartSession: (key) => tryRuntimePromise('restart-session', () => sessions.restart(key)),
|
|
108
398
|
sessionSnapshots: (definition, options) => createSessionSnapshotStream(sessions, definition, options),
|
|
109
|
-
sessionValues: (definition, options) => createSessionSnapshotStream(sessions, definition, options).pipe(Stream.mapAccum(-1, (valueRevision, snapshot) => {
|
|
399
|
+
sessionValues: (definition, options) => createSessionSnapshotStream(sessions, definition, options).pipe(Stream.mapAccum(() => -1, (valueRevision, snapshot) => {
|
|
110
400
|
if (snapshot.valueRevision !== valueRevision &&
|
|
111
401
|
Object.prototype.hasOwnProperty.call(snapshot, 'value')) {
|
|
112
|
-
return [snapshot.valueRevision,
|
|
402
|
+
return [snapshot.valueRevision, [snapshot.value]];
|
|
113
403
|
}
|
|
114
|
-
return [valueRevision,
|
|
115
|
-
})
|
|
404
|
+
return [valueRevision, []];
|
|
405
|
+
})),
|
|
116
406
|
};
|
|
117
407
|
}
|
|
408
|
+
/**
|
|
409
|
+
* Creates a cold Core NATS subject Stream that reads its runtime from the
|
|
410
|
+
* `Natsail` service. Each consumer owns one scoped subscription.
|
|
411
|
+
*/
|
|
412
|
+
export function subscribe(options, streamOptions) {
|
|
413
|
+
return Stream.unwrap(Natsail.useSync((service) => service.subscribe(options, streamOptions)));
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Creates a cold ordered JetStream Stream with an explicit replay-complete
|
|
417
|
+
* event. NATSail remains the single owner of recovery and checkpoints.
|
|
418
|
+
*/
|
|
419
|
+
export function jetStreamEvents(options, streamOptions) {
|
|
420
|
+
return Stream.unwrap(Natsail.useSync((service) => service.jetStreamEvents(options, streamOptions)));
|
|
421
|
+
}
|
|
422
|
+
/** Creates a cold ordered JetStream Stream containing delivery values only. */
|
|
423
|
+
export function jetStreamDeliveries(options, streamOptions) {
|
|
424
|
+
return Stream.unwrap(Natsail.useSync((service) => service.jetStreamDeliveries(options, streamOptions)));
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Rebuilds historical state without rendering every intermediate state, emits
|
|
428
|
+
* one atomic live snapshot at catch-up, and then emits microbatched updates.
|
|
429
|
+
*/
|
|
430
|
+
export function materializeJetStream(options, materializer, streamOptions) {
|
|
431
|
+
return Stream.unwrap(Natsail.useSync((service) => service.materializeJetStream(options, materializer, streamOptions)));
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Runs a named explicit-ack JetStream processor. The message is acknowledged
|
|
435
|
+
* only after the supplied Effect completes successfully.
|
|
436
|
+
*/
|
|
437
|
+
export function runJetStreamProcessor(options, handler) {
|
|
438
|
+
return Natsail.use((service) => service.runJetStreamProcessor(options, handler));
|
|
439
|
+
}
|
|
118
440
|
/** Supplies an existing resource without taking ownership of it. */
|
|
119
441
|
export function makeNatsailLayer(resource) {
|
|
120
442
|
return Layer.succeed(Natsail, makeNatsail(resource));
|
|
@@ -149,6 +471,6 @@ async function closeResource(resource) {
|
|
|
149
471
|
* the runtime, even if registry shutdown fails.
|
|
150
472
|
*/
|
|
151
473
|
export function makeNatsailScopedLayer(acquire) {
|
|
152
|
-
return Layer.
|
|
474
|
+
return Layer.effect(Natsail, Effect.acquireRelease(acquire, (resource) => Effect.promise(() => closeResource(resource))).pipe(Effect.map(makeNatsail)));
|
|
153
475
|
}
|
|
154
476
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@natsail/effect",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "Scoped Effect
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Scoped Effect v4 Streams for Core NATS, JetStream, and shared sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nats",
|
|
7
7
|
"effect",
|
|
@@ -35,14 +35,16 @@
|
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public",
|
|
38
|
-
"registry": "https://registry.npmjs.org/"
|
|
38
|
+
"registry": "https://registry.npmjs.org/",
|
|
39
|
+
"tag": "next"
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
42
|
+
"@natsail/session": "^0.3.0",
|
|
41
43
|
"@natsail/core": "^0.2.1",
|
|
42
|
-
"@natsail/
|
|
44
|
+
"@natsail/jetstream": "^0.4.0"
|
|
43
45
|
},
|
|
44
46
|
"peerDependencies": {
|
|
45
|
-
"effect": "
|
|
47
|
+
"effect": "4.0.0-rc.112"
|
|
46
48
|
},
|
|
47
49
|
"scripts": {
|
|
48
50
|
"build": "tsc -p tsconfig.json"
|