The kit had NO biome config and no lint script, while every plugin repo that
consumes it has both. So its source quietly drifted — unused imports, unsorted
imports, formatting — with nothing to catch any of it. Running biome here for
the first time reported 20 findings across 8 files.
Adds `plugin-kit/biome.json` mirroring the plugin repos' (tab indent, double
quotes, recommended lint preset, organizeImports), a `check` script, and
`@biomejs/biome` pinned to the same `^2.5.2` the plugins pin — without that pin
`bunx biome` resolved 2.4.6, which rejects the 2.5 `rules.preset` key.
Two deliberate differences from the plugin repos' copy:
* no `vcs.useIgnoreFile` — those are standalone repos with a .gitignore beside
the config; plugin-kit is a directory inside this one, and biome errors with
"couldn't find an ignore file". The `files.includes` exclusions cover it.
* `!examples/**/dist` instead of `!ui/dist` — the kit has examples, not a UI.
`css.parser.tailwindDirectives` is carried over and is load-bearing: without it
biome cannot parse `@theme` in src/theme.css and reports three parse errors on
CSS that is perfectly valid Tailwind v4.
Everything here is formatter/import churn except two real findings, both fixed:
* `Layer` (library/define.ts) and `Cause` (sync-engine.ts) were imported and
never used;
* test/spike-httpapi.test.ts read `(reg?.body as …).ui.secret` one line after
`expect(reg).toBeDefined()`. The optional chain undoes the assertion: had
`reg` been undefined the `.ui` access would throw a TypeError instead of
failing the test readably. Now asserted to the type system too.
Wired into plugin-kit-publish.yml as a `Lint & format` step ahead of Typecheck,
so this cannot rot again.
Gates after: biome clean (42 files), tsc clean, 67/67 tests, build clean.
79 lines
1.8 KiB
JSON
79 lines
1.8 KiB
JSON
{
|
|
"name": "@punktfunk/plugin-kit",
|
|
"version": "0.3.1",
|
|
"description": "Effect-based framework for punktfunk plugins: lifecycle runtime, config/state, sync engine, UI serving, CLI scaffold, and browser helpers.",
|
|
"type": "module",
|
|
"license": "MIT OR Apache-2.0",
|
|
"homepage": "https://git.unom.io/unom/punktfunk/src/branch/main/plugin-kit",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.unom.io/unom/punktfunk.git",
|
|
"directory": "plugin-kit"
|
|
},
|
|
"bugs": {
|
|
"url": "https://git.unom.io/unom/punktfunk/issues"
|
|
},
|
|
"keywords": [
|
|
"punktfunk",
|
|
"plugin",
|
|
"framework",
|
|
"effect"
|
|
],
|
|
"main": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.js"
|
|
},
|
|
"./react": {
|
|
"types": "./dist/react/index.d.ts",
|
|
"default": "./dist/react/index.js"
|
|
},
|
|
"./wire": {
|
|
"types": "./dist/wire.d.ts",
|
|
"default": "./dist/wire.js"
|
|
},
|
|
"./library": {
|
|
"types": "./dist/library/index.d.ts",
|
|
"default": "./dist/library/index.js"
|
|
},
|
|
"./theme.css": "./dist/theme.css"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"README.md"
|
|
],
|
|
"publishConfig": {
|
|
"registry": "https://git.unom.io/api/packages/unom/npm/"
|
|
},
|
|
"scripts": {
|
|
"typecheck": "tsc --noEmit",
|
|
"build": "tsc -p tsconfig.build.json && cp src/theme.css dist/theme.css",
|
|
"test": "bun test",
|
|
"prepublishOnly": "bun run build",
|
|
"check": "biome check ."
|
|
},
|
|
"peerDependencies": {
|
|
"effect": "^4.0.0-beta.98",
|
|
"@punktfunk/host": "^0.1.2",
|
|
"react": "^19.2.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"react": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "^2.5.2",
|
|
"@punktfunk/host": "file:../sdk",
|
|
"@types/bun": "^1.3.0",
|
|
"@types/react": "^19.2.16",
|
|
"effect": "4.0.0-beta.99",
|
|
"typescript": "^5.9.3"
|
|
},
|
|
"overrides": {
|
|
"undici": "^8.9.0"
|
|
}
|
|
}
|