@ironflow/browser 0.1.0-test.2 → 0.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 +3 -3
- package/dist/client.d.ts +202 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +671 -7
- package/dist/client.js.map +1 -1
- package/dist/config-client.d.ts +43 -0
- package/dist/config-client.d.ts.map +1 -0
- package/dist/config-client.js +130 -0
- package/dist/config-client.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/kv.d.ts +79 -0
- package/dist/kv.d.ts.map +1 -0
- package/dist/kv.js +289 -0
- package/dist/kv.js.map +1 -0
- package/dist/subscription.d.ts +2 -0
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +57 -18
- package/dist/subscription.js.map +1 -1
- package/dist/transport/connectrpc.d.ts.map +1 -1
- package/dist/transport/connectrpc.js +28 -7
- package/dist/transport/connectrpc.js.map +1 -1
- package/dist/transport/index.d.ts +2 -2
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/types.d.ts +4 -0
- package/dist/transport/types.d.ts.map +1 -1
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/transport/websocket.js +38 -2
- package/dist/transport/websocket.js.map +1 -1
- package/package.json +10 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ironflow/browser
|
|
2
2
|
|
|
3
|
-
Browser client for [Ironflow](https://github.com/
|
|
3
|
+
Browser client for [Ironflow](https://github.com/sahina/ironflow), an event-driven backend platform. Provides real-time subscriptions, workflow triggers, and event emission for web applications.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -29,7 +29,7 @@ const run = await ironflow.trigger('process-order', {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
// Emit events
|
|
32
|
-
await ironflow.emit('order.approved', { orderId: '123' });
|
|
32
|
+
await ironflow.emit('order.approved', { orderId: '123' }, { version: 1 });
|
|
33
33
|
|
|
34
34
|
// Cleanup
|
|
35
35
|
sub.unsubscribe();
|
|
@@ -51,7 +51,7 @@ sub.unsubscribe();
|
|
|
51
51
|
| `ironflow.connect()` | Connect to the server |
|
|
52
52
|
| `ironflow.subscribe(pattern, options)` | Subscribe to events |
|
|
53
53
|
| `ironflow.trigger(functionId, options)` | Trigger a workflow |
|
|
54
|
-
| `ironflow.emit(eventName, data)` | Emit an event |
|
|
54
|
+
| `ironflow.emit(eventName, data, options?)` | Emit an event |
|
|
55
55
|
| `ironflow.getRun(runId)` | Get run status |
|
|
56
56
|
|
|
57
57
|
## Browser Compatibility
|
package/dist/client.d.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Singleton client for browser-based real-time interactions with Ironflow.
|
|
5
5
|
*/
|
|
6
|
-
import type { Run, ListRunsOptions, ListRunsResult, TriggerResult, EmitOptions, EmitResult, SubscriptionErrorInfo, SubscriptionCallbacks, Subscription, AckableSubscription, ConnectionState } from "@ironflow/core";
|
|
6
|
+
import type { Run, ListRunsOptions, ListRunsResult, TriggerResult, EmitOptions, EmitResult, SubscriptionErrorInfo, SubscriptionCallbacks, Subscription, AckableSubscription, ConnectionState, AppendEventInput, AppendOptions, AppendResult, ReadStreamOptions, StreamEvent, StreamInfo, EntitySubscribeOptions, GetProjectionOptions, RebuildProjectionOptions, ProjectionStatusInfo, ProjectionStateResult, ProjectionSubscriptionCallbacks } from "@ironflow/core";
|
|
7
7
|
import type { IronflowConfig, IronflowConfigOptions } from "./config.js";
|
|
8
8
|
import { type BrowserSubscribeOptions, type SubscriptionGroup } from "./subscription.js";
|
|
9
|
+
import { BrowserKVClient } from "./kv.js";
|
|
10
|
+
import { BrowserConfigClient } from "./config-client.js";
|
|
9
11
|
/**
|
|
10
12
|
* Ironflow browser client singleton
|
|
11
13
|
*/
|
|
@@ -125,6 +127,42 @@ declare class IronflowClient {
|
|
|
125
127
|
* Cancel a running run
|
|
126
128
|
*/
|
|
127
129
|
cancelRun(runId: string, reason?: string): Promise<Run>;
|
|
130
|
+
/**
|
|
131
|
+
* Retry a failed run
|
|
132
|
+
*/
|
|
133
|
+
retryRun(runId: string, fromStep?: string): Promise<Run>;
|
|
134
|
+
/**
|
|
135
|
+
* Patch a step's output (hot patching)
|
|
136
|
+
*/
|
|
137
|
+
patchStep(stepId: string, output: Record<string, unknown>, reason?: string): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Resume a paused or failed run
|
|
140
|
+
*/
|
|
141
|
+
resumeRun(runId: string, fromStep?: string): Promise<Run>;
|
|
142
|
+
/**
|
|
143
|
+
* List registered functions
|
|
144
|
+
*/
|
|
145
|
+
listFunctions(): Promise<unknown[]>;
|
|
146
|
+
/**
|
|
147
|
+
* List connected workers
|
|
148
|
+
*/
|
|
149
|
+
listWorkers(): Promise<unknown[]>;
|
|
150
|
+
/**
|
|
151
|
+
* Health check
|
|
152
|
+
*/
|
|
153
|
+
health(): Promise<{
|
|
154
|
+
status: string;
|
|
155
|
+
timestamp: string;
|
|
156
|
+
version: string;
|
|
157
|
+
}>;
|
|
158
|
+
/**
|
|
159
|
+
* Get server capabilities
|
|
160
|
+
*/
|
|
161
|
+
getCapabilities(): Promise<{
|
|
162
|
+
transports: string[];
|
|
163
|
+
features: string[];
|
|
164
|
+
version: string;
|
|
165
|
+
}>;
|
|
128
166
|
/**
|
|
129
167
|
* Emit an event
|
|
130
168
|
*
|
|
@@ -141,6 +179,163 @@ declare class IronflowClient {
|
|
|
141
179
|
* Join a consumer group for load-balanced event processing
|
|
142
180
|
*/
|
|
143
181
|
joinConsumerGroup<T = unknown>(groupName: string, pattern: string, callbacksAndOptions: SubscriptionCallbacks<T> & BrowserSubscribeOptions): Promise<AckableSubscription>;
|
|
182
|
+
/**
|
|
183
|
+
* Entity stream operations
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Append an event to a stream
|
|
188
|
+
* const result = await ironflow.streams.append("order-123", {
|
|
189
|
+
* name: "order.created",
|
|
190
|
+
* data: { total: 100 },
|
|
191
|
+
* entityType: "order",
|
|
192
|
+
* });
|
|
193
|
+
*
|
|
194
|
+
* // Read events from a stream
|
|
195
|
+
* const { events } = await ironflow.streams.read("order-123", { limit: 10 });
|
|
196
|
+
*
|
|
197
|
+
* // Get stream info
|
|
198
|
+
* const info = await ironflow.streams.getInfo("order-123");
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
streams: {
|
|
202
|
+
/**
|
|
203
|
+
* Append an event to an entity stream
|
|
204
|
+
*/
|
|
205
|
+
append: (entityId: string, input: AppendEventInput, options?: AppendOptions) => Promise<AppendResult>;
|
|
206
|
+
/**
|
|
207
|
+
* Read events from an entity stream
|
|
208
|
+
*/
|
|
209
|
+
read: (entityId: string, options?: ReadStreamOptions) => Promise<{
|
|
210
|
+
events: StreamEvent[];
|
|
211
|
+
totalCount: number;
|
|
212
|
+
}>;
|
|
213
|
+
/**
|
|
214
|
+
* Get information about an entity stream
|
|
215
|
+
*/
|
|
216
|
+
getInfo: (entityId: string) => Promise<StreamInfo>;
|
|
217
|
+
/**
|
|
218
|
+
* Subscribe to real-time events for an entity stream
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const sub = await ironflow.streams.subscribe("order-123", {
|
|
223
|
+
* entityType: "order",
|
|
224
|
+
* onEvent: (event) => console.log(event),
|
|
225
|
+
* replay: 100,
|
|
226
|
+
* });
|
|
227
|
+
*
|
|
228
|
+
* // Cleanup
|
|
229
|
+
* sub.unsubscribe();
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
subscribe: (entityId: string, options: EntitySubscribeOptions) => Promise<Subscription>;
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Get the current state of a projection
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* const result = await ironflow.getProjection<OrderStats>('order-stats');
|
|
240
|
+
* console.log(result.state); // { totalOrders: 42, ... }
|
|
241
|
+
*
|
|
242
|
+
* // With partition
|
|
243
|
+
* const result = await ironflow.getProjection('order-stats', { partition: 'customer-123' });
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
getProjection<TState = unknown>(name: string, options?: GetProjectionOptions): Promise<ProjectionStateResult<TState>>;
|
|
247
|
+
/**
|
|
248
|
+
* Get the status of a projection
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const status = await ironflow.getProjectionStatus('order-stats');
|
|
253
|
+
* console.log(status.status); // 'active' | 'rebuilding' | 'paused' | 'error'
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
getProjectionStatus(name: string): Promise<ProjectionStatusInfo>;
|
|
257
|
+
/**
|
|
258
|
+
* Trigger a rebuild of a projection
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* const result = await ironflow.rebuildProjection('order-stats');
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
265
|
+
rebuildProjection(name: string, options?: RebuildProjectionOptions): Promise<{
|
|
266
|
+
status: string;
|
|
267
|
+
}>;
|
|
268
|
+
/**
|
|
269
|
+
* List all registered projections
|
|
270
|
+
*
|
|
271
|
+
* @example
|
|
272
|
+
* ```typescript
|
|
273
|
+
* const projections = await ironflow.listProjections();
|
|
274
|
+
* projections.forEach(p => console.log(p.name, p.status));
|
|
275
|
+
* ```
|
|
276
|
+
*/
|
|
277
|
+
listProjections(): Promise<ProjectionStatusInfo[]>;
|
|
278
|
+
/**
|
|
279
|
+
* Subscribe to real-time updates for a projection
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```typescript
|
|
283
|
+
* const sub = await ironflow.subscribeToProjection<OrderStats>('order-stats', {
|
|
284
|
+
* onUpdate: (state, event) => console.log('Updated:', state),
|
|
285
|
+
* onError: (error) => console.error(error),
|
|
286
|
+
* });
|
|
287
|
+
*
|
|
288
|
+
* // With partition
|
|
289
|
+
* const sub = await ironflow.subscribeToProjection('order-stats', {
|
|
290
|
+
* onUpdate: (state, event) => console.log('Updated:', state),
|
|
291
|
+
* }, { partition: 'customer-123' });
|
|
292
|
+
*
|
|
293
|
+
* // Cleanup
|
|
294
|
+
* sub.unsubscribe();
|
|
295
|
+
* ```
|
|
296
|
+
*/
|
|
297
|
+
subscribeToProjection<TState = unknown>(name: string, callbacks: ProjectionSubscriptionCallbacks<TState>, options?: {
|
|
298
|
+
partition?: string;
|
|
299
|
+
replay?: number;
|
|
300
|
+
}): Promise<Subscription>;
|
|
301
|
+
/**
|
|
302
|
+
* KV store operations
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* const kv = ironflow.kv();
|
|
307
|
+
* const bucket = await kv.createBucket({ name: "sessions", ttlSeconds: 3600 });
|
|
308
|
+
* const handle = kv.bucket("sessions");
|
|
309
|
+
* const { revision } = await handle.put("user.123", { token: "abc" });
|
|
310
|
+
* const entry = await handle.get("user.123");
|
|
311
|
+
*
|
|
312
|
+
* // Watch for changes
|
|
313
|
+
* const watcher = handle.watch({
|
|
314
|
+
* onUpdate: (event) => console.log(event),
|
|
315
|
+
* }, { key: "user.*" });
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
kv(): BrowserKVClient;
|
|
319
|
+
/**
|
|
320
|
+
* Config management operations
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* ```typescript
|
|
324
|
+
* const cfg = ironflow.configManager();
|
|
325
|
+
* await cfg.set("app", { featureX: true, maxRetries: 3 });
|
|
326
|
+
* const { data, revision } = await cfg.get("app");
|
|
327
|
+
* await cfg.patch("app", { maxRetries: 5 });
|
|
328
|
+
* const configs = await cfg.list();
|
|
329
|
+
* await cfg.delete("app");
|
|
330
|
+
*
|
|
331
|
+
* // Watch for changes
|
|
332
|
+
* const sub = await cfg.watch("app", {
|
|
333
|
+
* onEvent: (config) => console.log(config),
|
|
334
|
+
* });
|
|
335
|
+
* sub.unsubscribe();
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
338
|
+
configManager(): BrowserConfigClient;
|
|
144
339
|
/**
|
|
145
340
|
* Pattern helpers for building subscription patterns
|
|
146
341
|
*/
|
|
@@ -156,8 +351,14 @@ declare class IronflowClient {
|
|
|
156
351
|
};
|
|
157
352
|
private ensureConfigured;
|
|
158
353
|
private cleanup;
|
|
354
|
+
/**
|
|
355
|
+
* Reset client state for testing. Not intended for production use.
|
|
356
|
+
* @internal
|
|
357
|
+
*/
|
|
358
|
+
_resetForTesting(): void;
|
|
159
359
|
private setupVisibilityHandling;
|
|
160
360
|
private request;
|
|
361
|
+
private streamRequest;
|
|
161
362
|
private mapRunResponse;
|
|
162
363
|
}
|
|
163
364
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,GAAG,EAEH,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EAChB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|