tc39-throw
v0.2.2
Published
Enable support for throw expressions in JavaScript tools
Readme
tc39-throw
An implementation of the ECMAScript throw expressions proposal.
⚠️ For demo and toy-level projects only - not for production use!
Install
Install the package via npm:
npm i tc39-throwFeatures
This demo project showcases full toolchain integration for the throw operator:
- ✅ TypeScript - Full type support with transformations.
- ✅ Bundler - Seamless integration with Vite and other bundlers via
unplugin. - ✅ Prettier - Code formatting support.
- ✅ ESLint - Linting with proper syntax recognition.
- ✅ Development - Hot reload and dev server support powered by Vite.
Configuration
Vite Integration
To integrate with Vite, configure your vite.config.ts as follows:
// vite.config.ts
import Throw from 'tc39-throw/unplugin'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [Throw.vite()],
})TypeScript Macro
For proper syntax highlighting and IntelliSense support of the throw operator, install the TS Macro extension in VS Code.
Alternatively, search for "TS Macro" in the VS Code Extensions marketplace.
Then, configure your ts-macro.config.ts:
// ts-macro.config.ts
import volar from 'tc39-throw/volar'
export default {
plugins: [volar()],
}Prettier Configuration
To enable Prettier support for the throw operator, configure your prettier.config.js as follows:
// prettier.config.js
import { fileURLToPath } from 'node:url'
export default {
// ...
plugins: [fileURLToPath(import.meta.resolve('tc39-throw/prettier'))],
}ESLint Configuration
To enable ESLint support for the throw operator, configure your eslint.config.js as follows:
// eslint.config.js
import { GLOB_JS, GLOB_TS, sxzz } from '@sxzz/eslint-config'
import * as tsParser from 'tc39-throw/eslint-typescript-parser'
import * as jsParser from 'tc39-throw/espree'
export default sxzz().append(
{
files: [GLOB_TS],
languageOptions: { parser: tsParser },
},
{
files: [GLOB_JS],
languageOptions: { parser: jsParser },
},
)Sponsors
License
MIT License © 2025-PRESENT Kevin Deng
