async setup()

in esbuild.base.ts [26:67]


          async setup(build) {
            const { config } = resolveTSConfig({});
            const willBundleDeclarations = false;
            const compilerOptions = getCompilerOptions({
              tsconfig: config,
              pluginOptions: { tsconfig: { outdir } },
              esbuildOptions: build.initialOptions,
              willBundleDeclarations,
            });
            const compilerHost = compilerOptions.incremental
              ? ts.createIncrementalCompilerHost(compilerOptions)
              : ts.createCompilerHost(compilerOptions);

            const inputFiles = [];

            build.onLoad({ filter: /(\.tsx|\.ts)$/ }, async (args) => {
              inputFiles.push(args.path);
              compilerHost.getSourceFile(
                args.path,
                compilerOptions.target ?? ts.ScriptTarget.Latest,
                true,
              );
            });
            build.onEnd(() => {
              let compilerProgram;

              if (compilerOptions.incremental) {
                compilerProgram = ts.createIncrementalProgram({
                  options: compilerOptions,
                  host: compilerHost,
                  rootNames: inputFiles,
                });
              } else {
                compilerProgram = ts.createProgram(
                  inputFiles,
                  compilerOptions,
                  compilerHost,
                );
              }
              compilerProgram.emit();
            });
          },