rb-core-module

0.31.1 • Public • Published

rb-core-module

The Restboard core module

Node.js CI

Getting started

First of all, you need to install the package in your project:

npm i --save rb-core-module

Now, you can start to define and use your resources:

import { createResource } from 'rb-core-module'

// Create a new resource
const users = createResource({
  name: 'users',
  provider: ..., // The data provider used to query the API
  ...
})

// Resources can then be used to interact with the remote API:
const me = await users.getOne(1)

RbResource

RbResource is a base class used to implement a proxy to interact with a remote API resource.

Options

Name Description Default
name The unique resource name (e.g. users)
provider The data provider used to interact with the API
key The identifier attribute name id
path The resource base path (if different than name) name
label A human-readable description label for the resource capitalized name
displayAttr The attr used as representation of a single resource instance key
stringify A function used to get a human-readable reperesentation of a single resource instance instance => instance[resource.displayAttr]
schema The JSON schema representing the strcuture of resource instances undefined
updateSchema The JSON schema used on update schema
createSchema The JSON schema used on creation schema
defaultParams Default params passed to the data provider when fetching the API (e.g. default filters) {}
isKeyEditable If true, allows editing the key of an instance false
actions A map of actions executable on a single resource instance {}
listeners A list of callbacks to be called when the resource is marked as dirty []
methods A dictionary of extra methods to extend the default resource API {}
ui An object containing UI-specific options and methods. A special formComponent key will be used to assign default form components for creation (ui.createFormComponent) and update (ui.updateFormComponent) if none are specified {}

Methods

Signature Description
getKey(instance) Retrieve the primary key of the given resource instance
stringify(instance) Render a string representantion of the given resource instance
getMany(params) Retrieve a list of resource instances according to the given params
getOne(key, params) Retrieve a single resource instance, identified by key and params
updateOne(key, data, params) Update a single resource instance, identified by key and params, with the given data
updateMany(data, params) Update multiple resource instances according to data and params
deleteOne(key, params) Delete a single resource instance identified by key and params
deleteMany(keys, params) Delete multiple resource instances identified by the keys array and params
getRelation(key, name, opts) Return the related resource identified by name, scoped to the instance identified by key. For opts see Relation options
getActions() Return a dictionary of resource actions, where each action is bound to the resource
setDirty() Set the resource lastUpdate with the current timestamp and notify registered listeners
addListener(callback) Register a new listener callback
removeListener(callback) Unregister a previously registered listener callback
mergeParams(params) Merge given params with resource default ones

Relation options

Name Description Default
notifyParentOnDirty If true mark also the parent resource as dirty true

RbDataProvider

RbDataProvider is a generic interface used by resources to interact with a third-party API using the correct protocol and dialect.

Methods

Signature Description
getMany(resourcePath, params) See RbResource
getOne(resourcePath, key, params) See RbResource
updateOne(resourcePath, key, data, params) See RbResource
updateMany(resourcePath, data, params) See RbResource
deleteOne(resourcePath, key, params) See RbResource
deleteMany(resourcePath, keys, params) See RbResource

RbAuthProvider

RbAuthProvider is a generic interface used to perform authentication and authorization over a third-party API, abstracting the details of underlying strategies.

Methods

Signature Description
login(credentials) Attempt to log the user identified by the given credentials
logout() Terminate the current authenticated session
checkAuth() Check if the current authenticated session is still valid
getIdentity(user) Given a user, retrieve its textual representation
getTenantIdentity(user) Given a user, retireve its tenant identity
can(user, action, subject) Check if the given user can perform action on the subject

Development

# Install dependencies
npm install

# Run tests
npm test

Contribute

If you want, you can also freely donate to fund the project development:

Donate

Have you found a bug?

Please open a new issue on:

https://github.com/restboard/rb-core-module/issues

License

Copyright (c) Emanuele Bertoldi

MIT License

Package Sidebar

Install

npm i rb-core-module

Weekly Downloads

3

Version

0.31.1

License

MIT

Unpacked Size

51.6 kB

Total Files

16

Last publish

Collaborators

  • zuck