39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
/**
|
||
* Example Plugin 3 - Async Operations & Storage
|
||
*/
|
||
|
||
let dataStore = {};
|
||
let intervalId = null;
|
||
|
||
export async function activate(context) {
|
||
context.log('Example Plugin 3 activated!');
|
||
|
||
// Register async data hook
|
||
context.registerHook('fetch-data', async (key) => {
|
||
context.log(`Fetching data for key: ${key}`);
|
||
await new Promise(resolve => setTimeout(resolve, 100)); // Simulate async operation
|
||
return dataStore[key] || null;
|
||
});
|
||
|
||
// Register data storage hook
|
||
context.registerHook('store-data', async (key, value) => {
|
||
context.log(`Storing data: ${key} = ${value}`);
|
||
dataStore[key] = value;
|
||
return true;
|
||
});
|
||
|
||
// Periodic status report
|
||
intervalId = setInterval(() => {
|
||
const keys = Object.keys(dataStore).length;
|
||
context.log(`Storage status: ${keys} entries`);
|
||
}, 30000);
|
||
}
|
||
|
||
export async function deactivate(context) {
|
||
if (intervalId) {
|
||
clearInterval(intervalId);
|
||
}
|
||
context.log('Example Plugin 3 deactivated!');
|
||
}
|
||
/ |