New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dob

Package Overview
Dependencies
Maintainers
1
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dob

Dob is a tool for monitoring object changes. Using [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy).

  • 2.4.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
22
decreased by-58.49%
Maintainers
1
Weekly downloads
 
Created
Source

Dob · CircleCI Status npm version code coverage

Dob is a tool for monitoring object changes. Using Proxy.

Examples

There are some demo on fiddle. Here's the simplest:

import { observable, observe } from "dob"

const obj = observable({ a: 1 })

observe(() => {
    console.log("obj.a has changed to", obj.a)
}) // <· obj.a has changed to 1

obj.a = 2 // <· obj.a has changed to 2

You can enjoy the benefits of proxy, for example obj.a = { b: 5 } is effective.

Use in react

import { Action, observable } from 'dob'
import { Provider, Connect } from 'dob-react'
import { injectFactory, inject } from 'dependency-inject';

@observable
export class UserStore {
    name = 'bob'
}

export class UserAction {
    @inject(UserStore) private UserStore: UserStore;

    @Action setName () {
        this.store.name = 'lucy'
    }
}

@Connect
class App extends React.Component {
    render() {
        return (
            <span onClick={this.props.UserAction.setName}>
                {this.props.store.name}
            </span>
        )
    }
}

const store = injectFactory({
    UserStore,
    UserAction
})

ReactDOM.render(
    <Provider {...store}> <App /> </Provider>
, document.getElementById('react-dom'))

Installation

Dob is available as the dob package on npm. It is also available on a CDN.

npm i dob

Project Examples

Apis

You can read quick start first, then read them:

Combination

Combining dob-react

Quick start

Here is a basic demo, and here is a demo with fractal.

Combining dependency-inject

Here is a basic demo, and here is a demo with fractal and dependency-inject.

Combining react-redux

Here is a basic demo

You can clone this project, and run npm start to see redux todoMVC demo.

Debug in console

import { startDebug, stopDebug, useStrict, event } from 'dob'

// first, must useStrict
useStrict()

// start debug
startDebug()

// you can receive debug info from event
event.on("debug", debugInfo: IDebugInfo => {

})

// end debug
stopDebug()

The debug mode prints the trigger timing and assignment steps for all the @Action functions.

IDebugInfo:

interface IDebugInfo {
  /**
   * uniqueId, you can also receive it from `observe` or `reaction` callback first argument's field `debugId`
   */
  id?: number
  /**
   * action's name
   */
  name?: string
  changeList?: Array<{
    type: string
    callStack: PropertyKey[]
    oldValue?: any
    /**
     * new value
     */
    value?: any
    /**
     * used when type is delete
     */
    deleteKey?: PropertyKey
    customMessage?: any[]
  }>
  /**
   * child actions
   */
  childs?: IDebugInfo[]
}

demo

Inspired

FAQs

Package last updated on 18 Oct 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc