import type { Options } from '@swc/core'; import { type Accessor, Extension, type ExtensionApi, type Getter, type Setter } from '@roots/bud-framework/extension'; /** * Options related to SWC compiler * * @remarks * There are two additional properties: `typescript` and `ecmascript`. * These are used to override the base options for each language. * This is useful for using different options for * different file types but still using the same general config. */ type JSCOptions = { baseUrl: Options[`jsc`][`baseUrl`]; experimental: Options[`jsc`][`experimental`]; /** * Use `@swc/helpers` instead of inline helpers. */ externalHelpers: Options[`jsc`][`externalHelpers`]; /** * Keep class names. */ keepClassNames: Options[`jsc`][`keepClassNames`]; loose: boolean; minify: Options[`jsc`][`minify`]; parser: Options[`jsc`][`parser`]; paths: Options[`jsc`][`paths`]; preserveAllComments: Options[`jsc`][`preserveAllComments`]; /** * Defaults to `es3` (which enabled **all** pass). */ target: Options[`jsc`][`target`]; transform: Options[`jsc`][`transform`]; } & Options[`jsc`]; type BudJSCPublicInterface = ExtensionApi; declare class BudJSCApi extends Extension { baseUrl: Accessor; experimental: Accessor; externalHelpers: Accessor; getBaseUrl: Getter; getExperimental: Getter; getExternalHelpers: Getter; getKeepClassNames: Getter; getLoose: Getter; getMinify: Getter; getParser: Getter; getPaths: Getter; getPreserveAllComments: Getter; getTarget: Getter; getTransform: Getter; keepClassNames: Accessor; loose: Accessor; minify: Accessor; parser: Accessor; paths: Accessor; preserveAllComments: Accessor; setBaseUrl: Setter; setExperimental: Setter; setExternalHelpers: Setter; setKeepClassNames: Setter; setLoose: Setter; setMinify: Setter; setParser: Setter; setPaths: Setter; setPreserveAllComments: Setter; setTarget: Setter; setTransform: Setter; target: Accessor; transform: Accessor; setPlugins(plugins: ((plugins?: JSCOptions[`experimental`][`plugins`]) => JSCOptions[`experimental`][`plugins`]) | JSCOptions[`experimental`][`plugins`]): void; } export { BudJSCApi, type BudJSCPublicInterface, type JSCOptions };