Initial commit: Example Plugin 2
This commit is contained in:
89
index.js
Normal file
89
index.js
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* Example Plugin 2 - Another demonstration plugin
|
||||
*
|
||||
* This plugin shows different patterns:
|
||||
* - Data filtering
|
||||
* - Configuration usage
|
||||
* - Multiple hook patterns
|
||||
*/
|
||||
|
||||
let taskInterval = null;
|
||||
|
||||
/**
|
||||
* Called when the plugin is loaded
|
||||
* @param {Object} context - Plugin context API
|
||||
*/
|
||||
export async function activate(context) {
|
||||
context.log('Example Plugin 2 activated!');
|
||||
|
||||
const enabled = context.getConfig('enabled');
|
||||
const interval = context.getConfig('interval');
|
||||
|
||||
context.log(`Configuration: enabled=${enabled}, interval=${interval}ms`);
|
||||
|
||||
// Register a data filtering hook
|
||||
context.registerHook('filter-data', async (data) => {
|
||||
context.log('Filtering data...');
|
||||
// Filter out any items with null values
|
||||
return data.filter(item => item !== null && item !== undefined);
|
||||
});
|
||||
|
||||
// Register a validation hook
|
||||
context.registerHook('validate-input', async (input) => {
|
||||
context.log('Validating input:', input);
|
||||
if (!input || typeof input !== 'string') {
|
||||
throw new Error('Invalid input: must be a non-empty string');
|
||||
}
|
||||
return { valid: true, input };
|
||||
});
|
||||
|
||||
// Register a transform hook
|
||||
context.registerHook('transform-text', async (text) => {
|
||||
context.log('Transforming text...');
|
||||
return text.toUpperCase();
|
||||
});
|
||||
|
||||
// Start periodic task if enabled
|
||||
if (enabled) {
|
||||
taskInterval = setInterval(() => {
|
||||
context.log('Periodic check running...');
|
||||
}, interval);
|
||||
}
|
||||
|
||||
// Listen for other plugins loading
|
||||
context.on('plugin-loaded', (plugin) => {
|
||||
if (plugin.id !== 'example-plugin-2') {
|
||||
context.log(`Detected plugin: ${plugin.name}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the plugin is unloaded
|
||||
* @param {Object} context - Plugin context API
|
||||
*/
|
||||
export async function deactivate(context) {
|
||||
context.log('Example Plugin 2 deactivating...');
|
||||
|
||||
if (taskInterval) {
|
||||
clearInterval(taskInterval);
|
||||
taskInterval = null;
|
||||
}
|
||||
|
||||
context.log('Example Plugin 2 deactivated!');
|
||||
}
|
||||
|
||||
/**
|
||||
* Process data array
|
||||
*/
|
||||
export function processData(data) {
|
||||
console.log('Processing data array:', data);
|
||||
return data.map(item => ({ ...item, processed: true }));
|
||||
}
|
||||
|
||||
/**
|
||||
* Format output
|
||||
*/
|
||||
export function formatOutput(data) {
|
||||
return JSON.stringify(data, null, 2);
|
||||
}
|
||||
Reference in New Issue
Block a user