@kontsedal/olas-core 0.0.6 → 0.1.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.
Files changed (61) hide show
  1. package/dist/index.cjs +0 -0
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +109 -27
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +109 -27
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +0 -0
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/{root-B6pNq75w.mjs → root-Byq-QYTp.mjs} +1465 -347
  10. package/dist/root-Byq-QYTp.mjs.map +1 -0
  11. package/dist/{root-CFgYhBd-.cjs → root-CPSL5kpR.cjs} +1470 -346
  12. package/dist/root-CPSL5kpR.cjs.map +1 -0
  13. package/dist/testing.cjs +5 -1
  14. package/dist/testing.cjs.map +1 -1
  15. package/dist/testing.d.cts +3 -2
  16. package/dist/testing.d.cts.map +1 -1
  17. package/dist/testing.d.mts +3 -2
  18. package/dist/testing.d.mts.map +1 -1
  19. package/dist/testing.mjs +5 -2
  20. package/dist/testing.mjs.map +1 -1
  21. package/dist/{types-Bmi04hDI.d.mts → types-Brp-4WaZ.d.mts} +233 -23
  22. package/dist/types-Brp-4WaZ.d.mts.map +1 -0
  23. package/dist/{types-BsZMPPOE.d.cts → types-DzDIypPo.d.cts} +233 -23
  24. package/dist/types-DzDIypPo.d.cts.map +1 -0
  25. package/package.json +4 -1
  26. package/src/controller/instance.ts +345 -94
  27. package/src/controller/root.ts +52 -30
  28. package/src/controller/types.ts +55 -4
  29. package/src/emitter.ts +8 -2
  30. package/src/errors.ts +39 -3
  31. package/src/forms/field.ts +219 -25
  32. package/src/forms/form-types.ts +16 -3
  33. package/src/forms/form.ts +360 -38
  34. package/src/forms/index.ts +3 -1
  35. package/src/forms/types.ts +27 -1
  36. package/src/forms/validators.ts +45 -11
  37. package/src/index.ts +13 -7
  38. package/src/query/client.ts +237 -58
  39. package/src/query/define.ts +0 -0
  40. package/src/query/entry.ts +259 -15
  41. package/src/query/focus-online.ts +53 -11
  42. package/src/query/infinite.ts +351 -47
  43. package/src/query/keys.ts +33 -2
  44. package/src/query/local.ts +3 -0
  45. package/src/query/mutation.ts +27 -6
  46. package/src/query/plugin.ts +43 -4
  47. package/src/query/types.ts +76 -6
  48. package/src/query/use.ts +53 -10
  49. package/src/selection.ts +49 -12
  50. package/src/signals/readonly.ts +3 -0
  51. package/src/signals/runtime.ts +27 -0
  52. package/src/signals/types.ts +10 -0
  53. package/src/testing.ts +9 -0
  54. package/src/timing/debounced.ts +106 -23
  55. package/src/timing/index.ts +1 -1
  56. package/src/timing/throttled.ts +85 -28
  57. package/src/utils.ts +15 -2
  58. package/dist/root-B6pNq75w.mjs.map +0 -1
  59. package/dist/root-CFgYhBd-.cjs.map +0 -1
  60. package/dist/types-Bmi04hDI.d.mts.map +0 -1
  61. package/dist/types-BsZMPPOE.d.cts.map +0 -1
@@ -1,8 +1,14 @@
1
1
  //#region src/emitter.d.ts
2
2
  /**
3
3
  * Synchronous fan-out event bus. Handlers run in the order they subscribed.
4
- * Handlers added during emit don't fire for the current emission; handlers
5
- * removed during emit are skipped from that point in the iteration.
4
+ *
5
+ * Emission iterates a SNAPSHOT of the handler set taken at the start of
6
+ * `emit()`. So within one emission: a handler added during emit does NOT fire
7
+ * for the current emission, and a handler removed during emit STILL fires for
8
+ * the current emission (it was captured in the snapshot).
9
+ *
10
+ * Handlers are stored in a `Set` keyed by reference — calling `on(h)` twice
11
+ * with the same `h` registers it ONCE; a single unsubscribe then removes it.
6
12
  *
7
13
  * `Emitter<void>` exposes `emit()` (no argument); other shapes expose
8
14
  * `emit(value: T)`.
@@ -46,12 +52,33 @@ declare function createEmitter<T = void>(options?: {
46
52
  *
47
53
  * `'plugin'` is used for exceptions raised by `QueryClientPlugin` callbacks
48
54
  * (`@kontsedal/olas-cross-tab` and friends); SPEC §13.2.
55
+ *
56
+ * The remaining fields are correlation hooks for telemetry adapters
57
+ * (Sentry / OpenTelemetry breadcrumbs / Datadog RUM): `eventId` is a stable
58
+ * per-dispatch UUID, `timestamp` is wall-clock ms, `attempt` is the
59
+ * 0-based retry attempt for cache/mutation paths, `cause` is the
60
+ * `Error.cause`-style underlying error if the surfaced error wrapped it,
61
+ * `pluginName` identifies the throwing plugin (set only when `kind ==
62
+ * 'plugin'`).
49
63
  */
