├── .dockerignore ├── .gitattributes ├── .gitignore ├── .prettierrc.json ├── LICENSE.md ├── README.md ├── README.zh_CN.md ├── apps └── eval │ ├── .gitignore │ ├── package.json │ ├── readme.md │ ├── src │ ├── base.ts │ ├── bench-eval-runner.ts │ ├── custom-eval-runner.ts │ ├── index.ts │ ├── model.json │ └── utils │ │ ├── api.ts │ │ ├── cmd.ts │ │ ├── compress.ts │ │ ├── env.ts │ │ ├── project.ts │ │ └── server.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── common ├── autoinstallers │ └── rush-commands │ │ ├── package.json │ │ └── pnpm-lock.yaml ├── config │ └── rush │ │ ├── .npmrc │ │ ├── .pnpmfile.cjs │ │ ├── artifactory.json │ │ ├── build-cache.json │ │ ├── cobuild.json │ │ ├── command-line.json │ │ ├── common-versions.json │ │ ├── custom-tips.json │ │ ├── experiments.json │ │ ├── pnpm-config.json │ │ ├── pnpm-lock.yaml │ │ ├── repo-state.json │ │ ├── rush-plugins.json │ │ ├── subspaces.json │ │ └── version-policies.json ├── git-hooks │ └── commit-msg └── scripts │ ├── install-run-rush-pnpm.js │ ├── install-run-rush.js │ ├── install-run-rushx.js │ └── install-run.js ├── docs └── assets │ ├── pass-1.png │ └── sotas.png ├── libraries ├── shop-test-util │ ├── package.json │ └── src │ │ ├── index.js │ │ └── sku.js ├── summary │ ├── package.json │ └── src │ │ ├── index.js │ │ └── summary.json └── test-util │ ├── package.json │ ├── src │ ├── css.js │ └── index.js │ └── test.sh ├── pnpm-lock.yaml ├── projects ├── .gitignore ├── angular │ ├── .evalignore │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── playwright.config.js │ ├── scripts │ │ ├── build.js │ │ └── dev.js │ ├── src-init │ │ ├── angular.json │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── app.routes.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── readme.md │ │ ├── styles.css │ │ ├── tsconfig.app.json │ │ └── tsconfig.json │ ├── src │ │ ├── angular.json │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── app.routes.ts │ │ ├── components │ │ │ ├── blog-form │ │ │ │ └── blog-form.component.ts │ │ │ ├── blog-list │ │ │ │ └── blog-list.component.ts │ │ │ ├── blog │ │ │ │ └── blog.component.ts │ │ │ ├── comments │ │ │ │ └── comments.component.ts │ │ │ ├── header │ │ │ │ └── header.component.ts │ │ │ ├── main │ │ │ │ └── main.component.ts │ │ │ └── search │ │ │ │ └── search.component.ts │ │ ├── directives │ │ │ ├── tooltip.directive.ts │ │ │ └── truncate.directive.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── pages │ │ │ ├── blogPage │ │ │ │ └── blogPage.component.ts │ │ │ └── game │ │ │ │ └── game.component.ts │ │ ├── pipes │ │ │ └── marked.pipe.ts │ │ ├── readme.md │ │ ├── services │ │ │ ├── blog.service.ts │ │ │ ├── comment.service.ts │ │ │ └── toast.service.ts │ │ ├── styles.css │ │ ├── tsconfig.app.json │ │ └── tsconfig.json │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ └── tsconfig.json ├── bom │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── browser │ │ │ ├── Address.js │ │ │ ├── Browser.js │ │ │ ├── BrowserComp.js │ │ │ ├── Content.js │ │ │ ├── Setting.js │ │ │ ├── Toolbar.js │ │ │ └── util.js │ │ ├── docs │ │ │ ├── css.html │ │ │ ├── doc.css │ │ │ ├── doc.js │ │ │ ├── html.html │ │ │ ├── intro.html │ │ │ ├── javascript.html │ │ │ └── nodejs.html │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── calculator-files │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── calculator │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── canvas │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ ├── bg.png │ │ ├── bird.png │ │ ├── fg.png │ │ ├── pipeDown.png │ │ └── pipeUp.png │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ ├── constants.js │ │ ├── event.js │ │ ├── index.html │ │ ├── main.js │ │ ├── render.js │ │ ├── store.js │ │ ├── style.css │ │ └── util.js │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ └── vite.config.js ├── chart │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ ├── data.js │ │ └── res.svg │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common │ │ │ ├── Chart.js │ │ │ ├── Chart.scss │ │ │ ├── ChartTheme.js │ │ │ ├── LineChart.js │ │ │ ├── config.scss │ │ │ └── util.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── src │ │ ├── assets │ │ ├── common │ │ │ ├── AreaChart.js │ │ │ ├── BarChart.js │ │ │ ├── Chart.js │ │ │ ├── Chart.scss │ │ │ ├── ChartTheme.js │ │ │ ├── DoughnutChart.js │ │ │ ├── LineChart.js │ │ │ ├── PieChart.js │ │ │ ├── ScatterChart.js │ │ │ ├── SmoothLineChart.js │ │ │ ├── StepChart.js │ │ │ ├── config.scss │ │ │ ├── util.js │ │ │ └── util.spec.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── tasks.yml │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── util.js │ └── vite.config.js ├── color │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── index.html │ │ ├── index.js │ │ └── util.js │ ├── tasks.yml │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── demo │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-2.spec.js │ │ └── task-3.spec.js ├── dom │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── common │ │ │ ├── dir.js │ │ │ ├── drag.js │ │ │ ├── editor.js │ │ │ ├── entry.js │ │ │ ├── file.js │ │ │ ├── filter.js │ │ │ ├── menu.js │ │ │ ├── resizer.js │ │ │ └── sel.js │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── dom1 │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ ├── f │ │ │ ├── dir.js │ │ │ ├── drag.js │ │ │ ├── editor.js │ │ │ ├── entry.js │ │ │ ├── file.js │ │ │ ├── filter.js │ │ │ ├── menu.js │ │ │ ├── resizer.js │ │ │ └── sel.js │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── draw │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── src │ │ ├── common │ │ │ ├── Canvas.js │ │ │ ├── Canvas.scss │ │ │ ├── Toolkit.js │ │ │ ├── Toolkit.scss │ │ │ ├── config.scss │ │ │ ├── shape │ │ │ │ ├── Ellipse.js │ │ │ │ ├── Line.js │ │ │ │ ├── Rect.js │ │ │ │ └── Shape.js │ │ │ ├── util.js │ │ │ └── util.spec.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── util.js │ └── vite.config.js ├── esmodule │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── index.html │ │ ├── index.js │ │ ├── modules │ │ │ ├── data │ │ │ │ ├── en.json │ │ │ │ ├── fr.json │ │ │ │ └── zh.json │ │ │ ├── resource │ │ │ │ ├── config.json │ │ │ │ └── style.css │ │ │ ├── shape │ │ │ │ ├── Circle.js │ │ │ │ ├── Rectangle.js │ │ │ │ ├── Shape.js │ │ │ │ └── index.js │ │ │ └── util │ │ │ │ ├── lang.js │ │ │ │ ├── log.js │ │ │ │ └── math.js │ │ └── nodejs │ │ │ ├── cjs.cjs │ │ │ ├── data.json │ │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── expression-editor │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── autocomplete.js │ │ ├── editor.js │ │ ├── evaluate.js │ │ ├── highlight.js │ │ ├── index.html │ │ ├── index.js │ │ ├── lint.js │ │ └── parser.js │ ├── tasks.yml │ └── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── expressjs │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── dev.js │ │ └── init-db.js │ ├── src-init │ │ ├── index.js │ │ └── readme.md │ ├── src │ │ ├── index.js │ │ ├── libs │ │ │ ├── auth.js │ │ │ ├── db-utils.js │ │ │ ├── db.js │ │ │ └── setup.sql │ │ ├── public │ │ │ ├── components │ │ │ │ ├── Cart.js │ │ │ │ └── HeaderUserMenu.js │ │ │ └── css │ │ │ │ ├── admin.css │ │ │ │ ├── comment.css │ │ │ │ ├── login.css │ │ │ │ ├── order.css │ │ │ │ ├── orders.css │ │ │ │ ├── profile.css │ │ │ │ ├── register.css │ │ │ │ ├── style.css │ │ │ │ └── wishlist.css │ │ ├── readme.md │ │ ├── routes │ │ │ ├── admin │ │ │ │ └── api.js │ │ │ ├── auth │ │ │ │ ├── api.js │ │ │ │ └── referer.js │ │ │ ├── cart │ │ │ │ └── api.js │ │ │ ├── comment │ │ │ │ ├── api.js │ │ │ │ └── utils.js │ │ │ ├── home │ │ │ │ └── api.js │ │ │ ├── order │ │ │ │ └── api.js │ │ │ ├── pay │ │ │ │ └── api.js │ │ │ ├── products │ │ │ │ └── api.js │ │ │ ├── refund │ │ │ │ └── api.js │ │ │ └── wishlist │ │ │ │ └── api.js │ │ └── views │ │ │ ├── admin │ │ │ ├── orders.pug │ │ │ ├── products.pug │ │ │ └── users.pug │ │ │ ├── comment.pug │ │ │ ├── error.pug │ │ │ ├── home.pug │ │ │ ├── layout.pug │ │ │ ├── login.pug │ │ │ ├── order.pug │ │ │ ├── orders.pug │ │ │ ├── product-detail.pug │ │ │ ├── products.pug │ │ │ ├── profile.pug │ │ │ ├── register.pug │ │ │ └── wishlist.pug │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ └── typings.d.ts ├── fastify-react │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── dev.js │ │ └── init-db.js │ ├── src-init │ │ ├── client │ │ │ ├── index.html │ │ │ ├── index.tsx │ │ │ └── routes.tsx │ │ ├── index.ts │ │ ├── plugins │ │ │ └── .gitkeep │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── client │ │ │ ├── components │ │ │ │ ├── AddToWishlist.css │ │ │ │ ├── AddToWishlist.tsx │ │ │ │ ├── Cart.css │ │ │ │ ├── Cart.tsx │ │ │ │ ├── HeaderUserMenu.css │ │ │ │ ├── HeaderUserMenu.tsx │ │ │ │ ├── ProductRating.css │ │ │ │ ├── ProductRating.tsx │ │ │ │ ├── ReferralCode.css │ │ │ │ └── ReferralCode.tsx │ │ │ ├── context │ │ │ │ └── auth.tsx │ │ │ ├── index.html │ │ │ ├── index.tsx │ │ │ ├── pages │ │ │ │ ├── admin │ │ │ │ │ ├── order-management.css │ │ │ │ │ ├── order-management.tsx │ │ │ │ │ ├── product-management.css │ │ │ │ │ ├── product-management.tsx │ │ │ │ │ ├── user-management.css │ │ │ │ │ └── user-management.tsx │ │ │ │ ├── home.css │ │ │ │ ├── home.tsx │ │ │ │ ├── login.css │ │ │ │ ├── login.tsx │ │ │ │ ├── not-found.css │ │ │ │ ├── not-found.tsx │ │ │ │ ├── order-detail.css │ │ │ │ ├── order-detail.tsx │ │ │ │ ├── orders.css │ │ │ │ ├── orders.tsx │ │ │ │ ├── product-detail.css │ │ │ │ ├── product-detail.tsx │ │ │ │ ├── products.css │ │ │ │ ├── products.tsx │ │ │ │ ├── profile.css │ │ │ │ ├── profile.tsx │ │ │ │ ├── register.css │ │ │ │ ├── register.tsx │ │ │ │ ├── wishlist.css │ │ │ │ └── wishlist.tsx │ │ │ ├── root.css │ │ │ ├── root.tsx │ │ │ └── routes.tsx │ │ ├── index.ts │ │ ├── libs │ │ │ ├── db.ts │ │ │ └── setup.sql │ │ ├── plugins │ │ │ ├── .gitkeep │ │ │ ├── admin.ts │ │ │ ├── auth.ts │ │ │ ├── cart.ts │ │ │ ├── comments.ts │ │ │ ├── orders.ts │ │ │ ├── product.ts │ │ │ ├── referral.ts │ │ │ ├── register.ts │ │ │ ├── user.ts │ │ │ └── wishlist.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ └── vite.config.ts ├── fastify │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── dev.js │ │ └── init-db.js │ ├── src-init │ │ ├── index.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── index.ts │ │ ├── libs │ │ │ ├── db.ts │ │ │ └── setup.sql │ │ ├── plugins │ │ │ ├── admin.ts │ │ │ ├── auth.ts │ │ │ ├── cart.ts │ │ │ ├── comment.ts │ │ │ ├── home.ts │ │ │ ├── order.ts │ │ │ ├── product.ts │ │ │ ├── profile.ts │ │ │ ├── register.ts │ │ │ └── wishlist.ts │ │ ├── public │ │ │ ├── components │ │ │ │ ├── Cart.js │ │ │ │ └── HeaderUserMenu.js │ │ │ └── css │ │ │ │ ├── admin.css │ │ │ │ ├── comment.css │ │ │ │ ├── header-menu.css │ │ │ │ ├── order.css │ │ │ │ ├── profile.css │ │ │ │ ├── register.css │ │ │ │ ├── style.css │ │ │ │ └── wishlist.css │ │ ├── readme.md │ │ ├── tsconfig.json │ │ └── views │ │ │ ├── 404.ejs │ │ │ ├── admin-orders.ejs │ │ │ ├── admin-products.ejs │ │ │ ├── admin-users.ejs │ │ │ ├── home.ejs │ │ │ ├── layout.ejs │ │ │ ├── login.ejs │ │ │ ├── not-found.ejs │ │ │ ├── order-detail.ejs │ │ │ ├── orders.ejs │ │ │ ├── product-detail.ejs │ │ │ ├── products.ejs │ │ │ ├── profile-not-found.ejs │ │ │ ├── profile.ejs │ │ │ ├── register.ejs │ │ │ └── wishlist.ejs │ ├── tasks.yml │ └── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── flex │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── float │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── form │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── common │ │ │ ├── Contents.js │ │ │ ├── DataQuestion.js │ │ │ ├── LikertQuestion.js │ │ │ ├── MultiSelectionQuestion.js │ │ │ ├── NpsQuestion.js │ │ │ ├── OpenQuestion.js │ │ │ ├── Question.js │ │ │ ├── RankingQuestion.js │ │ │ ├── RatingQuestion.js │ │ │ ├── SingleSelectionQuestion.js │ │ │ ├── Survey.js │ │ │ └── util │ │ │ │ ├── Draggable.js │ │ │ │ └── util.js │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── grid │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── jotai │ ├── .evalignore │ ├── mocks │ │ └── blog.ts │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.css │ │ ├── App.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── atoms │ │ │ ├── blog.ts │ │ │ ├── chat.ts │ │ │ ├── comments.ts │ │ │ ├── game.ts │ │ │ ├── markdown.ts │ │ │ ├── room.ts │ │ │ ├── route.ts │ │ │ └── user.ts │ │ ├── components │ │ │ ├── Blog.tsx │ │ │ ├── BlogForm.tsx │ │ │ ├── BlogList.tsx │ │ │ ├── ChatRoom.tsx │ │ │ ├── CommentForm.tsx │ │ │ ├── Comments.tsx │ │ │ ├── Game.tsx │ │ │ ├── GameReplayModal.tsx │ │ │ ├── Header.tsx │ │ │ ├── Login.tsx │ │ │ ├── LoginForm.tsx │ │ │ ├── Main.tsx │ │ │ ├── RoomForm.tsx │ │ │ ├── Rooms.tsx │ │ │ ├── Search.tsx │ │ │ └── ShareGameModal.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ └── utils │ │ │ └── markdown.ts │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.ts │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── less │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common.less │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── src │ │ ├── common.less │ │ ├── common │ │ │ ├── Contents.js │ │ │ ├── Contents.less │ │ │ ├── DataQuestion.js │ │ │ ├── DataQuestion.less │ │ │ ├── LikertQuestion.js │ │ │ ├── LikertQuestion.less │ │ │ ├── MultiSelectionQuestion.js │ │ │ ├── MultiSelectionQuestion.less │ │ │ ├── NpsQuestion.js │ │ │ ├── NpsQuestion.less │ │ │ ├── OpenQuestion.js │ │ │ ├── OpenQuestion.less │ │ │ ├── Question.js │ │ │ ├── Question.less │ │ │ ├── RankingQuestion.js │ │ │ ├── RankingQuestion.less │ │ │ ├── RatingQuestion.js │ │ │ ├── RatingQuestion.less │ │ │ ├── SingleSelectionQuestion.js │ │ │ ├── SingleSelectionQuestion.less │ │ │ ├── SurveyDesign.js │ │ │ ├── SurveyDesign.less │ │ │ ├── SurveyForm.js │ │ │ ├── SurveyForm.less │ │ │ ├── SurveyPreview.js │ │ │ ├── SurveyPreview.less │ │ │ ├── config.less │ │ │ └── util │ │ │ │ ├── Draggable.js │ │ │ │ └── util.js │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── index.js │ └── vite.config.js ├── lowdb │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── build.js │ │ └── dev.js │ ├── src-init │ │ ├── app │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ └── not-found.tsx │ │ ├── global.d.ts │ │ ├── instrumentation.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── actions │ │ │ ├── auth.ts │ │ │ ├── cart.ts │ │ │ ├── order.ts │ │ │ ├── recharge.ts │ │ │ ├── register.ts │ │ │ └── wishlist.ts │ │ ├── app │ │ │ ├── admin │ │ │ │ ├── admin.css │ │ │ │ ├── layout.tsx │ │ │ │ ├── orders │ │ │ │ │ ├── orders-admin.css │ │ │ │ │ └── page.tsx │ │ │ │ ├── products │ │ │ │ │ └── page.tsx │ │ │ │ └── users │ │ │ │ │ └── page.tsx │ │ │ ├── api │ │ │ │ ├── admin │ │ │ │ │ └── orders │ │ │ │ │ │ ├── [orderId] │ │ │ │ │ │ └── approve-refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ ├── auth │ │ │ │ │ ├── logout │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cart │ │ │ │ │ ├── [productId] │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── orders │ │ │ │ │ ├── [orderId] │ │ │ │ │ │ ├── pay │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── comments │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── usernames │ │ │ │ │ └── route.ts │ │ │ │ └── users │ │ │ │ │ └── [username] │ │ │ │ │ └── route.ts │ │ │ ├── global.css │ │ │ ├── home.css │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── login.css │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── order │ │ │ │ └── [orderId] │ │ │ │ │ ├── order-detail.css │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── payment-button.css │ │ │ │ │ ├── payment-button.tsx │ │ │ │ │ ├── refund-button.css │ │ │ │ │ └── refund-button.tsx │ │ │ ├── orders │ │ │ │ ├── orders.css │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ ├── comment-form.css │ │ │ │ │ ├── comments.css │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── product-detail.css │ │ │ │ ├── page.tsx │ │ │ │ └── products.css │ │ │ ├── profile │ │ │ │ └── [username] │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── profile.css │ │ │ │ │ └── recharge-button.tsx │ │ │ ├── register │ │ │ │ ├── page.tsx │ │ │ │ └── register.css │ │ │ └── wishlist │ │ │ │ ├── page.tsx │ │ │ │ └── wishlist.css │ │ ├── components │ │ │ ├── Cart.css │ │ │ ├── Cart.tsx │ │ │ ├── HeaderUserMenu.css │ │ │ └── HeaderUserMenu.tsx │ │ ├── context │ │ │ └── auth.tsx │ │ ├── global.d.ts │ │ ├── instrumentation.ts │ │ ├── middleware.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ ├── tsconfig.json │ │ └── types.ts │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.js │ └── tsconfig.json ├── mobx │ ├── .evalignore │ ├── mocks │ │ └── blog.ts │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.css │ │ ├── App.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── components │ │ │ ├── Blog.tsx │ │ │ ├── BlogForm.tsx │ │ │ ├── BlogList.tsx │ │ │ ├── Chat.tsx │ │ │ ├── Comment.tsx │ │ │ ├── CommentForm.tsx │ │ │ ├── CommentList.tsx │ │ │ ├── GomokuGame.tsx │ │ │ ├── GomokuReplayModal.tsx │ │ │ ├── Header.tsx │ │ │ ├── Login.tsx │ │ │ ├── LoginForm.tsx │ │ │ ├── Main.tsx │ │ │ ├── Rooms.tsx │ │ │ ├── Search.tsx │ │ │ └── ShareGomokuModal.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ ├── stores │ │ │ ├── blog.ts │ │ │ ├── chat.ts │ │ │ ├── comment.ts │ │ │ ├── gomoku.ts │ │ │ ├── room.ts │ │ │ ├── route.ts │ │ │ └── user.ts │ │ └── utils │ │ │ └── markdown.ts │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.ts │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── nextjs │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── dev.js │ │ └── init-db.js │ ├── src-init │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── actions │ │ │ ├── auth.ts │ │ │ └── referer.ts │ │ ├── app │ │ │ ├── admin │ │ │ │ ├── admin.css │ │ │ │ ├── orders │ │ │ │ │ └── page.tsx │ │ │ │ ├── products │ │ │ │ │ └── page.tsx │ │ │ │ └── users │ │ │ │ │ └── page.tsx │ │ │ ├── api │ │ │ │ ├── admin │ │ │ │ │ └── orders │ │ │ │ │ │ ├── [order_id] │ │ │ │ │ │ └── refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ ├── auth │ │ │ │ │ └── route.ts │ │ │ │ ├── cart │ │ │ │ │ └── route.ts │ │ │ │ ├── orders │ │ │ │ │ ├── [order_id] │ │ │ │ │ │ ├── pay │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ │ ├── [product_id] │ │ │ │ │ │ ├── comments │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── users │ │ │ │ │ ├── [username] │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ └── wishlist │ │ │ │ │ └── route.ts │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── login.css │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── order │ │ │ │ ├── [order_id] │ │ │ │ │ └── page.tsx │ │ │ │ └── order.css │ │ │ ├── orders │ │ │ │ ├── orders.css │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── products │ │ │ │ ├── [product_id] │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── products.css │ │ │ ├── profile │ │ │ │ ├── [username] │ │ │ │ │ └── page.tsx │ │ │ │ └── profile.css │ │ │ ├── register │ │ │ │ ├── page.tsx │ │ │ │ └── register.css │ │ │ └── wishlist │ │ │ │ ├── page.tsx │ │ │ │ └── wishlist.css │ │ ├── components │ │ │ ├── Cart.css │ │ │ ├── Cart.tsx │ │ │ ├── HeaderUserMenu.css │ │ │ └── HeaderUserMenu.tsx │ │ ├── context │ │ │ ├── auth.tsx │ │ │ └── cart.tsx │ │ ├── libs │ │ │ ├── db.ts │ │ │ ├── setup.sql │ │ │ └── utils.ts │ │ ├── middleware.ts │ │ ├── next.config.ts │ │ └── tsconfig.json │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ └── typings.d.ts ├── nosql │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ └── dev.js │ ├── src-init │ │ ├── app │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ └── not-found.tsx │ │ ├── instrumentation.node.ts │ │ ├── instrumentation.ts │ │ ├── model │ │ │ └── user.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── actions │ │ │ └── auth.ts │ │ ├── app │ │ │ ├── admin │ │ │ │ ├── layout.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── orders │ │ │ │ │ ├── PassRefundButton.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── style.css │ │ │ │ ├── products │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── style.css │ │ │ │ └── users │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── style.css │ │ │ ├── api │ │ │ │ ├── auth │ │ │ │ │ ├── register │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cart │ │ │ │ │ └── route.ts │ │ │ │ ├── orders │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── pay │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── refund │ │ │ │ │ │ │ ├── pass │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── comments │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── usernames │ │ │ │ │ └── route.ts │ │ │ │ ├── users │ │ │ │ │ └── recharge │ │ │ │ │ │ └── route.ts │ │ │ │ └── wishlist │ │ │ │ │ └── route.ts │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── page.tsx │ │ │ │ └── style.css │ │ │ ├── not-found.tsx │ │ │ ├── order │ │ │ │ └── [id] │ │ │ │ │ ├── PayOrderButton.tsx │ │ │ │ │ ├── RefundButton.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── style.css │ │ │ ├── orders │ │ │ │ ├── page.tsx │ │ │ │ └── style.css │ │ │ ├── page.tsx │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ ├── AddToCartButton.tsx │ │ │ │ │ ├── AddToWishlistButton.tsx │ │ │ │ │ ├── CommentForm.tsx │ │ │ │ │ ├── ProductComments.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── styles.css │ │ │ │ └── page.tsx │ │ │ ├── profile │ │ │ │ └── [username] │ │ │ │ │ ├── RechargeCoinButton.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── style.css │ │ │ ├── register │ │ │ │ ├── page.tsx │ │ │ │ └── style.css │ │ │ └── wishlist │ │ │ │ ├── RemoveFromWishlistButton.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── style.css │ │ ├── components │ │ │ ├── Cart.tsx │ │ │ ├── HeaderUserMenu.tsx │ │ │ ├── cart.css │ │ │ └── style.css │ │ ├── instrumentation.node.ts │ │ ├── instrumentation.ts │ │ ├── middleware.ts │ │ ├── model │ │ │ ├── cart.ts │ │ │ ├── comment.ts │ │ │ ├── order.ts │ │ │ ├── product.ts │ │ │ ├── user.ts │ │ │ └── wishlist.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.js │ └── tsconfig.json ├── nuxt │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── dev.js │ │ └── init-db.js │ ├── src-init │ │ ├── nuxt.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── assets │ │ │ └── css │ │ │ │ └── wishlist.css │ │ ├── components │ │ │ ├── Cart.vue │ │ │ ├── HeaderUserMenu.vue │ │ │ ├── OrderButton.vue │ │ │ └── WishlistButton.vue │ │ ├── composables │ │ │ ├── useCart.ts │ │ │ ├── useMounted.ts │ │ │ └── useUser.ts │ │ ├── error.vue │ │ ├── layouts │ │ │ └── default.vue │ │ ├── libs │ │ │ ├── db.ts │ │ │ └── setup.sql │ │ ├── nuxt.config.ts │ │ ├── pages │ │ │ ├── admin │ │ │ │ ├── orders.vue │ │ │ │ ├── products.vue │ │ │ │ └── users.vue │ │ │ ├── index.vue │ │ │ ├── login.vue │ │ │ ├── order │ │ │ │ └── [order_id].vue │ │ │ ├── orders │ │ │ │ └── index.vue │ │ │ ├── products │ │ │ │ ├── [product_id].vue │ │ │ │ └── index.vue │ │ │ ├── profile │ │ │ │ └── [username].vue │ │ │ ├── register.vue │ │ │ └── wishlist.vue │ │ ├── readme.md │ │ ├── server │ │ │ └── api │ │ │ │ ├── admin │ │ │ │ ├── orders.get.ts │ │ │ │ ├── orders │ │ │ │ │ └── [order_id] │ │ │ │ │ │ └── refund │ │ │ │ │ │ └── approve.post.ts │ │ │ │ └── users.get.ts │ │ │ │ ├── auth.get.ts │ │ │ │ ├── auth.post.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── cart │ │ │ │ ├── [product_id].delete.ts │ │ │ │ ├── clear.post.ts │ │ │ │ ├── index.get.ts │ │ │ │ └── index.post.ts │ │ │ │ ├── comments │ │ │ │ ├── [product_id].get.ts │ │ │ │ ├── check │ │ │ │ │ └── [product_id].get.ts │ │ │ │ └── index.post.ts │ │ │ │ ├── logout.post.ts │ │ │ │ ├── orders │ │ │ │ ├── [order_id].get.ts │ │ │ │ ├── [order_id] │ │ │ │ │ ├── pay.post.ts │ │ │ │ │ └── refund.post.ts │ │ │ │ ├── index.get.ts │ │ │ │ └── index.post.ts │ │ │ │ ├── products.get.ts │ │ │ │ ├── products.post.ts │ │ │ │ ├── products │ │ │ │ └── [product_id].ts │ │ │ │ ├── profile │ │ │ │ ├── [username].get.ts │ │ │ │ └── [username] │ │ │ │ │ └── recharge.post.ts │ │ │ │ ├── register.post.ts │ │ │ │ ├── simple_auth.get.ts │ │ │ │ └── wishlist │ │ │ │ ├── [product_id].delete.ts │ │ │ │ ├── check │ │ │ │ └── [product_id].get.ts │ │ │ │ ├── index.get.ts │ │ │ │ └── index.post.ts │ │ └── tsconfig.json │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ └── typings.d.ts ├── parcel │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ ├── TablerAntennaBars5.svg │ │ └── bird.png │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── .parcelrc │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ └── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ ├── bar.ts │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ ├── TablerAntennaBars5.svg │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ └── version.js │ ├── src │ │ ├── .env │ │ ├── .parcelrc │ │ ├── .proxyrc.js │ │ ├── assets │ │ │ ├── TablerAntennaBars5.svg │ │ │ └── bird.png │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ ├── plugins │ │ │ ├── parcel-optimizer-imagemin.js │ │ │ ├── parcel-remove-console-log.js │ │ │ ├── parcel-reporter-licenses.js │ │ │ ├── parcel-reporter-sourcemap-mover.js │ │ │ ├── parcel-resolver-markdown-i18n.js │ │ │ ├── parcel-transformer-markdown.js │ │ │ └── parcel-virtual-files.js │ │ └── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ ├── bar.ts │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ ├── TablerAntennaBars5.svg │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ └── version.js │ ├── tasks.yml │ └── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── prisma │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ ├── build.js │ │ └── dev.js │ ├── src-init │ │ ├── app │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ └── not-found.tsx │ │ ├── libs │ │ │ └── db.ts │ │ ├── next.config.ts │ │ ├── prisma │ │ │ ├── schema.prisma │ │ │ └── seed.js │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── actions │ │ │ └── auth.ts │ │ ├── app │ │ │ ├── admin │ │ │ │ ├── AdminNavigation.tsx │ │ │ │ ├── admin-navigation.css │ │ │ │ ├── admin.css │ │ │ │ ├── layout.tsx │ │ │ │ ├── orders │ │ │ │ │ ├── RefundReviewButton.tsx │ │ │ │ │ ├── orders.css │ │ │ │ │ └── page.tsx │ │ │ │ ├── products │ │ │ │ │ └── page.tsx │ │ │ │ └── users │ │ │ │ │ └── page.tsx │ │ │ ├── api │ │ │ │ ├── auth │ │ │ │ │ ├── logout │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cart │ │ │ │ │ ├── [id] │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── orders │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── pay │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── refund │ │ │ │ │ │ │ ├── approve │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── comments │ │ │ │ │ │ │ ├── eligibility │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── usernames │ │ │ │ │ └── route.ts │ │ │ │ ├── users │ │ │ │ │ └── [username] │ │ │ │ │ │ └── recharge │ │ │ │ │ │ └── route.ts │ │ │ │ └── wishlist │ │ │ │ │ ├── [productId] │ │ │ │ │ └── route.ts │ │ │ │ │ ├── check │ │ │ │ │ └── [productId] │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ ├── global.css │ │ │ ├── home.css │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── login.css │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── order │ │ │ │ └── [id] │ │ │ │ │ ├── PayOrderButton.tsx │ │ │ │ │ ├── RefundButton.tsx │ │ │ │ │ ├── order-detail.css │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── pay-order-button.css │ │ │ │ │ └── refund-button.css │ │ │ ├── orders │ │ │ │ ├── orders.css │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ ├── AddToCartButton.tsx │ │ │ │ │ ├── CommentForm.tsx │ │ │ │ │ ├── ProductComments.tsx │ │ │ │ │ ├── add-to-cart-button.css │ │ │ │ │ ├── comment-form.css │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── product-comments.css │ │ │ │ │ └── product-detail.css │ │ │ │ ├── page.tsx │ │ │ │ └── products.css │ │ │ ├── profile │ │ │ │ └── [username] │ │ │ │ │ ├── RechargeButton.tsx │ │ │ │ │ ├── ReferralCode.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── profile.css │ │ │ │ │ ├── recharge-button.css │ │ │ │ │ └── referral-code.css │ │ │ ├── register │ │ │ │ ├── page.tsx │ │ │ │ ├── register-action.ts │ │ │ │ └── register.css │ │ │ └── wishlist │ │ │ │ ├── page.tsx │ │ │ │ └── wishlist.css │ │ ├── components │ │ │ ├── AddToWishlistButton.tsx │ │ │ ├── Cart.tsx │ │ │ ├── HeaderUserMenu.tsx │ │ │ ├── add-to-wishlist-button.css │ │ │ ├── cart.css │ │ │ └── header-user-menu.css │ │ ├── context │ │ │ └── auth.tsx │ │ ├── libs │ │ │ └── db.ts │ │ ├── middleware.ts │ │ ├── next.config.ts │ │ ├── prisma │ │ │ ├── schema.prisma │ │ │ └── seed.js │ │ ├── readme.md │ │ └── tsconfig.json │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.js │ └── tsconfig.json ├── project-template │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ ├── test │ │ └── init.spec.js │ └── vite.config.js ├── react-no-ts │ ├── .evalignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.css │ │ ├── App.jsx │ │ ├── index.html │ │ └── index.jsx │ ├── src │ │ ├── App.css │ │ ├── App.jsx │ │ ├── Header.jsx │ │ ├── components │ │ │ ├── Blog.jsx │ │ │ ├── BlogForm.jsx │ │ │ ├── BlogList.jsx │ │ │ ├── Comments.jsx │ │ │ ├── Header.jsx │ │ │ ├── Main.jsx │ │ │ ├── Search.jsx │ │ │ ├── Tooltip.jsx │ │ │ └── TruncatedTitle.jsx │ │ ├── context │ │ │ ├── BlogContext.jsx │ │ │ └── FocusContext.jsx │ │ ├── hooks │ │ │ ├── useDelete.jsx │ │ │ ├── useEdit.jsx │ │ │ └── useMarkdown.jsx │ │ ├── index.html │ │ ├── index.jsx │ │ ├── pages │ │ │ └── Game.jsx │ │ ├── router.jsx │ │ ├── store │ │ │ └── Comment.jsx │ │ └── utils │ │ │ └── toast.jsx │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ └── vite.config.ts ├── react │ ├── .evalignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.css │ │ ├── App.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── components │ │ │ ├── Blog.tsx │ │ │ ├── BlogForm.tsx │ │ │ ├── BlogList.tsx │ │ │ ├── Comments.tsx │ │ │ ├── Header.tsx │ │ │ ├── Main.tsx │ │ │ ├── Search.tsx │ │ │ ├── Tooltip.tsx │ │ │ └── TruncatedTitle.tsx │ │ ├── context │ │ │ └── BlogContext.tsx │ │ ├── hooks │ │ │ ├── useDelete.tsx │ │ │ └── useEdit.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ ├── pages │ │ │ └── Game.tsx │ │ ├── router.tsx │ │ ├── store │ │ │ └── Comment.tsx │ │ └── utils │ │ │ ├── markdown.tsx │ │ │ └── toast.tsx │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── readme.md ├── redux │ ├── .evalignore │ ├── mocks │ │ └── blog.ts │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.css │ │ ├── App.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ └── store.tsx │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── components │ │ │ ├── Blog.css │ │ │ ├── Blog.tsx │ │ │ ├── BlogForm.css │ │ │ ├── BlogForm.tsx │ │ │ ├── BlogList.css │ │ │ ├── BlogList.tsx │ │ │ ├── ChatRoom.css │ │ │ ├── ChatRoom.tsx │ │ │ ├── Comment.css │ │ │ ├── Comment.tsx │ │ │ ├── CommentForm.css │ │ │ ├── CommentForm.tsx │ │ │ ├── Comments.tsx │ │ │ ├── CreateRoomForm.css │ │ │ ├── CreateRoomForm.tsx │ │ │ ├── Game.css │ │ │ ├── Game.tsx │ │ │ ├── GameReplayModal.css │ │ │ ├── GameReplayModal.tsx │ │ │ ├── Header.css │ │ │ ├── Header.tsx │ │ │ ├── Login.tsx │ │ │ ├── LoginForm.css │ │ │ ├── LoginForm.tsx │ │ │ ├── Main.css │ │ │ ├── Main.tsx │ │ │ ├── RoomCard.css │ │ │ ├── RoomCard.tsx │ │ │ ├── Rooms.css │ │ │ ├── Rooms.tsx │ │ │ ├── Search.css │ │ │ ├── Search.tsx │ │ │ ├── ShareGameModal.css │ │ │ └── ShareGameModal.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ ├── middleware │ │ │ ├── route.ts │ │ │ └── undo.ts │ │ ├── models │ │ │ ├── blog.ts │ │ │ ├── blogForm.ts │ │ │ ├── chat.ts │ │ │ ├── comment.ts │ │ │ ├── game.ts │ │ │ ├── room.ts │ │ │ ├── route.ts │ │ │ ├── search.ts │ │ │ └── user.ts │ │ ├── store.tsx │ │ └── utils │ │ │ └── markdown.ts │ ├── tasks.yml │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.ts │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── sass │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common.scss │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── src │ │ ├── common.scss │ │ ├── common │ │ │ ├── Contents.js │ │ │ ├── Contents.scss │ │ │ ├── DataQuestion.js │ │ │ ├── DataQuestion.scss │ │ │ ├── LikertQuestion.js │ │ │ ├── LikertQuestion.scss │ │ │ ├── MultiSelectionQuestion.js │ │ │ ├── MultiSelectionQuestion.scss │ │ │ ├── NpsQuestion.js │ │ │ ├── NpsQuestion.scss │ │ │ ├── OpenQuestion.js │ │ │ ├── OpenQuestion.scss │ │ │ ├── Question.js │ │ │ ├── Question.scss │ │ │ ├── RankingQuestion.js │ │ │ ├── RankingQuestion.scss │ │ │ ├── RatingQuestion.js │ │ │ ├── RatingQuestion.scss │ │ │ ├── SingleSelectionQuestion.js │ │ │ ├── SingleSelectionQuestion.scss │ │ │ ├── SurveyDesign.js │ │ │ ├── SurveyDesign.scss │ │ │ ├── SurveyForm.js │ │ │ ├── SurveyForm.scss │ │ │ ├── SurveyPreview.js │ │ │ ├── SurveyPreview.scss │ │ │ ├── config.scss │ │ │ └── util │ │ │ │ ├── Draggable.js │ │ │ │ └── util.js │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── index.js │ └── vite.config.js ├── selector │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ ├── index.html │ │ ├── index.js │ │ └── util.js │ ├── tasks.yml │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── sequelize │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── scripts │ │ └── dev.js │ ├── src-init │ │ ├── app │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ └── not-found.tsx │ │ ├── instrumentation.node.ts │ │ ├── instrumentation.ts │ │ ├── libs │ │ │ └── db.ts │ │ ├── model │ │ │ ├── index.ts │ │ │ └── user.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── src │ │ ├── actions │ │ │ ├── auth.ts │ │ │ └── register.ts │ │ ├── app │ │ │ ├── admin │ │ │ │ ├── orders │ │ │ │ │ ├── orders-admin.css │ │ │ │ │ └── page.tsx │ │ │ │ ├── products │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── products-admin.css │ │ │ │ └── users │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── users-admin.css │ │ │ ├── api │ │ │ │ ├── admin │ │ │ │ │ └── orders │ │ │ │ │ │ ├── [id] │ │ │ │ │ │ └── approve-refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ ├── auth │ │ │ │ │ ├── logout │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cart │ │ │ │ │ └── route.ts │ │ │ │ ├── orders │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── payment │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── refund │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── comments │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── recharge │ │ │ │ │ └── route.ts │ │ │ │ ├── usernames │ │ │ │ │ └── route.ts │ │ │ │ ├── users │ │ │ │ │ └── route.ts │ │ │ │ └── wishlist │ │ │ │ │ └── route.ts │ │ │ ├── global.css │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── login.css │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── order │ │ │ │ └── [id] │ │ │ │ │ ├── order-detail.css │ │ │ │ │ └── page.tsx │ │ │ ├── orders │ │ │ │ ├── orders.css │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── product-comments.css │ │ │ │ │ └── product-detail.css │ │ │ │ ├── page.tsx │ │ │ │ └── products.css │ │ │ ├── profile │ │ │ │ └── [username] │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── profile.css │ │ │ ├── register │ │ │ │ ├── page.tsx │ │ │ │ └── register.css │ │ │ └── wishlist │ │ │ │ ├── page.tsx │ │ │ │ └── wishlist.css │ │ ├── components │ │ │ ├── Cart.tsx │ │ │ ├── HeaderUserMenu.tsx │ │ │ ├── RechargeButton.tsx │ │ │ ├── ReferralCode.tsx │ │ │ ├── cart.css │ │ │ ├── headerUserMenu.css │ │ │ ├── rechargeButton.css │ │ │ └── referralCode.css │ │ ├── instrumentation.node.ts │ │ ├── instrumentation.ts │ │ ├── libs │ │ │ └── db.ts │ │ ├── middleware.ts │ │ ├── model │ │ │ ├── cart.ts │ │ │ ├── comment.ts │ │ │ ├── index.ts │ │ │ ├── order.ts │ │ │ ├── orderItem.ts │ │ │ ├── product.ts │ │ │ ├── user.ts │ │ │ └── wishlist.ts │ │ ├── next.config.ts │ │ ├── readme.md │ │ └── tsconfig.json │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.js │ └── tsconfig.json ├── styled-components │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── src │ │ ├── App.tsx │ │ ├── components │ │ │ ├── AddBlog.tsx │ │ │ ├── BlogForm.tsx │ │ │ ├── Button.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Header.tsx │ │ │ ├── Main.tsx │ │ │ ├── Markdown.tsx │ │ │ ├── Modal.tsx │ │ │ ├── ReadBlogs.tsx │ │ │ ├── ThemePage.tsx │ │ │ └── Tooltip.tsx │ │ ├── context │ │ │ ├── BlogContext.tsx │ │ │ └── ThemeContext.tsx │ │ ├── global.style.tsx │ │ ├── index.html │ │ ├── index.tsx │ │ └── utils │ │ │ └── toast.tsx │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── helpers.js │ ├── tsconfig.json │ └── vite.config.ts ├── stylus │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common.styl │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── src │ │ ├── common.styl │ │ ├── common │ │ │ ├── Contents.js │ │ │ ├── Contents.styl │ │ │ ├── DataQuestion.js │ │ │ ├── DataQuestion.styl │ │ │ ├── LikertQuestion.js │ │ │ ├── LikertQuestion.styl │ │ │ ├── MultiSelectionQuestion.js │ │ │ ├── MultiSelectionQuestion.styl │ │ │ ├── NpsQuestion.js │ │ │ ├── NpsQuestion.styl │ │ │ ├── OpenQuestion.js │ │ │ ├── OpenQuestion.styl │ │ │ ├── Question.js │ │ │ ├── Question.styl │ │ │ ├── RankingQuestion.js │ │ │ ├── RankingQuestion.styl │ │ │ ├── RatingQuestion.js │ │ │ ├── RatingQuestion.styl │ │ │ ├── SingleSelectionQuestion.js │ │ │ ├── SingleSelectionQuestion.styl │ │ │ ├── SurveyDesign.js │ │ │ ├── SurveyDesign.styl │ │ │ ├── SurveyForm.js │ │ │ ├── SurveyForm.styl │ │ │ ├── SurveyPreview.js │ │ │ ├── SurveyPreview.styl │ │ │ ├── config.styl │ │ │ └── util │ │ │ │ ├── Draggable.js │ │ │ │ └── util.js │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.html │ │ └── preview.js │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── index.js │ └── vite.config.js ├── survey │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── design.css │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.css │ │ ├── preview.html │ │ └── preview.js │ ├── src │ │ ├── common.css │ │ ├── common │ │ │ ├── Contents.js │ │ │ ├── DataQuestion.js │ │ │ ├── LikertQuestion.js │ │ │ ├── MultiSelectionQuestion.js │ │ │ ├── NpsQuestion.js │ │ │ ├── OpenQuestion.js │ │ │ ├── Question.js │ │ │ ├── RankingQuestion.js │ │ │ ├── RatingQuestion.js │ │ │ ├── SingleSelectionQuestion.js │ │ │ ├── SurveyDesign.js │ │ │ ├── SurveyForm.js │ │ │ ├── SurveyPreview.js │ │ │ └── util │ │ │ │ ├── Draggable.js │ │ │ │ └── util.js │ │ ├── design.css │ │ ├── design.html │ │ ├── design.js │ │ ├── preview.css │ │ ├── preview.html │ │ └── preview.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ └── index.js ├── svelte │ ├── .evalignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.svelte │ │ ├── index.html │ │ └── index.ts │ ├── src │ │ ├── App.svelte │ │ ├── components │ │ │ ├── Blog.svelte │ │ │ ├── BlogForm.svelte │ │ │ ├── BlogList.svelte │ │ │ ├── Comments.svelte │ │ │ ├── Header.svelte │ │ │ ├── Main.svelte │ │ │ ├── Portal.svelte │ │ │ ├── Search.svelte │ │ │ ├── ToastDisplay.svelte │ │ │ ├── Tooltip.svelte │ │ │ └── TruncatedTitle.svelte │ │ ├── index.html │ │ ├── index.ts │ │ ├── pages │ │ │ └── Game.svelte │ │ ├── router.ts │ │ ├── store.ts │ │ ├── stores │ │ │ ├── blogStore.ts │ │ │ └── commentStore.ts │ │ └── utils │ │ │ ├── markdown.ts │ │ │ └── toast.ts │ ├── svelte.config.js │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.mts ├── svg-chart │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ ├── data.js │ │ └── res.svg │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common │ │ │ ├── Chart.js │ │ │ ├── Chart.scss │ │ │ ├── LineChart.js │ │ │ └── config.scss │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── src │ │ ├── assets │ │ ├── common │ │ │ ├── AreaChart.js │ │ │ ├── BarChart.js │ │ │ ├── Chart.js │ │ │ ├── Chart.scss │ │ │ ├── ChartTheme.js │ │ │ ├── DoughnutChart.js │ │ │ ├── LineChart.js │ │ │ ├── PieChart.js │ │ │ ├── ScatterChart.js │ │ │ ├── StepChart.js │ │ │ ├── config.scss │ │ │ └── util.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── tasks.yml │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── util.js │ └── vite.config.js ├── svg-solar │ ├── .gitignore │ ├── assets │ │ ├── bg.png │ │ └── data.json │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common │ │ │ ├── System.scss │ │ │ └── config.scss │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── src │ │ ├── assets │ │ ├── common │ │ │ ├── Body.js │ │ │ ├── CenterBody.js │ │ │ ├── SubBody.js │ │ │ ├── System.js │ │ │ ├── System.scss │ │ │ ├── config.scss │ │ │ ├── util.js │ │ │ └── util.spec.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── util.js │ └── vite.config.js ├── svg │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── common │ │ │ ├── Canvas.scss │ │ │ ├── Toolkit.js │ │ │ ├── Toolkit.scss │ │ │ ├── config.scss │ │ │ └── util.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── src │ │ ├── common │ │ │ ├── Canvas.js │ │ │ ├── Canvas.scss │ │ │ ├── Toolkit.js │ │ │ ├── Toolkit.scss │ │ │ ├── config.scss │ │ │ ├── shape │ │ │ │ ├── Circle.js │ │ │ │ ├── Curve.js │ │ │ │ ├── Ellipse.js │ │ │ │ ├── Hexagon.js │ │ │ │ ├── Line.js │ │ │ │ ├── Polyline.js │ │ │ │ ├── Rect.js │ │ │ │ ├── Shape.js │ │ │ │ ├── Text.js │ │ │ │ ├── Trapezoid.js │ │ │ │ └── Triangle.js │ │ │ ├── util.js │ │ │ └── util.spec.js │ │ ├── index.html │ │ ├── index.js │ │ └── index.scss │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── util │ │ │ └── util.js │ └── vite.config.js ├── table │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── common │ │ │ ├── drag.js │ │ │ ├── key.js │ │ │ ├── layout.js │ │ │ ├── menu.js │ │ │ ├── mouse.js │ │ │ ├── table.js │ │ │ ├── util.js │ │ │ └── util.spec.js │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── tailwind │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ └── tailwind-css.js │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ └── index.html │ ├── tasks.jsonl │ └── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── threejs │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ └── index.js │ ├── src │ │ ├── animation.js │ │ ├── candy.js │ │ ├── control.js │ │ ├── fence.js │ │ ├── floor.js │ │ ├── index.html │ │ ├── index.js │ │ ├── light.js │ │ ├── portal.js │ │ └── snake.js │ ├── tasks.jsonl │ ├── test-utils │ │ └── index.js │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── typescript │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── types │ │ │ └── setter.ts │ ├── src │ │ └── types │ │ │ ├── schema.ts │ │ │ ├── setter-check.ts │ │ │ └── setter.ts │ ├── tasks.yml │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ ├── task-9.spec.js │ │ └── utils │ │ │ └── index.js │ ├── tsconfig.json │ └── vite.config.ts ├── unocss │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ └── index.html │ ├── src │ │ ├── index.html │ │ └── index.js │ ├── tasks.jsonl │ ├── test │ │ ├── init.spec.js │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── uno.config.js │ └── vite.config.js ├── vite │ ├── .evalignore │ ├── .gitignore │ ├── assets │ │ ├── TablerAntennaBars5.svg │ │ └── bird.png │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ └── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ ├── bar.ts │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ ├── TablerAntennaBars5.svg │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ └── version.js │ ├── src │ │ ├── assets │ │ │ ├── TablerAntennaBars5.svg │ │ │ └── bird.png │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ ├── plugins │ │ │ ├── imagemin.mjs │ │ │ ├── license-extractor.mjs │ │ │ ├── markdown.mjs │ │ │ ├── mock.mjs │ │ │ ├── remove-console-log.mjs │ │ │ ├── sourcemap-mover.mjs │ │ │ └── virtual-files.mjs │ │ ├── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ │ ├── bar.ts │ │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ │ ├── TablerAntennaBars5.svg │ │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ └── version.js │ │ └── vite.config.mjs │ ├── tasks.yml │ └── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js ├── vue │ ├── .evalignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── App.vue │ │ ├── index.html │ │ └── main.ts │ ├── src │ │ ├── App.vue │ │ ├── components │ │ │ ├── Blog.vue │ │ │ ├── BlogForm.vue │ │ │ ├── BlogList.vue │ │ │ ├── Comments.vue │ │ │ ├── Header.vue │ │ │ ├── Main.vue │ │ │ ├── Search.vue │ │ │ ├── Tooltip.vue │ │ │ └── TruncatedTitle.vue │ │ ├── composables │ │ │ ├── useDelete.ts │ │ │ ├── useEdit.ts │ │ │ └── useMarkdown.ts │ │ ├── context │ │ │ └── BlogContext.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── pages │ │ │ └── Game.vue │ │ ├── store │ │ │ └── comment.ts │ │ └── utils │ │ │ └── toast.ts │ ├── tasks.jsonl │ ├── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── webpack │ ├── .evalignore │ ├── .gitignore │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ │ ├── bar.ts │ │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ │ ├── TablerAntennaBars5.svg │ │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ └── version.js │ │ └── webpack.config.js │ ├── src │ │ ├── index.html │ │ ├── mock.json │ │ ├── package.json │ │ ├── plugins │ │ │ ├── image-compression-plugin.js │ │ │ ├── license-extractor-plugin.js │ │ │ ├── markdown-loader.js │ │ │ ├── markdown-resolver-plugin.js │ │ │ └── source-maps-plugin.js │ │ ├── src │ │ │ ├── alias.js │ │ │ ├── component.jsx │ │ │ ├── component.vue │ │ │ ├── files │ │ │ │ ├── bar.ts │ │ │ │ └── foo.ts │ │ │ ├── hello.md │ │ │ ├── hello.zh.md │ │ │ ├── images │ │ │ │ ├── TablerAntennaBars5.svg │ │ │ │ └── bird.png │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.module.less │ │ │ ├── index.ts │ │ │ ├── types │ │ │ │ └── markdown.d.ts │ │ │ └── version.js │ │ ├── tsconfig.json │ │ ├── virtual-files-loader.js │ │ └── webpack.config.js │ ├── tasks.yml │ └── test │ │ ├── task-1.spec.js │ │ ├── task-10.spec.js │ │ ├── task-11.spec.js │ │ ├── task-12.spec.js │ │ ├── task-13.spec.js │ │ ├── task-14.spec.js │ │ ├── task-15.spec.js │ │ ├── task-16.spec.js │ │ ├── task-17.spec.js │ │ ├── task-18.spec.js │ │ ├── task-19.spec.js │ │ ├── task-2.spec.js │ │ ├── task-20.spec.js │ │ ├── task-3.spec.js │ │ ├── task-4.spec.js │ │ ├── task-5.spec.js │ │ ├── task-6.spec.js │ │ ├── task-7.spec.js │ │ ├── task-8.spec.js │ │ └── task-9.spec.js └── zustand │ ├── .evalignore │ ├── mocks │ └── blog.ts │ ├── package.json │ ├── playwright.config.js │ ├── readme.md │ ├── src-init │ ├── App.css │ ├── App.tsx │ ├── index.html │ └── index.tsx │ ├── src │ ├── App.css │ ├── App.tsx │ ├── components │ │ ├── Blog.tsx │ │ ├── BlogForm.tsx │ │ ├── BlogList.tsx │ │ ├── ChatRoom.tsx │ │ ├── CommentForm.tsx │ │ ├── CommentList.tsx │ │ ├── Game.tsx │ │ ├── GameReplayModal.tsx │ │ ├── Header.tsx │ │ ├── Login.tsx │ │ ├── Main.tsx │ │ ├── Rooms.tsx │ │ ├── Search.tsx │ │ └── ShareGameModal.tsx │ ├── index.html │ ├── index.tsx │ ├── stores │ │ ├── blog.ts │ │ ├── chat.ts │ │ ├── comment.ts │ │ ├── game.ts │ │ ├── room.ts │ │ ├── route.ts │ │ └── user.ts │ └── utils │ │ └── markdown.ts │ ├── tasks.yml │ ├── test │ ├── task-1.spec.js │ ├── task-10.spec.js │ ├── task-11.spec.js │ ├── task-12.spec.js │ ├── task-13.spec.js │ ├── task-14.spec.js │ ├── task-15.spec.js │ ├── task-16.spec.js │ ├── task-17.spec.js │ ├── task-18.spec.js │ ├── task-19.spec.js │ ├── task-2.spec.js │ ├── task-20.spec.js │ ├── task-3.spec.js │ ├── task-4.spec.js │ ├── task-5.spec.js │ ├── task-6.spec.js │ ├── task-7.spec.js │ ├── task-8.spec.js │ ├── task-9.spec.js │ └── utils │ │ └── helpers.ts │ ├── tsconfig.json │ ├── typings.d.ts │ └── vite.config.ts ├── rush.json ├── scripts ├── daily.sh ├── publish.sh ├── run.sh └── test_build.sh ├── start.dockerfile └── tools ├── bench-agent ├── .gitignore ├── package.json ├── src │ ├── agent.ts │ ├── index.ts │ ├── llm │ │ ├── aliyun.ts │ │ ├── anthropic.ts │ │ ├── base.ts │ │ ├── deepseek.ts │ │ ├── doubao.ts │ │ ├── index.ts │ │ ├── ollama.ts │ │ ├── openai.ts │ │ └── openrouter.ts │ ├── prompt │ │ └── index.ts │ ├── schedule.ts │ ├── type.ts │ └── utils │ │ ├── fetch.ts │ │ ├── markdown.test.ts │ │ ├── markdown.ts │ │ ├── sleep.ts │ │ ├── stream.ts │ │ └── token.ts ├── tsconfig.json └── tsup.config.ts ├── evaluator ├── .gitignore ├── package.json ├── scripts │ └── gen-hugging-face-datasets.js ├── src │ ├── global.d.ts │ ├── ignore │ │ └── index.ts │ ├── index.ts │ ├── logger │ │ └── index.ts │ ├── parser │ │ ├── html.test.ts │ │ ├── html.ts │ │ ├── index.ts │ │ └── type.ts │ ├── plugins │ │ ├── common.ts │ │ ├── index.ts │ │ ├── plugin │ │ │ ├── base │ │ │ │ └── index.ts │ │ │ ├── bench │ │ │ │ └── index.ts │ │ │ ├── custom │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── reporter │ │ │ │ └── index.ts │ │ ├── schedule.ts │ │ └── utils │ │ │ ├── builder.ts │ │ │ ├── context.ts │ │ │ ├── environment.ts │ │ │ ├── index.ts │ │ │ ├── report │ │ │ ├── evaluation-reporter.ts │ │ │ ├── index.ts │ │ │ └── project-reporter.ts │ │ │ ├── tester │ │ │ ├── index.ts │ │ │ ├── playwright.ts │ │ │ └── type.ts │ │ │ └── writer.ts │ ├── runner │ │ ├── evaluator-runner.ts │ │ ├── index.ts │ │ ├── project-runner.ts │ │ └── task-runner │ │ │ ├── default-task-runner.ts │ │ │ ├── index.ts │ │ │ └── init-task-runner.ts │ ├── settings │ │ ├── bench.ts │ │ ├── custom.ts │ │ └── index.ts │ └── utils │ │ ├── array.ts │ │ ├── error.test.ts │ │ ├── error.ts │ │ ├── file-content.ts │ │ ├── file.ts │ │ ├── format.ts │ │ ├── port.ts │ │ ├── process.ts │ │ ├── report.test.ts │ │ ├── report.ts │ │ ├── screenshot.ts │ │ ├── string.test.ts │ │ ├── string.ts │ │ ├── task.test.ts │ │ ├── task.ts │ │ ├── word.test.ts │ │ └── word.ts ├── tsconfig.json └── tsup.config.ts ├── http-agent ├── package.json ├── src │ ├── http-agent.ts │ ├── index.ts │ └── limit.ts ├── tsconfig.json └── tsup.config.ts ├── readme.md └── types ├── package.json ├── src ├── agent.ts ├── chat-message.ts ├── completion.ts ├── config.ts ├── index.ts ├── logger.ts ├── plugin.ts ├── project │ └── index.ts ├── runner.ts └── task.ts ├── tsconfig.json └── tsup.config.ts /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .git/ 3 | dist/ 4 | *.log 5 | .env 6 | 7 | # Rush temporary files 8 | common/deploy/ 9 | common/temp/ 10 | common/autoinstallers/*/.npmrc 11 | **/.rush/temp/ 12 | *.lock 13 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "printWidth": 100, 5 | "semi": false, 6 | "singleQuote": true 7 | } -------------------------------------------------------------------------------- /apps/eval/.gitignore: -------------------------------------------------------------------------------- 1 | report 2 | src/config.json 3 | src/config.json5 -------------------------------------------------------------------------------- /apps/eval/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "target": "es2020", 5 | "module": "esnext", 6 | "strictPropertyInitialization": false, 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "moduleResolution": "node", 10 | "skipLibCheck": true, 11 | "noUnusedLocals": true, 12 | "noImplicitAny": true, 13 | "allowJs": true, 14 | "resolveJsonModule": true, 15 | "types": ["node"], 16 | "typeRoots": ["node_modules/@types"], 17 | "jsx": "react", 18 | "lib": ["es6", "dom", "es2020", "es2019.Array"] 19 | }, 20 | "include": ["./src"], 21 | "exclude": ["node_modules"] 22 | } 23 | -------------------------------------------------------------------------------- /common/autoinstallers/rush-commands/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rush-commands", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "concurrently": "^8.2.2" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /common/config/rush/repo-state.json: -------------------------------------------------------------------------------- 1 | // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. 2 | { 3 | "preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" 4 | } 5 | -------------------------------------------------------------------------------- /common/config/rush/version-policies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "policyName": "publishPolicy", 4 | "definitionName": "lockStepVersion", 5 | "version": "1.0.1-alpha.3", 6 | "nextBump": "prerelease" 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /docs/assets/pass-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/docs/assets/pass-1.png -------------------------------------------------------------------------------- /docs/assets/sotas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/docs/assets/sotas.png -------------------------------------------------------------------------------- /libraries/shop-test-util/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/shop-test-util", 3 | "version": "0.0.1", 4 | "main": "src/index.js", 5 | "scripts": { 6 | "build": "", 7 | "test": "" 8 | }, 9 | "dependencies": { 10 | "@web-bench/test-util": "workspace:*", 11 | "@playwright/test": "^1.49.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libraries/summary/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/summary", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./src/index.js" 7 | }, 8 | "dependencies": { 9 | "ignore": "^6.0.2" 10 | }, 11 | "devDependencies": {} 12 | } 13 | -------------------------------------------------------------------------------- /libraries/test-util/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/test-util", 3 | "version": "0.0.1", 4 | "main": "src/index.js", 5 | "bin": "./test.sh", 6 | "scripts": { 7 | "build": "", 8 | "test": "" 9 | }, 10 | "dependencies": { 11 | "@playwright/test": "^1.49.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /projects/.gitignore: -------------------------------------------------------------------------------- 1 | /sample/ 2 | /new-project/ 3 | screenshot-*.spec.js -------------------------------------------------------------------------------- /projects/angular/.evalignore: -------------------------------------------------------------------------------- 1 | .angular 2 | angular.json 3 | tsconfig.json 4 | tsconfig.app.json 5 | index.html 6 | main.ts -------------------------------------------------------------------------------- /projects/angular/src-init/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | imports: [], 6 | template: `
Empty
`, 7 | styles: ` 8 | body { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | `, 13 | }) 14 | export class AppComponent { 15 | title = 'angular' 16 | } 17 | -------------------------------------------------------------------------------- /projects/angular/src-init/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core' 2 | import { provideRouter } from '@angular/router' 3 | 4 | import { routes } from './app.routes' 5 | 6 | export const appConfig: ApplicationConfig = { 7 | providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)], 8 | } 9 | -------------------------------------------------------------------------------- /projects/angular/src-init/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router' 2 | 3 | export const routes: Routes = [] 4 | -------------------------------------------------------------------------------- /projects/angular/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blog 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/angular/src-init/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser' 2 | import { appConfig } from './app.config' 3 | import { AppComponent } from './app.component' 4 | 5 | bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)) 6 | -------------------------------------------------------------------------------- /projects/angular/src-init/readme.md: -------------------------------------------------------------------------------- 1 | 2 | # Angular Blog System 3 | 4 | This is an **Angular(v19)** Blog System project. 5 | 6 | Here is the libs used in this project: 7 | 8 | - "@angular/animations": "^19.0.0" 9 | - "@angular/common": "^19.0.0" 10 | - "@angular/compiler": "^19.0.0" 11 | - "@angular/core": "^19.0.0" 12 | - "@angular/forms": "^19.0.0" 13 | - "@angular/platform-browser": "^19.0.0" 14 | - "@angular/platform-browser-dynamic": "^19.0.0" 15 | - "@angular/router": "^19.0.0" 16 | - "rxjs": "~7.8.0" 17 | - "tslib": "^2.3.0" 18 | - "zone.js": "~0.15.0" 19 | -------------------------------------------------------------------------------- /projects/angular/src-init/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/angular/src-init/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ 2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ 3 | { 4 | "extends": "./tsconfig.json", 5 | "compilerOptions": { 6 | "outDir": "./out-tsc/app", 7 | "types": [] 8 | }, 9 | "files": [ 10 | "main.ts" 11 | ], 12 | "include": [ 13 | "**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /projects/angular/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blog 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/angular/src/readme.md: -------------------------------------------------------------------------------- 1 | # Angular Blog System 2 | 3 | This is an **Angular(v19)** Blog System project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - "@angular/animations": "^19.0.0" 8 | - "@angular/common": "^19.0.0" 9 | - "@angular/compiler": "^19.0.0" 10 | - "@angular/core": "^19.0.0" 11 | - "@angular/forms": "^19.0.0" 12 | - "@angular/platform-browser": "^19.0.0" 13 | - "@angular/platform-browser-dynamic": "^19.0.0" 14 | - "@angular/router": "^19.0.0" 15 | - "rxjs": "~7.8.0" 16 | - "tslib": "^2.3.0" 17 | - "zone.js": "~0.15.0" -------------------------------------------------------------------------------- /projects/angular/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ 2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ 3 | { 4 | "extends": "./tsconfig.json", 5 | "compilerOptions": { 6 | "outDir": "./out-tsc/app", 7 | "types": [] 8 | }, 9 | "files": [ 10 | "main.ts" 11 | ], 12 | "include": [ 13 | "**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /projects/bom/.gitignore: -------------------------------------------------------------------------------- 1 | src-*/ 2 | !src-init -------------------------------------------------------------------------------- /projects/bom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/bom", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "type": "module", 8 | "scripts": { 9 | "build": "", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/bom/src-init/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/bom/src-init/index.css -------------------------------------------------------------------------------- /projects/bom/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SWE101-Bench BOM 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /projects/bom/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/calculator-files/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/calculator-files", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/calculator-files/readme.md: -------------------------------------------------------------------------------- 1 | # Calculator with multiple code files 2 | 3 | ## [Evaluate](../readme.md) -------------------------------------------------------------------------------- /projects/calculator-files/src-init/index.css: -------------------------------------------------------------------------------- 1 | .calculator { 2 | width: 300px; 3 | margin: 50px auto; 4 | padding: 20px; 5 | border: 1px solid #ccc; 6 | border-radius: 5px; 7 | } 8 | .display { 9 | width: 100%; 10 | height: 40px; 11 | margin-bottom: 10px; 12 | text-align: right; 13 | font-size: 24px; 14 | } 15 | .buttons { 16 | display: grid; 17 | grid-template-columns: repeat(4, 1fr); 18 | gap: 5px; 19 | } 20 | button { 21 | padding: 10px; 22 | font-size: 18px; 23 | border: 1px solid #999; 24 | border-radius: 5px; 25 | cursor: pointer; 26 | } 27 | button:hover { 28 | background-color: #eee; 29 | } 30 | -------------------------------------------------------------------------------- /projects/calculator-files/src-init/index.js: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | let displayValue = '' 3 | 4 | function calculate(value) { 5 | if (value === 'C') { 6 | displayValue = '' 7 | } else if (value === '=') { 8 | try { 9 | displayValue = eval(displayValue).toString() 10 | } catch (error) { 11 | displayValue = 'Error' 12 | } 13 | } else { 14 | displayValue += value 15 | } 16 | 17 | document.getElementById('display').value = displayValue 18 | } 19 | -------------------------------------------------------------------------------- /projects/calculator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/calculator", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/calculator/readme.md: -------------------------------------------------------------------------------- 1 | # Calculator 2 | 3 | ## [Evaluate](../readme.md) -------------------------------------------------------------------------------- /projects/canvas/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ -------------------------------------------------------------------------------- /projects/canvas/.gitignore: -------------------------------------------------------------------------------- 1 | src/assets 2 | src/assets/ 3 | -------------------------------------------------------------------------------- /projects/canvas/assets/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/canvas/assets/bg.png -------------------------------------------------------------------------------- /projects/canvas/assets/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/canvas/assets/bird.png -------------------------------------------------------------------------------- /projects/canvas/assets/fg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/canvas/assets/fg.png -------------------------------------------------------------------------------- /projects/canvas/assets/pipeDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/canvas/assets/pipeDown.png -------------------------------------------------------------------------------- /projects/canvas/assets/pipeUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/canvas/assets/pipeUp.png -------------------------------------------------------------------------------- /projects/canvas/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Canvas Example 7 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/canvas/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Canvas 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/chart/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ -------------------------------------------------------------------------------- /projects/chart/.gitignore: -------------------------------------------------------------------------------- 1 | src-all 2 | src-init/assets -------------------------------------------------------------------------------- /projects/chart/assets/data.js: -------------------------------------------------------------------------------- 1 | export const data = { 2 | labels: ['2025.1.1', '2025.1.2', '2025.1.3', '2025.1.4', '2025.1.5'], 3 | datasets: [ 4 | { label: 'Pass@2', data: [20.0, 30.0, 35.0, 30.0, 40.0] }, 5 | { label: 'Pass@1', data: [10.0, 15.0, 25.0, 20.0, 30.0] }, 6 | { label: 'Error@1', data: [5.0, 6.0, 4.0, 8.0, 7.0] }, 7 | ], 8 | } 9 | -------------------------------------------------------------------------------- /projects/chart/assets/res.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /projects/chart/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/chart", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "type": "module", 8 | "scripts": { 9 | "start": "vite src --config vite.config.js", 10 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 11 | "test": "npx @web-bench/test-util" 12 | }, 13 | "author": "luics", 14 | "devDependencies": { 15 | "@playwright/test": "^1.49.1", 16 | "@types/node": "^22.7.9", 17 | "@web-bench/test-util": "workspace:*", 18 | "vite": "^6.2.2", 19 | "sass-embedded": "~1.83.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/chart/readme.md: -------------------------------------------------------------------------------- 1 | # web-bench-chart 2 | 3 | ## [Evaluate](../readme.md) 4 | 5 | ## Project Design 6 | 7 | We will create a minimal Chart Builder project to generate a chart with user's config. Basic LineChart is from project [svg-chart](../svg-chart/readme.md). 8 | 9 | ### Tasks 10 | 11 | 1. Config Axes 12 | 2. Config Grids 13 | 3. Config Legends 14 | 4. Config DataLabels 15 | 5. Config PointStyle 16 | 6. Config Datasets 17 | 7. Tooltips 18 | 8. Smooth Line Chart 19 | 9. Click Legend 20 | 10. Scatter Chart 21 | 11. Step Chart 22 | 12. Area Chart 23 | 13. Bar Chart 24 | 14. Bar Chart DataLabel 25 | 15. Bar Chart Tooltip 26 | 16. Pie Chart 27 | 17. Doughnut Chart 28 | 18. Pie Chart DataLabel 29 | 19. Pie Chart Animation 30 | 20. Pie Chart Tooltip 31 | -------------------------------------------------------------------------------- /projects/chart/src-init/common/ChartTheme.js: -------------------------------------------------------------------------------- 1 | const theme = 'default' 2 | 3 | export const themes = { 4 | default: { 5 | colors: ['#6083E7', '#DB746B', '#68D5BE', '#445DA3', '#9B524B', '#BDC0C2'], 6 | }, 7 | dark: { 8 | colors: ['#BDCCF4', '#BBE3F5', '#B8EAE1', '#C0E7B4', '#DFEB9E', '#F2E4AF'], 9 | }, 10 | } 11 | 12 | export function getColor(index) { 13 | const colors = themes[theme].colors 14 | return colors[index % colors.length] 15 | } 16 | 17 | export const col = getColor 18 | -------------------------------------------------------------------------------- /projects/chart/src-init/index.js: -------------------------------------------------------------------------------- 1 | import { data } from './assets/data.js' 2 | import { LineChart } from './common/LineChart.js' 3 | 4 | document.addEventListener('DOMContentLoaded', async () => { 5 | document.querySelector('#axes').addEventListener('change', createChart) 6 | }) 7 | 8 | async function createChart() { 9 | // code here 10 | } 11 | -------------------------------------------------------------------------------- /projects/chart/src-init/index.scss: -------------------------------------------------------------------------------- 1 | @use './common/config'; 2 | @use './common/Chart'; 3 | 4 | -------------------------------------------------------------------------------- /projects/chart/src/assets: -------------------------------------------------------------------------------- 1 | ../assets -------------------------------------------------------------------------------- /projects/chart/src/index.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use './common/config'; 16 | @use './common/Chart'; 17 | 18 | -------------------------------------------------------------------------------- /projects/color/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/color", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/color/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/demo", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": false 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/demo/readme.md: -------------------------------------------------------------------------------- 1 | # Demo 2 | 3 | ## [Evaluate](../readme.md) 4 | 5 | ## Project Design 6 | 7 | See [Project Tutorial - Project Design](https://github.com/bytedance/web-bench/wiki/Project-Tutorial-CN#2-%E8%AE%BE%E8%AE%A1%E9%A1%B9%E7%9B%AE). 8 | 9 | -------------------------------------------------------------------------------- /projects/demo/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Project Demo 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /projects/demo/tasks.jsonl: -------------------------------------------------------------------------------- 1 | {"id":"task-1","date":"2025-5-21","level":"easy","description":"Add a user text input (id 'user') and a password input (id 'password') in page body. Add a login button (id 'login') and a reset button (id 'reset') in page body."} 2 | {"id":"task-2","date":"2025-5-21","level":"easy","description":"Click button reset to clear the content of user and password input."} 3 | {"id":"task-3","date":"2025-5-21","level":"easy","description":"Click button login to validate the content of user and password input. When user content is empty, show message 'Invalid user' in alert dialog. When password content is empty, show message 'Invalid password' in alert dialog. Otherwise, show message 'Login successfully' in alert dialog."} -------------------------------------------------------------------------------- /projects/demo/test/init.spec.js: -------------------------------------------------------------------------------- 1 | const { test, expect } = require('@playwright/test') 2 | const exp = require('constants') 3 | 4 | test.beforeEach(async ({ page }) => { 5 | await page.goto('/index.html') 6 | }) 7 | 8 | test('body', async ({ page }) => { 9 | await expect(page.locator('body')).toBeAttached() 10 | }) 11 | 12 | test('root', async ({ page }) => { 13 | await expect(page.locator('.root')).toBeAttached() 14 | }) 15 | -------------------------------------------------------------------------------- /projects/demo/test/task-1.spec.js: -------------------------------------------------------------------------------- 1 | const { test, expect } = require('@playwright/test') 2 | 3 | test.beforeEach(async ({ page }) => { 4 | await page.goto('/index.html') 5 | }) 6 | 7 | test('#user', async ({ page }) => { 8 | await expect(page.locator('#user')).toBeVisible() 9 | }) 10 | 11 | test('#password', async ({ page }) => { 12 | await expect(page.locator('#password')).toBeVisible() 13 | }) 14 | 15 | test('#login', async ({ page }) => { 16 | await expect(page.locator('#login')).toBeVisible() 17 | }) 18 | 19 | test('#reset', async ({ page }) => { 20 | await expect(page.locator('#reset')).toBeVisible() 21 | }) 22 | -------------------------------------------------------------------------------- /projects/demo/test/task-2.spec.js: -------------------------------------------------------------------------------- 1 | const { test, expect } = require('@playwright/test') 2 | 3 | test.beforeEach(async ({ page }) => { 4 | await page.goto('/index.html') 5 | }) 6 | 7 | test('click #reset', async ({ page }) => { 8 | await page.locator('#user').fill('abc') 9 | await page.locator('#password').fill('123') 10 | 11 | await page.locator('#reset').click() 12 | 13 | await expect(page.locator('#user')).toHaveValue('') 14 | await expect(page.locator('#password')).toHaveValue('') 15 | }) 16 | -------------------------------------------------------------------------------- /projects/dom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/dom", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util", 7 | "test1": "npx playwright test" 8 | }, 9 | "author": "luics", 10 | "eval": { 11 | "stable": true 12 | }, 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/dom/src-init/index.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | width: 100%; 9 | height: 100vh; 10 | background-color: #1f1f1f; 11 | color: #eee; 12 | font-family: 'Courier New', Courier, monospace; 13 | } 14 | 15 | .explorer { 16 | width: 100%; 17 | height: 100%; 18 | display: flex; 19 | } 20 | 21 | .leftbar { 22 | width: 300px; 23 | flex-shrink: 0; 24 | height: 100%; 25 | border-right: 1px solid #ccc; 26 | display: flex; 27 | flex-direction: column; 28 | } 29 | 30 | .editor { 31 | flex: 1; 32 | height: 100%; 33 | background-color: #1f1f1f; 34 | color: #eee; 35 | border: 0; 36 | } 37 | -------------------------------------------------------------------------------- /projects/dom/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench DOM 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /projects/dom/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/dom1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/dom1", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "build": "", 9 | "test": "npx @web-bench/test-util", 10 | "test1": "npx playwright test" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /projects/dom1/readme.md: -------------------------------------------------------------------------------- 1 | # web-bench-dom1 2 | 3 | Single file version of [web-bench-dom](../dom/readme.md). 4 | -------------------------------------------------------------------------------- /projects/draw/.gitignore: -------------------------------------------------------------------------------- 1 | src/assets 2 | src-init/assets 3 | src-*/ 4 | !src-init -------------------------------------------------------------------------------- /projects/draw/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/draw", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "start": "vite src --config vite.config.js", 9 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "@web-bench/test-util": "workspace:*", 17 | "vite": "^6.2.2", 18 | "sass-embedded": "~1.83.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/draw/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SWE101-Bench Draw 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/draw/src-init/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/draw/src-init/index.js -------------------------------------------------------------------------------- /projects/draw/src-init/index.scss: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | -------------------------------------------------------------------------------- /projects/esmodule/.gitignore: -------------------------------------------------------------------------------- 1 | src/nodejs/test-* 2 | src-*/ 3 | !src-init -------------------------------------------------------------------------------- /projects/esmodule/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/esmodule", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "type": "module", 8 | "scripts": { 9 | "build": "", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /projects/esmodule/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SWE101-Bench ES-Module 7 | 8 | 9 |

Logs

10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /projects/esmodule/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/esmodule/src/modules/data/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": 1 3 | } 4 | -------------------------------------------------------------------------------- /projects/esmodule/src/modules/data/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "fr": 1 3 | } 4 | -------------------------------------------------------------------------------- /projects/esmodule/src/modules/data/zh.json: -------------------------------------------------------------------------------- 1 | { 2 | "zh": 1 3 | } 4 | -------------------------------------------------------------------------------- /projects/esmodule/src/modules/resource/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1 3 | } 4 | -------------------------------------------------------------------------------- /projects/esmodule/src/modules/util/lang.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export const langs = ['en', 'zh', 'fr'] 16 | -------------------------------------------------------------------------------- /projects/esmodule/src/nodejs/cjs.cjs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | module.exports = { 16 | cjs: true, 17 | } 18 | -------------------------------------------------------------------------------- /projects/esmodule/src/nodejs/data.json: -------------------------------------------------------------------------------- 1 | { "version": 1 } 2 | -------------------------------------------------------------------------------- /projects/expression-editor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/expression-editor", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util", 7 | "src:test": "EVAL_PROJECT_ROOT=$(pwd)/src npx playwright test" 8 | }, 9 | "author": "fengzilong", 10 | "eval": { 11 | "stable": true 12 | }, 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*", 18 | "tinycolor2": "^1.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/expression-editor/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Web-Bench Expression Editor 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/expression-editor/src-init/index.js: -------------------------------------------------------------------------------- 1 | // DO NOT use any library or framework. -------------------------------------------------------------------------------- /projects/expressjs/.evalignore: -------------------------------------------------------------------------------- 1 | tsconfig.json -------------------------------------------------------------------------------- /projects/expressjs/.gitignore: -------------------------------------------------------------------------------- 1 | test.sqlite 2 | .env -------------------------------------------------------------------------------- /projects/expressjs/src-init/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const path = require('path') 3 | const cookieParser = require('cookie-parser') 4 | 5 | const app = express() 6 | 7 | app.use(cookieParser()) 8 | app.use(express.static(path.join(__dirname, 'public'))) 9 | app.set('views', path.join(__dirname, 'views')) 10 | app.set('view engine', 'pug') 11 | 12 | app.listen(process.env.PORT, () => { 13 | console.log(`App listening: http://localhost:${process.env.PORT}`) 14 | }) 15 | -------------------------------------------------------------------------------- /projects/expressjs/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Express.js Shopping Mall 2 | 3 | This is a Express.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - "sqlite3": "^5.1.7" 8 | - "express": "^5.0.1" 9 | - "pug": "^3.0.2" 10 | - "cookie-parser": "^1.4.7" 11 | - "jose": "^5.9.6" 12 | -------------------------------------------------------------------------------- /projects/expressjs/src/readme.md: -------------------------------------------------------------------------------- 1 | # Express.js Shopping Mall 2 | 3 | This is a Express.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - "sqlite3": "^5.1.7" 8 | - "express": "^5.0.1" 9 | - "pug": "^3.0.2" 10 | - "cookie-parser": "^1.4.7" 11 | - "jose": "^5.9.6" 12 | -------------------------------------------------------------------------------- /projects/expressjs/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/fastify-react/.evalignore: -------------------------------------------------------------------------------- 1 | tsconfig.json 2 | client/index.html 3 | .gitkeep -------------------------------------------------------------------------------- /projects/fastify-react/.gitignore: -------------------------------------------------------------------------------- 1 | test.sqlite 2 | .env 3 | public/ -------------------------------------------------------------------------------- /projects/fastify-react/src-init/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/fastify-react/src-init/client/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import { RouterProvider } from 'react-router' 4 | import { router } from './routes' 5 | 6 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 7 | 8 | root.render() 9 | -------------------------------------------------------------------------------- /projects/fastify-react/src-init/client/routes.tsx: -------------------------------------------------------------------------------- 1 | import { createBrowserRouter, Outlet } from 'react-router' 2 | 3 | /** 4 | * React Router v7.5.0 5 | */ 6 | 7 | export const router = createBrowserRouter([ 8 | { 9 | path: '/', 10 | element: , 11 | hasErrorBoundary: true, 12 | children: [ 13 | { 14 | index: true, 15 | element:
Home
, 16 | }, 17 | { 18 | path: '/login', 19 | element:
Login
, 20 | }, 21 | { 22 | path: '*', 23 | element:
404 Error
, 24 | }, 25 | ], 26 | }, 27 | ]) 28 | -------------------------------------------------------------------------------- /projects/fastify-react/src-init/plugins/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/fastify-react/src-init/plugins/.gitkeep -------------------------------------------------------------------------------- /projects/fastify-react/src/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/fastify-react/src/plugins/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/fastify-react/src/plugins/.gitkeep -------------------------------------------------------------------------------- /projects/fastify/.evalignore: -------------------------------------------------------------------------------- 1 | tsconfig.json -------------------------------------------------------------------------------- /projects/fastify/.gitignore: -------------------------------------------------------------------------------- 1 | test.sqlite 2 | .env -------------------------------------------------------------------------------- /projects/fastify/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Fastify Shopping Mall 2 | 3 | This is a Fastify shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - "@fastify/autoload": "~6.3.0" 8 | - "@fastify/cookie": "~11.0.2" 9 | - "@fastify/view": "~11.0.0" 10 | - "fastify": "~5.3.0" 11 | - "fastify-plugin": "~5.0.1" 12 | - "@fastify/static": "~8.1.1" 13 | - "sqlite3": "^5.1.7" 14 | - "ejs": "~3.1.10" 15 | - "jose": "^5.9.6" 16 | -------------------------------------------------------------------------------- /projects/fastify/src/readme.md: -------------------------------------------------------------------------------- 1 | # Fastify Shopping Mall 2 | 3 | This is a Fastify shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - "@fastify/autoload": "~6.3.0" 8 | - "@fastify/cookie": "~11.0.2" 9 | - "@fastify/view": "~11.0.0" 10 | - "fastify": "~5.3.0" 11 | - "fastify-plugin": "~5.0.1" 12 | - "@fastify/static": "~8.1.1" 13 | - "sqlite3": "^5.1.7" 14 | - "ejs": "~3.1.10" 15 | - "jose": "^5.9.6" -------------------------------------------------------------------------------- /projects/fastify/src/views/404.ejs: -------------------------------------------------------------------------------- 1 |

