effect-jetstream 1.0.4 → 1.2.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/README.md CHANGED
@@ -96,19 +96,44 @@ JetstreamConfig.JetstreamConfig.make({
96
96
  compress: false,
97
97
 
98
98
  // Optional decoder for compressed payloads
99
- // If omitted, Bun.zstdDecompress is used without a dictionary and a warning is logged.
99
+ // If omitted in Bun, Bun.zstdDecompress is used without a dictionary and a warning is logged.
100
+ // In non-Bun runtimes, a decoder is required when compress=true.
100
101
  // decoder: (data) => Effect.tryPromise(() => Bun.zstdDecompress(data))
102
+
103
+ // Inbound message buffering
104
+ inboundBufferSize: 4096,
105
+ inboundBufferStrategy: "suspend", // "suspend" | "dropping" | "sliding"
106
+
107
+ // Raw ingress buffering (applies before decode)
108
+ ingressBufferSize: 4096,
109
+ ingressBufferStrategy: "dropping", // "suspend" | "dropping" | "sliding"
110
+
111
+ // Outbound message buffering
112
+ outboundBufferSize: 1024,
113
+
114
+ // Reconnect backoff tuning
115
+ reconnectBaseDelayMs: 1000,
116
+ reconnectMaxDelayMs: 30000,
117
+ reconnectJitterFactor: 0, // 0..1 (0 disables jitter)
118
+
119
+ // Runtime observer queue buffering
120
+ runtimeObserverBufferSize: 1024,
121
+
122
+ // Optional runtime observer for instrumentation
123
+ runtimeObserver: (event) => Effect.logDebug("jetstream-runtime", event)
101
124
  })
102
125
  ```
103
126
 
104
- When `compress` is true, provide a decoder that understands Jetstream's dictionary. If you omit it, the client falls back to `Bun.zstdDecompress` without a dictionary and logs a warning.
127
+ When `compress` is true, provide a decoder that understands Jetstream's dictionary. If you omit it, the client falls back to `Bun.zstdDecompress` only in Bun and logs a warning. In runtimes without Bun, layer construction fails with a typed `ParseError`.
105
128
 
106
129
  ## Behavior
107
130
 
108
131
  - Malformed messages are logged and dropped; the stream continues.
132
+ - Raw inbound frames are buffered before decode and may be dropped when ingress is saturated.
109
133
  - Record decode failures in `JetstreamClient` are logged and dropped.
110
134
  - Handler failures are logged and do not stop processing.
111
135
  - Outbound messages are buffered; `send` waits for a ready socket and resends after reconnect.
136
+ - Reconnect backoff uses exponential delay capped by `reconnectMaxDelayMs`, with optional jitter.
112
137
 
113
138
  ## Event Types
114
139
 
@@ -175,11 +200,59 @@ interface JetstreamClient {
175
200
  handler: (event: EventFor<K>) => Effect<void>
176
201
  ) => Effect<void>
177
202
 
178
- // Run the client (blocks forever)
179
- readonly run: Effect<never, JetstreamError>
203
+ // Run the client until the stream ends (e.g. on shutdown)
204
+ readonly run: Effect<void, JetstreamError>
205
+
206
+ // Run the client forever
207
+ readonly runForever: Effect<never, JetstreamError>
180
208
  }
181
209
  ```
182
210
 
211
+ ## Local Harness
212
+
213
+ The repository includes a local Bun harness for smoke/performance testing with Effect metrics.
214
+
215
+ ### Commands
216
+
217
+ ```bash
218
+ bun run harness
219
+ bun run harness:live
220
+ bun run harness:replay
221
+ bun run bench:replay
222
+ bun run bench:ci
223
+ bun run bench:matrix
224
+ bun run bench:matrix:quick
225
+ ```
226
+
227
+ ### Modes
228
+
229
+ - `live`: connects to Jetstream and tracks throughput/runtime signals.
230
+ - `replay`: replays NDJSON fixture messages (default fixture: `examples/fixtures/jetstream-sample.ndjson`).
231
+
232
+ ### Useful Flags
233
+
234
+ ```bash
235
+ bun run harness --mode replay --durationSec 30 --reportEverySec 5 --replayRatePerSec 200
236
+ bun run harness --mode live --collections app.bsky.feed.post --jsonOut tmp/live-report.json
237
+ ```
238
+
239
+ Optional gate flags fail the run (`exit 1`) when violated:
240
+
241
+ - `--gateMinEventsPerSec`
242
+ - `--gateMaxDecodeErrors`
243
+ - `--gateMaxInboundDrops`
244
+ - `--gateMaxReconnects`
245
+ - `--gateMaxP95LagMs`
246
+ - `--gateMaxP99LagMs`
247
+
248
+ The harness prints periodic summaries and writes a final JSON report (`tmp/harness-report.json` by default).
249
+
250
+ `bench:matrix` runs a baseline matrix across decode-only, replay, and websocket-pipeline scenarios, executes warmup + measured trials, and writes summary artifacts to `tmp/benchmarks/<run-id>/`:
251
+
252
+ - `matrix-summary.json` for machine-readable baselines
253
+ - `matrix-summary.md` for quick comparison tables
254
+ - `reports/*.json` for per-trial raw results
255
+
183
256
  ## License
184
257
 
185
258
  MIT
@@ -36,7 +36,8 @@ export interface JetstreamClient {
36
36
  }) => Effect.Effect<void>) => Effect.Effect<void>;
37
37
  readonly onDelete: <C extends Collection>(collection: C, handler: (event: CommitDelete) => Effect.Effect<void>) => Effect.Effect<void>;
38
38
  readonly on: <K extends EventKind>(kind: K, handler: (event: EventFor<K>) => Effect.Effect<void>) => Effect.Effect<void>;
39
- readonly run: Effect.Effect<never, JetstreamError>;
39
+ readonly run: Effect.Effect<void, JetstreamError>;
40
+ readonly runForever: Effect.Effect<never, JetstreamError>;
40
41
  }