50
64
  type ErrorContext = {
51
65
  kind: 'effect' | 'cache' | 'mutation' | 'emitter' | 'construction' | 'plugin';
52
66
  controllerPath: readonly string[];
53
67
  queryKey?: readonly unknown[];
68
+ eventId: string;
69
+ timestamp: number;
70
+ attempt?: number;
71
+ cause?: unknown;
72
+ pluginName?: string;
54
73
  };
74
+ /** Signature of `RootOptions.onError`. */
75
+ type ErrorHandler = (err: unknown, context: ErrorContext) => void;
76
+ /**
77
+ * Partial context — `dispatchError` fills in `eventId` + `timestamp`. Call
78
+ * sites pass the diagnostic fields they know about; the dispatcher stamps
79
+ * the per-dispatch correlation data.
80
+ */
81
+ type ErrorContextInput = Omit<ErrorContext, 'eventId' | 'timestamp'>;
55
82
  //#endregion
56
83
  //#region src/signals/types.d.ts
57
84
  /**
@@ -69,6 +96,16 @@ type ReadSignal<T> = {
69
96
  * unsubscribe function.
70
97
  */
71
98
  subscribe(handler: (value: T) => void): () => void;
99
+ /**
100
+ * Same as `subscribe`, but does NOT fire the synchronous "current value"
101
+ * callback on subscribe — only fires on subsequent changes. Useful for
102
+ * "react to user changes" semantics where the initial fire would be a
103
+ * spurious notification (the most common consumer pattern — `useField`,
104
+ * `usePersisted`, and the React adapter all hand-rolled this).
105
+ *
106
+ * Returns the unsubscribe function.
107
+ */
108
+ subscribeChanges(handler: (value: T) => void): () => void;
72
109
  };
73
110
  /**
74
111
  * Writable reactive value. `value` is assignable; `set(value)` is the
@@ -84,7 +121,31 @@ type Signal<T> = ReadSignal<T> & {
84
121
  type Computed<T> = ReadSignal<T>;
85
122
  //#endregion
86
123
  //#region src/forms/types.d.ts
87
- type Validator<T> = (value: T, signal: AbortSignal) => string | null | Promise<string | null>;
124
+ /**
125
+ * A single validation issue, optionally targeting a descendant of a form tree.
126
+ *
127
+ * - An **empty** `path` means the node the validator is attached to itself —
128
+ * for a leaf `Field` that's the field; for a `Form` / `FieldArray` it's the
129
+ * node's `topLevelErrors`.
130
+ * - A **non-empty** `path` routes the `message` to the matching descendant
131
+ * (`Form` walks keys, `FieldArray` walks numeric indices). Unresolvable
132
+ * paths fall back to the owning node's `topLevelErrors` rather than vanishing.
133
+ *
134
+ * Segments are object keys (`string`) or array indices (`number`). Returned by
135
+ * form-level validators (cross-field rules) and by the Standard-Schema
136
+ * `validator(...)` adapter, which maps each `issue.path` here. See SPEC §8.3.
137
+ */
138
+ type FormIssue = {
139
+ path: (string | number)[];
140
+ message: string;
141
+ };
142
+ /**
143
+ * What a {@link Validator} may return synchronously. A plain `string` is a
144
+ * message on the node itself (equivalent to a `FormIssue` with an empty path);
145
+ * `null` means "no error"; a `FormIssue[]` targets specific descendants.
146
+ */
147
+ type ValidatorResult = string | null | FormIssue[];
148
+ type Validator<T> = (value: T, signal: AbortSignal) => ValidatorResult | Promise<ValidatorResult>;
88
149
  //#endregion
89
150
  //#region src/forms/form-types.d.ts
