Class decorators for proxy handlers.
Example
A proxy to transform an array, prepending a '!' character to each element.
import {
getTarget,
AllowGetTarget,
Mapped,
DefaultToPrimitive,
DefaultToStringTag,
TargetAsThis,
} from 'proxy-handler-decorators';
import { DefaultProxyHandler } from 'default-proxy-handler';
let counter = 0;
function addBang(words: string[]): string[] {
counter++;
return words.map((word) => `${word}!`);
}
@AllowGetTarget
@Mapped<string[]>(addBang)
@DefaultToPrimitive
@DefaultToStringTag
@TargetAsThis
class MappedProxyHandler extends DefaultProxyHandler<string[]> {}
const mappedProxyHandler = new MappedProxyHandler();
const proxy = new Proxy(['hello', 'world'], mappedProxyHandler);
expect(counter).toBe(0);
expect(proxy).toEqual(['hello!', 'world!']);
expect(counter).toBeGreaterThan(0);
counter = 0;
expect(proxy).toEqual(['hello!', 'world!']);
expect(counter).toBeGreaterThan(0);
expect(getTarget(proxy)).toEqual(['hello', 'world']);
▸ AllowGetTarget<T
, SuperClass
>(superClass
): SuperClass
The decorator to enable getTarget function.
Name | Type |
---|---|
T |
extends object
|
SuperClass |
extends (...args : any []) => ProxyHandler <T > |
Name | Type |
---|---|
superClass |
SuperClass |
SuperClass
▸ DefaultToPrimitive<T
, SuperClass
>(superClass
): SuperClass
A decorator to add a default implementation of [Symbol.toPrimitive]
method
to the proxy.
Name | Type |
---|---|
T |
extends object
|
SuperClass |
extends (...args : any []) => ProxyHandler <T > |
Name | Type |
---|---|
superClass |
SuperClass |
SuperClass
▸ DefaultToStringTag<T
, SuperClass
>(superClass
): SuperClass
A decorator to add a default implementation of [Symbol.toStringTag]
method
to the proxy.
Name | Type |
---|---|
T |
extends object
|
SuperClass |
extends (...args : any []) => ProxyHandler <T > |
Name | Type |
---|---|
superClass |
SuperClass |
SuperClass
▸ Mapped<T
>(mapper
): (proxyHandlerConstructor
: (...args
: any
[]) => ProxyHandler
<T
>) => void
Name | Type |
---|---|
T |
extends object
|
Name | Type |
---|---|
mapper |
(from : T ) => T
|
fn
▸ (proxyHandlerConstructor
): void
Name | Type |
---|---|
proxyHandlerConstructor |
(...args : any []) => ProxyHandler <T > |
void
▸ TargetAsThis<T
, SuperClass
>(superClass
): SuperClass
A decorator to bind this
to the proxy target for all instance methods on
the proxy.
Name | Type |
---|---|
T |
extends object
|
SuperClass |
extends (...args : any []) => ProxyHandler <T > |
Name | Type |
---|---|
superClass |
SuperClass |
SuperClass
▸ getTarget<T
>(maybeProxy
): T
| undefined
Returns the proxy target if proxy
is a proxy and its proxy handler has the
AllowGetTarget decorator, or undefined
otherwise.
Name |
---|
T |
Name | Type |
---|---|
maybeProxy |
T |
T
| undefined