node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

seer

Seer API

This library provides an abstraction around the Window.postMessage API to interact with the Seer extension.

How the communication is done exactly relies on the bridge, that you can checkout in its dedicated directory. The following schema represent the complete data flow:

Install

Simply download the package from the npm registry

yarn add seer

Notes

The extension will declare a __SEER_INITIALIZED__ boolean on the window, that you can use to check if the extension is installed and prevent any useless processing in production or for real-users.

Functions

throttle(key, delay)Boolean

Utility method allowing to throttle a user action based on a key and a minimun delay.

isReady()Boolean

Check for the initialized boolean indicating if Seer is ready.

send(type, payload)

Low-level api leveraging window.postMessage

init()

Initilize window listener. There will be only one for the whole process to prevent too many registrations.

This method will be called automatically if you use the listenFor method.

clean()

Clean listener. Can be useful in case you want to unregister upcoming events or liberate memory.

listenFor(key, cb)

Create a listener that will be called upon events of the given key.

removeListener(cb)

Remove an identity listener callback

list(key, data)

Creates a new indexed list. It works by index to get O(1) accessing and performance.

listItem(key, itemKey, data)

Creates an element in the indexed list, based on the itemKey.

updateItem(key, itemKey, path, data)

Update an item property, can be deeply nested.

multiUpdate(key, itemKey, array)

Similar to updateItem, but allows to pass an array with {path,data} pairs for multiple update of the same item without having to send multiple messages.

deleteItem(key, itemKey)

Remove a specific item in a specific tab.

addLog(key, itemKey, msg)

Will create a log message to an item, that will be displayde with the current time.

throttle(key, delay) ⇒ Boolean

Utility method allowing to throttle a user action based on a key and a minimun delay.

Kind: global function

Param Type Description
key String A unique key
delay Number The minimal delay to throttle

isReady() ⇒ Boolean

Check for the initialized boolean indicating if Seer is ready.

Kind: global function

send(type, payload)

Low-level api leveraging window.postMessage

Kind: global function

Param Type Description
type String The action type
payload Any The action payload

init()

Initilize window listener. There will be only one for the whole process to prevent too many registrations.

This method will be called automatically if you use the listenFor method.

Kind: global function

clean()

Clean listener. Can be useful in case you want to unregister upcoming events or liberate memory.

Kind: global function

listenFor(key, cb)

Create a listener that will be called upon events of the given key.

Kind: global function

Param Type Description
key String The unique tab key
cb function A callback that will receive the message payload

removeListener(cb)

Remove an identity listener callback

Kind: global function

Param Type Description
cb function The callback to unbind

list(key, data)

Creates a new indexed list. It works by index to get O(1) accessing and performance.

Kind: global function

Param Type Description
key String The key of the tab
data Object The indexed object

listItem(key, itemKey, data)

Creates an element in the indexed list, based on the itemKey.

Kind: global function

Param Type Description
key String The key of the tab
itemKey String The key of the item
data Any The value of the item

updateItem(key, itemKey, path, data)

Update an item property, can be deeply nested.

Kind: global function

Param Type Description
key String The key of the tab
itemKey String The key of the item
path String The path of the variable you want to update
data Object The new value

multiUpdate(key, itemKey, array)

Similar to updateItem, but allows to pass an array with {path,data} pairs for multiple update of the same item without having to send multiple messages.

Kind: global function

Param Type Description
key String The key of the tab
itemKey String The key of the item
array Array The array of updates
array.path String The path for this update
array.data Object The value of this update

deleteItem(key, itemKey)

Remove a specific item in a specific tab.

Kind: global function

Param Type Description
key String They key of the tab
itemKey String The key of the item

addLog(key, itemKey, msg)

Will create a log message to an item, that will be displayde with the current time.

Kind: global function

Param Type Description
key String The key of the tab
itemKey String The key of the item
msg String The message to display