js-accessor
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

js-accessor

Overview

Provides accessors like get, set, assertGet, clone, and toObject for a JS object.

Install

For npm

npm install js-accessor

For yarn

yarn add js-accessor

Usage

import {construct} from 'js-accessor';

interface DataType {
  resourceId: string;
  resourceType: string;
}

const data = construct<DataType>();
const resourceId = data
  .setResourceId('id')
  .setResourceType('data')
  .clone()
  .getResourceId();

API

construct(target, options)

Provides accessors for a target object, see below for accessors provided. Accessors will not be provided if a property with the accessor name already exists, allowing you to specify custom handling for certain properties. E.g. target.getField will not use the accessor flow if getField already exists in target. A known downside is set accessors, where you want to chain setters but can't. If this is a bummer, you can create a PR to address the issue or create an issue and I can look into it.

Parameters

  • target - Optional, target object for accessor functions.
  • options.getter(target, field, originalField, params) - Optional, Function for what a field's value.
    • target - Target object.
    • field - Field whose value is to be returned. It is data in getData.
    • originalField - Field with accessor prefix. It is getData in getData.
    • params - Array of arguments passed to the accessor function. It is ["some param"] in getData("some param").
    • returns unknown - field value.
  • options.setter(target, field, value) - Optional, Function for customizing what a field name is resolved to.
    • target - Target object.
    • field - Field whose value is to be set. It is data in setData.
    • originalField - Field with accessor prefix. It is setData in setData.
    • params - Array of arguments passed to the accessor function. It is ["value", "some param"] in setData("value", "some param").
    • returns void
  • options.cloneResolver(target) - Optional, Function for customizing what a field name is resolved to.
    • target - Target object.
    • params - Array of arguments passed to the accessor function. It is ["some param"] in clone("some param").
    • returns object & WithAccessor<object> - Should return target object cloned with accessors.
  • options.toObjectResolver(target) - Optional, Function for customizing what a field name is resolved to.
    • target - Target object.
    • params - Array of arguments passed to the accessor function. It is ["some param"] in toObject("some param").
    • returns object - Should return cloned target object.

Returns

An object with accessor function described below.

Accessors

  • get - Getter function that retrieves the property indexed by the camel-cased name followed by get. For example, getResourceId() will return resourceId.
  • set - Setter function for storing the property indexed by the camel-cased name followed by set. For example, setResourceId("id") will set resourceId to id, and setResourceId(undefined) will set it to undefined.
  • assertGet - Getter function that retrieves and asserts the property indexed by the camel-cased name followed by assertGet. For example, assertGetResourceId() will return resourceId or throw an error if there is no resourceId.
  • clone - Clone function that returns a copy of the data stored in an accessor's target, with accessor functions targeting the new copied target.
  • toObject - Copy function that returns a JS object copy of the accessor's target.

Package Sidebar

Install

npm i js-accessor

Weekly Downloads

1

Version

1.1.0

License

MIT

Unpacked Size

19.1 kB

Total Files

11

Last publish

Collaborators

  • ywordk