This project contains shared code that PostHog plugin authors can use.
Code imported from this package runs outside the plugin virtual machine, and can thus use timeouts and other NodeJS features.
import { createBuffer } from '@posthog/plugin-contrib'
import fetch from 'node-fetch'
export function setupPlugin({ global }) {
global.buffer = createBuffer({
limit: 10 * 1024 * 1024, // 10 MB
timeoutSeconds: 10 * 60, // 10 minutes
onFlush: async (batch) => {
const resp = await fetch('https://httpbin.org/post', {
method: 'post',
body: JSON.stringify(batch),
headers: { 'Content-Type': 'application/json' },
})
const json = await resp.json()
if (!json.success) {
// retry somehow?
}
},
})
}
export function teardownPlugin({ global }) {
global.buffer.flush()
}
export function processEvent(event, { config, global }) {
global.buffer.add(event, JSON.stringify(event).length) // add(object, points)
return event
}
It's magic! Just bump up version
in package.json
on the main branch and the new version will be published automatically, on GitHub and on npm. Courtesy of GitHub Actions.