@warp-works/warpjs-plugin
v2.0.1
Published
WarpJS base plugin
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",
}nameName of the plugin. This is distinct from the plugin itself as it could be used multiple times.moduleNameis the npm package that will berequire().pathis the mounting path of the application on the expressJS server.typeis optional. You can define your own types. See a list of RESERVED_PLUGIN_TYPES that are affectingStudioandContent.authis optional. You can define if auth is needed. The value can be"admin","content",true, orfalse. Default value isfalse. Whenadminorcontentis used, the user must be logged in, and in that group. A user inadminis 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.
baseUrlis the base path under which the application will run.staticUrlis 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.