41
42
  /**
42
43
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"JetstreamClient.d.ts","sourceRoot":"","sources":["../src/JetstreamClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC1G,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAwB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,SAAS,EAC/B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;CACnD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,QAAQ,CAAC,GAAkB,CAAA;AAEhE;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,CAAkB,CAAA"}
1
+ {"version":3,"file":"JetstreamClient.d.ts","sourceRoot":"","sources":["../src/JetstreamClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC1G,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAwB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,SAAS,EAC/B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;CAC1D;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,QAAQ,CAAC,GAAkB,CAAA;AAEhE;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,CAAkB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JetstreamClient.js","sourceRoot":"","sources":["../src/JetstreamClient.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGhD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA2B,QAAQ,CAAC,MAAM,CAAA;AAiC7D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAwB,QAAQ,CAAC,GAAG,CAAA;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAmD,QAAQ,CAAC,KAAK,CAAA"}
1
+ {"version":3,"file":"JetstreamClient.js","sourceRoot":"","sources":["../src/JetstreamClient.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGhD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA2B,QAAQ,CAAC,MAAM,CAAA;AAkC7D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAwB,QAAQ,CAAC,GAAG,CAAA;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAmD,QAAQ,CAAC,KAAK,CAAA"}
@@ -9,6 +9,59 @@ import type { ParseError } from "./JetstreamError.js";
9
9
  * @category models
10
10
  */
11
11
  export type JetstreamDecoder = (data: Uint8Array) => Effect.Effect<Uint8Array, ParseError>;
