{"_id":"@calvinbonner/minifw","_rev":"3-fed24863dd260e3fc2cbd7c7691823e9","name":"@calvinbonner/minifw","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@calvinbonner/minifw","version":"0.1.0","keywords":["htmx","htmx4","hypermedia","bun","typescript","ts","ssr","framework"],"author":{"name":"Calvin Bonner","email":"me@calvinbonner.com"},"license":"MIT","_id":"@calvinbonner/minifw@0.1.0","maintainers":[{"name":"computergnome99","email":"me@calvinbonner.com"}],"homepage":"https://www.calvinbonner.dev/demos/minifw","dist":{"shasum":"a55872d6f5cc143df94cde6096fe91b6c091265b","tarball":"https://registry.npmjs.org/@calvinbonner/minifw/-/minifw-0.1.0.tgz","fileCount":46,"integrity":"sha512-1Oe2y5AZvissnvNfFGTsVq8R4D3wKS8REYuDoMtsEHsPMzmpkHK6vNEdMs4h7/3u4ufDoo0rEUCOgqDXDPpp7Q==","signatures":[{"sig":"MEYCIQCXoUfgfO581TZ2iscqTGRxVUmytTHsUOUfavZVHdsdZwIhAPQPJITl4m4GASsWY+ZwrVH0r6CaQgE4g9Tha8iTAUT0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61894},"type":"module","exports":{"./core":"./lib/core/index.ts","./helpers":"./lib/helpers/index.ts"},"gitHead":"81fa275b9266cd1f594738a10b64cc8a31c6d962","scripts":{"lint":"eslint --cache lib eslint.config.ts prettier.config.ts ; prettier --check .","prepare":"husky","lint:fix":"eslint --cache lib eslint.config.ts prettier.config.ts --fix ; prettier --write .","test:all":"bun run test:unit && bun run test:types && bun run test:e2e","test:e2e":"bun test ./examples/bun-routes/app.e2e.ts ./examples/express/app.e2e.ts ./examples/htmx-1/app.e2e.ts ./examples/htmx-2/app.e2e.ts ./examples/htmx-4/app.e2e.ts","test:unit":"bun test ./lib","docs:build":"typedoc --options typedoc.json","run:htmx-1":"bun examples/htmx-1/server.ts","run:htmx-2":"bun examples/htmx-2/server.ts","run:htmx-4":"bun examples/htmx-4/server.ts","test:types":"tsc --noEmit","run:express":"node --import tsx examples/express/server.ts","run:bun-routes":"bun examples/bun-routes/server.ts"},"_npmUser":{"name":"computergnome99","email":"me@calvinbonner.com"},"repository":{},"_npmVersion":"11.6.1","description":"A simple, server-side framework for building hypermedia apps quickly with HTMX.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"linkedom":"^0.18.12","lightningcss":"^1.32.0","html-minifier-terser":"^7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jiti":"^2.7.0","husky":"^9.1.7","eslint":"^10","htmx-1":"npm:htmx.org@1.9.12","htmx-2":"npm:htmx.org@2.0.4","htmx-4":"npm:htmx.org@4.0.0","express":"^5.2.1","typedoc":"^0.28.20","prettier":"^3","@types/bun":"latest","typescript":"^5","@types/express":"^5.0.6","typescript-eslint":"^8","eslint-plugin-jsdoc":"^64.2.1","eslint-plugin-unicorn":"^73.0.0","prettier-plugin-jsdoc":"^1.8","eslint-config-prettier":"^10","eslint-plugin-prettier":"^5.5","@types/html-minifier-terser":"^7.0.2"},"peerDependencies":{"bun":"^1.4"},"_npmOperationalInternal":{"tmp":"tmp/minifw_0.1.0_1788190119860_0.41614078867767135","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@calvinbonner/minifw","version":"0.2.0","keywords":["htmx","htmx4","hypermedia","bun","typescript","ts","ssr","framework"],"author":{"name":"Calvin Bonner","email":"me@calvinbonner.com"},"license":"MIT","_id":"@calvinbonner/minifw@0.2.0","maintainers":[{"name":"computergnome99","email":"me@calvinbonner.com"}],"homepage":"https://minifw.calvinbonner.dev","bugs":{"url":"https://github.com/computergnome99/minifw/issues"},"dist":{"shasum":"0391d69abdccfba13c78cc3d9e0d498cd2a1326e","tarball":"https://registry.npmjs.org/@calvinbonner/minifw/-/minifw-0.2.0.tgz","fileCount":48,"integrity":"sha512-BUZku3WmanUZp+suKQ4sMuQfOtzEIOxDkWktUNfWANzB4ziptdL4X+aTDZZgvxf7ENxxxkl8PGz9f9gcExVaPQ==","signatures":[{"sig":"MEUCIQDQ+0lrG1h7QOyWgxv5UH/bWUzM2PjTHKNDbW6maMSrFAIgQ+ED6tEg36bHh3BoLIQufLBRgvNMzVoufCIiVEnNFXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calvinbonner%2fminifw@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62309},"type":"module","exports":{"./core":"./lib/core/index.ts","./helpers":"./lib/helpers/index.ts"},"gitHead":"8cfe515bc912fa03f67b900bcfe9e5e7b141ed93","scripts":{"lint":"eslint --cache bin docs lib eslint.config.ts prettier.config.ts ; prettier --check .","prepare":"husky","lint:fix":"eslint --cache bin docs lib eslint.config.ts prettier.config.ts --fix ; prettier --write .","test:all":"bun run test:unit && bun run test:types && bun run test:e2e","test:e2e":"bun test ./examples/bun-routes/app.e2e.ts ./examples/express/app.e2e.ts ./examples/htmx-1/app.e2e.ts ./examples/htmx-2/app.e2e.ts ./examples/htmx-4/app.e2e.ts","test:unit":"bun test ./lib","docs:build":"bun bin/build-documentation.ts","run:htmx-1":"bun examples/htmx-1/server.ts","run:htmx-2":"bun examples/htmx-2/server.ts","run:htmx-4":"bun examples/htmx-4/server.ts","test:types":"tsc --noEmit","run:express":"node --import tsx examples/express/server.ts","run:bun-routes":"bun examples/bun-routes/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8e0b8471-7482-4338-b660-4fbc99931534"}},"repository":{"url":"git+https://github.com/computergnome99/minifw.git","type":"git"},"_npmVersion":"11.17.0","description":"A simple, server-side framework for building hypermedia apps quickly with HTMX.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"postcss":"^8.5.26","linkedom":"^0.18.12","lightningcss":"^1.32.0","@resvg/resvg-wasm":"^2.6.2","html-minifier-terser":"^7.2","@fontsource/fira-mono":"^5.3.0","postcss-selector-parser":"^7.1.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jiti":"^2.7.0","husky":"^9.1.7","eslint":"^10","htmx-1":"npm:htmx.org@1.9.12","htmx-2":"npm:htmx.org@2.0.4","htmx-4":"npm:htmx.org@4.0.0","marked":"^18.0.11","express":"^5.2.1","typedoc":"^0.28.20","prettier":"^3","@types/bun":"latest","typescript":"^5","gray-matter":"^4.0.3","highlight.js":"^11.12.0","@types/express":"^5.0.6","marked-highlight":"^2.2.4","typescript-eslint":"^8","eslint-plugin-jsdoc":"^64.2.1","eslint-plugin-unicorn":"^73.0.0","prettier-plugin-jsdoc":"^1.8","eslint-config-prettier":"^10","eslint-plugin-prettier":"^5.5","prettier-plugin-css-order":"^2.2.0","@types/html-minifier-terser":"^7.0.2"},"peerDependencies":{"bun":"^1.4"},"_npmOperationalInternal":{"tmp":"tmp/minifw_0.2.0_1788361383806_0.8138130556553129","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@calvinbonner/minifw@0.2.1","bugs":{"url":"https://github.com/computergnome99/minifw/issues"},"dist":{"shasum":"0fb5586c6dcf0121fb5d4957f036d6954f38b2dc","tarball":"https://registry.npmjs.org/@calvinbonner/minifw/-/minifw-0.2.1.tgz","fileCount":48,"integrity":"sha512-UFpiYcJHEZCH5Ky1dSzxzBs7kgyUJLUM6IPxmoiJm6wSppw35ZWNo2ZLkxChc2D/hItKHcIlzN8i6+fPZYRiZw==","signatures":[{"sig":"MEQCIHWV5Opu7Lydg6fCLdPg2IRKUI1UIpGdHsEjWoU57En2AiARQ9S4nu5vVP4LT02LlLL+4wJoMEpVaTRMNX5Zk7J15Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDlsHuflipaxCUfxeus+WD8rX7ZnnL0fvCxXVgel5VP7AiBdEefEqGkDJZe6T1h8jXYToULzFkCOudhEJbXw9X3meA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calvinbonner%2fminifw@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62952},"name":"@calvinbonner/minifw","type":"module","author":{"name":"Calvin Bonner","email":"me@calvinbonner.com"},"exports":{"./core":"./lib/core/index.ts","./helpers":"./lib/helpers/index.ts"},"gitHead":"bd9d0522483b19bc4d1a49bc877681a8d87b35d7","license":"MIT","scripts":{"lint":"eslint --cache bin docs lib eslint.config.ts prettier.config.ts ; prettier --check .","prepare":"husky","lint:fix":"eslint --cache bin docs lib eslint.config.ts prettier.config.ts --fix ; prettier --write .","test:all":"bun run test:unit && bun run test:types && bun run test:e2e","test:e2e":"bun test ./examples/bun-routes/app.e2e.ts ./examples/express/app.e2e.ts ./examples/htmx-1/app.e2e.ts ./examples/htmx-2/app.e2e.ts ./examples/htmx-4/app.e2e.ts","test:unit":"bun test ./lib","docs:build":"bun bin/build-documentation.ts","run:htmx-1":"bun examples/htmx-1/server.ts","run:htmx-2":"bun examples/htmx-2/server.ts","run:htmx-4":"bun examples/htmx-4/server.ts","test:types":"tsc --noEmit","run:express":"node --import tsx examples/express/server.ts","run:bun-routes":"bun examples/bun-routes/server.ts"},"version":"0.2.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8e0b8471-7482-4338-b660-4fbc99931534"}},"homepage":"https://minifw.calvinbonner.dev","keywords":["htmx","htmx4","hypermedia","bun","typescript","ts","ssr","framework"],"repository":{"url":"git+https://github.com/computergnome99/minifw.git","type":"git"},"_npmVersion":"11.19.0","description":"A simple, server-side framework for building hypermedia apps quickly with HTMX.","directories":{},"maintainers":[{"name":"computergnome99","email":"me@calvinbonner.com"}],"_nodeVersion":"24.21.0","dependencies":{"postcss":"^8.5.26","linkedom":"^0.18.12","lightningcss":"^1.32.0","@resvg/resvg-wasm":"^2.6.2","html-minifier-terser":"^7.2","@fontsource/fira-mono":"^5.3.0","postcss-selector-parser":"^7.1.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jiti":"^2.7.0","husky":"^9.1.7","eslint":"^10","htmx-1":"npm:htmx.org@1.9.12","htmx-2":"npm:htmx.org@2.0.4","htmx-4":"npm:htmx.org@4.0.0","marked":"^18.0.11","express":"^5.2.1","typedoc":"^0.28.20","prettier":"^3","@types/bun":"latest","typescript":"^5","gray-matter":"^4.0.3","highlight.js":"^11.12.0","@types/express":"^5.0.6","marked-highlight":"^2.2.4","typescript-eslint":"^8","eslint-plugin-jsdoc":"^64.2.1","eslint-plugin-unicorn":"^73.0.0","prettier-plugin-jsdoc":"^1.8","eslint-config-prettier":"^10","eslint-plugin-prettier":"^5.5","prettier-plugin-css-order":"^2.2.0","@types/html-minifier-terser":"^7.0.2"},"peerDependencies":{"bun":"^1.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/minifw_0.2.1_1790197194379_0.16708387458396867"}}},"time":{"created":"2026-08-31T15:28:39.654Z","modified":"2026-09-23T20:59:54.830Z","0.1.0":"2026-08-31T15:28:40.002Z","0.2.0":"2026-09-02T15:03:04.007Z","0.2.1":"2026-09-23T20:59:54.458Z"},"bugs":{"url":"https://github.com/computergnome99/minifw/issues"},"author":{"name":"Calvin Bonner","email":"me@calvinbonner.com"},"license":"MIT","homepage":"https://minifw.calvinbonner.dev","keywords":["htmx","htmx4","hypermedia","bun","typescript","ts","ssr","framework"],"repository":{"url":"git+https://github.com/computergnome99/minifw.git","type":"git"},"description":"A simple, server-side framework for building hypermedia apps quickly with HTMX.","maintainers":[{"name":"computergnome99","email":"me@calvinbonner.com"}],"readme":"[![JSR](https://img.shields.io/badge/jsr-f7df43?style=for-the-badge&logo=jsr&logoColor=093343)](https://jsr.io/@calvinbonner/minifw)\n[![NPM](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)](https://npmjs.org/@calvinbonner/minifw)\n[![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/computergnome99/minifw)\n\n<p align=\"center\">\n  <img src=\"https://minifw.calvinbonner.dev/assets/logo.svg\" alt=\"MiniFW\" height=\"160\" />\n</p>\n\n# Mini Framework\n\nMiniFW is a server-rendered framework for HTMX applications. It keeps\napplication state on the server and renders HTML responses, with a small client\nruntime only for HTMX navigation and scoped styles.\n\n## Installation\n\n<details>\n  <summary>Using <b>JSR</b> Repositories</summary>\n\n```bash\n# deno\ndeno add jsr:@calvinbonner/minifw\n\n# npm\nnpx jsr add @calvinbonner/minifw\n\n# pnpm\npnpm dlx jsr add @calvinbonner/minifw\n\n# bun\nbunx jsr add @calvinbonner/minifw\n\n# yarn\nyarn dlx jsr add @calvinbonner/minifw\n```\n\nOr, when using Deno, you can import directly from JSR without installing:\n\n```ts\nimport { mini, page } from \"jsr:@calvinbonner/minifw/core\";\n```\n\n</details>\n\n<details>\n  <summary>Using <b>NPM</b> Repositories</summary>\n\n```bash\n# npm\nnpm install @calvinbonner/minifw\n\n# pnpm\npnpm add @calvinbonner/minifw\n\n# bun\nbun add @calvinbonner/minifw\n\n# yarn\nyarn add @calvinbonner/minifw\n```\n\n</details>\n\n> [!NOTE]\n>\n> MiniFW requires Bun `1.4` or later to run the `mini()` server.\n\n## Minimal Application\n\n```ts\nimport { layout, mini, page } from \"@calvinbonner/minifw/core\";\nimport { html } from \"@calvinbonner/minifw/helpers\";\n\nmini({\n  port: 3000,\n  layouts: {\n    \"*\": layout(({ page }) => html`<main id=\"app\">${page}</main>`, {\n      pageTarget: \"#app\",\n    }),\n  },\n  routes: {\n    \"/\": page(\n      () => html`\n        <h1>Welcome to MiniFW</h1>\n        <p>This page is rendered on the server.</p>\n      `,\n    ),\n    \"/about\": page(() => html`<h1>About</h1>`),\n  },\n});\n```\n\nRun the application with `bun .`, then open `http://localhost:3000`. MiniFW\ncreates the document, serves each page, and uses HTMX to swap the `#app` target\non boosted navigation.\n\n## Documentation\n\nRead the full guides and API reference at\n[minifw.calvinbonner.dev](https://minifw.calvinbonner.dev).\n\n[![CI](https://github.com/computergnome99/minifw/actions/workflows/ci.yml/badge.svg)](https://github.com/computergnome99/minifw/actions/workflows/ci.yml)\n[![Publish JSR](https://github.com/computergnome99/minifw/actions/workflows/publish-jsr.yml/badge.svg)](https://github.com/computergnome99/minifw/actions/workflows/publish-jsr.yml)\n[![Publish npm](https://github.com/computergnome99/minifw/actions/workflows/publish-npm.yml/badge.svg)](https://github.com/computergnome99/minifw/actions/workflows/publish-npm.yml)\n","readmeFilename":"README.md"}