@kuankuan/deep-proxy
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

@kuankuan/deep-proxy

The @kuankuan/deep-proxy library is a tool that allows you to proxy an object and all its nested objects. It provides a flexible and customizable way to intercept and modify the behavior of object properties and methods.

Installation

You can install @kuankuan/deep-proxy via npm:

npm install @kuankuan/deep-proxy

Usage

To use @kuankuan/deep-proxy, you need to import the getDeepProxy function from the library:

import { getDeepProxy } from '@kuankuan/deep-proxy';

Proxying an Object

To proxy an object, you can simply pass the object and an options object to the getDeepProxy function:

const target = { foo: 'bar' };
const options = {
  // Define your custom handlers here
};

const proxy = getDeepProxy(target, options);

Options

The options object allows you to define custom handlers for various operations on the proxied object. Each handler is a function that will be called when the corresponding operation is performed on the object.

Here are the available handlers:

  • set: Called when a property is set on the object.
  • get: Called when a property is accessed on the object.
  • apply: Called when a function is called on the object.
  • construct: Called when the object is used as a constructor.
  • defineProperty: Called when a property is defined on the object.
  • deleteProperty: Called when a property is deleted from the object.
  • getOwnPropertyDescriptor: Called when the descriptor of a property is accessed.
  • getPrototypeOf: Called when the prototype of the object is accessed.
  • has: Called when the existence of a property is checked.
  • isExtensible: Called when the extensibility of the object is checked.
  • ownKeys: Called when the keys of the object are accessed.
  • preventExtensions: Called when the object is made non-extensible.
  • setPrototypeOf: Called when the prototype of the object is set.

Each handler function receives the following parameters:

  • target: The target object being proxied.
  • keys: An array of keys representing the path to the current property.
  • ...other parameters: Additional parameters specific to each handler.

Example

Here's an example of how you can use @kuankuan/deep-proxy to intercept property access on an object:

const target = { foo: 'bar' };
const options = {
  get(target, keys, p, value, receiverTarget) {
    console.log(`Property ${p.toString()} was accessed.`);
    return value;
  },
};

const proxy = getDeepProxy(target, options);

console.log(proxy.foo); // Output: "Property foo was accessed."

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository.

License

This project is licensed under the MulanPSL-2.0 License. See the LICENSE file for more information.

Readme

Keywords

none

Package Sidebar

Install

npm i @kuankuan/deep-proxy

Weekly Downloads

1

Version

0.1.0

License

MulanPSL-2.0

Unpacked Size

41.8 kB

Total Files

8

Last publish

Collaborators

  • kuankuan