Plugin System
In order to provide better support and allow seamless integration to other libraries (i.e. FIND) we've added Plugin System
.
There are two official @onflow/flow-cadut
plugins currently: @onflow/flow-cadut-plugin-find
and @onflow/flow-cadut-plugin-flowns
Currently, supported plugin types are:
arguments
Development
You can create your own plugins - in most simple case it's an object with id
, type
and resolver
function, which
transforms input and returns value in a specific format.
Below you can find specifications for different plugin types.
Argument Resolver
Argument Resolve plugin is an object with tree fields:
Name | Type | Description |
---|---|---|
id | string | Unique id prefixed with cadut- |
type | string | Plugin type. Should be equal to "argument" |
resolver | function | Function handling argument's transformation |
📣 type
field should take value from PLUGIN_TYPES
enum for compatibility’s sake
resolver(type, value)
Name | Type | Description |
---|---|---|
type | string | String representation of Cadence type |
value | any | Corresponding value |
Returns
resolver
shall return an object with two fields:
Name | Type | Description |
---|---|---|
type | string | String representation of Cadence type |
value | any | Corresponding transformed value |
📣 type
could be changed during transformation
📣 value
should remain unchanged if plugin can't transform the value (for exampl if it doesn't match specific
validation criteria)
Example
_11import { PLUGIN_TYPES } from "@onflow/flow-cadut";_11_11const ArgumentLoggerPlugin = {_11 id: "cadut-argument-logger",_11 type: PLUGIN_TYPES.ARGUMENT,_11 resolver: (type, value) => {_11 // this plugin will output file type and it's value, then return them unchanged_11 log(`${type} - ${JSON.stringify(value)}`);_11 return { type, value };_11 },_11};