.ts
TypeScript
(application/typescript)
// 3rd-party
import { FastifyPluginAsync } from "fastify";
import fp from "fastify-plugin";
import languagesMap from "language-map";
import languageDetect from "language-detect";
// app
import { makeCodeAnalysisService } from "../services/codeAnalysis";

const serviceKey = "codeAnalysisService";
export const codeAnalysisPlugin: FastifyPluginAsync<never> = fp(
  async (server) => {
    const service = makeCodeAnalysisService({
      languageDetect,
      languagesMap,
    });
    server.decorate(serviceKey, {
      getter: () => service,
    });
    server.decorateRequest(serviceKey, {
      getter: () => service,
    });
  }
);