From b9a397a7b91cb7c590432c9642fe86c604e3efee Mon Sep 17 00:00:00 2001 From: TopchetoEU <36534413+TopchetoEU@users.noreply.github.com> Date: Wed, 22 Jan 2025 20:34:31 +0200 Subject: [PATCH] specify babel plugins separately --- lib/src/transpiler/babel.ts | 64 ++++++++++++++++++++++++++++-- lib/src/transpiler/coffeescript.ts | 4 +- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/lib/src/transpiler/babel.ts b/lib/src/transpiler/babel.ts index a736ce4..170a536 100644 --- a/lib/src/transpiler/babel.ts +++ b/lib/src/transpiler/babel.ts @@ -1,5 +1,5 @@ import { SourceMap } from "./map.ts"; -import { transform, availablePresets } from "@babel/standalone"; +import { transform, availablePlugins } from "@babel/standalone"; export default function babel(next: Compiler): Compiler { print("Loaded babel!"); @@ -8,7 +8,63 @@ export default function babel(next: Compiler): Compiler { const res = transform(code, { filename, sourceMaps: true, - presets: [availablePresets.env], + assumptions: { + arrayLikeIsIterable: true, + constantSuper: true, + ignoreFunctionLength: true, + ignoreToPrimitiveHint: true, + mutableTemplateObject: true, + noDocumentAll: true, + noNewArrows: true, + noUninitializedPrivateFieldAccess: true, + privateFieldsAsSymbols: true, + }, + plugins: [ + // ES2022 + availablePlugins["transform-class-properties"], + availablePlugins["transform-class-static-block"], + availablePlugins["transform-private-methods"], + availablePlugins["transform-private-property-in-object"], + // "syntax-top-level-await", + + // ES2021 + availablePlugins["transform-logical-assignment-operators"], + availablePlugins["transform-numeric-separator"], + + // ES2020 + availablePlugins["transform-optional-chaining"], + availablePlugins["transform-nullish-coalescing-operator"], + + // ES2018 + availablePlugins["transform-async-generator-functions"], + availablePlugins["transform-object-rest-spread"], + availablePlugins["transform-unicode-property-regex"], + + // ES2017 + availablePlugins["transform-async-to-generator"], + + // ES2016 + availablePlugins["transform-exponentiation-operator"], + + // ES2015 + availablePlugins["transform-block-scoping"], + availablePlugins["transform-classes"], + availablePlugins["transform-computed-properties"], + availablePlugins["transform-destructuring"], + availablePlugins["transform-duplicate-keys"], + availablePlugins["transform-for-of"], + availablePlugins["transform-function-name"], + availablePlugins["transform-literals"], + availablePlugins["transform-new-target"], + availablePlugins["transform-object-super"], + availablePlugins["transform-parameters"], + availablePlugins["transform-shorthand-properties"], + availablePlugins["transform-spread"], + availablePlugins["transform-sticky-regex"], + availablePlugins["transform-template-literals"], + availablePlugins["transform-unicode-escapes"], + availablePlugins["transform-unicode-regex"], + ], }); const map = SourceMap.parse({ @@ -18,7 +74,9 @@ export default function babel(next: Compiler): Compiler { }); registerSource(filename, code); - return next("babel-internal://" + filename, res.code!, SourceMap.chain(map, prevMap)); + const func = next("babel-internal://" + filename, res.code!, SourceMap.chain(map, prevMap)); + func.name = filename; + return func; }; } diff --git a/lib/src/transpiler/coffeescript.ts b/lib/src/transpiler/coffeescript.ts index cbf927f..39376df 100644 --- a/lib/src/transpiler/coffeescript.ts +++ b/lib/src/transpiler/coffeescript.ts @@ -21,7 +21,9 @@ export default function coffee(next: Compiler): Compiler { }); registerSource(filename, code); - return next("coffee-internal://" + filename, result, SourceMap.chain(map, prevMap)); + const func = next("coffee-internal://" + filename, result, SourceMap.chain(map, prevMap)); + func.name = filename; + return func; }; }