Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hoodie-plugin-global-share

Package Overview
Dependencies
Maintainers
6
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hoodie-plugin-global-share

Hoodie.js Global Share Plugin

  • 3.0.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
10
increased by400%
Maintainers
6
Weekly downloads
 
Created
Source

Build Status

Hoodie Global Share Plugin

Make selected objects publically accessible via hoodie.global store methods.

Installation

hoodie install global-share

Usage

The Global Share Plugin extends all promises returned by hoodie.store methods with two additional functions: publish and unpublish.

// publish all my todos
hoodie.store.findAll('task').publish()

// unpublish specific note
hoodie.store.find('note', 'abc1234').unpublish()

All objects marked as public are accessible (read-only) via the hoodie.global API

// list all public tasks
hoodie.global.findAll('task').then(showAllPublicTasks)

// update list of tasks on change
hoodie.global.on('task:change', handleTaskChange)

Full Frontend API

add / remove own objects from the public global store

// publish / unpublish can be called on all promises
// return by any hoodie.store method.
promise = hoodie.store.add(type, attributes).publish()
promise = hoodie.store.find(type, id).publish()
promise = hoodie.store.findOrAdd(type, id, attributes).publish()
promise = hoodie.store.findAll(/* type */).publish()
promise = hoodie.store.update(type, id, changedAttributes).publish()
promise = hoodie.store.updateAll(/* type, */ changedAttributes).publish()
promise = hoodie.store.remove(type, id).publish()
promise = hoodie.store.removeAll(/* type */).publish()

// it works the same on scoped stores
promise = hoodie.store(type).find(id).unpublish()
promise = hoodie.store(type, id).update(changedAttributes).publish()

// publish / unpublish return own promises that only resolve
// if the objects were published successfully on the server
promise.then(handlePublishSuccess, handleStoreOrPublishError);

access objects from / listen to changes in the public global store

// hoodie.global has all read-only methods from hoodie.store,
// with the same footprint
promise = hoodie.global.find(type, id)
promise = hoodie.global.findAll(/* type */)

// you can listen on changes as well
hoodie.global.on('add', handleNewObject)
hoodie.global.on('task:change', handleChangedTask)
hoodie.global.on('task:123:remove', handleTask123Removed)

How it works internally

The plugin's worker creates a new database hoodie-plugin-global-share that all objects from all user databases that are marked as public are replicated to.

Calling .publish() on a store method in the frontend adds a $public: true flag to the respecitve objects, that is used by the filtered replications from user databases → hoodie-plugin-global-share database.

Calling .unpublish() uses the hoodie.task API internally to start globalshareunpublish task with object types/IDs to be unpublished. The task gets picked up by the worker which then removes all objects with the passed types/IDs from the hoodie-plugin-global-share database.

Contributing

We love contributors <3 If you need any help getting started, please don't hesitate to get in touch at any time.

For Questions/Bug reports specific to the Global Share Plugin:
https://github.com/hoodiehq/hoodie-plugin-global-share/issues/new

For more generic questions to Hoodie Architecture etc. https://github.com/hoodiehq/discussion/issues/new

If you want to send pull requests, please make sure to add according tests. Run tests with

grunt

Copyright 2012-2014 https://github.com/hoodiehq/ and other contributors
Licensed under the Apache License 2.0.

FAQs

Package last updated on 14 Jul 2014

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