text: const path = require("path");
  
  let entryPlugin = {
    name: "entry",
    setup(build) {
      build.onResolve({ filter: /^(index|server)\.ts$/ }, (args) => {
        return {
          path: args.path,
          namespace: "entry-ns",
        };
      });
      build.onLoad({ filter: /.*/, namespace: "entry-ns" }, (args) => {
        let contents = "";
        if (args.path == "index.ts") {
          contents = `
          import {activate} from "./src/index"
          export {activate}
          `;
        } else if (args.path == "server.ts") {
          contents = `require("./server/index.ts")`;
        } else {
          throw new Error("Bad path");
        }
        return {
          contents,
          resolveDir: __dirname,
        };
      });
    },
  };
  
  async function start() {
    await require("esbuild").build({
      entryPoints: ["index.ts", "server.ts"],
      define: { "process.env.NODE_ENV": JSON.stringify("production") },
      bundle: true,
      platform: "node",
      target: "node12.16",
      mainFields: ["module", "main"],
      minify: false,
      sourcemap: false,
      external: ["coc.nvim"],
      outdir: path.resolve(__dirname, "lib"),
      plugins: [entryPlugin],
    });
  }
  
  start().catch((e) => {
    console.error(e);
  });
  