swc/node-swc/benches/plugin.js

128 lines
1.9 KiB
JavaScript
Raw Normal View History

const SOURCE = `
'use strict';
class Foo {
foo() {}
}
class Bar extends Foo {
foo() {
super.foo();
}
async bar() {}
}
class Baz extends Bar {
foo() {
super.foo();
this.baz()
}
baz() {
}
async other() {
this.baz()
await super.bar()
}
}
/**
* Extract red color out of a color integer:
*
* 0x00DEAD -> 0x00
*
* @param {Number} color
* @return {Number}
*/
function red( color )
{
let foo = 3.14;
return color >> 16;
}
/**
* Extract green out of a color integer:
*
* 0x00DEAD -> 0xDE
*
* @param {Number} color
* @return {Number}
*/
function green( color )
{
return ( color >> 8 ) & 0xFF;
}
/**
* Extract blue color out of a color integer:
*
* 0x00DEAD -> 0xAD
*
* @param {Number} color
* @return {Number}
*/
function blue( color )
{
return color & 0xFF;
}
/**
* Converts an integer containing a color such as 0x00DEAD to a hex
* string, such as '#00DEAD';
*
* @param {Number} int
* @return {String}
*/
function intToHex( int )
{
const mask = '#000000';
const hex = int.toString( 16 );
return mask.substring( 0, 7 - hex.length ) + hex;
}
/**
* Converts a hex string containing a color such as '#00DEAD' to
* an integer, such as 0x00DEAD;
*
* @param {Number} num
* @return {String}
*/
function hexToInt( hex )
{
return parseInt( hex.substring( 1 ), 16 );
}
module.exports = {
red,
green,
blue,
intToHex,
hexToInt,
};
`;
const swc = require("../");
const Visitor = require("../Visitor").default;
const TESTS = [
["parse", () => swc.parseSync(SOURCE)],
["parse + print", () => swc.printSync(swc.parseSync(SOURCE))],
["parse + transform", () => swc.transformSync(swc.parseSync(SOURCE))],
[
"plugin",
() =>
swc.transformSync(SOURCE, {
plugin: m => new Visitor().visitModule(m)
})
]
];
suite("plugin", () => {
TESTS.map(args => {
const [name, fn] = args;
bench(name, fn);
});
});