specify babel plugins separately

This commit is contained in:
TopchetoEU 2025-01-22 20:34:31 +02:00
parent 40f6cfe616
commit b9a397a7b9
Signed by: topchetoeu
GPG Key ID: 6531B8583E5F6ED4
2 changed files with 64 additions and 4 deletions

View File

@ -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;
};
}

View File

@ -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;
};
}