Socket
Socket
Sign inDemoInstall

valtio

Package Overview
Dependencies
Maintainers
2
Versions
110
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

valtio - npm Package Compare versions

Comparing version 1.2.9 to 1.2.10

esm/utils/proxyMap.d.ts

491

esm/react.d.ts

@@ -1,2 +0,247 @@

import type { DeepResolveType } from './vanilla';
declare class SnapshotWrapper<T extends object> {
fn(p: T): T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
}
declare type Snapshot<T extends object> = ReturnType<SnapshotWrapper<T>['fn']>;
declare type Options = {

@@ -77,3 +322,245 @@ sync?: boolean;

*/
export declare const useSnapshot: <T extends object>(proxyObject: T, options?: Options | undefined) => DeepResolveType<T>;
export declare const useSnapshot: <T extends object>(proxyObject: T, options?: Options | undefined) => T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
export {};

@@ -9,1 +9,2 @@ export { subscribeKey } from './utils/subscribeKey';

export { proxySet } from './utils/proxySet';
export { proxyMap } from './utils/proxyMap';

@@ -140,2 +140,19 @@ import { subscribe, snapshot, proxy, getVersion, ref } from 'valtio/vanilla';

const unstable_getDeriveSubscriptions = getSubscriptions;
const pendingCountMap = /* @__PURE__ */ new WeakMap();
const markPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
pendingCountMap.set(proxyObject, count + 1);
};
const unmarkPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
if (count > 1) {
pendingCountMap.set(proxyObject, count - 1);
} else {
pendingCountMap.delete(proxyObject);
}
};
const isPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
return count > 0;
};
const derive = (derivedFns, options) => {

@@ -146,17 +163,29 @@ const proxyObject = (options == null ? void 0 : options.proxy) || proxy({});

const addSubscription = (p, key, callback) => {
const subscription = subscriptions.get(p);
if (subscription) {
subscription[0].set(key, callback);
} else {
let subscription = subscriptions.get(p);
if (!subscription) {
const notify = () => subscription[0].forEach((cb) => cb());
let promise;
const unsubscribe = subscribe(p, (ops) => {
var _a;
if (p === proxyObject && ops.every((op) => op[1].length === 1 && op[1][0] in derivedFns)) {
return;
}
(_a = subscriptions.get(p)) == null ? void 0 : _a[0].forEach((cb) => {
cb();
});
}, notifyInSync);
subscriptions.set(p, [/* @__PURE__ */ new Map([[key, callback]]), unsubscribe]);
if (promise) {
return;
}
markPending(p);
if (notifyInSync) {
unmarkPending(p);
notify();
} else {
promise = Promise.resolve().then(() => {
promise = void 0;
unmarkPending(p);
notify();
});
}
}, true);
subscription = [/* @__PURE__ */ new Map(), unsubscribe];
subscriptions.set(p, subscription);
}
subscription[0].set(key, callback);
};

