Skip to main content

Plugin Architecture

Amplication's Data Service Generator (DSG) service is responsible for the code generation process. This process is divided into several functions, where each function plays a different part in this process.

To enable intervention in the code generation process, we wrap these functions in a function named pluginWrapper

The pluginWrapper function is invoked with the following arguments:

  • func - the DSG function we want to wrap.
  • event - the name of event we want to capture, and change something in the triggered process.
  • args - the original parameters of the DSG function. There are most likely will be used as the parameters of the event, for the plugin developer to have access to these params and manipulate the returned value of the function.

For the purpose of this architecture overview, remember that every event has before and after property (which is a function), representing the event's lifecycle in which you can intervene (before the emission of the event and after the emission of the event). For more information about before and after event see Before and After Lifecycle Functions

When the pluginWrapper function is invoked, it checks whether the event argument that was passed has a before or after property. If so, it invokes other functions that are responsible for calculating the final behavior when this event is emitted, or in other words the outcome of the function that this event is responsible to execute.

If no part of the event lifecycle was provided or if non of its params were changed, the default behavior will be executed.