Skip to content
Layers
Esc
↑↓navigate↵open⌘Jpreview
On this page

core

Namespaces

Namespace Description
StandardSchemaV1 -

Classes

ControlledPromise

Defined in: packages/core/src/controlledPromise.ts:5

Lets lifecycle code outside the executor settle a promise exactly once.

Type Parameters

Type Parameter
T

Constructors

Constructor
new ControlledPromise<T>(): ControlledPromise<T>;

Defined in: packages/core/src/controlledPromise.ts:11

Returns

ControlledPromise<T>

Properties

Property Modifier Type Default value Defined in
promise readonly Promise<T> undefined packages/core/src/controlledPromise.ts:6
settled public boolean false packages/core/src/controlledPromise.ts:7
resolve public Resolve<T> undefined packages/core/src/controlledPromise.ts:8
reject public Reject undefined packages/core/src/controlledPromise.ts:9

PayloadValidationError

Defined in: packages/core/src/errors.ts:8

Normalizes payload failures across supported validator styles.

Extends

  • Error

Constructors

Constructor
new PayloadValidationError(issues, options?): PayloadValidationError;

Defined in: packages/core/src/errors.ts:10

Parameters
Parameter Type
issues readonly ValidationIssue[]
options? { cause?: unknown; }
options.cause? unknown
Returns

PayloadValidationError

Overrides
Error.constructor

Properties

Property Modifier Type Description Inherited from Defined in
issues readonly readonly ValidationIssue[] - - packages/core/src/errors.ts:9
stackTraceLimit static number The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)). The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. Error.stackTraceLimit node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:67
cause? public unknown The cause of the error. Error.cause node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24
name public string - Error.name node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074
message public string - Error.message node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075
stack? public string - Error.stack node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Methods

captureStackTrace()
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1062

Create .stack property on a target object

Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:55

Parameters
Parameter Type
err Error
stackTraces CallSite[]
Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from
Error.prepareStackTrace
isError()
Call Signature
static isError(error): error is Error;

Defined in: node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts:21

Indicates whether the argument provided is a built-in Error instance or not.

Parameters
Parameter Type
error unknown
Returns

error is Error

Inherited from
Error.isError
Call Signature
static isError(value): value is Error;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1057

Check if a value is an instance of Error

Parameters
Parameter Type Description
value unknown The value to check
Returns

value is Error

True if the value is an instance of Error, false otherwise

Inherited from
Error.isError

LayerKeyError

Defined in: packages/core/src/errors.ts:41

Thrown when a layer key is not JSON-safe (from assertLayerKey / hashKey).

Extends

  • Error

Constructors

Constructor
new LayerKeyError(message, path?): LayerKeyError;

Defined in: packages/core/src/errors.ts:43

Parameters
Parameter Type Default value
message string undefined
path readonly PropertyKey[] []
Returns

LayerKeyError

Overrides
Error.constructor

Properties

Property Modifier Type Description Inherited from Defined in
path readonly readonly PropertyKey[] - - packages/core/src/errors.ts:42
stackTraceLimit static number The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)). The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. Error.stackTraceLimit node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:67
cause? public unknown The cause of the error. Error.cause node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24
name public string - Error.name node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074
message public string - Error.message node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075
stack? public string - Error.stack node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Methods

captureStackTrace()
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1062

Create .stack property on a target object

Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:55

Parameters
Parameter Type
err Error
stackTraces CallSite[]
Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from
Error.prepareStackTrace
isError()
Call Signature
static isError(error): error is Error;

Defined in: node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts:21

Indicates whether the argument provided is a built-in Error instance or not.

Parameters
Parameter Type
error unknown
Returns

error is Error

Inherited from
Error.isError
Call Signature
static isError(value): value is Error;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1057

Check if a value is an instance of Error

Parameters
Parameter Type Description
value unknown The value to check
Returns

value is Error

True if the value is an instance of Error, false otherwise

Inherited from
Error.isError

LayerCancelledError

Defined in: packages/core/src/errors.ts:88

Rejects open() when a stack is torn down without a completion response (cancelAll, parent dismiss child clear, group dispose, stackDisconnect).

Extends

  • Error

Constructors

Constructor
new LayerCancelledError(reason?): LayerCancelledError;

Defined in: packages/core/src/errors.ts:91

Parameters
Parameter Type Default value
reason LayerCancelReason "cancelAll"
Returns

LayerCancelledError

Overrides
Error.constructor

Properties

Property Modifier Type Description Inherited from Defined in
reason readonly LayerCancelReason LayerCancelReason that triggered this rejection. - packages/core/src/errors.ts:90
stackTraceLimit static number The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)). The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. Error.stackTraceLimit node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:67
cause? public unknown The cause of the error. Error.cause node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24
name public string - Error.name node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074
message public string - Error.message node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075
stack? public string - Error.stack node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Methods

captureStackTrace()
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
Call Signature
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1062

Create .stack property on a target object

Parameters
Parameter Type
targetObject object
constructorOpt? Function
Returns

void

Inherited from
Error.captureStackTrace
prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/.bun/@types+node@26.1.2/node_modules/@types/node/globals.d.ts:55

Parameters
Parameter Type
err Error
stackTraces CallSite[]
Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from
Error.prepareStackTrace
isError()
Call Signature
static isError(error): error is Error;

Defined in: node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts:21

Indicates whether the argument provided is a built-in Error instance or not.

Parameters
Parameter Type
error unknown
Returns

error is Error

Inherited from
Error.isError
Call Signature
static isError(value): value is Error;

Defined in: node_modules/.bun/bun-types@1.4.0/node_modules/bun-types/globals.d.ts:1057

Check if a value is an instance of Error

Parameters
Parameter Type Description
value unknown The value to check
Returns

value is Error

True if the value is an instance of Error, false otherwise

Inherited from
Error.isError

Layer

