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

3.0.2 • Public • Published

NPM version Build Status NPM downloads

Inspectable - Make the output of a class instance in the console meaningful

📖 Documentation

Features

  1. Self-Sufficient. The library has zero dependencies.
  2. Reliable. The library is written in TypeScript and covered by tests.
  3. Modern. The library comes with native ESM support

Installation

Node.js 20.0.0 or newer is required

  • Using npm (recommended)
    npm i inspectable
  • Using Yarn
    yarn add inspectable
  • Using pnpm
    pnpm add inspectable

Example usage

import { inspectable } from 'inspectable';

class APIRequest {
    public method = 'pay';

    private token = 'super-private';
}

const request = new APIRequest();

console.log(request);
// APIRequest { method: 'pay', token: 'super-private' }

inspectable(APIRequest, {
    serialize(instance) {
        return {
            method: instance.method
        };
    }
});

console.log(request);
// APIRequest {
//   method: 'pay'
// }

Decorators

import { Inspectable, Inspect } from 'inspectable';

// INFO: Temp polyfill, more info https://github.com/microsoft/TypeScript/issues/55453#issuecomment-1687496648
(Symbol as any).metadata ??= Symbol("Symbol.metadata");

@Inspectable({/* options */})
class APIRequest {
    @Inspect()
    public method = 'pay';

    private token = 'super-private';

    @Inspect({ nullable: false })
    private signal = null;

    @Inspect({ as: 'firstName' })
    private name = 'john';

    @Inspect({ compute: true })
    public canRequest() {
        return Boolean(this.token);
    }
}

const request = new APIRequest();

console.log(request);
// APIRequest {
//   method: 'pay',
//   firstName: 'john',
//   canRequest: true
// }

Package Sidebar

Install

npm i inspectable

Weekly Downloads

1,849

Version

3.0.2

License

MIT

Unpacked Size

14.3 kB

Total Files

10

Last publish

Collaborators

  • negezor