preact-sigma 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +13 -11
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ReadonlySignal, action, batch, computed, effect, untracked } from "@preact/signals";
|
|
2
|
-
import { Patch, freeze, immerable } from "immer";
|
|
2
|
+
import { Immutable, Patch, freeze, immerable } from "immer";
|
|
3
3
|
|
|
4
4
|
//#region src/internal/symbols.d.ts
|
|
5
|
+
declare const signalPrefix = "#";
|
|
5
6
|
declare const sigmaTypeBrand: unique symbol;
|
|
6
7
|
declare const sigmaStateBrand: unique symbol;
|
|
7
8
|
declare const sigmaEventsBrand: unique symbol;
|
|
8
9
|
declare const sigmaRefBrand: unique symbol;
|
|
10
|
+
declare const reservedKeys: Set<string>;
|
|
9
11
|
//#endregion
|
|
10
12
|
//#region src/listener.d.ts
|
|
11
13
|
type InferEventMap<TTarget extends EventTarget> = TTarget extends {
|
|
@@ -81,7 +83,7 @@ type Draft<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : HasSi
|
|
|
81
83
|
*
|
|
82
84
|
* Use this instead of `immer.Immutable`
|
|
83
85
|
*/
|
|
84
|
-
type Immutable<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : HasSigmaRefBrand<T> extends true ? T : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<Immutable<K>, Immutable<V>> : T extends ReadonlySet<infer V> ? ReadonlySet<Immutable<V>> : T extends WeakReferences ? T : T extends object ? { readonly [K in keyof T]: Immutable<T[K]> } : T;
|
|
86
|
+
type Immutable$1<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : HasSigmaRefBrand<T> extends true ? T : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<Immutable$1<K>, Immutable$1<V>> : T extends ReadonlySet<infer V> ? ReadonlySet<Immutable$1<V>> : T extends WeakReferences ? T : T extends object ? { readonly [K in keyof T]: Immutable$1<T[K]> } : T;
|
|
85
87
|
//#endregion
|
|
86
88
|
//#region src/internal/types.d.ts
|
|
87
89
|
type Def = typeof sigmaTypeBrand;
|
|
@@ -108,13 +110,13 @@ type AnyState = Record<string, unknown>;
|
|
|
108
110
|
type AnyDefaultState<TState extends object> = { [K in keyof TState]?: DefaultStateValue<TState[K]> };
|
|
109
111
|
/** A cleanup resource supported by `.setup(...)`, including function, `dispose()`, and `Symbol.dispose` cleanup. */
|
|
110
112
|
type AnyResource = Cleanup | Disposable | DisposableLike | AbortController;
|
|
111
|
-
type ComputedValues<TComputeds> = { readonly [K in keyof TComputeds]: TComputeds[K] extends AnyFunction ? Immutable<ReturnType<TComputeds[K]>> : never };
|
|
113
|
+
type ComputedValues<TComputeds> = { readonly [K in keyof TComputeds]: TComputeds[K] extends AnyFunction ? Immutable$1<ReturnType<TComputeds[K]>> : never };
|
|
112
114
|
type QueryMethods<TQueries> = { [K in keyof TQueries]: TQueries[K] extends AnyFunction ? (...args: Parameters<TQueries[K]>) => ReturnType<TQueries[K]> : never };
|
|
113
115
|
type ActionMethods<TActions> = { [K in keyof TActions]: TActions[K] extends AnyFunction ? (...args: Parameters<TActions[K]>) => ReturnType<TActions[K]> : never };
|
|
114
116
|
type MergeObjects<TLeft, TRight, TConstraint extends object = object> = TRight extends TConstraint ? TLeft extends TConstraint ? Simplify<Omit<TLeft, keyof TRight> & TRight> : TRight : TLeft extends TConstraint ? TLeft : {};
|
|
115
117
|
type Simplify<T> = {} & { [K in keyof T]: T[K] };
|
|
116
|
-
type ComputedContext<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = Simplify<Immutable<MergeObjects<T[Def]["state"], TOverrides["state"]>> & ComputedValues<MergeObjects<T[Def]["computeds"], TOverrides["computeds"]>>>;
|
|
117
|
-
type ReadonlyContext<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = Simplify<Immutable<MergeObjects<T[Def]["state"], TOverrides["state"]>> & ComputedValues<MergeObjects<T[Def]["computeds"], TOverrides["computeds"]>> & QueryMethods<MergeObjects<T[Def]["queries"], TOverrides["queries"]>>>;
|
|
118
|
+
type ComputedContext<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = Simplify<Immutable$1<MergeObjects<T[Def]["state"], TOverrides["state"]>> & ComputedValues<MergeObjects<T[Def]["computeds"], TOverrides["computeds"]>>>;
|
|
119
|
+
type ReadonlyContext<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = Simplify<Immutable$1<MergeObjects<T[Def]["state"], TOverrides["state"]>> & ComputedValues<MergeObjects<T[Def]["computeds"], TOverrides["computeds"]>> & QueryMethods<MergeObjects<T[Def]["queries"], TOverrides["queries"]>>>;
|
|
118
120
|
type Emit<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = MergeObjects<T[Def]["events"], TOverrides["events"], AnyEvents> extends infer TEvents ? [TEvents] extends [AnyEvents] ? <TEvent extends string & keyof TEvents>(name: TEvent, ...[detail]: EventParameters<TEvents[TEvent]>) => void : never : never;
|
|
119
121
|
type ActionContext<T extends AnySigmaType, TOverrides extends Partial<SigmaDefinition> = {}> = Simplify<Draft<MergeObjects<T[Def]["state"], TOverrides["state"]>> & ComputedValues<MergeObjects<T[Def]["computeds"], TOverrides["computeds"]>> & QueryMethods<MergeObjects<T[Def]["queries"], TOverrides["queries"]>> & ActionMethods<MergeObjects<T[Def]["actions"], TOverrides["actions"]>> & {
|
|
120
122
|
/** Publishes the current action draft immediately so later boundaries use committed state. */commit(): void; /** Emits a typed event from the current action. */
|
|
@@ -148,8 +150,8 @@ type SigmaObserveOptions = {
|
|
|
148
150
|
};
|
|
149
151
|
/** The change object delivered to `.observe(...)` listeners. */
|
|
150
152
|
type SigmaObserveChange<TState extends AnyState, TWithPatches extends boolean = false> = {
|
|
151
|
-
readonly newState: Immutable<TState>;
|
|
152
|
-
readonly oldState: Immutable<TState>;
|
|
153
|
+
readonly newState: Immutable$1<TState>;
|
|
154
|
+
readonly oldState: Immutable$1<TState>;
|
|
153
155
|
} & (TWithPatches extends true ? {
|
|
154
156
|
readonly inversePatches: readonly Patch[];
|
|
155
157
|
readonly patches: readonly Patch[];
|
|
@@ -173,7 +175,7 @@ type EventMethods<TEvents extends AnyEvents | undefined> = [undefined] extends [
|
|
|
173
175
|
type SetupMethods<TSetupArgs extends any[] | undefined> = [TSetupArgs] extends [undefined] ? never : {
|
|
174
176
|
/** Runs every registered setup handler and returns one cleanup function for the active setup. */setup(...args: Extract<TSetupArgs, any[]>): Cleanup;
|
|
175
177
|
};
|
|
176
|
-
type MapSigmaDefinition<T extends SigmaDefinition> = keyof T extends infer K ? K extends "state" ? Immutable<T[K]> & SignalAccessors<Immutable<T[K]>> : K extends "computeds" ? ComputedValues<T[K]> & SignalAccessors<ComputedValues<T[K]>> : K extends "queries" ? QueryMethods<T[K]> : K extends "actions" ? ActionMethods<T[K]> : K extends "events" ? EventMethods<T[K]> : K extends "setupArgs" ? SetupMethods<T[K]> : never : never;
|
|
178
|
+
type MapSigmaDefinition<T extends SigmaDefinition> = keyof T extends infer K ? K extends "state" ? Immutable$1<T[K]> & SignalAccessors<Immutable$1<T[K]>> : K extends "computeds" ? ComputedValues<T[K]> & SignalAccessors<ComputedValues<T[K]>> : K extends "queries" ? QueryMethods<T[K]> : K extends "actions" ? ActionMethods<T[K]> : K extends "events" ? EventMethods<T[K]> : K extends "setupArgs" ? SetupMethods<T[K]> : never : never;
|
|
177
179
|
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
|
178
180
|
/** The public instance shape produced by a configured sigma type, including signal access inferred from the definition. */
|
|
179
181
|
type SigmaState<T extends SigmaDefinition = SigmaDefinition> = AnySigmaState & Simplify<UnionToIntersection<MapSigmaDefinition<T>>>;
|
|
@@ -201,7 +203,7 @@ declare function setAutoFreeze(autoFreeze: boolean): void;
|
|
|
201
203
|
* referenced values. Its type is inferred from the instance's sigma-state
|
|
202
204
|
* definition.
|
|
203
205
|
*/
|
|
204
|
-
declare function snapshot<T extends AnySigmaState>(publicInstance: T): T extends SigmaState<infer TDefinition> ? Immutable<TDefinition["state"]> : never;
|
|
206
|
+
declare function snapshot<T extends AnySigmaState>(publicInstance: T): T extends SigmaState<infer TDefinition> ? Immutable$1<TDefinition["state"]> : never;
|
|
205
207
|
/**
|
|
206
208
|
* Replaces an instance's committed public state from a snapshot object.
|
|
207
209
|
*
|
|
@@ -210,7 +212,7 @@ declare function snapshot<T extends AnySigmaState>(publicInstance: T): T extends
|
|
|
210
212
|
* notifies observers when the committed state changes. Its type is inferred
|
|
211
213
|
* from the instance's sigma-state definition.
|
|
212
214
|
*/
|
|
213
|
-
declare function replaceState<T extends AnySigmaState>(publicInstance: T, nextState: T extends SigmaState<infer TDefinition> ? Immutable<TDefinition["state"]> : never): void;
|
|
215
|
+
declare function replaceState<T extends AnySigmaState>(publicInstance: T, nextState: T extends SigmaState<infer TDefinition> ? Immutable$1<TDefinition["state"]> : never): void;
|
|
214
216
|
//#endregion
|
|
215
217
|
//#region src/framework.d.ts
|
|
216
218
|
/** Checks whether a value is an instance created by a configured sigma type. */
|
|
@@ -340,4 +342,4 @@ declare function useSigma<T extends AnySigmaState>(create: () => T, setupArgs?:
|
|
|
340
342
|
*/
|
|
341
343
|
declare function useListener<TTarget extends EventTarget | AnySigmaState, TEvent extends InferEventType<TTarget>>(target: TTarget | null, name: TEvent, listener: InferListener<TTarget, TEvent>): void;
|
|
342
344
|
//#endregion
|
|
343
|
-
export { type AnyDefaultState, type AnyEvents, type AnyResource, type AnySigmaState, type AnySigmaStateWithEvents, type AnyState, EventParameters, InferEventType, InferListener, type InferSetupArgs, type SigmaObserveChange, type SigmaObserveOptions, type SigmaRef, type SigmaState, SigmaTarget, SigmaType, action, batch, computed, effect, freeze, immerable, isSigmaState, listen, query, replaceState, setAutoFreeze, snapshot, untracked, useListener, useSigma };
|
|
345
|
+
export { type AnyDefaultState, type AnyEvents, type AnyResource, type AnySigmaState, type AnySigmaStateWithEvents, type AnyState, EventParameters, type Immutable, InferEventType, InferListener, type InferSetupArgs, type SigmaObserveChange, type SigmaObserveOptions, type SigmaRef, type SigmaState, SigmaTarget, SigmaType, action, batch, computed, effect, freeze, immerable, isSigmaState, listen, query, replaceState, reservedKeys, setAutoFreeze, sigmaEventsBrand, sigmaRefBrand, sigmaStateBrand, sigmaTypeBrand, signalPrefix, snapshot, untracked, useListener, useSigma };
|