90
151
  type FormSchema = {
@@ -144,6 +205,12 @@ type Form<S extends FormSchema> = {
144
205
  readonly isDirty: ReadSignal<boolean>;
145
206
  readonly touched: ReadSignal<boolean>;
146
207
  readonly isValidating: ReadSignal<boolean>;
208
+ /**
209
+ * Dotted paths of every leaf whose `isDirty` is true. Useful for PATCH
210
+ * payloads and "highlight changed inputs" UIs. Field paths use dot
211
+ * notation; array items use bracket notation (`items[0].title`).
212
+ */
213
+ readonly dirtyFields: ReadSignal<string[]>;
147
214
  /**
148
215
  * `true` while a `submit(...)` is in flight. Clears when the handler
149
216
  * resolves, throws, or pre-submit validation fails.
@@ -166,7 +233,14 @@ type Form<S extends FormSchema> = {
166
233
  * `Form`-traversal code (nested-form initial application).
167
234
  */
168
235
  resetWithInitial(partial: DeepPartial<FormValue<S>>): void; /** Reset every leaf to its initial value. */
169
- reset(): void; /** Mark every leaf as touched (so error messages appear). */
236
+ reset(): void;
237
+ /**
238
+ * Reset a named subtree to its initial. Path uses the same dotted /
239
+ * bracket notation as `setErrors` / `flatErrors`. Unlike `Form.set({foo:
240
+ * undefined})` (which is "leave alone"), this is the explicit
241
+ * "clear this subtree" gesture. Pass `''` to reset the whole form.
242
+ */
243
+ clearSubtree(path: string): void; /** Mark every leaf as touched (so error messages appear). */
170
244
  markAllTouched(): void; /** Re-run every leaf's validators. Resolves with true if all leaves are valid. */
171
245
  validate(): Promise<boolean>;
172
246
  /**
@@ -175,13 +249,13 @@ type Form<S extends FormSchema> = {
175
249
  * `submitError`. Returns `{ ok, data?, error? }` — see `FormImpl.submit`
176
250
  * for the full contract.
177
251
  */
178
- submit(handler: (value: FormValue<S>) => unknown | Promise<unknown>, options?: {
252
+ submit<R = unknown>(handler: (value: FormValue<S>) => R | Promise<R>, options?: {
179
253
  validateBeforeSubmit?: boolean;
180
254
  resetOnSuccess?: boolean;
181
255
  onError?: 'rethrow' | 'capture';
182
256
  }): Promise<{
183
257
  ok: boolean;
184
- data?: unknown;
258
+ data?: Awaited<R>;
185
259
  error?: unknown;
186
260
  }>;
187
261
  /**
@@ -224,7 +298,7 @@ type FieldArray<I extends Field<any> | Form<any>> = {
224
298
  /** Lifecycle phase of an async resource. */
225
299
  type AsyncStatus = 'idle' | 'pending' | 'success' | 'error';
226
300
  /**
227
- * The eight reactive signals + three actions a subscriber sees for any async
301
+ * The nine reactive signals + three actions a subscriber sees for any async
228
302
  * resource (`LocalCache<T>` or a `Query` subscription). Spec §20.4.
229
303
  *
230
304
  * - `data` / `error` / `status` — current outcome.
@@ -233,6 +307,7 @@ type AsyncStatus = 'idle' | 'pending' | 'success' | 'error';
233
307
  * - `isStale` — true when `staleTime` has elapsed since `lastUpdatedAt`.
234
308
  * - `lastUpdatedAt` — epoch ms of last success.
235
309
  * - `hasPendingMutations` — at least one mutation has a snapshot on this entry.
310
+ * - `isPaused` — a fetch is parked waiting for network reconnect.
236
311
  *
237
312
  * Actions:
238
313
  * - `refetch()` — force a fetch; resolves with the result.
@@ -248,6 +323,15 @@ type AsyncState<T> = {
248
323
  isStale: ReadSignal<boolean>;
249
324
  lastUpdatedAt: ReadSignal<number | undefined>;
250
325
  hasPendingMutations: ReadSignal<boolean>;
326
+ /**
327
+ * True while a fetch is parked waiting for network reconnect — either an
328
+ * `online`-mode fetch deferred because `navigator.onLine` was `false`, or an
329
+ * `offlineFirst` fetch that hit a network error while offline and is waiting
330
+ * to retry on reconnect. Distinct from `isFetching` (nothing is in flight
331
+ * while parked) and from `status` (stays `idle` / last-success, never
332
+ * flips to `error` for the parked attempt). Spec §5.5.
333
+ */
334
+ isPaused: ReadSignal<boolean>;
251
335
  refetch: () => Promise<T>;
252
336
  reset: () => void;
253
337
  firstValue: () => Promise<T>;
@@ -288,6 +372,13 @@ type LocalCache<T> = AsyncState<T> & {
288
372
  };
289
373
  /** One entry inside a `DehydratedState`. */
290
374
  type DehydratedEntry = {
375
+ /**
376
+ * Stable query identity — `spec.queryId` when set, else an auto-assigned
377
+ * registration id. Namespaces the hydration buffer so a subscriber of query
378
+ * B can't adopt query A's payload just because their `key()` outputs hash
379
+ * the same (spec §15).
380
+ */
381
+ id: string;
291
382
  key: readonly unknown[];
292
383
  data: unknown;
293
384
  lastUpdatedAt: number;
@@ -325,6 +416,25 @@ type FetchCtx = {
325
416
  * cache args come after. This shape lets module-scoped queries read
326
417
  * `ctx.deps.api` etc. — no `setApiForQuery(api)` module-level capture needed.
327
418
  */
419
+ /**
420
+ * How a query behaves with respect to the network reachability signal.
421
+ *
422
+ * - `online` (default) — pause fetches while `navigator.onLine` is `false`;
423
+ * automatically resume when reconnect fires (via `subscribeReconnect`).
424
+ * Inflight fetches are NOT aborted on offline; a `bindEntry` / `acquire`
425
+ * that lands while offline simply defers the initial fetch. The deferred
426
+ * entry reports `isPaused: true` until reconnect.
427
+ * - `always` — never gate on connectivity; fetcher runs whenever requested.
428
+ * Useful for queries against `localhost` / IPC / a service worker that
429
+ * doesn't surface through `navigator.onLine`.
430
+ * - `offlineFirst` — start the fetch regardless; if it rejects with a
431
+ * network-shaped error (a `fetch` `TypeError`; `AbortError` excluded) while
432
+ * `navigator.onLine` is `false`, park the entry (`isPaused: true`, status
433
+ * stays `idle` / last-success) and retry on reconnect rather than surfacing
434
+ * the error. Matches TanStack's `offlineFirst` policy for app-shell-first
435
+ * PWAs.
436
+ */
437
+ type NetworkMode = 'online' | 'always' | 'offlineFirst';
328
438
  type QuerySpec<Args extends unknown[], T> = {
329
439
  key: (...args: Args) => unknown[];
330
440
  fetcher: (ctx: FetchCtx, ...args: Args) => Promise<T>;
@@ -336,6 +446,20 @@ type QuerySpec<Args extends unknown[], T> = {
336
446
  keepPreviousData?: boolean;
337
447
  retry?: RetryPolicy;
338
448
  retryDelay?: RetryDelay;
449
+ /**
450
+ * Network-mode policy. Defaults to `'online'`. See `NetworkMode` for the
451
+ * three policies. Override per-query for special cases (e.g. `'always'`
452
+ * for `localhost` queries that don't surface through `navigator.onLine`).
453
+ */
454
+ networkMode?: NetworkMode;
455
+ /**
456
+ * Whether to run `structuralShare(prev, next)` after a successful fetch.
457
+ * Defaults to `true`. Set `false` for queries returning large payloads
458
+ * (e.g. a 100k-row table) where the O(payload) deep walk on every poll
459
+ * is more expensive than re-rendering. With `false`, `applySuccess`
460
+ * writes the fetcher's result directly.
461
+ */
462
+ structuralShare?: boolean;
339
463
  /**
340
464
  * Stable identifier used by `QueryClientPlugin`s (e.g. `@kontsedal/olas-cross-tab`)
341
465
  * to locate the same query across tabs / processes / persistence layers.
@@ -346,10 +470,17 @@ type QuerySpec<Args extends unknown[], T> = {
346
470
  */
347
471
  queryId?: string;
348
472
  /**
349
- * Opt this query into cross-tab cache sync (`@kontsedal/olas-cross-tab`). No effect
350
- * without a `queryId` and without a plugin installed. SPEC §13.2.
473
+ * Opt this query into cross-tab cache sync (`@kontsedal/olas-cross-tab`).
474
+ * No effect without a `queryId` and without a plugin installed. SPEC §13.2.
475
+ *
476
+ * - `true` (legacy) — equivalent to `'data'`.
477
+ * - `'data'` — propagate explicit `setData`/`invalidate` writes.
478
+ *
479
+ * The `'infinite'` / `'both'` values were removed (T6.4): peers can't apply
480
+ * infinite-query page arrays cross-tab, so those broadcasts were channel
481
+ * noise. Infinite cross-tab is tracked in `BACKLOG.md`.
351
482
  */
352
- crossTab?: boolean;
483
+ crossTab?: boolean | 'data';
353
484
  };
354
485
  /**
355
486
  * A module-scoped shared query handle. Bind a subscriber via
@@ -360,11 +491,21 @@ type Query<Args extends unknown[], T> = {
360
491
  readonly __olas: 'query'; /** Mark a specific keyed entry stale + trigger refetch if any subscribers. */
361
492
  invalidate(...args: Args): void; /** Mark every keyed entry stale + trigger refetch on all subscribers. */
362
493
  invalidateAll(): void; /** Patch the current data for a specific key. Returns a `Snapshot` for rollback. */
363
- setData(...args: [...Args, updater: (prev: T | undefined) => T]): Snapshot; /** Eagerly fetch into the cache without subscribing. */
494
+ setData(...args: [...Args, updater: (prev: T | undefined) => T]): Snapshot;
495
+ /**
496
+ * Cancel the in-flight fetch for a specific key (if any). Aborts + supersedes
497
+ * it, restores a settled status (`'success'` if data exists, else `'idle'`),
498
+ * and does NOT touch data. Use before an optimistic `setData` so an
499
+ * outgoing refetch's stale response can't clobber it (spec §5, §6.4).
500
+ */
501
+ cancel(...args: Args): void; /** Cancel in-flight fetches for every keyed entry of this query. */
502
+ cancelAll(): void; /** Eagerly fetch into the cache without subscribing. */
364
503
  prefetch(...args: Args): Promise<T>;
365
504
  };
366
- /** What `ctx.use(query, ...)` returns. Alias of `AsyncState<T>`. */
367
- type QuerySubscription<T> = AsyncState<T>;
505
+ /** What `ctx.use(query, ...)` returns `AsyncState<T>` plus `cancel()`. */
506
+ type QuerySubscription<T> = AsyncState<T> & {
507
+ /** Cancel this subscription's in-flight fetch (if any). See `Query.cancel`. */cancel: () => void;
508
+ };
368
509
  /**
369
510
  * Options passed to `ctx.use(query, opts)` to control the subscription
370
511
  * (reactive key, enabled-gating). The `key` thunk reads signals —
@@ -411,7 +552,9 @@ type InfiniteQuerySpec<Args extends unknown[], PageParam, TPage, TItem = TPage>
411
552
  refetchInterval?: number;
412
553
  keepPreviousData?: boolean;
413
554
  retry?: RetryPolicy;
414
- retryDelay?: RetryDelay;
555
+ retryDelay?: RetryDelay; /** See `QuerySpec.networkMode`. Defaults to `'online'`. */
556
+ networkMode?: NetworkMode; /** See `QuerySpec.structuralShare`. Applies to the head-page refresh. */
557
+ structuralShare?: boolean;
415
558
  /**
416
559
  * Stable identifier used by `QueryClientPlugin`s (`@kontsedal/olas-cross-tab`,
417
560
  * etc.). Infinite queries do NOT propagate cross-tab in v1 — the
@@ -420,10 +563,12 @@ type InfiniteQuerySpec<Args extends unknown[], PageParam, TPage, TItem = TPage>
420
563
  */
421
564
  queryId?: string;
422
565
  /**
423
- * Opt into cross-tab sync. No effect for infinite queries in v1 (see
424
- * `queryId` doc above).
566
+ * Accepted for API symmetry, but infinite queries do NOT propagate
567
+ * cross-tab: peers can't apply page-array payloads (core's remote-apply
568
+ * paths early-return for infinite defs). The `'infinite'` / `'both'` values
569
+ * were removed in T6.4; infinite cross-tab is tracked in `BACKLOG.md`.
425
570
  */
426
- crossTab?: boolean;
571
+ crossTab?: boolean | 'data';
427
572
  };
428
573
  /**
429
574
  * Module-scoped handle for a paginated query. Mirrors `Query<Args, TPage[]>`
@@ -434,6 +579,10 @@ type InfiniteQuery<Args extends unknown[], TPage, _TItem> = {
434
579
  invalidate(...args: Args): void;
435
580
  invalidateAll(): void;
436
581
  setData(...args: [...Args, updater: (prev: TPage[] | undefined) => TPage[]]): Snapshot;
582
+ /** Cancel the in-flight fetch (initial/refetch or paging) for a key. See
583
+ * `Query.cancel` (spec §5, §6.4). */
584
+ cancel(...args: Args): void; /** Cancel in-flight fetches for every keyed entry of this infinite query. */
585
+ cancelAll(): void;
437
586
  prefetch(...args: Args): Promise<TPage>;
438
587
  };
439
588
  /**
@@ -452,7 +601,8 @@ type InfiniteQuerySubscription<TPage, TItem> = AsyncState<TPage[]> & {
452
601
  isFetchingNextPage: ReadSignal<boolean>;
453
602
  isFetchingPreviousPage: ReadSignal<boolean>;
454
603
  fetchNextPage: () => Promise<void>;
455
- fetchPreviousPage: () => Promise<void>;
604
+ fetchPreviousPage: () => Promise<void>; /** Cancel this subscription's in-flight fetch (if any). See `Query.cancel`. */
605
+ cancel: () => void;
456
606
  };
457
607
  //#endregion
458
608
  //#region src/devtools.d.ts
@@ -672,7 +822,16 @@ type Mutation<V, R> = {
672
822
  data: ReadSignal<R | undefined>;
673
823
  error: ReadSignal<unknown | undefined>;
674
824
  isPending: ReadSignal<boolean>;
675
- lastVariables: ReadSignal<V | undefined>; /** Clear `data` / `error` / `lastVariables` without aborting in-flight runs. */
825
+ /**
826
+ * Outcome of the latest run: `'idle'` (never run / reset), `'pending'`
827
+ * (in flight), `'success'`, `'error'`. Distinct from `isPending` (which
828
+ * stays true while ANY run is in flight, for parallel mode) and from `data`
829
+ * — a `void` mutation still reports `status: 'success'` after it resolves.
830
+ * A superseded `latest-wins` run does NOT flip status to `'error'`; the
831
+ * superseder owns the final status.
832
+ */
833
+ status: ReadSignal<AsyncStatus>;
834
+ lastVariables: ReadSignal<V | undefined>; /** Clear `data` / `error` / `lastVariables` / `status` without aborting in-flight runs. */
676
835
  reset(): void; /** Abort in-flight runs and tear down. Idempotent. Called by the parent controller's dispose. */
677
836
  dispose(): void;
678
837
  };
@@ -767,7 +926,9 @@ type SetDataEvent = {
767
926
  isRemote: boolean;
768
927
  /**
769
928
  * Origin of the write. `'set'` covers explicit `client.setData` (mutations,
770
- * optimistic updates, plugin-initiated patches). `'fetch'` fires when the
929
+ * optimistic updates AND their `snapshot.rollback()`, plugin-initiated
930
+ * patches) — a rollback re-broadcasts the restored value so peers drop the
931
+ * failed optimistic state (T3.6). `'fetch'` fires when the
771
932
  * query fetcher resolved successfully and wrote the result into the entry
772
933
  * — emitted after the data signal is settled. `'remote'` is the
773
934
  * `applyRemoteSetData` path (cross-tab / server-push); equivalent to
@@ -822,6 +983,13 @@ type MutationSettleEvent = {
822
983
  * `onError` handler with `kind: 'plugin'`.
823
984
  */
824
985
  type QueryClientPlugin = {
986
+ /**
987
+ * Optional human-readable identifier surfaced in `ErrorContext.pluginName`
988
+ * when this plugin's callback throws. Without it, `pluginName` is left
989
+ * `undefined`. Recommended for shipped plugins so Sentry/OTel adapters
990
+ * can attribute errors back to the right package.
991
+ */
992
+ readonly name?: string;
825
993
  /**
826
994
  * Called once after the `QueryClient` is constructed. Use it to wire up
827
995
  * transport listeners and capture the `QueryClientPluginApi`. SPEC §13.2.
@@ -1002,6 +1170,20 @@ type Collection<K, Api> = {
1002
1170
  readonly size: ReadSignal<number>;
1003
1171
  get(key: K): Api | undefined;
1004
1172
  has(key: K): boolean;
1173
+ /**
1174
+ * Suspend a specific collection item by key — pauses its effects without
1175
+ * disposing it (mirrors `attach.suspend()`). Useful for virtualized
1176
+ * lists where rows scrolled out of view should stop running their
1177
+ * effects but stay reconstructible without re-fetching their state.
1178
+ *
1179
+ * No-op if the key isn't in the collection. Neither the collection
1180
+ * reconcile nor a whole-tree `suspend()`/`resume()` cascade (e.g.
1181
+ * KeepAlive) will auto-resume a suspended item — call `resumeItem(key)`
1182
+ * to bring it back (spec §4.1).
1183
+ */
1184
+ suspendItem(key: K): void; /** Resume a previously-suspended item. No-op if not suspended / not present. */
1185
+ resumeItem(key: K): void; /** Whether the item is currently suspended. False when not present. */
1186
+ isItemSuspended(key: K): boolean;
1005
1187
  };
1006
1188
  /**
1007
1189
  * Homogeneous form of `ctx.collection`: one controller def for every item,
@@ -1082,7 +1264,23 @@ type Ctx<TDeps = AmbientDeps> = {
1082
1264
  use<Args extends unknown[], TPage, TItem>(source: InfiniteQuery<Args, TPage, TItem>, keyOrOptions?: (() => readonly [...Args]) | UseOptions<Args>): InfiniteQuerySubscription<TPage, TItem>;
1083
1265
  mutation<V, R>(spec: MutationSpec<V, R>): Mutation<V, R>;
1084
1266
  emitter<T = void>(): Emitter<T>;
1085
- field<T>(initial: T, validators?: ReadonlyArray<Validator<T>>): Field<T>;
1267
+ /**
1268
+ * Convenience re-export of the standalone `signal(initial)` function bound
1269
+ * to the controller's surface. Identical semantics — there's no lifecycle
1270
+ * to manage for a plain signal — but having it on `ctx` makes "everything
1271
+ * I need is on ctx" feel honest and lets consumers avoid importing from
1272
+ * `@kontsedal/olas-core` separately.
1273
+ */
1274
+ signal<T>(initial: T): Signal<T>;
1275
+ /**
1276
+ * Convenience re-export of the standalone `computed(fn)` function bound
1277
+ * to the controller's surface. Re-evaluates on tracked-dep change; same
1278
+ * caveat as `signal` — no lifecycle binding, just discoverability.
1279
+ */
1280
+ computed<T>(fn: () => T): Computed<T>;
1281
+ field<T>(initial: T, validators?: ReadonlyArray<Validator<T>>, options?: {
1282
+ validateOn?: 'change' | 'blur' | 'submit';
1283
+ }): Field<T>;
1086
1284
  form<S extends FormSchema>(schema: S, options?: FormOptions<S>): Form<S>;
1087
1285
  fieldArray<I extends Field<any> | Form<any>>(itemFactory: (initial?: ItemInitial<I>) => I, options?: FieldArrayOptions<I>): FieldArray<I>;
1088
1286
  child<Props, Api>(def: ControllerDef<Props, Api>, props: Props, options?: {
@@ -1212,8 +1410,20 @@ type Root<Api> = Api & {
1212
1410
  resume(): void;
1213
1411
  dehydrate(): DehydratedState;
1214
1412
  waitForIdle(): Promise<void>;
1413
+ /**
1414
+ * Apply a single dehydrated query entry to this root's cache. Idempotent
1415
+ * across pre-bind / post-bind: if a `ClientEntry` for `queryId + keyArgs`
1416
+ * already exists, the data is written through and supersedes any inflight
1417
+ * fetch; otherwise it's buffered for the next `bindEntry`.
1418
+ *
1419
+ * Designed for streaming SSR — each `<Suspense>` boundary that resolves
1420
+ * on the server can push its entry into the live client root as the
1421
+ * bootstrap script executes. Also useful for `localStorage` warm-starts
1422
+ * and similar "I have fresh data from elsewhere, inject it" patterns.
1423
+ */
1424
+ applyDehydratedEntry(queryId: string, keyArgs: readonly unknown[], data: unknown, lastUpdatedAt: number): void;
1215
1425
  readonly __debug: DebugBus;
1216
1426
  };
1217
1427
  //#endregion
1218
- export { DeepPartial as $, Mutation as A, InfiniteQuerySubscription as B, QueryClientPluginApi as C, _unregisterMutationById as D, SetDataEvent as E, DebugBus as F, LocalCache as G, AsyncStatus as H, DebugCacheEntry as I, QuerySubscription as J, Query as K, DebugEvent as L, MutationDef as M, MutationSpec as N, lookupRegisteredMutation as O, defineMutation as P, UseOptions as Q, InfiniteQuery as R, QueryClientPlugin as S, RegisteredQuery as T, DehydratedEntry as U, AsyncState as V, DehydratedState as W, RetryPolicy as X, RetryDelay as Y, Snapshot as Z, defineScope as _, Emitter as _t, CollectionFactoryResult as a, Form as at, MutationEnqueueEvent as b, CtrlApi as c, FormSchema as ct, Field as d, ItemInitial as dt, FieldArray as et, LazyChild as f, Validator as ft, ScopeOptions as g, ErrorContext as gt, Scope as h, Signal as ht, CollectionFactoryOptions as i, FieldArrayValue as it, MutationConcurrency as j, lookupRegisteredQuery as k, CtrlProps as l, FormValidator as lt, RootOptions as m, ReadSignal as mt, Collection as n, FieldArrayOptions as nt, CollectionHomogeneousOptions as o, FormErrors as ot, Root as p, Computed as pt, QuerySpec as q, CollectionFactoryApi as r, FieldArrayValidator as rt, ControllerDef as s, FormOptions as st, AmbientDeps as t, FieldArrayItemErrors as tt, Ctx as u, FormValue as ut, GcEvent as v, EmitterErrorReporter as vt, RegisteredMutation as w, MutationSettleEvent as x, InvalidateEvent as y, createEmitter as yt, InfiniteQuerySpec as z };
1219
- //# sourceMappingURL=types-BsZMPPOE.d.cts.map
1428
+ export { UseOptions as $, Mutation as A, InfiniteQuerySubscription as B, QueryClientPluginApi as C, EmitterErrorReporter as Ct, _unregisterMutationById as D, SetDataEvent as E, DebugBus as F, LocalCache as G, AsyncStatus as H, DebugCacheEntry as I, QuerySpec as J, NetworkMode as K, DebugEvent as L, MutationDef as M, MutationSpec as N, lookupRegisteredMutation as O, defineMutation as P, Snapshot as Q, InfiniteQuery as R, QueryClientPlugin as S, Emitter as St, RegisteredQuery as T, DehydratedEntry as U, AsyncState as V, DehydratedState as W, RetryDelay as X, QuerySubscription as Y, RetryPolicy as Z, defineScope as _, ReadSignal as _t, CollectionFactoryResult as a, FieldArrayValue as at, MutationEnqueueEvent as b, ErrorContextInput as bt, CtrlApi as c, FormOptions as ct, Field as d, FormValue as dt, DeepPartial as et, LazyChild as f, ItemInitial as ft, ScopeOptions as g, Computed as gt, Scope as h, ValidatorResult as ht, CollectionFactoryOptions as i, FieldArrayValidator as it, MutationConcurrency as j, lookupRegisteredQuery as k, CtrlProps as l, FormSchema as lt, RootOptions as m, Validator as mt, Collection as n, FieldArrayItemErrors as nt, CollectionHomogeneousOptions as o, Form as ot, Root as p, FormIssue as pt, Query as q, CollectionFactoryApi as r, FieldArrayOptions as rt, ControllerDef as s, FormErrors as st, AmbientDeps as t, FieldArray as tt, Ctx as u, FormValidator as ut, GcEvent as v, Signal as vt, RegisteredMutation as w, createEmitter as wt, MutationSettleEvent as x, ErrorHandler as xt, InvalidateEvent as y, ErrorContext as yt, InfiniteQuerySpec as z };
1429
+ //# sourceMappingURL=types-DzDIypPo.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DzDIypPo.d.cts","names":[],"sources":["../src/emitter.ts","../src/errors.ts","../src/signals/types.ts","../src/forms/types.ts","../src/forms/form-types.ts","../src/query/types.ts","../src/query/infinite.ts","../src/devtools.ts","../src/query/mutation.ts","../src/query/plugin.ts","../src/scope.ts","../src/controller/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontsedal/olas-core",
3
- "version": "0.0.6",
3
+ "version": "0.1.0",
4
4
  "description": "Olas core — controller-tree state management with signals, queries, mutations, and forms. Framework-agnostic.",
5
5
  "keywords": [
6
6
  "olas",
@@ -16,6 +16,9 @@
16
16
  "framework-agnostic"
17
17
  ],
18
18
  "license": "MIT",
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
19
22
  "author": "Bohdan Kontsedal <kontsedalbohdan@gmail.com>",
20
23
  "homepage": "https://github.com/Kontsedal/olas/tree/main/packages/core#readme",
21
24
  "repository": {