UNPKG

@lokalise/fastify-extras

Version:

Opinionated set of fastify plugins, commonly used in Lokalise

56 lines 1.55 kB
import { add, init } from '@amplitude/analytics-node'; import fp from 'fastify-plugin'; import { Amplitude } from './Amplitude.js'; function plugin(fastify, config, next) { const amplitudeInstance = new Amplitude(config.isEnabled); fastify.decorate('amplitude', amplitudeInstance); if (!config.isEnabled) { return next(); } if (!config.apiKey) { return next(Error('Amplitude key not defined')); } init(config.apiKey, config.options) .promise.then(() => { if (config.apiUsageTracking) { enableApiUsageTracking(fastify, amplitudeInstance, config.apiUsageTracking); } if (config.plugins) { for (const e of config.plugins) { add(e); } } next(); }) .catch((err) => { next(err); }); } function enableApiUsageTracking(fastify, amplitude, eventCreationFn) { fastify.addHook('onResponse', (req, res, done) => { const event = eventCreationFn(req, res); if (event) { amplitude.track(event); } return done(); }); } /** * Use this method to register the amplitude plugin on your fastify instance. * * Example of usage: * ```ts * await app.register(amplitudePlugin, { * isEnabled: true, * apiKey: 'dummy-api-key', * options: { * serverZone: 'EU', * }, * }) * ``` */ export const amplitudePlugin = fp(plugin, { fastify: '5.x', name: 'amplitude-plugin', }); //# sourceMappingURL=amplitudePlugin.js.map