BCMS Events
BCMS Events are JavaScript functions that get triggered by events inside BCMS. They allow you to run some custom code when a specific event happens.
Creating an event handler
To create an event handler, create a file inside src/events
, for example, test.ts
.
To keep is simple, this event will only log data which it receives:
src/events/test.ts
import { createBcmsEvent } from '@becomes/cms-backend/src/event';
import {
BCMSEventConfigMethod,
BCMSEventConfigScope,
} from '@becomes/cms-backend/src/types';
export default createBcmsEvent(async () => {
return {
config: {
scope: BCMSEventConfigScope.ENTRY,
method: BCMSEventConfigMethod.ADD,
},
async handler(data) {
console.log(data);
},
};
});
The event handler you created will trigger every time a new Entry is added to the database.
Triggering an event
Only Functions, Jobs, and Plugins can trigger internal events. Events are triggered using the Event Manager. A few examples:
// Trigger Entry Added event
await BCMSEventManager.emit(
BCMSEventConfigScope.ENTRY,
BCMSEventConfigMethod.ADD,
{
// Entry data
}
);
// Trigger Template Updated event
await BCMSEventManager.emit(
BCMSEventConfigScope.TEMPLATE,
BCMSEventConfigMethod.UPDATE,
{
// Template data
}
);
// Trigger custom event
await BCMSEventManager.emit(
'MY_CUSTOM_SCOPE',
'MY_CUSTOM_METHOD',
{
custom: 'data',
}
);
Deploying an event
When you are ready to deploy your event to the CMS, follow these steps:
- Inside the project, run
npm run bundle
. This will compile TypeScript files and bootstrap the project. - Then, to deploy your event, run
npm run deploy
.