Oops! Looks like you have wandered off the beaten path.

2 | -------------------------------------------------------------------------------- /projects/fastify/src/views/not-found.ejs: -------------------------------------------------------------------------------- 1 |
2 |

Oops! Looks like you have wandered off the beaten path.

3 | 4 |
-------------------------------------------------------------------------------- /projects/fastify/src/views/profile-not-found.ejs: -------------------------------------------------------------------------------- 1 |
2 |

User Not Found

3 |

The user profile you are looking for does not exist.

4 | Back to Home 5 |
-------------------------------------------------------------------------------- /projects/flex/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/flex", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/flex/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Flex 7 | 12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/float/.gitignore: -------------------------------------------------------------------------------- 1 | src-*/ 2 | !src-init -------------------------------------------------------------------------------- /projects/float/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/float", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/float/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SWE101-Bench Float 7 | 12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/form/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/form", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "build": "", 9 | "test": "npx @web-bench/test-util", 10 | "test1": "npx playwright test" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/form/src-init/index.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.4rem; 7 | } 8 | -------------------------------------------------------------------------------- /projects/form/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/form/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/form/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form 7 | 8 | 9 | 10 |
11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /projects/grid/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/grid", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/grid/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Grid 7 | 12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/jotai/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/jotai/src-init/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /projects/jotai/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/jotai/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/jotai/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 6 | 7 | root.render() 8 | -------------------------------------------------------------------------------- /projects/jotai/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/jotai/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/jotai/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/less/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/less", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true, 6 | "entry": "design.html" 7 | }, 8 | "scripts": { 9 | "start": "vite src --config vite.config.js", 10 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 11 | "test": "npx @web-bench/test-util" 12 | }, 13 | "author": "luics", 14 | "devDependencies": { 15 | "@playwright/test": "^1.49.1", 16 | "@types/node": "^22.7.9", 17 | "@web-bench/test-util": "workspace:*", 18 | "vite": "^6.2.2", 19 | "less": "~4.2.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/less/src-init/common.less: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.4rem; 7 | } 8 | -------------------------------------------------------------------------------- /projects/less/src-init/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/less/src-init/design.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/less/src-init/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Survey Preview 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/less/src-init/preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | alert(location.href) 3 | }) 4 | -------------------------------------------------------------------------------- /projects/less/src/common/DataQuestion.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config.less'; 16 | 17 | -------------------------------------------------------------------------------- /projects/less/src/common/MultiSelectionQuestion.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config.less'; 16 | 17 | -------------------------------------------------------------------------------- /projects/less/src/common/OpenQuestion.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config.less'; 16 | 17 | -------------------------------------------------------------------------------- /projects/less/src/common/SingleSelectionQuestion.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config.less'; 16 | 17 | -------------------------------------------------------------------------------- /projects/less/src/common/SurveyDesign.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './SurveyForm.less'; 16 | -------------------------------------------------------------------------------- /projects/less/src/common/SurveyPreview.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './SurveyForm.less'; 16 | -------------------------------------------------------------------------------- /projects/less/src/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Design | Web-Bench 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/less/src/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Preview | Web-Bench 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/lowdb/.evalignore: -------------------------------------------------------------------------------- 1 | next.config.ts 2 | tsconfig.json -------------------------------------------------------------------------------- /projects/lowdb/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | next-env.d.ts 3 | .env 4 | test.sqlite 5 | test.sqlite-* 6 | generated/ 7 | db.json -------------------------------------------------------------------------------- /projects/lowdb/src-init/app/global.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | min-height: 100vh; 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | 12 | .site-header { 13 | background-color: #f8f9fa; 14 | padding: 1rem; 15 | z-index: 1000; 16 | display: flex; 17 | justify-content: space-between; 18 | } 19 | 20 | main { 21 | flex: 1; 22 | padding: 1rem; 23 | margin: 1rem; 24 | } 25 | 26 | .site-footer { 27 | background-color: #f8f9fa; 28 | padding: 1rem; 29 | } -------------------------------------------------------------------------------- /projects/lowdb/src-init/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import './global.css' 3 | 4 | export const metadata = { 5 | title: 'Next.js', 6 | description: 'Generated by Next.js', 7 | } 8 | 9 | export default function RootLayout({ children }: { children: React.ReactNode }) { 10 | return ( 11 | 12 | 13 |
14 | 15 |

🛍️ WebBench Shopping Mart

16 | 17 |
18 |
{children}
19 |
20 |

Copyright: Web Bench

21 |
22 | 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /projects/lowdb/src-init/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function NotFound() { 4 | return ( 5 |
6 |

Oops! Looks like you have wandered off the beaten path.

7 | 8 | 9 | 10 |
11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /projects/lowdb/src-init/global.d.ts: -------------------------------------------------------------------------------- 1 | import { Low } from 'lowdb' 2 | 3 | declare global { 4 | interface User { 5 | username: string 6 | password: string 7 | role: 'admin' | 'user' 8 | coin: number 9 | } 10 | 11 | interface DatabaseData { 12 | users: User[] 13 | } 14 | 15 | var db: Low 16 | } 17 | -------------------------------------------------------------------------------- /projects/lowdb/src-init/instrumentation.ts: -------------------------------------------------------------------------------- 1 | const defaultData: DatabaseData = { 2 | users: [ 3 | { 4 | username: 'admin', 5 | password: '123456', 6 | role: 'admin', 7 | coin: 0, 8 | }, 9 | { 10 | username: 'user', 11 | password: '123456', 12 | role: 'user', 13 | coin: 1000, 14 | }, 15 | ], 16 | } 17 | 18 | export async function register() { 19 | if (process.env.NEXT_RUNTIME === 'nodejs') { 20 | const { JSONFilePreset } = await import('lowdb/node') 21 | global.db = await JSONFilePreset( 22 | process.env.DB_PATH!, 23 | defaultData 24 | ) 25 | } 26 | } -------------------------------------------------------------------------------- /projects/lowdb/src-init/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from 'next' 2 | 3 | const nextConfig: NextConfig = { 4 | experimental: { 5 | serverComponentsHmrCache: !process.env.EVAL, 6 | }, 7 | images: { 8 | disableStaticImages: true, 9 | }, 10 | typescript: { 11 | ignoreBuildErrors: true, 12 | }, 13 | eslint: { 14 | ignoreDuringBuilds: true, 15 | }, 16 | } 17 | 18 | export default nextConfig 19 | -------------------------------------------------------------------------------- /projects/lowdb/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - jose: ^5.9.6 11 | - lowdb: ~7.0.1 12 | - uuid: ~11.1.0 13 | -------------------------------------------------------------------------------- /projects/lowdb/src/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - jose: ^5.9.6 11 | - lowdb: ~7.0.1 12 | - uuid: ~11.1.0 13 | -------------------------------------------------------------------------------- /projects/mobx/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/mobx/src-init/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /projects/mobx/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/mobx/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/mobx/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 6 | 7 | root.render() 8 | -------------------------------------------------------------------------------- /projects/mobx/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/mobx/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/mobx/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/nextjs/.evalignore: -------------------------------------------------------------------------------- 1 | next.config.ts 2 | tsconfig.json -------------------------------------------------------------------------------- /projects/nextjs/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | next-env.d.ts 3 | test.sqlite 4 | .env -------------------------------------------------------------------------------- /projects/nextjs/src-init/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from 'next' 2 | 3 | const nextConfig: NextConfig = { 4 | experimental: { 5 | serverComponentsHmrCache: !process.env.EVAL, 6 | }, 7 | images: { 8 | disableStaticImages: true, 9 | }, 10 | typescript: { 11 | ignoreBuildErrors: true, 12 | }, 13 | eslint: { 14 | ignoreDuringBuilds: true, 15 | }, 16 | } 17 | 18 | export default nextConfig 19 | -------------------------------------------------------------------------------- /projects/nextjs/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | This is a Next.js shopping mall project. 3 | 4 | Here is the libs used in this project: 5 | - react: ^18.3.1 6 | - react-dom: ^18.3.1 7 | - next: 15.2.4 8 | - sqlite3: ^5.1.7 9 | - jose: ^5.9.6 -------------------------------------------------------------------------------- /projects/nextjs/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/nosql/.evalignore: -------------------------------------------------------------------------------- 1 | next.config.ts 2 | tsconfig.json 3 | instrumentation.ts -------------------------------------------------------------------------------- /projects/nosql/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | next-env.d.ts 3 | .env 4 | .mongo -------------------------------------------------------------------------------- /projects/nosql/src-init/app/global.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | min-height: 100vh; 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | 12 | .site-header { 13 | background-color: #f8f9fa; 14 | padding: 1rem; 15 | z-index: 1000; 16 | display: flex; 17 | justify-content: space-between; 18 | } 19 | 20 | main { 21 | flex: 1; 22 | padding: 1rem; 23 | margin: 1rem; 24 | } 25 | 26 | .site-footer { 27 | background-color: #f8f9fa; 28 | padding: 1rem; 29 | } -------------------------------------------------------------------------------- /projects/nosql/src-init/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import './global.css' 3 | 4 | export const metadata = { 5 | title: 'Next.js', 6 | description: 'Generated by Next.js', 7 | } 8 | 9 | export default function RootLayout({ children }: { children: React.ReactNode }) { 10 | return ( 11 | 12 | 13 |
14 | 15 |

🛍️ WebBench Shopping Mart

16 | 17 |
18 |
{children}
19 |
20 |

Copyright: Web Bench

21 |
22 | 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /projects/nosql/src-init/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function NotFound() { 4 | return ( 5 |
6 |

Oops! Looks like you have wandered off the beaten path.

7 | 8 | 9 | 10 |
11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /projects/nosql/src-init/instrumentation.node.ts: -------------------------------------------------------------------------------- 1 | import mongoose from 'mongoose' 2 | import { initUsers } from './model/user' 3 | 4 | export async function register() { 5 | // 1. Connect to MongoDB 6 | await mongoose.connect(process.env.MONGO_URI!) 7 | 8 | // 2. init two users 9 | await initUsers() 10 | } 11 | -------------------------------------------------------------------------------- /projects/nosql/src-init/instrumentation.ts: -------------------------------------------------------------------------------- 1 | export async function register() { 2 | if (process.env.NEXT_RUNTIME === 'nodejs') { 3 | const { register } = await import('./instrumentation.node') 4 | await register() 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/nosql/src-init/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from 'next' 2 | 3 | const nextConfig: NextConfig = { 4 | experimental: { 5 | serverComponentsHmrCache: !process.env.EVAL, 6 | }, 7 | images: { 8 | disableStaticImages: true, 9 | }, 10 | } 11 | 12 | export default nextConfig 13 | -------------------------------------------------------------------------------- /projects/nosql/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - mongoose: ^8.10.1 11 | - jose: ^5.9.6 12 | -------------------------------------------------------------------------------- /projects/nosql/src/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - mongoose: ^8.10.1 11 | - jose: ^5.9.6 12 | -------------------------------------------------------------------------------- /projects/nuxt/.evalignore: -------------------------------------------------------------------------------- 1 | nuxt.config.ts 2 | tsconfig.json 3 | .nuxt 4 | node_modules -------------------------------------------------------------------------------- /projects/nuxt/.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | 19 | # Local env files 20 | .env 21 | .env.* 22 | !.env.example 23 | 24 | test.sqlite 25 | 26 | -------------------------------------------------------------------------------- /projects/nuxt/src-init/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | // https://nuxt.com/docs/api/configuration/nuxt-config 2 | import { defineNuxtConfig } from 'nuxt/config' 3 | 4 | export default defineNuxtConfig({ 5 | runtimeConfig: { 6 | DB_HOST: process.env.DB_HOST, 7 | }, 8 | }) -------------------------------------------------------------------------------- /projects/nuxt/src-init/readme.md: -------------------------------------------------------------------------------- 1 | 2 | # Nuxt Shopping Mall 3 | 4 | This is a Nuxt shopping mall project. 5 | 6 | Here is the libs used in this project: 7 | 8 | - vue: ^3.4.15 9 | - nuxt: ^3.10.1 10 | - sqlite3: ^5.1.7 11 | - jose: ^5.9.6 12 | -------------------------------------------------------------------------------- /projects/nuxt/src-init/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/*": ["*"], 6 | "~/*": ["./*"] 7 | }, 8 | "target": "ES2017", 9 | "lib": ["dom", "dom.iterable", "esnext"], 10 | "allowJs": true, 11 | "skipLibCheck": true, 12 | "strict": false, 13 | "noEmit": true, 14 | "incremental": true, 15 | "module": "esnext", 16 | "esModuleInterop": true, 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "strictNullChecks": true, 21 | "types": ["nuxt", "node"] 22 | }, 23 | "include": ["**/*.ts", "**/*.vue", ".nuxt/**/*.ts", "nuxt.config.ts"], 24 | "exclude": ["node_modules"] 25 | } 26 | -------------------------------------------------------------------------------- /projects/nuxt/src/readme.md: -------------------------------------------------------------------------------- 1 | # Nuxt Shopping Mall 2 | 3 | This is a Nuxt shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - vue: ^3.4.15 8 | - nuxt: ^3.10.1 9 | - sqlite3: ^5.1.7 10 | - jose: ^5.9.6 11 | -------------------------------------------------------------------------------- /projects/nuxt/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/*": ["*"], 6 | "~/*": ["./*"] 7 | }, 8 | "target": "ES2017", 9 | "lib": ["dom", "dom.iterable", "esnext"], 10 | "allowJs": true, 11 | "skipLibCheck": true, 12 | "strict": false, 13 | "noEmit": true, 14 | "incremental": true, 15 | "module": "esnext", 16 | "esModuleInterop": true, 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "strictNullChecks": true, 21 | "types": ["nuxt", "node"] 22 | }, 23 | "include": ["**/*.ts", "**/*.vue", ".nuxt/**/*.ts", "nuxt.config.ts"], 24 | "exclude": ["node_modules"] 25 | } 26 | -------------------------------------------------------------------------------- /projects/nuxt/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/parcel/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ 2 | node_modules/ 3 | sourcemaps/ 4 | .parcel-cache/ 5 | dist/ 6 | dist-serve/ -------------------------------------------------------------------------------- /projects/parcel/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | sourcemaps 3 | .parcel-cache 4 | dist* 5 | ignore-src -------------------------------------------------------------------------------- /projects/parcel/assets/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/parcel/assets/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/parcel/assets/bird.png -------------------------------------------------------------------------------- /projects/parcel/src-init/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default" 3 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/parcel/src-init/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "project", 3 | "description": "project", 4 | "scripts": { 5 | "dev": "", 6 | "build": "" 7 | }, 8 | "dependencies": { 9 | "vue": "^3.3.4", 10 | "react": "^18.2.0", 11 | "react-dom": "^18.2.0" 12 | }, 13 | "devDependencies": { 14 | "parcel": "^2.9.3", 15 | "@parcel/config-default": "^2.13.3" 16 | } 17 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/src/alias.js: -------------------------------------------------------------------------------- 1 | const alias = 'hello alias' 2 | export default alias -------------------------------------------------------------------------------- /projects/parcel/src-init/src/component.jsx: -------------------------------------------------------------------------------- 1 | function ReactComponent() { 2 | return <>hello react 3 | } 4 | 5 | export default ReactComponent -------------------------------------------------------------------------------- /projects/parcel/src-init/src/component.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /projects/parcel/src-init/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/parcel/src-init/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/parcel/src-init/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/parcel/src-init/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](../images/bird.png) -------------------------------------------------------------------------------- /projects/parcel/src-init/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/parcel/src-init/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/parcel/src-init/src/images/bird.png -------------------------------------------------------------------------------- /projects/parcel/src-init/src/index.css: -------------------------------------------------------------------------------- 1 | .css { 2 | color: rgb(0,0,255); 3 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/src/index.less: -------------------------------------------------------------------------------- 1 | .less { 2 | color: rgb(0, 255, 0); 3 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/src/index.module.less: -------------------------------------------------------------------------------- 1 | .lessModules { 2 | color: rgb(255, 0, 0); 3 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/src/index.ts: -------------------------------------------------------------------------------- 1 | export default function (): string { 2 | return 'hello ts' 3 | } -------------------------------------------------------------------------------- /projects/parcel/src-init/src/version.js: -------------------------------------------------------------------------------- 1 | const versionElement = document.createElement('div') 2 | versionElement.textContent = `hello ${process.env.__VERSION__}` 3 | document.body.appendChild(versionElement) -------------------------------------------------------------------------------- /projects/parcel/src/.env: -------------------------------------------------------------------------------- 1 | __VERSION__="v1.0.0" -------------------------------------------------------------------------------- /projects/parcel/src/assets/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/parcel/src/assets/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/parcel/src/assets/bird.png -------------------------------------------------------------------------------- /projects/parcel/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/parcel/src/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/parcel/src/src/alias.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | const alias = 'hello alias' 16 | export default alias -------------------------------------------------------------------------------- /projects/parcel/src/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/parcel/src/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/parcel/src/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/parcel/src/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/parcel/src/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/parcel/src/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/parcel/src/src/images/bird.png -------------------------------------------------------------------------------- /projects/parcel/src/src/index.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | 17 | .css { 18 | color: rgb(0,0,255); 19 | } -------------------------------------------------------------------------------- /projects/parcel/src/src/index.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .less { 16 | color: rgb(0, 255, 0); 17 | } -------------------------------------------------------------------------------- /projects/parcel/src/src/index.module.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .lessModules { 16 | color: rgb(255, 0, 0); 17 | } -------------------------------------------------------------------------------- /projects/parcel/src/src/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default function (): string { 16 | return 'hello ts' 17 | } -------------------------------------------------------------------------------- /projects/prisma/.evalignore: -------------------------------------------------------------------------------- 1 | next.config.ts 2 | tsconfig.json 3 | instrumentation.ts -------------------------------------------------------------------------------- /projects/prisma/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | next-env.d.ts 3 | .env 4 | test.sqlite 5 | test.sqlite-* 6 | generated/ -------------------------------------------------------------------------------- /projects/prisma/src-init/app/global.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | min-height: 100vh; 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | 12 | .site-header { 13 | background-color: #f8f9fa; 14 | padding: 1rem; 15 | z-index: 1000; 16 | display: flex; 17 | justify-content: space-between; 18 | } 19 | 20 | main { 21 | flex: 1; 22 | padding: 1rem; 23 | margin: 1rem; 24 | } 25 | 26 | .site-footer { 27 | background-color: #f8f9fa; 28 | padding: 1rem; 29 | } -------------------------------------------------------------------------------- /projects/prisma/src-init/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import './global.css' 3 | 4 | export const metadata = { 5 | title: 'Next.js', 6 | description: 'Generated by Next.js', 7 | } 8 | 9 | export default function RootLayout({ children }: { children: React.ReactNode }) { 10 | return ( 11 | 12 | 13 |
14 | 15 |

🛍️ WebBench Shopping Mart

16 | 17 |
18 |
{children}
19 |
20 |

Copyright: Web Bench

21 |
22 | 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /projects/prisma/src-init/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function NotFound() { 4 | return ( 5 |
6 |

Oops! Looks like you have wandered off the beaten path.

7 | 8 | 9 | 10 |
11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /projects/prisma/src-init/libs/db.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@/generated"; 2 | 3 | export const prisma = new PrismaClient() 4 | -------------------------------------------------------------------------------- /projects/prisma/src-init/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from 'next' 2 | 3 | const nextConfig: NextConfig = { 4 | experimental: { 5 | serverComponentsHmrCache: !process.env.EVAL, 6 | }, 7 | images: { 8 | disableStaticImages: true, 9 | }, 10 | typescript: { 11 | ignoreBuildErrors: true, 12 | }, 13 | eslint: { 14 | ignoreDuringBuilds: true, 15 | }, 16 | } 17 | 18 | export default nextConfig 19 | -------------------------------------------------------------------------------- /projects/prisma/src-init/prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | datasource db { 2 | provider = "sqlite" 3 | url = "file:../test.sqlite" 4 | } 5 | 6 | generator client { 7 | provider = "prisma-client-js" 8 | output = "../generated" 9 | } 10 | 11 | model User { 12 | id Int @id @default(autoincrement()) 13 | username String @unique 14 | password String 15 | role String 16 | coin Int 17 | } 18 | -------------------------------------------------------------------------------- /projects/prisma/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - jose: ^5.9.6 11 | -------------------------------------------------------------------------------- /projects/prisma/src/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - jose: ^5.9.6 -------------------------------------------------------------------------------- /projects/project-template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/project-template", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "start": "vite --config vite.config.js", 6 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 7 | "test": "npx @web-bench/test-util" 8 | }, 9 | "author": "luics", 10 | "devDependencies": { 11 | "@playwright/test": "^1.49.1", 12 | "@types/node": "^22.7.9", 13 | "@web-bench/test-util": "workspace:*", 14 | "vite": "^6.2.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /projects/project-template/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Project 7 | 12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/project-template/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Project 7 | 12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/project-template/tasks.jsonl: -------------------------------------------------------------------------------- 1 | {"id":"init","date":"2025-05-12","level":"easy","description":"generate html with a body(margin 0) tag in which there is a div(class 'root'). NO JS."} -------------------------------------------------------------------------------- /projects/react-no-ts/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/react-no-ts/src-init/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/react-no-ts/src-init/App.css -------------------------------------------------------------------------------- /projects/react-no-ts/src-init/App.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/react-no-ts/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/react-no-ts/src-init/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root')) 6 | 7 | root.render() 8 | -------------------------------------------------------------------------------- /projects/react-no-ts/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/react/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/react/src-init/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/react/src-init/App.css -------------------------------------------------------------------------------- /projects/react/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/react/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/react/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 6 | 7 | root.render() 8 | -------------------------------------------------------------------------------- /projects/react/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/react/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/redux/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/redux/src-init/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /projects/redux/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/redux/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/redux/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import { Provider } from 'react-redux' 4 | import App from './App' 5 | import { store } from './store' 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 8 | 9 | root.render( 10 | 11 | 12 | 13 | ) 14 | -------------------------------------------------------------------------------- /projects/redux/src-init/store.tsx: -------------------------------------------------------------------------------- 1 | import { configureStore } from '@reduxjs/toolkit' 2 | 3 | export type RootState = ReturnType 4 | 5 | export const store = configureStore({ 6 | reducer: {}, 7 | }) 8 | -------------------------------------------------------------------------------- /projects/redux/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/redux/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/redux/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/sass/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/sass", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true, 6 | "entry": "design.html" 7 | }, 8 | "scripts": { 9 | "start": "vite src --config vite.config.js", 10 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 11 | "test": "npx @web-bench/test-util" 12 | }, 13 | "author": "luics", 14 | "devDependencies": { 15 | "@playwright/test": "^1.49.1", 16 | "@types/node": "^22.7.9", 17 | "@web-bench/test-util": "workspace:*", 18 | "vite": "^6.2.2", 19 | "sass-embedded": "~1.83.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/sass/readme.md: -------------------------------------------------------------------------------- 1 | # web-bench-sass 2 | 3 | ## [Evaluate](../readme.md) 4 | 5 | ## Sass 6 | 7 | https://sass-lang.com 8 | 9 | > Sass is the most mature, stable, and powerful professional grade **CSS** extension language in the world. 10 | 11 | ## Project Design 12 | 13 | Basic Project Design see [survey](../survey/readme.md). This project use SASS syntax to rewrite all the styles. 14 | 15 | ## Feature Coverage 16 | 17 | | SASS Syntax | Used | 18 | | ------------ | ---- | 19 | | Variables | ✅ | 20 | | --Map | ✅ | 21 | | --List | - | 22 | | Mixins | ✅ | 23 | | Nesting | ✅ | 24 | | Operations | ✅ | 25 | | Functions | ✅ | 26 | | Inheritance | - | 27 | | Comments | ✅ | 28 | | Modules | ✅ | 29 | -------------------------------------------------------------------------------- /projects/sass/src-init/common.scss: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.4rem; 7 | } 8 | -------------------------------------------------------------------------------- /projects/sass/src-init/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/sass/src-init/design.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/sass/src-init/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Survey Preview 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/sass/src-init/preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | alert(location.href) 3 | }) 4 | -------------------------------------------------------------------------------- /projects/sass/src/common/DataQuestion.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'config'; 16 | @use 'sass:map'; 17 | 18 | -------------------------------------------------------------------------------- /projects/sass/src/common/MultiSelectionQuestion.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'config'; 16 | @use 'sass:map'; 17 | 18 | -------------------------------------------------------------------------------- /projects/sass/src/common/OpenQuestion.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'config'; 16 | @use 'sass:map'; 17 | 18 | -------------------------------------------------------------------------------- /projects/sass/src/common/SingleSelectionQuestion.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'config'; 16 | @use 'sass:map'; 17 | 18 | -------------------------------------------------------------------------------- /projects/sass/src/common/SurveyDesign.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'SurveyForm'; 16 | -------------------------------------------------------------------------------- /projects/sass/src/common/SurveyPreview.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use 'SurveyForm'; 16 | -------------------------------------------------------------------------------- /projects/sass/src/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Design | Web-Bench 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/sass/src/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Preview | Web-Bench 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/selector/.gitignore: -------------------------------------------------------------------------------- 1 | src-[0-9]*/ 2 | src-all -------------------------------------------------------------------------------- /projects/selector/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/selector", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/sequelize/.evalignore: -------------------------------------------------------------------------------- 1 | next.config.ts 2 | tsconfig.json 3 | instrumentation.ts -------------------------------------------------------------------------------- /projects/sequelize/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | next-env.d.ts 3 | .env 4 | test.sqlite 5 | test.sqlite-* -------------------------------------------------------------------------------- /projects/sequelize/src-init/app/global.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | min-height: 100vh; 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | 12 | .site-header { 13 | background-color: #f8f9fa; 14 | padding: 1rem; 15 | z-index: 1000; 16 | display: flex; 17 | justify-content: space-between; 18 | } 19 | 20 | main { 21 | flex: 1; 22 | padding: 1rem; 23 | margin: 1rem; 24 | } 25 | 26 | .site-footer { 27 | background-color: #f8f9fa; 28 | padding: 1rem; 29 | } -------------------------------------------------------------------------------- /projects/sequelize/src-init/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import './global.css' 3 | 4 | export const metadata = { 5 | title: 'Next.js', 6 | description: 'Generated by Next.js', 7 | } 8 | 9 | export default function RootLayout({ children }: { children: React.ReactNode }) { 10 | return ( 11 | 12 | 13 |
14 | 15 |

🛍️ WebBench Shopping Mart

16 | 17 |
18 |
{children}
19 |
20 |

Copyright: Web Bench

21 |
22 | 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function NotFound() { 4 | return ( 5 |
6 |

Oops! Looks like you have wandered off the beaten path.

7 | 8 | 9 | 10 |
11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/instrumentation.node.ts: -------------------------------------------------------------------------------- 1 | import '@/model' 2 | import { sequelize } from '@/libs/db' 3 | import { initUsers } from '@/model/user' 4 | 5 | export async function register() { 6 | await sequelize.sync() 7 | await initUsers() 8 | } 9 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/instrumentation.ts: -------------------------------------------------------------------------------- 1 | export async function register() { 2 | if (process.env.NEXT_RUNTIME === 'nodejs') { 3 | const { register } = await import('./instrumentation.node') 4 | await register() 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/libs/db.ts: -------------------------------------------------------------------------------- 1 | import { Sequelize, Transaction } from 'sequelize' 2 | 3 | export const sequelize = new Sequelize({ 4 | dialect: 'sqlite', 5 | storage: process.env.DB_HOST, 6 | transactionType: Transaction.TYPES.IMMEDIATE, 7 | }) 8 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/model/index.ts: -------------------------------------------------------------------------------- 1 | export { User } from './user' 2 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from 'next' 2 | 3 | const nextConfig: NextConfig = { 4 | experimental: { 5 | serverComponentsHmrCache: !process.env.EVAL, 6 | }, 7 | serverExternalPackages: ['sequelize'], 8 | images: { 9 | disableStaticImages: true, 10 | }, 11 | typescript: { 12 | ignoreBuildErrors: true, 13 | }, 14 | eslint: { 15 | ignoreDuringBuilds: true, 16 | }, 17 | } 18 | 19 | export default nextConfig 20 | -------------------------------------------------------------------------------- /projects/sequelize/src-init/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - sqlite3: ^5.1.7 11 | - sequelize: ^6.37.5 12 | - jose: ^5.9.6 13 | -------------------------------------------------------------------------------- /projects/sequelize/src/readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Shopping Mall 2 | 3 | This is a Next.js shopping mall project. 4 | 5 | Here is the libs used in this project: 6 | 7 | - react: ^18.3.1 8 | - react-dom: ^18.3.1 9 | - next: 15.2.4 10 | - sqlite3: ^5.1.7 11 | - sequelize: ^6.37.5 12 | - jose: ^5.9.6 13 | -------------------------------------------------------------------------------- /projects/styled-components/.gitignore: -------------------------------------------------------------------------------- 1 | eval/ 2 | dist/ 3 | .rush -------------------------------------------------------------------------------- /projects/styled-components/readme.md: -------------------------------------------------------------------------------- 1 | # styled-components 2 | 3 | ## Feature Coverage 4 | 5 | | API | Status | 6 | | :---------------- | :----: | 7 | | styled | ✅ | 8 | | css | ✅ | 9 | | createGlobalStyle | ✅ | 10 | | keyframes | ✅ | 11 | | ThemeProvider | ✅ | 12 | | isStyledComponent | ❌ | 13 | | ServerStyleSheet | ❌ | 14 | | StyleSheetManager | ❌ | 15 | | useTheme | ✅ | 16 | | shouldForwardProp | ❌ | 17 | | attrs | ✅ | 18 | | ThemeConsumer | ✅ | 19 | | ThemeContext | ✅ | -------------------------------------------------------------------------------- /projects/styled-components/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | function App() { 4 | return
Empty
5 | } 6 | 7 | export default App 8 | -------------------------------------------------------------------------------- /projects/styled-components/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/styled-components/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root')!) 6 | 7 | root.render( 8 | 9 | 10 | 11 | ) 12 | -------------------------------------------------------------------------------- /projects/styled-components/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /projects/styled-components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/stylus/.gitignore: -------------------------------------------------------------------------------- 1 | src-[0-9]*/ 2 | src-all -------------------------------------------------------------------------------- /projects/stylus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/stylus", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true, 6 | "entry": "design.html" 7 | }, 8 | "scripts": { 9 | "start": "vite src --config vite.config.js", 10 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 11 | "test": "npx @web-bench/test-util" 12 | }, 13 | "author": "luics", 14 | "devDependencies": { 15 | "@playwright/test": "^1.49.1", 16 | "@types/node": "^22.7.9", 17 | "@web-bench/test-util": "workspace:*", 18 | "vite": "^6.2.2", 19 | "stylus": "~0.64.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/stylus/src-init/common.styl: -------------------------------------------------------------------------------- 1 | html 2 | font-size 10px 3 | 4 | body 5 | font-size 1.4rem -------------------------------------------------------------------------------- /projects/stylus/src-init/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form | Stylus 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/stylus/src-init/design.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/stylus/src-init/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Survey Preview | Stylus 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/stylus/src-init/preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | alert(location.href) 3 | }) 4 | -------------------------------------------------------------------------------- /projects/stylus/src/common/DataQuestion.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config' 16 | 17 | -------------------------------------------------------------------------------- /projects/stylus/src/common/MultiSelectionQuestion.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config' 16 | 17 | -------------------------------------------------------------------------------- /projects/stylus/src/common/OpenQuestion.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config' 16 | 17 | -------------------------------------------------------------------------------- /projects/stylus/src/common/SingleSelectionQuestion.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './config' 16 | 17 | -------------------------------------------------------------------------------- /projects/stylus/src/common/SurveyDesign.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './SurveyForm' 16 | -------------------------------------------------------------------------------- /projects/stylus/src/common/SurveyPreview.styl: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @import './SurveyForm' 16 | -------------------------------------------------------------------------------- /projects/stylus/src/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form | Stylus 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/stylus/src/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Survey Preview | Stylus 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/survey/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/survey", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "build": "", 9 | "test": "npx @web-bench/test-util", 10 | "test1": "npx playwright test" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/survey/src-init/design.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.4rem; 7 | } 8 | -------------------------------------------------------------------------------- /projects/survey/src-init/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Form 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/survey/src-init/design.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/survey/src-init/preview.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.4rem; 7 | } 8 | -------------------------------------------------------------------------------- /projects/survey/src-init/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Survey Preview 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /projects/survey/src-init/preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | alert(location.href) 3 | }) 4 | -------------------------------------------------------------------------------- /projects/survey/src/design.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | 17 | -------------------------------------------------------------------------------- /projects/survey/src/design.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Design | Web-Bench 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/survey/src/preview.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | 17 | -------------------------------------------------------------------------------- /projects/survey/src/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Survey Preview | Web-Bench 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/svelte/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/svelte/src-init/App.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
Empty
6 | 7 | 10 | -------------------------------------------------------------------------------- /projects/svelte/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/svelte/src-init/index.ts: -------------------------------------------------------------------------------- 1 | import { mount } from 'svelte' 2 | import App from './App.svelte' 3 | 4 | const app = mount(App, { 5 | target: document.getElementById('root')!, 6 | }) 7 | 8 | export default app 9 | -------------------------------------------------------------------------------- /projects/svelte/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/svelte/src/store.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Remove this file since functionality moved to stores/blogStore.ts -------------------------------------------------------------------------------- /projects/svelte/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | "allowJs": true, 9 | "checkJs": true, 10 | "isolatedModules": true, 11 | "moduleDetection": "force" 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] 14 | } 15 | -------------------------------------------------------------------------------- /projects/svelte/vite.config.mts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { svelte } from '@sveltejs/vite-plugin-svelte' 3 | 4 | const PROJECT_DIR = process.env.EVAL_PROJECT_ROOT || 'src' 5 | const PORT = process.env.EVAL_PROJECT_PORT || 3211 6 | 7 | // https://vite.dev/config/ 8 | export default defineConfig({ 9 | root: PROJECT_DIR, 10 | server: { 11 | port: +PORT, 12 | host: 'localhost', 13 | watch: process.env.EVAL ? null : undefined, 14 | }, 15 | build: { 16 | rollupOptions: { 17 | input: PROJECT_DIR + '/index.html', 18 | }, 19 | }, 20 | plugins: [svelte()], 21 | }) 22 | -------------------------------------------------------------------------------- /projects/svg-chart/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ -------------------------------------------------------------------------------- /projects/svg-chart/.gitignore: -------------------------------------------------------------------------------- 1 | src-all 2 | src-init/assets -------------------------------------------------------------------------------- /projects/svg-chart/assets/res.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /projects/svg-chart/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/svg-chart", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "type": "module", 8 | "scripts": { 9 | "start": "vite src --config vite.config.js", 10 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 11 | "test": "npx @web-bench/test-util" 12 | }, 13 | "author": "luics", 14 | "devDependencies": { 15 | "@playwright/test": "^1.49.1", 16 | "@types/node": "^22.7.9", 17 | "@web-bench/test-util": "workspace:*", 18 | "vite": "^6.2.2", 19 | "sass-embedded": "~1.83.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/common/Chart.js: -------------------------------------------------------------------------------- 1 | export class Chart { 2 | /** @type {SVGElement} */ 3 | svg 4 | /** @type {any} */ 5 | config 6 | 7 | /** 8 | * @param {any} config 9 | */ 10 | constructor(config) { 11 | this.config = config 12 | 13 | const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg') 14 | this.svg = svg 15 | } 16 | 17 | draw() {} 18 | } 19 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/common/Chart.scss: -------------------------------------------------------------------------------- 1 | @use './config'; 2 | 3 | .chart { 4 | display: block; 5 | width: 50vw; 6 | height: 35vw; 7 | 8 | &:nth-child(4n + 2), 9 | &:nth-child(4n + 3) { 10 | background-color: #f6f6f6; 11 | } 12 | 13 | .hidden { 14 | display: none; 15 | } 16 | 17 | polyline, 18 | line { 19 | stroke: black; 20 | stroke-width: 0.2; 21 | fill: none; 22 | stroke-linecap: round; 23 | stroke-linejoin: round; 24 | } 25 | 26 | text { 27 | font-size: 2px; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/common/LineChart.js: -------------------------------------------------------------------------------- 1 | import { Chart } from './Chart' 2 | 3 | export class LineChart extends Chart { 4 | } 5 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/common/config.scss: -------------------------------------------------------------------------------- 1 | $color: black; 2 | $bgColor: white; 3 | 4 | body { 5 | margin: 0; 6 | color: $color; 7 | background-color: $bgColor; 8 | } 9 | 10 | .root { 11 | display: grid; 12 | grid-template-columns: 1fr 1fr; 13 | } 14 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench SVG-Chart 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/svg-chart/src-init/index.scss: -------------------------------------------------------------------------------- 1 | @use './common/config'; 2 | @use './common/Chart'; 3 | -------------------------------------------------------------------------------- /projects/svg-chart/src/assets: -------------------------------------------------------------------------------- 1 | ../assets -------------------------------------------------------------------------------- /projects/svg-chart/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench SVG-Chart 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/svg-chart/src/index.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use './common/config'; 16 | @use './common/Chart'; 17 | -------------------------------------------------------------------------------- /projects/svg-solar/.gitignore: -------------------------------------------------------------------------------- 1 | # src-*/ -------------------------------------------------------------------------------- /projects/svg-solar/assets/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/svg-solar/assets/bg.png -------------------------------------------------------------------------------- /projects/svg-solar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/svg-solar", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "start": "vite src --config vite.config.js", 9 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "@web-bench/test-util": "workspace:*", 17 | "vite": "^6.2.2", 18 | "sass-embedded": "~1.83.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/svg-solar/src-init/common/System.scss: -------------------------------------------------------------------------------- 1 | @use './config'; 2 | 3 | .system { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /projects/svg-solar/src-init/common/config.scss: -------------------------------------------------------------------------------- 1 | $color: white; 2 | $bgColor: black; 3 | 4 | body { 5 | margin: 0; 6 | color: $color; 7 | background-color: $bgColor; 8 | } 9 | 10 | .root { 11 | display: flex; 12 | flex-direction: column; 13 | width: 100vw; 14 | height: 100vw; 15 | overflow: hidden; 16 | } 17 | 18 | 19 | -------------------------------------------------------------------------------- /projects/svg-solar/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench SVG-Solar 7 | 8 | 9 | 10 |
11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/svg-solar/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | }) 3 | -------------------------------------------------------------------------------- /projects/svg-solar/src-init/index.scss: -------------------------------------------------------------------------------- 1 | @use './common/config'; 2 | @use './common/System'; 3 | -------------------------------------------------------------------------------- /projects/svg-solar/src/assets: -------------------------------------------------------------------------------- 1 | ../assets -------------------------------------------------------------------------------- /projects/svg-solar/src/index.scss: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | @use './common/config'; 16 | @use './common/System'; 17 | -------------------------------------------------------------------------------- /projects/svg/.gitignore: -------------------------------------------------------------------------------- 1 | # src-*/ -------------------------------------------------------------------------------- /projects/svg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/svg", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "start": "vite src --config vite.config.js", 9 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "@web-bench/test-util": "workspace:*", 17 | "vite": "^6.2.2", 18 | "sass-embedded": "~1.83.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/svg/src-init/common/Canvas.scss: -------------------------------------------------------------------------------- 1 | .canvas { 2 | flex: 1; 3 | background-color: #eee; 4 | 5 | // & > * { 6 | // transform-origin: center; 7 | // } 8 | } 9 | -------------------------------------------------------------------------------- /projects/svg/src-init/common/config.scss: -------------------------------------------------------------------------------- 1 | $color: black; 2 | $bgColor: white; 3 | 4 | body { 5 | margin: 0; 6 | color: $color; 7 | background-color: $bgColor; 8 | } 9 | 10 | .root { 11 | display: flex; 12 | flex-direction: column; 13 | width: 100vw; 14 | height: 100vh; 15 | overflow: hidden; 16 | } 17 | -------------------------------------------------------------------------------- /projects/svg/src-init/index.js: -------------------------------------------------------------------------------- 1 | import { Toolkit } from './common/Toolkit' 2 | 3 | document.addEventListener('DOMContentLoaded', () => { 4 | const toolkit = new Toolkit('.toolkit') 5 | }) 6 | -------------------------------------------------------------------------------- /projects/svg/src-init/index.scss: -------------------------------------------------------------------------------- 1 | @use './common/config'; 2 | @use './common/Toolkit'; 3 | @use './common/Canvas'; 4 | -------------------------------------------------------------------------------- /projects/table/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/table", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "build": "", 9 | "test": "npx @web-bench/test-util", 10 | "test1": "npx playwright test" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "serve": "^14.2.4", 17 | "@web-bench/test-util": "workspace:*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/table/src-init/index.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 10px; 3 | } 4 | 5 | body { 6 | font-size: 1.6rem; 7 | } 8 | 9 | .table { 10 | border-collapse: collapse; 11 | border-spacing: 0; 12 | margin: 0 auto; 13 | user-select: none; 14 | } 15 | 16 | th, 17 | td { 18 | border: 0.1rem solid #ddd; 19 | padding: 0.5rem; 20 | width: 8rem; 21 | height: 4rem; 22 | vertical-align: middle; 23 | overflow: visible; 24 | box-sizing: border-box; 25 | } 26 | 27 | thead tr { 28 | background-color: #ddd; 29 | } -------------------------------------------------------------------------------- /projects/table/src-init/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => {}) 2 | -------------------------------------------------------------------------------- /projects/tailwind/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ -------------------------------------------------------------------------------- /projects/tailwind/.gitignore: -------------------------------------------------------------------------------- 1 | src/assets 2 | src-init/assets -------------------------------------------------------------------------------- /projects/tailwind/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/tailwind", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "build": "", 6 | "test": "npx @web-bench/test-util" 7 | }, 8 | "author": "luics", 9 | "eval": { 10 | "stable": true 11 | }, 12 | "devDependencies": { 13 | "@playwright/test": "^1.49.1", 14 | "@types/node": "^22.7.9", 15 | "serve": "^14.2.4", 16 | "@web-bench/test-util": "workspace:*" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/tailwind/readme.md: -------------------------------------------------------------------------------- 1 | # @web-bench/tailwind 2 | 3 | ## [Evaluate](../readme.md) 4 | 5 | ## Introduction 6 | 7 | https://tailwindcss.com/ 8 | 9 | > Rapidly build modern websites without ever leaving your HTML. 10 | > 11 | > A utility-first CSS framework packed with classes like flex, pt-4, text-center and rotate-90 that can be composed to build any design, directly in your markup. 12 | 13 | ## Feature Coverage 14 | 15 | | Tailwind | Used | 16 | | -------- | ---- | 17 | | ?? | ✅ | 18 | | | | 19 | | | | 20 | 21 | * [ ] use LLM to collect coverage data 22 | -------------------------------------------------------------------------------- /projects/tailwind/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Grid 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/threejs/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /projects/threejs/src-init/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/threejs/src-init/index.js -------------------------------------------------------------------------------- /projects/threejs/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /projects/threejs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/threejs/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/typescript/.evalignore: -------------------------------------------------------------------------------- 1 | *.js 2 | tasks/* -------------------------------------------------------------------------------- /projects/typescript/.gitignore: -------------------------------------------------------------------------------- 1 | src/tasks/* 2 | src/types/*.js -------------------------------------------------------------------------------- /projects/typescript/src-init/types/setter.ts: -------------------------------------------------------------------------------- 1 | export interface InputSetter { 2 | type: 'input' 3 | value: string 4 | } 5 | 6 | export interface NumberSetter { 7 | type: 'number' 8 | value: number 9 | } 10 | 11 | export interface CheckboxSetter { 12 | type: 'checkbox' 13 | value: boolean 14 | } 15 | 16 | export type Setter = InputSetter | NumberSetter | CheckboxSetter 17 | -------------------------------------------------------------------------------- /projects/unocss/.gitignore: -------------------------------------------------------------------------------- 1 | src-[0-9]*/ 2 | src-all -------------------------------------------------------------------------------- /projects/unocss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@web-bench/unocss", 3 | "version": "0.0.1", 4 | "eval": { 5 | "stable": true 6 | }, 7 | "scripts": { 8 | "start": "vite src --config vite.config.js", 9 | "build": "VITE_CJS_IGNORE_WARNING=true vite build", 10 | "test": "npx @web-bench/test-util" 11 | }, 12 | "author": "luics", 13 | "devDependencies": { 14 | "@playwright/test": "^1.49.1", 15 | "@types/node": "^22.7.9", 16 | "@web-bench/test-util": "workspace:*", 17 | "vite": "^6.2.2", 18 | "unocss": "~66.1.0-beta.6" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/unocss/readme.md: -------------------------------------------------------------------------------- 1 | 2 | # @web-bench-unocss 3 | 4 | ## [Evaluate](../readme.md) 5 | 6 | ## Introduction 7 | 8 | https://unocss.dev/ 9 | 10 | > Instant On-demand Atomic CSS Engine 11 | > 12 | > UnoCSS is the instant atomic CSS engine, that is designed to be flexible and extensible. The core is un-opinionated and all the CSS utilities are provided via presets. 13 | 14 | ## Feature Coverage 15 | 16 | | Tailwind | Used | 17 | | -------- | ---- | 18 | | ?? | ✅ | 19 | | | | 20 | | | | 21 | 22 | * [ ] use LLM to collect coverage data 23 | -------------------------------------------------------------------------------- /projects/unocss/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web-Bench Unocss 7 | 8 | 9 |
10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /projects/vite/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ 2 | node_modules/ 3 | sourcemaps/ -------------------------------------------------------------------------------- /projects/vite/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | sourcemaps -------------------------------------------------------------------------------- /projects/vite/assets/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/vite/assets/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/vite/assets/bird.png -------------------------------------------------------------------------------- /projects/vite/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/vite/src-init/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/vite/src-init/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "project", 3 | "description": "project", 4 | "scripts": { 5 | "dev": "", 6 | "build": "" 7 | }, 8 | "dependencies": { 9 | "vue": "^3.3.4", 10 | "react": "^18.2.0", 11 | "react-dom": "^18.2.0" 12 | }, 13 | "devDependencies": {} 14 | } -------------------------------------------------------------------------------- /projects/vite/src-init/src/alias.js: -------------------------------------------------------------------------------- 1 | const alias = 'hello alias' 2 | export default alias -------------------------------------------------------------------------------- /projects/vite/src-init/src/component.jsx: -------------------------------------------------------------------------------- 1 | function ReactComponent() { 2 | return <>hello react 3 | } 4 | 5 | export default ReactComponent -------------------------------------------------------------------------------- /projects/vite/src-init/src/component.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /projects/vite/src-init/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/vite/src-init/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/vite/src-init/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/vite/src-init/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](../images/bird.png) -------------------------------------------------------------------------------- /projects/vite/src-init/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/vite/src-init/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/vite/src-init/src/images/bird.png -------------------------------------------------------------------------------- /projects/vite/src-init/src/index.css: -------------------------------------------------------------------------------- 1 | .css { 2 | color: rgb(0,0,255); 3 | } -------------------------------------------------------------------------------- /projects/vite/src-init/src/index.less: -------------------------------------------------------------------------------- 1 | .less { 2 | color: rgb(0, 255, 0); 3 | } -------------------------------------------------------------------------------- /projects/vite/src-init/src/index.module.less: -------------------------------------------------------------------------------- 1 | .lessModules { 2 | color: rgb(255, 0, 0); 3 | } -------------------------------------------------------------------------------- /projects/vite/src-init/src/index.ts: -------------------------------------------------------------------------------- 1 | export default function (): string { 2 | return 'hello ts' 3 | } -------------------------------------------------------------------------------- /projects/vite/src-init/src/version.js: -------------------------------------------------------------------------------- 1 | const versionElement = document.createElement('div') 2 | versionElement.textContent = `hello ${__VERSION__}` 3 | document.body.appendChild(versionElement) -------------------------------------------------------------------------------- /projects/vite/src/assets/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/vite/src/assets/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/vite/src/assets/bird.png -------------------------------------------------------------------------------- /projects/vite/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/vite/src/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/vite/src/src/alias.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | const alias = 'hello alias' 16 | export default alias -------------------------------------------------------------------------------- /projects/vite/src/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/vite/src/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/vite/src/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/vite/src/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/vite/src/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/vite/src/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/vite/src/src/images/bird.png -------------------------------------------------------------------------------- /projects/vite/src/src/index.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | 17 | .css { 18 | color: rgb(0,0,255); 19 | } -------------------------------------------------------------------------------- /projects/vite/src/src/index.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .less { 16 | color: rgb(0, 255, 0); 17 | } -------------------------------------------------------------------------------- /projects/vite/src/src/index.module.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .lessModules { 16 | color: rgb(255, 0, 0); 17 | } -------------------------------------------------------------------------------- /projects/vite/src/src/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default function (): string { 16 | return 'hello ts' 17 | } -------------------------------------------------------------------------------- /projects/vue/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/vue/src-init/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /projects/vue/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/vue/src-init/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | 4 | const app = createApp(App) 5 | app.mount('#app') 6 | -------------------------------------------------------------------------------- /projects/vue/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /projects/vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/vue/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /projects/webpack/.evalignore: -------------------------------------------------------------------------------- 1 | assets/ 2 | node_modules/ 3 | sourcemaps/ 4 | dist/ 5 | dist-serve/ -------------------------------------------------------------------------------- /projects/webpack/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | sourcemaps 3 | .parcel-cache 4 | dist* 5 | ignore-src -------------------------------------------------------------------------------- /projects/webpack/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/webpack/src-init/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "project", 3 | "description": "project", 4 | "scripts": { 5 | "dev": "", 6 | "build": "" 7 | }, 8 | "dependencies": { 9 | "vue": "^3.3.4", 10 | "react": "^18.2.0", 11 | "react-dom": "^18.2.0" 12 | }, 13 | "devDependencies": { 14 | "webpack": "^5", 15 | "webpack-cli": "^5" 16 | } 17 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/src/alias.js: -------------------------------------------------------------------------------- 1 | const alias = 'hello alias' 2 | export default alias -------------------------------------------------------------------------------- /projects/webpack/src-init/src/component.jsx: -------------------------------------------------------------------------------- 1 | function ReactComponent() { 2 | return <>hello react 3 | } 4 | 5 | export default ReactComponent -------------------------------------------------------------------------------- /projects/webpack/src-init/src/component.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /projects/webpack/src-init/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/webpack/src-init/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/webpack/src-init/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/webpack/src-init/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](../images/bird.png) -------------------------------------------------------------------------------- /projects/webpack/src-init/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/webpack/src-init/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/webpack/src-init/src/images/bird.png -------------------------------------------------------------------------------- /projects/webpack/src-init/src/index.css: -------------------------------------------------------------------------------- 1 | .css { 2 | color: rgb(0,0,255); 3 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/src/index.less: -------------------------------------------------------------------------------- 1 | .less { 2 | color: rgb(0, 255, 0); 3 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/src/index.module.less: -------------------------------------------------------------------------------- 1 | .lessModules { 2 | color: rgb(255, 0, 0); 3 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/src/index.ts: -------------------------------------------------------------------------------- 1 | export default function (): string { 2 | return 'hello ts' 3 | } -------------------------------------------------------------------------------- /projects/webpack/src-init/src/version.js: -------------------------------------------------------------------------------- 1 | const versionElement = document.createElement('div') 2 | versionElement.textContent = `hello ${process.env.__VERSION__}` 3 | document.body.appendChild(versionElement) -------------------------------------------------------------------------------- /projects/webpack/src-init/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = {} -------------------------------------------------------------------------------- /projects/webpack/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 |
7 | 8 | -------------------------------------------------------------------------------- /projects/webpack/src/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "get /mock-api/ping": { 3 | "code": 0, 4 | "data": "mock" 5 | }, 6 | "post /mock-api/add-project": { 7 | "success": true 8 | } 9 | } -------------------------------------------------------------------------------- /projects/webpack/src/src/alias.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | const alias = 'hello alias' 16 | export default alias -------------------------------------------------------------------------------- /projects/webpack/src/src/files/bar.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/bar' -------------------------------------------------------------------------------- /projects/webpack/src/src/files/foo.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default 'files/foo' -------------------------------------------------------------------------------- /projects/webpack/src/src/hello.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # hello markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/webpack/src/src/hello.zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: hello frontmatter 3 | tags: 4 | - foo 5 | - bar 6 | --- 7 | 8 | # 你好 markdown 9 | 10 | ![markdown-bird-image](./images/bird.png) -------------------------------------------------------------------------------- /projects/webpack/src/src/images/TablerAntennaBars5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/webpack/src/src/images/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/projects/webpack/src/src/images/bird.png -------------------------------------------------------------------------------- /projects/webpack/src/src/index.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | 17 | .css { 18 | color: rgb(0,0,255); 19 | } -------------------------------------------------------------------------------- /projects/webpack/src/src/index.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .less { 16 | color: rgb(0, 255, 0); 17 | } -------------------------------------------------------------------------------- /projects/webpack/src/src/index.module.less: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | .lessModules { 16 | color: rgb(255, 0, 0); 17 | } -------------------------------------------------------------------------------- /projects/webpack/src/src/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export default function (): string { 16 | return 'hello ts' 17 | } -------------------------------------------------------------------------------- /projects/webpack/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./dist/", 4 | "sourceMap": true, 5 | "noImplicitAny": true, 6 | "module": "es6", 7 | "target": "es2022", 8 | "jsx": "react", 9 | "allowJs": true, 10 | "moduleResolution": "node", 11 | "esModuleInterop": true, 12 | "lib": ["es2020", "dom"] 13 | } 14 | } -------------------------------------------------------------------------------- /projects/zustand/.evalignore: -------------------------------------------------------------------------------- 1 | index.html -------------------------------------------------------------------------------- /projects/zustand/src-init/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /projects/zustand/src-init/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './App.css' 3 | 4 | function App() { 5 | return
Empty
6 | } 7 | 8 | export default App 9 | -------------------------------------------------------------------------------- /projects/zustand/src-init/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/zustand/src-init/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 6 | 7 | root.render() 8 | -------------------------------------------------------------------------------- /projects/zustand/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blog 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/zustand/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /projects/zustand/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /// 16 | -------------------------------------------------------------------------------- /tools/bench-agent/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bytedance/web-bench/f9b59bc5aba29c84abdc6e89ba3003600f3cfb90/tools/bench-agent/.gitignore -------------------------------------------------------------------------------- /tools/bench-agent/src/llm/openrouter.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023-2024 Continue Dev, Inc. 2 | // Copyright (c) 2025 Bytedance Ltd. 3 | // SPDX-License-Identifier: Apache-2.0 4 | // 5 | // This file has been modified by OpenAILLM Ltd on OpenRouter 6 | // 7 | // Original file was released under Apache-2.0, with the full license text 8 | // available at https://github.com/continuedev/continue?tab=Apache-2.0-1-ov-file. 9 | // 10 | // This modified file is released under the same license. 11 | 12 | import { OpenAILLM } from './openai' 13 | 14 | export class OpenRouter extends OpenAILLM { 15 | provider = 'openrouter' 16 | 17 | useLegacyCompletionsEndpoint = false 18 | } 19 | -------------------------------------------------------------------------------- /tools/bench-agent/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "target": "es2020", 5 | "module": "esnext", 6 | "strictPropertyInitialization": false, 7 | "strict": true, 8 | "outDir": "dist/", 9 | "esModuleInterop": true, 10 | "moduleResolution": "node", 11 | "skipLibCheck": true, 12 | "noUnusedLocals": true, 13 | "noImplicitAny": true, 14 | "allowJs": true, 15 | "resolveJsonModule": true, 16 | "types": ["node"], 17 | "typeRoots": ["node_modules/@types"], 18 | "jsx": "react", 19 | "lib": ["es6", "dom", "es2020", "es2019.Array"] 20 | }, 21 | "include": ["./src"], 22 | "exclude": ["node_modules"] 23 | } 24 | -------------------------------------------------------------------------------- /tools/evaluator/.gitignore: -------------------------------------------------------------------------------- 1 | csv 2 | 3 | scripts/arena-fetches.js -------------------------------------------------------------------------------- /tools/evaluator/src/global.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /tools/evaluator/src/plugins/common.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export const EvalPluginPrefix = 'eval_default_plugin_' 16 | -------------------------------------------------------------------------------- /tools/evaluator/src/plugins/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export * from './schedule' 16 | export * from './plugin' 17 | -------------------------------------------------------------------------------- /tools/evaluator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "target": "es2020", 5 | "module": "esnext", 6 | "strictPropertyInitialization": false, 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "moduleResolution": "node", 10 | "skipLibCheck": true, 11 | "noUnusedLocals": true, 12 | "outDir": "dist/", 13 | "noImplicitAny": true, 14 | "allowJs": true, 15 | "resolveJsonModule": true, 16 | "types": ["node"], 17 | "typeRoots": ["node_modules/@types"], 18 | "jsx": "react", 19 | "lib": ["es6", "dom", "es2020", "es2019.Array"] 20 | }, 21 | "include": ["./src", "./scripts"] 22 | } 23 | -------------------------------------------------------------------------------- /tools/http-agent/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "target": "es2020", 5 | "module": "esnext", 6 | "strictPropertyInitialization": false, 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "moduleResolution": "node", 10 | "skipLibCheck": true, 11 | "noUnusedLocals": true, 12 | "noImplicitAny": true, 13 | "allowJs": true, 14 | "resolveJsonModule": true, 15 | "types": ["node"], 16 | "typeRoots": ["node_modules/@types"], 17 | "jsx": "react", 18 | "lib": ["es6", "dom", "es2020", "es2019.Array"] 19 | }, 20 | "include": ["./src"], 21 | "exclude": ["node_modules"] 22 | } 23 | -------------------------------------------------------------------------------- /tools/readme.md: -------------------------------------------------------------------------------- 1 | # Web-Bench Tools 2 | 3 | 4 | 5 | ## Development 6 | 7 | 1. Install dependencies 8 | 9 | ``` 10 | rush update 11 | ``` 12 | 13 | 2. 启动服务 14 | 15 | ``` 16 | rush dev:eval 17 | ``` 18 | 19 | 3. 执行 20 | 21 | ``` 22 | rush eval 23 | ``` 24 | -------------------------------------------------------------------------------- /tools/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "target": "es2020", 5 | "module": "esnext", 6 | "strictPropertyInitialization": false, 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "moduleResolution": "node", 10 | "skipLibCheck": true, 11 | "noUnusedLocals": true, 12 | "noImplicitAny": true, 13 | "allowJs": true, 14 | "resolveJsonModule": true, 15 | "types": ["node"], 16 | "typeRoots": ["node_modules/@types"], 17 | "jsx": "react", 18 | "lib": ["es6", "dom", "es2020", "es2019.Array"] 19 | }, 20 | "include": ["./src"], 21 | "exclude": ["node_modules"] 22 | } 23 | --------------------------------------------------------------------------------