@zern/tsls
v0.1.0
Published
TypeScript Language Service plugin for Zern Kernel virtual type augmentations
Downloads
7
Maintainers
Readme
@kernel/ts-ls
TypeScript Language Service plugin that generates Zern Kernel type augmentations in memory to power autocomplete and payload inference for events, alerts, and hooks without writing files to disk during development.
What it does
- Scans your source for declarative specs:
- events:
createEvents('ns', { login: event<Payload>() }) - alerts:
createAlerts('ui', { Info: defineAlert<Payload>() }) - hooks:
createHooks('ns', { beforeLogin: defineHook<Payload>() })
- events:
- Builds a virtual declaration file with module augmentations:
declare module '@events/types' { interface ZernEvents { ... } }declare module '@alerts/types' { interface ZernAlerts { ... } }declare module '@hooks/types' { interface ZernHooks { ... } }
- Serves this
.d.tsfrom memory to the TS server so your editor gets:- autocomplete for
useEvents()/useAlerts()/useHooks()sem argumentos - payload inference em
on/emit
- autocomplete for
Install
npm i -D @kernel/ts-ls
# or
pnpm add -D @kernel/ts-lsUsage (tsconfig.json)
{
"compilerOptions": {
"plugins": [
{
"name": "@kernel/ts-ls",
"pluginGlobs": ["**/*.plugin.ts", "plugins/**/specs/*.ts", "src/**/specs/*.{ts,tsx}"]
}
]
}
}Options
- pluginGlobs: string[]
- Globs para localizar arquivos que contém
createEvents/createAlerts/createHooks. - Padrões padrão:
['**/*.plugin.ts', 'plugins/**/specs/*.ts', 'src/**/specs/*.{ts,tsx}'].
- Globs para localizar arquivos que contém
Notes
- Dev-time only: o arquivo
.d.tsé virtual (não é escrito em disco). - Build/publish: gere um
.d.tsfísico no build do seu pacote para consumidores sem o plugin. Ex.: um passo de build que materializazern-augmentations.d.ts(fora do escopo deste pacote).
How it detects payload types
- Tenta capturar
<Payload>deevent<Payload>(),defineAlert<Payload>(),defineHook<Payload>()via heurística simples de regex. - Se não encontrar, usa
unknownpara aquele item (autocomplete funciona; inferência de payload viraunknown).
License MIT
