[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3449":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":13,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":15,"starSnapshotCount":15,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},3449,"ttsc","samchon\u002Fttsc","samchon","A `typescript-go` toolchain for compiler-powered plugins and type-safe execution + 500x faster lint integrated into compiler","",null,"Go",154,5,1,0,22,3,49.03,"MIT License",false,"master",true,[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"ast","cli","compiler","compilers","eslint","esm","lint","loader","nodejs","plugin","runtime","toolchain","transformer","typescript","typescript-go","typia","2026-06-12 04:00:17","# `ttsc`\n\n![banner of ttsc](https:\u002F\u002Fttsc.dev\u002Fog.jpg)\n\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Fblob\u002Fmaster\u002FLICENSE) [![NPM Version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fttsc.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fttsc) [![NPM Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fttsc.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fttsc) [![Build Status](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Fworkflows\u002Ftest\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Factions?query=workflow%3Atest) [![Guide Documents](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGuide-Documents-forestgreen)](https:\u002F\u002Fttsc.dev\u002Fdocs) [![Discord Badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-samchon-d91965?style=flat&labelColor=5866f2&logo=discord&logoColor=white&link=https:\u002F\u002Fdiscord.gg\u002FE94XhzrUCZ)](https:\u002F\u002Fdiscord.gg\u002FE94XhzrUCZ)\n\nA `typescript-go` toolchain for compiler-powered plugins and type-safe execution.\n\nBenchmarked on the VS Code fixture: up to **10x** faster type checks and a **500x** faster measured lint pass.\n\n- **`ttsc`**: build, check, and transform.\n- **`ttsx`**: execute TypeScript with type checking.\n  - native TypeScript-Go execution instead of transpile-only runners.\n  - type checking that `tsx` does not provide.\n- **`@ttsc\u002Flint`**: replaces `eslint` and `prettier`.\n  - lint violations as TS compile errors.\n  - format autofixes via `ttsc format`.\n- **plugin support**: compiler-powered libraries, such as `typia`.\n\n## Setup\n\n### Install\n\nInstall `ttsc`, `@ttsc\u002Flint`, and the native TypeScript preview package:\n\n```bash\nnpm install -D ttsc @ttsc\u002Flint @typescript\u002Fnative-preview\n```\n\n### Commands\n\nRun TypeScript directly with `ttsx` (CLI command):\n\n```bash\nnpx ttsx src\u002Findex.ts\n```\n\nBuild, check, or watch the project with `ttsc`:\n\n```bash\nnpx ttsc\nnpx ttsc --noEmit\nnpx ttsc --watch\n```\n\nRewrite source files in place with the `@ttsc\u002Flint` format rules:\n\n```bash\nnpx ttsc format\n```\n\n### VSCode Extension\n\nInstall the VS Code extension for live TypeScript-Go editor features plus saved-state ttsc plugin diagnostics and actions. Run `npx @ttsc\u002Fvscode`; it downloads the package and installs the bundled `.vsix` into VS Code, nothing to keep as a dependency:\n\n```bash\nnpx @ttsc\u002Fvscode\n```\n\nThen turn on format-on-save in `.vscode\u002Fsettings.json`:\n\n```jsonc\n\"[typescript][typescriptreact]\": {\n  \"editor.defaultFormatter\": \"samchon.ttsc\",\n  \"editor.formatOnSave\": true\n}\n```\n\nLint fixes stay off-save by default; opt in with `\"editor.codeActionsOnSave\": { \"source.fixAll.ttsc\": \"explicit\" }`.\n\nSee [`@ttsc\u002Fvscode`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fvscode) for requirements and settings.\n\n### Bundlers\n\nUse `@ttsc\u002Funplugin` when a bundler owns your build.\n\nIt runs `ttsc` plugins inside supported bundlers.\n\n```bash\nnpm install -D ttsc @ttsc\u002Flint @typescript\u002Fnative-preview\nnpm install -D @ttsc\u002Funplugin\n```\n\nMinimal Vite setup:\n\n```ts\n\u002F\u002F vite.config.ts\nimport ttsc from \"@ttsc\u002Funplugin\u002Fvite\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [ttsc()],\n});\n```\n\nSupported bundlers:\n\n- Vite\n- Rollup\n- Rolldown\n- esbuild\n- Webpack\n- Rspack\n- Next.js\n- Farm\n- Bun\n\nSee [`@ttsc\u002Funplugin`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Funplugin) for full setup and adapter options.\n\n## Plugins\n\nPlugins let libraries add compile-time checks, transforms, and type-driven code generation to normal `ttsc` and `ttsx` runs.\n\n```bash\n# compile\nnpx ttsc\n\n# execute\nnpx ttsx src\u002Findex.ts\n```\n\n### Transform Example\n\nA transform uses TypeScript types to generate JavaScript before runtime.\n\n```ts\nimport typia, { tags } from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst matched: boolean = typia.is\u003CIMember>({\n  id: v4(),\n  email: \"samchon.github@gmail.com\",\n  age: 30,\n});\nconsole.log(matched); \u002F\u002F true\n\ninterface IMember {\n  id: string & tags.Format\u003C\"uuid\">;\n  email: string & tags.Format\u003C\"email\">;\n  age: number &\n    tags.Type\u003C\"uint32\"> &\n    tags.ExclusiveMinimum\u003C19> &\n    tags.Maximum\u003C100>;\n}\n```\n\nThe transform replaces `typia.is\u003CIMember>()` with dedicated JavaScript checks at build time:\n\n```js\nimport typia from \"typia\";\nimport * as __typia_transform__isFormatEmail from \"typia\u002Flib\u002Finternal\u002F_isFormatEmail\";\nimport * as __typia_transform__isFormatUuid from \"typia\u002Flib\u002Finternal\u002F_isFormatUuid\";\nimport * as __typia_transform__isTypeUint32 from \"typia\u002Flib\u002Finternal\u002F_isTypeUint32\";\nimport { v4 } from \"uuid\";\n\nconst matched = (() => {\n  const _io0 = (input) =>\n    \"string\" === typeof input.id &&\n    __typia_transform__isFormatUuid._isFormatUuid(input.id) &&\n    \"string\" === typeof input.email &&\n    __typia_transform__isFormatEmail._isFormatEmail(input.email) &&\n    \"number\" === typeof input.age &&\n    __typia_transform__isTypeUint32._isTypeUint32(input.age) &&\n    19 \u003C input.age &&\n    input.age \u003C= 100;\n  return (input) => \"object\" === typeof input && null !== input && _io0(input);\n})()({\n  id: v4(),\n  email: \"samchon.github@gmail.com\",\n  age: 30,\n});\nconsole.log(matched); \u002F\u002F true\n```\n\n## Programmatic API\n\nEmbed `ttsc` from another Node tool with the `TtscCompiler` class:\n\n```ts\nimport { TtscCompiler } from \"ttsc\";\n\nconst compiler = new TtscCompiler({ cwd: \".\u002Fproject\" });\nconst result = compiler.compile();\n\nif (result.type === \"success\") {\n  for (const [path, text] of Object.entries(result.output)) {\n    \u002F\u002F path is project-relative (\"dist\u002Findex.js\", \"dist\u002Findex.d.ts\", ...)\n    console.log(path, text.length);\n  }\n} else if (result.type === \"failure\") {\n  for (const d of result.diagnostics) {\n    console.error(`${d.file}:${d.line}:${d.character} ${d.messageText}`);\n  }\n}\n```\n\nSee the [Programmatic API guide](https:\u002F\u002Fttsc.dev\u002Fdocs\u002Fttsc\u002Fapi) for the full lifecycle, plugin overrides, and patterns. For browser embedding, see [`@ttsc\u002Fwasm`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fwasm) and the higher-level [`@ttsc\u002Fplayground`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fplayground) package.\n\n### List of Plugins\n\n`ttsc` ships a few small utility plugins in this repository.\n\n- [`@ttsc\u002Fbanner`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbanner): adds `@packageDocumentation` JSDoc banners.\n- [`@ttsc\u002Flint`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Flint): lints and formats TypeScript source.\n- [`@ttsc\u002Fpaths`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fpaths): rewrites source path aliases so JS and declaration emit receive relative imports.\n- [`@ttsc\u002Fstrip`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Fstrip): removes configured calls and `debugger` statements.\n- [`@ttsc\u002Funplugin`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fttsc\u002Ftree\u002Fmaster\u002Fpackages\u002Funplugin): runs `ttsc` plugins inside bundlers supported by `unplugin`.\n\nPlugin authors should start from the [`Guide Documents`](https:\u002F\u002Fttsc.dev\u002Fdocs).\n\nEcosystem plugins are listed below; PRs adding `ttsc` plugins are welcome.\n\n- [`nestia`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Fnestia): generates NestJS routes, OpenAPI, and SDKs.\n- [`typia`](https:\u002F\u002Fgithub.com\u002Fsamchon\u002Ftypia): generates validators, serializers, and type-driven runtime code.\n\n## Sponsors\n\n[![Sponsors](https:\u002F\u002Fraw.githubusercontent.com\u002Fsamchon\u002Fsponsor-images\u002Frefs\u002Fheads\u002Fmaster\u002Fpublic\u002Fcircle.svg)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fsamchon)\n\nThanks for your support.\n\nYour [donation](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fsamchon) encourages `ttsc` development.\n\n## References\n\n- TypeScript runners: [`ts-node`](https:\u002F\u002Fgithub.com\u002FTypeStrong\u002Fts-node) and [`tsx`](https:\u002F\u002Fgithub.com\u002Fprivatenumber\u002Ftsx)\n- Transformer tooling: [`ttypescript`](https:\u002F\u002Fgithub.com\u002Fcevek\u002Fttypescript) and [`ts-patch`](https:\u002F\u002Fgithub.com\u002Fnonara\u002Fts-patch)\n- Inspired by: [`typical`](https:\u002F\u002Fgithub.com\u002Felliots\u002Ftypical) and [`tsgonest`](https:\u002F\u002Fgithub.com\u002Ftsgonest\u002Ftsgonest)\n","`ttsc` 是一个基于 `typescript-go` 的工具链，旨在通过编译器驱动的插件实现类型安全的执行，并提供比传统方法快500倍的集成到编译器中的代码检查功能。其核心功能包括使用 `ttsc` 进行构建、检查和转换，利用 `ttsx` 直接执行 TypeScript 代码并进行类型检查，以及通过 `@ttsc\u002Flint` 替换 `eslint` 和 `prettier` 来将代码风格问题作为编译错误处理。此外，该项目支持编译器驱动的库如 `typia`。适合于需要高效类型检查与代码格式化，同时追求极致性能提升的 TypeScript 开发场景中使用。",2,"2026-06-11 02:54:31","CREATED_QUERY"]