Defined in: packages/core/src/layer.ts:14

Runtime state and cancellation resources for one stack entry.

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown

Constructors

Constructor
new Layer<P, R, E, D>(opts): Layer<P, R, E, D>;

Defined in: packages/core/src/layer.ts:31

Parameters
Parameter Type
opts { key: LayerKey; payload: P; index: number; stackSize: number; component?: unknown; enteringDelay?: number; exitingDelay?: number; data?: D; }
opts.key LayerKey
opts.payload P
opts.index number
opts.stackSize number
opts.component? unknown
opts.enteringDelay? number
opts.exitingDelay? number
opts.data? D
Returns

Layer<P, R, E, D>

Properties

Property Modifier Type Default value Defined in
id readonly string undefined packages/core/src/layer.ts:15
key readonly LayerKey undefined packages/core/src/layer.ts:16
promise readonly ControlledPromise<R> undefined packages/core/src/layer.ts:17
abortController readonly AbortController undefined packages/core/src/layer.ts:18
component? readonly unknown undefined packages/core/src/layer.ts:19
enteringDelay readonly number undefined packages/core/src/layer.ts:20
exitingDelay readonly number undefined packages/core/src/layer.ts:21
enterTimer? public Timeout undefined packages/core/src/layer.ts:23
exitTimer? public Timeout undefined packages/core/src/layer.ts:24
aborted public boolean false packages/core/src/layer.ts:26
dismissPending? public Promise<boolean> undefined packages/core/src/layer.ts:27

Accessors

state
Get Signature
get state(): LayerState<P, R, E, D>;

Defined in: packages/core/src/layer.ts:63

Returns

LayerState<P, R, E, D>

blockers
Get Signature
get blockers(): ReadonlySet<BlockerFn>;

Defined in: packages/core/src/layer.ts:67

Returns

ReadonlySet<BlockerFn>

Methods

addBlocker()
addBlocker(fn): () => void;

Defined in: packages/core/src/layer.ts:71

Parameters
Parameter Type
fn BlockerFn
Returns

() => void

setPartial()
setPartial(patch): boolean;

Defined in: packages/core/src/layer.ts:77

Returns true if the snapshot changed.

Parameters
Parameter Type
patch Partial<LayerState<P, R, E, D>>
Returns

boolean

setRunning()
setRunning(running): void;

Defined in: packages/core/src/layer.ts:87

Parameters
Parameter Type
running boolean
Returns

void

abort()
abort(): void;

Defined in: packages/core/src/layer.ts:92

Cancel any in-flight loadFn; subsequent resolutions are ignored.

Returns

void

resolve()
resolve(response): void;

Defined in: packages/core/src/layer.ts:97

Parameters
Parameter Type
response R
Returns

void

reject()
reject(error): void;

Defined in: packages/core/src/layer.ts:101

Parameters
Parameter Type
error E
Returns

void


LayerClient

Defined in: packages/core/src/layerClient.ts:34

Coordinates named layer stacks.

Constructors

Constructor
new LayerClient(opts?): LayerClient;

Defined in: packages/core/src/layerClient.ts:41

Parameters
Parameter Type
opts LayerClientOptions
Returns

LayerClient

Methods

ensureStack()
ensureStack(id, options?): LayerStack;

Defined in: packages/core/src/layerClient.ts:46

Returns a stack, applying options only when creating it.

Parameters
Parameter Type
id string
options? StackOptions
Returns

LayerStack

bindChildStack()
bindChildStack(parentLayerId, childStackId): () => void;

Defined in: packages/core/src/layerClient.ts:75

Parameters
Parameter Type
parentLayerId string
childStackId string
Returns

() => void

open()
Call Signature
open<V, P, R, E, D, RootProps>(options): Promise<R>;

Defined in: packages/core/src/layerClient.ts:110

Accepts validator input while storing its parsed output as the payload.

Type Parameters
Type Parameter Default type
V extends Validator<unknown> -
P InferValidatorOutput<V>
R void
E Error
D unknown
RootProps unknown
Parameters
Parameter Type
options OmitKeyof<OpenLayerOptions<P, R, E, D, RootProps>, "validate" | "payload"> & object
Returns

Promise<R>

Call Signature
open<P, R, E, D, RootProps>(options): Promise<R>;

Defined in: packages/core/src/layerClient.ts:127

Infers response and error types from a DataTag key.

Type Parameters
Type Parameter Default type
P -
R -
E Error
D unknown
RootProps unknown
Parameters
Parameter Type
options OmitKeyof<OpenLayerOptions<P, R, E, D, RootProps> & object, "validate">
Returns

Promise<R>

Call Signature
open<P, R, E, D, RootProps>(options): Promise<R>;

Defined in: packages/core/src/layerClient.ts:136

Opens a layer and resolves with its dismissal response.

Type Parameters
Type Parameter Default type
P -
R void
E Error
D unknown
RootProps unknown
Parameters
Parameter Type
options OmitKeyof<OpenLayerOptions<P, R, E, D, RootProps>, "validate">
Returns

Promise<R>

getStack()
getStack(id?): LayerStack;

Defined in: packages/core/src/layerClient.ts:164

Parameters
Parameter Type Default value
id string "default"
Returns

LayerStack

getStackIds()
getStackIds(): string[];

Defined in: packages/core/src/layerClient.ts:168

Returns

string[]

subscribeStacks()
subscribeStacks(listener): () => void;

Defined in: packages/core/src/layerClient.ts:173

Subscribes to first-time stack materialization.

Parameters
Parameter Type
listener (stackId) => void
Returns

() => void

subscribeNotify()
subscribeNotify(listener): () => void;

Defined in: packages/core/src/layerClient.ts:179

Subscribes to labeled stack snapshot transitions (devtools).

Parameters
Parameter Type
listener (event) => void
Returns

() => void

seedNotify()
seedNotify(stackId?): void;

Defined in: packages/core/src/layerClient.ts:188

Re-emits the current snapshot as a register notify for one stack, or all materialized stacks when stackId is omitted (devtools seed).

Parameters
Parameter Type
stackId? string
Returns

void

dismissAll()
dismissAll(
   stackId?, 
   response?, 
opts?): Promise<void>;

Defined in: packages/core/src/layerClient.ts:204

Bulk-dismisses a stack, completing every open() with response (including omitted/undefined for void layers). Honors DismissAllMode; does not reject — prefer cancelAll for teardown without a completion value.

Parameters
Parameter Type Default value
stackId string "default"
response? unknown undefined
opts? DismissAllOptions undefined
Returns

Promise<void>

cancelAll()
cancelAll(stackId?, opts?): Promise<void>;

Defined in: packages/core/src/layerClient.ts:222

Force-clears a stack and rejects every open/queued caller with LayerCancelledError. System teardown — prefer dismissAll when completing with a response.

Parameters
Parameter Type Default value Description
stackId string "default" -
opts? { reason?: LayerCancelReason; } undefined -
opts.reason? LayerCancelReason undefined Propagated on each rejection.
Returns

Promise<void>

Default

opts.reason "cancelAll"


LayerStack

Defined in: packages/core/src/layerStack.ts:44

Manages the ordered layers for one surface. Snapshots retain their references across batched notifications until their contents change.

Extends

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown

Constructors

Constructor
new LayerStack<P, R, E, D>(id, options?): LayerStack<P, R, E, D>;

Defined in: packages/core/src/layerStack.ts:72

Parameters
Parameter Type
id string
options StackOptions
Returns

LayerStack<P, R, E, D>

Overrides

Subscribable.constructor

Properties

Property Modifier Type Inherited from Defined in
id readonly string - packages/core/src/layerStack.ts:50
options readonly StackOptions - packages/core/src/layerStack.ts:51
listeners protected Map<Listener, Listener> Subscribable.listeners packages/core/src/subscribable.ts:11

Accessors

size
Get Signature
get size(): number;

Defined in: packages/core/src/subscribable.ts:32

Returns

number

Inherited from

Subscribable.size

Methods

getSnapshot()
getSnapshot(): LayerState<P, R, E, D>[];

Defined in: packages/core/src/layerStack.ts:79

Returns a referentially stable snapshot between mutations.

Returns

LayerState<P, R, E, D>[]

getQueuedSnapshot()
getQueuedSnapshot(): LayerState<P, R, E, D>[];

Defined in: packages/core/src/layerStack.ts:82

Returns serially queued layers, which are excluded from getSnapshot.

Returns

LayerState<P, R, E, D>[]

getLayer()
getLayer(id): 
  | Layer<P, R, E, D>
  | undefined;

Defined in: packages/core/src/layerStack.ts:89

Parameters
Parameter Type
id string
Returns

| Layer<P, R, E, D> | undefined

find()
find(key): 
  | Layer<P, R, E, D>
  | undefined;

Defined in: packages/core/src/layerStack.ts:93

Parameters
Parameter Type
key LayerKey
Returns

| Layer<P, R, E, D> | undefined

addBlocker()
addBlocker(fn): () => void;

Defined in: packages/core/src/layerStack.ts:98

Parameters
Parameter Type
fn StackBlockerFn
Returns

() => void

open()
open(opts): Layer<P, R, E, D>;

Defined in: packages/core/src/layerStack.ts:117

Parameters
Parameter Type
opts OpenOpts<P, D>
Returns

Layer<P, R, E, D>

dismiss()
dismiss(layer, ...args): Promise<boolean>;

Defined in: packages/core/src/layerStack.ts:263

Resolves the caller and aborts in-flight loading. Exiting layers remain mounted until their transition settles. Response may be omitted when undefined extends R (EndArgs).

Parameters
Parameter Type
layer Layer<P, R, E, D>
…args EndArgs<R>
Returns

Promise<boolean>

settle()
settle(layer): void;

Defined in: packages/core/src/layerStack.ts:359

Parameters
Parameter Type
layer Layer<P, R, E, D>
Returns

void

dismissAll()
dismissAll(...args): Promise<void>;

Defined in: packages/core/src/layerStack.ts:388

Bulk-dismisses active and queued layers, completing every open() with response (including omitted/undefined when undefined extends R — DismissAllArgs / EndArgs gate). Honors DismissAllMode; does not reject — use cancelAll for teardown without a completion value.

Parameters
Parameter Type
…args DismissAllArgs<R>
Returns

Promise<void>

cancelAll()
cancelAll(opts?): Promise<void>;

Defined in: packages/core/src/layerStack.ts:437

Force-clears the stack and rejects every open/queued caller with LayerCancelledError. Skips blockers. System teardown path — use dismissAll when completing with a response.

Parameters
Parameter Type Description
opts? { reason?: LayerCancelReason; } -
opts.reason? LayerCancelReason Propagated on each rejection.
Returns

Promise<void>

Default

opts.reason "cancelAll"

cancelQueued()
cancelQueued(key, ...args): boolean;

Defined in: packages/core/src/layerStack.ts:493

Resolves and removes a serially queued layer without mounting it (skips blockers). No id → FIFO head for the key; { id } → exact queued match. Response may be omitted when undefined extends R (CancelQueuedArgs / EndArgs gate).

Parameters
Parameter Type
key LayerKey
…args CancelQueuedArgs<R>
Returns

boolean

update()
update(layer, patch): void;

Defined in: packages/core/src/layerStack.ts:523

Parameters
Parameter Type
layer Layer<P, R, E, D>
patch Partial<P>
Returns

void

setRunning()
setRunning(layer, running): void;

Defined in: packages/core/src/layerStack.ts:532

Parameters
Parameter Type
layer Layer<P, R, E, D>
running boolean
Returns

void

subscribe()
subscribe(listener): () => void;

Defined in: packages/core/src/subscribable.ts:13

Parameters
Parameter Type
listener Listener
Returns

() => void

Inherited from

Subscribable.subscribe

notify()
protected notify(): void;

Defined in: packages/core/src/subscribable.ts:23

Returns

void

Inherited from

Subscribable.notify

onSubscribe()?
protected optional onSubscribe(): void;

Defined in: packages/core/src/subscribable.ts:29

Returns

void

Inherited from

Subscribable.onSubscribe

onUnsubscribe()?
protected optional onUnsubscribe(): void;

Defined in: packages/core/src/subscribable.ts:30

Returns

void

Inherited from

Subscribable.onUnsubscribe


Subscribable

Defined in: packages/core/src/subscribable.ts:10

Base for stores whose listeners participate in notifyManager batching. Wrapping occurs once at subscription, so repeated notifications in one batch coalesce for framework and bare subscribers alike.

Extended by

Constructors

Constructor
new Subscribable(): Subscribable;
Returns

Subscribable

Properties

Property Modifier Type Defined in
listeners protected Map<Listener, Listener> packages/core/src/subscribable.ts:11

Accessors

size
Get Signature
get size(): number;

Defined in: packages/core/src/subscribable.ts:32

Returns

number

Methods

subscribe()
subscribe(listener): () => void;

Defined in: packages/core/src/subscribable.ts:13

Parameters
Parameter Type
listener Listener
Returns

() => void

notify()
protected notify(): void;

Defined in: packages/core/src/subscribable.ts:23

Returns

void

onSubscribe()?
protected optional onSubscribe(): void;

Defined in: packages/core/src/subscribable.ts:29

Returns

void

onUnsubscribe()?
protected optional onUnsubscribe(): void;

Defined in: packages/core/src/subscribable.ts:30

Returns

void

Interfaces

LayerHandle

Defined in: packages/core/src/createLayer.ts:40

Identity-bound layer ops + escapes (stack / client / options / current). open/upsert take payload only; stack-level ops route via .stack.

Type Parameters

Type Parameter
P
R
E
D
RP

Properties

Property Modifier Type Description Defined in
open public (payload) => Promise<R> - packages/core/src/createLayer.ts:41
upsert public (payload) => Promise<R> - packages/core/src/createLayer.ts:42
dismiss public (…args) => Promise<boolean> Dismiss the bound instance (or { id }). Response optional iff undefined extends R (HandleDismissArgs / EndArgs gate). packages/core/src/createLayer.ts:48
update public (patch, opts?) => void - packages/core/src/createLayer.ts:49
cancelQueued public (…args) => boolean Resolves and removes a serially queued layer without mounting (skips blockers). No id → FIFO head for this key; { id } → exact queued match. Response may be omitted when undefined extends R (CancelQueuedArgs / EndArgs gate). packages/core/src/createLayer.ts:56
client readonly LayerClient - packages/core/src/createLayer.ts:57
stack readonly LayerStack<P, R, E, D> - packages/core/src/createLayer.ts:58
options readonly LayerOptions<P, R, E, D, RP> & object - packages/core/src/createLayer.ts:59
current readonly | Layer<P, R, E, D> | null Live-checked bound instance (null when not in the stack). packages/core/src/createLayer.ts:63

ValidatedLayerHandle

Defined in: packages/core/src/createLayer.ts:70

Validated handle: open/upsert take schema input (OpenValidatePayload); current/update use parsed output.

Extends

Type Parameters

Type Parameter
V extends Validator<unknown>
R
E
D
RP

Properties

Property Modifier Type Description Inherited from Defined in
dismiss public (…args) => Promise<boolean> Dismiss the bound instance (or { id }). Response optional iff undefined extends R (HandleDismissArgs / EndArgs gate). Omit.dismiss packages/core/src/createLayer.ts:48
update public (patch, opts?) => void - Omit.update packages/core/src/createLayer.ts:49
cancelQueued public (…args) => boolean Resolves and removes a serially queued layer without mounting (skips blockers). No id → FIFO head for this key; { id } → exact queued match. Response may be omitted when undefined extends R (CancelQueuedArgs / EndArgs gate). Omit.cancelQueued packages/core/src/createLayer.ts:56
client readonly LayerClient - Omit.client packages/core/src/createLayer.ts:57
stack readonly LayerStack<InferValidatorOutput<V>, R, E, D> - Omit.stack packages/core/src/createLayer.ts:58
options readonly LayerOptions<InferValidatorOutput<V>, R, E, D, RP> & object - Omit.options packages/core/src/createLayer.ts:59
current readonly | Layer<InferValidatorOutput<V>, R, E, D> | null Live-checked bound instance (null when not in the stack). Omit.current packages/core/src/createLayer.ts:63
open public (payload) => Promise<R> - - packages/core/src/createLayer.ts:80
upsert public (payload) => Promise<R> - - packages/core/src/createLayer.ts:81

ValidationIssue

Defined in: packages/core/src/errors.ts:2

Provides validator-independent details for one payload failure.

Properties

Property Modifier Type Defined in
message readonly string packages/core/src/errors.ts:3
path? readonly readonly PropertyKey[] packages/core/src/errors.ts:4

LayerGroupOptions

Defined in: packages/core/src/layerGroup.ts:10

Customizes child-stack identity and lifecycle.

Properties

Property Type Description Defined in
name? string Distinguishes sibling groups owned by the same parent. Default "group" packages/core/src/layerGroup.ts:15
scope? object - packages/core/src/layerGroup.ts:16
scope.strategy "serial" | "parallel" - packages/core/src/types.ts:200
scope.onLoadError? SerialOnLoadError Serial only. block — keep phase: "error" until dismiss. advance — remove the failed layer and drain the next queued open. Default "block" packages/core/src/types.ts:206
gcTime? number - packages/core/src/layerGroup.ts:17

LayerGroupHandle

Defined in: packages/core/src/layerGroup.ts:21

Controls a child stack bound to its parent layer’s lifetime.

Properties

Property Modifier Type Defined in
stackId readonly string packages/core/src/layerGroup.ts:22

Methods

open()
open<P, R, E, D, RootProps>(options): Promise<R>;

Defined in: packages/core/src/layerGroup.ts:24

Opens a layer with the child stack pre-bound.

Type Parameters
Type Parameter Default type
P -
R void
E Error
D unknown
RootProps unknown
Parameters
Parameter Type
options Omit<OpenLayerOptions<P, R, E, D, RootProps>, "stack">
Returns

Promise<R>

dismissAll()
dismissAll(response?): void;

Defined in: packages/core/src/layerGroup.ts:27

Parameters
Parameter Type
response? unknown
Returns

void

dispose()
dispose(): void;

Defined in: packages/core/src/layerGroup.ts:29

Removes the parent-lifetime binding when its owner unmounts.

Returns

void


StandardSchemaV1

Defined in: packages/core/src/standardSchema.ts:7

Minimal vendored Standard Schema v1 types. Vendoring keeps schema integration type-only and avoids a runtime dependency.

See

https://standardschema.dev

Type Parameters

Type Parameter Default type
Input unknown
Output Input

Properties

Property Modifier Type Defined in
~standard readonly Props<Input, Output> packages/core/src/standardSchema.ts:8

DismissOptions

Defined in: packages/core/src/types.ts:43

Properties

Property Type Defined in
force? boolean packages/core/src/types.ts:44

DismissAllOptions

Defined in: packages/core/src/types.ts:47

Properties

Property Type Defined in
mode? DismissAllMode packages/core/src/types.ts:48

LayerState

Defined in: packages/core/src/types.ts:52

Immutable layer snapshot consumed by selectors.

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown

Properties


LayerCallContext

Defined in: packages/core/src/types.ts:75

Imperative controls available to a rendered layer.

Type Parameters

Type Parameter Default type
P -
R -
RootProps unknown

Properties

Property Modifier Type Description Defined in
end public (…args) => Promise<boolean> Resolve and dismiss — response optional iff undefined extends R (EndArgs). packages/core/src/types.ts:77
dismiss public (…args) => Promise<boolean> Alias of LayerCallContext.end. packages/core/src/types.ts:79
addBlocker public (fn) => () => void - packages/core/src/types.ts:80
update public (patch) => void - packages/core/src/types.ts:81
setRunning public (running) => void - packages/core/src/types.ts:82
settle public () => void Finishes the current transition immediately. packages/core/src/types.ts:84
ended public boolean - packages/core/src/types.ts:85
index public number - packages/core/src/types.ts:86
stackSize public number - packages/core/src/types.ts:87
root public RootProps - packages/core/src/types.ts:88
stackId readonly string - packages/core/src/types.ts:89
layerId readonly string - packages/core/src/types.ts:90

LayerComponentProps

Defined in: packages/core/src/types.ts:93

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown
RootProps unknown

Properties


LayerOptions

Defined in: packages/core/src/types.ts:113

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown
RootProps unknown

Properties

Property Type Description Defined in
stack? string Default "default" packages/core/src/types.ts:121
key LayerKey Stable identity; same key + upsert → update existing instance. packages/core/src/types.ts:123
component? unknown - packages/core/src/types.ts:124
enteringDelay? number Enter duration in milliseconds; call.settle() finishes it early. Default 0 packages/core/src/types.ts:126
exitingDelay? number Exit duration in milliseconds; call.settle() finishes it early. Default 0 packages/core/src/types.ts:128
upsert? boolean When true, reusing an active key updates its payload instead of stacking. packages/core/src/types.ts:130
loadFn? (ctx) => D | Promise<D> Loads data before activation; dismissal aborts the signal. packages/core/src/types.ts:132
validate? Validator<P> Validates payload before opening; the parsed output becomes the payload. packages/core/src/types.ts:134
rootProps? RootProps Props passed to every layer in the stack via call.root. packages/core/src/types.ts:136

StackOptions

Defined in: packages/core/src/types.ts:193

Properties

Property Type Description Defined in
scope? object Serial scope queues unmounted opens until the occupying layer leaves (pending / active / error for onLoadError: "block"). Default { strategy: "parallel" } packages/core/src/types.ts:199
scope.strategy "serial" | "parallel" - packages/core/src/types.ts:200
scope.onLoadError? SerialOnLoadError Serial only. block — keep phase: "error" until dismiss. advance — remove the failed layer and drain the next queued open. Default "block" packages/core/src/types.ts:206
gcTime? number Retains loaded data for same-key restoration. Default 0 packages/core/src/types.ts:209
dismissAllMode? DismissAllMode Default "skipBlocked" packages/core/src/types.ts:211

LayerClientOptions

Defined in: packages/core/src/types.ts:216

Properties

Property Type Defined in
defaultStackOptions? StackDefaults packages/core/src/types.ts:217

LayerNotifyView

Defined in: packages/core/src/types.ts:240

JSON-safe layer projection on StackNotifyEvent.

Properties

Property Type Description Defined in
id string - packages/core/src/types.ts:241
key string Display string from keySignature. packages/core/src/types.ts:243
phase LayerPhase - packages/core/src/types.ts:244
transition LayerTransition - packages/core/src/types.ts:245
actionStatus LayerActionStatus - packages/core/src/types.ts:246
dismissing boolean - packages/core/src/types.ts:247
ended boolean - packages/core/src/types.ts:248
index number - packages/core/src/types.ts:249
stackSize number - packages/core/src/types.ts:250
payload? unknown - packages/core/src/types.ts:251
payloadTruncated? boolean true when payload could not be JSON-cloned and was omitted. packages/core/src/types.ts:253

