{
  "version": 3,
  "sources": ["../../../src/plugins/write/plugin.ts"],
  "sourceRoot": "file://",
  "sourcesContent": ["/**\n * @file Plugins - write\n * @module mkbuild/plugins/write/plugin\n */\n\nimport fsa from '#src/utils/fs'\nimport pathe from '@flex-development/pathe'\nimport type { BuildOptions, BuildResult, Plugin, PluginBuild } from 'esbuild'\nimport type Options from './options'\n\n/**\n * Plugin-specific build options.\n *\n * @internal\n */\ntype SpecificOptions = { write: false }\n\n/**\n * Returns a output file writer plugin.\n *\n * @param {Options} [options] - Plugin options\n * @return {Plugin} Output file writer plugin\n */\nconst plugin = ({\n  filter = /.+/,\n  mkdir = fsa.mkdir,\n  writeFile = fsa.writeFile\n}: Options = {}): Plugin => {\n  /**\n   * Writes output files.\n   *\n   * [1]: https://esbuild.github.io/plugins\n   * [2]: https://esbuild.github.io/api/#build-api\n   *\n   * @param {PluginBuild} build - [esbuild plugin api][1]\n   * @param {BuildOptions} build.initialOptions - [esbuild build api][2] options\n   * @param {PluginBuild['onEnd']} build.onEnd - Build end callback\n   * @return {void} Nothing when complete\n   * @throws {Error}\n   */\n  const setup = ({ initialOptions, onEnd }: PluginBuild): void => {\n    // esbuild write must be disabled to access result.outputFiles\n    if (initialOptions.write) throw new Error('write must be disabled')\n\n    // write output files\n    return void onEnd(\n      async (result: BuildResult<SpecificOptions>): Promise<void> => {\n        for (const output of result.outputFiles) {\n          if (filter.test(output.path)) {\n            await mkdir(pathe.dirname(output.path), { recursive: true })\n            await writeFile(output.path, output.text, 'utf8')\n          }\n        }\n      }\n    )\n  }\n\n  return { name: 'write', setup }\n}\n\nexport { plugin as default, type Options }\n"],
  "mappings": ";;AAKA,OAAO,SAAS;AAChB,OAAO,WAAW;AAiBlB,MAAM,SAAS,wBAAC;AAAA,EACd,SAAS;AAAA,EACT,QAAQ,IAAI;AAAA,EACZ,YAAY,IAAI;AAClB,IAAa,CAAC,OA8BL,EAAE,MAAM,SAAS,OAjBV,wBAAC,EAAE,gBAAgB,MAAM,MAAyB;AAE9D,MAAI,eAAe;AAAO,UAAM,IAAI,MAAM,wBAAwB;AAGlE,SAAO,KAAK;AAAA,IACV,OAAO,WAAwD;AAC7D,iBAAW,UAAU,OAAO;AAC1B,QAAI,OAAO,KAAK,OAAO,IAAI,MACzB,MAAM,MAAM,MAAM,QAAQ,OAAO,IAAI,GAAG,EAAE,WAAW,GAAK,CAAC,GAC3D,MAAM,UAAU,OAAO,MAAM,OAAO,MAAM,MAAM;AAAA,IAGtD;AAAA,EACF;AACF,GAfc,SAiBgB,IAlCjB;",
  "names": []
}