12
+ /**
13
+ * @since 1.2.0
14
+ * @category models
15
+ */
16
+ export type JetstreamRuntimeEvent = {
17
+ readonly _tag: "ConnectionAttempt";
18
+ readonly timestampMs: number;
19
+ readonly url: string;
20
+ } | {
21
+ readonly _tag: "ConnectionOpened";
22
+ readonly timestampMs: number;
23
+ readonly url: string;
24
+ } | {
25
+ readonly _tag: "ConnectionClosed";
26
+ readonly timestampMs: number;
27
+ readonly reason: string;
28
+ readonly cause?: unknown;
29
+ } | {
30
+ readonly _tag: "DecodeFailed";
31
+ readonly timestampMs: number;
32
+ readonly message: string;
33
+ } | {
34
+ readonly _tag: "InboundDropped";
35
+ readonly timestampMs: number;
36
+ readonly kind: "commit" | "identity" | "account";
37
+ readonly did: string;
38
+ } | {
39
+ readonly _tag: "IngressDropped";
40
+ readonly timestampMs: number;
41
+ readonly sizeBytes: number;
42
+ readonly chunkType: "text" | "binary";
43
+ } | {
44
+ readonly _tag: "OutboundQueued";
45
+ readonly timestampMs: number;
46
+ } | {
47
+ readonly _tag: "OutboundEncoded";
48
+ readonly timestampMs: number;
49
+ } | {
50
+ readonly _tag: "OutboundEncodeFailed";
51
+ readonly timestampMs: number;
52
+ readonly message: string;
53
+ } | {
54
+ readonly _tag: "OutboundSent";
55
+ readonly timestampMs: number;
56
+ } | {
57
+ readonly _tag: "Shutdown";
58
+ readonly timestampMs: number;
59
+ };
60
+ /**
61
+ * @since 1.2.0
62
+ * @category models
63
+ */
64
+ export type JetstreamRuntimeObserver = (event: JetstreamRuntimeEvent) => Effect.Effect<void>;
12
65
  declare const JetstreamConfig_base: Schema.Class<JetstreamConfig, {
13
66
  endpoint: Schema.optionalWith<typeof Schema.String, {
14
67
  default: () => string;
@@ -25,6 +78,34 @@ declare const JetstreamConfig_base: Schema.Class<JetstreamConfig, {
25
78
  default: () => false;
26
79
  }>;
27
80
  decoder: Schema.optional<Schema.declare<JetstreamDecoder, JetstreamDecoder, readonly [], never>>;
81
+ inboundBufferSize: Schema.optionalWith<typeof Schema.Number, {
82
+ default: () => number;
83
+ }>;
84
+ inboundBufferStrategy: Schema.optionalWith<Schema.Literal<["suspend", "dropping", "sliding"]>, {
85
+ default: () => "suspend";
86
+ }>;
87
+ ingressBufferSize: Schema.optionalWith<typeof Schema.Number, {
88
+ default: () => number;
89
+ }>;
90
+ ingressBufferStrategy: Schema.optionalWith<Schema.Literal<["suspend", "dropping", "sliding"]>, {
91
+ default: () => "dropping";
92
+ }>;
93
+ outboundBufferSize: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
94
+ default: () => number;
95
+ }>;
96
+ reconnectBaseDelayMs: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
97
+ default: () => number;
98
+ }>;
99
+ reconnectMaxDelayMs: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
100
+ default: () => number;
101
+ }>;
102
+ reconnectJitterFactor: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
103
+ default: () => number;
104
+ }>;
105
+ runtimeObserverBufferSize: Schema.optionalWith<typeof Schema.Number, {
106
+ default: () => number;
107
+ }>;
108
+ runtimeObserver: Schema.optional<Schema.declare<JetstreamRuntimeObserver, JetstreamRuntimeObserver, readonly [], never>>;
28
109
  }, Schema.Struct.Encoded<{
29
110
  endpoint: Schema.optionalWith<typeof Schema.String, {
30
111
  default: () => string;
@@ -41,6 +122,34 @@ declare const JetstreamConfig_base: Schema.Class<JetstreamConfig, {
41
122
  default: () => false;
42
123
  }>;
43
124
  decoder: Schema.optional<Schema.declare<JetstreamDecoder, JetstreamDecoder, readonly [], never>>;
125
+ inboundBufferSize: Schema.optionalWith<typeof Schema.Number, {
126
+ default: () => number;
127
+ }>;
128
+ inboundBufferStrategy: Schema.optionalWith<Schema.Literal<["suspend", "dropping", "sliding"]>, {
129
+ default: () => "suspend";
130
+ }>;
131
+ ingressBufferSize: Schema.optionalWith<typeof Schema.Number, {
132
+ default: () => number;
133
+ }>;
134
+ ingressBufferStrategy: Schema.optionalWith<Schema.Literal<["suspend", "dropping", "sliding"]>, {
135
+ default: () => "dropping";
136
+ }>;
137
+ outboundBufferSize: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
138
+ default: () => number;
139
+ }>;
140
+ reconnectBaseDelayMs: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
141
+ default: () => number;
142
+ }>;
143
+ reconnectMaxDelayMs: Schema.optionalWith<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>, {
144
+ default: () => number;
145
+ }>;
146
+ reconnectJitterFactor: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
147
+ default: () => number;
148
+ }>;
149
+ runtimeObserverBufferSize: Schema.optionalWith<typeof Schema.Number, {
150
+ default: () => number;
151
+ }>;
152
+ runtimeObserver: Schema.optional<Schema.declare<JetstreamRuntimeObserver, JetstreamRuntimeObserver, readonly [], never>>;
44
153
  }>, never, {
45
154
  readonly endpoint?: string;
46
155
  } & {
@@ -55,6 +164,26 @@ declare const JetstreamConfig_base: Schema.Class<JetstreamConfig, {
55
164
  readonly compress?: boolean;
56
165
  } & {
57
166
  readonly decoder?: JetstreamDecoder | undefined;
167
+ } & {
168
+ readonly inboundBufferSize?: number;
169
+ } & {
170
+ readonly inboundBufferStrategy?: "suspend" | "dropping" | "sliding";
171
+ } & {
172
+ readonly ingressBufferSize?: number;
173
+ } & {
174
+ readonly ingressBufferStrategy?: "suspend" | "dropping" | "sliding";
175
+ } & {
176
+ readonly outboundBufferSize?: number;
177
+ } & {
178
+ readonly reconnectBaseDelayMs?: number;
179
+ } & {
180
+ readonly reconnectMaxDelayMs?: number;
181
+ } & {
182
+ readonly reconnectJitterFactor?: number;
183
+ } & {
184
+ readonly runtimeObserverBufferSize?: number;
185
+ } & {
186
+ readonly runtimeObserver?: JetstreamRuntimeObserver | undefined;
58
187
  }, {}, {}>;
59
188
  /**
60
189
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"JetstreamConfig.d.ts","sourceRoot":"","sources":["../src/JetstreamConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM1F;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAcnC;CAAG;AAEL;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAChC"}
1
+ {"version":3,"file":"JetstreamConfig.d.ts","sourceRoot":"","sources":["../src/JetstreamConfig.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  const JetstreamDecoderSchema = Schema.declare((u) => typeof u === "function");
3
+ const JetstreamRuntimeObserverSchema = Schema.declare((u) => typeof u === "function");
4
+ const PositiveInteger = Schema.Number.pipe(Schema.finite(), Schema.int(), Schema.greaterThan(0));
5
+ const JitterFactor = Schema.Number.pipe(Schema.finite(), Schema.between(0, 1));
3
6
  /**
4
7
  * @since 1.0.0
5
8
  * @category schemas
@@ -17,7 +20,17 @@ export class JetstreamConfig extends Schema.Class("JetstreamConfig")({
17
20
  cursor: Schema.optional(Schema.Number),
18
21
  maxMessageSizeBytes: Schema.optional(Schema.Number),
19
22
  compress: Schema.optionalWith(Schema.Boolean, { default: () => false }),
20
- decoder: Schema.optional(JetstreamDecoderSchema)
23
+ decoder: Schema.optional(JetstreamDecoderSchema),
24
+ inboundBufferSize: Schema.optionalWith(Schema.Number, { default: () => 4096 }),
25
+ inboundBufferStrategy: Schema.optionalWith(Schema.Literal("suspend", "dropping", "sliding"), { default: () => "suspend" }),
26
+ ingressBufferSize: Schema.optionalWith(Schema.Number, { default: () => 4096 }),
27
+ ingressBufferStrategy: Schema.optionalWith(Schema.Literal("suspend", "dropping", "sliding"), { default: () => "dropping" }),
28
+ outboundBufferSize: Schema.optionalWith(PositiveInteger, { default: () => 1024 }),
29
+ reconnectBaseDelayMs: Schema.optionalWith(PositiveInteger, { default: () => 1000 }),
30
+ reconnectMaxDelayMs: Schema.optionalWith(PositiveInteger, { default: () => 30000 }),
31
+ reconnectJitterFactor: Schema.optionalWith(JitterFactor, { default: () => 0 }),
32
+ runtimeObserverBufferSize: Schema.optionalWith(Schema.Number, { default: () => 1024 }),
33
+ runtimeObserver: Schema.optional(JetstreamRuntimeObserverSchema)
21
34
  }) {
22
35
  }
23
36
  //# sourceMappingURL=JetstreamConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JetstreamConfig.js","sourceRoot":"","sources":["../src/JetstreamConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AASvC,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAC3C,CAAC,CAAC,EAAyB,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CACtD,CAAA;AAED;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,iBAAiB,CAAC,CAAC;IACpF,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,iDAAiD;KACjE,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAClE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACvE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACjD,CAAC;CAAG"}
1
+ {"version":3,"file":"JetstreamConfig.js","sourceRoot":"","sources":["../src/JetstreamConfig.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,8 @@ export interface JetstreamClient {
36
36
  }) => Effect.Effect<void>) => Effect.Effect<void>;
37
37
  readonly onDelete: <C extends Collection>(collection: C, handler: (event: CommitDelete) => Effect.Effect<void>) => Effect.Effect<void>;
38
38
  readonly on: <K extends EventKind>(kind: K, handler: (event: EventFor<K>) => Effect.Effect<void>) => Effect.Effect<void>;
39
- readonly run: Effect.Effect<never, JetstreamError>;
39
+ readonly run: Effect.Effect<void, JetstreamError>;
40
+ readonly runForever: Effect.Effect<never, JetstreamError>;
40
41
  }
41
42
  /**
42
43
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/internal/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EAEV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAGpE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAuD,CAAA;AAEnF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,SAAS,EAC/B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;CACnD;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,+CAA0E,CAAA;AAuD1F;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,CAkHhE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/internal/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EAEV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAGpE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAuD,CAAA;AAEnF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC3G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,UAAU,EACtC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,SAAS,EAC/B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;CAC1D;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,+CAA0E,CAAA;AAsE1F;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,CA8JhE,CAAA"}
@@ -21,6 +21,7 @@ export const TypeId = Symbol.for("effect-jetstream/JetstreamClient");
21
21
  * @category tags
22
22
  */
23
23
  export const tag = Context.GenericTag("effect-jetstream/JetstreamClient");
24
+ const decodeFailureSentinel = Symbol.for("effect-jetstream/JetstreamClient/decode-failed");
24
25
  const recordSchemas = {
25
26
  "app.bsky.feed.post": Post,
26
27
  "app.bsky.feed.like": Like,
@@ -66,35 +67,71 @@ const logRecordFailure = (collection, error, event) => Effect.logWarning("Droppi
66
67
  export const layer = Layer.effect(tag, Effect.gen(function* () {
67
68
  const jetstream = yield* JetstreamTag;
68
69
  const handlers = yield* Ref.make([]);
70
+ const decodeCache = new WeakMap();
71
+ const decodeCacheFor = (event) => {
72
+ const cached = decodeCache.get(event);
73
+ if (cached !== undefined) {
74
+ return cached;
75
+ }
76
+ const next = {};
77
+ decodeCache.set(event, next);
78
+ return next;
79
+ };
69
80
  const addHandler = (handler) => Ref.update(handlers, (current) => [...current, handler]);
70
81
  const onCreate = Effect.fn("JetstreamClient.onCreate")((collection, handler) => addHandler((event) => {
71
82
  if (event._tag !== "CommitCreate" || event.commit.collection !== collection) {
72
83
  return Effect.void;
73
84
  }
85
+ const cache = decodeCacheFor(event);
86
+ if (cache.create === decodeFailureSentinel) {
87
+ return Effect.void;
88
+ }
89
+ if (cache.create !== undefined) {
90
+ return handler(cache.create).pipe(Effect.catchAllCause(logHandlerFailure("onCreate", event)));
91
+ }
74
92
  return decodeRecord(collection, event.commit.record).pipe(Effect.matchEffect({
75
- onFailure: (error) => logRecordFailure(collection, error, event),
76
- onSuccess: (record) => handler({
77
- ...event,
78
- commit: {
79
- ...event.commit,
80
- record
81
- }
82
- }).pipe(Effect.catchAllCause(logHandlerFailure("onCreate", event)))
93
+ onFailure: (error) => Effect.sync(() => {
94
+ cache.create = decodeFailureSentinel;
95
+ }).pipe(Effect.zipRight(logRecordFailure(collection, error, event))),
96
+ onSuccess: (record) => {
97
+ const decodedEvent = {
98
+ ...event,
99
+ commit: {
100
+ ...event.commit,
101
+ record
102
+ }
103
+ };
104
+ cache.create = decodedEvent;
105
+ return handler(decodedEvent).pipe(Effect.catchAllCause(logHandlerFailure("onCreate", event)));
106
+ }
83
107
  }));
84
108
  }));
85
109
  const onUpdate = Effect.fn("JetstreamClient.onUpdate")((collection, handler) => addHandler((event) => {
86
110
  if (event._tag !== "CommitUpdate" || event.commit.collection !== collection) {
87
111
  return Effect.void;
88
112
  }
113
+ const cache = decodeCacheFor(event);
114
+ if (cache.update === decodeFailureSentinel) {
115
+ return Effect.void;
116
+ }
117
+ if (cache.update !== undefined) {
118
+ return handler(cache.update).pipe(Effect.catchAllCause(logHandlerFailure("onUpdate", event)));
119
+ }
89
120
  return decodeRecord(collection, event.commit.record).pipe(Effect.matchEffect({
90
- onFailure: (error) => logRecordFailure(collection, error, event),
91
- onSuccess: (record) => handler({
92
- ...event,
93
- commit: {
94
- ...event.commit,
95
- record
96
- }
97
- }).pipe(Effect.catchAllCause(logHandlerFailure("onUpdate", event)))
121
+ onFailure: (error) => Effect.sync(() => {
122
+ cache.update = decodeFailureSentinel;
123
+ }).pipe(Effect.zipRight(logRecordFailure(collection, error, event))),
124
+ onSuccess: (record) => {
125
+ const decodedEvent = {
126
+ ...event,
127
+ commit: {
128
+ ...event.commit,
129
+ record
130
+ }
131
+ };
132
+ cache.update = decodedEvent;
133
+ return handler(decodedEvent).pipe(Effect.catchAllCause(logHandlerFailure("onUpdate", event)));
134
+ }
98
135
  }));
99
136
  }));
100
137
  const onDelete = Effect.fn("JetstreamClient.onDelete")((collection, handler) => addHandler((event) => {
@@ -110,14 +147,16 @@ export const layer = Layer.effect(tag, Effect.gen(function* () {
110
147
  return handler(event).pipe(Effect.catchAllCause(logHandlerFailure("on", event)));
111
148
  }));
112
149
  const dispatchEvent = Effect.fn("JetstreamClient.dispatchEvent")((event) => Ref.get(handlers).pipe(Effect.flatMap((current) => Effect.forEach(current, (handler) => handler(event), { discard: true }))));
113
- const run = jetstream.stream.pipe(Stream.runForEach(dispatchEvent), Effect.zipRight(Effect.never));
150
+ const run = jetstream.stream.pipe(Stream.runForEach(dispatchEvent));
151
+ const runForever = run.pipe(Effect.zipRight(Effect.never));
114
152
  return tag.of({
115
153
  [TypeId]: TypeId,
116
154
  onCreate,
117
155
  onUpdate,
118
156
  onDelete,
119
157
  on,
120
- run
158
+ run,
159
+ runForever
121
160
  });
122
161
  }));
123
162
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/internal/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/internal/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/internal/decoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAA;AA6D/B,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,GAAG,UAAU,EACzB,UAAU,gBAAgB,KACzB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAgH5C,CAAA"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/internal/decoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAA;AA6D/B,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,GAAG,UAAU,EACzB,UAAU,gBAAgB,KACzB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAmH5C,CAAA"}
@@ -62,21 +62,20 @@ export const decodeMessage = (data, decoder) => {
62
62
  }));
63
63
  }
64
64
  const { commit } = raw;
65
- const base = {
66
- did: raw.did,
67
- time_us: raw.time_us,
68
- kind: "commit"
69
- };
65
+ const did = raw.did;
66
+ const time_us = raw.time_us;
70
67
  switch (commit.operation) {
71
68
  case "create":
72
- if (commit.record === undefined) {
69
+ if (commit.record == null) {
73
70
  return yield* Effect.fail(new ParseError({
74
71
  message: "Missing record for commit create",
75
72
  raw: text.slice(0, 200)
76
73
  }));
77
74
  }
78
75
  return new CommitCreate({
79
- ...base,
76
+ did,
77
+ time_us,
78
+ kind: "commit",
80
79
  commit: {
81
80
  rev: commit.rev,
82
81
  operation: "create",
@@ -87,14 +86,16 @@ export const decodeMessage = (data, decoder) => {
87
86
  }
88
87
  });
89
88
  case "update":
90
- if (commit.record === undefined) {
89
+ if (commit.record == null) {
91
90
  return yield* Effect.fail(new ParseError({
92
91
  message: "Missing record for commit update",
93
92
  raw: text.slice(0, 200)
94
93
  }));
95
94
  }
96
95
  return new CommitUpdate({
97
- ...base,
96
+ did,
97
+ time_us,
98
+ kind: "commit",
98
99
  commit: {
99
100
  rev: commit.rev,
100
101
  operation: "update",
@@ -106,7 +107,9 @@ export const decodeMessage = (data, decoder) => {
106
107
  });
107
108
  case "delete":
108
109
  return new CommitDelete({
109
- ...base,
110
+ did,
111
+ time_us,
112
+ kind: "commit",
110
113
  commit: {
111
114
  rev: commit.rev,
112
115
  operation: "delete",
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/internal/decoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EAEd,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAErC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,OAAO;IACtB,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CACpC,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,WAAW,CACZ,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;CAClC,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;AAEpE,MAAM,UAAU,GAAG,CACjB,IAAyB,EACzB,OAA0B,EACS,EAAE;IACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACvB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACrD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAyB,EACzB,OAA0B,EACmB,EAAE;IAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAE7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,IAAI,UAAU,CAAC;YACb,OAAO,EAAE,6BAA6B,mBAAmB,CAAC,CAAC,CAAC,EAAE;YAC9D,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACxB,CAAC,CACH,CACF,CAAA;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;oBACvC,OAAO,EAAE,yCAAyC;oBAClD,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACxB,CAAC,CAAC,CAAA;YACL,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;YACtB,MAAM,IAAI,GAAG;gBACX,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,QAAiB;aACxB,CAAA;YAED,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAK,QAAQ;oBACX,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;4BACvC,OAAO,EAAE,kCAAkC;4BAC3C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;yBACxB,CAAC,CAAC,CAAA;oBACL,CAAC;oBACD,OAAO,IAAI,YAAY,CAAC;wBACtB,GAAG,IAAI;wBACP,MAAM,EAAE;4BACN,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,SAAS,EAAE,QAAQ;4BACnB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,GAAG,EAAE,MAAM,CAAC,GAAG;yBAChB;qBACF,CAAC,CAAA;gBACJ,KAAK,QAAQ;oBACX,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;4BACvC,OAAO,EAAE,kCAAkC;4BAC3C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;yBACxB,CAAC,CAAC,CAAA;oBACL,CAAC;oBACD,OAAO,IAAI,YAAY,CAAC;wBACtB,GAAG,IAAI;wBACP,MAAM,EAAE;4BACN,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,SAAS,EAAE,QAAQ;4BACnB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,GAAG,EAAE,MAAM,CAAC,GAAG;yBAChB;qBACF,CAAC,CAAA;gBACJ,KAAK,QAAQ;oBACX,OAAO,IAAI,YAAY,CAAC;wBACtB,GAAG,IAAI;wBACP,MAAM,EAAE;4BACN,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,SAAS,EAAE,QAAQ;4BACnB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;yBAClB;qBACF,CAAC,CAAA;YACN,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;oBACvC,OAAO,EAAE,6CAA6C;oBACtD,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACxB,CAAC,CAAC,CAAA;YACL,CAAC;YACD,OAAO,IAAI,aAAa,CAAC;gBACvB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;oBACvC,OAAO,EAAE,2CAA2C;oBACpD,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACxB,CAAC,CAAC,CAAA;YACL,CAAC;YACD,OAAO,IAAI,YAAY,CAAC;gBACtB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;YACvC,OAAO,EAAE,uBAAuB,GAAG,CAAC,IAAI,EAAE;YAC1C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACxB,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/internal/decoder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"jetstream.d.ts","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AAEjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAOrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAoB,aAAa,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACvH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAI9D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAiD,CAAA;AAE7E;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,mCAA8D,CAAA;AA6B9E;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,oBAAoB,CAmJlE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAGrC,CAAA"}
1
+ {"version":3,"file":"jetstream.d.ts","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AAEjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAQrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EACV,eAAe,EAGf,aAAa,EACb,wBAAwB,EACzB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAK9D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAiD,CAAA;AAE7E;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,mCAA8D,CAAA;AA+H9E;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,oBAAoB,CAoTlE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAGrC,CAAA"}
@@ -13,11 +13,13 @@ import * as Option from "effect/Option";
13
13
  import * as Queue from "effect/Queue";
14
14
  import * as Ref from "effect/Ref";
15
15
  import * as Schedule from "effect/Schedule";
16
+ import * as Schema from "effect/Schema";
16
17
  import * as Scope from "effect/Scope";
17
18
  import * as Stream from "effect/Stream";
18
19
  import { ConnectionError, ParseError } from "../JetstreamError.js";
19
20
  import { decodeMessage } from "./decoder.js";
20
- import { buildUrl } from "./websocket.js";
21
+ import { summarizeParseError } from "./parseError.js";
22
+ import { buildUrl, createSocket } from "./websocket.js";
21
23
  /**
22
24
  * @since 1.0.0
23
25
  * @category symbols
@@ -28,40 +30,152 @@ export const TypeId = Symbol.for("effect-jetstream/Jetstream");
28
30
  * @category tags
29
31
  */
30
32
  export const tag = Context.GenericTag("effect-jetstream/Jetstream");
31
- const reconnectSchedule = Schedule.exponential("1 second").pipe(Schedule.union(Schedule.spaced("30 seconds")));
32
- const outboundBufferSize = 1024;
33
- const defaultZstdDecoder = (data) => Effect.tryPromise({
34
- try: () => Bun.zstdDecompress(data),
35
- catch: (error) => new ParseError({
36
- message: `Zstd decompression failed: ${String(error)}`
37
- })
33
+ const OptionsUpdateSchema = Schema.Struct({
34
+ wantedCollections: Schema.optional(Schema.Array(Schema.String)),
35
+ wantedDids: Schema.optional(Schema.Array(Schema.String)),
36
+ maxMessageSizeBytes: Schema.optional(Schema.Number)
38
37
  });
38
+ const SubscriberSourcedMessageSchema = Schema.Struct({
39
+ type: Schema.Literal("options_update"),
40
+ payload: OptionsUpdateSchema
41
+ });
42
+ const encodeOutboundMessage = Schema.encode(Schema.parseJson(SubscriberSourcedMessageSchema));
43
+ const makeReconnectSchedule = (config) => {
44
+ const capped = Schedule.exponential(config.reconnectBaseDelayMs).pipe(Schedule.union(Schedule.spaced(config.reconnectMaxDelayMs)));
45
+ if (config.reconnectJitterFactor <= 0) {
46
+ return capped;
47
+ }
48
+ const min = Math.max(0, 1 - config.reconnectJitterFactor);
49
+ const max = 1 + config.reconnectJitterFactor;
50
+ return capped.pipe(Schedule.jitteredWith({ min, max }));
51
+ };
52
+ const makeQueue = (capacity, strategy) => {
53
+ switch (strategy) {
54
+ case "dropping":
55
+ return Queue.dropping(capacity);
56
+ case "sliding":
57
+ return Queue.sliding(capacity);
58
+ case "suspend":
59
+ return Queue.bounded(capacity);
60
+ }
61
+ };
62
+ const ingressChunkType = (data) => typeof data === "string" ? "text" : "binary";
63
+ const ingressChunkSize = (data) => typeof data === "string" ? data.length : data.byteLength;
64
+ const isPromiseLike = (value) => typeof value === "object" &&
65
+ value !== null &&
66
+ "then" in value &&
67
+ typeof value.then === "function";
68
+ const zstdDecodeError = (error) => new ParseError({
69
+ message: `Zstd decompression failed: ${String(error)}`
70
+ });
71
+ const makeDefaultZstdDecoder = (zstdDecompress) => {
72
+ return (data) => Effect.gen(function* () {
73
+ const decoded = yield* Effect.try({
74
+ try: () => zstdDecompress(data),
75
+ catch: zstdDecodeError
76
+ });
77
+ if (!isPromiseLike(decoded)) {
78
+ return decoded;
79
+ }
80
+ return yield* Effect.tryPromise({
81
+ try: () => Promise.resolve(decoded),
82
+ catch: zstdDecodeError
83
+ });
84
+ });
85
+ };
39
86
  const resolveDecoder = (config) => {
40
87
  if (!config.compress) {
41
- return undefined;
88
+ return Effect.succeed({
89
+ decoder: undefined,
90
+ usingDefaultDecoder: false
91
+ });
92
+ }
93
+ if (config.decoder !== undefined) {
94
+ return Effect.succeed({
95
+ decoder: config.decoder,
96
+ usingDefaultDecoder: false
97
+ });
98
+ }
99
+ const bunRuntime = globalThis.Bun;
100
+ if (bunRuntime?.zstdDecompress !== undefined) {
101
+ return Effect.succeed({
102
+ decoder: makeDefaultZstdDecoder(bunRuntime.zstdDecompress),
103
+ usingDefaultDecoder: true
104
+ });
42
105
  }
43
- return config.decoder ?? defaultZstdDecoder;
106
+ return Effect.fail(new ParseError({
107
+ message: "Jetstream compression requires a custom decoder when Bun.zstdDecompress is unavailable."
108
+ }));
44
109
  };
45
110
  /**
46
111
  * @since 1.0.0
47
112
  * @category layers
48
113
  */
49
114
  export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
50
- const url = buildUrl(config);
115
+ const url = yield* buildUrl(config);
51
116
  const scope = yield* Effect.scope;
52
- const mailbox = yield* Mailbox.make();
53
- const outbound = yield* Queue.bounded(outboundBufferSize);
117
+ const mailbox = yield* Mailbox.make({
118
+ capacity: config.inboundBufferSize,
119
+ strategy: config.inboundBufferStrategy
120
+ });
121
+ const ingress = yield* makeQueue(config.ingressBufferSize, config.ingressBufferStrategy);
122
+ const outbound = yield* Queue.bounded(config.outboundBufferSize);
54
123
  const pending = yield* Ref.make(Option.none());
55
124
  const shutdownSignal = yield* Deferred.make();
56
- const decoder = resolveDecoder(config);
57
- if (config.compress && config.decoder === undefined) {
125
+ const { decoder, usingDefaultDecoder } = yield* resolveDecoder(config);
126
+ const reconnectSchedule = makeReconnectSchedule(config);
127
+ const now = () => Date.now();
128
+ const runtimeObserver = config.runtimeObserver;
129
+ const runtimeEvents = runtimeObserver === undefined
130
+ ? Option.none()
131
+ : Option.some(yield* Queue.dropping(config.runtimeObserverBufferSize));
132
+ const emitRuntimeEvent = Effect.fn("Jetstream.emitRuntimeEvent")((event) => Option.isNone(runtimeEvents)
133
+ ? Effect.void
134
+ : runtimeEvents.value.offer(event).pipe(Effect.flatMap((accepted) => accepted
135
+ ? Effect.void
136
+ : Effect.logDebug("Dropping runtime event because observer queue is full", {
137
+ event: event._tag
138
+ })), Effect.catchAllCause(() => Effect.void)));
139
+ if (Option.isSome(runtimeEvents)) {
140
+ const runtimeObserverFiber = yield* Effect.forkIn(Queue.take(runtimeEvents.value).pipe(Effect.flatMap((event) => runtimeObserver(event).pipe(Effect.catchAllCause(() => Effect.void))), Effect.forever, Effect.catchAllCause((cause) => Cause.isInterrupted(cause)
141
+ ? Effect.void
142
+ : Effect.failCause(cause))), scope);
143
+ void runtimeObserverFiber;
144
+ }
145
+ if (usingDefaultDecoder) {
58
146
  yield* Effect.logWarning("Jetstream compression enabled without a custom decoder; using Bun.zstdDecompress without a dictionary.");
59
147
  }
60
- const logDecodeError = (error) => Effect.logWarning("Dropping malformed Jetstream message", {
148
+ const logDecodeError = (error) => emitRuntimeEvent({
149
+ _tag: "DecodeFailed",
150
+ timestampMs: now(),
151
+ message: error.message
152
+ }).pipe(Effect.zipRight(Effect.logWarning("Dropping malformed Jetstream message", {
61
153
  message: error.message,
62
154
  raw: error.raw
63
- });
64
- const handleIncoming = Effect.fn("Jetstream.handleIncoming")((data) => decodeMessage(data, decoder).pipe(Effect.flatMap((message) => mailbox.offer(message)), Effect.asVoid, Effect.catchAll(logDecodeError)));
155
+ })));
156
+ const processIngressChunk = Effect.fn("Jetstream.processIngressChunk")((data) => decodeMessage(data, decoder).pipe(Effect.flatMap((message) => mailbox.offer(message).pipe(Effect.flatMap((accepted) => accepted
157
+ ? Effect.void
158
+ : emitRuntimeEvent({
159
+ _tag: "InboundDropped",
160
+ timestampMs: now(),
161
+ kind: message.kind,
162
+ did: message.did
163
+ }).pipe(Effect.zipRight(Effect.logDebug("Dropping Jetstream message because inbound buffer is full", {
164
+ kind: message.kind,
165
+ did: message.did
166
+ })))))), Effect.catchAll(logDecodeError)));
167
+ const enqueueIngressChunk = Effect.fn("Jetstream.enqueueIngressChunk")((data) => ingress.offer(data).pipe(Effect.flatMap((accepted) => accepted
168
+ ? Effect.void
169
+ : emitRuntimeEvent({
170
+ _tag: "IngressDropped",
171
+ timestampMs: now(),
172
+ sizeBytes: ingressChunkSize(data),
173
+ chunkType: ingressChunkType(data)
174
+ }).pipe(Effect.zipRight(Effect.logDebug("Dropping inbound frame because ingress queue is full", {
175
+ sizeBytes: ingressChunkSize(data),
176
+ chunkType: ingressChunkType(data)
177
+ }))))));
178
+ const ingressLoop = Queue.take(ingress).pipe(Effect.flatMap(processIngressChunk), Effect.forever);
65
179
  const takeNextOutbound = Effect.uninterruptibleMask((restore) => Ref.get(pending).pipe(Effect.flatMap((pendingValue) => {
66
180
  if (Option.isSome(pendingValue)) {
67
181
  return Effect.succeed(pendingValue.value);
@@ -70,24 +184,67 @@ export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
70
184
  })));
71
185
  const writeOne = (writer) => Effect.gen(function* () {
72
186
  const next = yield* takeNextOutbound;
73
- yield* writer(JSON.stringify(next.message)).pipe(Effect.mapError((cause) => new ConnectionError({ reason: "Closed", cause })));
187
+ const encoded = yield* encodeOutboundMessage(next.message).pipe(Effect.mapError((error) => new ParseError({
188
+ message: `Failed to serialize outbound message: ${summarizeParseError(error)}`
189
+ })), Effect.catchAll((error) => Effect.gen(function* () {
190
+ yield* emitRuntimeEvent({
191
+ _tag: "OutboundEncodeFailed",
192
+ timestampMs: now(),
193
+ message: error.message
194
+ });
195
+ yield* Ref.set(pending, Option.none());
196
+ yield* Deferred.fail(next.done, error);
197
+ return yield* Effect.fail(error);
198
+ })));
199
+ yield* emitRuntimeEvent({
200
+ _tag: "OutboundEncoded",
201
+ timestampMs: now()
202
+ });
203
+ yield* writer(encoded).pipe(Effect.mapError((cause) => new ConnectionError({ reason: "Closed", cause })));
204
+ yield* emitRuntimeEvent({
205
+ _tag: "OutboundSent",
206
+ timestampMs: now()
207
+ });
74
208
  yield* Ref.set(pending, Option.none());
75
209
  yield* Deferred.succeed(next.done, undefined);
76
210
  });
77
211
  const writeLoop = (writer) => writeOne(writer).pipe(Effect.forever);
78
- const readLoop = (socket) => socket.runRaw((data) => handleIncoming(data)).pipe(Effect.catchAll((cause) => Effect.fail(new ConnectionError({ reason: "Closed", cause }))), Effect.zipRight(Effect.fail(new ConnectionError({ reason: "Closed", cause: "Socket closed" }))));
212
+ const readLoop = (socket) => socket.runRaw((data) => enqueueIngressChunk(data)).pipe(Effect.catchAll((cause) => Effect.fail(new ConnectionError({ reason: "Closed", cause }))), Effect.zipRight(Effect.fail(new ConnectionError({ reason: "Closed", cause: "Socket closed" }))));
79
213
  const runConnection = Effect.scoped(Effect.gen(function* () {
80
- const socket = yield* Socket.makeWebSocket(url);
214
+ yield* emitRuntimeEvent({
215
+ _tag: "ConnectionAttempt",
216
+ timestampMs: now(),
217
+ url
218
+ });
219
+ const socket = yield* createSocket(url);
220
+ yield* emitRuntimeEvent({
221
+ _tag: "ConnectionOpened",
222
+ timestampMs: now(),
223
+ url
224
+ });
81
225
  const writer = yield* socket.writer;
82
226
  yield* Effect.raceFirst(readLoop(socket), writeLoop(writer));
83
- })).pipe(Effect.retry(reconnectSchedule));
227
+ })).pipe(Effect.tapError((error) => error._tag === "ConnectionError"
228
+ ? emitRuntimeEvent({
229
+ _tag: "ConnectionClosed",
230
+ timestampMs: now(),
231
+ reason: error.reason,
232
+ ...(error.cause === undefined ? {} : { cause: error.cause })
233
+ })
234
+ : Effect.void), Effect.retry(reconnectSchedule));
84
235
  const runConnectionUntilShutdown = Effect.raceFirst(runConnection, Deferred.await(shutdownSignal)).pipe(Effect.catchAllCause((cause) => Cause.isInterrupted(cause)
85
236
  ? Effect.void
86
237
  : Effect.failCause(cause)));
238
+ const ingressFiber = yield* Effect.forkIn(ingressLoop, scope);
87
239
  const connectionFiber = yield* Effect.forkIn(runConnectionUntilShutdown, scope);
88
240
  const shutdown = Effect.uninterruptible(Effect.gen(function* () {
241
+ yield* emitRuntimeEvent({
242
+ _tag: "Shutdown",
243
+ timestampMs: now()
244
+ });
89
245
  yield* Deferred.succeed(shutdownSignal, undefined);
90
246
  yield* Fiber.interrupt(connectionFiber);
247
+ yield* Fiber.interrupt(ingressFiber);
91
248
  const closed = new ConnectionError({
92
249
  reason: "Closed",
93
250
  cause: "Jetstream shutdown"
@@ -101,19 +258,23 @@ export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
101
258
  for (const item of remaining) {
102
259
  yield* Deferred.fail(item.done, closed);
103
260
  }
261
+ if (Option.isSome(runtimeEvents)) {
262
+ yield* runtimeEvents.value.shutdown;
263
+ }
264
+ yield* ingress.shutdown;
104
265
  yield* mailbox.end;
105
266
  }));
106
267
  yield* Scope.addFinalizer(scope, shutdown);
107
268
  const send = Effect.fn("Jetstream.send")((message) => Effect.gen(function* () {
108
- const isShutdown = yield* Deferred.isDone(shutdownSignal);
109
- if (isShutdown) {
110
- return yield* Effect.fail(new ConnectionError({ reason: "Closed", cause: "Jetstream shutdown" }));
111
- }
112
269
  const done = yield* Deferred.make();
113
270
  const accepted = yield* Effect.raceFirst(Queue.offer(outbound, { message, done }), Deferred.await(shutdownSignal).pipe(Effect.as(false)));
114
271
  if (!accepted) {
115
272
  return yield* Effect.fail(new ConnectionError({ reason: "Closed", cause: "Jetstream shutdown" }));
116
273
  }
274
+ yield* emitRuntimeEvent({
275
+ _tag: "OutboundQueued",
276
+ timestampMs: now()
277
+ });
117
278
  return yield* Deferred.await(done);
118
279
  }));
119
280
  const updateOptions = Effect.fn("Jetstream.updateOptions")((options) => send({ type: "options_update", payload: options }));
@@ -1 +1 @@
1
- {"version":3,"file":"jetstream.js","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jetstream.js","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";
6
6
  import * as Stream from "effect/Stream";
7
7
  import { ConnectionError } from "../JetstreamError.js";
8
8
  import type { JetstreamConfig } from "../JetstreamConfig.js";
9
- export declare const buildUrl: (config: JetstreamConfig) => string;
9
+ export declare const buildUrl: (config: JetstreamConfig) => Effect.Effect<string, ConnectionError>;
10
10
  export declare const createSocket: (url: string) => Effect.Effect<Socket.Socket, ConnectionError, Socket.WebSocketConstructor>;
11
11
  export declare const messageStream: (socket: Socket.Socket) => Stream.Stream<string | Uint8Array, ConnectionError>;
12
12
  //# sourceMappingURL=websocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/internal/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,eAAO,MAAM,QAAQ,GAAI,QAAQ,eAAe,KAAG,MAwBlD,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,oBAAoB,CAGzE,CAAA;AAEH,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,CAAC,MAAM,KACpB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,eAAe,CAgBjD,CAAA"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/internal/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,eAAO,MAAM,QAAQ,GAAI,QAAQ,eAAe,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAgCpF,CAAA;AAEJ,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,oBAAoB,CAGzE,CAAA;AAEH,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,CAAC,MAAM,KACpB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,eAAe,CAgBjD,CAAA"}
@@ -5,25 +5,31 @@ import * as Socket from "@effect/platform/Socket";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Stream from "effect/Stream";
7
7
  import { ConnectionError } from "../JetstreamError.js";
8
- export const buildUrl = (config) => {
9
- const url = new URL(config.endpoint);
10
- for (const collection of config.wantedCollections) {
11
- url.searchParams.append("wantedCollections", collection);
12
- }
13
- for (const did of config.wantedDids) {
14
- url.searchParams.append("wantedDids", did);
15
- }
16
- if (config.cursor !== undefined) {
17
- url.searchParams.set("cursor", config.cursor.toString());
18
- }
19
- if (config.maxMessageSizeBytes !== undefined) {
20
- url.searchParams.set("maxMessageSizeBytes", config.maxMessageSizeBytes.toString());
21
- }
22
- if (config.compress) {
23
- url.searchParams.set("compress", "true");
24
- }
25
- return url.toString();
26
- };
8
+ export const buildUrl = (config) => Effect.try({
9
+ try: () => {
10
+ const url = new URL(config.endpoint);
11
+ for (const collection of config.wantedCollections) {
12
+ url.searchParams.append("wantedCollections", collection);
13
+ }
14
+ for (const did of config.wantedDids) {
15
+ url.searchParams.append("wantedDids", did);
16
+ }
17
+ if (config.cursor !== undefined) {
18
+ url.searchParams.set("cursor", config.cursor.toString());
19
+ }
20
+ if (config.maxMessageSizeBytes !== undefined) {
21
+ url.searchParams.set("maxMessageSizeBytes", config.maxMessageSizeBytes.toString());
22
+ }
23
+ if (config.compress) {
24
+ url.searchParams.set("compress", "true");
25
+ }
26
+ return url.toString();
27
+ },
28
+ catch: (cause) => new ConnectionError({
29
+ reason: "Connect",
30
+ cause
31
+ })
32
+ });
27
33
  export const createSocket = (url) => Socket.makeWebSocket(url).pipe(Effect.mapError((cause) => new ConnectionError({ reason: "Connect", cause })));
28
34
  export const messageStream = (socket) => Stream.async((emit) => {
29
35
  const run = socket.runRaw((data) => {
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/internal/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAuB,EAAU,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEpC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAClD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAW,EACiE,EAAE,CAC9E,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAC9E,CAAA;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAqB,EACgC,EAAE,CACvD,MAAM,CAAC,KAAK,CAAuC,CAAC,IAAI,EAAE,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACvB,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC,CACF,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAC/C,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/internal/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAuB,EAA0C,EAAE,CAC1F,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEpC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QAC1D,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpF,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;IACvB,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,eAAe,CAAC;QAClB,MAAM,EAAE,SAAS;QACjB,KAAK;KACN,CAAC;CACL,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAW,EACiE,EAAE,CAC9E,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAC9E,CAAA;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAqB,EACgC,EAAE,CACvD,MAAM,CAAC,KAAK,CAAuC,CAAC,IAAI,EAAE,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACvB,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC,CACF,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAC/C,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-jetstream",
3
- "version": "1.0.4",
3
+ "version": "1.2.0",
4
4
  "description": "Effect-based client for the Bluesky Jetstream API",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -31,13 +31,23 @@
31
31
  "LICENSE"
32
32
  ],
33
33
  "scripts": {
34
- "build": "tsc",
34
+ "clean": "rm -rf dist",
35
+ "build": "bun run clean && tsc",
35
36
  "prepare": "effect-language-service patch",
36
37
  "typecheck": "tsc --noEmit",
38
+ "test": "bun test",
39
+ "check": "bun run typecheck && bun run test",
40
+ "harness": "bun run examples/harness.ts",
41
+ "harness:live": "bun run examples/harness.ts --mode live --durationSec 60 --reportEverySec 5",
42
+ "harness:replay": "bun run examples/harness.ts --mode replay --durationSec 30 --replayFile examples/fixtures/jetstream-sample.ndjson",
43
+ "bench:replay": "bun run examples/harness.ts --mode replay --durationSec 60 --reportEverySec 5 --replayFile examples/fixtures/jetstream-sample.ndjson --jsonOut tmp/bench-replay.json",
44
+ "bench:ci": "bun run examples/harness.ts --mode replay --durationSec 20 --reportEverySec 5 --replayRatePerSec 500 --replayFile examples/fixtures/jetstream-sample.ndjson --jsonOut tmp/bench-ci.json",
45
+ "bench:matrix": "bun run examples/benchmark-matrix.ts",
46
+ "bench:matrix:quick": "bun run examples/benchmark-matrix.ts --trials 2 --warmupTrials 1 --durationSec 6 --rates 500",
37
47
  "prepublishOnly": "bun run build",
38
48
  "changeset": "changeset",
39
49
  "version": "changeset version",
40
- "release": "bun run build && changeset publish"
50
+ "release": "bun run check && bun run build && changeset publish"
41
51
  },
42
52
  "devDependencies": {
43
53
  "@changesets/cli": "^2.29.8",