@kontsedal/olas-core 0.0.1-rc.0 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +13 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/{root-BImHnGj1.mjs → root-BCZDC5Fv.mjs} +442 -139
- package/dist/root-BCZDC5Fv.mjs.map +1 -0
- package/dist/{root-Bazp5_Ik.cjs → root-DXV1gVbQ.cjs} +447 -138
- package/dist/root-DXV1gVbQ.cjs.map +1 -0
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.cts +1 -1
- package/dist/testing.d.mts +1 -1
- package/dist/testing.mjs +1 -1
- package/dist/{types-CAMgqCMz.d.mts → types-CffZ1QXt.d.cts} +82 -10
- package/dist/types-CffZ1QXt.d.cts.map +1 -0
- package/dist/{types-emq_lZd7.d.cts → types-DSlDowpE.d.mts} +82 -10
- package/dist/types-DSlDowpE.d.mts.map +1 -0
- package/package.json +28 -2
- package/src/controller/instance.ts +115 -15
- package/src/controller/root.ts +9 -1
- package/src/controller/types.ts +17 -7
- package/src/forms/field.ts +73 -8
- package/src/forms/form-types.ts +16 -0
- package/src/forms/form.ts +171 -21
- package/src/index.ts +5 -0
- package/src/query/client.ts +161 -6
- package/src/query/define.ts +14 -0
- package/src/query/entry.ts +64 -42
- package/src/query/infinite.ts +77 -55
- package/src/query/mutation.ts +11 -21
- package/src/query/plugin.ts +50 -0
- package/src/query/use.ts +80 -3
- package/src/utils.ts +24 -0
- package/dist/root-BImHnGj1.mjs.map +0 -1
- package/dist/root-Bazp5_Ik.cjs.map +0 -1
- package/dist/types-CAMgqCMz.d.mts.map +0 -1
- package/dist/types-emq_lZd7.d.cts.map +0 -1
package/dist/testing.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_root = require("./root-
|
|
2
|
+
const require_root = require("./root-DXV1gVbQ.cjs");
|
|
3
3
|
//#region src/testing.ts
|
|
4
4
|
/**
|
|
5
5
|
* Construct an isolated root wrapping a single controller. The returned object
|
package/dist/testing.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as AsyncState, c as RootOptions, k as AsyncStatus, n as ControllerDef, o as Field, s as Root } from "./types-
|
|
1
|
+
import { O as AsyncState, c as RootOptions, k as AsyncStatus, n as ControllerDef, o as Field, s as Root } from "./types-CffZ1QXt.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/testing.d.ts
|
|
4
4
|
/**
|
package/dist/testing.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as AsyncState, c as RootOptions, k as AsyncStatus, n as ControllerDef, o as Field, s as Root } from "./types-
|
|
1
|
+
import { O as AsyncState, c as RootOptions, k as AsyncStatus, n as ControllerDef, o as Field, s as Root } from "./types-DSlDowpE.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/testing.d.ts
|
|
4
4
|
/**
|
package/dist/testing.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f as signal, n as createRootWithProps, u as computed } from "./root-BCZDC5Fv.mjs";
|
|
2
2
|
//#region src/testing.ts
|
|
3
3
|
/**
|
|
4
4
|
* Construct an isolated root wrapping a single controller. The returned object
|
|
@@ -85,8 +85,24 @@ type DeepPartial<T> = T extends object ? T extends ReadonlyArray<infer U> ? Read
|
|
|
85
85
|
type FormValidator<S extends FormSchema> = Validator<FormValue<S>>;
|
|
86
86
|
type FieldArrayValidator<I> = Validator<FieldArrayValue<I>>;
|
|
87
87
|
type FormOptions<S extends FormSchema> = {
|
|
88
|
+
/**
|
|
89
|
+
* Initial values for the form. A function form is **tracked** — if the
|
|
90
|
+
* function reads reactive signals (e.g. a query's `data`), the form re-seats
|
|
91
|
+
* itself when those signals change, but only while the form is not dirty
|
|
92
|
+
* (so a user mid-edit isn't clobbered by a background refetch). See
|
|
93
|
+
* `resetOnInitialChange` for opt-out. Spec §8.4.
|
|
94
|
+
*/
|
|
88
95
|
initial?: (() => DeepPartial<FormValue<S>> | undefined) | DeepPartial<FormValue<S>>;
|
|
89
96
|
validators?: FormValidator<S>[];
|
|
97
|
+
/**
|
|
98
|
+
* When `initial` is a function and one of its tracked deps changes:
|
|
99
|
+
* - `'when-clean'` (default) — re-seat only if the form is not dirty.
|
|
100
|
+
* - `'never'` — never re-seat; `initial()` runs once at construction.
|
|
101
|
+
* - `'always'` — re-seat unconditionally (dirty state is discarded).
|
|
102
|
+
*
|
|
103
|
+
* Spec §20.7.
|
|
104
|
+
*/
|
|
105
|
+
resetOnInitialChange?: 'when-clean' | 'never' | 'always';
|
|
90
106
|
};
|
|
91
107
|
type FieldArrayOptions<I> = {
|
|
92
108
|
initial?: Array<ItemInitial<I>>;
|
|
@@ -356,9 +372,7 @@ type InfiniteQuery<Args extends unknown[], TPage, _TItem> = {
|
|
|
356
372
|
readonly __olas: 'infiniteQuery';
|
|
357
373
|
invalidate(...args: Args): void;
|
|
358
374
|
invalidateAll(): void;
|
|
359
|
-
setData(...args: [...Args, updater: (prev: TPage[] | undefined) => TPage[]]):
|
|
360
|
-
rollback: () => void;
|
|
361
|
-
};
|
|
375
|
+
setData(...args: [...Args, updater: (prev: TPage[] | undefined) => TPage[]]): Snapshot;
|
|
362
376
|
prefetch(...args: Args): Promise<TPage>;
|
|
363
377
|
};
|
|
364
378
|
/**
|
|
@@ -574,10 +588,44 @@ type QueryClientPluginApi = {
|
|
|
574
588
|
*/
|
|
575
589
|
applyRemoteSetData(queryId: string, keyArgs: readonly unknown[], data: unknown): void;
|
|
576
590
|
applyRemoteInvalidate(queryId: string, keyArgs: readonly unknown[]): void;
|
|
591
|
+
/**
|
|
592
|
+
* Apply a local-originated `setData` to the entry identified by
|
|
593
|
+
* `(queryId, keyArgs)`. The resulting plugin events fire with
|
|
594
|
+
* `isRemote: false` and `source: 'set'` — cross-tab plugins WILL
|
|
595
|
+
* rebroadcast (the write is treated as if a controller called
|
|
596
|
+
* `client.setData(...)` directly).
|
|
597
|
+
*
|
|
598
|
+
* Drops silently when the queryId is unknown, the registered query is
|
|
599
|
+
* infinite, or no local entry exists for that key. The `updater`
|
|
600
|
+
* receives the previous data (typed as `unknown` because plugins are
|
|
601
|
+
* type-erased) and returns the next.
|
|
602
|
+
*
|
|
603
|
+
* Use case: entity-normalization plugins that want to backpropagate an
|
|
604
|
+
* `entity.update(...)` patch into every query holding that entity.
|
|
605
|
+
* Mutations / optimistic updates already go through the public
|
|
606
|
+
* `client.setData` and don't need this API.
|
|
607
|
+
*/
|
|
608
|
+
setEntryData(queryId: string, keyArgs: readonly unknown[], updater: (prev: unknown) => unknown): void;
|
|
577
609
|
/**
|
|
578
610
|
* Snapshot of currently bound entry keys for a query (by `queryId`). Empty
|
|
579
611
|
* array when the query isn't registered, has no client entries, or the
|
|
580
612
|
* `queryId` doesn't match any registered query.
|
|
613
|
+
*
|
|
614
|
+
* @example
|
|
615
|
+
* ```ts
|
|
616
|
+
* // Plugin sees an incoming invalidate; only echo it outward if any local
|
|
617
|
+
* // controller is actually subscribed to that key — otherwise the message
|
|
618
|
+
* // is unilateral noise.
|
|
619
|
+
* const plugin: QueryClientPlugin = {
|
|
620
|
+
* init(api) { this.api = api },
|
|
621
|
+
* onInvalidate(ev) {
|
|
622
|
+
* if (ev.isRemote) return
|
|
623
|
+
* const subscribed = this.api.subscribedKeys(ev.queryId)
|
|
624
|
+
* if (subscribed.length === 0) return // no local subscribers → don't send
|
|
625
|
+
* transport.send({ type: 'invalidate', queryId: ev.queryId, keyArgs: ev.keyArgs })
|
|
626
|
+
* },
|
|
627
|
+
* }
|
|
628
|
+
* ```
|
|
581
629
|
*/
|
|
582
630
|
subscribedKeys(queryId: string): readonly (readonly unknown[])[];
|
|
583
631
|
};
|
|
@@ -596,6 +644,18 @@ type SetDataEvent = {
|
|
|
596
644
|
* skip rebroadcast in that case — otherwise the message would echo back.
|
|
597
645
|
*/
|
|
598
646
|
isRemote: boolean;
|
|
647
|
+
/**
|
|
648
|
+
* Origin of the write. `'set'` covers explicit `client.setData` (mutations,
|
|
649
|
+
* optimistic updates, plugin-initiated patches). `'fetch'` fires when the
|
|
650
|
+
* query fetcher resolved successfully and wrote the result into the entry
|
|
651
|
+
* — emitted after the data signal is settled. `'remote'` is the
|
|
652
|
+
* `applyRemoteSetData` path (cross-tab / server-push); equivalent to
|
|
653
|
+
* `isRemote === true`.
|
|
654
|
+
*
|
|
655
|
+
* Layered plugins use this to decide whether to react: cross-tab broadcasts
|
|
656
|
+
* only on `'set'`, an entity-normalization plugin observes all sources.
|
|
657
|
+
*/
|
|
658
|
+
source: 'set' | 'fetch' | 'remote';
|
|
599
659
|
};
|
|
600
660
|
type InvalidateEvent = {
|
|
601
661
|
queryId: string;
|
|
@@ -755,18 +815,30 @@ type Ctx<TDeps = AmbientDeps> = {
|
|
|
755
815
|
deps?: Partial<TDeps>;
|
|
756
816
|
}): Api;
|
|
757
817
|
/**
|
|
758
|
-
* Like `child(...)` but additionally returns a
|
|
759
|
-
*
|
|
760
|
-
*
|
|
761
|
-
*
|
|
762
|
-
*
|
|
763
|
-
*
|
|
818
|
+
* Like `child(...)` but additionally returns a handle that lets the parent
|
|
819
|
+
* control the attached sub-tree's lifecycle independently — `dispose()`
|
|
820
|
+
* tears it down early, and `suspend()` / `resume()` freeze and thaw it.
|
|
821
|
+
* The child is still disposed automatically when the parent disposes;
|
|
822
|
+
* `dispose()` / `suspend()` / `resume()` are idempotent.
|
|
823
|
+
*
|
|
824
|
+
* `<KeepAlive controller={…}>` in `@kontsedal/olas-react` consumes the
|
|
825
|
+
* returned `{ suspend, resume }` directly — no hand-rolled `isPaused`
|
|
826
|
+
* signal needed on the child's `Api`. Useful for "openable" sub-
|
|
827
|
+
* controllers driven by a user gesture (modal, side panel, wizard).
|
|
828
|
+
*
|
|
829
|
+
* `suspend()` cascades through the attached controller's lifecycle
|
|
830
|
+
* entries: cache subscriptions pause `refetchInterval` and release the
|
|
831
|
+
* entry, effects are torn down, `onSuspend(...)` handlers fire. `resume()`
|
|
832
|
+
* re-runs effects, re-acquires cache entries (a stale entry refetches),
|
|
833
|
+
* and fires `onResume(...)`. Spec §4.1, §16.5.
|
|
764
834
|
*/
|
|
765
835
|
attach<Props, Api>(def: ControllerDef<Props, Api>, props: Props, options?: {
|
|
766
836
|
deps?: Partial<TDeps>;
|
|
767
837
|
}): {
|
|
768
838
|
api: Api;
|
|
769
839
|
dispose: () => void;
|
|
840
|
+
suspend: () => void;
|
|
841
|
+
resume: () => void;
|
|
770
842
|
};
|
|
771
843
|
effect(fn: () => void | (() => void)): void;
|
|
772
844
|
on<T>(emitter: Emitter<T>, handler: (value: T) => void): void;
|
|
@@ -813,4 +885,4 @@ type Root<Api> = Api & {
|
|
|
813
885
|
};
|
|
814
886
|
//#endregion
|
|
815
887
|
export { Validator as $, DehydratedEntry as A, DeepPartial as B, DebugCacheEntry as C, InfiniteQuerySubscription as D, InfiniteQuerySpec as E, QuerySubscription as F, FieldArrayValue as G, FieldArrayItemErrors as H, RetryDelay as I, FormOptions as J, Form as K, RetryPolicy as L, LocalCache as M, Query as N, AsyncState as O, QuerySpec as P, ItemInitial as Q, Snapshot as R, DebugBus as S, InfiniteQuery as T, FieldArrayOptions as U, FieldArray as V, FieldArrayValidator as W, FormValidator as X, FormSchema as Y, FormValue as Z, SetDataEvent as _, Ctx as a, createEmitter as at, MutationConcurrency as b, RootOptions as c, defineScope as d, Computed as et, GcEvent as f, RegisteredQuery as g, QueryClientPluginApi as h, CtrlProps as i, Emitter as it, DehydratedState as j, AsyncStatus as k, Scope as l, QueryClientPlugin as m, ControllerDef as n, Signal as nt, Field as o, InvalidateEvent as p, FormErrors as q, CtrlApi as r, ErrorContext as rt, Root as s, AmbientDeps as t, ReadSignal as tt, ScopeOptions as u, lookupRegisteredQuery as v, DebugEvent as w, MutationSpec as x, Mutation as y, UseOptions as z };
|
|
816
|
-
//# sourceMappingURL=types-
|
|
888
|
+
//# sourceMappingURL=types-CffZ1QXt.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-CffZ1QXt.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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"}
|
|
@@ -85,8 +85,24 @@ type DeepPartial<T> = T extends object ? T extends ReadonlyArray<infer U> ? Read
|
|
|
85
85
|
type FormValidator<S extends FormSchema> = Validator<FormValue<S>>;
|
|
86
86
|
type FieldArrayValidator<I> = Validator<FieldArrayValue<I>>;
|
|
87
87
|
type FormOptions<S extends FormSchema> = {
|
|
88
|
+
/**
|
|
89
|
+
* Initial values for the form. A function form is **tracked** — if the
|
|
90
|
+
* function reads reactive signals (e.g. a query's `data`), the form re-seats
|
|
91
|
+
* itself when those signals change, but only while the form is not dirty
|
|
92
|
+
* (so a user mid-edit isn't clobbered by a background refetch). See
|
|
93
|
+
* `resetOnInitialChange` for opt-out. Spec §8.4.
|
|
94
|
+
*/
|
|
88
95
|
initial?: (() => DeepPartial<FormValue<S>> | undefined) | DeepPartial<FormValue<S>>;
|
|
89
96
|
validators?: FormValidator<S>[];
|
|
97
|
+
/**
|
|
98
|
+
* When `initial` is a function and one of its tracked deps changes:
|
|
99
|
+
* - `'when-clean'` (default) — re-seat only if the form is not dirty.
|
|
100
|
+
* - `'never'` — never re-seat; `initial()` runs once at construction.
|
|
101
|
+
* - `'always'` — re-seat unconditionally (dirty state is discarded).
|
|
102
|
+
*
|
|
103
|
+
* Spec §20.7.
|
|
104
|
+
*/
|
|
105
|
+
resetOnInitialChange?: 'when-clean' | 'never' | 'always';
|
|
90
106
|
};
|
|
91
107
|
type FieldArrayOptions<I> = {
|
|
92
108
|
initial?: Array<ItemInitial<I>>;
|
|
@@ -356,9 +372,7 @@ type InfiniteQuery<Args extends unknown[], TPage, _TItem> = {
|
|
|
356
372
|
readonly __olas: 'infiniteQuery';
|
|
357
373
|
invalidate(...args: Args): void;
|
|
358
374
|
invalidateAll(): void;
|
|
359
|
-
setData(...args: [...Args, updater: (prev: TPage[] | undefined) => TPage[]]):
|
|
360
|
-
rollback: () => void;
|
|
361
|
-
};
|
|
375
|
+
setData(...args: [...Args, updater: (prev: TPage[] | undefined) => TPage[]]): Snapshot;
|
|
362
376
|
prefetch(...args: Args): Promise<TPage>;
|
|
363
377
|
};
|
|
364
378
|
/**
|
|
@@ -574,10 +588,44 @@ type QueryClientPluginApi = {
|
|
|
574
588
|
*/
|
|
575
589
|
applyRemoteSetData(queryId: string, keyArgs: readonly unknown[], data: unknown): void;
|
|
576
590
|
applyRemoteInvalidate(queryId: string, keyArgs: readonly unknown[]): void;
|
|
591
|
+
/**
|
|
592
|
+
* Apply a local-originated `setData` to the entry identified by
|
|
593
|
+
* `(queryId, keyArgs)`. The resulting plugin events fire with
|
|
594
|
+
* `isRemote: false` and `source: 'set'` — cross-tab plugins WILL
|
|
595
|
+
* rebroadcast (the write is treated as if a controller called
|
|
596
|
+
* `client.setData(...)` directly).
|
|
597
|
+
*
|
|
598
|
+
* Drops silently when the queryId is unknown, the registered query is
|
|
599
|
+
* infinite, or no local entry exists for that key. The `updater`
|
|
600
|
+
* receives the previous data (typed as `unknown` because plugins are
|
|
601
|
+
* type-erased) and returns the next.
|
|
602
|
+
*
|
|
603
|
+
* Use case: entity-normalization plugins that want to backpropagate an
|
|
604
|
+
* `entity.update(...)` patch into every query holding that entity.
|
|
605
|
+
* Mutations / optimistic updates already go through the public
|
|
606
|
+
* `client.setData` and don't need this API.
|
|
607
|
+
*/
|
|
608
|
+
setEntryData(queryId: string, keyArgs: readonly unknown[], updater: (prev: unknown) => unknown): void;
|
|
577
609
|
/**
|
|
578
610
|
* Snapshot of currently bound entry keys for a query (by `queryId`). Empty
|
|
579
611
|
* array when the query isn't registered, has no client entries, or the
|
|
580
612
|
* `queryId` doesn't match any registered query.
|
|
613
|
+
*
|
|
614
|
+
* @example
|
|
615
|
+
* ```ts
|
|
616
|
+
* // Plugin sees an incoming invalidate; only echo it outward if any local
|
|
617
|
+
* // controller is actually subscribed to that key — otherwise the message
|
|
618
|
+
* // is unilateral noise.
|
|
619
|
+
* const plugin: QueryClientPlugin = {
|
|
620
|
+
* init(api) { this.api = api },
|
|
621
|
+
* onInvalidate(ev) {
|
|
622
|
+
* if (ev.isRemote) return
|
|
623
|
+
* const subscribed = this.api.subscribedKeys(ev.queryId)
|
|
624
|
+
* if (subscribed.length === 0) return // no local subscribers → don't send
|
|
625
|
+
* transport.send({ type: 'invalidate', queryId: ev.queryId, keyArgs: ev.keyArgs })
|
|
626
|
+
* },
|
|
627
|
+
* }
|
|
628
|
+
* ```
|
|
581
629
|
*/
|
|
582
630
|
subscribedKeys(queryId: string): readonly (readonly unknown[])[];
|
|
583
631
|
};
|
|
@@ -596,6 +644,18 @@ type SetDataEvent = {
|
|
|
596
644
|
* skip rebroadcast in that case — otherwise the message would echo back.
|
|
597
645
|
*/
|
|
598
646
|
isRemote: boolean;
|
|
647
|
+
/**
|
|
648
|
+
* Origin of the write. `'set'` covers explicit `client.setData` (mutations,
|
|
649
|
+
* optimistic updates, plugin-initiated patches). `'fetch'` fires when the
|
|
650
|
+
* query fetcher resolved successfully and wrote the result into the entry
|
|
651
|
+
* — emitted after the data signal is settled. `'remote'` is the
|
|
652
|
+
* `applyRemoteSetData` path (cross-tab / server-push); equivalent to
|
|
653
|
+
* `isRemote === true`.
|
|
654
|
+
*
|
|
655
|
+
* Layered plugins use this to decide whether to react: cross-tab broadcasts
|
|
656
|
+
* only on `'set'`, an entity-normalization plugin observes all sources.
|
|
657
|
+
*/
|
|
658
|
+
source: 'set' | 'fetch' | 'remote';
|
|
599
659
|
};
|
|
600
660
|
type InvalidateEvent = {
|
|
601
661
|
queryId: string;
|
|
@@ -755,18 +815,30 @@ type Ctx<TDeps = AmbientDeps> = {
|
|
|
755
815
|
deps?: Partial<TDeps>;
|
|
756
816
|
}): Api;
|
|
757
817
|
/**
|
|
758
|
-
* Like `child(...)` but additionally returns a
|
|
759
|
-
*
|
|
760
|
-
*
|
|
761
|
-
*
|
|
762
|
-
*
|
|
763
|
-
*
|
|
818
|
+
* Like `child(...)` but additionally returns a handle that lets the parent
|
|
819
|
+
* control the attached sub-tree's lifecycle independently — `dispose()`
|
|
820
|
+
* tears it down early, and `suspend()` / `resume()` freeze and thaw it.
|
|
821
|
+
* The child is still disposed automatically when the parent disposes;
|
|
822
|
+
* `dispose()` / `suspend()` / `resume()` are idempotent.
|
|
823
|
+
*
|
|
824
|
+
* `<KeepAlive controller={…}>` in `@kontsedal/olas-react` consumes the
|
|
825
|
+
* returned `{ suspend, resume }` directly — no hand-rolled `isPaused`
|
|
826
|
+
* signal needed on the child's `Api`. Useful for "openable" sub-
|
|
827
|
+
* controllers driven by a user gesture (modal, side panel, wizard).
|
|
828
|
+
*
|
|
829
|
+
* `suspend()` cascades through the attached controller's lifecycle
|
|
830
|
+
* entries: cache subscriptions pause `refetchInterval` and release the
|
|
831
|
+
* entry, effects are torn down, `onSuspend(...)` handlers fire. `resume()`
|
|
832
|
+
* re-runs effects, re-acquires cache entries (a stale entry refetches),
|
|
833
|
+
* and fires `onResume(...)`. Spec §4.1, §16.5.
|
|
764
834
|
*/
|
|
765
835
|
attach<Props, Api>(def: ControllerDef<Props, Api>, props: Props, options?: {
|
|
766
836
|
deps?: Partial<TDeps>;
|
|
767
837
|
}): {
|
|
768
838
|
api: Api;
|
|
769
839
|
dispose: () => void;
|
|
840
|
+
suspend: () => void;
|
|
841
|
+
resume: () => void;
|
|
770
842
|
};
|
|
771
843
|
effect(fn: () => void | (() => void)): void;
|
|
772
844
|
on<T>(emitter: Emitter<T>, handler: (value: T) => void): void;
|
|
@@ -813,4 +885,4 @@ type Root<Api> = Api & {
|
|
|
813
885
|
};
|
|
814
886
|
//#endregion
|
|
815
887
|
export { Validator as $, DehydratedEntry as A, DeepPartial as B, DebugCacheEntry as C, InfiniteQuerySubscription as D, InfiniteQuerySpec as E, QuerySubscription as F, FieldArrayValue as G, FieldArrayItemErrors as H, RetryDelay as I, FormOptions as J, Form as K, RetryPolicy as L, LocalCache as M, Query as N, AsyncState as O, QuerySpec as P, ItemInitial as Q, Snapshot as R, DebugBus as S, InfiniteQuery as T, FieldArrayOptions as U, FieldArray as V, FieldArrayValidator as W, FormValidator as X, FormSchema as Y, FormValue as Z, SetDataEvent as _, Ctx as a, createEmitter as at, MutationConcurrency as b, RootOptions as c, defineScope as d, Computed as et, GcEvent as f, RegisteredQuery as g, QueryClientPluginApi as h, CtrlProps as i, Emitter as it, DehydratedState as j, AsyncStatus as k, Scope as l, QueryClientPlugin as m, ControllerDef as n, Signal as nt, Field as o, InvalidateEvent as p, FormErrors as q, CtrlApi as r, ErrorContext as rt, Root as s, AmbientDeps as t, ReadSignal as tt, ScopeOptions as u, lookupRegisteredQuery as v, DebugEvent as w, MutationSpec as x, Mutation as y, UseOptions as z };
|
|
816
|
-
//# sourceMappingURL=types-
|
|
888
|
+
//# sourceMappingURL=types-DSlDowpE.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DSlDowpE.d.mts","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":";;AAUA;;;;;;;;;KAAY,OAAA;EACV,IAAA,GAAO,CAAA,iCAAkC,KAAA,EAAO,CAAA,WAAzC;EAEP,EAAA,CAAG,OAAA,GAAU,KAAA,EAAO,CAAA,wBAFqB;EAIzC,IAAA,CAAK,OAAA,GAAU,KAAA,EAAO,CAAA,wBAFF;EAIpB,OAAA;AAAA;;;;;;;iBAqDc,aAAA,UAAA,CAAA,GAA2B,OAAO,CAAC,CAAA;;;;AA5DnD;;;;;;;;KCDY,YAAA;EACV,IAAA;EACA,cAAA;EACA,QAAA;AAAA;;;;ADFF;;;;;KEJY,UAAA;EAAA,SACD,KAAA,EAAO,CAAA,EFQO;EENvB,IAAA,IAAQ,CAAA;EFCU;;;;;EEKlB,SAAA,CAAU,OAAA,GAAU,KAAA,EAAO,CAAA;AAAA;;;;;;KAQjB,MAAA,MAAY,UAAA,CAAW,CAAA;EACjC,KAAA,EAAO,CAAA;EACP,GAAA,CAAI,KAAA,EAAO,CAAA;EACX,MAAA,CAAO,EAAA,GAAK,IAAA,EAAM,CAAA,KAAM,CAAA;AAAA;;KAId,QAAA,MAAc,UAAU,CAAC,CAAA;;;KC9BzB,SAAA,OAAgB,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,WAAA,qBAAgC,OAAA;;;KCIlE,UAAA;EAAA,CACT,GAAA,WAAc,KAAA,QAAa,IAAA,QAAY,UAAA;AAAA;AAAA,KAG9B,SAAA,WAAoB,UAAA,kBAClB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,KAAA,YACzB,CAAA,GACA,CAAA,CAAE,CAAA,UAAW,IAAA,aACX,SAAA,CAAU,EAAA,IACV,CAAA,CAAE,CAAA,UAAW,UAAA,YACX,eAAA,CAAgB,CAAA;AAAA,KAId,UAAA,WAAqB,UAAA,kBACnB,CAAA,IAAK,CAAA,CAAE,CAAA,UAAW,KAAA,+BAE1B,CAAA,CAAE,CAAA,UAAW,IAAA,aACX,UAAA,CAAW,EAAA,IACX,CAAA,CAAE,CAAA,UAAW,UAAA,YACX,KAAA,CAAM,oBAAA,CAAqB,CAAA;AAAA,KAIzB,eAAA,MACV,CAAA,SAAU,KAAA,YAAiB,CAAA,KAAM,CAAA,SAAU,IAAA,YAAgB,SAAA,CAAU,CAAA;AAAA,KAE3D,oBAAA,MACV,CAAA,SAAU,KAAA,mBAAwB,CAAA,SAAU,IAAA,YAAgB,UAAA,CAAW,CAAA;AAAA,KAE7D,WAAA,MACV,CAAA,SAAU,KAAA,YAAiB,CAAA,GAAI,CAAA,SAAU,IAAA,YAAgB,WAAA,CAAY,SAAA,CAAU,CAAA;AAAA,KAErE,WAAA,MAAiB,CAAA,kBACzB,CAAA,SAAU,aAAA,YACR,aAAA,CAAc,WAAA,CAAY,CAAA,mBACZ,CAAA,IAAK,WAAA,CAAY,CAAA,CAAE,CAAA,OACnC,CAAA;AAAA,KAEQ,aAAA,WAAwB,UAAA,IAAc,SAAA,CAAU,SAAA,CAAU,CAAA;AAAA,KAC1D,mBAAA,MAAyB,SAAA,CAAU,eAAA,CAAgB,CAAA;AAAA,KAEnD,WAAA,WAAsB,UAAA;EJ/BjB;;;;AAER;AAqDT;;EIhBE,OAAA,UAAiB,WAAA,CAAY,SAAA,CAAU,CAAA,kBAAmB,WAAA,CAAY,SAAA,CAAU,CAAA;EAChF,UAAA,GAAa,aAAA,CAAc,CAAA;EJeC;;;;AAAsB;;;;EINlD,oBAAA;AAAA;AAAA,KAGU,iBAAA;EACV,OAAA,GAAU,KAAA,CAAM,WAAA,CAAY,CAAA;EAC5B,UAAA,GAAa,mBAAA,CAAoB,CAAA;AAAA;;;AHzDzB;;;;ACNV;;;KE2EY,IAAA,WAAe,UAAA;EAAA,SAChB,MAAA,gBAAsB,CAAA,GAAI,CAAA,CAAE,CAAA;EAAA,SAC5B,KAAA,EAAO,UAAA,CAAW,SAAA,CAAU,CAAA;EAAA,SAC5B,MAAA,EAAQ,UAAA,CAAW,UAAA,CAAW,CAAA;EAAA,SAC9B,cAAA,EAAgB,UAAA;EAAA,SAChB,UAAA,EAAY,UAAA,CAAW,KAAA;IAAQ,IAAA;IAAc,MAAA;EAAA;EAAA,SAC7C,OAAA,EAAS,UAAA;EAAA,SACT,OAAA,EAAS,UAAA;EAAA,SACT,OAAA,EAAS,UAAA;EAAA,SACT,YAAA,EAAc,UAAA,WF3Ec;EE8ErC,GAAA,CAAI,OAAA,EAAS,WAAA,CAAY,SAAA,CAAU,CAAA;EFtEnB;;;;;;EE6EhB,gBAAA,CAAiB,OAAA,EAAS,WAAA,CAAY,SAAA,CAAU,CAAA,WF1ExB;EE4ExB,KAAA,UF5EyB;EE8EzB,cAAA,UFjFsB;EEmFtB,QAAA,IAAY,OAAA,WFlFZ;EEoFA,OAAA;AAAA;;;;;;KAQU,UAAA,WAAqB,KAAA,QAAa,IAAA;EAAA,SACnC,KAAA,EAAO,UAAA,CAAW,aAAA,CAAc,CAAA;EAAA,SAChC,KAAA,EAAO,UAAA,CAAW,eAAA,CAAgB,CAAA;EAAA,SAClC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,oBAAA,CAAqB,CAAA;EAAA,SAC9C,cAAA,EAAgB,UAAA;EAAA,SAChB,OAAA,EAAS,UAAA;EAAA,SACT,OAAA,EAAS,UAAA;EAAA,SACT,OAAA,EAAS,UAAA;EAAA,SACT,YAAA,EAAc,UAAA;EAAA,SACd,IAAA,EAAM,UAAA;EAEf,GAAA,CAAI,OAAA,GAAU,WAAA,CAAY,CAAA;EAC1B,MAAA,CAAO,KAAA,UAAe,OAAA,GAAU,WAAA,CAAY,CAAA;EAC5C,MAAA,CAAO,KAAA;EACP,IAAA,CAAK,IAAA,UAAc,EAAA;EACnB,EAAA,CAAG,KAAA,WAAgB,CAAA;EACnB,KAAA;EAEA,KAAA;EACA,cAAA;EACA,QAAA,IAAY,OAAA;EACZ,OAAA;AAAA;;;AJ/HF;AAAA,KKPY,WAAA;;;;;;;;;;;;;;;;;KAkBA,UAAA;EACV,IAAA,EAAM,UAAA,CAAW,CAAA;EACjB,KAAA,EAAO,UAAA;EACP,MAAA,EAAQ,UAAA,CAAW,WAAA;EACnB,SAAA,EAAW,UAAA;EACX,UAAA,EAAY,UAAA;EACZ,OAAA,EAAS,UAAA;EACT,aAAA,EAAe,UAAA;EACf,mBAAA,EAAqB,UAAA;EAErB,OAAA,QAAe,OAAA,CAAQ,CAAA;EACvB,KAAA;EACA,UAAA,QAAkB,OAAA,CAAQ,CAAA;AAAA;;;ALqCwB;;;;AC7DpD;;;;;;;;KIyCY,QAAA;EACV,QAAA;EACA,QAAQ;AAAA;AH9CV;;;;AAAA,KGqDY,UAAA,MAAgB,UAAA,CAAW,CAAA;EH5CV,mDG8C3B,UAAA,UH9C4B;EGgD5B,OAAA,CAAQ,OAAA,GAAU,IAAA,EAAM,CAAA,iBAAkB,CAAA,GAAI,QAAA,EHxDrC;EG0DT,OAAA;AAAA;;KAIU,eAAA;EACV,GAAA;EACA,IAAA;EACA,aAAA;AAAA;AHzDqC;AAQvC;;;;AARuC,KGiE3B,eAAA;EACV,OAAA;EACA,OAAA,EAAS,eAAe;AAAA;;;;;KAOd,WAAA,cAAyB,OAAA,UAAiB,KAAc;;KAGxD,UAAA,cAAwB,OAAe;;;;;;KAOvC,QAAA;EACV,MAAA,EAAQ,WAAA;EACR,IAAA,EADmB,WAC4B;AAAA;;AH3EtB;AAI3B;;;;;;KGkFY,SAAA;EACV,GAAA,MAAS,IAAA,EAAM,IAAA;EACf,OAAA,GAAU,GAAA,EAAK,QAAA,KAAa,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,CAAA;EACnD,SAAA;EACA,MAAA;EACA,eAAA;EACA,oBAAA;EACA,kBAAA;EACA,gBAAA;EACA,KAAA,GAAQ,WAAA;EACR,UAAA,GAAa,UAAA;EF1H+D;;;;;;;;EEmI5E,OAAA;EFnImF;AAAA;;;EEwInF,QAAA;AAAA;;;;;;KAQU,KAAA;EAAA,SACD,MAAA,WD5IR;EC8ID,UAAA,IAAc,IAAA,EAAM,IAAA,SD9IQ;ECgJ5B,aAAA,UDhJkD;ECkJlD,OAAA,IAAW,IAAA,MAAU,IAAA,EAAM,OAAA,GAAU,IAAA,EAAM,CAAA,iBAAkB,CAAA,IAAK,QAAA,ED/IxD;ECiJV,QAAA,IAAY,IAAA,EAAM,IAAA,GAAO,OAAA,CAAQ,CAAA;AAAA;;KAIvB,iBAAA,MAAuB,UAAU,CAAC,CAAA;;;;;;KAOlC,UAAA;EACV,GAAA,SAAY,IAAI;EAChB,OAAA;AAAA;;;;;;;;;;;;KCxJU,gBAAA;EACV,SAAA,EAAW,SAAA;EACX,MAAA,EAAQ,WAAA;EACR,IAAA,EADmB,WAAA;AAAA;AAAA,KAIT,iBAAA,mDAAoE,KAAA;EAC9E,GAAA,MAAS,IAAA,EAAM,IAAA;ENNf;;;;;EMYA,OAAA,GAAU,GAAA,EAAK,gBAAA,CAAiB,SAAA,MAAe,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,KAAA;EACtE,gBAAA,EAAkB,SAAA;EAClB,gBAAA,GAAmB,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,OAAY,SAAA;EAC1D,oBAAA,IAAwB,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,KAAA,OAAY,SAAA;EAChE,OAAA,IAAW,IAAA,EAAM,KAAA,KAAU,KAAA;EAC3B,SAAA;EACA,MAAA;EACA,eAAA;EACA,gBAAA;EACA,KAAA,GAAQ,WAAA;EACR,UAAA,GAAa,UAAA;;;;AL5Bf;;;EKmCE,OAAA;ELlCA;;;;EKuCA,QAAA;AAAA;;;AJ3CF;;KIkDY,aAAA;EAAA,SACD,MAAA;EACT,UAAA,IAAc,IAAA,EAAM,IAAA;EACpB,aAAA;EACA,OAAA,IAAW,IAAA,MAAU,IAAA,EAAM,OAAA,GAAU,IAAA,EAAM,KAAA,mBAAwB,KAAA,MAAW,QAAA;EAC9E,QAAA,IAAY,IAAA,EAAM,IAAA,GAAO,OAAA,CAAQ,KAAA;AAAA;;;;;;;;;KAWvB,yBAAA,iBAA0C,UAAA,CAAW,KAAA;EAC/D,KAAA,EAAO,UAAA,CAAW,KAAA;EAClB,IAAA,EAAM,UAAA,CAAW,KAAA;EACjB,WAAA,EAAa,UAAA;EACb,eAAA,EAAiB,UAAA;EACjB,kBAAA,EAAoB,UAAA;EACpB,sBAAA,EAAwB,UAAA;EACxB,aAAA,QAAqB,OAAA;EACrB,iBAAA,QAAyB,OAAA;AAAA;;;;ANtE3B;;;;KOLY,UAAA;EACN,IAAA;EAAgC,IAAA;EAAyB,KAAA;AAAA;EACzD,IAAA;EAA8B,IAAA;AAAA;EAC9B,IAAA;EAA4B,IAAA;AAAA;EAC5B,IAAA;EAA6B,IAAA;AAAA;EAE7B,IAAA;EACA,QAAA;EACA,cAAA;AAAA;EAEA,IAAA;EAA2B,QAAA;AAAA;EAC3B,IAAA;EAA6B,QAAA;EAA8B,UAAA;AAAA;EAE3D,IAAA;EACA,QAAA;EACA,KAAA;EACA,UAAA;AAAA;EAEA,IAAA;EAA2B,QAAA;AAAA;EAC3B,IAAA;EAAkB,QAAA;AAAA;EAClB,IAAA;EAAsB,IAAA;EAAyB,IAAA;EAAe,IAAA;AAAA;EAC9D,IAAA;EAA0B,IAAA;EAAyB,IAAA;EAAe,MAAA;AAAA;EAClE,IAAA;EAAwB,IAAA;EAAyB,IAAA;EAAe,KAAA;AAAA;EAChE,IAAA;EAA2B,IAAA;EAAyB,IAAA;AAAA;EAEpD,IAAA;EACA,IAAA;EACA,KAAA;EACA,KAAA;EACA,MAAA;AAAA;;;ALnBiC;AAQvC;KKkBY,eAAA;EACV,GAAA;EACA,MAAA;EACA,IAAA;EACA,KAAA;EACA,aAAA;EACA,OAAA;EACA,UAAA;EACA,mBAAA;AAAA;;;;;;;;;;;;;KAeU,QAAA;EACV,SAAA,CAAU,OAAA,GAAU,KAAA,EAAO,UAAA;EAC3B,YAAA,IAAgB,eAAe;AAAA;;;;;;;;;;;KCnDrB,mBAAA;;;;;;KAOA,YAAA;ERPV;;;;;EQaA,IAAA,WRXO;EQaP,MAAA,GAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,WAAA,KAAgB,OAAA,CAAQ,CAAA;ERwCvB;;;;EQnC3B,QAAA,IAAY,IAAA,EAAM,CAAA,KAAM,QAAA;EACxB,SAAA,IAAa,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA;EAC9B,OAAA,IAAW,GAAA,WAAc,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,QAAA;EAC5C,SAAA,IAAa,MAAA,EAAQ,CAAA,cAAe,GAAA,uBAA0B,IAAA,EAAM,CAAA;EACpE,WAAA,GAAc,mBAAA;EACd,KAAA,GAAQ,WAAA;EACR,UAAA,GAAa,UAAA;AAAA;;;;;;;;AP7BL;;;;ACNV;;;;;;;ADMU,KOkDE,WAAA,aACP,IAAA,kBAAsB,CAAA,IAAK,CAAA,MAAO,CAAA,yBAA0B,CAAA,MAC5D,OAAA,CAAQ,CAAA;AAAA,KAED,QAAA;EN3DD,6EM6DT,GAAA,EAAK,WAAA,CAAY,CAAA,EAAG,CAAA;EACpB,IAAA,EAAM,UAAA,CAAW,CAAA;EACjB,KAAA,EAAO,UAAA;EACP,SAAA,EAAW,UAAA;EACX,aAAA,EAAe,UAAA,CAAW,CAAA,eNzDN;EM2DpB,KAAA,UN3DqC;EM6DrC,OAAA;AAAA;;;;ARlEF;;;;;;;;;;;;;;;;;;;;;;KScY,oBAAA;ETPH;AAAA;AAqDT;;;ESxCE,kBAAA,CAAmB,OAAA,UAAiB,OAAA,sBAA6B,IAAA;EACjE,qBAAA,CAAsB,OAAA,UAAiB,OAAA;ETuCE;;;AAAS;;;;AC7DpD;;;;;;;;AAGU;;EQqCR,YAAA,CACE,OAAA,UACA,OAAA,sBACA,OAAA,GAAU,IAAA;;AP9Cd;;;;;;;;;;;;;;;;;;AASuC;AAQvC;EOoDE,cAAA,CAAe,OAAA;AAAA;AAAA,KAGL,YAAA;EACV,OAAA;EACA,OAAA;EACA,IAAA;EPvDkB;;;;;EO6DlB,IAAA;EPhEiC;;;;EOqEjC,QAAA;EPnEI;;;;;;;AACqB;AAI3B;;;EO0EE,MAAA;AAAA;AAAA,KAGU,eAAA;EACV,OAAA;EACA,OAAA;EACA,IAAA;EACA,QAAA;AAAA;AAAA,KAGU,OAAA;EACV,OAAA;EACA,OAAA;EACA,IAAA;AAAA;;;;;;KAQU,iBAAA;EN7HgB;;;;EMkI1B,IAAA,EAAM,GAAA,EAAK,oBAAA;EACX,SAAA,EAAW,KAAA,EAAO,YAAA;EAClB,YAAA,EAAc,KAAA,EAAO,eAAA;EACrB,IAAA,EAAM,KAAA,EAAO,OAAA;EAEb,OAAA;AAAA;ALlIkD;AAGpD;;;AAHoD,KKmJxC,eAAA;EAAA,SACD,MAAA;EAAA,SACA,MAAA;IAAU,OAAA;IAAkB,QAAA;EAAA;AAAA;;;;;;iBAoBvB,qBAAA,CAAsB,OAAA,WAAkB,eAAe;;;;ATpKvE;;;;KULY,KAAA;EAAA,SACD,MAAA,WVSa;EAAA,SUPb,IAAA,UVOc;EAAA,SULd,IAAA,WVCT;EAAA,SUCS,OAAA,GAAU,CAAA,EVD6B;EAAA,SUGvC,UAAA;EAAA,SAEA,GAAA,GAAM,CAAC;AAAA;AAAA,KAGN,YAAA;EACV,OAAA,GAAU,CAAC;EACX,IAAA;AAAA;;;;;AVJO;AAqDT;iBUxCgB,WAAA,GAAA,CAAe,OAAA,GAAU,YAAA,CAAa,CAAA,IAAK,KAAA,CAAM,CAAA;;;;;;;;;;;;;;;;;;UCGhD,WAAA;EAAA,CACd,GAAW;AAAA;;;;;;;KASF,KAAA,MAAW,UAAA,CAAW,CAAA;EAChC,MAAA,EAAQ,UAAA;EACR,OAAA,EAAS,UAAA;EACT,OAAA,EAAS,UAAA;EACT,OAAA,EAAS,UAAA;EACT,YAAA,EAAc,UAAA;EACd,GAAA,CAAI,KAAA,EAAO,CAAA;EVxCW;;;;;AAGd;;EU6CR,YAAA,CAAa,KAAA,EAAO,CAAA;EACpB,KAAA;EACA,WAAA;EACA,UAAA,IAAc,OAAA,WTtDM;ESwDpB,OAAA;AAAA;;;;;;KAQU,aAAA;EAAA,SACD,MAAA;EAAA,SACA,OAAA;IAAY,KAAA,EAAO,KAAA;IAAO,GAAA,EAAK,GAAG;EAAA;AAAA;;KAIjC,SAAA,MAAe,CAAA,SAAU,aAAa,qBAAqB,CAAA;ATrDvE;AAAA,KSwDY,OAAA,MAAa,CAAA,SAAU,aAAa,qBAAqB,CAAA;;;;;;;;;KAUzD,GAAA,SAAY,WAAA;EACtB,KAAA,IACE,OAAA,GAAU,MAAA,EAAQ,WAAA,KAAgB,OAAA,CAAQ,CAAA,GAC1C,OAAA;IACE,GAAA;IACA,SAAA;IACA,gBAAA;IACA,WAAA,GAAc,CAAA;EAAA,IAEf,UAAA,CAAW,CAAA;EAEd,GAAA,4BACE,MAAA,EAAQ,KAAA,CAAM,IAAA,EAAM,CAAA,GACpB,YAAA,UAAsB,IAAA,IAAQ,UAAA,CAAW,IAAA,IACxC,iBAAA,CAAkB,CAAA;EACrB,GAAA,uCACE,MAAA,EAAQ,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,GACnC,YAAA,UAAsB,IAAA,IAAQ,UAAA,CAAW,IAAA,IACxC,yBAAA,CAA0B,KAAA,EAAO,KAAA;EAEpC,QAAA,OAAe,IAAA,EAAM,YAAA,CAAa,CAAA,EAAG,CAAA,IAAK,QAAA,CAAS,CAAA,EAAG,CAAA;EAEtD,OAAA,cAAqB,OAAA,CAAQ,CAAA;EAE7B,KAAA,IAAS,OAAA,EAAS,CAAA,EAAG,UAAA,GAAa,aAAA,CAAc,SAAA,CAAU,CAAA,KAAM,KAAA,CAAM,CAAA;EAEtE,IAAA,WAAe,UAAA,EAAY,MAAA,EAAQ,CAAA,EAAG,OAAA,GAAU,WAAA,CAAY,CAAA,IAAK,IAAA,CAAK,CAAA;EAEtE,UAAA,WAAqB,KAAA,QAAa,IAAA,OAChC,WAAA,GAAc,OAAA,GAAU,WAAA,CAAY,CAAA,MAAO,CAAA,EAC3C,OAAA,GAAU,iBAAA,CAAkB,CAAA,IAC3B,UAAA,CAAW,CAAA;EAEd,KAAA,aACE,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,KAAA,EAAO,KAAA,EACP,OAAA;IAAY,IAAA,GAAO,OAAA,CAAQ,KAAA;EAAA,IAC1B,GAAA;EThGe;;;;;;;AAAkB;;;;AC9BtC;;;;;;;EQkJE,MAAA,aACE,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,KAAA,EAAO,KAAA,EACP,OAAA;IAAY,IAAA,GAAO,OAAA,CAAQ,KAAA;EAAA;IACxB,GAAA,EAAK,GAAA;IAAK,OAAA;IAAqB,OAAA;IAAqB,MAAA;EAAA;EAEzD,MAAA,CAAO,EAAA;EAEP,EAAA,IAAM,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,OAAA,GAAU,KAAA,EAAO,CAAA;EAG5C,OAAA,IAAW,KAAA,EAAO,KAAA,CAAM,CAAA,GAAI,KAAA,EAAO,CAAA;EACnC,MAAA,IAAU,KAAA,EAAO,KAAA,CAAM,CAAA,IAAK,CAAA;EAE5B,SAAA,CAAU,EAAA;EACV,SAAA,CAAU,EAAA;EACV,QAAA,CAAS,EAAA;EAAA,SAEA,IAAA,EAAM,KAAA;AAAA;;;;;;;KAYL,WAAA;EACV,IAAA,EAAM,KAAA;EACN,OAAA,IAAW,GAAA,WAAc,OAAA,EAAS,YAAA;EAClC,OAAA,GAAU,eAAA,EP3KoB;EO6K9B,oBAAA,YP5KgB;EO8KhB,kBAAA;EP9K6B;;;;;EOoL7B,OAAA,GAAU,iBAAA;AAAA;;;;;;KAQA,IAAA,QAAY,GAAA;EACtB,OAAA;EACA,OAAA,CAAQ,OAAA;IAAY,OAAA;EAAA;EACpB,MAAA;EACA,SAAA,IAAa,eAAA;EACb,WAAA,IAAe,OAAA;EAAA,SACN,OAAA,EAAS,QAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontsedal/olas-core",
|
|
3
|
-
"version": "0.0.1
|
|
4
|
-
"description": "Olas core — controller
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Olas core — controller-tree state management with signals, queries, mutations, and forms. Framework-agnostic.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"olas",
|
|
7
|
+
"controller-tree",
|
|
8
|
+
"signals",
|
|
9
|
+
"reactive",
|
|
10
|
+
"state-management",
|
|
11
|
+
"query-cache",
|
|
12
|
+
"mutation",
|
|
13
|
+
"optimistic-updates",
|
|
14
|
+
"forms",
|
|
15
|
+
"ssr",
|
|
16
|
+
"framework-agnostic"
|
|
17
|
+
],
|
|
5
18
|
"license": "MIT",
|
|
19
|
+
"author": "Bohdan Kontsedal <kontsedalbohdan@gmail.com>",
|
|
20
|
+
"homepage": "https://github.com/Kontsedal/olas/tree/main/packages/core#readme",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/Kontsedal/olas.git",
|
|
24
|
+
"directory": "packages/core"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/Kontsedal/olas/issues"
|
|
28
|
+
},
|
|
6
29
|
"type": "module",
|
|
7
30
|
"main": "./dist/index.cjs",
|
|
8
31
|
"module": "./dist/index.mjs",
|
|
@@ -40,6 +63,9 @@
|
|
|
40
63
|
"devDependencies": {
|
|
41
64
|
"@preact/signals-core": "^1.14.2"
|
|
42
65
|
},
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
},
|
|
43
69
|
"scripts": {
|
|
44
70
|
"build": "tsdown",
|
|
45
71
|
"typecheck": "tsc --noEmit"
|
|
@@ -2,7 +2,12 @@ import type { DevtoolsEmitter } from '../devtools'
|
|
|
2
2
|
import { createEmitter, type Emitter } from '../emitter'
|
|
3
3
|
import { dispatchError, type ErrorHandler } from '../errors'
|
|
4
4
|
import { bindFieldDevtoolsOwner, createField } from '../forms/field'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
bindTreeToDevtools,
|
|
7
|
+
bindTreeValidatorErrorReporter,
|
|
8
|
+
createFieldArray,
|
|
9
|
+
createForm,
|
|
10
|
+
} from '../forms/form'
|
|
6
11
|
import type {
|
|
7
12
|
FieldArray,
|
|
8
13
|
FieldArrayOptions,
|
|
@@ -36,6 +41,17 @@ type LifecycleEntry =
|
|
|
36
41
|
dispose: (() => void) | null
|
|
37
42
|
}
|
|
38
43
|
| { kind: 'cleanup'; dispose: () => void }
|
|
44
|
+
| {
|
|
45
|
+
/**
|
|
46
|
+
* Cache subscription via `ctx.use`. Suspend/resume call the
|
|
47
|
+
* `suspend`/`resume` hooks so the underlying entry's `refetchInterval`
|
|
48
|
+
* and event listeners pause for the duration. Spec §4.1.
|
|
49
|
+
*/
|
|
50
|
+
kind: 'subscription-cache'
|
|
51
|
+
dispose: () => void
|
|
52
|
+
suspend: () => void
|
|
53
|
+
resume: () => void
|
|
54
|
+
}
|
|
39
55
|
| { kind: 'child'; instance: ControllerInstance }
|
|
40
56
|
| { kind: 'onDispose'; fn: () => void }
|
|
41
57
|
| { kind: 'onSuspend'; fn: () => void }
|
|
@@ -109,7 +125,6 @@ export class ControllerInstance {
|
|
|
109
125
|
|
|
110
126
|
dispose(): void {
|
|
111
127
|
if (this.state === 'disposed') return
|
|
112
|
-
const wasSuspended = this.state === 'suspended'
|
|
113
128
|
this.state = 'disposed'
|
|
114
129
|
|
|
115
130
|
for (let i = this.entries.length - 1; i >= 0; i--) {
|
|
@@ -130,8 +145,6 @@ export class ControllerInstance {
|
|
|
130
145
|
if (__DEV__) {
|
|
131
146
|
this.rootShared.devtools.emit({ type: 'controller:disposed', path: this.path })
|
|
132
147
|
}
|
|
133
|
-
// Silence "unused" — `wasSuspended` may inform future logic; intentionally a no-op for now.
|
|
134
|
-
void wasSuspended
|
|
135
148
|
}
|
|
136
149
|
|
|
137
150
|
private disposeEntry(entry: LifecycleEntry): void {
|
|
@@ -143,6 +156,9 @@ export class ControllerInstance {
|
|
|
143
156
|
case 'cleanup':
|
|
144
157
|
entry.dispose()
|
|
145
158
|
break
|
|
159
|
+
case 'subscription-cache':
|
|
160
|
+
entry.dispose()
|
|
161
|
+
break
|
|
146
162
|
case 'child':
|
|
147
163
|
entry.instance.dispose()
|
|
148
164
|
break
|
|
@@ -172,6 +188,11 @@ export class ControllerInstance {
|
|
|
172
188
|
entry.dispose?.()
|
|
173
189
|
entry.dispose = null
|
|
174
190
|
break
|
|
191
|
+
case 'subscription-cache':
|
|
192
|
+
// Pause `refetchInterval` + focus/online listeners + release the
|
|
193
|
+
// entry from this subscriber. Spec §4.1.
|
|
194
|
+
entry.suspend()
|
|
195
|
+
break
|
|
175
196
|
case 'child':
|
|
176
197
|
entry.instance.suspend()
|
|
177
198
|
break
|
|
@@ -204,6 +225,11 @@ export class ControllerInstance {
|
|
|
204
225
|
case 'effect':
|
|
205
226
|
entry.dispose = standaloneEffect(entry.factory)
|
|
206
227
|
break
|
|
228
|
+
case 'subscription-cache':
|
|
229
|
+
// Re-acquire the entry, restart `refetchInterval`, and re-check
|
|
230
|
+
// staleness (a stale entry refetches on resume — spec §4.1).
|
|
231
|
+
entry.resume()
|
|
232
|
+
break
|
|
207
233
|
case 'child':
|
|
208
234
|
entry.instance.resume()
|
|
209
235
|
break
|
|
@@ -255,7 +281,12 @@ export class ControllerInstance {
|
|
|
255
281
|
}
|
|
256
282
|
}
|
|
257
283
|
entry.factory = wrapped
|
|
258
|
-
entry
|
|
284
|
+
// If we're suspended, register the entry but defer activation to
|
|
285
|
+
// `resume()` — otherwise the resume loop would overwrite a live
|
|
286
|
+
// `dispose` ref (the just-activated effect), leaking it.
|
|
287
|
+
if (self.state !== 'suspended') {
|
|
288
|
+
entry.dispose = standaloneEffect(wrapped)
|
|
289
|
+
}
|
|
259
290
|
self.entries.push(entry)
|
|
260
291
|
},
|
|
261
292
|
|
|
@@ -271,21 +302,31 @@ export class ControllerInstance {
|
|
|
271
302
|
use(query: any, keyOrOptions?: any): any {
|
|
272
303
|
const brand = (query as { __olas?: string }).__olas
|
|
273
304
|
if (brand === 'infiniteQuery') {
|
|
274
|
-
const
|
|
305
|
+
const handle = createInfiniteUse(
|
|
275
306
|
self.rootShared.queryClient,
|
|
276
307
|
query as InfiniteQuery<unknown[], unknown, unknown>,
|
|
277
308
|
keyOrOptions,
|
|
278
309
|
)
|
|
279
|
-
self.entries.push({
|
|
280
|
-
|
|
310
|
+
self.entries.push({
|
|
311
|
+
kind: 'subscription-cache',
|
|
312
|
+
dispose: handle.dispose,
|
|
313
|
+
suspend: handle.suspend,
|
|
314
|
+
resume: handle.resume,
|
|
315
|
+
})
|
|
316
|
+
return handle.subscription
|
|
281
317
|
}
|
|
282
|
-
const
|
|
318
|
+
const handle = createUse(
|
|
283
319
|
self.rootShared.queryClient,
|
|
284
320
|
query as Query<unknown[], unknown>,
|
|
285
321
|
keyOrOptions,
|
|
286
322
|
)
|
|
287
|
-
self.entries.push({
|
|
288
|
-
|
|
323
|
+
self.entries.push({
|
|
324
|
+
kind: 'subscription-cache',
|
|
325
|
+
dispose: handle.dispose,
|
|
326
|
+
suspend: handle.suspend,
|
|
327
|
+
resume: handle.resume,
|
|
328
|
+
})
|
|
329
|
+
return handle.subscription
|
|
289
330
|
},
|
|
290
331
|
|
|
291
332
|
mutation<V, R>(spec: MutationSpec<V, R>): Mutation<V, R> {
|
|
@@ -307,7 +348,17 @@ export class ControllerInstance {
|
|
|
307
348
|
},
|
|
308
349
|
|
|
309
350
|
field<T>(initial: T, validators?: ReadonlyArray<Validator<T>>): Field<T> {
|
|
310
|
-
|
|
351
|
+
// Pass the reporter at construct time so the FIRST validator pass
|
|
352
|
+
// (which runs synchronously in the FieldImpl constructor's
|
|
353
|
+
// validator-effect) is covered.
|
|
354
|
+
const f = createField(initial, validators, {
|
|
355
|
+
onValidatorError: (err) => {
|
|
356
|
+
dispatchError(self.rootShared.onError, err, {
|
|
357
|
+
kind: 'effect',
|
|
358
|
+
controllerPath: self.path,
|
|
359
|
+
})
|
|
360
|
+
},
|
|
361
|
+
})
|
|
311
362
|
self.entries.push({ kind: 'cleanup', dispose: () => f.dispose() })
|
|
312
363
|
// Standalone fields (not inside a form) still publish field:validated
|
|
313
364
|
// events. Use the controller path with field name "(field)" — the
|
|
@@ -321,7 +372,13 @@ export class ControllerInstance {
|
|
|
321
372
|
},
|
|
322
373
|
|
|
323
374
|
form<S extends FormSchema>(schema: S, options?: FormOptions<S>): Form<S> {
|
|
324
|
-
const
|
|
375
|
+
const reporter = (err: unknown): void => {
|
|
376
|
+
dispatchError(self.rootShared.onError, err, {
|
|
377
|
+
kind: 'effect',
|
|
378
|
+
controllerPath: self.path,
|
|
379
|
+
})
|
|
380
|
+
}
|
|
381
|
+
const f = createForm(schema, options, { onValidatorError: reporter })
|
|
325
382
|
self.entries.push({ kind: 'cleanup', dispose: () => f.dispose() })
|
|
326
383
|
// Make every leaf field publish `field:validated` to the devtools bus
|
|
327
384
|
// with its key path inside the form. See spec §20.9.
|
|
@@ -332,6 +389,12 @@ export class ControllerInstance {
|
|
|
332
389
|
self.rootShared.devtools,
|
|
333
390
|
)
|
|
334
391
|
self.entries.push({ kind: 'cleanup', dispose: stop })
|
|
392
|
+
// Bind the reporter onto every leaf in the tree too (the form itself
|
|
393
|
+
// got it via the constructor option; nested forms/arrays inside the
|
|
394
|
+
// schema didn't, since they were constructed by the caller before
|
|
395
|
+
// ctx.form ran). Idempotent — leaves that already got the reporter
|
|
396
|
+
// via ctx.field get the same one set again.
|
|
397
|
+
bindTreeValidatorErrorReporter(f as unknown as Form<FormSchema>, reporter)
|
|
335
398
|
return f
|
|
336
399
|
},
|
|
337
400
|
|
|
@@ -339,7 +402,13 @@ export class ControllerInstance {
|
|
|
339
402
|
itemFactory: (initial?: ItemInitial<I>) => I,
|
|
340
403
|
options?: FieldArrayOptions<I>,
|
|
341
404
|
): FieldArray<I> {
|
|
342
|
-
const
|
|
405
|
+
const reporter = (err: unknown): void => {
|
|
406
|
+
dispatchError(self.rootShared.onError, err, {
|
|
407
|
+
kind: 'effect',
|
|
408
|
+
controllerPath: self.path,
|
|
409
|
+
})
|
|
410
|
+
}
|
|
411
|
+
const fa = createFieldArray<I>(itemFactory, options, { onValidatorError: reporter })
|
|
343
412
|
self.entries.push({ kind: 'cleanup', dispose: () => fa.dispose() })
|
|
344
413
|
const stop = bindTreeToDevtools(
|
|
345
414
|
fa as unknown as FieldArray<Field<unknown> | Form<FormSchema>>,
|
|
@@ -348,6 +417,10 @@ export class ControllerInstance {
|
|
|
348
417
|
self.rootShared.devtools,
|
|
349
418
|
)
|
|
350
419
|
self.entries.push({ kind: 'cleanup', dispose: stop })
|
|
420
|
+
bindTreeValidatorErrorReporter(
|
|
421
|
+
fa as unknown as FieldArray<Field<unknown> | Form<FormSchema>>,
|
|
422
|
+
reporter,
|
|
423
|
+
)
|
|
351
424
|
return fa
|
|
352
425
|
},
|
|
353
426
|
|
|
@@ -407,7 +480,7 @@ export class ControllerInstance {
|
|
|
407
480
|
def: ControllerDef<Props, Api>,
|
|
408
481
|
props: Props,
|
|
409
482
|
options?: { deps?: Partial<Record<string, unknown>> },
|
|
410
|
-
): { api: Api; dispose: () => void } {
|
|
483
|
+
): { api: Api; dispose: () => void; suspend: () => void; resume: () => void } {
|
|
411
484
|
const segment = self.makeChildSegment(getFactory(def), getName(def))
|
|
412
485
|
const override = options?.deps
|
|
413
486
|
const childDeps = override !== undefined ? { ...self.deps, ...override } : self.deps
|
|
@@ -432,6 +505,33 @@ export class ControllerInstance {
|
|
|
432
505
|
})
|
|
433
506
|
}
|
|
434
507
|
},
|
|
508
|
+
// Suspend / resume cascade through the child instance's lifecycle
|
|
509
|
+
// entries (same code path as `root.suspend()`); the child's state
|
|
510
|
+
// machine handles the no-op cases (suspending a disposed child,
|
|
511
|
+
// resuming an active child) on its own — no need to track an
|
|
512
|
+
// extra flag here.
|
|
513
|
+
suspend: () => {
|
|
514
|
+
if (disposed) return
|
|
515
|
+
try {
|
|
516
|
+
childInstance.suspend()
|
|
517
|
+
} catch (err) {
|
|
518
|
+
dispatchError(self.rootShared.onError, err, {
|
|
519
|
+
kind: 'effect',
|
|
520
|
+
controllerPath: self.path,
|
|
521
|
+
})
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
resume: () => {
|
|
525
|
+
if (disposed) return
|
|
526
|
+
try {
|
|
527
|
+
childInstance.resume()
|
|
528
|
+
} catch (err) {
|
|
529
|
+
dispatchError(self.rootShared.onError, err, {
|
|
530
|
+
kind: 'effect',
|
|
531
|
+
controllerPath: self.path,
|
|
532
|
+
})
|
|
533
|
+
}
|
|
534
|
+
},
|
|
435
535
|
}
|
|
436
536
|
},
|
|
437
537
|
|