README
WarpJS-Plugin
Base class for WarpJS plugins.
A plugin allows you to extend the functionality of WarpJS by adding a set of endpoints to the server.
NOTE: If you need to use @warp-works/warpjs-plugins
in your library, make
sure to include it in devDependencies
and peerDependencies
instead of
dependencies
.
Configuration
A plugin configuration to be added to .warp-works-warpjsrc
:
{
"name": "string",
"moduleName": "@some/module",
"path": "/endpoints/base/path",
"type": "optional type",
"auth": "value",
}
name
Name of the plugin. This is distinct from the plugin itself as it could be used multiple times.moduleName
is the npm package that will berequire()
.path
is the mounting path of the application on the expressJS server.type
is optional. You can define your own types. See a list of RESERVED_PLUGIN_TYPES that are affectingStudio
andContent
.auth
is optional. You can define if auth is needed. The value can be"admin"
,"content"
,true
, orfalse
. Default value isfalse
. Whenadmin
orcontent
is used, the user must be logged in, and in that group. A user inadmin
is allowed to accesscontent
. Whentrue
, any logged in user can access it.
When defining your own type, make sure that the same API is exposed, as plugins will expect a given API when interacting with the plugin.
API
.isClass
Poor's man check for if it's class-based plugin or module-based (the old way).
.Error
Get the WarpjsPluginError
.
.TYPES
Gets the different reserved types.
.basename
Getter for the converted basename from package.json
's name
.
.version
Getter for the package.json
's version
.
.versionedName
Getter for a combination of basename and version.
.app
You must implement this method to get the application. This must return a
function that takes (baseUrl, staticUrl)
that will return an initialized
expressJs application.
baseUrl
is the base path under which the application will run.staticUrl
is the static url of the main application.
.pluginIdentifier
Getter to get a unique identifier for the plugin. The default implementation is
to generate the value from package.json
's name
.
{
"name": "@warp-works/warpjs-plugin",
...
}
will return warp-works-warpjs-plugin
.
.requiresAdmin
Getter to see if the plugin is configured with authentication. If so, is the
admin
role required to access this application.
.requiresContent
Getter to see if the plugin is configured with authentication. If so, is the
content
role required to access this application.
.requiresUser
Getter to see if the plugin is configured with authentication. Any truthy value.
.toJSON()
Gets a JSON representation of the plugin.
.baseConstants(packageJson)
Gets basic constants for the given package.json
file.