UNPKG

@storm-stack/core

Version:

A build toolkit and runtime used by Storm Software in TypeScript applications

1 lines 8.38 kB
{"version":3,"sources":["../../src/lib/esbuild/build.ts"],"names":["esbuild","context","override","options","defu","entry","reduce","ret","output","replacePath","input","file","projectJson","sourceRoot","projectRoot","replace","findFileExtension","assets","outputPath","mode","platform","tsconfig","tsconfigFilePath","tsconfigRaw","tsconfigJson","external","noExternal","skipNodeModulesBundle","banner","js","reflectionLevel","minify","metafile","sourcemap","dts","projectType","Array","from","vfs","runtimeIdMap","keys","build","config","clean","esbuildOptions","opts","ctx","isFunction","alias","id","has","get","esbuildPlugins","resolverPlugin","compilerPlugin"],"mappings":";;;;;;;;;;;;;;;AAqCA,eAAsBA,OAAAA,CACpBC,OAAAA,EACAC,QAAAA,GAA4C,EAAC,EAAC;AAE9C,EAAA,MAAMC,OAAAA,GAAUC,sBACdF,QAAAA,IAAY,IACZD,OAAAA,CAAQE,OAAAA,CAAQH,QAAQE,QAAAA,EACxB;AACEG,IAAAA,KAAAA,EAAOJ,OAAAA,CAAQI,KAAAA,CAAMC,MAAAA,CACnB,CAACC,KAAKF,KAAAA,KAAAA;AACJE,MAAAA,GAAAA,CACEF,MAAMG,MAAAA,IACJC,mBAAAA,CACEJ,MAAMK,KAAAA,CAAMC,IAAAA,EACZV,QAAQW,WAAAA,EAAaC,UAAAA,IAAcZ,OAAAA,CAAQE,OAAAA,CAAQW,WAAW,CAAA,CAC9DC,OAAAA,CAAQC,8BAAkBX,KAAAA,CAAMK,KAAAA,CAAMC,IAAI,CAAA,IAAK,EAAA,EAAI,EAAA,CAAA,IACrDF,oBACEJ,KAAAA,CAAMM,IAAAA,EACNV,QAAQW,WAAAA,EAAaC,UAAAA,IAAcZ,QAAQE,OAAAA,CAAQW,WAAW,EAC9DC,OAAAA,CAAQC,6BAAAA,CAAkBX,MAAMM,IAAI,CAAA,IAAK,IAAI,EAAA,CAAA,IAC/CN,KAAAA,CAAMM,IAAAA;AAEV,MAAA,OAAOJ,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;IAEHU,MAAAA,EAAQhB,OAAAA,CAAQE,QAAQK,MAAAA,CAAOS,MAAAA;IAC/BC,UAAAA,EAAYjB,OAAAA,CAAQE,QAAQK,MAAAA,CAAOU,UAAAA;AACnCC,IAAAA,IAAAA,EAAMlB,QAAQE,OAAAA,CAAQgB,IAAAA;AACtBC,IAAAA,QAAAA,EAAUnB,QAAQE,OAAAA,CAAQiB,QAAAA;AAC1BN,IAAAA,WAAAA,EAAab,QAAQE,OAAAA,CAAQW,WAAAA;AAC7BD,IAAAA,UAAAA,EAAYZ,QAAQE,OAAAA,CAAQU,UAAAA;AAC5BQ,IAAAA,QAAAA,EAAUpB,QAAQoB,QAAAA,CAASC,gBAAAA;AAC3BC,IAAAA,WAAAA,EAAatB,QAAQoB,QAAAA,CAASG,YAAAA;AAC9BC,IAAAA,QAAAA,EAAUxB,QAAQE,OAAAA,CAAQsB,QAAAA;AAC1BC,IAAAA,UAAAA,EAAYzB,QAAQE,OAAAA,CAAQuB,UAAAA;AAC5BC,IAAAA,qBAAAA,EAAuB1B,QAAQE,OAAAA,CAAQwB;GACzC,EACA1B,OAAAA,CAAQE,QAAQH,OAAAA,EAChB;IACE4B,MAAAA,EAAQ;AACNC,MAAAA,EAAAA,EACE5B,OAAAA,CAAQE,OAAAA,CAAQgB,IAAAA,KAAS,YAAA,GACrB,yCAAA,GACA;AACR,KAAA;IACAW,eAAAA,EAAiB,SAAA;IACjBC,MAAAA,EAAQ9B,OAAAA,CAAQE,QAAQgB,IAAAA,KAAS,aAAA;IACjCa,QAAAA,EAAU/B,OAAAA,CAAQE,QAAQgB,IAAAA,KAAS,aAAA;IACnCc,SAAAA,EAAWhC,OAAAA,CAAQE,QAAQgB,IAAAA,KAAS,aAAA;IACpCe,GAAAA,EAAKjC,OAAAA,CAAQE,QAAQgC,WAAAA,KAAgB,aAAA;AACrCT,IAAAA,UAAAA,EAAYU,MAAMC,IAAAA,CAAKpC,OAAAA,CAAQqC,GAAAA,CAAIC,YAAAA,CAAaC,MAAI;GACtD,CAAA;AAGF,EAAA,MAAMC,YACJrC,qBAAAA,CACE;IACEsC,MAAAA,EAAQ,KAAA;IACRC,KAAAA,EAAO,IAAA;AACPC,IAAAA,cAAAA,CACEC,MACAC,GAAAA,EAEC;AAED,MAAA,IAAIC,qBAAAA,CAAW5C,OAAAA,CAAQyC,cAAc,CAAA,EAAG;AACtCzC,QAAAA,OAAAA,CAAQyC,cAAAA,CAAeC,MAAMC,GAAAA,CAAAA;AAC/B,MAAA;AAEAD,MAAAA,IAAAA,CAAKG,QAAQ5C,qBAAAA,CACXyC,IAAAA,CAAKG,KAAAA,IAAS,IACdZ,KAAAA,CAAMC,IAAAA,CAAKpC,OAAAA,CAAQqC,GAAAA,CAAIC,aAAaC,IAAAA,EAAI,EAAIlC,MAAAA,CAC1C,CAACC,KAAK0C,EAAAA,KAAAA;AACJ,QAAA,IACEhD,OAAAA,CAAQqC,GAAAA,CAAIC,YAAAA,CAAaW,GAAAA,CAAID,EAAAA,CAAAA,IAC7BhD,OAAAA,CAAQqC,GAAAA,CAAIC,YAAAA,CAAaY,GAAAA,CAAIF,EAAAA,CAAAA,EAC7B;AACA1C,UAAAA,GAAAA,CAAI0C,EAAAA,CAAAA,GAAMhD,OAAAA,CAAQqC,GAAAA,CAAIC,YAAAA,CAAaY,IAAIF,EAAAA,CAAAA;AACzC,QAAA;AAEA,QAAA,OAAO1C,GAAAA;MACT,CAAA,EACA,EAAC,CAAA,CAAA;AAGP,IAAA,CAAA;IACA6C,cAAAA,EAAgB;AACdC,MAAAA,gCAAAA,CAAepD,OAAAA,EAAS;AACtBwB,QAAAA,QAAAA,EAAUtB,OAAAA,CAAQsB,QAAAA;AAClBC,QAAAA,UAAAA,EAAYvB,OAAAA,CAAQuB,UAAAA;AACpBC,QAAAA,qBAAAA,EAAuBxB,OAAAA,CAAQwB;OACjC,CAAA;AACA2B,MAAAA,gCAAAA,CAAerD,OAAAA;;AAEnB,GAAA,EACAE,OAAAA,CAAAA,CAAAA;AAGN;AAnGsBH,wBAAAA,CAAAA,OAAAA,EAAAA,SAAAA,CAAAA","file":"chunk-ZIWSOBSL.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Storm Stack\n\n This code was released as part of the Storm Stack project. Storm Stack\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/storm-stack.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/storm-stack\n Documentation: https://docs.stormsoftware.com/projects/storm-stack\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { build } from \"@storm-software/esbuild/build\";\nimport type { ESBuildOptions as BaseESBuildOptions } from \"@storm-software/esbuild/types\";\nimport { findFileExtension } from \"@stryke/path/file-path-fns\";\nimport { replacePath } from \"@stryke/path/replace\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport defu from \"defu\";\nimport { BuildOptions } from \"esbuild\";\nimport { Format } from \"tsup\";\nimport { ESBuildOverrideOptions } from \"../../types/config\";\nimport { Context } from \"../../types/context\";\nimport { compilerPlugin } from \"./compiler-plugin\";\nimport { resolverPlugin } from \"./resolver-plugin\";\n\n/**\n * Build the project using esbuild\n *\n * @param context - The context of the build\n * @param override - The override options for the build\n */\nexport async function esbuild(\n context: Context,\n override: Partial<ESBuildOverrideOptions> = {}\n) {\n const options = defu(\n override ?? {},\n context.options.esbuild.override,\n {\n entry: context.entry.reduce(\n (ret, entry) => {\n ret[\n entry.output ||\n replacePath(\n entry.input.file,\n context.projectJson?.sourceRoot || context.options.projectRoot\n ).replace(findFileExtension(entry.input.file) || \"\", \"\") ||\n replacePath(\n entry.file,\n context.projectJson?.sourceRoot || context.options.projectRoot\n ).replace(findFileExtension(entry.file) || \"\", \"\")\n ] = entry.file;\n\n return ret;\n },\n {} as Record<string, string>\n ),\n assets: context.options.output.assets,\n outputPath: context.options.output.outputPath,\n mode: context.options.mode,\n platform: context.options.platform,\n projectRoot: context.options.projectRoot,\n sourceRoot: context.options.sourceRoot,\n tsconfig: context.tsconfig.tsconfigFilePath,\n tsconfigRaw: context.tsconfig.tsconfigJson,\n external: context.options.external,\n noExternal: context.options.noExternal,\n skipNodeModulesBundle: context.options.skipNodeModulesBundle\n },\n context.options.esbuild,\n {\n banner: {\n js:\n context.options.mode !== \"production\"\n ? \"\\n// ⚡ Built with Storm Stack \\n\"\n : \" \"\n },\n reflectionLevel: \"minimal\",\n minify: context.options.mode !== \"development\",\n metafile: context.options.mode === \"development\",\n sourcemap: context.options.mode === \"development\",\n dts: context.options.projectType !== \"application\",\n noExternal: Array.from(context.vfs.runtimeIdMap.keys())\n }\n ) as BaseESBuildOptions;\n\n await build(\n defu(\n {\n config: false,\n clean: true,\n esbuildOptions(\n opts: BuildOptions,\n ctx: {\n format: Format;\n }\n ) {\n if (isFunction(options.esbuildOptions)) {\n options.esbuildOptions(opts, ctx);\n }\n\n opts.alias = defu(\n opts.alias ?? {},\n Array.from(context.vfs.runtimeIdMap.keys()).reduce(\n (ret, id) => {\n if (\n context.vfs.runtimeIdMap.has(id) &&\n context.vfs.runtimeIdMap.get(id)\n ) {\n ret[id] = context.vfs.runtimeIdMap.get(id)!;\n }\n\n return ret;\n },\n {} as Record<string, string>\n )\n );\n },\n esbuildPlugins: [\n resolverPlugin(context, {\n external: options.external,\n noExternal: options.noExternal,\n skipNodeModulesBundle: options.skipNodeModulesBundle\n }),\n compilerPlugin(context)\n ]\n },\n options\n )\n );\n}\n"]}