1.0.4 • Published 1 year ago

proxy-handler-decorators v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

proxy-handler-decorators

Class decorators for proxy handlers.

npm package Build Status Downloads Issues Code Coverage Commitizen Friendly Semantic Release

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']);

Functions

AllowGetTarget

AllowGetTarget<T, SuperClass>(superClass): SuperClass

The decorator to enable getTarget function.

Type parameters

NameType
Textends object
SuperClassextends (...args: any[]) => ProxyHandler<T>

Parameters

NameType
superClassSuperClass

Returns

SuperClass

Defined in

index.ts:194


DefaultToPrimitive

DefaultToPrimitive<T, SuperClass>(superClass): SuperClass

A decorator to add a default implementation of [Symbol.toPrimitive] method to the proxy.

Type parameters

NameType
Textends object
SuperClassextends (...args: any[]) => ProxyHandler<T>

Parameters

NameType
superClassSuperClass

Returns

SuperClass

Defined in

index.ts:114


DefaultToStringTag

DefaultToStringTag<T, SuperClass>(superClass): SuperClass

A decorator to add a default implementation of [Symbol.toStringTag] method to the proxy.

Type parameters

NameType
Textends object
SuperClassextends (...args: any[]) => ProxyHandler<T>

Parameters

NameType
superClassSuperClass

Returns

SuperClass

Defined in

index.ts:150


Mapped

Mapped<T>(mapper): (proxyHandlerConstructor: (...args: any[]) => ProxyHandler<T>) => void

Type parameters

NameType
Textends object

Parameters

NameType
mapper(from: T) => T

Returns

fn

▸ (proxyHandlerConstructor): void

Parameters
NameType
proxyHandlerConstructor(...args: any[]) => ProxyHandler<T>
Returns

void

Defined in

index.ts:212


TargetAsThis

TargetAsThis<T, SuperClass>(superClass): SuperClass

A decorator to bind this to the proxy target for all instance methods on the proxy.

Type parameters

NameType
Textends object
SuperClassextends (...args: any[]) => ProxyHandler<T>

Parameters

NameType
superClassSuperClass

Returns

SuperClass

Defined in

index.ts:78


getTarget

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.

Type parameters

Name
T

Parameters

NameType
maybeProxyT

Returns

T | undefined

Defined in

index.ts:187