observable-membrane
Version:
A Javascript Membrane implementation using Proxies to observe mutation on an object graph
28 lines (27 loc) • 1.74 kB
TypeScript
import { ProxyPropertyKey } from './shared';
import { ObservableMembrane } from './observable-membrane';
export declare type ShadowTarget = object;
export declare abstract class BaseProxyHandler {
originalTarget: any;
membrane: ObservableMembrane;
constructor(membrane: ObservableMembrane, value: any);
abstract wrapValue(value: any): any;
abstract wrapGetter(originalGet: () => any): () => any;
abstract wrapSetter(originalSet: (v: any) => void): (v: any) => void;
wrapDescriptor(descriptor: PropertyDescriptor): PropertyDescriptor;
copyDescriptorIntoShadowTarget(shadowTarget: ShadowTarget, key: ProxyPropertyKey): void;
lockShadowTarget(shadowTarget: ShadowTarget): void;
abstract set(shadowTarget: ShadowTarget, key: ProxyPropertyKey, value: any): boolean;
abstract deleteProperty(shadowTarget: ShadowTarget, key: ProxyPropertyKey): boolean;
abstract setPrototypeOf(shadowTarget: ShadowTarget, prototype: any): any;
abstract preventExtensions(shadowTarget: ShadowTarget): boolean;
abstract defineProperty(shadowTarget: ShadowTarget, key: ProxyPropertyKey, descriptor: PropertyDescriptor): boolean;
apply(shadowTarget: ShadowTarget, thisArg: any, argArray: any[]): void;
construct(shadowTarget: ShadowTarget, argArray: any, newTarget?: any): any;
get(shadowTarget: ShadowTarget, key: ProxyPropertyKey): any;
has(shadowTarget: ShadowTarget, key: ProxyPropertyKey): boolean;
ownKeys(shadowTarget: ShadowTarget): ProxyPropertyKey[];
isExtensible(shadowTarget: ShadowTarget): boolean;
getPrototypeOf(shadowTarget: ShadowTarget): object;
getOwnPropertyDescriptor(shadowTarget: ShadowTarget, key: ProxyPropertyKey): PropertyDescriptor | undefined;
}