StackNotifyEvent

Defined in: packages/core/src/types.ts:257

Emitted when a stack snapshot changes after a labeled mutation.

Properties


Register

Defined in: packages/core/src/types.ts:275

Module-augmentation point for app-wide type defaults. Augment defaultError to set the library-wide error type once.

Example

declare module "@stainless-code/layers" {
  interface Register { defaultError: AppError }
}

Type Aliases

Resolve

type Resolve<T> = (value) => void;

Defined in: packages/core/src/controlledPromise.ts:1

Type Parameters

Type Parameter
T

Parameters

Parameter Type
value T | PromiseLike<T>

Returns

void


Reject

type Reject = (reason?) => void;

Defined in: packages/core/src/controlledPromise.ts:2

Parameters

Parameter Type
reason? unknown

Returns

void


DataTag

type DataTag<Key, R, E> = Key extends object ? Key : Key & object;

Defined in: packages/core/src/dataTag.ts:12

Phantom-brands a LayerKey so response and error types survive inference without runtime metadata. Tagging is idempotent: the first tag wins, avoiding conflicting brands intersecting into never.

Type Parameters

Type Parameter Default type
Key extends LayerKey -
R -
E DefaultLayerError

InferDataTagResponse

type InferDataTagResponse<Key> = Key extends object ? R : never;

Defined in: packages/core/src/dataTag.ts:27

Lets generic APIs recover the response associated with a tagged key.

Type Parameters

Type Parameter
Key

InferDataTagError

type InferDataTagError<Key> = Key extends object ? E : never;

Defined in: packages/core/src/dataTag.ts:34

Lets generic APIs recover the error associated with a tagged key.

Type Parameters

Type Parameter
Key

ResponseOf

type ResponseOf<Key, Fallback> = Key extends object ? R : Fallback;

Defined in: packages/core/src/dataTag.ts:43

Preserves a response default when a generic key is untagged.

Type Parameters

Type Parameter Default type
Key -
Fallback void

ErrorOf

type ErrorOf<Key, Fallback> = Key extends object ? E : Fallback;

Defined in: packages/core/src/dataTag.ts:50

Preserves an error default when a generic key is untagged.

Type Parameters

Type Parameter Default type
Key -
Fallback DefaultLayerError

LayerCancelReason

type LayerCancelReason = "parentDismiss" | "groupDispose" | "cancelAll" | "stackDisconnect";

Defined in: packages/core/src/errors.ts:78

Why LayerCancelledError rejected an open() promise.

  • parentDismiss — child stack cancelAll’d when its parent layer dismissed
  • groupDispose — adapter / host cleaned up a useLayerGroup owner
  • cancelAll — explicit LayerStack#cancelAll / LayerClient#cancelAll
  • stackDisconnect — host disconnect (e.g. Lit hostDisconnected)

LayerKey

type LayerKey = ReadonlyArray<unknown>;

Defined in: packages/core/src/types.ts:12

Logical identity for a layer (find / upsert / gcTime).

Must be JSON-safe: string | boolean | null | finite number, or plain objects / arrays of those. Compared via sorted JSON.stringify — two keys with the same values in a different object-property order are equal. Invalid keys throw LayerKeyError from any path that hashes the key (hashKey, open, find, cancelQueued, createLayer).


LayerPhase

type LayerPhase = "pending" | "queued" | "active" | "dismissed" | "error";

Defined in: packages/core/src/types.ts:14


LayerTransition

type LayerTransition = "entering" | "settled" | "exiting";

Defined in: packages/core/src/types.ts:22

Animation state, independent of resolution phase.


LayerActionStatus

type LayerActionStatus = "idle" | "running";

Defined in: packages/core/src/types.ts:24


BlockerFn

type BlockerFn = () => boolean | Promise<boolean>;

Defined in: packages/core/src/types.ts:27

Instance-scoped predicate — true allows dismissal.

Returns

boolean | Promise<boolean>


StackBlockerFn

type StackBlockerFn = (layer) => boolean | Promise<boolean>;

Defined in: packages/core/src/types.ts:30

Stack-scoped predicate — true allows dismissal.

Parameters

Parameter Type
layer LayerState

Returns

boolean | Promise<boolean>


DismissAllMode

type DismissAllMode = "skipBlocked" | "stopAtBlocked" | "force";

Defined in: packages/core/src/types.ts:41

How LayerStack#dismissAll treats blockers. All modes still resolve open() with the dismiss response — unlike LayerStack#cancelAll, which rejects with LayerCancelledError.

  • skipBlocked — soft-dismiss each layer; leave blocked ones
  • stopAtBlocked — soft-dismiss until the first veto, then stop
  • force — bypass blockers; still completes with the response

LayerComponent

type LayerComponent = unknown;

Defined in: packages/core/src/types.ts:111

Framework adapters narrow this to their component type.


PayloadArg

type PayloadArg<P> = undefined extends P ? object : object;

Defined in: packages/core/src/types.ts:150

Makes payload optional only when P admits undefined. Optional object properties alone do not make the payload omittable.

Type Parameters

Type Parameter
P

ResponseArgTuple

type ResponseArgTuple<R, Opts> = undefined extends R ? [R, Opts] : [R, Opts];

Defined in: packages/core/src/types.ts:155

Rest-tuple factory used by EndArgs and stack/handle variants.

Type Parameters

Type Parameter
R
Opts

EndArgs

type EndArgs<R> = ResponseArgTuple<R, DismissOptions>;

Defined in: packages/core/src/types.ts:165

Rest-args for call.end / call.dismiss / LayerStack.dismiss. Response is optional only when R admits undefined — twin of PayloadArg. When response is optional, pass opts as the second arg (end(undefined, { force: true })); a lone object is treated as the response (not as opts).

Type Parameters

Type Parameter
R

DismissAllArgs

type DismissAllArgs<R> = ResponseArgTuple<R, DismissAllOptions>;

