effect-sugar-vite
v0.3.4
Published
Vite plugin for Effect-TS gen block syntax
Maintainers
Readme
effect-sugar-vite
Vite plugin and tsx loader for Effect-TS gen block syntax.
Installation
pnpm add -D effect-sugar-viteUsage
Vite Plugin
// vite.config.ts
import { defineConfig } from 'vite'
import effectSugar from 'effect-sugar-vite'
export default defineConfig({
plugins: [effectSugar()]
})tsx Loader (Node.js)
pnpm add -D effect-sugar-vite esbuild{
"scripts": {
"dev": "tsx --import effect-sugar-vite/register --watch src/index.ts"
}
}ESLint Preprocessor
// eslint.config.js
import effectSugarPreprocessor from 'effect-sugar-vite/eslint'
export default [
{
files: ['**/*.ts', '**/*.tsx'],
processor: effectSugarPreprocessor
}
]Transformation
// Input
const program = gen {
user <- getUser(id)
let name = user.name.toUpperCase()
return { user, name }
}
// Output
const program = Effect.gen(function* () {
const user = yield* getUser(id)
const name = user.name.toUpperCase()
return { user, name }
})Options
effectSugar({
include: ['.ts', '.tsx'], // File extensions (default: ['.ts', '.tsx', '.mts', '.cts'])
exclude: [/node_modules/], // Patterns to exclude
sourcemap: true // Enable source maps (default: true)
})API
import { transformSource, hasGenBlocks } from 'effect-sugar-vite/transform'
if (hasGenBlocks(source)) {
const result = transformSource(source, 'filename.ts')
console.log(result.code, result.map)
}License
MIT
