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.
Files changed (2) hide show
  1. package/dist/index.d.mts +13 -11
  2. 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "preact-sigma",
3
- "version": "3.0.1",
3
+ "version": "3.1.0",
4
4
  "keywords": [],
5
5
  "license": "MIT",
6
6
  "author": "Alec Larson",