Defined in: packages/core/src/types.ts:168

LayerStack.dismissAll rest-args (same gate as EndArgs).

Type Parameters

Type Parameter
R

CancelQueuedArgs

type CancelQueuedArgs<R> = ResponseArgTuple<R, {
  id?: string;
}>;

Defined in: packages/core/src/types.ts:171

cancelQueued rest-args (same gate as EndArgs).

Type Parameters

Type Parameter
R

HandleDismissArgs

type HandleDismissArgs<R> = ResponseArgTuple<R, DismissOptions & object>;

Defined in: packages/core/src/types.ts:174

LayerHandle.dismiss rest-args (same gate as EndArgs; opts may include id).

Type Parameters

Type Parameter
R

OpenLayerOptions

type OpenLayerOptions<P, R, E, D, RootProps> = LayerOptions<P, R, E, D, RootProps> & PayloadArg<P>;

Defined in: packages/core/src/types.ts:179

Type Parameters

Type Parameter Default type
P unknown
R void
E DefaultLayerError
D unknown
RootProps unknown

OmitKeyof

type OmitKeyof<T, K> = Omit<T, K>;

Defined in: packages/core/src/types.ts:188

Rejects keys that do not exist on T.

Type Parameters

Type Parameter
T
K extends keyof T

SerialOnLoadError

type SerialOnLoadError = "block" | "advance";

Defined in: packages/core/src/types.ts:191

Serial policy when a mounted layer’s loadFn rejects.


StackDefaults

type StackDefaults = Record<string, StackOptions>;

Defined in: packages/core/src/types.ts:214


StackNotifyAction

type StackNotifyAction = 
  | "register"
  | "open"
  | "queue"
  | "update"
  | "setRunning"
  | "settle"
  | "dismiss"
  | "dismissVetoed"
  | "dismissAll"
  | "cancelAll"
  | "cancelQueued"
  | "phase"
  | "remove";

Defined in: packages/core/src/types.ts:224

Coarse mutation label for devtools / LayerClient#subscribeNotify. dismissAll = bulk completion; cancelAll = teardown that rejects open().


DefaultLayerError

type DefaultLayerError = Register extends object ? E : Error;

Defined in: packages/core/src/types.ts:278

App-wide error type configured through Register.


Validator

type Validator<Output> = 
  | StandardSchemaV1<unknown, Output>
  | ((input) => Output);

Defined in: packages/core/src/validators.ts:5

Unifies schema libraries and parser functions behind one validation contract.

Type Parameters

Type Parameter
Output

InferValidatorInput

type InferValidatorInput<V> = V extends StandardSchemaV1<infer I, unknown> ? I : V extends (input) => unknown ? I : never;

Defined in: packages/core/src/validators.ts:10

Preserves a validator’s pre-transform payload type in generic APIs.

Type Parameters

Type Parameter
V

InferValidatorOutput

type InferValidatorOutput<V> = V extends StandardSchemaV1<unknown, infer O> ? O : V extends (input) => infer O ? O : never;

Defined in: packages/core/src/validators.ts:18

Preserves a validator’s post-transform payload type in generic APIs.

Type Parameters

Type Parameter
V

OpenValidatePayload

type OpenValidatePayload<V> = V extends StandardSchemaV1 ? InferInput<V> : InferValidatorInput<V>;

Defined in: packages/core/src/validators.ts:26

Schema/parser input for validated open / ValidatedLayerHandle.

Type Parameters

Type Parameter
V extends Validator<unknown>

Variables

notifyManager

const notifyManager: object;

Defined in: packages/core/src/notifyManager.ts:9

Coalesces listener calls by identity within a synchronous batch. Nested batches flush only when the outer batch completes; wrapped listeners called repeatedly during that interval run once.

Type Declaration

Name Type Defined in
batch() (fn) => T packages/core/src/notifyManager.ts:10
batchCalls() (listener) => () => void packages/core/src/notifyManager.ts:26

Functions

createCallContext()

function createCallContext<P, R, RootProps>(
   stack, 
   layer, 
   state, 
rootProps?): LayerCallContext<P, R, RootProps>;

Defined in: packages/core/src/callContext.ts:14

Creates the framework-neutral imperative context passed to a layer component. Adapters provide rendering; stack and layer instances retain lifecycle control.

Type Parameters

Type Parameter Default type
P -
R -
RootProps unknown

Parameters

Parameter Type
stack LayerStack<P, R, Error, unknown>
layer Layer<P, R, Error, unknown>
state LayerState<P, R, Error, unknown>
rootProps? RootProps

Returns

LayerCallContext<P, R, RootProps>


createLayer()

Call Signature

function createLayer<V, R, E, D, RP>(options, client): ValidatedLayerHandle<V, R, E, D, RP>;

Defined in: packages/core/src/createLayer.ts:93

Wire layerOptions + a LayerClient into a headless LayerHandle.

Type Parameters
Type Parameter Default type
V extends Validator<unknown> -
R -
E Error
D unknown
RP unknown
Parameters
Parameter Type
options LayerOptions<InferValidatorOutput<V>, R, E, D, RP> & object
client LayerClient
Returns

ValidatedLayerHandle<V, R, E, D, RP>

Example
const c = createLayer(confirm, client);
const ok = await c.open({ title: "Remove?" });

Call Signature

function createLayer<P, R, E, D, RP>(options, client): LayerHandle<P, R, E, D, RP>;

Defined in: packages/core/src/createLayer.ts:107

Wire layerOptions + a LayerClient into a headless LayerHandle.

Type Parameters
Type Parameter Default type
P -
R -
E Error
D unknown
RP unknown
Parameters
Parameter Type
options LayerOptions<P, R, E, D, RP> & object
client LayerClient
Returns

LayerHandle<P, R, E, D, RP>

