Skip to content

Commit

Permalink
test(es/preset-env): Ensure custom transforms are working (#6227)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #5052
  • Loading branch information
kdy1 committed Oct 21, 2022
1 parent caaf491 commit de03675
Showing 1 changed file with 204 additions and 0 deletions.
204 changes: 204 additions & 0 deletions node-swc/__tests__/transform/preset-env_test.mjs
@@ -0,0 +1,204 @@
import swc from "../../..";

it("should respect custom transform option", async () => {
const { code } = await swc.transform(
`
const spread = 1;
const { foo, ...rest } = { ...spread }
async function bar() {
await 1;
}
function* baz() {
yield 1;
yield 2;
}
`,
{
env: {
targets: {
chrome: "79",
},
include: [
"transform-async-to-generator",
"transform-regenerator",
],
},
}
);
expect(code).toMatchInlineSnapshot(`
"function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function() {
var self = this, args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"next\\", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"throw\\", err);
}
_next(undefined);
});
};
}
var __generator = this && this.__generator || function(thisArg, body) {
var f, y, t, g, _ = {
label: 0,
sent: function() {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: []
};
return g = {
next: verb(0),
\\"throw\\": verb(1),
\\"return\\": verb(2)
}, typeof Symbol === \\"function\\" && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return step([
n,
v
]);
};
}
function step(op) {
if (f) throw new TypeError(\\"Generator is already executing.\\");
while(_)try {
if (f = 1, y && (t = op[0] & 2 ? y[\\"return\\"] : op[0] ? y[\\"throw\\"] || ((t = y[\\"return\\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [
op[0] & 2,
t.value
];
switch(op[0]){
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return {
value: op[1],
done: false
};
case 5:
_.label++;
y = op[1];
op = [
0
];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [
6,
e
];
y = 0;
} finally{
f = t = 0;
}
if (op[0] & 5) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: true
};
}
};
const spread = 1;
const { foo , ...rest } = {
...spread
};
function bar() {
return _bar.apply(this, arguments);
}
function _bar() {
_bar = _asyncToGenerator(function() {
return __generator(this, function(_state) {
switch(_state.label){
case 0:
return [
4,
1
];
case 1:
_state.sent();
return [
2
];
}
});
});
return _bar.apply(this, arguments);
}
function baz() {
return __generator(this, function(_state) {
switch(_state.label){
case 0:
return [
4,
1
];
case 1:
_state.sent();
return [
4,
2
];
case 2:
_state.sent();
return [
2
];
}
});
}
"
`);
});

1 comment on commit de03675

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: de03675 Previous: 2bafd53 Ratio
es/full/bugs-1 433925 ns/iter (± 38854) 386877 ns/iter (± 72319) 1.12
es/full/minify/libraries/antd 2900162799 ns/iter (± 357856406) 1895184601 ns/iter (± 65447301) 1.53
es/full/minify/libraries/d3 610340593 ns/iter (± 106665463) 399750223 ns/iter (± 13234870) 1.53
es/full/minify/libraries/echarts 1851163897 ns/iter (± 124920337) 1579385198 ns/iter (± 114577411) 1.17
es/full/minify/libraries/jquery 115024018 ns/iter (± 6847072) 98933491 ns/iter (± 2901301) 1.16
es/full/minify/libraries/lodash 140669572 ns/iter (± 16482145) 118796997 ns/iter (± 3634591) 1.18
es/full/minify/libraries/moment 65390387 ns/iter (± 3743164) 59605050 ns/iter (± 996105) 1.10
es/full/minify/libraries/react 25299342 ns/iter (± 2628572) 21117838 ns/iter (± 1442468) 1.20
es/full/minify/libraries/terser 353976016 ns/iter (± 20066380) 375159351 ns/iter (± 115448558) 0.94
es/full/minify/libraries/three 613540580 ns/iter (± 44793577) 577920111 ns/iter (± 46943836) 1.06
es/full/minify/libraries/typescript 4004659232 ns/iter (± 152887625) 3514560096 ns/iter (± 69422795) 1.14
es/full/minify/libraries/victory 918133987 ns/iter (± 33881405) 819236425 ns/iter (± 32922555) 1.12
es/full/minify/libraries/vue 195697752 ns/iter (± 8747150) 154449315 ns/iter (± 7793162) 1.27
es/full/codegen/es3 37465 ns/iter (± 4336) 33952 ns/iter (± 639) 1.10
es/full/codegen/es5 37043 ns/iter (± 4160) 33929 ns/iter (± 731) 1.09
es/full/codegen/es2015 37035 ns/iter (± 3058) 33937 ns/iter (± 1004) 1.09
es/full/codegen/es2016 36505 ns/iter (± 3931) 33965 ns/iter (± 1691) 1.07
es/full/codegen/es2017 35917 ns/iter (± 2605) 34110 ns/iter (± 844) 1.05
es/full/codegen/es2018 36440 ns/iter (± 6533) 34101 ns/iter (± 732) 1.07
es/full/codegen/es2019 36560 ns/iter (± 3160) 34093 ns/iter (± 1570) 1.07
es/full/codegen/es2020 35733 ns/iter (± 5351) 34053 ns/iter (± 915) 1.05
es/full/all/es3 237253394 ns/iter (± 343091007) 196375847 ns/iter (± 13178691) 1.21
es/full/all/es5 221275023 ns/iter (± 223437294) 196285120 ns/iter (± 17452186) 1.13
es/full/all/es2015 183971269 ns/iter (± 2002816904) 164168873 ns/iter (± 14048488) 1.12
es/full/all/es2016 224500350 ns/iter (± 357848316) 164253297 ns/iter (± 13468521) 1.37
es/full/all/es2017 217189224 ns/iter (± 28406458) 144586335 ns/iter (± 14820196) 1.50
es/full/all/es2018 205483375 ns/iter (± 436891866) 142473790 ns/iter (± 5244133) 1.44
es/full/all/es2019 198906303 ns/iter (± 384642806) 144347736 ns/iter (± 13914076) 1.38
es/full/all/es2020 175947456 ns/iter (± 22220554) 145390707 ns/iter (± 10962228) 1.21
es/full/parser 795402 ns/iter (± 130039) 710546 ns/iter (± 78675) 1.12
es/full/base/fixer 27192 ns/iter (± 3698) 25403 ns/iter (± 2387) 1.07
es/full/base/resolver_and_hygiene 99277 ns/iter (± 16008) 91568 ns/iter (± 2639) 1.08
serialization of ast node 256 ns/iter (± 59) 214 ns/iter (± 4) 1.20
serialization of serde 233 ns/iter (± 941) 230 ns/iter (± 7) 1.01

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.