Skip to content

Commit

Permalink
feat(swc-info): Add a CLI to help issue reporting (#7871)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Aug 25, 2023
1 parent 7911973 commit d6952ea
Show file tree
Hide file tree
Showing 10 changed files with 185 additions and 10 deletions.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Expand Up @@ -30,6 +30,11 @@ body:
attributes:
label: Playground link
description: You can use [swc playground](https://play.swc.rs/) to create a reproduction link, then paste the link here.
- type: input
id: swc-info
attributes:
label: SWC Info output
description: Please run `npx -y swc-info@latest` and paste the output here.
- type: textarea
id: expected-behavior
attributes:
Expand Down
8 changes: 8 additions & 0 deletions packages/swc-info/.gitignore
@@ -0,0 +1,8 @@
yarn.lock
node_modules
_/
*.tgz
lib/*.js
tests/*.js
*.d.ts
*.map
10 changes: 10 additions & 0 deletions packages/swc-info/.npmignore
@@ -0,0 +1,10 @@
examples/
node_modules/
package-lock.json
*.log
.swcrc
.yarn
*.tgz
.dprint.json
out/
tests/
9 changes: 9 additions & 0 deletions packages/swc-info/README.md
@@ -0,0 +1,9 @@
# swc-info

## Usage

```sh
npx -y swc-info@latest
```

then copy the output to the issue;.
2 changes: 2 additions & 0 deletions packages/swc-info/bin/swc-info.js
@@ -0,0 +1,2 @@
#!/usr/bin/env node
require("../lib/index.js");
71 changes: 71 additions & 0 deletions packages/swc-info/lib/index.ts
@@ -0,0 +1,71 @@
import os from "node:os";
import process from "node:process";
import childProcess from "child_process";

function getUniqueCpuNames(): string {
return os
.cpus()
.map((cpu) => cpu.model)
.filter((model, index, models) => models.indexOf(model) === index)
.join(", ");
}

function getBinaryVersion(binaryName: string): string {
try {
return childProcess
.execFileSync(binaryName, ["--version"])
.toString()
.trim();
} catch {
return "N/A";
}
}

function getPackageVersion(packageName: string) {
try {
return require(`${packageName}/package.json`).version;
} catch {
return null;
}
}

function interestingPackage(name: string): string | null {
const version = getPackageVersion(name);
if (version) {
return `${name}: ${version}`;
} else {
return null;
}
}
function interestingPackages(names: string[]): string {
return names.map(interestingPackage).filter(Boolean).join("\n ");
}

console.log(`
Operating System:
Platform: ${os.platform()}
Arch: ${os.arch()}
Machine Type: ${os.machine()}
Version: ${os.version()}
CPU: (${os.cpus().length} cores)
Models: ${getUniqueCpuNames()}
Binaries:
Node: ${process.versions.node}
npm: ${getBinaryVersion("npm")}
Yarn: ${getBinaryVersion("yarn")}
pnpm: ${getBinaryVersion("pnpm")}
Relevant Packages:
@swc/core: ${getPackageVersion("@swc/core") ?? "N/A"}
@swc/helpers: ${getPackageVersion("@swc/helpers") ?? "N/A"}
@swc/types: ${getPackageVersion("@swc/types") ?? "N/A"}
${interestingPackages(["typescript", "next"])}
SWC Config:
output: N/A
.swcrc path: N/A
Next.js info:
output: N/A
`);
37 changes: 37 additions & 0 deletions packages/swc-info/package.json
@@ -0,0 +1,37 @@
{
"name": "swc-info",
"packageManager": "yarn@3.2.3",
"version": "0.1.11",
"description": "CLI tool to help issue reporting for swc",
"sideEffects": false,
"scripts": {
"build": "tsc",
"prepublishOnly": "yarn build",
"prepack": "yarn build"
},
"repository": {
"type": "git",
"url": "git+https://github.com/swc-project/swc.git"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"access": "public"
},
"keywords": [
"swc",
"info",
"cli"
],
"author": "강동윤 <kdy1997.dev@gmail.com>",
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/swc-project/swc/issues"
},
"homepage": "https://swc.rs",
"devDependencies": {
"typescript": "^5.2.2"
},
"bin": {
"swc-info": "bin/swc-info.js"
}
}
25 changes: 25 additions & 0 deletions packages/swc-info/tsconfig.json
@@ -0,0 +1,25 @@
{
"compilerOptions": {
"target": "es2019",
"useDefineForClassFields": true,
"module": "commonjs",
"baseUrl": "./",
"paths": {},
"resolveJsonModule": true,
"declaration": true,
"sourceMap": true,
"downlevelIteration": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"rootDir": "."
},
"include": [
"lib",
"tests"
],
"exclude": [
"examples"
]
}
2 changes: 1 addition & 1 deletion packages/types/package.json
Expand Up @@ -28,6 +28,6 @@
"homepage": "https://swc.rs",
"packageManager": "yarn@3.2.3",
"devDependencies": {
"typescript": "^5.1.6"
"typescript": "^5.2.2"
}
}
26 changes: 17 additions & 9 deletions packages/yarn.lock
Expand Up @@ -124,7 +124,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@swc/types@workspace:types"
dependencies:
typescript: ^5.1.6
typescript: ^5.2.2
languageName: unknown
linkType: soft

Expand Down Expand Up @@ -611,6 +611,14 @@ __metadata:
languageName: node
linkType: hard

"swc-info@workspace:swc-info":
version: 0.0.0-use.local
resolution: "swc-info@workspace:swc-info"
dependencies:
typescript: ^5.2.2
languageName: unknown
linkType: soft

"through@npm:2, through@npm:~2.3, through@npm:~2.3.1":
version: 2.3.8
resolution: "through@npm:2.3.8"
Expand All @@ -634,23 +642,23 @@ __metadata:
languageName: node
linkType: hard

"typescript@npm:^5.1.6":
version: 5.1.6
resolution: "typescript@npm:5.1.6"
"typescript@npm:^5.2.2":
version: 5.2.2
resolution: "typescript@npm:5.2.2"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350
checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c
languageName: node
linkType: hard

"typescript@patch:typescript@^5.1.6#~builtin<compat/typescript>":
version: 5.1.6
resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=a1c5e5"
"typescript@patch:typescript@^5.2.2#~builtin<compat/typescript>":
version: 5.2.2
resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin<compat/typescript>::version=5.2.2&hash=a1c5e5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606
checksum: 07106822b4305de3f22835cbba949a2b35451cad50888759b6818421290ff95d522b38ef7919e70fb381c5fe9c1c643d7dea22c8b31652a717ddbd57b7f4d554
languageName: node
linkType: hard

Expand Down

1 comment on commit d6952ea

@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: d6952ea Previous: 11ebae1 Ratio
es/full/bugs-1 280619 ns/iter (± 5371) 294741 ns/iter (± 17799) 0.95
es/full/minify/libraries/antd 1298374692 ns/iter (± 14178530) 1353774624 ns/iter (± 19709215) 0.96
es/full/minify/libraries/d3 274144366 ns/iter (± 3711679) 282776418 ns/iter (± 7034123) 0.97
es/full/minify/libraries/echarts 1044609969 ns/iter (± 9518734) 1084848269 ns/iter (± 14523627) 0.96
es/full/minify/libraries/jquery 83595233 ns/iter (± 186091) 83769748 ns/iter (± 370697) 1.00
es/full/minify/libraries/lodash 96321253 ns/iter (± 638953) 97537042 ns/iter (± 895677) 0.99
es/full/minify/libraries/moment 49349460 ns/iter (± 100280) 49591857 ns/iter (± 509105) 1.00
es/full/minify/libraries/react 17872849 ns/iter (± 131613) 17862445 ns/iter (± 79443) 1.00
es/full/minify/libraries/terser 215683804 ns/iter (± 2435229) 219931785 ns/iter (± 2745553) 0.98
es/full/minify/libraries/three 381734046 ns/iter (± 2271046) 393541517 ns/iter (± 5484319) 0.97
es/full/minify/libraries/typescript 2598229586 ns/iter (± 7781357) 2667322670 ns/iter (± 21574738) 0.97
es/full/minify/libraries/victory 557996193 ns/iter (± 3490993) 592135605 ns/iter (± 16351602) 0.94
es/full/minify/libraries/vue 118201585 ns/iter (± 160980) 119677614 ns/iter (± 843292) 0.99
es/full/codegen/es3 35022 ns/iter (± 120) 35124 ns/iter (± 113) 1.00
es/full/codegen/es5 34980 ns/iter (± 103) 35154 ns/iter (± 99) 1.00
es/full/codegen/es2015 34883 ns/iter (± 187) 35248 ns/iter (± 108) 0.99
es/full/codegen/es2016 34934 ns/iter (± 115) 35032 ns/iter (± 96) 1.00
es/full/codegen/es2017 34980 ns/iter (± 176) 35104 ns/iter (± 149) 1.00
es/full/codegen/es2018 34829 ns/iter (± 132) 34967 ns/iter (± 170) 1.00
es/full/codegen/es2019 35039 ns/iter (± 152) 35065 ns/iter (± 401) 1.00
es/full/codegen/es2020 34915 ns/iter (± 204) 35149 ns/iter (± 123) 0.99
es/full/all/es3 167650525 ns/iter (± 1198731) 167713213 ns/iter (± 462897) 1.00
es/full/all/es5 160606367 ns/iter (± 811537) 161345203 ns/iter (± 754336) 1.00
es/full/all/es2015 120620423 ns/iter (± 766447) 120269261 ns/iter (± 506742) 1.00
es/full/all/es2016 119306522 ns/iter (± 737421) 119455138 ns/iter (± 367072) 1.00
es/full/all/es2017 118650721 ns/iter (± 1035784) 118849745 ns/iter (± 665869) 1.00
es/full/all/es2018 116101359 ns/iter (± 1046308) 116323980 ns/iter (± 890309) 1.00
es/full/all/es2019 115392605 ns/iter (± 766987) 115507936 ns/iter (± 1512163) 1.00
es/full/all/es2020 111576278 ns/iter (± 632941) 112397217 ns/iter (± 1295562) 0.99
es/full/parser 489291 ns/iter (± 5634) 499280 ns/iter (± 6986) 0.98
es/full/base/fixer 18789 ns/iter (± 514) 18316 ns/iter (± 44) 1.03
es/full/base/resolver_and_hygiene 80317 ns/iter (± 257) 80063 ns/iter (± 240) 1.00
serialization of serde 299 ns/iter (± 0) 295 ns/iter (± 2) 1.01
css/minify/libraries/bootstrap 28520582 ns/iter (± 126077) 28557242 ns/iter (± 54920) 1.00
css/visitor/compare/clone 1628869 ns/iter (± 2843) 1629298 ns/iter (± 2596) 1.00
css/visitor/compare/visit_mut_span 1775438 ns/iter (± 3812) 1757160 ns/iter (± 1857) 1.01
css/visitor/compare/visit_mut_span_panic 1828205 ns/iter (± 7917) 1838396 ns/iter (± 3476) 0.99
css/visitor/compare/fold_span 2564354 ns/iter (± 5668) 2551501 ns/iter (± 9886) 1.01
css/visitor/compare/fold_span_panic 2757153 ns/iter (± 17094) 2744024 ns/iter (± 9953) 1.00
css/lexer/bootstrap_5_1_3 4519492 ns/iter (± 16795) 4518565 ns/iter (± 3038) 1.00
css/lexer/foundation_6_7_4 3808347 ns/iter (± 8483) 3805691 ns/iter (± 2383) 1.00
css/lexer/tailwind_3_1_1 725380 ns/iter (± 785) 720948 ns/iter (± 506) 1.01
css/parser/bootstrap_5_1_3 20421693 ns/iter (± 41195) 19057353 ns/iter (± 33622) 1.07
css/parser/foundation_6_7_4 16378288 ns/iter (± 18615) 15466972 ns/iter (± 15570) 1.06
css/parser/tailwind_3_1_1 3088678 ns/iter (± 4968) 2983734 ns/iter (± 2861) 1.04
es/codegen/colors 737687 ns/iter (± 402963) 738781 ns/iter (± 402960) 1.00
es/codegen/large 3141051 ns/iter (± 1667538) 2891289 ns/iter (± 1524342) 1.09
es/codegen/with-parser/colors 45137 ns/iter (± 515) 45203 ns/iter (± 663) 1.00
es/codegen/with-parser/large 483459 ns/iter (± 626) 487504 ns/iter (± 826) 0.99
es/minify/libraries/antd 1115486653 ns/iter (± 8354504) 1152245650 ns/iter (± 11885588) 0.97
es/minify/libraries/d3 237542062 ns/iter (± 679763) 238716261 ns/iter (± 781809) 1.00
es/minify/libraries/echarts 877299356 ns/iter (± 7015934) 906320765 ns/iter (± 8264284) 0.97
es/minify/libraries/jquery 72861329 ns/iter (± 187144) 72544205 ns/iter (± 167978) 1.00
es/minify/libraries/lodash 86427551 ns/iter (± 189342) 86481074 ns/iter (± 216918) 1.00
es/minify/libraries/moment 43139017 ns/iter (± 71417) 43100624 ns/iter (± 60010) 1.00
es/minify/libraries/react 15918351 ns/iter (± 43120) 15950270 ns/iter (± 57231) 1.00
es/minify/libraries/terser 183825152 ns/iter (± 342827) 184596320 ns/iter (± 997584) 1.00
es/minify/libraries/three 317706317 ns/iter (± 1013083) 320538123 ns/iter (± 1950571) 0.99
es/minify/libraries/typescript 2209305961 ns/iter (± 7457249) 2235114049 ns/iter (± 9924833) 0.99
es/minify/libraries/victory 463207547 ns/iter (± 2627291) 480677564 ns/iter (± 9346096) 0.96
es/minify/libraries/vue 104965089 ns/iter (± 208612) 105556035 ns/iter (± 259560) 0.99
es/visitor/compare/clone 1965800 ns/iter (± 6956) 1957097 ns/iter (± 4260) 1.00
es/visitor/compare/visit_mut_span 2267856 ns/iter (± 5192) 2273498 ns/iter (± 9579) 1.00
es/visitor/compare/visit_mut_span_panic 2322029 ns/iter (± 3782) 2346508 ns/iter (± 5142) 0.99
es/visitor/compare/fold_span 3372421 ns/iter (± 5633) 3388515 ns/iter (± 7157) 1.00
es/visitor/compare/fold_span_panic 3481872 ns/iter (± 5448) 3491631 ns/iter (± 5873) 1.00
es/lexer/colors 12895 ns/iter (± 52) 12984 ns/iter (± 24) 0.99
es/lexer/angular 6015144 ns/iter (± 24692) 6012272 ns/iter (± 8122) 1.00
es/lexer/backbone 770729 ns/iter (± 1062) 772660 ns/iter (± 2110) 1.00
es/lexer/jquery 4397336 ns/iter (± 4885) 4425650 ns/iter (± 5106) 0.99
es/lexer/jquery mobile 6680276 ns/iter (± 3771) 6708183 ns/iter (± 10321) 1.00
es/lexer/mootools 3505647 ns/iter (± 5341) 3513608 ns/iter (± 4535) 1.00
es/lexer/underscore 649918 ns/iter (± 307) 648797 ns/iter (± 1508) 1.00
es/lexer/three 21015807 ns/iter (± 23806) 21011769 ns/iter (± 56317) 1.00
es/lexer/yui 3758545 ns/iter (± 3373) 3770270 ns/iter (± 4575) 1.00
es/parser/colors 27032 ns/iter (± 22) 27055 ns/iter (± 69) 1.00
es/parser/angular 13330624 ns/iter (± 74455) 13550817 ns/iter (± 100727) 0.98
es/parser/backbone 1956214 ns/iter (± 7306) 1985618 ns/iter (± 7238) 0.99
es/parser/jquery 10705150 ns/iter (± 53378) 10805712 ns/iter (± 46826) 0.99
es/parser/jquery mobile 16445822 ns/iter (± 45556) 16622316 ns/iter (± 61318) 0.99
es/parser/mootools 8235806 ns/iter (± 18171) 8303081 ns/iter (± 18014) 0.99
es/parser/underscore 1682280 ns/iter (± 7482) 1698416 ns/iter (± 9777) 0.99
es/parser/three 45879748 ns/iter (± 183188) 47348792 ns/iter (± 962846) 0.97
es/parser/yui 8135051 ns/iter (± 29773) 8232625 ns/iter (± 26337) 0.99
es/preset-env/usage/builtin_type 135365 ns/iter (± 31368) 138136 ns/iter (± 33304) 0.98
es/preset-env/usage/property 17032 ns/iter (± 50) 16983 ns/iter (± 49) 1.00
es/resolver/typescript 86910623 ns/iter (± 1097760) 88781610 ns/iter (± 926469) 0.98
es/fixer/typescript 63337937 ns/iter (± 389764) 64304909 ns/iter (± 634994) 0.98
es/hygiene/typescript 127698027 ns/iter (± 644994) 128949766 ns/iter (± 1185163) 0.99
es/resolver_with_hygiene/typescript 236671625 ns/iter (± 1298979) 240685626 ns/iter (± 1451966) 0.98
es/visitor/base-perf/module_clone 59410 ns/iter (± 321) 58869 ns/iter (± 248) 1.01
es/visitor/base-perf/fold_empty 63675 ns/iter (± 374) 62501 ns/iter (± 283) 1.02
es/visitor/base-perf/fold_noop_impl_all 63652 ns/iter (± 374) 63080 ns/iter (± 208) 1.01
es/visitor/base-perf/fold_noop_impl_vec 64085 ns/iter (± 186) 62905 ns/iter (± 263) 1.02
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 58 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 46 ns/iter (± 0) 0.89
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 110 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 80 ns/iter (± 0) 0.97
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2618 ns/iter (± 28) 2620 ns/iter (± 34) 1.00
es/base/parallel/resolver/typescript 4234443465 ns/iter (± 269562844) 3887086571 ns/iter (± 271399555) 1.09
es/base/parallel/hygiene/typescript 1447125972 ns/iter (± 12957803) 1442054423 ns/iter (± 13404763) 1.00
misc/visitors/time-complexity/time 5 133 ns/iter (± 3) 133 ns/iter (± 5) 1
misc/visitors/time-complexity/time 10 397 ns/iter (± 6) 305 ns/iter (± 0) 1.30
misc/visitors/time-complexity/time 15 687 ns/iter (± 13) 519 ns/iter (± 2) 1.32
misc/visitors/time-complexity/time 20 1045 ns/iter (± 14) 1049 ns/iter (± 3) 1.00
misc/visitors/time-complexity/time 40 4180 ns/iter (± 298) 3565 ns/iter (± 40) 1.17
misc/visitors/time-complexity/time 60 7246 ns/iter (± 43) 7302 ns/iter (± 26) 0.99
es/full-target/es2016 232871 ns/iter (± 659) 228013 ns/iter (± 358) 1.02
es/full-target/es2017 220794 ns/iter (± 697) 217853 ns/iter (± 986) 1.01
es/full-target/es2018 207680 ns/iter (± 1220) 205911 ns/iter (± 479) 1.01
es2020_nullish_coalescing 70211 ns/iter (± 555) 72388 ns/iter (± 283) 0.97
es2020_optional_chaining 80964 ns/iter (± 642) 82812 ns/iter (± 201) 0.98
es2022_class_properties 115468 ns/iter (± 794) 117005 ns/iter (± 357) 0.99
es2018_object_rest_spread 75276 ns/iter (± 839) 76552 ns/iter (± 225) 0.98
es2019_optional_catch_binding 64225 ns/iter (± 226) 65257 ns/iter (± 243) 0.98
es2017_async_to_generator 63710 ns/iter (± 480) 65240 ns/iter (± 283) 0.98
es2016_exponentiation 68132 ns/iter (± 727) 67370 ns/iter (± 203) 1.01
es2015_arrow 71643 ns/iter (± 259) 73067 ns/iter (± 325) 0.98
es2015_block_scoped_fn 68594 ns/iter (± 484) 70635 ns/iter (± 258) 0.97
es2015_block_scoping 125365 ns/iter (± 624) 122967 ns/iter (± 593) 1.02

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

Please sign in to comment.