{
  "version": 3,
  "sources": ["../../src/config/config.mts"],
  "sourcesContent": ["/*\n * Copyright (c) 2022 Kiyozz.\n *\n * All rights reserved.\n */\n\nimport { BuildOptions } from 'esbuild'\nimport { InlineConfig } from 'vite'\n\nimport { Configurator } from './configurators/base.configurator.mjs'\nimport { EsbuildConfigurator } from './configurators/esbuild.configurator.mjs'\nimport { ViteConfigurator } from './configurators/vite.configurator.mjs'\nimport { Target, TypeConfig } from './enums.mjs'\nimport { PossibleConfiguration } from './types.mjs'\nimport { YamlItem } from './yaml.mjs'\nimport { EsbuildBuilder } from '../builder/esbuild.builder.mjs'\nimport { ViteBuilder } from '../builder/vite.builder.mjs'\nimport { Builder } from '../builder.mjs'\nimport { unsupportedType } from '../console.mjs'\n\nexport type EnvOutput = {\n  dir: string\n  filename: string\n}\n\nexport class EnvConfig {\n  readonly type: TypeConfig\n  readonly path: string\n  readonly src: string\n  readonly output: EnvOutput\n  readonly html?: string\n\n  constructor({\n    type,\n    path,\n    src,\n    output,\n    html,\n  }: {\n    type: TypeConfig\n    path: string\n    src: string\n    output: EnvOutput\n    html?: string\n  }) {\n    this.type = type\n    this.path = path\n    this.src = src\n    this.output = output\n    this.html = html\n  }\n\n  static fromYaml(yaml: YamlItem): EnvConfig {\n    return new this({\n      type: yaml.type,\n      path: yaml.path,\n      src: yaml.src,\n      output: yaml.output,\n      html: yaml.html,\n    })\n  }\n\n  toConfigurator(): Configurator<TypeConfig> {\n    switch (this.type) {\n      case TypeConfig.esbuild:\n        return new EsbuildConfigurator(this)\n      case TypeConfig.vite:\n        return new ViteConfigurator(this)\n      default:\n        unsupportedType(this.type)\n    }\n  }\n}\n\nexport class Item<\n  T extends PossibleConfiguration | null = PossibleConfiguration,\n  F extends EnvConfig | null = EnvConfig | null,\n> {\n  readonly config: T\n  readonly fileConfig: F\n  readonly target: Target\n  readonly isVite: boolean\n  readonly isEsbuild: boolean\n  readonly isMain: boolean\n  readonly isRenderer: boolean\n\n  constructor({\n    config,\n    fileConfig,\n    target,\n  }: {\n    config: T\n    fileConfig: F\n    target: Target\n  }) {\n    this.config = config\n    this.fileConfig = fileConfig\n    this.target = target\n    this.isVite = this.fileConfig?.type === TypeConfig.vite\n    this.isEsbuild = this.fileConfig?.type === TypeConfig.esbuild\n    this.isMain = this.target === Target.main\n    this.isRenderer = this.target === Target.renderer\n  }\n\n  async toBuilderAsync(): Promise<Builder | null> {\n    if (this.isEsbuild) {\n      return new EsbuildBuilder(this as Item<BuildOptions>)\n    } else if (this.isVite) {\n      return await ViteBuilder.create(this as Item<InlineConfig>)\n    }\n\n    if (this.fileConfig !== null) {\n      unsupportedType(this.fileConfig.type, this.isMain ? 'main' : 'renderer')\n    }\n\n    return null\n  }\n}\n\nexport class Config<\n  M extends PossibleConfiguration,\n  R extends PossibleConfiguration,\n> {\n  readonly main: Item<M, EnvConfig>\n  readonly renderer: Item<R | null>\n\n  constructor({\n    main,\n    renderer,\n  }: {\n    main: Item<M, EnvConfig>\n    renderer: Item<R | null>\n  }) {\n    this.main = main\n    this.renderer = renderer\n  }\n\n  async toBuildersAsync(): Promise<readonly [Builder, Builder | null]> {\n    return [\n      (await this.main.toBuilderAsync()) as Builder,\n      await this.renderer.toBuilderAsync(),\n    ]\n  }\n}\n"],
  "mappings": "AAUA,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,QAAQ,kBAAkB;AAGnC,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAOzB,MAAM,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAMG;AACD,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,MAAM;AACX,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,SAAS,MAA2B;AACzC,WAAO,IAAI,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,IACb,CAAC;AAAA,EACH;AAAA,EAEA,iBAA2C;AACzC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,WAAW;AACd,eAAO,IAAI,oBAAoB,IAAI;AAAA,MACrC,KAAK,WAAW;AACd,eAAO,IAAI,iBAAiB,IAAI;AAAA,MAClC;AACE,wBAAgB,KAAK,IAAI;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,MAAM,KAGX;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIG;AACD,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,SAAS;AACd,SAAK,SAAS,KAAK,YAAY,SAAS,WAAW;AACnD,SAAK,YAAY,KAAK,YAAY,SAAS,WAAW;AACtD,SAAK,SAAS,KAAK,WAAW,OAAO;AACrC,SAAK,aAAa,KAAK,WAAW,OAAO;AAAA,EAC3C;AAAA,EAEA,MAAM,iBAA0C;AAC9C,QAAI,KAAK,WAAW;AAClB,aAAO,IAAI,eAAe,IAA0B;AAAA,IACtD,WAAW,KAAK,QAAQ;AACtB,aAAO,MAAM,YAAY,OAAO,IAA0B;AAAA,IAC5D;AAEA,QAAI,KAAK,eAAe,MAAM;AAC5B,sBAAgB,KAAK,WAAW,MAAM,KAAK,SAAS,SAAS,UAAU;AAAA,IACzE;AAEA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,OAGX;AAAA,EACS;AAAA,EACA;AAAA,EAET,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF,GAGG;AACD,SAAK,OAAO;AACZ,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAM,kBAA+D;AACnE,WAAO;AAAA,MACJ,MAAM,KAAK,KAAK,eAAe;AAAA,MAChC,MAAM,KAAK,SAAS,eAAe;AAAA,IACrC;AAAA,EACF;AACF;",
  "names": []
}
