# <samp>TSC-ESBUILD</samp>

Seamless `tsc` command powered by blazing fast [esbuild](https://esbuild.github.io).

[![Test](https://github.com/fi3ework/tsc-esbuild/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/fi3ework/tsc-esbuild/actions/workflows/test.yaml)

## Installation

```bash
npm install --save-dev tsc-esbuild
```

## Supported CLI args

> ✅ Suppported · 🚧 WIP · ⚪️ N/A

| typescript | tsc-esbuild | Status |
| ---------- | ----------- | ------ |
| `tsc`      | `ebc`       | ✅     |
| `tsc -w`   | `ebc -w`    | ✅     |
| `tsc -p`   | `ebc -w`    | 🚧     |

## Supported tsconfig options

| Status | Option                                        | Type       | Default                                                                 |
| ------ | --------------------------------------------- | ---------- | ----------------------------------------------------------------------- |
|        | `--allowJs`                                   | `boolean`  | `false`                                                                 |
|        | `--allowSyntheticDefaultImports`              | `boolean`  | `module === "system"` or `--esModuleInterop`                            |
|        | `--allowUmdGlobalAccess`                      | `boolean`  | `false`                                                                 |
|        | `--allowUnreachableCode`                      | `boolean`  |
|        | `--allowUnusedLabels`                         | `boolean`  | `false`                                                                 |
|        | `--alwaysStrict`                              | `boolean`  | `false`                                                                 |
|        | `--assumeChangesOnlyAffectDirectDependencies` | `boolean`  | `false`                                                                 |
|        | `--baseUrl`                                   | `string`   |
|        | `--build`<br/>`-b`                            | `boolean`  | `false`                                                                 |
|        | `--charset`                                   | `string`   | `"utf8"`                                                                |
|        | `--checkJs`                                   | `boolean`  | `false`                                                                 |
|        | `--composite`                                 | `boolean`  | `true`                                                                  |
|        | `--declaration`<br/>`-d`                      | `boolean`  | `false`                                                                 |
|        | `--declarationDir`                            | `string`   |
|        | `--declarationMap`                            | `boolean`  | `false`                                                                 |
|        | `--diagnostics`                               | `boolean`  | `false`                                                                 |
|        | `--disableSizeLimit`                          | `boolean`  | `false`                                                                 |
|        | `--downlevelIteration`                        | `boolean`  | `false`                                                                 |
|        | `--emitBOM`                                   | `boolean`  | `false`                                                                 |
|        | `--emitDeclarationOnly`                       | `boolean`  | `false`                                                                 |
|        | `--emitDecoratorMetadata`<sup>[1]</sup>       | `boolean`  | `false`                                                                 |
|        | `--esModuleInterop`                           | `boolean`  | `false`                                                                 |
|        | `--experimentalDecorators`<sup>[1]</sup>      | `boolean`  | `false`                                                                 |
|        | `--extendedDiagnostics`                       | `boolean`  | `false`                                                                 |
|        | `--forceConsistentCasingInFileNames`          | `boolean`  | `false`                                                                 |
|        | `--generateCpuProfile`                        | `string`   | `profile.cpuprofile`                                                    |
|        | `--help`<br/>`-h`                             |            |
|        | `--importHelpers`                             | `boolean`  | `false`                                                                 |
|        | `--incremental`                               | `boolean`  | `true` if `composite` is on, `false` otherwise                          |
| ✅     | `--inlineSourceMap`                           | `boolean`  | `false`                                                                 |
|        | `--inlineSources`                             | `boolean`  | `false`                                                                 |
|        | `--init`                                      |            |
|        | `--isolatedModules`                           | `boolean`  | `false`                                                                 |
|        | `--jsx`                                       | `string`   |
|        | `--jsxFactory`                                | `string`   | `"React.createElement"`                                                 |
|        | `--jsxFragmentFactory`                        | `string`   | `"React.Fragment"`                                                      |
|        | `--keyofStringsOnly`                          | `boolean`  | `false`                                                                 |
|        | `--lib`                                       | `string[]` |
|        | `--listEmittedFiles`                          | `boolean`  | `false`                                                                 |
|        | `--listFiles`                                 | `boolean`  | `false`                                                                 |
|        | `--locale`                                    | `string`   | _(platform specific)_                                                   |
|        | `--mapRoot`                                   | `string`   |
|        | `--maxNodeModuleJsDepth`                      | `number`   | `0`                                                                     |
|        | `--module`<br/>`-m`                           | `string`   | `target === "ES3" or "ES5" ? "CommonJS" : "ES6"`                        |
|        | `--moduleResolution`                          | `string`   | `module === "AMD" or "UMD" or "System" or "ES6" ? "Classic" : "Node"`   |
|        | `--newLine`                                   | `string`   | _(platform specific)_                                                   |
|        | `--noEmit`                                    | `boolean`  | `false`                                                                 |
|        | `--noEmitHelpers`                             | `boolean`  | `false`                                                                 |
|        | `--noEmitOnError`                             | `boolean`  | `false`                                                                 |
|        | `--noErrorTruncation`                         | `boolean`  | `false`                                                                 |
|        | `--noFallthroughCasesInSwitch`                | `boolean`  | `false`                                                                 |
|        | `--noImplicitAny`                             | `boolean`  | `false`                                                                 |
|        | `--noImplicitReturns`                         | `boolean`  | `false`                                                                 |
|        | `--noImplicitThis`                            | `boolean`  | `false`                                                                 |
|        | `--noImplicitUseStrict`                       | `boolean`  | `false`                                                                 |
|        | `--noLib`                                     | `boolean`  | `false`                                                                 |
|        | `--noResolve`                                 | `boolean`  | `false`                                                                 |
|        | `--noStrictGenericChecks`                     | `boolean`  | `false`                                                                 |
|        | `--noUnusedLocals`                            | `boolean`  | `false`                                                                 |
|        | `--noUnusedParameters`                        | `boolean`  | `false`                                                                 |
|        | ~~`--out`~~                                   | `string`   |
|        | `--outDir`                                    | `string`   |
|        | `--outFile`                                   | `string`   |
|        | `paths`<sup>[2]</sup>                         | `Object`   |
|        | `--preserveConstEnums`                        | `boolean`  | `false`                                                                 |
|        | `--preserveSymlinks`                          | `boolean`  | `false`                                                                 |
|        | `--preserveWatchOutput`                       | `boolean`  | `false`                                                                 |
|        | `--pretty`                                    | `boolean`  | `true` unless piping to another program or redirecting output to a file |
|        | `--project`<br/>`-p`                          | `string`   |
|        | `--reactNamespace`                            | `string`   | `"React"`                                                               |
|        | `--removeComments`                            | `boolean`  | `false`                                                                 |
|        | `--resolveJsonModule`                         | `boolean`  | `false`                                                                 |
|        | `--rootDir`                                   | `string`   | _(common root directory is computed from the list of input files)_      |
|        | `rootDirs`<sup>[2]</sup>                      | `string[]` |
|        | `--showConfig`                                | `boolean`  | `false`                                                                 |
|        | `--skipDefaultLibCheck`                       | `boolean`  | `false`                                                                 |
|        | `--skipLibCheck`                              | `boolean`  | `false`                                                                 |
| ✅     | `--sourceMap`                                 | `boolean`  | `false`                                                                 |
|        | `--sourceRoot`                                | `string`   |
|        | `--strict`                                    | `boolean`  | `false`                                                                 |
|        | `--strictBindCallApply`                       | `boolean`  | `false`                                                                 |
|        | `--strictFunctionTypes`                       | `boolean`  | `false`                                                                 |
|        | `--strictPropertyInitialization`              | `boolean`  | `false`                                                                 |
|        | `--strictNullChecks`                          | `boolean`  | `false`                                                                 |
|        | `--suppressExcessPropertyErrors`              | `boolean`  | `false`                                                                 |
|        | `--suppressImplicitAnyIndexErrors`            | `boolean`  | `false`                                                                 |
|        | `--target`<br/>`-t`                           | `string`   | `"ES3"`                                                                 |
|        | `--traceResolution`                           | `boolean`  | `false`                                                                 |
|        | `--tsBuildInfoFile`                           | `string`   | `.tsbuildinfo`                                                          |
|        | `--types`                                     | `string[]` |
|        | `--typeRoots`                                 | `string[]` |
|        | `--useDefineForClassFields`                   | `boolean`  | `false`                                                                 |
|        | `--version`<br/>`-v`                          |            |
|        | `--watch`<br/>`-w`                            |            |

## License

MIT