@@ -182,2 +211,5 @@ const removeSubscription = (p, key) => {

if (lastDependencies) {
if (Array.from(lastDependencies).some(([p]) => isPending(p))) {
return;
}
if (Array.from(lastDependencies).every(([p, n]) => getVersion(p) === n)) {

@@ -193,3 +225,3 @@ return;

const value = fn(get);
const subscribe2 = () => {
const subscribeToDependencies = () => {
dependencies.forEach((_, p) => {

@@ -208,5 +240,5 @@ if (!(lastDependencies == null ? void 0 : lastDependencies.has(p))) {

if (value instanceof Promise) {
value.finally(subscribe2);
value.finally(subscribeToDependencies);
} else {
subscribe2();
subscribeToDependencies();
}

@@ -330,3 +362,3 @@ proxyObject[key] = value;

const proxySet = (initialValues = []) => {
const proxySet = (initialValues) => {
const set = proxy$1({

@@ -400,2 +432,74 @@ data: Array.from(new Set(initialValues)),

export { addComputed_DEPRECATED as addComputed, derive, devtools, proxySet, proxyWithComputed, proxyWithHistory, subscribeKey, underive, unstable_getDeriveSubscriptions, watch };
const proxyMap = (entries) => {
const map = proxy$1({
data: Array.from(entries || []),
has(key) {
return this.data.some((p) => p[0] === key);
},
set(key, value) {
const record = this.data.find((p) => p[0] === key);
if (record) {
record[1] = value;
} else {
this.data.push([key, value]);
}
return this;
},
get(key) {
var _a;
return (_a = this.data.find((p) => p[0] === key)) == null ? void 0 : _a[1];
},
delete(key) {
const index = this.data.findIndex((p) => p[0] === key);
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
toJSON() {
return {};
},
forEach(cb) {
this.data.forEach((p) => {
cb(p[1], p[0], this);
});
},
keys() {
return this.data.map((p) => p[0]).values();
},
values() {
return this.data.map((p) => p[1]).values();
},
entries() {
return new Map(this.data).entries();
},
get [Symbol.toStringTag]() {
return "Map";
},
[Symbol.iterator]() {
return this.entries();
}
});
Object.defineProperties(map, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(map);
return map;
};
export { addComputed_DEPRECATED as addComputed, derive, devtools, proxyMap, proxySet, proxyWithComputed, proxyWithHistory, subscribeKey, underive, unstable_getDeriveSubscriptions, watch };

5

esm/utils/derive.d.ts
declare type DeriveGet = <T extends object>(proxyObject: T) => T;
declare type Subscriptions<U extends object> = Map<object, [
declare type Subscription<U extends object> = [
callbackMap: Map<keyof U, () => void>,
unsubscribe: () => void
]>;
];
declare type Subscriptions<U extends object> = Map<object, Subscription<U>>;
export declare const unstable_getDeriveSubscriptions: (proxyObject: object) => Subscriptions<object>;

@@ -7,0 +8,0 @@ /**

@@ -16,2 +16,2 @@ /**

*/
export declare const proxySet: <T>(initialValues?: Iterable<T> | null) => Set<T>;
export declare const proxySet: <T>(initialValues?: Iterable<T> | null | undefined) => Set<T>;

@@ -1,2 +0,247 @@

import type { DeepResolveType } from '../vanilla';
declare class SnapshotWrapper<T extends object> {
fn(p: T): T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
}
declare type Snapshot<T extends object> = ReturnType<SnapshotWrapper<T>['fn']>;
/**

@@ -27,4 +272,489 @@ * proxyWithComputed

export declare const proxyWithComputed: <T extends object, U extends object>(initialObject: T, computedFns: { [K in keyof U]: {
get: (snap: DeepResolveType<T>) => U[K];
get: (snap: T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_2 in keyof T]: T[K_2] extends (...args: any[]) => any ? T[K_2] : T[K_2] extends {
$$valtioRef: true;
} ? T[K_2] : T[K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_3 in keyof T[K_2]]: T[K_2][K_3] extends (...args: any[]) => any ? T[K_2][K_3] : T[K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_2][K_3] : T[K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_4 in keyof T[K_2][K_3]]: T[K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_5 in keyof T[K_2][K_3][K_4]]: T[K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_6 in keyof T[K_2][K_3][K_4][K_5]]: T[K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_7 in keyof T[K_2][K_3][K_4][K_5][K_6]]: T[K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_8 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_9 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_10 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_11 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_12 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11]]: any; }; }; }; }; }; }; }; }; }; }; }) => U[K];
set?: (state: T, newValue: U[K]) => void;
} | ((snap: DeepResolveType<T>) => U[K]); }) => T & U;
} | ((snap: T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_2 in keyof T]: T[K_2] extends (...args: any[]) => any ? T[K_2] : T[K_2] extends {
$$valtioRef: true;
} ? T[K_2] : T[K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_3 in keyof T[K_2]]: T[K_2][K_3] extends (...args: any[]) => any ? T[K_2][K_3] : T[K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_2][K_3] : T[K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_4 in keyof T[K_2][K_3]]: T[K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_5 in keyof T[K_2][K_3][K_4]]: T[K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_6 in keyof T[K_2][K_3][K_4][K_5]]: T[K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_7 in keyof T[K_2][K_3][K_4][K_5][K_6]]: T[K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_8 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_9 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_10 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_11 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_12 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11]]: any; }; }; }; }; }; }; }; }; }; }; }) => U[K]); }) => T & U;
export {};

@@ -1,3 +0,4 @@

declare const enum AsRef {
}
declare type AsRef = {
$$valtioRef: true;
};
export declare const ref: <T extends object>(o: T) => T & AsRef;

@@ -9,7 +10,14 @@ declare type Path = (string | symbol)[];

export declare const subscribe: <T extends object>(proxyObject: T, callback: (ops: Op[]) => void, notifyInSync?: boolean | undefined) => () => void;
/**
* @deprecated this will be removed in next versions
*/
export declare type DeepResolveType<T> = T extends (...args: any[]) => any ? T : T extends AsRef ? T : T extends Promise<infer V> ? DeepResolveType<V> : T extends object ? {
readonly [K in keyof T]: DeepResolveType<T[K]>;
} : T;
export declare const snapshot: <T extends object>(proxyObject: T) => DeepResolveType<T>;
declare type AnyFunction = (...args: any[]) => any;
declare type Snapshot<T> = T extends AnyFunction ? T : T extends AsRef ? T : T extends Promise<infer V> ? Snapshot<V> : {
readonly [K in keyof T]: Snapshot<T[K]>;
};
export declare const snapshot: <T extends object>(proxyObject: T) => Snapshot<T>;
export declare const getHandler: <T extends object>(proxyObject: T) => any;
export {};

@@ -10,17 +10,17 @@ 'use strict';

function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
n["default"] = e;
return Object.freeze(n);
}
});
}
n["default"] = e;
return Object.freeze(n);
}

@@ -27,0 +27,0 @@

{
"name": "valtio",
"private": false,
"version": "1.2.9",
"version": "1.2.10",
"description": "💊 Valtio makes proxy-state simple for React and Vanilla",

@@ -6,0 +6,0 @@ "main": "./index.js",

@@ -1,2 +0,247 @@

import type { DeepResolveType } from './vanilla';
declare class SnapshotWrapper<T extends object> {
fn(p: T): T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
}
declare type Snapshot<T extends object> = ReturnType<SnapshotWrapper<T>['fn']>;
declare type Options = {

@@ -77,3 +322,245 @@ sync?: boolean;

*/
export declare const useSnapshot: <T extends object>(proxyObject: T, options?: Options | undefined) => DeepResolveType<T>;
export declare const useSnapshot: <T extends object>(proxyObject: T, options?: Options | undefined) => T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
export {};

@@ -298,3 +298,3 @@ <img src="logo.svg" alt="valtio">

You can have computed values with dependency tracking with property access.
Dependency tracking in `proxyWithComputed` conflicts with the work in `useSnapshot`.
Dependency tracking in `proxyWithComputed` overlaps the work in `useSnapshot`.
React users should prefer using `derive`.

@@ -372,2 +372,17 @@ `proxyWithComputed` works well for some edge cases and for vanilla-js users.

#### `proxyMap` util
This is to create a proxy which emulate the native Map behavior. The API is the same as Map API
```js
import { proxyMap } from 'valtio/utils'
const state = proxyMap([["key", "value"], ["key2", "value2"]])
state.set("key", "value")
state.delete("key")
state.get("key") // ---> value
state.forEach((value, key) => console.log(key, value)) // ---> "key", "value", "key2", "value2"
```
#### Plugins

@@ -374,0 +389,0 @@

System.register(['@babel/helper-module-imports', '@babel/types', 'babel-plugin-macros'], (function (exports) {
'use strict';
var addNamed, t, createMacro, MacroError;
return {
setters: [function (module) {
addNamed = module.addNamed;
}, function (module) {
t = module;
}, function (module) {
createMacro = module.createMacro;
MacroError = module.MacroError;
}],
execute: (function () {
'use strict';
var addNamed, t, createMacro, MacroError;
return {
setters: [function (module) {
addNamed = module.addNamed;
}, function (module) {
t = module;
}, function (module) {
createMacro = module.createMacro;
MacroError = module.MacroError;
}],
execute: (function () {
const macro = ({ references }) => {
var _a;
(_a = references.useProxy) == null ? void 0 : _a.forEach((path) => {
var _a2, _b, _c, _d, _e, _f;
const hook = addNamed(path, "useSnapshot", "valtio");
const proxy = (_b = (_a2 = path.parentPath) == null ? void 0 : _a2.get("arguments.0")) == null ? void 0 : _b.node;
if (!t.isIdentifier(proxy))
throw new MacroError("no proxy object");
const snap = t.identifier(`valtio_macro_snap_${proxy.name}`);
(_d = (_c = path.parentPath) == null ? void 0 : _c.parentPath) == null ? void 0 : _d.replaceWith(t.variableDeclaration("const", [
t.variableDeclarator(snap, t.callExpression(hook, [proxy]))
]));
let inFunction = 0;
(_f = (_e = path.parentPath) == null ? void 0 : _e.getFunctionParent()) == null ? void 0 : _f.traverse({
Identifier(p) {
if (inFunction === 0 && p.node !== proxy && p.node.name === proxy.name) {
p.node.name = snap.name;
}
},
Function: {
enter() {
++inFunction;
},
exit() {
--inFunction;
}
}
});
});
};
var macro$1 = exports('default', createMacro(macro, { configName: "valtio" }));
const macro = ({ references }) => {
var _a;
(_a = references.useProxy) == null ? void 0 : _a.forEach((path) => {
var _a2, _b, _c, _d, _e, _f;
const hook = addNamed(path, "useSnapshot", "valtio");
const proxy = (_b = (_a2 = path.parentPath) == null ? void 0 : _a2.get("arguments.0")) == null ? void 0 : _b.node;
if (!t.isIdentifier(proxy))
throw new MacroError("no proxy object");
const snap = t.identifier(`valtio_macro_snap_${proxy.name}`);
(_d = (_c = path.parentPath) == null ? void 0 : _c.parentPath) == null ? void 0 : _d.replaceWith(t.variableDeclaration("const", [
t.variableDeclarator(snap, t.callExpression(hook, [proxy]))
]));
let inFunction = 0;
(_f = (_e = path.parentPath) == null ? void 0 : _e.getFunctionParent()) == null ? void 0 : _f.traverse({
Identifier(p) {
if (inFunction === 0 && p.node !== proxy && p.node.name === proxy.name) {
p.node.name = snap.name;
}
},
Function: {
enter() {
++inFunction;
},
exit() {
--inFunction;
}
}
});
});
};
var macro$1 = exports('default', createMacro(macro, { configName: "valtio" }));
})
};
})
};
}));
System.register(['valtio/vanilla', 'proxy-compare', 'valtio'], (function (exports) {
'use strict';
var subscribe, snapshot, proxy, getVersion, ref, createProxy, isChanged, proxy$1;
return {
setters: [function (module) {
subscribe = module.subscribe;
snapshot = module.snapshot;
proxy = module.proxy;
getVersion = module.getVersion;
ref = module.ref;
}, function (module) {
createProxy = module.createProxy;
isChanged = module.isChanged;
}, function (module) {
proxy$1 = module.proxy;
}],
execute: (function () {
'use strict';
var subscribe, snapshot, proxy, getVersion, ref, createProxy, isChanged, proxy$1;
return {
setters: [function (module) {
subscribe = module.subscribe;
snapshot = module.snapshot;
proxy = module.proxy;
getVersion = module.getVersion;
ref = module.ref;
}, function (module) {
createProxy = module.createProxy;
isChanged = module.isChanged;
}, function (module) {
proxy$1 = module.proxy;
}],
execute: (function () {
const subscribeKey = exports('subscribeKey', (proxyObject, key, callback, notifyInSync) => subscribe(proxyObject, (ops) => {
if (ops.some((op) => op[1][0] === key)) {
callback(proxyObject[key]);
}
}, notifyInSync));
const subscribeKey = exports('subscribeKey', (proxyObject, key, callback, notifyInSync) => subscribe(proxyObject, (ops) => {
if (ops.some((op) => op[1][0] === key)) {
callback(proxyObject[key]);
}
}, notifyInSync));
let currentCleanups;
const watch = exports('watch', (callback, options) => {
const cleanups = /* @__PURE__ */ new Set();
const subscriptions = /* @__PURE__ */ new Set();
let alive = true;
const cleanup = () => {
cleanups.forEach((clean) => {
clean();
});
cleanups.clear();
subscriptions.clear();
};
const revalidate = () => {
if (!alive) {
return;
}
cleanup();
const parent = currentCleanups;
currentCleanups = cleanups;
try {
const cleanupReturn = callback((proxy) => {
subscriptions.add(proxy);
return proxy;
});
if (cleanupReturn) {
cleanups.add(cleanupReturn);
}
} finally {
currentCleanups = parent;
}
subscriptions.forEach((proxy) => {
const clean = subscribe(proxy, revalidate, options == null ? void 0 : options.sync);
cleanups.add(clean);
});
};
const wrappedCleanup = () => {
if (alive) {
cleanup();
alive = false;
}
};
if (currentCleanups) {
currentCleanups.add(wrappedCleanup);
let currentCleanups;
const watch = exports('watch', (callback, options) => {
const cleanups = /* @__PURE__ */ new Set();
const subscriptions = /* @__PURE__ */ new Set();
let alive = true;
const cleanup = () => {
cleanups.forEach((clean) => {
clean();
});
cleanups.clear();
subscriptions.clear();
};
const revalidate = () => {
if (!alive) {
return;
}
cleanup();
const parent = currentCleanups;
currentCleanups = cleanups;
try {
const cleanupReturn = callback((proxy) => {
subscriptions.add(proxy);
return proxy;
});
if (cleanupReturn) {
cleanups.add(cleanupReturn);
}
} finally {
currentCleanups = parent;
}
subscriptions.forEach((proxy) => {
const clean = subscribe(proxy, revalidate, options == null ? void 0 : options.sync);
cleanups.add(clean);
});
};
const wrappedCleanup = () => {
if (alive) {
cleanup();
alive = false;
}
};
if (currentCleanups) {
currentCleanups.add(wrappedCleanup);
}
revalidate();
return wrappedCleanup;
});
const DEVTOOLS = Symbol();
const devtools = exports('devtools', (proxyObject, name) => {
let extension;
try {
extension = window.__REDUX_DEVTOOLS_EXTENSION__;
} catch {
}
if (!extension) {
if (typeof process === "object" && process.env.NODE_ENV === "development" && typeof window !== "undefined") {
console.warn("[Warning] Please install/enable Redux devtools extension");
}
return;
}
let isTimeTraveling = false;
const devtools2 = extension.connect({ name });
const unsub1 = subscribe(proxyObject, (ops) => {
const action = ops.filter(([_, path]) => path[0] !== DEVTOOLS).map(([op, path]) => `${op}:${path.map(String).join(".")}`).join(", ");
if (!action) {
return;
}
if (isTimeTraveling) {
isTimeTraveling = false;
} else {
const snapWithoutDevtools = Object.assign({}, snapshot(proxyObject));
delete snapWithoutDevtools[DEVTOOLS];
devtools2.send({
type: action,
updatedAt: new Date().toLocaleString()
}, snapWithoutDevtools);
}
});
const unsub2 = devtools2.subscribe((message) => {
var _a, _b, _c, _d, _e, _f;
if (message.type === "ACTION" && message.payload) {
try {
Object.assign(proxyObject, JSON.parse(message.payload));
} catch (e) {
console.error("please dispatch a serializable value that JSON.parse() and proxy() support\n", e);
}
}
if (message.type === "DISPATCH" && message.state) {
if (((_a = message.payload) == null ? void 0 : _a.type) === "JUMP_TO_ACTION" || ((_b = message.payload) == null ? void 0 : _b.type) === "JUMP_TO_STATE") {
isTimeTraveling = true;
const state = JSON.parse(message.state);
Object.assign(proxyObject, state);
}
proxyObject[DEVTOOLS] = message;
} else if (message.type === "DISPATCH" && ((_c = message.payload) == null ? void 0 : _c.type) === "COMMIT") {
devtools2.init(snapshot(proxyObject));
} else if (message.type === "DISPATCH" && ((_d = message.payload) == null ? void 0 : _d.type) === "IMPORT_STATE") {
const actions = (_e = message.payload.nextLiftedState) == null ? void 0 : _e.actionsById;
const computedStates = ((_f = message.payload.nextLiftedState) == null ? void 0 : _f.computedStates) || [];
isTimeTraveling = true;
computedStates.forEach(({ state }, index) => {
const action = actions[index] || "No action found";
Object.assign(proxyObject, state);
if (index === 0) {
devtools2.init(snapshot(proxyObject));
} else {
devtools2.send(action, snapshot(proxyObject));
}
revalidate();
return wrappedCleanup;
});
}
});
devtools2.init(snapshot(proxyObject));
return () => {
unsub1();
unsub2();
};
});
const DEVTOOLS = Symbol();
const devtools = exports('devtools', (proxyObject, name) => {
let extension;
try {
extension = window.__REDUX_DEVTOOLS_EXTENSION__;
} catch {
const subscriptionsCache = /* @__PURE__ */ new WeakMap();
const getSubscriptions = (proxyObject) => {
let subscriptions = subscriptionsCache.get(proxyObject);
if (!subscriptions) {
subscriptions = /* @__PURE__ */ new Map();
subscriptionsCache.set(proxyObject, subscriptions);
}
return subscriptions;
};
const unstable_getDeriveSubscriptions = exports('unstable_getDeriveSubscriptions', getSubscriptions);
const pendingCountMap = /* @__PURE__ */ new WeakMap();
const markPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
pendingCountMap.set(proxyObject, count + 1);
};
const unmarkPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
if (count > 1) {
pendingCountMap.set(proxyObject, count - 1);
} else {
pendingCountMap.delete(proxyObject);
}
};
const isPending = (proxyObject) => {
const count = pendingCountMap.get(proxyObject) || 0;
return count > 0;
};
const derive = exports('derive', (derivedFns, options) => {
const proxyObject = (options == null ? void 0 : options.proxy) || proxy({});
const notifyInSync = options == null ? void 0 : options.sync;
const subscriptions = getSubscriptions(proxyObject);
const addSubscription = (p, key, callback) => {
let subscription = subscriptions.get(p);
if (!subscription) {
const notify = () => subscription[0].forEach((cb) => cb());
let promise;
const unsubscribe = subscribe(p, (ops) => {
if (p === proxyObject && ops.every((op) => op[1].length === 1 && op[1][0] in derivedFns)) {
return;
}
if (!extension) {
if (typeof process === "object" && process.env.NODE_ENV === "development" && typeof window !== "undefined") {
console.warn("[Warning] Please install/enable Redux devtools extension");
}
if (promise) {
return;
}
let isTimeTraveling = false;
const devtools2 = extension.connect({ name });
const unsub1 = subscribe(proxyObject, (ops) => {
const action = ops.filter(([_, path]) => path[0] !== DEVTOOLS).map(([op, path]) => `${op}:${path.map(String).join(".")}`).join(", ");
if (!action) {
return;
markPending(p);
if (notifyInSync) {
unmarkPending(p);
notify();
} else {
promise = Promise.resolve().then(() => {
promise = void 0;
unmarkPending(p);
notify();
});
}
}, true);
subscription = [/* @__PURE__ */ new Map(), unsubscribe];
subscriptions.set(p, subscription);
}
subscription[0].set(key, callback);
};
const removeSubscription = (p, key) => {
const subscription = subscriptions.get(p);
if (subscription) {
const [callbackMap, unsubscribe] = subscription;
callbackMap.delete(key);
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
}
};
Object.keys(derivedFns).forEach((key) => {
if (Object.getOwnPropertyDescriptor(proxyObject, key)) {
throw new Error("object property already defined");
}
const fn = derivedFns[key];
let lastDependencies = null;
const evaluate = () => {
if (lastDependencies) {
if (Array.from(lastDependencies).some(([p]) => isPending(p))) {
return;
}
if (Array.from(lastDependencies).every(([p, n]) => getVersion(p) === n)) {
return;
}
}
const dependencies = /* @__PURE__ */ new Map();
const get = (p) => {
dependencies.set(p, getVersion(p));
return p;
};
const value = fn(get);
const subscribeToDependencies = () => {
dependencies.forEach((_, p) => {
if (!(lastDependencies == null ? void 0 : lastDependencies.has(p))) {
addSubscription(p, key, evaluate);
}
if (isTimeTraveling) {
isTimeTraveling = false;
} else {
const snapWithoutDevtools = Object.assign({}, snapshot(proxyObject));
delete snapWithoutDevtools[DEVTOOLS];
devtools2.send({
type: action,
updatedAt: new Date().toLocaleString()
}, snapWithoutDevtools);
}
});
const unsub2 = devtools2.subscribe((message) => {
var _a, _b, _c, _d, _e, _f;
if (message.type === "ACTION" && message.payload) {
try {
Object.assign(proxyObject, JSON.parse(message.payload));
} catch (e) {
console.error("please dispatch a serializable value that JSON.parse() and proxy() support\n", e);
}
lastDependencies == null ? void 0 : lastDependencies.forEach((_, p) => {
if (!dependencies.has(p)) {
removeSubscription(p, key);
}
if (message.type === "DISPATCH" && message.state) {
if (((_a = message.payload) == null ? void 0 : _a.type) === "JUMP_TO_ACTION" || ((_b = message.payload) == null ? void 0 : _b.type) === "JUMP_TO_STATE") {
isTimeTraveling = true;
const state = JSON.parse(message.state);
Object.assign(proxyObject, state);
}
proxyObject[DEVTOOLS] = message;
} else if (message.type === "DISPATCH" && ((_c = message.payload) == null ? void 0 : _c.type) === "COMMIT") {
devtools2.init(snapshot(proxyObject));
} else if (message.type === "DISPATCH" && ((_d = message.payload) == null ? void 0 : _d.type) === "IMPORT_STATE") {
const actions = (_e = message.payload.nextLiftedState) == null ? void 0 : _e.actionsById;
const computedStates = ((_f = message.payload.nextLiftedState) == null ? void 0 : _f.computedStates) || [];
isTimeTraveling = true;
computedStates.forEach(({ state }, index) => {
const action = actions[index] || "No action found";
Object.assign(proxyObject, state);
if (index === 0) {
devtools2.init(snapshot(proxyObject));
} else {
devtools2.send(action, snapshot(proxyObject));
}
});
}
});
devtools2.init(snapshot(proxyObject));
return () => {
unsub1();
unsub2();
};
});
const subscriptionsCache = /* @__PURE__ */ new WeakMap();
const getSubscriptions = (proxyObject) => {
let subscriptions = subscriptionsCache.get(proxyObject);
if (!subscriptions) {
subscriptions = /* @__PURE__ */ new Map();
subscriptionsCache.set(proxyObject, subscriptions);
}
return subscriptions;
lastDependencies = dependencies;
};
const unstable_getDeriveSubscriptions = exports('unstable_getDeriveSubscriptions', getSubscriptions);
const derive = exports('derive', (derivedFns, options) => {
const proxyObject = (options == null ? void 0 : options.proxy) || proxy({});
const notifyInSync = options == null ? void 0 : options.sync;
const subscriptions = getSubscriptions(proxyObject);
const addSubscription = (p, key, callback) => {
const subscription = subscriptions.get(p);
if (subscription) {
subscription[0].set(key, callback);
} else {
const unsubscribe = subscribe(p, (ops) => {
var _a;
if (p === proxyObject && ops.every((op) => op[1].length === 1 && op[1][0] in derivedFns)) {
return;
}
(_a = subscriptions.get(p)) == null ? void 0 : _a[0].forEach((cb) => {
cb();
});
}, notifyInSync);
subscriptions.set(p, [/* @__PURE__ */ new Map([[key, callback]]), unsubscribe]);
if (value instanceof Promise) {
value.finally(subscribeToDependencies);
} else {
subscribeToDependencies();
}
proxyObject[key] = value;
};
evaluate();
});
return proxyObject;
});
const underive = exports('underive', (proxyObject, options) => {
const subscriptions = getSubscriptions(proxyObject);
const keysToDelete = (options == null ? void 0 : options.delete) ? /* @__PURE__ */ new Set() : null;
subscriptions.forEach(([callbackMap, unsubscribe], p) => {
if (options == null ? void 0 : options.keys) {
options.keys.forEach((key) => {
if (callbackMap.has(key)) {
callbackMap.delete(key);
if (keysToDelete) {
keysToDelete.add(key);
}
};
const removeSubscription = (p, key) => {
const subscription = subscriptions.get(p);
if (subscription) {
const [callbackMap, unsubscribe] = subscription;
callbackMap.delete(key);
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
}
};
Object.keys(derivedFns).forEach((key) => {
if (Object.getOwnPropertyDescriptor(proxyObject, key)) {
throw new Error("object property already defined");
}
const fn = derivedFns[key];
let lastDependencies = null;
const evaluate = () => {
if (lastDependencies) {
if (Array.from(lastDependencies).every(([p, n]) => getVersion(p) === n)) {
return;
}
}
const dependencies = /* @__PURE__ */ new Map();
const get = (p) => {
dependencies.set(p, getVersion(p));
return p;
};
const value = fn(get);
const subscribe2 = () => {
dependencies.forEach((_, p) => {
if (!(lastDependencies == null ? void 0 : lastDependencies.has(p))) {
addSubscription(p, key, evaluate);
}
});
lastDependencies == null ? void 0 : lastDependencies.forEach((_, p) => {
if (!dependencies.has(p)) {
removeSubscription(p, key);
}
});
lastDependencies = dependencies;
};
if (value instanceof Promise) {
value.finally(subscribe2);
} else {
subscribe2();
}
proxyObject[key] = value;
};
evaluate();
});
return proxyObject;
});
const underive = exports('underive', (proxyObject, options) => {
const subscriptions = getSubscriptions(proxyObject);
const keysToDelete = (options == null ? void 0 : options.delete) ? /* @__PURE__ */ new Set() : null;
subscriptions.forEach(([callbackMap, unsubscribe], p) => {
if (options == null ? void 0 : options.keys) {
options.keys.forEach((key) => {
if (callbackMap.has(key)) {
callbackMap.delete(key);
if (keysToDelete) {
keysToDelete.add(key);
}
}
});
} else {
if (keysToDelete) {
Array.from(callbackMap.keys()).forEach((key) => {
keysToDelete.add(key);
});
}
callbackMap.clear();
}
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
});
if (keysToDelete) {
keysToDelete.forEach((key) => {
delete proxyObject[key];
});
}
});
const addComputed_DEPRECATED = exports('addComputed', (proxyObject, computedFns_FAKE, targetObject = proxyObject) => {
console.warn("addComputed is deprecated. Please consider using `derive` or `proxyWithComputed` instead. Falling back to emulation with derive.");
const derivedFns = {};
Object.keys(computedFns_FAKE).forEach((key) => {
derivedFns[key] = (get) => computedFns_FAKE[key](get(proxyObject));
} else {
if (keysToDelete) {
Array.from(callbackMap.keys()).forEach((key) => {
keysToDelete.add(key);
});
return derive(derivedFns, { proxy: targetObject });
});
}
callbackMap.clear();
}
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
});
if (keysToDelete) {
keysToDelete.forEach((key) => {
delete proxyObject[key];
});
}
});
const proxyWithComputed = exports('proxyWithComputed', (initialObject, computedFns) => {
Object.keys(computedFns).forEach((key) => {
if (Object.getOwnPropertyDescriptor(initialObject, key)) {
throw new Error("object property already defined");
}
const computedFn = computedFns[key];
const { get, set } = typeof computedFn === "function" ? { get: computedFn } : computedFn;
let computedValue;
let prevSnapshot;
let affected = /* @__PURE__ */ new WeakMap();
const desc = {};
desc.get = () => {
const nextSnapshot = snapshot(proxyObject);
if (!prevSnapshot || isChanged(prevSnapshot, nextSnapshot, affected)) {
affected = /* @__PURE__ */ new WeakMap();
computedValue = get(createProxy(nextSnapshot, affected));
prevSnapshot = nextSnapshot;
}
return computedValue;
};
if (set) {
desc.set = (newValue) => set(proxyObject, newValue);
}
Object.defineProperty(initialObject, key, desc);
});
const proxyObject = proxy(initialObject);
return proxyObject;
});
const addComputed_DEPRECATED = exports('addComputed', (proxyObject, computedFns_FAKE, targetObject = proxyObject) => {
console.warn("addComputed is deprecated. Please consider using `derive` or `proxyWithComputed` instead. Falling back to emulation with derive.");
const derivedFns = {};
Object.keys(computedFns_FAKE).forEach((key) => {
derivedFns[key] = (get) => computedFns_FAKE[key](get(proxyObject));
});
return derive(derivedFns, { proxy: targetObject });
});
const proxyWithHistory = exports('proxyWithHistory', (initialValue, skipSubscribe = false) => {
const proxyObject = proxy({
value: initialValue,
history: ref({
wip: initialValue,
snapshots: [],
index: -1
}),
canUndo: () => proxyObject.history.index > 0,
undo: () => {
if (proxyObject.canUndo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[--proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = snapshot(proxyObject).value;
}
},
canRedo: () => proxyObject.history.index < proxyObject.history.snapshots.length - 1,
redo: () => {
if (proxyObject.canRedo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[++proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = snapshot(proxyObject).value;
}
},
saveHistory: () => {
proxyObject.history.snapshots.splice(proxyObject.history.index + 1);
proxyObject.history.snapshots.push(snapshot(proxyObject).value);
++proxyObject.history.index;
},
subscribe: () => subscribe(proxyObject, (ops) => {
if (ops.some((op) => op[1][0] === "value" && (op[0] !== "set" || op[2] !== proxyObject.history.wip))) {
proxyObject.saveHistory();
}
})
});
const proxyWithComputed = exports('proxyWithComputed', (initialObject, computedFns) => {
Object.keys(computedFns).forEach((key) => {
if (Object.getOwnPropertyDescriptor(initialObject, key)) {
throw new Error("object property already defined");
}
const computedFn = computedFns[key];
const { get, set } = typeof computedFn === "function" ? { get: computedFn } : computedFn;
let computedValue;
let prevSnapshot;
let affected = /* @__PURE__ */ new WeakMap();
const desc = {};
desc.get = () => {
const nextSnapshot = snapshot(proxyObject);
if (!prevSnapshot || isChanged(prevSnapshot, nextSnapshot, affected)) {
affected = /* @__PURE__ */ new WeakMap();
computedValue = get(createProxy(nextSnapshot, affected));
prevSnapshot = nextSnapshot;
}
return computedValue;
};
if (set) {
desc.set = (newValue) => set(proxyObject, newValue);
}
Object.defineProperty(initialObject, key, desc);
});
const proxyObject = proxy(initialObject);
return proxyObject;
});
const proxyWithHistory = exports('proxyWithHistory', (initialValue, skipSubscribe = false) => {
const proxyObject = proxy({
value: initialValue,
history: ref({
wip: initialValue,
snapshots: [],
index: -1
}),
canUndo: () => proxyObject.history.index > 0,
undo: () => {
if (proxyObject.canUndo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[--proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = snapshot(proxyObject).value;
}
},
canRedo: () => proxyObject.history.index < proxyObject.history.snapshots.length - 1,
redo: () => {
if (proxyObject.canRedo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[++proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = snapshot(proxyObject).value;
}
},
saveHistory: () => {
proxyObject.history.snapshots.splice(proxyObject.history.index + 1);
proxyObject.history.snapshots.push(snapshot(proxyObject).value);
++proxyObject.history.index;
},
subscribe: () => subscribe(proxyObject, (ops) => {
if (ops.some((op) => op[1][0] === "value" && (op[0] !== "set" || op[2] !== proxyObject.history.wip))) {
proxyObject.saveHistory();
if (!skipSubscribe) {
proxyObject.subscribe();
}
return proxyObject;
}
})
});
proxyObject.saveHistory();
if (!skipSubscribe) {
proxyObject.subscribe();
}
return proxyObject;
});
const proxySet = exports('proxySet', (initialValues) => {
const set = proxy$1({
data: Array.from(new Set(initialValues)),
has(value) {
return this.data.indexOf(value) !== -1;
},
add(value) {
let hasProxy = false;
if (typeof value === "object" && value !== null) {
hasProxy = this.data.indexOf(proxy$1(value)) !== -1;
}
if (this.data.indexOf(value) === -1 && !hasProxy) {
this.data.push(value);
}
return this;
},
delete(value) {
const index = this.data.indexOf(value);
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
forEach(cb) {
this.data.forEach((value) => {
cb(value, value, this);
});
},
get [Symbol.toStringTag]() {
return "Set";
},
toJSON() {
return {};
},
[Symbol.iterator]() {
return this.data[Symbol.iterator]();
},
values() {
return this.data.values();
},
keys() {
return this.data.values();
},
entries() {
return new Set(this.data).entries();
}
});
Object.defineProperties(set, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(set);
return set;
});
const proxySet = exports('proxySet', (initialValues = []) => {
const set = proxy$1({
data: Array.from(new Set(initialValues)),
has(value) {
return this.data.indexOf(value) !== -1;
},
add(value) {
let hasProxy = false;
if (typeof value === "object" && value !== null) {
hasProxy = this.data.indexOf(proxy$1(value)) !== -1;
}
if (this.data.indexOf(value) === -1 && !hasProxy) {
this.data.push(value);
}
return this;
},
delete(value) {
const index = this.data.indexOf(value);
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
forEach(cb) {
this.data.forEach((value) => {
cb(value, value, this);
});
},
get [Symbol.toStringTag]() {
return "Set";
},
toJSON() {
return {};
},
[Symbol.iterator]() {
return this.data[Symbol.iterator]();
},
values() {
return this.data.values();
},
keys() {
return this.data.values();
},
entries() {
return new Set(this.data).entries();
}
});
Object.defineProperties(set, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(set);
return set;
const proxyMap = exports('proxyMap', (entries) => {
const map = proxy$1({
data: Array.from(entries || []),
has(key) {
return this.data.some((p) => p[0] === key);
},
set(key, value) {
const record = this.data.find((p) => p[0] === key);
if (record) {
record[1] = value;
} else {
this.data.push([key, value]);
}
return this;
},
get(key) {
var _a;
return (_a = this.data.find((p) => p[0] === key)) == null ? void 0 : _a[1];
},
delete(key) {
const index = this.data.findIndex((p) => p[0] === key);
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
toJSON() {
return {};
},
forEach(cb) {
this.data.forEach((p) => {
cb(p[1], p[0], this);
});
},
keys() {
return this.data.map((p) => p[0]).values();
},
values() {
return this.data.map((p) => p[1]).values();
},
entries() {
return new Map(this.data).entries();
},
get [Symbol.toStringTag]() {
return "Map";
},
[Symbol.iterator]() {
return this.entries();
}
});
Object.defineProperties(map, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(map);
return map;
});
})
};
})
};
}));
System.register(['proxy-compare'], (function (exports) {
'use strict';
var getUntracked, markToTrack;
return {
setters: [function (module) {
getUntracked = module.getUntracked;
markToTrack = module.markToTrack;
}],
execute: (function () {
'use strict';
var getUntracked, markToTrack;
return {
setters: [function (module) {
getUntracked = module.getUntracked;
markToTrack = module.markToTrack;
}],
execute: (function () {
const VERSION = Symbol();
const LISTENERS = Symbol();
const SNAPSHOT = Symbol();
const HANDLER = Symbol();
const PROMISE_RESULT = Symbol();
const PROMISE_ERROR = Symbol();
const refSet = /* @__PURE__ */ new WeakSet();
const ref = exports('ref', (o) => {
refSet.add(o);
return o;
});
const isObject = (x) => typeof x === "object" && x !== null;
const canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer);
const proxyCache = /* @__PURE__ */ new WeakMap();
let globalVersion = 1;
const snapshotCache = /* @__PURE__ */ new WeakMap();
const proxy = exports('proxy', (initialObject = {}) => {
if (!isObject(initialObject)) {
throw new Error("object required");
}
const found = proxyCache.get(initialObject);
if (found) {
return found;
}
let version = globalVersion;
const listeners = /* @__PURE__ */ new Set();
const notifyUpdate = (op, nextVersion) => {
if (!nextVersion) {
nextVersion = ++globalVersion;
}
if (version !== nextVersion) {
version = nextVersion;
listeners.forEach((listener) => listener(op, nextVersion));
}
};
const propListeners = /* @__PURE__ */ new Map();
const getPropListener = (prop) => {
let propListener = propListeners.get(prop);
if (!propListener) {
propListener = (op, nextVersion) => {
const newOp = [...op];
newOp[1] = [prop, ...newOp[1]];
notifyUpdate(newOp, nextVersion);
};
propListeners.set(prop, propListener);
}
return propListener;
};
const popPropListener = (prop) => {
const propListener = propListeners.get(prop);
propListeners.delete(prop);
return propListener;
};
const createSnapshot = (target, receiver) => {
const cache = snapshotCache.get(receiver);
if ((cache == null ? void 0 : cache[0]) === version) {
return cache[1];
}
const snapshot2 = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
markToTrack(snapshot2, true);
snapshotCache.set(receiver, [version, snapshot2]);
Reflect.ownKeys(target).forEach((key) => {
const value = Reflect.get(target, key, receiver);
if (refSet.has(value)) {
markToTrack(value, false);
snapshot2[key] = value;
} else if (value instanceof Promise) {
const VERSION = Symbol();
const LISTENERS = Symbol();
const SNAPSHOT = Symbol();
const HANDLER = Symbol();
const PROMISE_RESULT = Symbol();
const PROMISE_ERROR = Symbol();
const refSet = /* @__PURE__ */ new WeakSet();
const ref = exports('ref', (o) => {
refSet.add(o);
return o;
});
const isObject = (x) => typeof x === "object" && x !== null;
const canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer);
const proxyCache = /* @__PURE__ */ new WeakMap();
let globalVersion = 1;
const snapshotCache = /* @__PURE__ */ new WeakMap();
const proxy = exports('proxy', (initialObject = {}) => {
if (!isObject(initialObject)) {
throw new Error("object required");
}
const found = proxyCache.get(initialObject);
if (found) {
return found;
}
let version = globalVersion;
const listeners = /* @__PURE__ */ new Set();
const notifyUpdate = (op, nextVersion) => {
if (!nextVersion) {
nextVersion = ++globalVersion;
}
if (version !== nextVersion) {
version = nextVersion;
listeners.forEach((listener) => listener(op, nextVersion));
}
};
const propListeners = /* @__PURE__ */ new Map();
const getPropListener = (prop) => {
let propListener = propListeners.get(prop);
if (!propListener) {
propListener = (op, nextVersion) => {
const newOp = [...op];
newOp[1] = [prop, ...newOp[1]];
notifyUpdate(newOp, nextVersion);
};
propListeners.set(prop, propListener);
}
return propListener;
};
const popPropListener = (prop) => {
const propListener = propListeners.get(prop);
propListeners.delete(prop);
return propListener;
};
const createSnapshot = (target, receiver) => {
const cache = snapshotCache.get(receiver);
if ((cache == null ? void 0 : cache[0]) === version) {
return cache[1];
}
const snapshot2 = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
markToTrack(snapshot2, true);
snapshotCache.set(receiver, [version, snapshot2]);
Reflect.ownKeys(target).forEach((key) => {
const value = Reflect.get(target, key, receiver);
if (refSet.has(value)) {
markToTrack(value, false);
snapshot2[key] = value;
} else if (value instanceof Promise) {
if (PROMISE_RESULT in value) {
snapshot2[key] = value[PROMISE_RESULT];
} else {
const errorOrPromise = value[PROMISE_ERROR] || value;
Object.defineProperty(snapshot2, key, {
get() {
if (PROMISE_RESULT in value) {
snapshot2[key] = value[PROMISE_RESULT];
} else {
const errorOrPromise = value[PROMISE_ERROR] || value;
Object.defineProperty(snapshot2, key, {
get() {
if (PROMISE_RESULT in value) {
return value[PROMISE_RESULT];
}
throw errorOrPromise;
}
});
return value[PROMISE_RESULT];
}
} else if (value == null ? void 0 : value[LISTENERS]) {
snapshot2[key] = value[SNAPSHOT];
} else {
snapshot2[key] = value;
throw errorOrPromise;
}
});
Object.freeze(snapshot2);
return snapshot2;
};
const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
const handler = {
get(target, prop, receiver) {
if (prop === VERSION) {
return version;
}
if (prop === LISTENERS) {
return listeners;
}
if (prop === SNAPSHOT) {
return createSnapshot(target, receiver);
}
if (prop === HANDLER) {
return handler;
}
return Reflect.get(target, prop, receiver);
},
deleteProperty(target, prop) {
const prevValue = Reflect.get(target, prop);
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
const deleted = Reflect.deleteProperty(target, prop);
if (deleted) {
notifyUpdate(["delete", [prop], prevValue]);
}
return deleted;
},
is: Object.is,
canProxy,
set(target, prop, value, receiver) {
var _a;
const prevValue = Reflect.get(target, prop, receiver);
if (this.is(prevValue, value)) {
return true;
}
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue;
if ((_a = Object.getOwnPropertyDescriptor(target, prop)) == null ? void 0 : _a.set) {
nextValue = value;
} else if (value instanceof Promise) {
nextValue = value.then((v) => {
nextValue[PROMISE_RESULT] = v;
notifyUpdate(["resolve", [prop], v]);
return v;
}).catch((e) => {
nextValue[PROMISE_ERROR] = e;
notifyUpdate(["reject", [prop], e]);
});
} else if (value == null ? void 0 : value[LISTENERS]) {
nextValue = value;
nextValue[LISTENERS].add(getPropListener(prop));
} else if (this.canProxy(value)) {
nextValue = proxy(value);
nextValue[LISTENERS].add(getPropListener(prop));
} else {
nextValue = value;
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(["set", [prop], value, prevValue]);
return true;
}
};
const proxyObject = new Proxy(baseObject, handler);
proxyCache.set(initialObject, proxyObject);
Reflect.ownKeys(initialObject).forEach((key) => {
const desc = Object.getOwnPropertyDescriptor(initialObject, key);
if (desc.get || desc.set) {
Object.defineProperty(baseObject, key, desc);
} else {
proxyObject[key] = initialObject[key];
}
}
} else if (value == null ? void 0 : value[LISTENERS]) {
snapshot2[key] = value[SNAPSHOT];
} else {
snapshot2[key] = value;
}
});
Object.freeze(snapshot2);
return snapshot2;
};
const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
const handler = {
get(target, prop, receiver) {
if (prop === VERSION) {
return version;
}
if (prop === LISTENERS) {
return listeners;
}
if (prop === SNAPSHOT) {
return createSnapshot(target, receiver);
}
if (prop === HANDLER) {
return handler;
}
return Reflect.get(target, prop, receiver);
},
deleteProperty(target, prop) {
const prevValue = Reflect.get(target, prop);
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
const deleted = Reflect.deleteProperty(target, prop);
if (deleted) {
notifyUpdate(["delete", [prop], prevValue]);
}
return deleted;
},
is: Object.is,
canProxy,
set(target, prop, value, receiver) {
var _a;
const prevValue = Reflect.get(target, prop, receiver);
if (this.is(prevValue, value)) {
return true;
}
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue;
if ((_a = Object.getOwnPropertyDescriptor(target, prop)) == null ? void 0 : _a.set) {
nextValue = value;
} else if (value instanceof Promise) {
nextValue = value.then((v) => {
nextValue[PROMISE_RESULT] = v;
notifyUpdate(["resolve", [prop], v]);
return v;
}).catch((e) => {
nextValue[PROMISE_ERROR] = e;
notifyUpdate(["reject", [prop], e]);
});
return proxyObject;
} else if (value == null ? void 0 : value[LISTENERS]) {
nextValue = value;
nextValue[LISTENERS].add(getPropListener(prop));
} else if (this.canProxy(value)) {
nextValue = proxy(value);
nextValue[LISTENERS].add(getPropListener(prop));
} else {
nextValue = value;
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(["set", [prop], value, prevValue]);
return true;
}
};
const proxyObject = new Proxy(baseObject, handler);
proxyCache.set(initialObject, proxyObject);
Reflect.ownKeys(initialObject).forEach((key) => {
const desc = Object.getOwnPropertyDescriptor(initialObject, key);
if (desc.get || desc.set) {
Object.defineProperty(baseObject, key, desc);
} else {
proxyObject[key] = initialObject[key];
}
});
return proxyObject;
});
const getVersion = exports('getVersion', (proxyObject) => isObject(proxyObject) ? proxyObject[VERSION] : void 0);
const subscribe = exports('subscribe', (proxyObject, callback, notifyInSync) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[LISTENERS])) {
console.warn("Please use proxy object");
}
let promise;
const ops = [];
const listener = (op) => {
ops.push(op);
if (notifyInSync) {
callback(ops.splice(0));
return;
}
if (!promise) {
promise = Promise.resolve().then(() => {
promise = void 0;
callback(ops.splice(0));
});
const getVersion = exports('getVersion', (proxyObject) => isObject(proxyObject) ? proxyObject[VERSION] : void 0);
const subscribe = exports('subscribe', (proxyObject, callback, notifyInSync) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[LISTENERS])) {
console.warn("Please use proxy object");
}
let promise;
const ops = [];
const listener = (op) => {
ops.push(op);
if (notifyInSync) {
callback(ops.splice(0));
return;
}
if (!promise) {
promise = Promise.resolve().then(() => {
promise = void 0;
callback(ops.splice(0));
});
}
};
proxyObject[LISTENERS].add(listener);
return () => {
proxyObject[LISTENERS].delete(listener);
};
});
const snapshot = exports('snapshot', (proxyObject) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[SNAPSHOT])) {
console.warn("Please use proxy object");
}
return proxyObject[SNAPSHOT];
});
const getHandler = exports('getHandler', (proxyObject) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[HANDLER])) {
console.warn("Please use proxy object");
}
return proxyObject[HANDLER];
});
}
};
proxyObject[LISTENERS].add(listener);
return () => {
proxyObject[LISTENERS].delete(listener);
};
});
const snapshot = exports('snapshot', (proxyObject) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[SNAPSHOT])) {
console.warn("Please use proxy object");
}
return proxyObject[SNAPSHOT];
});
const getHandler = exports('getHandler', (proxyObject) => {
if (typeof process === "object" && process.env.NODE_ENV !== "production" && !(proxyObject == null ? void 0 : proxyObject[HANDLER])) {
console.warn("Please use proxy object");
}
return proxyObject[HANDLER];
});
})
};
})
};
}));

@@ -9,1 +9,2 @@ export { subscribeKey } from './utils/subscribeKey';

export { proxySet } from './utils/proxySet';
export { proxyMap } from './utils/proxyMap';
declare type DeriveGet = <T extends object>(proxyObject: T) => T;
declare type Subscriptions<U extends object> = Map<object, [
declare type Subscription<U extends object> = [
/*callbackMap*/ Map<keyof U, () => void>,
/*unsubscribe*/ () => void
]>;
];
declare type Subscriptions<U extends object> = Map<object, Subscription<U>>;
export declare const unstable_getDeriveSubscriptions: (proxyObject: object) => Subscriptions<object>;

@@ -7,0 +8,0 @@ /**

@@ -16,2 +16,2 @@ /**

*/
export declare const proxySet: <T>(initialValues?: Iterable<T> | null) => Set<T>;
export declare const proxySet: <T>(initialValues?: Iterable<T> | null | undefined) => Set<T>;

@@ -1,3 +0,4 @@

declare const enum AsRef {
}
declare type AsRef = {
$$valtioRef: true;
};
export declare const ref: <T extends object>(o: T) => T & AsRef;

@@ -26,7 +27,14 @@ declare type Path = (string | symbol)[];

export declare const subscribe: <T extends object>(proxyObject: T, callback: (ops: Op[]) => void, notifyInSync?: boolean | undefined) => () => void;
/**
* @deprecated this will be removed in next versions
*/
export declare type DeepResolveType<T> = T extends (...args: any[]) => any ? T : T extends AsRef ? T : T extends Promise<infer V> ? DeepResolveType<V> : T extends object ? {
readonly [K in keyof T]: DeepResolveType<T[K]>;
} : T;
export declare const snapshot: <T extends object>(proxyObject: T) => DeepResolveType<T>;
declare type AnyFunction = (...args: any[]) => any;
declare type Snapshot<T> = T extends AnyFunction ? T : T extends AsRef ? T : T extends Promise<infer V> ? Snapshot<V> : {
readonly [K in keyof T]: Snapshot<T[K]>;
};
export declare const snapshot: <T extends object>(proxyObject: T) => Snapshot<T>;
export declare const getHandler: <T extends object>(proxyObject: T) => any;
export {};

@@ -9,1 +9,2 @@ export { subscribeKey } from './utils/subscribeKey';

export { proxySet } from './utils/proxySet';
export { proxyMap } from './utils/proxyMap';
declare type DeriveGet = <T extends object>(proxyObject: T) => T;
declare type Subscriptions<U extends object> = Map<object, [
declare type Subscription<U extends object> = [
/*callbackMap*/ Map<keyof U, () => void>,
/*unsubscribe*/ () => void
]>;
];
declare type Subscriptions<U extends object> = Map<object, Subscription<U>>;
export declare const unstable_getDeriveSubscriptions: (proxyObject: object) => Subscriptions<object>;

@@ -7,0 +8,0 @@ /**

@@ -16,2 +16,2 @@ /**

*/
export declare const proxySet: <T>(initialValues?: Iterable<T> | null) => Set<T>;
export declare const proxySet: <T>(initialValues?: Iterable<T> | null | undefined) => Set<T>;

@@ -1,3 +0,4 @@

declare const enum AsRef {
}
declare type AsRef = {
$$valtioRef: true;
};
export declare const ref: <T extends object>(o: T) => T & AsRef;

@@ -26,7 +27,14 @@ declare type Path = (string | symbol)[];

export declare const subscribe: <T extends object>(proxyObject: T, callback: (ops: Op[]) => void, notifyInSync?: boolean | undefined) => () => void;
/**
* @deprecated this will be removed in next versions
*/
export declare type DeepResolveType<T> = T extends (...args: any[]) => any ? T : T extends AsRef ? T : T extends Promise<infer V> ? DeepResolveType<V> : T extends object ? {
readonly [K in keyof T]: DeepResolveType<T[K]>;
} : T;
export declare const snapshot: <T extends object>(proxyObject: T) => DeepResolveType<T>;
declare type AnyFunction = (...args: any[]) => any;
declare type Snapshot<T> = T extends AnyFunction ? T : T extends AsRef ? T : T extends Promise<infer V> ? Snapshot<V> : {
readonly [K in keyof T]: Snapshot<T[K]>;
};
export declare const snapshot: <T extends object>(proxyObject: T) => Snapshot<T>;
export declare const getHandler: <T extends object>(proxyObject: T) => any;
export {};
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/helper-module-imports'), require('@babel/types'), require('babel-plugin-macros')) :
typeof define === 'function' && define.amd ? define(['exports', '@babel/helper-module-imports', '@babel/types', 'babel-plugin-macros'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.helperModuleImports, global.t, global.babelPluginMacros));
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/helper-module-imports'), require('@babel/types'), require('babel-plugin-macros')) :
typeof define === 'function' && define.amd ? define(['exports', '@babel/helper-module-imports', '@babel/types', 'babel-plugin-macros'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.helperModuleImports, global.t, global.babelPluginMacros));
})(this, (function (exports, helperModuleImports, t, babelPluginMacros) { 'use strict';
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
n["default"] = e;
return Object.freeze(n);
});
}
n["default"] = e;
return Object.freeze(n);
}
var t__namespace = /*#__PURE__*/_interopNamespace(t);
var t__namespace = /*#__PURE__*/_interopNamespace(t);
var macro = function macro(_ref) {
var _references$useProxy;
var macro = function macro(_ref) {
var _references$useProxy;
var references = _ref.references;
(_references$useProxy = references.useProxy) == null ? void 0 : _references$useProxy.forEach(function (path) {
var _path$parentPath, _path$parentPath$get, _path$parentPath2, _path$parentPath2$par, _path$parentPath3, _path$parentPath3$get;
var references = _ref.references;
(_references$useProxy = references.useProxy) == null ? void 0 : _references$useProxy.forEach(function (path) {
var _path$parentPath, _path$parentPath$get, _path$parentPath2, _path$parentPath2$par, _path$parentPath3, _path$parentPath3$get;
var hook = helperModuleImports.addNamed(path, 'useSnapshot', 'valtio');
var proxy = (_path$parentPath = path.parentPath) == null ? void 0 : (_path$parentPath$get = _path$parentPath.get('arguments.0')) == null ? void 0 : _path$parentPath$get.node;
if (!t__namespace.isIdentifier(proxy)) throw new babelPluginMacros.MacroError('no proxy object');
var snap = t__namespace.identifier("valtio_macro_snap_" + proxy.name);
(_path$parentPath2 = path.parentPath) == null ? void 0 : (_path$parentPath2$par = _path$parentPath2.parentPath) == null ? void 0 : _path$parentPath2$par.replaceWith(t__namespace.variableDeclaration('const', [t__namespace.variableDeclarator(snap, t__namespace.callExpression(hook, [proxy]))]));
var inFunction = 0;
(_path$parentPath3 = path.parentPath) == null ? void 0 : (_path$parentPath3$get = _path$parentPath3.getFunctionParent()) == null ? void 0 : _path$parentPath3$get.traverse({
Identifier: function Identifier(p) {
if (inFunction === 0 && p.node !== proxy && p.node.name === proxy.name) {
p.node.name = snap.name;
}
var hook = helperModuleImports.addNamed(path, 'useSnapshot', 'valtio');
var proxy = (_path$parentPath = path.parentPath) == null ? void 0 : (_path$parentPath$get = _path$parentPath.get('arguments.0')) == null ? void 0 : _path$parentPath$get.node;
if (!t__namespace.isIdentifier(proxy)) throw new babelPluginMacros.MacroError('no proxy object');
var snap = t__namespace.identifier("valtio_macro_snap_" + proxy.name);
(_path$parentPath2 = path.parentPath) == null ? void 0 : (_path$parentPath2$par = _path$parentPath2.parentPath) == null ? void 0 : _path$parentPath2$par.replaceWith(t__namespace.variableDeclaration('const', [t__namespace.variableDeclarator(snap, t__namespace.callExpression(hook, [proxy]))]));
var inFunction = 0;
(_path$parentPath3 = path.parentPath) == null ? void 0 : (_path$parentPath3$get = _path$parentPath3.getFunctionParent()) == null ? void 0 : _path$parentPath3$get.traverse({
Identifier: function Identifier(p) {
if (inFunction === 0 && p.node !== proxy && p.node.name === proxy.name) {
p.node.name = snap.name;
}
},
Function: {
enter: function enter() {
++inFunction;
},
Function: {
enter: function enter() {
++inFunction;
},
exit: function exit() {
--inFunction;
}
exit: function exit() {
--inFunction;
}
});
}
});
};
var macro$1 = babelPluginMacros.createMacro(macro, {
configName: 'valtio'
});
};
exports["default"] = macro$1;
var macro$1 = babelPluginMacros.createMacro(macro, {
configName: 'valtio'
});
Object.defineProperty(exports, '__esModule', { value: true });
exports["default"] = macro$1;
Object.defineProperty(exports, '__esModule', { value: true });
}));
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('valtio/vanilla'), require('proxy-compare'), require('valtio')) :
typeof define === 'function' && define.amd ? define(['exports', 'valtio/vanilla', 'proxy-compare', 'valtio'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.vanilla, global.proxyCompare, global.valtio));
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('valtio/vanilla'), require('proxy-compare'), require('valtio')) :
typeof define === 'function' && define.amd ? define(['exports', 'valtio/vanilla', 'proxy-compare', 'valtio'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.vanilla, global.proxyCompare, global.valtio));
})(this, (function (exports, vanilla, proxyCompare, valtio) { 'use strict';
var subscribeKey = function subscribeKey(proxyObject, key, callback, notifyInSync) {
return vanilla.subscribe(proxyObject, function (ops) {
if (ops.some(function (op) {
return op[1][0] === key;
})) {
callback(proxyObject[key]);
}
}, notifyInSync);
var subscribeKey = function subscribeKey(proxyObject, key, callback, notifyInSync) {
return vanilla.subscribe(proxyObject, function (ops) {
if (ops.some(function (op) {
return op[1][0] === key;
})) {
callback(proxyObject[key]);
}
}, notifyInSync);
};
var currentCleanups;
var watch = function watch(callback, options) {
var cleanups = new Set();
var subscriptions = new Set();
var alive = true;
var cleanup = function cleanup() {
cleanups.forEach(function (clean) {
clean();
});
cleanups.clear();
subscriptions.clear();
};
var currentCleanups;
var watch = function watch(callback, options) {
var cleanups = new Set();
var subscriptions = new Set();
var alive = true;
var revalidate = function revalidate() {
if (!alive) {
return;
}
var cleanup = function cleanup() {
cleanups.forEach(function (clean) {
clean();
cleanup();
var parent = currentCleanups;
currentCleanups = cleanups;
try {
var cleanupReturn = callback(function (proxy) {
subscriptions.add(proxy);
return proxy;
});
cleanups.clear();
subscriptions.clear();
};
var revalidate = function revalidate() {
if (!alive) {
return;
if (cleanupReturn) {
cleanups.add(cleanupReturn);
}
} finally {
currentCleanups = parent;
}
subscriptions.forEach(function (proxy) {
var clean = vanilla.subscribe(proxy, revalidate, options == null ? void 0 : options.sync);
cleanups.add(clean);
});
};
var wrappedCleanup = function wrappedCleanup() {
if (alive) {
cleanup();
var parent = currentCleanups;
currentCleanups = cleanups;
alive = false;
}
};
try {
var cleanupReturn = callback(function (proxy) {
subscriptions.add(proxy);
return proxy;
});
if (currentCleanups) {
currentCleanups.add(wrappedCleanup);
}
if (cleanupReturn) {
cleanups.add(cleanupReturn);
}
} finally {
currentCleanups = parent;
}
revalidate();
return wrappedCleanup;
};
subscriptions.forEach(function (proxy) {
var clean = vanilla.subscribe(proxy, revalidate, options == null ? void 0 : options.sync);
cleanups.add(clean);
});
};
var DEVTOOLS = Symbol();
var devtools = function devtools(proxyObject, name) {
var extension;
var wrappedCleanup = function wrappedCleanup() {
if (alive) {
cleanup();
alive = false;
}
};
try {
extension = window.__REDUX_DEVTOOLS_EXTENSION__;
} catch (_unused) {}
if (currentCleanups) {
currentCleanups.add(wrappedCleanup);
if (!extension) {
if (typeof process === 'object' && process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {
console.warn('[Warning] Please install/enable Redux devtools extension');
}
revalidate();
return wrappedCleanup;
};
return;
}
var DEVTOOLS = Symbol();
var devtools = function devtools(proxyObject, name) {
var extension;
var isTimeTraveling = false;
var devtools = extension.connect({
name: name
});
var unsub1 = vanilla.subscribe(proxyObject, function (ops) {
var action = ops.filter(function (_ref) {
_ref[0];
var path = _ref[1];
return path[0] !== DEVTOOLS;
}).map(function (_ref2) {
var op = _ref2[0],
path = _ref2[1];
return op + ":" + path.map(String).join('.');
}).join(', ');
try {
extension = window.__REDUX_DEVTOOLS_EXTENSION__;
} catch (_unused) {}
if (!extension) {
if (typeof process === 'object' && process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {
console.warn('[Warning] Please install/enable Redux devtools extension');
}
if (!action) {
return;
}
var isTimeTraveling = false;
var devtools = extension.connect({
name: name
});
var unsub1 = vanilla.subscribe(proxyObject, function (ops) {
var action = ops.filter(function (_ref) {
_ref[0];
var path = _ref[1];
return path[0] !== DEVTOOLS;
}).map(function (_ref2) {
var op = _ref2[0],
path = _ref2[1];
return op + ":" + path.map(String).join('.');
}).join(', ');
if (isTimeTraveling) {
isTimeTraveling = false;
} else {
var snapWithoutDevtools = Object.assign({}, vanilla.snapshot(proxyObject));
delete snapWithoutDevtools[DEVTOOLS];
devtools.send({
type: action,
updatedAt: new Date().toLocaleString()
}, snapWithoutDevtools);
}
});
var unsub2 = devtools.subscribe(function (message) {
var _message$payload3, _message$payload4;
if (!action) {
return;
if (message.type === 'ACTION' && message.payload) {
try {
Object.assign(proxyObject, JSON.parse(message.payload));
} catch (e) {
console.error('please dispatch a serializable value that JSON.parse() and proxy() support\n', e);
}
}
if (isTimeTraveling) {
isTimeTraveling = false;
} else {
var snapWithoutDevtools = Object.assign({}, vanilla.snapshot(proxyObject));
delete snapWithoutDevtools[DEVTOOLS];
devtools.send({
type: action,
updatedAt: new Date().toLocaleString()
}, snapWithoutDevtools);
}
});
var unsub2 = devtools.subscribe(function (message) {
var _message$payload3, _message$payload4;
if (message.type === 'DISPATCH' && message.state) {
var _message$payload, _message$payload2;
if (message.type === 'ACTION' && message.payload) {
try {
Object.assign(proxyObject, JSON.parse(message.payload));
} catch (e) {
console.error('please dispatch a serializable value that JSON.parse() and proxy() support\n', e);
}
if (((_message$payload = message.payload) == null ? void 0 : _message$payload.type) === 'JUMP_TO_ACTION' || ((_message$payload2 = message.payload) == null ? void 0 : _message$payload2.type) === 'JUMP_TO_STATE') {
isTimeTraveling = true;
var state = JSON.parse(message.state);
Object.assign(proxyObject, state);
}
proxyObject[DEVTOOLS] = message;
} else if (message.type === 'DISPATCH' && ((_message$payload3 = message.payload) == null ? void 0 : _message$payload3.type) === 'COMMIT') {
devtools.init(vanilla.snapshot(proxyObject));
} else if (message.type === 'DISPATCH' && ((_message$payload4 = message.payload) == null ? void 0 : _message$payload4.type) === 'IMPORT_STATE') {
var _message$payload$next, _message$payload$next2;
if (message.type === 'DISPATCH' && message.state) {
var _message$payload, _message$payload2;
var actions = (_message$payload$next = message.payload.nextLiftedState) == null ? void 0 : _message$payload$next.actionsById;
var computedStates = ((_message$payload$next2 = message.payload.nextLiftedState) == null ? void 0 : _message$payload$next2.computedStates) || [];
isTimeTraveling = true;
computedStates.forEach(function (_ref3, index) {
var state = _ref3.state;
var action = actions[index] || 'No action found';
Object.assign(proxyObject, state);
if (((_message$payload = message.payload) == null ? void 0 : _message$payload.type) === 'JUMP_TO_ACTION' || ((_message$payload2 = message.payload) == null ? void 0 : _message$payload2.type) === 'JUMP_TO_STATE') {
isTimeTraveling = true;
var state = JSON.parse(message.state);
Object.assign(proxyObject, state);
if (index === 0) {
devtools.init(vanilla.snapshot(proxyObject));
} else {
devtools.send(action, vanilla.snapshot(proxyObject));
}
proxyObject[DEVTOOLS] = message;
} else if (message.type === 'DISPATCH' && ((_message$payload3 = message.payload) == null ? void 0 : _message$payload3.type) === 'COMMIT') {
devtools.init(vanilla.snapshot(proxyObject));
} else if (message.type === 'DISPATCH' && ((_message$payload4 = message.payload) == null ? void 0 : _message$payload4.type) === 'IMPORT_STATE') {
var _message$payload$next, _message$payload$next2;
});
}
});
devtools.init(vanilla.snapshot(proxyObject));
return function () {
unsub1();
unsub2();
};
};
var actions = (_message$payload$next = message.payload.nextLiftedState) == null ? void 0 : _message$payload$next.actionsById;
var computedStates = ((_message$payload$next2 = message.payload.nextLiftedState) == null ? void 0 : _message$payload$next2.computedStates) || [];
isTimeTraveling = true;
computedStates.forEach(function (_ref3, index) {
var state = _ref3.state;
var action = actions[index] || 'No action found';
Object.assign(proxyObject, state);
var subscriptionsCache = new WeakMap();
if (index === 0) {
devtools.init(vanilla.snapshot(proxyObject));
} else {
devtools.send(action, vanilla.snapshot(proxyObject));
}
});
}
});
devtools.init(vanilla.snapshot(proxyObject));
return function () {
unsub1();
unsub2();
};
};
var getSubscriptions = function getSubscriptions(proxyObject) {
var subscriptions = subscriptionsCache.get(proxyObject);
var subscriptionsCache = new WeakMap();
if (!subscriptions) {
subscriptions = new Map();
subscriptionsCache.set(proxyObject, subscriptions);
}
var getSubscriptions = function getSubscriptions(proxyObject) {
var subscriptions = subscriptionsCache.get(proxyObject);
return subscriptions;
};
if (!subscriptions) {
subscriptions = new Map();
subscriptionsCache.set(proxyObject, subscriptions);
}
var unstable_getDeriveSubscriptions = getSubscriptions;
var pendingCountMap = new WeakMap();
return subscriptions;
};
var markPending = function markPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
pendingCountMap.set(proxyObject, count + 1);
};
var unstable_getDeriveSubscriptions = getSubscriptions;
var derive = function derive(derivedFns, options) {
var proxyObject = (options == null ? void 0 : options.proxy) || vanilla.proxy({});
var notifyInSync = options == null ? void 0 : options.sync;
var subscriptions = getSubscriptions(proxyObject);
var unmarkPending = function unmarkPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
var addSubscription = function addSubscription(p, key, callback) {
var subscription = subscriptions.get(p);
if (count > 1) {
pendingCountMap.set(proxyObject, count - 1);
} else {
pendingCountMap.delete(proxyObject);
}
};
if (subscription) {
subscription[0].set(key, callback);
} else {
var unsubscribe = vanilla.subscribe(p, function (ops) {
var _subscriptions$get;
var isPending = function isPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
return count > 0;
};
if (p === proxyObject && ops.every(function (op) {
return op[1].length === 1 && op[1][0] in derivedFns;
})) {
return;
}
var derive = function derive(derivedFns, options) {
var proxyObject = (options == null ? void 0 : options.proxy) || vanilla.proxy({});
var notifyInSync = options == null ? void 0 : options.sync;
var subscriptions = getSubscriptions(proxyObject);
(_subscriptions$get = subscriptions.get(p)) == null ? void 0 : _subscriptions$get[0].forEach(function (cb) {
cb();
});
}, notifyInSync);
subscriptions.set(p, [new Map([[key, callback]]), unsubscribe]);
}
};
var addSubscription = function addSubscription(p, key, callback) {
var subscription = subscriptions.get(p);
var removeSubscription = function removeSubscription(p, key) {
var subscription = subscriptions.get(p);
if (!subscription) {
var notify = function notify() {
return subscription[0].forEach(function (cb) {
return cb();
});
};
if (subscription) {
var callbackMap = subscription[0],
unsubscribe = subscription[1];
callbackMap.delete(key);
var promise;
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
var _unsubscribe = vanilla.subscribe(p, function (ops) {
if (p === proxyObject && ops.every(function (op) {
return op[1].length === 1 && op[1][0] in derivedFns;
})) {
return;
}
}
};
Object.keys(derivedFns).forEach(function (key) {
if (Object.getOwnPropertyDescriptor(proxyObject, key)) {
throw new Error('object property already defined');
}
if (promise) {
return;
}
var fn = derivedFns[key];
var lastDependencies = null;
markPending(p);
var evaluate = function evaluate() {
if (lastDependencies) {
if (Array.from(lastDependencies).every(function (_ref) {
var p = _ref[0],
n = _ref[1];
return vanilla.getVersion(p) === n;
})) {
return;
}
if (notifyInSync) {
unmarkPending(p);
notify();
} else {
promise = Promise.resolve().then(function () {
promise = undefined;
unmarkPending(p);
notify();
});
}
}, true);
var dependencies = new Map();
subscription = [new Map(), _unsubscribe];
subscriptions.set(p, subscription);
}
var get = function get(p) {
dependencies.set(p, vanilla.getVersion(p));
return p;
};
subscription[0].set(key, callback);
};
var value = fn(get);
var removeSubscription = function removeSubscription(p, key) {
var subscription = subscriptions.get(p);
var subscribe = function subscribe() {
var _lastDependencies2;
if (subscription) {
var _callbackMap = subscription[0],
_unsubscribe2 = subscription[1];
dependencies.forEach(function (_, p) {
var _lastDependencies;
_callbackMap.delete(key);
if (!((_lastDependencies = lastDependencies) != null && _lastDependencies.has(p))) {
addSubscription(p, key, evaluate);
}
});
(_lastDependencies2 = lastDependencies) == null ? void 0 : _lastDependencies2.forEach(function (_, p) {
if (!dependencies.has(p)) {
removeSubscription(p, key);
}
});
lastDependencies = dependencies;
};
if (!_callbackMap.size) {
_unsubscribe2();
if (value instanceof Promise) {
value.finally(subscribe);
} else {
subscribe();
subscriptions.delete(p);
}
}
};
Object.keys(derivedFns).forEach(function (key) {
if (Object.getOwnPropertyDescriptor(proxyObject, key)) {
throw new Error('object property already defined');
}
var fn = derivedFns[key];
var lastDependencies = null;
var evaluate = function evaluate() {
if (lastDependencies) {
if (Array.from(lastDependencies).some(function (_ref) {
var p = _ref[0];
return isPending(p);
})) {
return;
}
proxyObject[key] = value;
if (Array.from(lastDependencies).every(function (_ref2) {
var p = _ref2[0],
n = _ref2[1];
return vanilla.getVersion(p) === n;
})) {
return;
}
}
var dependencies = new Map();
var get = function get(p) {
dependencies.set(p, vanilla.getVersion(p));
return p;
};
evaluate();
});
return proxyObject;
};
var underive = function underive(proxyObject, options) {
var subscriptions = getSubscriptions(proxyObject);
var keysToDelete = options != null && options.delete ? new Set() : null;
subscriptions.forEach(function (_ref2, p) {
var callbackMap = _ref2[0],
unsubscribe = _ref2[1];
var value = fn(get);
if (options != null && options.keys) {
options.keys.forEach(function (key) {
if (callbackMap.has(key)) {
callbackMap.delete(key);
var subscribeToDependencies = function subscribeToDependencies() {
var _lastDependencies2;
if (keysToDelete) {
keysToDelete.add(key);
}
dependencies.forEach(function (_, p) {
var _lastDependencies;
if (!((_lastDependencies = lastDependencies) != null && _lastDependencies.has(p))) {
addSubscription(p, key, evaluate);
}
});
(_lastDependencies2 = lastDependencies) == null ? void 0 : _lastDependencies2.forEach(function (_, p) {
if (!dependencies.has(p)) {
removeSubscription(p, key);
}
});
lastDependencies = dependencies;
};
if (value instanceof Promise) {
value.finally(subscribeToDependencies);
} else {
if (keysToDelete) {
Array.from(callbackMap.keys()).forEach(function (key) {
subscribeToDependencies();
}
proxyObject[key] = value;
};
evaluate();
});
return proxyObject;
};
var underive = function underive(proxyObject, options) {
var subscriptions = getSubscriptions(proxyObject);
var keysToDelete = options != null && options.delete ? new Set() : null;
subscriptions.forEach(function (_ref3, p) {
var callbackMap = _ref3[0],
unsubscribe = _ref3[1];
if (options != null && options.keys) {
options.keys.forEach(function (key) {
if (callbackMap.has(key)) {
callbackMap.delete(key);
if (keysToDelete) {
keysToDelete.add(key);
});
}
}
callbackMap.clear();
});
} else {
if (keysToDelete) {
Array.from(callbackMap.keys()).forEach(function (key) {
keysToDelete.add(key);
});
}
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
});
if (keysToDelete) {
keysToDelete.forEach(function (key) {
delete proxyObject[key];
});
callbackMap.clear();
}
};
var addComputed_DEPRECATED = function addComputed_DEPRECATED(proxyObject, computedFns_FAKE, targetObject) {
if (targetObject === void 0) {
targetObject = proxyObject;
if (!callbackMap.size) {
unsubscribe();
subscriptions.delete(p);
}
});
console.warn('addComputed is deprecated. Please consider using `derive` or `proxyWithComputed` instead. Falling back to emulation with derive.');
var derivedFns = {};
Object.keys(computedFns_FAKE).forEach(function (key) {
derivedFns[key] = function (get) {
return computedFns_FAKE[key](get(proxyObject));
};
if (keysToDelete) {
keysToDelete.forEach(function (key) {
delete proxyObject[key];
});
return derive(derivedFns, {
proxy: targetObject
});
};
}
};
var proxyWithComputed = function proxyWithComputed(initialObject, computedFns) {
Object.keys(computedFns).forEach(function (key) {
if (Object.getOwnPropertyDescriptor(initialObject, key)) {
throw new Error('object property already defined');
}
var addComputed_DEPRECATED = function addComputed_DEPRECATED(proxyObject, computedFns_FAKE, targetObject) {
if (targetObject === void 0) {
targetObject = proxyObject;
}
var computedFn = computedFns[key];
console.warn('addComputed is deprecated. Please consider using `derive` or `proxyWithComputed` instead. Falling back to emulation with derive.');
var derivedFns = {};
Object.keys(computedFns_FAKE).forEach(function (key) {
derivedFns[key] = function (get) {
return computedFns_FAKE[key](get(proxyObject));
};
});
return derive(derivedFns, {
proxy: targetObject
});
};
var _ref = typeof computedFn === 'function' ? {
get: computedFn
} : computedFn,
get = _ref.get,
set = _ref.set;
var proxyWithComputed = function proxyWithComputed(initialObject, computedFns) {
Object.keys(computedFns).forEach(function (key) {
if (Object.getOwnPropertyDescriptor(initialObject, key)) {
throw new Error('object property already defined');
}
var computedValue;
var prevSnapshot;
var affected = new WeakMap();
var desc = {};
var computedFn = computedFns[key];
desc.get = function () {
var nextSnapshot = vanilla.snapshot(proxyObject);
var _ref = typeof computedFn === 'function' ? {
get: computedFn
} : computedFn,
get = _ref.get,
set = _ref.set;
if (!prevSnapshot || proxyCompare.isChanged(prevSnapshot, nextSnapshot, affected)) {
affected = new WeakMap();
computedValue = get(proxyCompare.createProxy(nextSnapshot, affected));
prevSnapshot = nextSnapshot;
}
var computedValue;
var prevSnapshot;
var affected = new WeakMap();
var desc = {};
return computedValue;
};
desc.get = function () {
var nextSnapshot = vanilla.snapshot(proxyObject);
if (set) {
desc.set = function (newValue) {
return set(proxyObject, newValue);
};
if (!prevSnapshot || proxyCompare.isChanged(prevSnapshot, nextSnapshot, affected)) {
affected = new WeakMap();
computedValue = get(proxyCompare.createProxy(nextSnapshot, affected));
prevSnapshot = nextSnapshot;
}
Object.defineProperty(initialObject, key, desc);
});
var proxyObject = vanilla.proxy(initialObject);
return proxyObject;
};
return computedValue;
};
var proxyWithHistory = function proxyWithHistory(initialValue, skipSubscribe) {
if (skipSubscribe === void 0) {
skipSubscribe = false;
if (set) {
desc.set = function (newValue) {
return set(proxyObject, newValue);
};
}
var proxyObject = vanilla.proxy({
value: initialValue,
history: vanilla.ref({
wip: initialValue,
snapshots: [],
index: -1
}),
canUndo: function canUndo() {
return proxyObject.history.index > 0;
},
undo: function undo() {
if (proxyObject.canUndo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[--proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = vanilla.snapshot(proxyObject).value;
Object.defineProperty(initialObject, key, desc);
});
var proxyObject = vanilla.proxy(initialObject);
return proxyObject;
};
var proxyWithHistory = function proxyWithHistory(initialValue, skipSubscribe) {
if (skipSubscribe === void 0) {
skipSubscribe = false;
}
var proxyObject = vanilla.proxy({
value: initialValue,
history: vanilla.ref({
wip: initialValue,
snapshots: [],
index: -1
}),
canUndo: function canUndo() {
return proxyObject.history.index > 0;
},
undo: function undo() {
if (proxyObject.canUndo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[--proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = vanilla.snapshot(proxyObject).value;
}
},
canRedo: function canRedo() {
return proxyObject.history.index < proxyObject.history.snapshots.length - 1;
},
redo: function redo() {
if (proxyObject.canRedo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[++proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = vanilla.snapshot(proxyObject).value;
}
},
saveHistory: function saveHistory() {
proxyObject.history.snapshots.splice(proxyObject.history.index + 1);
proxyObject.history.snapshots.push(vanilla.snapshot(proxyObject).value);
++proxyObject.history.index;
},
subscribe: function subscribe() {
return vanilla.subscribe(proxyObject, function (ops) {
if (ops.some(function (op) {
return op[1][0] === 'value' && (op[0] !== 'set' || op[2] !== proxyObject.history.wip);
})) {
proxyObject.saveHistory();
}
},
canRedo: function canRedo() {
return proxyObject.history.index < proxyObject.history.snapshots.length - 1;
},
redo: function redo() {
if (proxyObject.canRedo()) {
proxyObject.value = proxyObject.history.wip = proxyObject.history.snapshots[++proxyObject.history.index];
proxyObject.history.snapshots[proxyObject.history.index] = vanilla.snapshot(proxyObject).value;
}
},
saveHistory: function saveHistory() {
proxyObject.history.snapshots.splice(proxyObject.history.index + 1);
proxyObject.history.snapshots.push(vanilla.snapshot(proxyObject).value);
++proxyObject.history.index;
},
subscribe: function subscribe() {
return vanilla.subscribe(proxyObject, function (ops) {
if (ops.some(function (op) {
return op[1][0] === 'value' && (op[0] !== 'set' || op[2] !== proxyObject.history.wip);
})) {
proxyObject.saveHistory();
}
});
}
});
proxyObject.saveHistory();
if (!skipSubscribe) {
proxyObject.subscribe();
});
}
});
proxyObject.saveHistory();
return proxyObject;
};
if (!skipSubscribe) {
proxyObject.subscribe();
}
function _defineEnumerableProperties(obj, descs) {
for (var key in descs) {
var desc = descs[key];
return proxyObject;
};
function _defineEnumerableProperties(obj, descs) {
for (var key in descs) {
var desc = descs[key];
desc.configurable = desc.enumerable = true;
if ("value" in desc) desc.writable = true;
Object.defineProperty(obj, key, desc);
}
if (Object.getOwnPropertySymbols) {
var objectSymbols = Object.getOwnPropertySymbols(descs);
for (var i = 0; i < objectSymbols.length; i++) {
var sym = objectSymbols[i];
var desc = descs[sym];
desc.configurable = desc.enumerable = true;
if ("value" in desc) desc.writable = true;
Object.defineProperty(obj, key, desc);
Object.defineProperty(obj, sym, desc);
}
}
if (Object.getOwnPropertySymbols) {
var objectSymbols = Object.getOwnPropertySymbols(descs);
return obj;
}
for (var i = 0; i < objectSymbols.length; i++) {
var sym = objectSymbols[i];
var desc = descs[sym];
desc.configurable = desc.enumerable = true;
if ("value" in desc) desc.writable = true;
Object.defineProperty(obj, sym, desc);
var proxySet = function proxySet(initialValues) {
var _Symbol$toStringTag, _proxy, _mutatorMap;
var set = valtio.proxy((_proxy = {
data: Array.from(new Set(initialValues)),
has: function has(value) {
return this.data.indexOf(value) !== -1;
},
add: function add(value) {
var hasProxy = false;
if (typeof value === 'object' && value !== null) {
hasProxy = this.data.indexOf(valtio.proxy(value)) !== -1;
}
}
return obj;
}
if (this.data.indexOf(value) === -1 && !hasProxy) {
this.data.push(value);
}
var proxySet = function proxySet(initialValues) {
var _Symbol$toStringTag, _proxy, _mutatorMap;
return this;
},
delete: function _delete(value) {
var index = this.data.indexOf(value);
if (initialValues === void 0) {
initialValues = [];
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear: function clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
forEach: function forEach(cb) {
var _this = this;
this.data.forEach(function (value) {
cb(value, value, _this);
});
}
}, _Symbol$toStringTag = Symbol.toStringTag, _mutatorMap = {}, _mutatorMap[_Symbol$toStringTag] = _mutatorMap[_Symbol$toStringTag] || {}, _mutatorMap[_Symbol$toStringTag].get = function () {
return 'Set';
}, _proxy.toJSON = function toJSON() {
return {};
}, _proxy[Symbol.iterator] = function () {
return this.data[Symbol.iterator]();
}, _proxy.values = function values() {
return this.data.values();
}, _proxy.keys = function keys() {
return this.data.values();
}, _proxy.entries = function entries() {
return new Set(this.data).entries();
}, _defineEnumerableProperties(_proxy, _mutatorMap), _proxy));
Object.defineProperties(set, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(set);
return set;
};
var set = valtio.proxy((_proxy = {
data: Array.from(new Set(initialValues)),
has: function has(value) {
return this.data.indexOf(value) !== -1;
},
add: function add(value) {
var hasProxy = false;
var proxyMap = function proxyMap(entries) {
var _Symbol$toStringTag, _proxy, _mutatorMap;
if (typeof value === 'object' && value !== null) {
hasProxy = this.data.indexOf(valtio.proxy(value)) !== -1;
}
var map = valtio.proxy((_proxy = {
data: Array.from(entries || []),
has: function has(key) {
return this.data.some(function (p) {
return p[0] === key;
});
},
set: function set(key, value) {
var record = this.data.find(function (p) {
return p[0] === key;
});
if (this.data.indexOf(value) === -1 && !hasProxy) {
this.data.push(value);
}
if (record) {
record[1] = value;
} else {
this.data.push([key, value]);
}
return this;
},
delete: function _delete(value) {
var index = this.data.indexOf(value);
return this;
},
get: function get(key) {
var _this$data$find;
if (index === -1) {
return false;
}
return (_this$data$find = this.data.find(function (p) {
return p[0] === key;
})) == null ? void 0 : _this$data$find[1];
},
delete: function _delete(key) {
var index = this.data.findIndex(function (p) {
return p[0] === key;
});
this.data.splice(index, 1);
return true;
},
clear: function clear() {
this.data.splice(0);
},
if (index === -1) {
return false;
}
get size() {
return this.data.length;
},
this.data.splice(index, 1);
return true;
},
clear: function clear() {
this.data.splice(0);
},
forEach: function forEach(cb) {
var _this = this;
get size() {
return this.data.length;
},
this.data.forEach(function (value) {
cb(value, value, _this);
});
}
}, _Symbol$toStringTag = Symbol.toStringTag, _mutatorMap = {}, _mutatorMap[_Symbol$toStringTag] = _mutatorMap[_Symbol$toStringTag] || {}, _mutatorMap[_Symbol$toStringTag].get = function () {
return 'Set';
}, _proxy.toJSON = function toJSON() {
toJSON: function toJSON() {
return {};
}, _proxy[Symbol.iterator] = function () {
return this.data[Symbol.iterator]();
}, _proxy.values = function values() {
return this.data.values();
}, _proxy.keys = function keys() {
return this.data.values();
}, _proxy.entries = function entries() {
return new Set(this.data).entries();
}, _defineEnumerableProperties(_proxy, _mutatorMap), _proxy));
Object.defineProperties(set, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(set);
return set;
};
},
forEach: function forEach(cb) {
var _this = this;
exports.addComputed = addComputed_DEPRECATED;
exports.derive = derive;
exports.devtools = devtools;
exports.proxySet = proxySet;
exports.proxyWithComputed = proxyWithComputed;
exports.proxyWithHistory = proxyWithHistory;
exports.subscribeKey = subscribeKey;
exports.underive = underive;
exports.unstable_getDeriveSubscriptions = unstable_getDeriveSubscriptions;
exports.watch = watch;
this.data.forEach(function (p) {
cb(p[1], p[0], _this);
});
},
keys: function keys() {
return this.data.map(function (p) {
return p[0];
}).values();
},
values: function values() {
return this.data.map(function (p) {
return p[1];
}).values();
},
entries: function entries() {
return new Map(this.data).entries();
}
}, _Symbol$toStringTag = Symbol.toStringTag, _mutatorMap = {}, _mutatorMap[_Symbol$toStringTag] = _mutatorMap[_Symbol$toStringTag] || {}, _mutatorMap[_Symbol$toStringTag].get = function () {
return 'Map';
}, _proxy[Symbol.iterator] = function () {
return this.entries();
}, _defineEnumerableProperties(_proxy, _mutatorMap), _proxy));
Object.defineProperties(map, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(map);
return map;
};
Object.defineProperty(exports, '__esModule', { value: true });
exports.addComputed = addComputed_DEPRECATED;
exports.derive = derive;
exports.devtools = devtools;
exports.proxyMap = proxyMap;
exports.proxySet = proxySet;
exports.proxyWithComputed = proxyWithComputed;
exports.proxyWithHistory = proxyWithHistory;
exports.subscribeKey = subscribeKey;
exports.underive = underive;
exports.unstable_getDeriveSubscriptions = unstable_getDeriveSubscriptions;
exports.watch = watch;
Object.defineProperty(exports, '__esModule', { value: true });
}));
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('proxy-compare')) :
typeof define === 'function' && define.amd ? define(['exports', 'proxy-compare'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.proxyCompare));
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('proxy-compare')) :
typeof define === 'function' && define.amd ? define(['exports', 'proxy-compare'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.valtio = {}, global.proxyCompare));
})(this, (function (exports, proxyCompare) { 'use strict';
var VERSION = Symbol();
var LISTENERS = Symbol();
var SNAPSHOT = Symbol();
var HANDLER = Symbol();
var PROMISE_RESULT = Symbol();
var PROMISE_ERROR = Symbol();
var refSet = new WeakSet();
var ref = function ref(o) {
refSet.add(o);
return o;
};
var VERSION = Symbol();
var LISTENERS = Symbol();
var SNAPSHOT = Symbol();
var HANDLER = Symbol();
var PROMISE_RESULT = Symbol();
var PROMISE_ERROR = Symbol();
var refSet = new WeakSet();
var ref = function ref(o) {
refSet.add(o);
return o;
};
var isObject = function isObject(x) {
return typeof x === 'object' && x !== null;
};
var isObject = function isObject(x) {
return typeof x === 'object' && x !== null;
};
var canProxy = function canProxy(x) {
return isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer);
};
var canProxy = function canProxy(x) {
return isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer);
};
var proxyCache = new WeakMap();
var globalVersion = 1;
var snapshotCache = new WeakMap();
var proxy = function proxy(initialObject) {
if (initialObject === void 0) {
initialObject = {};
}
var proxyCache = new WeakMap();
var globalVersion = 1;
var snapshotCache = new WeakMap();
var proxy = function proxy(initialObject) {
if (initialObject === void 0) {
initialObject = {};
}
if (!isObject(initialObject)) {
throw new Error('object required');
}
if (!isObject(initialObject)) {
throw new Error('object required');
}
var found = proxyCache.get(initialObject);
var found = proxyCache.get(initialObject);
if (found) {
return found;
}
if (found) {
return found;
}
var version = globalVersion;
var listeners = new Set();
var version = globalVersion;
var listeners = new Set();
var notifyUpdate = function notifyUpdate(op, nextVersion) {
if (!nextVersion) {
nextVersion = ++globalVersion;
}
var notifyUpdate = function notifyUpdate(op, nextVersion) {
if (!nextVersion) {
nextVersion = ++globalVersion;
}
if (version !== nextVersion) {
version = nextVersion;
listeners.forEach(function (listener) {
return listener(op, nextVersion);
});
}
};
if (version !== nextVersion) {
version = nextVersion;
listeners.forEach(function (listener) {
return listener(op, nextVersion);
});
}
};
var propListeners = new Map();
var propListeners = new Map();
var getPropListener = function getPropListener(prop) {
var propListener = propListeners.get(prop);
var getPropListener = function getPropListener(prop) {
var propListener = propListeners.get(prop);
if (!propListener) {
propListener = function propListener(op, nextVersion) {
var newOp = [].concat(op);
newOp[1] = [prop].concat(newOp[1]);
notifyUpdate(newOp, nextVersion);
};
if (!propListener) {
propListener = function propListener(op, nextVersion) {
var newOp = [].concat(op);
newOp[1] = [prop].concat(newOp[1]);
notifyUpdate(newOp, nextVersion);
};
propListeners.set(prop, propListener);
}
propListeners.set(prop, propListener);
}
return propListener;
};
return propListener;
};
var popPropListener = function popPropListener(prop) {
var propListener = propListeners.get(prop);
propListeners.delete(prop);
return propListener;
};
var popPropListener = function popPropListener(prop) {
var propListener = propListeners.get(prop);
propListeners.delete(prop);
return propListener;
};
var createSnapshot = function createSnapshot(target, receiver) {
var cache = snapshotCache.get(receiver);
var createSnapshot = function createSnapshot(target, receiver) {
var cache = snapshotCache.get(receiver);
if ((cache == null ? void 0 : cache[0]) === version) {
return cache[1];
}
if ((cache == null ? void 0 : cache[0]) === version) {
return cache[1];
}
var snapshot = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
proxyCompare.markToTrack(snapshot, true);
snapshotCache.set(receiver, [version, snapshot]);
Reflect.ownKeys(target).forEach(function (key) {
var value = Reflect.get(target, key, receiver);
var snapshot = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
proxyCompare.markToTrack(snapshot, true);
snapshotCache.set(receiver, [version, snapshot]);
Reflect.ownKeys(target).forEach(function (key) {
var value = Reflect.get(target, key, receiver);
if (refSet.has(value)) {
proxyCompare.markToTrack(value, false);
snapshot[key] = value;
} else if (value instanceof Promise) {
if (PROMISE_RESULT in value) {
snapshot[key] = value[PROMISE_RESULT];
} else {
var errorOrPromise = value[PROMISE_ERROR] || value;
Object.defineProperty(snapshot, key, {
get: function get() {
if (PROMISE_RESULT in value) {
return value[PROMISE_RESULT];
}
throw errorOrPromise;
if (refSet.has(value)) {
proxyCompare.markToTrack(value, false);
snapshot[key] = value;
} else if (value instanceof Promise) {
if (PROMISE_RESULT in value) {
snapshot[key] = value[PROMISE_RESULT];
} else {
var errorOrPromise = value[PROMISE_ERROR] || value;
Object.defineProperty(snapshot, key, {
get: function get() {
if (PROMISE_RESULT in value) {
return value[PROMISE_RESULT];
}
});
}
} else if (value != null && value[LISTENERS]) {
snapshot[key] = value[SNAPSHOT];
} else {
snapshot[key] = value;
}
});
Object.freeze(snapshot);
return snapshot;
};
var baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
var handler = {
get: function get(target, prop, receiver) {
if (prop === VERSION) {
return version;
throw errorOrPromise;
}
});
}
} else if (value != null && value[LISTENERS]) {
snapshot[key] = value[SNAPSHOT];
} else {
snapshot[key] = value;
}
});
Object.freeze(snapshot);
return snapshot;
};
if (prop === LISTENERS) {
return listeners;
}
var baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
var handler = {
get: function get(target, prop, receiver) {
if (prop === VERSION) {
return version;
}
if (prop === SNAPSHOT) {
return createSnapshot(target, receiver);
}
if (prop === LISTENERS) {
return listeners;
}
if (prop === HANDLER) {
return handler;
}
if (prop === SNAPSHOT) {
return createSnapshot(target, receiver);
}
return Reflect.get(target, prop, receiver);
},
deleteProperty: function deleteProperty(target, prop) {
var prevValue = Reflect.get(target, prop);
var childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (prop === HANDLER) {
return handler;
}
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
return Reflect.get(target, prop, receiver);
},
deleteProperty: function deleteProperty(target, prop) {
var prevValue = Reflect.get(target, prop);
var childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
var deleted = Reflect.deleteProperty(target, prop);
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
if (deleted) {
notifyUpdate(['delete', [prop], prevValue]);
}
var deleted = Reflect.deleteProperty(target, prop);
return deleted;
},
is: Object.is,
canProxy: canProxy,
set: function set(target, prop, value, receiver) {
var _Object$getOwnPropert, _value;
if (deleted) {
notifyUpdate(['delete', [prop], prevValue]);
}
var prevValue = Reflect.get(target, prop, receiver);
return deleted;
},
is: Object.is,
canProxy: canProxy,
set: function set(target, prop, value, receiver) {
var _Object$getOwnPropert, _value;
if (this.is(prevValue, value)) {
return true;
}
var prevValue = Reflect.get(target, prop, receiver);
var childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (this.is(prevValue, value)) {
return true;
}
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
var childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
if (childListeners) {
childListeners.delete(popPropListener(prop));
}
var nextValue;
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
if ((_Object$getOwnPropert = Object.getOwnPropertyDescriptor(target, prop)) != null && _Object$getOwnPropert.set) {
nextValue = value;
} else if (value instanceof Promise) {
nextValue = value.then(function (v) {
nextValue[PROMISE_RESULT] = v;
notifyUpdate(['resolve', [prop], v]);
return v;
}).catch(function (e) {
nextValue[PROMISE_ERROR] = e;
notifyUpdate(['reject', [prop], e]);
});
} else if ((_value = value) != null && _value[LISTENERS]) {
nextValue = value;
nextValue[LISTENERS].add(getPropListener(prop));
} else if (this.canProxy(value)) {
nextValue = proxy(value);
nextValue[LISTENERS].add(getPropListener(prop));
} else {
nextValue = value;
}
var nextValue;
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(['set', [prop], value, prevValue]);
return true;
if ((_Object$getOwnPropert = Object.getOwnPropertyDescriptor(target, prop)) != null && _Object$getOwnPropert.set) {
nextValue = value;
} else if (value instanceof Promise) {
nextValue = value.then(function (v) {
nextValue[PROMISE_RESULT] = v;
notifyUpdate(['resolve', [prop], v]);
return v;
}).catch(function (e) {
nextValue[PROMISE_ERROR] = e;
notifyUpdate(['reject', [prop], e]);
});
} else if ((_value = value) != null && _value[LISTENERS]) {
nextValue = value;
nextValue[LISTENERS].add(getPropListener(prop));
} else if (this.canProxy(value)) {
nextValue = proxy(value);
nextValue[LISTENERS].add(getPropListener(prop));
} else {
nextValue = value;
}
};
var proxyObject = new Proxy(baseObject, handler);
proxyCache.set(initialObject, proxyObject);
Reflect.ownKeys(initialObject).forEach(function (key) {
var desc = Object.getOwnPropertyDescriptor(initialObject, key);
if (desc.get || desc.set) {
Object.defineProperty(baseObject, key, desc);
} else {
proxyObject[key] = initialObject[key];
}
});
return proxyObject;
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(['set', [prop], value, prevValue]);
return true;
}
};
var getVersion = function getVersion(proxyObject) {
return isObject(proxyObject) ? proxyObject[VERSION] : undefined;
};
var subscribe = function subscribe(proxyObject, callback, notifyInSync) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[LISTENERS])) {
console.warn('Please use proxy object');
var proxyObject = new Proxy(baseObject, handler);
proxyCache.set(initialObject, proxyObject);
Reflect.ownKeys(initialObject).forEach(function (key) {
var desc = Object.getOwnPropertyDescriptor(initialObject, key);
if (desc.get || desc.set) {
Object.defineProperty(baseObject, key, desc);
} else {
proxyObject[key] = initialObject[key];
}
});
return proxyObject;
};
var getVersion = function getVersion(proxyObject) {
return isObject(proxyObject) ? proxyObject[VERSION] : undefined;
};
var subscribe = function subscribe(proxyObject, callback, notifyInSync) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[LISTENERS])) {
console.warn('Please use proxy object');
}
var promise;
var ops = [];
var promise;
var ops = [];
var listener = function listener(op) {
ops.push(op);
var listener = function listener(op) {
ops.push(op);
if (notifyInSync) {
if (notifyInSync) {
callback(ops.splice(0));
return;
}
if (!promise) {
promise = Promise.resolve().then(function () {
promise = undefined;
callback(ops.splice(0));
return;
}
if (!promise) {
promise = Promise.resolve().then(function () {
promise = undefined;
callback(ops.splice(0));
});
}
};
proxyObject[LISTENERS].add(listener);
return function () {
proxyObject[LISTENERS].delete(listener);
};
};
var snapshot = function snapshot(proxyObject) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[SNAPSHOT])) {
console.warn('Please use proxy object');
});
}
return proxyObject[SNAPSHOT];
};
var getHandler = function getHandler(proxyObject) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[HANDLER])) {
console.warn('Please use proxy object');
}
return proxyObject[HANDLER];
proxyObject[LISTENERS].add(listener);
return function () {
proxyObject[LISTENERS].delete(listener);
};
};
var snapshot = function snapshot(proxyObject) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[SNAPSHOT])) {
console.warn('Please use proxy object');
}
exports.getHandler = getHandler;
exports.getVersion = getVersion;
exports.proxy = proxy;
exports.ref = ref;
exports.snapshot = snapshot;
exports.subscribe = subscribe;
return proxyObject[SNAPSHOT];
};
var getHandler = function getHandler(proxyObject) {
if (typeof process === 'object' && process.env.NODE_ENV !== 'production' && !(proxyObject != null && proxyObject[HANDLER])) {
console.warn('Please use proxy object');
}
Object.defineProperty(exports, '__esModule', { value: true });
return proxyObject[HANDLER];
};
exports.getHandler = getHandler;
exports.getVersion = getVersion;
exports.proxy = proxy;
exports.ref = ref;
exports.snapshot = snapshot;
exports.subscribe = subscribe;
Object.defineProperty(exports, '__esModule', { value: true });
}));

@@ -9,1 +9,2 @@ export { subscribeKey } from './utils/subscribeKey';

export { proxySet } from './utils/proxySet';
export { proxyMap } from './utils/proxyMap';

@@ -184,2 +184,24 @@ 'use strict';

var unstable_getDeriveSubscriptions = getSubscriptions;
var pendingCountMap = new WeakMap();
var markPending = function markPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
pendingCountMap.set(proxyObject, count + 1);
};
var unmarkPending = function unmarkPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
if (count > 1) {
pendingCountMap.set(proxyObject, count - 1);
} else {
pendingCountMap.delete(proxyObject);
}
};
var isPending = function isPending(proxyObject) {
var count = pendingCountMap.get(proxyObject) || 0;
return count > 0;
};
var derive = function derive(derivedFns, options) {

@@ -193,8 +215,12 @@ var proxyObject = (options == null ? void 0 : options.proxy) || vanilla.proxy({});

if (subscription) {
subscription[0].set(key, callback);
} else {
var unsubscribe = vanilla.subscribe(p, function (ops) {
var _subscriptions$get;
if (!subscription) {
var notify = function notify() {
return subscription[0].forEach(function (cb) {
return cb();
});
};
var promise;
var _unsubscribe = vanilla.subscribe(p, function (ops) {
if (p === proxyObject && ops.every(function (op) {

@@ -206,8 +232,25 @@ return op[1].length === 1 && op[1][0] in derivedFns;

(_subscriptions$get = subscriptions.get(p)) == null ? void 0 : _subscriptions$get[0].forEach(function (cb) {
cb();
});
}, notifyInSync);
subscriptions.set(p, [new Map([[key, callback]]), unsubscribe]);
if (promise) {
return;
}
markPending(p);
if (notifyInSync) {
unmarkPending(p);
notify();
} else {
promise = Promise.resolve().then(function () {
promise = undefined;
unmarkPending(p);
notify();
});
}
}, true);
subscription = [new Map(), _unsubscribe];
subscriptions.set(p, subscription);
}
subscription[0].set(key, callback);
};

@@ -219,8 +262,10 @@

if (subscription) {
var callbackMap = subscription[0],
unsubscribe = subscription[1];
callbackMap.delete(key);
var _callbackMap = subscription[0],
_unsubscribe2 = subscription[1];
if (!callbackMap.size) {
unsubscribe();
_callbackMap.delete(key);
if (!_callbackMap.size) {
_unsubscribe2();
subscriptions.delete(p);

@@ -241,5 +286,12 @@ }

if (lastDependencies) {
if (Array.from(lastDependencies).every(function (_ref) {
var p = _ref[0],
n = _ref[1];
if (Array.from(lastDependencies).some(function (_ref) {
var p = _ref[0];
return isPending(p);
})) {
return;
}
if (Array.from(lastDependencies).every(function (_ref2) {
var p = _ref2[0],
n = _ref2[1];
return vanilla.getVersion(p) === n;

@@ -260,3 +312,3 @@ })) {

var subscribe = function subscribe() {
var subscribeToDependencies = function subscribeToDependencies() {
var _lastDependencies2;

@@ -280,5 +332,5 @@

if (value instanceof Promise) {
value.finally(subscribe);
value.finally(subscribeToDependencies);
} else {
subscribe();
subscribeToDependencies();
}

@@ -296,5 +348,5 @@

var keysToDelete = options != null && options.delete ? new Set() : null;
subscriptions.forEach(function (_ref2, p) {
var callbackMap = _ref2[0],
unsubscribe = _ref2[1];
subscriptions.forEach(function (_ref3, p) {
var callbackMap = _ref3[0],
unsubscribe = _ref3[1];

@@ -474,6 +526,2 @@ if (options != null && options.keys) {

if (initialValues === void 0) {
initialValues = [];
}
var set = valtio.proxy((_proxy = {

@@ -550,5 +598,99 @@ data: Array.from(new Set(initialValues)),

var proxyMap = function proxyMap(entries) {
var _Symbol$toStringTag, _proxy, _mutatorMap;
var map = valtio.proxy((_proxy = {
data: Array.from(entries || []),
has: function has(key) {
return this.data.some(function (p) {
return p[0] === key;
});
},
set: function set(key, value) {
var record = this.data.find(function (p) {
return p[0] === key;
});
if (record) {
record[1] = value;
} else {
this.data.push([key, value]);
}
return this;
},
get: function get(key) {
var _this$data$find;
return (_this$data$find = this.data.find(function (p) {
return p[0] === key;
})) == null ? void 0 : _this$data$find[1];
},
delete: function _delete(key) {
var index = this.data.findIndex(function (p) {
return p[0] === key;
});
if (index === -1) {
return false;
}
this.data.splice(index, 1);
return true;
},
clear: function clear() {
this.data.splice(0);
},
get size() {
return this.data.length;
},
toJSON: function toJSON() {
return {};
},
forEach: function forEach(cb) {
var _this = this;
this.data.forEach(function (p) {
cb(p[1], p[0], _this);
});
},
keys: function keys() {
return this.data.map(function (p) {
return p[0];
}).values();
},
values: function values() {
return this.data.map(function (p) {
return p[1];
}).values();
},
entries: function entries() {
return new Map(this.data).entries();
}
}, _Symbol$toStringTag = Symbol.toStringTag, _mutatorMap = {}, _mutatorMap[_Symbol$toStringTag] = _mutatorMap[_Symbol$toStringTag] || {}, _mutatorMap[_Symbol$toStringTag].get = function () {
return 'Map';
}, _proxy[Symbol.iterator] = function () {
return this.entries();
}, _defineEnumerableProperties(_proxy, _mutatorMap), _proxy));
Object.defineProperties(map, {
data: {
enumerable: false
},
size: {
enumerable: false
},
toJSON: {
enumerable: false
}
});
Object.seal(map);
return map;
};
exports.addComputed = addComputed_DEPRECATED;
exports.derive = derive;
exports.devtools = devtools;
exports.proxyMap = proxyMap;
exports.proxySet = proxySet;

@@ -555,0 +697,0 @@ exports.proxyWithComputed = proxyWithComputed;

declare type DeriveGet = <T extends object>(proxyObject: T) => T;
declare type Subscriptions<U extends object> = Map<object, [
declare type Subscription<U extends object> = [
callbackMap: Map<keyof U, () => void>,
unsubscribe: () => void
]>;
];
declare type Subscriptions<U extends object> = Map<object, Subscription<U>>;
export declare const unstable_getDeriveSubscriptions: (proxyObject: object) => Subscriptions<object>;

@@ -7,0 +8,0 @@ /**

@@ -16,2 +16,2 @@ /**

*/
export declare const proxySet: <T>(initialValues?: Iterable<T> | null) => Set<T>;
export declare const proxySet: <T>(initialValues?: Iterable<T> | null | undefined) => Set<T>;

@@ -1,2 +0,247 @@

import type { DeepResolveType } from '../vanilla';
declare class SnapshotWrapper<T extends object> {
fn(p: T): T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_1 in keyof T]: T[K_1] extends (...args: any[]) => any ? T[K_1] : T[K_1] extends {
$$valtioRef: true;
} ? T[K_1] : T[K_1] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_2 in keyof T[K_1]]: T[K_1][K_2] extends (...args: any[]) => any ? T[K_1][K_2] : T[K_1][K_2] extends {
$$valtioRef: true;
} ? T[K_1][K_2] : T[K_1][K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_3 in keyof T[K_1][K_2]]: T[K_1][K_2][K_3] extends (...args: any[]) => any ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3] : T[K_1][K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_4 in keyof T[K_1][K_2][K_3]]: T[K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4] : T[K_1][K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_5 in keyof T[K_1][K_2][K_3][K_4]]: T[K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5] : T[K_1][K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_6 in keyof T[K_1][K_2][K_3][K_4][K_5]]: T[K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6] : T[K_1][K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_7 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_8 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_9 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_10 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K in keyof V]: any; } : { readonly [K_11 in keyof T[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: any; }; }; }; }; }; }; }; }; }; }; };
}
declare type Snapshot<T extends object> = ReturnType<SnapshotWrapper<T>['fn']>;
/**

@@ -27,4 +272,489 @@ * proxyWithComputed

export declare const proxyWithComputed: <T extends object, U extends object>(initialObject: T, computedFns: { [K in keyof U]: {
get: (snap: DeepResolveType<T>) => U[K];
get: (snap: T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_2 in keyof T]: T[K_2] extends (...args: any[]) => any ? T[K_2] : T[K_2] extends {
$$valtioRef: true;
} ? T[K_2] : T[K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_3 in keyof T[K_2]]: T[K_2][K_3] extends (...args: any[]) => any ? T[K_2][K_3] : T[K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_2][K_3] : T[K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_4 in keyof T[K_2][K_3]]: T[K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_5 in keyof T[K_2][K_3][K_4]]: T[K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_6 in keyof T[K_2][K_3][K_4][K_5]]: T[K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_7 in keyof T[K_2][K_3][K_4][K_5][K_6]]: T[K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_8 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_9 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_10 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_11 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_12 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11]]: any; }; }; }; }; }; }; }; }; }; }; }) => U[K];
set?: (state: T, newValue: U[K]) => void;
} | ((snap: DeepResolveType<T>) => U[K]); }) => T & U;
} | ((snap: T extends (...args: any[]) => any ? T : T extends {
$$valtioRef: true;
} ? T : T extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_2 in keyof T]: T[K_2] extends (...args: any[]) => any ? T[K_2] : T[K_2] extends {
$$valtioRef: true;
} ? T[K_2] : T[K_2] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_3 in keyof T[K_2]]: T[K_2][K_3] extends (...args: any[]) => any ? T[K_2][K_3] : T[K_2][K_3] extends {
$$valtioRef: true;
} ? T[K_2][K_3] : T[K_2][K_3] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_4 in keyof T[K_2][K_3]]: T[K_2][K_3][K_4] extends (...args: any[]) => any ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4] : T[K_2][K_3][K_4] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_5 in keyof T[K_2][K_3][K_4]]: T[K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5] : T[K_2][K_3][K_4][K_5] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_6 in keyof T[K_2][K_3][K_4][K_5]]: T[K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6] : T[K_2][K_3][K_4][K_5][K_6] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_7 in keyof T[K_2][K_3][K_4][K_5][K_6]]: T[K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7] : T[K_2][K_3][K_4][K_5][K_6][K_7] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_8 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_9 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_10 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_11 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]]: T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends (...args: any[]) => any ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends {
$$valtioRef: true;
} ? T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] : T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11] extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? V extends (...args: any[]) => any ? V : V extends {
$$valtioRef: true;
} ? V : V extends Promise<infer V> ? any : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_1 in keyof V]: any; } : { readonly [K_12 in keyof T[K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10][K_11]]: any; }; }; }; }; }; }; }; }; }; }; }) => U[K]); }) => T & U;
export {};

@@ -1,3 +0,4 @@

declare const enum AsRef {
}
declare type AsRef = {
$$valtioRef: true;
};
export declare const ref: <T extends object>(o: T) => T & AsRef;

@@ -9,7 +10,14 @@ declare type Path = (string | symbol)[];

export declare const subscribe: <T extends object>(proxyObject: T, callback: (ops: Op[]) => void, notifyInSync?: boolean | undefined) => () => void;
/**
* @deprecated this will be removed in next versions
*/
export declare type DeepResolveType<T> = T extends (...args: any[]) => any ? T : T extends AsRef ? T : T extends Promise<infer V> ? DeepResolveType<V> : T extends object ? {
readonly [K in keyof T]: DeepResolveType<T[K]>;
} : T;
export declare const snapshot: <T extends object>(proxyObject: T) => DeepResolveType<T>;
declare type AnyFunction = (...args: any[]) => any;
declare type Snapshot<T> = T extends AnyFunction ? T : T extends AsRef ? T : T extends Promise<infer V> ? Snapshot<V> : {
readonly [K in keyof T]: Snapshot<T[K]>;
};
export declare const snapshot: <T extends object>(proxyObject: T) => Snapshot<T>;
export declare const getHandler: <T extends object>(proxyObject: T) => any;
export {};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc