@kontsedal/olas-core 0.0.3 → 0.0.5
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 +4 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{root-Cnkb3I--.mjs → root-DqWolle_.mjs} +163 -6
- package/dist/root-DqWolle_.mjs.map +1 -0
- package/dist/{root-D_xAdcom.cjs → root-lBp7qziQ.cjs} +180 -5
- package/dist/root-lBp7qziQ.cjs.map +1 -0
- package/dist/testing.cjs +22 -11
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +2 -1
- package/dist/testing.d.cts.map +1 -1
- package/dist/testing.d.mts +2 -1
- package/dist/testing.d.mts.map +1 -1
- package/dist/testing.mjs +22 -11
- package/dist/testing.mjs.map +1 -1
- package/dist/{types-CRn4UoLn.d.mts → types-BH1o6nYa.d.mts} +139 -7
- package/dist/types-BH1o6nYa.d.mts.map +1 -0
- package/dist/{types-r_TVaRkD.d.cts → types-C4Vtkxbn.d.cts} +139 -7
- package/dist/types-C4Vtkxbn.d.cts.map +1 -0
- package/package.json +1 -1
- package/src/controller/instance.ts +11 -1
- package/src/controller/types.ts +13 -9
- package/src/index.ts +11 -2
- package/src/query/client.ts +36 -0
- package/src/query/local.ts +1 -0
- package/src/query/mutation.ts +178 -1
- package/src/query/plugin.ts +91 -1
- package/src/query/types.ts +7 -0
- package/src/query/use.ts +6 -0
- package/src/testing.ts +3 -0
- package/dist/root-Cnkb3I--.mjs.map +0 -1
- package/dist/root-D_xAdcom.cjs.map +0 -1
- package/dist/types-CRn4UoLn.d.mts.map +0 -1
- package/dist/types-r_TVaRkD.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-lBp7qziQ.cjs");
|
|
3
3
|
//#region src/testing.ts
|
|
4
4
|
/**
|
|
5
5
|
* Construct an isolated root wrapping a single controller. The returned object
|
|
@@ -60,18 +60,29 @@ function fakeField(initial, overrides) {
|
|
|
60
60
|
*/
|
|
61
61
|
function fakeAsyncState(overrides) {
|
|
62
62
|
const data$ = require_root.signal(overrides?.data);
|
|
63
|
+
const error$ = require_root.signal(overrides?.error);
|
|
64
|
+
const status$ = require_root.signal(overrides?.status ?? (overrides?.data !== void 0 ? "success" : "idle"));
|
|
65
|
+
const isLoading$ = require_root.signal(overrides?.isLoading ?? false);
|
|
66
|
+
const isFetching$ = require_root.signal(overrides?.isFetching ?? false);
|
|
67
|
+
const isStale$ = require_root.signal(overrides?.isStale ?? false);
|
|
68
|
+
const lastUpdatedAt$ = require_root.signal(overrides?.lastUpdatedAt);
|
|
69
|
+
const hasPendingMutations$ = require_root.signal(overrides?.hasPendingMutations ?? false);
|
|
70
|
+
const refetch = overrides?.refetch ?? (async () => data$.peek());
|
|
71
|
+
const reset = overrides?.reset ?? (() => {});
|
|
72
|
+
const firstValue = overrides?.firstValue ?? (async () => data$.peek());
|
|
63
73
|
return {
|
|
64
74
|
data: data$,
|
|
65
|
-
error:
|
|
66
|
-
status:
|
|
67
|
-
isLoading:
|
|
68
|
-
isFetching:
|
|
69
|
-
isStale:
|
|
70
|
-
lastUpdatedAt:
|
|
71
|
-
hasPendingMutations:
|
|
72
|
-
refetch
|
|
73
|
-
reset
|
|
74
|
-
firstValue
|
|
75
|
+
error: error$,
|
|
76
|
+
status: status$,
|
|
77
|
+
isLoading: isLoading$,
|
|
78
|
+
isFetching: isFetching$,
|
|
79
|
+
isStale: isStale$,
|
|
80
|
+
lastUpdatedAt: lastUpdatedAt$,
|
|
81
|
+
hasPendingMutations: hasPendingMutations$,
|
|
82
|
+
refetch,
|
|
83
|
+
reset,
|
|
84
|
+
firstValue,
|
|
85
|
+
promise: overrides?.promise ?? firstValue
|
|
75
86
|
};
|
|
76
87
|
}
|
|
77
88
|
//#endregion
|
package/dist/testing.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.cjs","names":["createRootWithProps","signal","computed"],"sources":["../src/testing.ts"],"sourcesContent":["import { createRootWithProps } from './controller/root'\nimport type { ControllerDef, Field, Root, RootOptions } from './controller/types'\nimport type { AsyncState, AsyncStatus } from './query/types'\nimport { computed, type ReadSignal, type Signal, signal } from './signals'\n\n/**\n * Construct an isolated root wrapping a single controller. The returned object\n * is the controller's api plus the standard Root lifecycle controls\n * (`dispose`, `suspend`, `resume`, `__debug`).\n *\n * Equivalent to defining a tiny root wrapper, but ergonomic in tests.\n */\nexport function createTestController<\n Props,\n Api,\n TDeps extends Record<string, unknown> = Record<string, unknown>,\n>(\n def: ControllerDef<Props, Api>,\n options: {\n deps: TDeps\n props: Props\n onError?: RootOptions<TDeps>['onError']\n },\n): Root<Api> {\n return createRootWithProps<Props, Api, TDeps>(def, options.props, {\n deps: options.deps,\n onError: options.onError,\n })\n}\n\n/**\n * Shape-correct fake `Field<T>` for UI tests. Pass an initial value plus any\n * overrides for the read-only signals. The returned object satisfies `Field<T>`\n * so it can be passed straight into `useField(...)` or any component that\n * accepts a real field. See spec §20.10.\n */\nexport function fakeField<T>(\n initial: T,\n overrides?: Partial<{\n errors: string[]\n isValid: boolean\n isDirty: boolean\n touched: boolean\n isValidating: boolean\n set: (value: T) => void\n setAsInitial: (value: T) => void\n reset: () => void\n markTouched: () => void\n revalidate: () => Promise<boolean>\n setErrors: (errors: ReadonlyArray<string>) => void\n dispose: () => void\n }>,\n): Field<T> {\n const value$: Signal<T> = signal(initial)\n const errors$: Signal<string[]> = signal(overrides?.errors ?? [])\n const touched$: Signal<boolean> = signal(overrides?.touched ?? false)\n const dirty$: Signal<boolean> = signal(overrides?.isDirty ?? false)\n const validating$: Signal<boolean> = signal(overrides?.isValidating ?? false)\n const isValid$: ReadSignal<boolean> =\n overrides?.isValid !== undefined\n ? signal(overrides.isValid)\n : computed(() => errors$.value.length === 0 && !validating$.value)\n\n let currentInitial = initial\n const set = overrides?.set ?? ((next: T) => value$.set(next))\n const setAsInitial =\n overrides?.setAsInitial ??\n ((next: T) => {\n currentInitial = next\n value$.set(next)\n dirty$.set(false)\n })\n const fake: Field<T> = {\n get value() {\n return value$.value\n },\n peek: () => value$.peek(),\n subscribe: (handler) => value$.subscribe(handler),\n errors: errors$,\n isValid: isValid$,\n isDirty: dirty$,\n touched: touched$,\n isValidating: validating$,\n set,\n setAsInitial,\n reset: overrides?.reset ?? (() => value$.set(currentInitial)),\n markTouched: overrides?.markTouched ?? (() => touched$.set(true)),\n revalidate: overrides?.revalidate ?? (async () => errors$.peek().length === 0),\n setErrors: overrides?.setErrors ?? ((errs) => errors$.set([...errs])),\n dispose: overrides?.dispose ?? (() => {}),\n }\n return fake\n}\n\n/**\n * Shape-correct fake `AsyncState<T>` for UI tests. Pass overrides for any of\n * the signal-backed properties; everything else falls back to inert defaults.\n * The returned object satisfies `AsyncState<T>` so it can stand in for a real\n * query subscription in component tests. See spec §20.10.\n */\nexport function fakeAsyncState<T>(\n overrides?: Partial<{\n data: T | undefined\n error: unknown | undefined\n status: AsyncStatus\n isLoading: boolean\n isFetching: boolean\n isStale: boolean\n lastUpdatedAt: number | undefined\n hasPendingMutations: boolean\n refetch: () => Promise<T>\n reset: () => void\n firstValue: () => Promise<T>\n }>,\n): AsyncState<T> {\n const data$: ReadSignal<T | undefined> = signal(overrides?.data)\n const error$: ReadSignal<unknown | undefined> = signal(overrides?.error)\n const status$: ReadSignal<AsyncStatus> = signal(\n overrides?.status ?? (overrides?.data !== undefined ? 'success' : 'idle'),\n )\n const isLoading$: ReadSignal<boolean> = signal(overrides?.isLoading ?? false)\n const isFetching$: ReadSignal<boolean> = signal(overrides?.isFetching ?? false)\n const isStale$: ReadSignal<boolean> = signal(overrides?.isStale ?? false)\n const lastUpdatedAt$: ReadSignal<number | undefined> = signal(overrides?.lastUpdatedAt)\n const hasPendingMutations$: ReadSignal<boolean> = signal(overrides?.hasPendingMutations ?? false)\n\n const refetch = overrides?.refetch ?? (async () => data$.peek() as T)\n const reset = overrides?.reset ?? (() => {})\n const firstValue = overrides?.firstValue ?? (async () => data$.peek() as T)\n\n return {\n data: data$,\n error: error$,\n status: status$,\n isLoading: isLoading$,\n isFetching: isFetching$,\n isStale: isStale$,\n lastUpdatedAt: lastUpdatedAt$,\n hasPendingMutations: hasPendingMutations$,\n refetch,\n reset,\n firstValue,\n }\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAgB,qBAKd,KACA,SAKW;CACX,OAAOA,aAAAA,oBAAuC,KAAK,QAAQ,OAAO;EAChE,MAAM,QAAQ;EACd,SAAS,QAAQ;CACnB,CAAC;AACH;;;;;;;AAQA,SAAgB,UACd,SACA,WAcU;CACV,MAAM,SAAoBC,aAAAA,OAAO,OAAO;CACxC,MAAM,UAA4BA,aAAAA,OAAO,WAAW,UAAU,CAAC,CAAC;CAChE,MAAM,WAA4BA,aAAAA,OAAO,WAAW,WAAW,KAAK;CACpE,MAAM,SAA0BA,aAAAA,OAAO,WAAW,WAAW,KAAK;CAClE,MAAM,cAA+BA,aAAAA,OAAO,WAAW,gBAAgB,KAAK;CAC5E,MAAM,WACJ,WAAW,YAAY,KAAA,IACnBA,aAAAA,OAAO,UAAU,OAAO,IACxBC,aAAAA,eAAe,QAAQ,MAAM,WAAW,KAAK,CAAC,YAAY,KAAK;CAErE,IAAI,iBAAiB;CA4BrB,OAAO;EAlBL,IAAI,QAAQ;GACV,OAAO,OAAO;EAChB;EACA,YAAY,OAAO,KAAK;EACxB,YAAY,YAAY,OAAO,UAAU,OAAO;EAChD,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,cAAc;EACd,KAnBU,WAAW,SAAS,SAAY,OAAO,IAAI,IAAI;EAoBzD,cAlBA,WAAW,kBACT,SAAY;GACZ,iBAAiB;GACjB,OAAO,IAAI,IAAI;GACf,OAAO,IAAI,KAAK;EAClB;EAcA,OAAO,WAAW,gBAAgB,OAAO,IAAI,cAAc;EAC3D,aAAa,WAAW,sBAAsB,SAAS,IAAI,IAAI;EAC/D,YAAY,WAAW,eAAe,YAAY,QAAQ,KAAK,EAAE,WAAW;EAC5E,WAAW,WAAW,eAAe,SAAS,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;EACnE,SAAS,WAAW,kBAAkB,CAAC;CAE/B;AACZ;;;;;;;AAQA,SAAgB,eACd,
|
|
1
|
+
{"version":3,"file":"testing.cjs","names":["createRootWithProps","signal","computed"],"sources":["../src/testing.ts"],"sourcesContent":["import { createRootWithProps } from './controller/root'\nimport type { ControllerDef, Field, Root, RootOptions } from './controller/types'\nimport type { AsyncState, AsyncStatus } from './query/types'\nimport { computed, type ReadSignal, type Signal, signal } from './signals'\n\n/**\n * Construct an isolated root wrapping a single controller. The returned object\n * is the controller's api plus the standard Root lifecycle controls\n * (`dispose`, `suspend`, `resume`, `__debug`).\n *\n * Equivalent to defining a tiny root wrapper, but ergonomic in tests.\n */\nexport function createTestController<\n Props,\n Api,\n TDeps extends Record<string, unknown> = Record<string, unknown>,\n>(\n def: ControllerDef<Props, Api>,\n options: {\n deps: TDeps\n props: Props\n onError?: RootOptions<TDeps>['onError']\n },\n): Root<Api> {\n return createRootWithProps<Props, Api, TDeps>(def, options.props, {\n deps: options.deps,\n onError: options.onError,\n })\n}\n\n/**\n * Shape-correct fake `Field<T>` for UI tests. Pass an initial value plus any\n * overrides for the read-only signals. The returned object satisfies `Field<T>`\n * so it can be passed straight into `useField(...)` or any component that\n * accepts a real field. See spec §20.10.\n */\nexport function fakeField<T>(\n initial: T,\n overrides?: Partial<{\n errors: string[]\n isValid: boolean\n isDirty: boolean\n touched: boolean\n isValidating: boolean\n set: (value: T) => void\n setAsInitial: (value: T) => void\n reset: () => void\n markTouched: () => void\n revalidate: () => Promise<boolean>\n setErrors: (errors: ReadonlyArray<string>) => void\n dispose: () => void\n }>,\n): Field<T> {\n const value$: Signal<T> = signal(initial)\n const errors$: Signal<string[]> = signal(overrides?.errors ?? [])\n const touched$: Signal<boolean> = signal(overrides?.touched ?? false)\n const dirty$: Signal<boolean> = signal(overrides?.isDirty ?? false)\n const validating$: Signal<boolean> = signal(overrides?.isValidating ?? false)\n const isValid$: ReadSignal<boolean> =\n overrides?.isValid !== undefined\n ? signal(overrides.isValid)\n : computed(() => errors$.value.length === 0 && !validating$.value)\n\n let currentInitial = initial\n const set = overrides?.set ?? ((next: T) => value$.set(next))\n const setAsInitial =\n overrides?.setAsInitial ??\n ((next: T) => {\n currentInitial = next\n value$.set(next)\n dirty$.set(false)\n })\n const fake: Field<T> = {\n get value() {\n return value$.value\n },\n peek: () => value$.peek(),\n subscribe: (handler) => value$.subscribe(handler),\n errors: errors$,\n isValid: isValid$,\n isDirty: dirty$,\n touched: touched$,\n isValidating: validating$,\n set,\n setAsInitial,\n reset: overrides?.reset ?? (() => value$.set(currentInitial)),\n markTouched: overrides?.markTouched ?? (() => touched$.set(true)),\n revalidate: overrides?.revalidate ?? (async () => errors$.peek().length === 0),\n setErrors: overrides?.setErrors ?? ((errs) => errors$.set([...errs])),\n dispose: overrides?.dispose ?? (() => {}),\n }\n return fake\n}\n\n/**\n * Shape-correct fake `AsyncState<T>` for UI tests. Pass overrides for any of\n * the signal-backed properties; everything else falls back to inert defaults.\n * The returned object satisfies `AsyncState<T>` so it can stand in for a real\n * query subscription in component tests. See spec §20.10.\n */\nexport function fakeAsyncState<T>(\n overrides?: Partial<{\n data: T | undefined\n error: unknown | undefined\n status: AsyncStatus\n isLoading: boolean\n isFetching: boolean\n isStale: boolean\n lastUpdatedAt: number | undefined\n hasPendingMutations: boolean\n refetch: () => Promise<T>\n reset: () => void\n firstValue: () => Promise<T>\n promise: () => Promise<T>\n }>,\n): AsyncState<T> {\n const data$: ReadSignal<T | undefined> = signal(overrides?.data)\n const error$: ReadSignal<unknown | undefined> = signal(overrides?.error)\n const status$: ReadSignal<AsyncStatus> = signal(\n overrides?.status ?? (overrides?.data !== undefined ? 'success' : 'idle'),\n )\n const isLoading$: ReadSignal<boolean> = signal(overrides?.isLoading ?? false)\n const isFetching$: ReadSignal<boolean> = signal(overrides?.isFetching ?? false)\n const isStale$: ReadSignal<boolean> = signal(overrides?.isStale ?? false)\n const lastUpdatedAt$: ReadSignal<number | undefined> = signal(overrides?.lastUpdatedAt)\n const hasPendingMutations$: ReadSignal<boolean> = signal(overrides?.hasPendingMutations ?? false)\n\n const refetch = overrides?.refetch ?? (async () => data$.peek() as T)\n const reset = overrides?.reset ?? (() => {})\n const firstValue = overrides?.firstValue ?? (async () => data$.peek() as T)\n const promise = overrides?.promise ?? firstValue\n\n return {\n data: data$,\n error: error$,\n status: status$,\n isLoading: isLoading$,\n isFetching: isFetching$,\n isStale: isStale$,\n lastUpdatedAt: lastUpdatedAt$,\n hasPendingMutations: hasPendingMutations$,\n refetch,\n reset,\n firstValue,\n promise,\n }\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAgB,qBAKd,KACA,SAKW;CACX,OAAOA,aAAAA,oBAAuC,KAAK,QAAQ,OAAO;EAChE,MAAM,QAAQ;EACd,SAAS,QAAQ;CACnB,CAAC;AACH;;;;;;;AAQA,SAAgB,UACd,SACA,WAcU;CACV,MAAM,SAAoBC,aAAAA,OAAO,OAAO;CACxC,MAAM,UAA4BA,aAAAA,OAAO,WAAW,UAAU,CAAC,CAAC;CAChE,MAAM,WAA4BA,aAAAA,OAAO,WAAW,WAAW,KAAK;CACpE,MAAM,SAA0BA,aAAAA,OAAO,WAAW,WAAW,KAAK;CAClE,MAAM,cAA+BA,aAAAA,OAAO,WAAW,gBAAgB,KAAK;CAC5E,MAAM,WACJ,WAAW,YAAY,KAAA,IACnBA,aAAAA,OAAO,UAAU,OAAO,IACxBC,aAAAA,eAAe,QAAQ,MAAM,WAAW,KAAK,CAAC,YAAY,KAAK;CAErE,IAAI,iBAAiB;CA4BrB,OAAO;EAlBL,IAAI,QAAQ;GACV,OAAO,OAAO;EAChB;EACA,YAAY,OAAO,KAAK;EACxB,YAAY,YAAY,OAAO,UAAU,OAAO;EAChD,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,cAAc;EACd,KAnBU,WAAW,SAAS,SAAY,OAAO,IAAI,IAAI;EAoBzD,cAlBA,WAAW,kBACT,SAAY;GACZ,iBAAiB;GACjB,OAAO,IAAI,IAAI;GACf,OAAO,IAAI,KAAK;EAClB;EAcA,OAAO,WAAW,gBAAgB,OAAO,IAAI,cAAc;EAC3D,aAAa,WAAW,sBAAsB,SAAS,IAAI,IAAI;EAC/D,YAAY,WAAW,eAAe,YAAY,QAAQ,KAAK,EAAE,WAAW;EAC5E,WAAW,WAAW,eAAe,SAAS,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;EACnE,SAAS,WAAW,kBAAkB,CAAC;CAE/B;AACZ;;;;;;;AAQA,SAAgB,eACd,WAce;CACf,MAAM,QAAmCD,aAAAA,OAAO,WAAW,IAAI;CAC/D,MAAM,SAA0CA,aAAAA,OAAO,WAAW,KAAK;CACvE,MAAM,UAAmCA,aAAAA,OACvC,WAAW,WAAW,WAAW,SAAS,KAAA,IAAY,YAAY,OACpE;CACA,MAAM,aAAkCA,aAAAA,OAAO,WAAW,aAAa,KAAK;CAC5E,MAAM,cAAmCA,aAAAA,OAAO,WAAW,cAAc,KAAK;CAC9E,MAAM,WAAgCA,aAAAA,OAAO,WAAW,WAAW,KAAK;CACxE,MAAM,iBAAiDA,aAAAA,OAAO,WAAW,aAAa;CACtF,MAAM,uBAA4CA,aAAAA,OAAO,WAAW,uBAAuB,KAAK;CAEhG,MAAM,UAAU,WAAW,YAAY,YAAY,MAAM,KAAK;CAC9D,MAAM,QAAQ,WAAW,gBAAgB,CAAC;CAC1C,MAAM,aAAa,WAAW,eAAe,YAAY,MAAM,KAAK;CAGpE,OAAO;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,SAAS;EACT,eAAe;EACf,qBAAqB;EACrB;EACA;EACA;EACA,SAdc,WAAW,WAAW;CAetC;AACF"}
|
package/dist/testing.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as AsyncStatus, V as AsyncState, d as Field, m as RootOptions, p as Root, s as ControllerDef } from "./types-C4Vtkxbn.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/testing.d.ts
|
|
4
4
|
/**
|
|
@@ -51,6 +51,7 @@ declare function fakeAsyncState<T>(overrides?: Partial<{
|
|
|
51
51
|
refetch: () => Promise<T>;
|
|
52
52
|
reset: () => void;
|
|
53
53
|
firstValue: () => Promise<T>;
|
|
54
|
+
promise: () => Promise<T>;
|
|
54
55
|
}>): AsyncState<T>;
|
|
55
56
|
//#endregion
|
|
56
57
|
export { createTestController, fakeAsyncState, fakeField };
|
package/dist/testing.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.cts","names":[],"sources":["../src/testing.ts"],"mappings":";;;;AAYA;;;;;;iBAAgB,oBAAA,2BAGA,MAAA,oBAA0B,MAAA,kBAAA,CAExC,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,OAAA;EACE,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,KAAA;EACP,OAAA,GAAU,WAAA,CAAY,KAAA;AAAA,IAEvB,IAAA,CAAK,GAAA;;;;;;;iBAaQ,SAAA,GAAA,CACd,OAAA,EAAS,CAAA,EACT,SAAA,GAAY,OAAA;EACV,MAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,GAAA,GAAM,KAAA,EAAO,CAAA;EACb,YAAA,GAAe,KAAA,EAAO,CAAA;EACtB,KAAA;EACA,WAAA;EACA,UAAA,QAAkB,OAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,OAAA;AAAA,KAED,KAAA,CAAM,CAAA;;;;;;AA7BE;iBA6EK,cAAA,GAAA,CACd,SAAA,GAAY,OAAA;EACV,IAAA,EAAM,CAAA;EACN,KAAA;EACA,MAAA,EAAQ,WAAA;EACR,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;EACA,mBAAA;EACA,OAAA,QAAe,OAAA,CAAQ,CAAA;EACvB,KAAA;EACA,UAAA,QAAkB,OAAA,CAAQ,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"testing.d.cts","names":[],"sources":["../src/testing.ts"],"mappings":";;;;AAYA;;;;;;iBAAgB,oBAAA,2BAGA,MAAA,oBAA0B,MAAA,kBAAA,CAExC,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,OAAA;EACE,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,KAAA;EACP,OAAA,GAAU,WAAA,CAAY,KAAA;AAAA,IAEvB,IAAA,CAAK,GAAA;;;;;;;iBAaQ,SAAA,GAAA,CACd,OAAA,EAAS,CAAA,EACT,SAAA,GAAY,OAAA;EACV,MAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,GAAA,GAAM,KAAA,EAAO,CAAA;EACb,YAAA,GAAe,KAAA,EAAO,CAAA;EACtB,KAAA;EACA,WAAA;EACA,UAAA,QAAkB,OAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,OAAA;AAAA,KAED,KAAA,CAAM,CAAA;;;;;;AA7BE;iBA6EK,cAAA,GAAA,CACd,SAAA,GAAY,OAAA;EACV,IAAA,EAAM,CAAA;EACN,KAAA;EACA,MAAA,EAAQ,WAAA;EACR,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;EACA,mBAAA;EACA,OAAA,QAAe,OAAA,CAAQ,CAAA;EACvB,KAAA;EACA,UAAA,QAAkB,OAAA,CAAQ,CAAA;EAC1B,OAAA,QAAe,OAAA,CAAQ,CAAA;AAAA,KAExB,UAAA,CAAW,CAAA"}
|
package/dist/testing.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as AsyncStatus, V as AsyncState, d as Field, m as RootOptions, p as Root, s as ControllerDef } from "./types-BH1o6nYa.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/testing.d.ts
|
|
4
4
|
/**
|
|
@@ -51,6 +51,7 @@ declare function fakeAsyncState<T>(overrides?: Partial<{
|
|
|
51
51
|
refetch: () => Promise<T>;
|
|
52
52
|
reset: () => void;
|
|
53
53
|
firstValue: () => Promise<T>;
|
|
54
|
+
promise: () => Promise<T>;
|
|
54
55
|
}>): AsyncState<T>;
|
|
55
56
|
//#endregion
|
|
56
57
|
export { createTestController, fakeAsyncState, fakeField };
|
package/dist/testing.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.mts","names":[],"sources":["../src/testing.ts"],"mappings":";;;;AAYA;;;;;;iBAAgB,oBAAA,2BAGA,MAAA,oBAA0B,MAAA,kBAAA,CAExC,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,OAAA;EACE,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,KAAA;EACP,OAAA,GAAU,WAAA,CAAY,KAAA;AAAA,IAEvB,IAAA,CAAK,GAAA;;;;;;;iBAaQ,SAAA,GAAA,CACd,OAAA,EAAS,CAAA,EACT,SAAA,GAAY,OAAA;EACV,MAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,GAAA,GAAM,KAAA,EAAO,CAAA;EACb,YAAA,GAAe,KAAA,EAAO,CAAA;EACtB,KAAA;EACA,WAAA;EACA,UAAA,QAAkB,OAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,OAAA;AAAA,KAED,KAAA,CAAM,CAAA;;;;;;AA7BE;iBA6EK,cAAA,GAAA,CACd,SAAA,GAAY,OAAA;EACV,IAAA,EAAM,CAAA;EACN,KAAA;EACA,MAAA,EAAQ,WAAA;EACR,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;EACA,mBAAA;EACA,OAAA,QAAe,OAAA,CAAQ,CAAA;EACvB,KAAA;EACA,UAAA,QAAkB,OAAA,CAAQ,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"testing.d.mts","names":[],"sources":["../src/testing.ts"],"mappings":";;;;AAYA;;;;;;iBAAgB,oBAAA,2BAGA,MAAA,oBAA0B,MAAA,kBAAA,CAExC,GAAA,EAAK,aAAA,CAAc,KAAA,EAAO,GAAA,GAC1B,OAAA;EACE,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,KAAA;EACP,OAAA,GAAU,WAAA,CAAY,KAAA;AAAA,IAEvB,IAAA,CAAK,GAAA;;;;;;;iBAaQ,SAAA,GAAA,CACd,OAAA,EAAS,CAAA,EACT,SAAA,GAAY,OAAA;EACV,MAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,GAAA,GAAM,KAAA,EAAO,CAAA;EACb,YAAA,GAAe,KAAA,EAAO,CAAA;EACtB,KAAA;EACA,WAAA;EACA,UAAA,QAAkB,OAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,OAAA;AAAA,KAED,KAAA,CAAM,CAAA;;;;;;AA7BE;iBA6EK,cAAA,GAAA,CACd,SAAA,GAAY,OAAA;EACV,IAAA,EAAM,CAAA;EACN,KAAA;EACA,MAAA,EAAQ,WAAA;EACR,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;EACA,mBAAA;EACA,OAAA,QAAe,OAAA,CAAQ,CAAA;EACvB,KAAA;EACA,UAAA,QAAkB,OAAA,CAAQ,CAAA;EAC1B,OAAA,QAAe,OAAA,CAAQ,CAAA;AAAA,KAExB,UAAA,CAAW,CAAA"}
|
package/dist/testing.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as signal, n as createRootWithProps, p as computed } from "./root-DqWolle_.mjs";
|
|
2
2
|
//#region src/testing.ts
|
|
3
3
|
/**
|
|
4
4
|
* Construct an isolated root wrapping a single controller. The returned object
|
|
@@ -59,18 +59,29 @@ function fakeField(initial, overrides) {
|
|
|
59
59
|
*/
|
|
60
60
|
function fakeAsyncState(overrides) {
|
|
61
61
|
const data$ = signal(overrides?.data);
|
|
62
|
+
const error$ = signal(overrides?.error);
|
|
63
|
+
const status$ = signal(overrides?.status ?? (overrides?.data !== void 0 ? "success" : "idle"));
|
|
64
|
+
const isLoading$ = signal(overrides?.isLoading ?? false);
|
|
65
|
+
const isFetching$ = signal(overrides?.isFetching ?? false);
|
|
66
|
+
const isStale$ = signal(overrides?.isStale ?? false);
|
|
67
|
+
const lastUpdatedAt$ = signal(overrides?.lastUpdatedAt);
|
|
68
|
+
const hasPendingMutations$ = signal(overrides?.hasPendingMutations ?? false);
|
|
69
|
+
const refetch = overrides?.refetch ?? (async () => data$.peek());
|
|
70
|
+
const reset = overrides?.reset ?? (() => {});
|
|
71
|
+
const firstValue = overrides?.firstValue ?? (async () => data$.peek());
|
|
62
72
|
return {
|
|
63
73
|
data: data$,
|
|
64
|
-
error:
|
|
65
|
-
status:
|
|
66
|
-
isLoading:
|
|
67
|
-
isFetching:
|
|
68
|
-
isStale:
|
|
69
|
-
lastUpdatedAt:
|
|
70
|
-
hasPendingMutations:
|
|
71
|
-
refetch
|
|
72
|
-
reset
|
|
73
|
-
firstValue
|
|
74
|
+
error: error$,
|
|
75
|
+
status: status$,
|
|
76
|
+
isLoading: isLoading$,
|
|
77
|
+
isFetching: isFetching$,
|
|
78
|
+
isStale: isStale$,
|
|
79
|
+
lastUpdatedAt: lastUpdatedAt$,
|
|
80
|
+
hasPendingMutations: hasPendingMutations$,
|
|
81
|
+
refetch,
|
|
82
|
+
reset,
|
|
83
|
+
firstValue,
|
|
84
|
+
promise: overrides?.promise ?? firstValue
|
|
74
85
|
};
|
|
75
86
|
}
|
|
76
87
|
//#endregion
|
package/dist/testing.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","names":[],"sources":["../src/testing.ts"],"sourcesContent":["import { createRootWithProps } from './controller/root'\nimport type { ControllerDef, Field, Root, RootOptions } from './controller/types'\nimport type { AsyncState, AsyncStatus } from './query/types'\nimport { computed, type ReadSignal, type Signal, signal } from './signals'\n\n/**\n * Construct an isolated root wrapping a single controller. The returned object\n * is the controller's api plus the standard Root lifecycle controls\n * (`dispose`, `suspend`, `resume`, `__debug`).\n *\n * Equivalent to defining a tiny root wrapper, but ergonomic in tests.\n */\nexport function createTestController<\n Props,\n Api,\n TDeps extends Record<string, unknown> = Record<string, unknown>,\n>(\n def: ControllerDef<Props, Api>,\n options: {\n deps: TDeps\n props: Props\n onError?: RootOptions<TDeps>['onError']\n },\n): Root<Api> {\n return createRootWithProps<Props, Api, TDeps>(def, options.props, {\n deps: options.deps,\n onError: options.onError,\n })\n}\n\n/**\n * Shape-correct fake `Field<T>` for UI tests. Pass an initial value plus any\n * overrides for the read-only signals. The returned object satisfies `Field<T>`\n * so it can be passed straight into `useField(...)` or any component that\n * accepts a real field. See spec §20.10.\n */\nexport function fakeField<T>(\n initial: T,\n overrides?: Partial<{\n errors: string[]\n isValid: boolean\n isDirty: boolean\n touched: boolean\n isValidating: boolean\n set: (value: T) => void\n setAsInitial: (value: T) => void\n reset: () => void\n markTouched: () => void\n revalidate: () => Promise<boolean>\n setErrors: (errors: ReadonlyArray<string>) => void\n dispose: () => void\n }>,\n): Field<T> {\n const value$: Signal<T> = signal(initial)\n const errors$: Signal<string[]> = signal(overrides?.errors ?? [])\n const touched$: Signal<boolean> = signal(overrides?.touched ?? false)\n const dirty$: Signal<boolean> = signal(overrides?.isDirty ?? false)\n const validating$: Signal<boolean> = signal(overrides?.isValidating ?? false)\n const isValid$: ReadSignal<boolean> =\n overrides?.isValid !== undefined\n ? signal(overrides.isValid)\n : computed(() => errors$.value.length === 0 && !validating$.value)\n\n let currentInitial = initial\n const set = overrides?.set ?? ((next: T) => value$.set(next))\n const setAsInitial =\n overrides?.setAsInitial ??\n ((next: T) => {\n currentInitial = next\n value$.set(next)\n dirty$.set(false)\n })\n const fake: Field<T> = {\n get value() {\n return value$.value\n },\n peek: () => value$.peek(),\n subscribe: (handler) => value$.subscribe(handler),\n errors: errors$,\n isValid: isValid$,\n isDirty: dirty$,\n touched: touched$,\n isValidating: validating$,\n set,\n setAsInitial,\n reset: overrides?.reset ?? (() => value$.set(currentInitial)),\n markTouched: overrides?.markTouched ?? (() => touched$.set(true)),\n revalidate: overrides?.revalidate ?? (async () => errors$.peek().length === 0),\n setErrors: overrides?.setErrors ?? ((errs) => errors$.set([...errs])),\n dispose: overrides?.dispose ?? (() => {}),\n }\n return fake\n}\n\n/**\n * Shape-correct fake `AsyncState<T>` for UI tests. Pass overrides for any of\n * the signal-backed properties; everything else falls back to inert defaults.\n * The returned object satisfies `AsyncState<T>` so it can stand in for a real\n * query subscription in component tests. See spec §20.10.\n */\nexport function fakeAsyncState<T>(\n overrides?: Partial<{\n data: T | undefined\n error: unknown | undefined\n status: AsyncStatus\n isLoading: boolean\n isFetching: boolean\n isStale: boolean\n lastUpdatedAt: number | undefined\n hasPendingMutations: boolean\n refetch: () => Promise<T>\n reset: () => void\n firstValue: () => Promise<T>\n }>,\n): AsyncState<T> {\n const data$: ReadSignal<T | undefined> = signal(overrides?.data)\n const error$: ReadSignal<unknown | undefined> = signal(overrides?.error)\n const status$: ReadSignal<AsyncStatus> = signal(\n overrides?.status ?? (overrides?.data !== undefined ? 'success' : 'idle'),\n )\n const isLoading$: ReadSignal<boolean> = signal(overrides?.isLoading ?? false)\n const isFetching$: ReadSignal<boolean> = signal(overrides?.isFetching ?? false)\n const isStale$: ReadSignal<boolean> = signal(overrides?.isStale ?? false)\n const lastUpdatedAt$: ReadSignal<number | undefined> = signal(overrides?.lastUpdatedAt)\n const hasPendingMutations$: ReadSignal<boolean> = signal(overrides?.hasPendingMutations ?? false)\n\n const refetch = overrides?.refetch ?? (async () => data$.peek() as T)\n const reset = overrides?.reset ?? (() => {})\n const firstValue = overrides?.firstValue ?? (async () => data$.peek() as T)\n\n return {\n data: data$,\n error: error$,\n status: status$,\n isLoading: isLoading$,\n isFetching: isFetching$,\n isStale: isStale$,\n lastUpdatedAt: lastUpdatedAt$,\n hasPendingMutations: hasPendingMutations$,\n refetch,\n reset,\n firstValue,\n }\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,qBAKd,KACA,SAKW;CACX,OAAO,oBAAuC,KAAK,QAAQ,OAAO;EAChE,MAAM,QAAQ;EACd,SAAS,QAAQ;CACnB,CAAC;AACH;;;;;;;AAQA,SAAgB,UACd,SACA,WAcU;CACV,MAAM,SAAoB,OAAO,OAAO;CACxC,MAAM,UAA4B,OAAO,WAAW,UAAU,CAAC,CAAC;CAChE,MAAM,WAA4B,OAAO,WAAW,WAAW,KAAK;CACpE,MAAM,SAA0B,OAAO,WAAW,WAAW,KAAK;CAClE,MAAM,cAA+B,OAAO,WAAW,gBAAgB,KAAK;CAC5E,MAAM,WACJ,WAAW,YAAY,KAAA,IACnB,OAAO,UAAU,OAAO,IACxB,eAAe,QAAQ,MAAM,WAAW,KAAK,CAAC,YAAY,KAAK;CAErE,IAAI,iBAAiB;CA4BrB,OAAO;EAlBL,IAAI,QAAQ;GACV,OAAO,OAAO;EAChB;EACA,YAAY,OAAO,KAAK;EACxB,YAAY,YAAY,OAAO,UAAU,OAAO;EAChD,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,cAAc;EACd,KAnBU,WAAW,SAAS,SAAY,OAAO,IAAI,IAAI;EAoBzD,cAlBA,WAAW,kBACT,SAAY;GACZ,iBAAiB;GACjB,OAAO,IAAI,IAAI;GACf,OAAO,IAAI,KAAK;EAClB;EAcA,OAAO,WAAW,gBAAgB,OAAO,IAAI,cAAc;EAC3D,aAAa,WAAW,sBAAsB,SAAS,IAAI,IAAI;EAC/D,YAAY,WAAW,eAAe,YAAY,QAAQ,KAAK,EAAE,WAAW;EAC5E,WAAW,WAAW,eAAe,SAAS,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;EACnE,SAAS,WAAW,kBAAkB,CAAC;CAE/B;AACZ;;;;;;;AAQA,SAAgB,eACd,
|
|
1
|
+
{"version":3,"file":"testing.mjs","names":[],"sources":["../src/testing.ts"],"sourcesContent":["import { createRootWithProps } from './controller/root'\nimport type { ControllerDef, Field, Root, RootOptions } from './controller/types'\nimport type { AsyncState, AsyncStatus } from './query/types'\nimport { computed, type ReadSignal, type Signal, signal } from './signals'\n\n/**\n * Construct an isolated root wrapping a single controller. The returned object\n * is the controller's api plus the standard Root lifecycle controls\n * (`dispose`, `suspend`, `resume`, `__debug`).\n *\n * Equivalent to defining a tiny root wrapper, but ergonomic in tests.\n */\nexport function createTestController<\n Props,\n Api,\n TDeps extends Record<string, unknown> = Record<string, unknown>,\n>(\n def: ControllerDef<Props, Api>,\n options: {\n deps: TDeps\n props: Props\n onError?: RootOptions<TDeps>['onError']\n },\n): Root<Api> {\n return createRootWithProps<Props, Api, TDeps>(def, options.props, {\n deps: options.deps,\n onError: options.onError,\n })\n}\n\n/**\n * Shape-correct fake `Field<T>` for UI tests. Pass an initial value plus any\n * overrides for the read-only signals. The returned object satisfies `Field<T>`\n * so it can be passed straight into `useField(...)` or any component that\n * accepts a real field. See spec §20.10.\n */\nexport function fakeField<T>(\n initial: T,\n overrides?: Partial<{\n errors: string[]\n isValid: boolean\n isDirty: boolean\n touched: boolean\n isValidating: boolean\n set: (value: T) => void\n setAsInitial: (value: T) => void\n reset: () => void\n markTouched: () => void\n revalidate: () => Promise<boolean>\n setErrors: (errors: ReadonlyArray<string>) => void\n dispose: () => void\n }>,\n): Field<T> {\n const value$: Signal<T> = signal(initial)\n const errors$: Signal<string[]> = signal(overrides?.errors ?? [])\n const touched$: Signal<boolean> = signal(overrides?.touched ?? false)\n const dirty$: Signal<boolean> = signal(overrides?.isDirty ?? false)\n const validating$: Signal<boolean> = signal(overrides?.isValidating ?? false)\n const isValid$: ReadSignal<boolean> =\n overrides?.isValid !== undefined\n ? signal(overrides.isValid)\n : computed(() => errors$.value.length === 0 && !validating$.value)\n\n let currentInitial = initial\n const set = overrides?.set ?? ((next: T) => value$.set(next))\n const setAsInitial =\n overrides?.setAsInitial ??\n ((next: T) => {\n currentInitial = next\n value$.set(next)\n dirty$.set(false)\n })\n const fake: Field<T> = {\n get value() {\n return value$.value\n },\n peek: () => value$.peek(),\n subscribe: (handler) => value$.subscribe(handler),\n errors: errors$,\n isValid: isValid$,\n isDirty: dirty$,\n touched: touched$,\n isValidating: validating$,\n set,\n setAsInitial,\n reset: overrides?.reset ?? (() => value$.set(currentInitial)),\n markTouched: overrides?.markTouched ?? (() => touched$.set(true)),\n revalidate: overrides?.revalidate ?? (async () => errors$.peek().length === 0),\n setErrors: overrides?.setErrors ?? ((errs) => errors$.set([...errs])),\n dispose: overrides?.dispose ?? (() => {}),\n }\n return fake\n}\n\n/**\n * Shape-correct fake `AsyncState<T>` for UI tests. Pass overrides for any of\n * the signal-backed properties; everything else falls back to inert defaults.\n * The returned object satisfies `AsyncState<T>` so it can stand in for a real\n * query subscription in component tests. See spec §20.10.\n */\nexport function fakeAsyncState<T>(\n overrides?: Partial<{\n data: T | undefined\n error: unknown | undefined\n status: AsyncStatus\n isLoading: boolean\n isFetching: boolean\n isStale: boolean\n lastUpdatedAt: number | undefined\n hasPendingMutations: boolean\n refetch: () => Promise<T>\n reset: () => void\n firstValue: () => Promise<T>\n promise: () => Promise<T>\n }>,\n): AsyncState<T> {\n const data$: ReadSignal<T | undefined> = signal(overrides?.data)\n const error$: ReadSignal<unknown | undefined> = signal(overrides?.error)\n const status$: ReadSignal<AsyncStatus> = signal(\n overrides?.status ?? (overrides?.data !== undefined ? 'success' : 'idle'),\n )\n const isLoading$: ReadSignal<boolean> = signal(overrides?.isLoading ?? false)\n const isFetching$: ReadSignal<boolean> = signal(overrides?.isFetching ?? false)\n const isStale$: ReadSignal<boolean> = signal(overrides?.isStale ?? false)\n const lastUpdatedAt$: ReadSignal<number | undefined> = signal(overrides?.lastUpdatedAt)\n const hasPendingMutations$: ReadSignal<boolean> = signal(overrides?.hasPendingMutations ?? false)\n\n const refetch = overrides?.refetch ?? (async () => data$.peek() as T)\n const reset = overrides?.reset ?? (() => {})\n const firstValue = overrides?.firstValue ?? (async () => data$.peek() as T)\n const promise = overrides?.promise ?? firstValue\n\n return {\n data: data$,\n error: error$,\n status: status$,\n isLoading: isLoading$,\n isFetching: isFetching$,\n isStale: isStale$,\n lastUpdatedAt: lastUpdatedAt$,\n hasPendingMutations: hasPendingMutations$,\n refetch,\n reset,\n firstValue,\n promise,\n }\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,qBAKd,KACA,SAKW;CACX,OAAO,oBAAuC,KAAK,QAAQ,OAAO;EAChE,MAAM,QAAQ;EACd,SAAS,QAAQ;CACnB,CAAC;AACH;;;;;;;AAQA,SAAgB,UACd,SACA,WAcU;CACV,MAAM,SAAoB,OAAO,OAAO;CACxC,MAAM,UAA4B,OAAO,WAAW,UAAU,CAAC,CAAC;CAChE,MAAM,WAA4B,OAAO,WAAW,WAAW,KAAK;CACpE,MAAM,SAA0B,OAAO,WAAW,WAAW,KAAK;CAClE,MAAM,cAA+B,OAAO,WAAW,gBAAgB,KAAK;CAC5E,MAAM,WACJ,WAAW,YAAY,KAAA,IACnB,OAAO,UAAU,OAAO,IACxB,eAAe,QAAQ,MAAM,WAAW,KAAK,CAAC,YAAY,KAAK;CAErE,IAAI,iBAAiB;CA4BrB,OAAO;EAlBL,IAAI,QAAQ;GACV,OAAO,OAAO;EAChB;EACA,YAAY,OAAO,KAAK;EACxB,YAAY,YAAY,OAAO,UAAU,OAAO;EAChD,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,cAAc;EACd,KAnBU,WAAW,SAAS,SAAY,OAAO,IAAI,IAAI;EAoBzD,cAlBA,WAAW,kBACT,SAAY;GACZ,iBAAiB;GACjB,OAAO,IAAI,IAAI;GACf,OAAO,IAAI,KAAK;EAClB;EAcA,OAAO,WAAW,gBAAgB,OAAO,IAAI,cAAc;EAC3D,aAAa,WAAW,sBAAsB,SAAS,IAAI,IAAI;EAC/D,YAAY,WAAW,eAAe,YAAY,QAAQ,KAAK,EAAE,WAAW;EAC5E,WAAW,WAAW,eAAe,SAAS,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;EACnE,SAAS,WAAW,kBAAkB,CAAC;CAE/B;AACZ;;;;;;;AAQA,SAAgB,eACd,WAce;CACf,MAAM,QAAmC,OAAO,WAAW,IAAI;CAC/D,MAAM,SAA0C,OAAO,WAAW,KAAK;CACvE,MAAM,UAAmC,OACvC,WAAW,WAAW,WAAW,SAAS,KAAA,IAAY,YAAY,OACpE;CACA,MAAM,aAAkC,OAAO,WAAW,aAAa,KAAK;CAC5E,MAAM,cAAmC,OAAO,WAAW,cAAc,KAAK;CAC9E,MAAM,WAAgC,OAAO,WAAW,WAAW,KAAK;CACxE,MAAM,iBAAiD,OAAO,WAAW,aAAa;CACtF,MAAM,uBAA4C,OAAO,WAAW,uBAAuB,KAAK;CAEhG,MAAM,UAAU,WAAW,YAAY,YAAY,MAAM,KAAK;CAC9D,MAAM,QAAQ,WAAW,gBAAgB,CAAC;CAC1C,MAAM,aAAa,WAAW,eAAe,YAAY,MAAM,KAAK;CAGpE,OAAO;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,SAAS;EACT,eAAe;EACf,qBAAqB;EACrB;EACA;EACA;EACA,SAdc,WAAW,WAAW;CAetC;AACF"}
|
|
@@ -251,6 +251,13 @@ type AsyncState<T> = {
|
|
|
251
251
|
refetch: () => Promise<T>;
|
|
252
252
|
reset: () => void;
|
|
253
253
|
firstValue: () => Promise<T>;
|
|
254
|
+
/**
|
|
255
|
+
* Alias of `firstValue()` — clearer name for Suspense / `React.use(...)`
|
|
256
|
+
* use cases. Resolves with `data` on first success (short-circuits if
|
|
257
|
+
* already settled), rejects with `error` on the first failure. Use this
|
|
258
|
+
* to suspend a React tree until the query lands its first value.
|
|
259
|
+
*/
|
|
260
|
+
promise: () => Promise<T>;
|
|
254
261
|
};
|
|
255
262
|
/**
|
|
256
263
|
* Returned by `query.setData(...)` or `localCache.setData(...)`. Used by
|
|
@@ -580,7 +587,67 @@ type MutationSpec<V, R> = {
|
|
|
580
587
|
concurrency?: MutationConcurrency;
|
|
581
588
|
retry?: RetryPolicy;
|
|
582
589
|
retryDelay?: RetryDelay;
|
|
590
|
+
/**
|
|
591
|
+
* Stable identifier used by the mutation-queue plugin
|
|
592
|
+
* (`@kontsedal/olas-mutation-queue`) to route persistable runs across a
|
|
593
|
+
* page reload. REQUIRED when `persist: true`. Recommended even without
|
|
594
|
+
* `persist` if you want devtools to group runs across mutation instances
|
|
595
|
+
* — same shape as `defineQuery({ queryId })`.
|
|
596
|
+
*
|
|
597
|
+
* Don't auto-derive from `name` or function identity; both are fragile
|
|
598
|
+
* under minification.
|
|
599
|
+
*/
|
|
600
|
+
mutationId?: string;
|
|
601
|
+
/**
|
|
602
|
+
* Opt this mutation into durable persistence. When `true`, the runner
|
|
603
|
+
* emits `onMutationEnqueue` to plugins before the user's `mutate` runs
|
|
604
|
+
* and `onMutationSettle` after retries exhaust. Requires `mutationId`.
|
|
605
|
+
* SPEC §13.3.
|
|
606
|
+
*/
|
|
607
|
+
persist?: boolean;
|
|
608
|
+
};
|
|
609
|
+
/**
|
|
610
|
+
* Module-scope handle for a persistable mutation. Returned by
|
|
611
|
+
* `defineMutation(...)`. Pass it to `ctx.mutation(...)` (spread or as-is)
|
|
612
|
+
* so per-controller lifecycle hooks (`onSuccess` / `onError` / ...) can be
|
|
613
|
+
* layered on top.
|
|
614
|
+
*
|
|
615
|
+
* Registering at module import time means the mutation-queue plugin can
|
|
616
|
+
* replay pending runs from durable storage during `init` — before any
|
|
617
|
+
* controller reconstructs.
|
|
618
|
+
*/
|
|
619
|
+
type MutationDef<V, R> = MutationSpec<V, R> & {
|
|
620
|
+
readonly __olas: 'mutation';
|
|
621
|
+
readonly mutationId: string;
|
|
583
622
|
};
|
|
623
|
+
/**
|
|
624
|
+
* Register a persistable mutation at module scope. Returns the spec
|
|
625
|
+
* unchanged (with a `__olas: 'mutation'` brand) so consumers can pass it
|
|
626
|
+
* to `ctx.mutation(...)`, optionally spreading per-controller hooks on
|
|
627
|
+
* top:
|
|
628
|
+
*
|
|
629
|
+
* ```ts
|
|
630
|
+
* // module-scope
|
|
631
|
+
* export const createOrder = defineMutation({
|
|
632
|
+
* mutationId: 'order/create',
|
|
633
|
+
* mutate: async (vars: OrderInput, { signal }) => api.createOrder(vars, { signal }),
|
|
634
|
+
* })
|
|
635
|
+
*
|
|
636
|
+
* // controller
|
|
637
|
+
* const m = ctx.mutation({
|
|
638
|
+
* ...createOrder,
|
|
639
|
+
* onSuccess: () => toast('Order placed'),
|
|
640
|
+
* })
|
|
641
|
+
* ```
|
|
642
|
+
*
|
|
643
|
+
* The `mutate` function MUST NOT close over controller-instance state — on
|
|
644
|
+
* replay there is no controller. Module-level dependencies (a shared `api`
|
|
645
|
+
* client, etc.) are fine.
|
|
646
|
+
*/
|
|
647
|
+
declare function defineMutation<V, R>(spec: MutationSpec<V, R> & {
|
|
648
|
+
mutationId: string;
|
|
649
|
+
persist?: boolean;
|
|
650
|
+
}): MutationDef<V, R>;
|
|
584
651
|
/**
|
|
585
652
|
* A running mutation. Created via `ctx.mutation(spec)` — the controller owns
|
|
586
653
|
* its lifetime. Each `run(vars)` returns a Promise; the four signals reflect
|
|
@@ -722,6 +789,33 @@ type GcEvent = {
|
|
|
722
789
|
keyArgs: readonly unknown[];
|
|
723
790
|
kind: 'data' | 'infinite';
|
|
724
791
|
};
|
|
792
|
+
/**
|
|
793
|
+
* Emitted when a persistable mutation (`spec.persist === true`) starts
|
|
794
|
+
* executing — before the user's `mutate` is invoked. Plugins use this to
|
|
795
|
+
* persist the variables to durable storage; if the page reloads mid-run,
|
|
796
|
+
* the queue replays from these entries.
|
|
797
|
+
*
|
|
798
|
+
* `runId` is unique per execution (a single `mutation.run(...)` call OR a
|
|
799
|
+
* replay attempt). `attempt` counts retry passes within a single runId.
|
|
800
|
+
*/
|
|
801
|
+
type MutationEnqueueEvent = {
|
|
802
|
+
mutationId: string;
|
|
803
|
+
runId: string;
|
|
804
|
+
variables: unknown;
|
|
805
|
+
attempt: number;
|
|
806
|
+
};
|
|
807
|
+
/**
|
|
808
|
+
* Emitted after a persistable mutation settles. Plugins use this to drop
|
|
809
|
+
* the run from the durable queue (on `'success'` or `'error'` after retries
|
|
810
|
+
* exhaust), or to leave it pending (on `'cancelled'` — e.g. parent dispose
|
|
811
|
+
* mid-flight).
|
|
812
|
+
*/
|
|
813
|
+
type MutationSettleEvent = {
|
|
814
|
+
mutationId: string;
|
|
815
|
+
runId: string;
|
|
816
|
+
outcome: 'success' | 'error' | 'cancelled'; /** Only present on `'error'` — the final thrown value after retries. */
|
|
817
|
+
error?: unknown;
|
|
818
|
+
};
|
|
725
819
|
/**
|
|
726
820
|
* Plugin contract. Every hook is optional. Hooks are wrapped in try/catch
|
|
727
821
|
* by `QueryClient`; thrown exceptions are routed through the root's
|
|
@@ -730,12 +824,23 @@ type GcEvent = {
|
|
|
730
824
|
type QueryClientPlugin = {
|
|
731
825
|
/**
|
|
732
826
|
* Called once after the `QueryClient` is constructed. Use it to wire up
|
|
733
|
-
* transport listeners and capture the `QueryClientPluginApi`.
|
|
827
|
+
* transport listeners and capture the `QueryClientPluginApi`. SPEC §13.2.
|
|
828
|
+
*
|
|
829
|
+
* Persistable-mutation replay typically happens HERE — module-scope
|
|
830
|
+
* `defineMutation(...)` calls have already registered their handlers by
|
|
831
|
+
* the time `createRoot(...)` runs, so `init` can walk durable storage
|
|
832
|
+
* and re-invoke registered mutates for any pending entries.
|
|
734
833
|
*/
|
|
735
834
|
init?(api: QueryClientPluginApi): void;
|
|
736
835
|
onSetData?(event: SetDataEvent): void;
|
|
737
836
|
onInvalidate?(event: InvalidateEvent): void;
|
|
738
|
-
onGc?(event: GcEvent): void;
|
|
837
|
+
onGc?(event: GcEvent): void;
|
|
838
|
+
/**
|
|
839
|
+
* Fired when a persistable mutation (`spec.persist === true`) starts
|
|
840
|
+
* executing. SPEC §13.3.
|
|
841
|
+
*/
|
|
842
|
+
onMutationEnqueue?(event: MutationEnqueueEvent): void; /** Fired after a persistable mutation settles. SPEC §13.3. */
|
|
843
|
+
onMutationSettle?(event: MutationSettleEvent): void; /** Called from `QueryClient.dispose`. Tear down transports / listeners here. */
|
|
739
844
|
dispose?(): void;
|
|
740
845
|
};
|
|
741
846
|
/**
|
|
@@ -755,6 +860,33 @@ type RegisteredQuery = {
|
|
|
755
860
|
* in the receiving tab).
|
|
756
861
|
*/
|
|
757
862
|
declare function lookupRegisteredQuery(queryId: string): RegisteredQuery | undefined;
|
|
863
|
+
/**
|
|
864
|
+
* Shape stored in the `mutationId → handler` registry. Only the `mutate`
|
|
865
|
+
* function and the id are needed for replay — lifecycle hooks like
|
|
866
|
+
* `onSuccess` / `onError` are per-controller and can't be safely replayed
|
|
867
|
+
* across page reloads (the controller doesn't exist yet).
|
|
868
|
+
*/
|
|
869
|
+
type RegisteredMutation = {
|
|
870
|
+
readonly mutationId: string;
|
|
871
|
+
/**
|
|
872
|
+
* Replay-safe `mutate`. Matches `MutationSpec.mutate` 1:1 — receives the
|
|
873
|
+
* variables and an `AbortSignal`. The mutation-queue plugin invokes this
|
|
874
|
+
* directly on replay, so the implementation MUST NOT close over
|
|
875
|
+
* controller-instance state. Module-level deps (a shared `api` client,
|
|
876
|
+
* etc.) are fine.
|
|
877
|
+
*/
|
|
878
|
+
readonly mutate: (vars: unknown, signal: AbortSignal) => Promise<unknown>;
|
|
879
|
+
};
|
|
880
|
+
/**
|
|
881
|
+
* Look up a registered mutation by id. Returns `undefined` when no
|
|
882
|
+
* mutation with that id has been defined — typical when a queue entry
|
|
883
|
+
* references a mutation whose module hasn't been imported (e.g. a
|
|
884
|
+
* code-split route boundary). The plugin should leave such entries in
|
|
885
|
+
* place and retry once the module loads.
|
|
886
|
+
*/
|
|
887
|
+
declare function lookupRegisteredMutation(mutationId: string): RegisteredMutation | undefined;
|
|
888
|
+
/** Test-only — drop a registered mutation. Not exported from the package. */
|
|
889
|
+
declare function _unregisterMutationById(mutationId: string): void;
|
|
758
890
|
//#endregion
|
|
759
891
|
//#region src/scope.d.ts
|
|
760
892
|
/**
|
|
@@ -941,13 +1073,13 @@ type Ctx<TDeps = AmbientDeps> = {
|
|
|
941
1073
|
keepPreviousData?: boolean;
|
|
942
1074
|
initialData?: T | undefined;
|
|
943
1075
|
}): LocalCache<T>;
|
|
944
|
-
use<Args extends unknown[], T>(source: Query<Args, T>, keyOrOptions?: (() => Args) | UseOptions<Args>): QuerySubscription<T>;
|
|
945
|
-
use<Args extends unknown[], TPage, TItem>(source: InfiniteQuery<Args, TPage, TItem>, keyOrOptions?: (() => Args) | UseOptions<Args>): InfiniteQuerySubscription<TPage, TItem>;
|
|
946
1076
|
use<Args extends unknown[], T, U>(source: Query<Args, T>, options: {
|
|
947
|
-
key?: () => Args;
|
|
1077
|
+
key?: () => readonly [...Args];
|
|
948
1078
|
enabled?: () => boolean;
|
|
949
1079
|
select: (data: T) => U;
|
|
950
1080
|
}): QuerySubscription<U>;
|
|
1081
|
+
use<Args extends unknown[], T>(source: Query<Args, T>, keyOrOptions?: (() => readonly [...Args]) | UseOptions<Args>): QuerySubscription<T>;
|
|
1082
|
+
use<Args extends unknown[], TPage, TItem>(source: InfiniteQuery<Args, TPage, TItem>, keyOrOptions?: (() => readonly [...Args]) | UseOptions<Args>): InfiniteQuerySubscription<TPage, TItem>;
|
|
951
1083
|
mutation<V, R>(spec: MutationSpec<V, R>): Mutation<V, R>;
|
|
952
1084
|
emitter<T = void>(): Emitter<T>;
|
|
953
1085
|
field<T>(initial: T, validators?: ReadonlyArray<Validator<T>>): Field<T>;
|
|
@@ -1072,5 +1204,5 @@ type Root<Api> = Api & {
|
|
|
1072
1204
|
readonly __debug: DebugBus;
|
|
1073
1205
|
};
|
|
1074
1206
|
//#endregion
|
|
1075
|
-
export {
|
|
1076
|
-
//# sourceMappingURL=types-
|
|
1207
|
+
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 };
|
|
1208
|
+
//# sourceMappingURL=types-BH1o6nYa.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-BH1o6nYa.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":"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"}
|