{"version":3,"file":"build.mjs","sources":["../src/build.ts"],"sourcesContent":["import type { Config as SwcConfig } from \"@swc/core\";\nimport { applyTransformers, type SwcConfigTransformer } from \"./applyTransformers.ts\";\n\nexport interface DefineBuildConfigOptions {\n    baseUrl?: NonNullable<SwcConfig[\"jsc\"]>[\"baseUrl\"];\n    parser?: \"ecmascript\" | \"typescript\";\n    paths?: NonNullable<SwcConfig[\"jsc\"]>[\"paths\"];\n    transformers?: SwcConfigTransformer[];\n}\n\nexport function defineBuildConfig(targets: Record<string, string>, options: DefineBuildConfigOptions = {}) {\n    const {\n        baseUrl,\n        parser = \"typescript\",\n        paths,\n        transformers = []\n    } = options;\n\n    const config: SwcConfig = {\n        jsc: {\n            baseUrl,\n            paths,\n            parser: parser === \"ecmascript\"\n                ? {\n                    syntax: \"ecmascript\",\n                    jsx: true\n                }\n                : {\n                    syntax: \"typescript\",\n                    tsx: true\n                },\n            // View https://swc.rs/docs/configuration/minification for options.\n            minify: {\n                compress: true,\n                mangle: true\n            },\n            transform: {\n                react: {\n                    // Use \"react/jsx-runtime\".\n                    runtime: \"automatic\",\n                    // Use the native \"Object.assign()\" instead of \"_extends\".\n                    useBuiltins: true\n                }\n            },\n            // Import shims from an external module rather than inlining them in bundle files to greatly reduce the bundles size.\n            // Requires to add \"@swc/helpers\" as a project dependency.\n            externalHelpers: true\n        },\n        module: {\n            // The output module resolution system that the code will be compiled for.\n            type: \"es6\"\n        },\n        env: {\n            // jsc.target is not provided because the provided targets takes precedence.\n            targets\n        }\n    };\n\n    const transformedConfig = applyTransformers(config, transformers, {\n        environment: \"build\"\n    });\n\n    return transformedConfig;\n}\n"],"names":["applyTransformers","defineBuildConfig","targets","options","baseUrl","parser","paths","transformers","config","transformedConfig"],"mappings":";;;AACsF;AAS/E,SAASC,iBAAiBA,CAACC,OAA+B,EAAEC,UAAoC,CAAC,CAAC;IACrG,MAAM,EACFC,OAAO,EACPC,SAAS,YAAY,EACrBC,KAAK,EACLC,eAAe,EAAE,EACpB,GAAGJ;IAEJ,MAAMK,SAAoB;QACtB,KAAK;YACDJ;YACAE;YACA,QAAQD,WAAW,eACb;gBACE,QAAQ;gBACR,KAAK;YACT,IACE;gBACE,QAAQ;gBACR,KAAK;YACT;YACJ,mEAAmE;YACnE,QAAQ;gBACJ,UAAU;gBACV,QAAQ;YACZ;YACA,WAAW;gBACP,OAAO;oBACH,2BAA2B;oBAC3B,SAAS;oBACT,0DAA0D;oBAC1D,aAAa;gBACjB;YACJ;YACA,qHAAqH;YACrH,0DAA0D;YAC1D,iBAAiB;QACrB;QACA,QAAQ;YACJ,0EAA0E;YAC1E,MAAM;QACV;QACA,KAAK;YACD,4EAA4E;YAC5EH;QACJ;IACJ;IAEA,MAAMO,oBAAoBT,iBAAiBA,CAACQ,QAAQD,cAAc;QAC9D,aAAa;IACjB;IAEA,OAAOE;AACX"}