Example
const c = createLayer(confirm, client);
const ok = await c.open({ title: "Remove?" });

layerKey()

function layerKey<R, E>(): <Key>(key) => DataTag<Key, R, E>;

Defined in: packages/core/src/dataTag.ts:69

Adds response and error inference to a key without changing it at runtime.

Type Parameters

Type Parameter Default type
R -
E Error

Returns

<Key>(key) => DataTag<Key, R, E>

Example

import { LayerClient, layerKey } from "@stainless-code/layers";

const client = new LayerClient();
const removeKey = layerKey<boolean>()(["confirm", "remove"]);
const ok = await client.open({ key: removeKey, payload: { title: "Remove?" } });
//    ^? boolean

isPayloadValidationError()

function isPayloadValidationError(value): value is PayloadValidationError;

Defined in: packages/core/src/errors.ts:34

Narrows an unknown rejection to PayloadValidationError.

Parameters

Parameter Type
value unknown

Returns

value is PayloadValidationError

Example

import { isPayloadValidationError } from "@stainless-code/layers";

function validationMessages(error: unknown) {
  return isPayloadValidationError(error)
    ? error.issues.map((issue) => issue.message)
    : [];
}

isLayerKeyError()

function isLayerKeyError(value): value is LayerKeyError;

Defined in: packages/core/src/errors.ts:66

Narrows an unknown synchronous throw to LayerKeyError.

Parameters

Parameter Type
value unknown

Returns

value is LayerKeyError

Example

import { isLayerKeyError } from "@stainless-code/layers";

try {
  client.open({ key: [maybeId], payload });
} catch (error) {
  if (isLayerKeyError(error)) {
    console.error(error.path, error.message);
  }
}

isLayerCancelledError()

function isLayerCancelledError(value): value is LayerCancelledError;

Defined in: packages/core/src/errors.ts:115

Narrows an unknown rejection to LayerCancelledError. Treat any cancel reason as normal teardown unless you branch on LayerCancelledError#reason.

Parameters

Parameter Type
value unknown

Returns

value is LayerCancelledError

Example

import { isLayerCancelledError } from "@stainless-code/layers";

try {
  await confirm.open(payload);
} catch (error) {
  if (isLayerCancelledError(error)) return;
  throw error;
}

childStackId()

function childStackId(parent, name?): string;

Defined in: packages/core/src/layerGroup.ts:33

Derives a collision-free path id: ${parentStackId}~${parentLayerId}~${name}.

Parameters

Parameter Type Default value
parent Pick<LayerCallContext<unknown, unknown>, "stackId" | "layerId"> undefined
name string "group"

Returns

string


createLayerGroup()

function createLayerGroup(
   client, 
   parent, 
   options?): LayerGroupHandle;

Defined in: packages/core/src/layerGroup.ts:61

Creates a child stack that is cancelAll’d (LayerCancelledError, reason parentDismiss) when its parent dismisses. Pass the LayerClient that owns parent; another client cannot observe the parent’s lifetime.

Parameters

Parameter Type
client LayerClient
parent Pick<LayerCallContext<unknown, unknown>, "stackId" | "layerId">
options LayerGroupOptions

Returns

LayerGroupHandle

Example

import {
  createLayerGroup,
  type LayerCallContext,
  type LayerClient,
} from "@stainless-code/layers";

declare const client: LayerClient;
declare const parent: LayerCallContext<unknown, unknown>;

const group = createLayerGroup(client, parent, { name: "nested" });
group.dismissAll();
group.dispose();

layerOptions()

function layerOptions<P, R, E, D, RootProps, Key>(options): LayerOptions<P, R, E, D, RootProps> & object;

Defined in: packages/core/src/layerOptions.ts:21

Preserves payload, response, error, and data inference for reusable layer options. Returns the same object at runtime; its DataTag-branded key lets LayerClient.open infer the response without an explicit generic.

Type Parameters

Type Parameter Default type
P -
R void
E Error
D unknown
RootProps unknown
Key extends LayerKey LayerKey

Parameters

Parameter Type
options LayerOptions<P, R, E, D, RootProps> & object

Returns

LayerOptions<P, R, E, D, RootProps> & object

Example

import { LayerClient, layerOptions } from "@stainless-code/layers";

const client = new LayerClient();
const confirm = layerOptions<{ title: string }, boolean>({
  key: ["confirm", "remove"],
});
const ok = await client.open({ ...confirm, payload: { title: "Remove?" } });
//    ^? boolean

assertLayerKey()

function assertLayerKey(key): asserts key is LayerKey;

Defined in: packages/core/src/utils.ts:121

Ensures a layer key is JSON-safe for hashKey. Allowed: string | boolean | null | finite number | plain objects | arrays of those. Throws LayerKeyError when a segment is outside that domain.

Parameters

Parameter Type
key unknown

Returns

asserts key is LayerKey

Example

import { assertLayerKey } from "@stainless-code/layers";

assertLayerKey(["confirm", filterId ?? "none"]);

hashKey()

function hashKey(key): string;

Defined in: packages/core/src/utils.ts:132

Serializes a key deterministically by sorting object properties recursively. Throws LayerKeyError when the key is not JSON-safe.

Parameters

Parameter Type
key LayerKey

Returns

string


keySignature()

function keySignature(key): string;

Defined in: packages/core/src/utils.ts:143

Produces the canonical identity used to compare layer keys. Throws LayerKeyError when the key is not JSON-safe (via hashKey).

Parameters

Parameter Type
key LayerKey

Returns

string


shallowArrayEqual()

function shallowArrayEqual<T>(a, b): boolean;

Defined in: packages/core/src/utils.ts:152

Element-wise Object.is for arrays. Keeps key-filtered snapshot selections stable when filter() reallocates but the matched element refs are unchanged.

Type Parameters

Type Parameter
T

Parameters

Parameter Type
a T
b T

Returns

boolean

Was this page helpful?