diff --git a/README.md b/README.md
index db3f0fa..2a7569b 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@
- HTTP logging to the console (disable with `NO_HTTP_LOG` env variable)
- Static files served from `pub/`
- Page-based routing to `.tsx` files that export a `JSX` function in `./src/pages`
-- Transpile `.ts` files in `src/js/blah.ts` via `website.com/js/blah.ts`
+- Transpile `.ts` files in `src/client/blah.ts` via `website.com/client/blah.ts`
- Helpers like `css` and `js` template tags.
- Default, simple HTML5 layout with working frontend transpilation/bundling, or supply your own.
- Optional CSS reset.
@@ -36,7 +36,7 @@ Your project structure should be:
├── src
│ ├── css
│ │ └── main.css
-│ ├── js
+│ ├── client
│ │ ├── about.ts
│ │ └── main.ts
│ ├── shared
@@ -45,7 +45,8 @@ Your project structure should be:
│ │ ├── _layout.tsx
│ │ ├── about.tsx
│ │ └── index.tsx
-│ └── server.ts
+│ └── server
+│ └── index.ts
└── tsconfig.json
```
@@ -66,8 +67,8 @@ in which case it'll use the default export in that file.
You can also create hype with `new Hype({ layout: false })` to disable Hype's default.
-Using the default layout, you can put TS in `./src/js/main.ts` and css in `./src/css/main.css`
-and they'll automatically work in your app.
+Using the default layout, you can put TS in `./src/client/main.ts` and css in `./src/css/main.css`.
+They'll automatically work in your app.
Here's a starting point:
@@ -80,7 +81,7 @@ export default ({ children, title }: any) => (
-
+
{children}
@@ -150,10 +151,10 @@ You can also use the css reset in your custom layouts:
### js
-JS can be accessed (and transpiled) via `/js/main.ts` or `/shared/utils.ts`:
+JS can be accessed (and transpiled) via `/client/main.ts` or `/shared/utils.ts`:
```html
-
+
```
import your modules relatively, for example in `main.ts`:
@@ -221,8 +222,8 @@ bun add git+https://git.nose.space/defunkt/hype
```json
"scripts": {
- "start": "bun run src/server.ts",
- "dev": "bun run --hot src/server.ts"
+ "start": "bun run src/server/index.ts",
+ "dev": "bun run --hot src/server/index.ts"
},
```
@@ -252,7 +253,9 @@ bun add git+https://git.nose.space/defunkt/hype
"noPropertyAccessFromIndexSignature": false,
"baseUrl": ".",
"paths": {
- "#*": ["src/*"]
+ "$*": ["src/server/*"],
+ "#*": ["src/client/*"],
+ "@*": ["src/shared/*"]
}
}
}
diff --git a/example/bun.lock b/example/bun.lock
deleted file mode 100644
index 4868c15..0000000
--- a/example/bun.lock
+++ /dev/null
@@ -1,385 +0,0 @@
-{
- "lockfileVersion": 1,
- "configVersion": 1,
- "workspaces": {
- "": {
- "name": "hype-example",
- "dependencies": {
- "hype": "file:..",
- },
- "devDependencies": {
- "@types/bun": "latest",
- },
- "peerDependencies": {
- "typescript": "^5",
- },
- },
- },
- "packages": {
- "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
-
- "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
-
- "@types/bun": ["@types/bun@1.3.4", "", { "dependencies": { "bun-types": "1.3.4" } }, "sha512-EEPTKXHP+zKGPkhRLv+HI0UEX8/o+65hqARxLy8Ov5rIxMBPNTjeZww00CIihrIQGEQBYg+0roO5qOnS/7boGA=="],
-
- "@types/node": ["@types/node@25.0.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg=="],
-
- "Base64": ["Base64@0.1.4", "", {}, "sha512-rHuyFTuK3/IH8tMcDB0BVrfpVM8+YQ7XSsICoYUu+JUUjnbbSyPfHok/NWLFgUbKt8sPeOIEFX6YJJTO2vgt7w=="],
-
- "JSONStream": ["JSONStream@0.6.4", "", { "dependencies": { "jsonparse": "0.0.5", "through": "~2.2.7" } }, "sha512-ER8YVJ+Xk4a1g+d8Xq9RFe2rjsUHV9eSRqfwe9DS5J5ga8bKWx4FwXZNWXpGDYchuOfqf4NFmDlwuloqHIj/5A=="],
-
- "active-x-obfuscator": ["active-x-obfuscator@0.0.1", "", { "dependencies": { "zeparser": "0.0.5" } }, "sha512-8gdEZinfLSCfAUulETDth4ZSIDPSchiPgm5PLrXQC6BANf1YFEDrPPM2MdK2zcekMROwtM667QFuYw/H6ZV06Q=="],
-
- "amdefine": ["amdefine@1.0.1", "", {}, "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg=="],
-
- "astw": ["astw@0.0.0", "", { "dependencies": { "esprima": "1.0.2" } }, "sha512-1U7z5mTBIkFRMXG+ujTN9dPRVIb+LPk18Du32JLP7gdZqtDILyVQvyflb7BNJf4R5GQxNPcJl45A2vs6Ouu+3A=="],
-
- "async": ["async@0.2.10", "", {}, "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="],
-
- "base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="],
-
- "base64id": ["base64id@0.1.0", "", {}, "sha512-DSjtfjhAsHl9J4OJj7e4+toV2zqxJrGwVd3CLlsCp8QmicvOn7irG0Mb8brOc/nur3SdO8lIbNlY1s1ZDJdUKQ=="],
-
- "batch": ["batch@0.5.0", "", {}, "sha512-avtDJBSxllB5QGphW1OXYF+ujhy/yIGgeFsvK6UiZLU86nWlqsNcZotUKd001wrl9MmZ9QIyVy8WFVEEpRIc5A=="],
-
- "bops": ["bops@0.0.6", "", { "dependencies": { "base64-js": "0.0.2", "to-utf8": "0.0.1" } }, "sha512-EWD8/Ei9o/h/wmR3w/YL/8dGKe4rSFHlaO8VNNcuXnjXjeTgxdcmhjPf9hRCYlqTrBPZbKaht+FxZKahcob5UQ=="],
-
- "bower-json": ["bower-json@0.4.0", "", { "dependencies": { "deep-extend": "~0.2.5", "graceful-fs": "~2.0.0", "intersect": "~0.0.3" } }, "sha512-CiCTvl2OndArvZjWYvaOuQWI/fjeaBz8wPLF8MWadHT+ULaBDqtQIOYqQFsxtzUFw6E206960mlZfiUuR1PPBg=="],
-
- "browser-builtins": ["browser-builtins@2.0.4", "", { "dependencies": { "buffer-browserify": "0.2.x", "console-browserify": "~1.0.1", "constants-browserify": "0.0.x", "crypto-browserify": "1.0.x", "http-browserify": "0.1.x", "os-browserify": "0.1.x", "punycode": "1.2.x", "vm-browserify": "0.0.x", "zlib-browserify": "0.0.x" } }, "sha512-73HpOrVuX6ggdYrcN083iB4jKtOQTml/z6joSAahq9ZoLFWHFTvc+h0ALmzFzlerzTTu8/7O98vW/kAUXJYPRA=="],
-
- "browser-pack": ["browser-pack@0.11.1", "", { "dependencies": { "JSONStream": "~0.6.4", "combine-source-map": "~0.2.0", "through": "~2.3.4" }, "bin": { "browser-pack": "bin/cmd.js" } }, "sha512-ctmW7cL7hpykm1ClrOPoSRE6J6kCBJ0gr6BR5AwO7svpkF/VB/263u3/0ONFP4WOZ25sI9anykADfuYOtJQZkA=="],
-
- "browser-resolve": ["browser-resolve@1.1.4", "", { "dependencies": { "resolve": "0.5.1" } }, "sha512-Rg/mZ9Op2d/fASmfJ02htvkyPSeNBEpnJxmyntlu7t+Bub2nC64dOrWb9S0Zzo10p8wQPVAYkAgzCbNQHnqCWw=="],
-
- "browserify": ["browserify@2.33.1", "", { "dependencies": { "JSONStream": "~0.6.4", "browser-builtins": "2.0.4", "browser-pack": "~0.11.0", "browser-resolve": "~1.1.0", "concat-stream": "~1.0.0", "deps-sort": "~0.1.1", "duplexer": "~0.1.1", "inherits": "~1.0.0", "insert-module-globals": "~1.3.0", "module-deps": "~1.0.2", "optimist": "~0.5.1", "parents": "~0.0.1", "shell-quote": "~0.0.1", "stream-combiner": "~0.0.2", "syntax-error": "~0.0.0", "through": "~2.3.4", "umd": "~1.1.0" }, "bin": { "browserify": "bin/cmd.js" } }, "sha512-2p0eC5G2c6wySRcDbBdxtqh9ZLNFsg5f0FoKQc/qjqjK+3QbGPxyx8DX2OCpChFCPTzGxJl8te7mlcyA5HePDw=="],
-
- "bson": ["bson@0.1.9", "", {}, "sha512-HlvXnohuuxlb/AzILVZFgGBO7658NPddPn1Q8PRC6ANHoPZKJotU0WG9+PoMjO7ZFM/e+jKbqOstXJLyIhSOgA=="],
-
- "buffer-browserify": ["buffer-browserify@0.2.5", "", { "dependencies": { "base64-js": "0.0.8" } }, "sha512-3ko6TTBwXb15w2OgZuyAzLJwUFClBMvcKcmhF+iQ79G71K8Fc3RqKzroCN0a0DbZw2GM3q9lNoqfYYCTq6w7QA=="],
-
- "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
-
- "bun-types": ["bun-types@1.3.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-5ua817+BZPZOlNaRgGBpZJOSAQ9RQ17pkwPD0yR7CfJg+r8DgIILByFifDTa+IPDDxzf5VNhtNlcKqFzDgJvlQ=="],
-
- "bytes": ["bytes@0.2.0", "", {}, "sha512-qH6XVfDizpXcxZisRfVo6rtnGQC2EoF88+p29KDyGN/0VQXFJ+ot8pkYiD673sUgeTirO42UVBitFOFzjVOIrQ=="],
-
- "callsite": ["callsite@1.0.0", "", {}, "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ=="],
-
- "camelcase": ["camelcase@1.2.1", "", {}, "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g=="],
-
- "character-parser": ["character-parser@1.2.0", "", {}, "sha512-FtpaoJWMk2JsI8h/Qhc5cLQMMT8cbqxDJ/vP2t5a1TcjnSPHGj0dcovj5H6lR5gzMAgJbe5dlIfbx1rGufvHgw=="],
-
- "cli-color": ["cli-color@0.2.3", "", { "dependencies": { "es5-ext": "~0.9.2", "memoizee": "~0.2.5" } }, "sha512-f4DFHXdoe2rGMwuVO+DTBM6CkSt4m9R4a0vjnq5CJkSCKaXbrHbslCmyjG6cz/o50HP2wkjO3G1mXvc7G3V1LQ=="],
-
- "combine-source-map": ["combine-source-map@0.2.0", "", { "dependencies": { "convert-source-map": "~0.2.3", "inline-source-map": "~0.2.1", "source-map": "~0.1.27" } }, "sha512-Ii9XX407RZRQ9nIoPxDNuJB29n/qDs7RQz+VC42ffwEh8NKNn5ZXtThEw9/IOAWo8VIr0ucmQOyzg7kBn74oPQ=="],
-
- "commander": ["commander@2.0.0", "", {}, "sha512-qebjpyeaA/nJ4w3EO2cV2++/zEkccPnjWogzA2rff+Lk8ILI75vULeTmyd4wPxWdKwtP3J+G39IXVZadh0UHyw=="],
-
- "commondir": ["commondir@0.0.2", "", {}, "sha512-s4oS0jIUZ1t1LJCN7MI2cEDEd25cCSEW0vluKuDEsYcR0KGIiX7HmTtPMbxqGlaqGaihsGlmko1P3vNWzV7cOg=="],
-
- "concat-stream": ["concat-stream@1.0.1", "", { "dependencies": { "bops": "0.0.6" } }, "sha512-nAHFsgeRVVvZ+aB3S1gLeN73fQ+tdOcw075BHbXMbC6MY0h6nqAkEeqPVCw8kRuDJJZDvaUjxI4jZv2FD0Tl8A=="],
-
- "connect": ["connect@2.9.2", "", { "dependencies": { "buffer-crc32": "0.2.1", "bytes": "0.2.0", "cookie": "0.1.0", "cookie-signature": "1.0.1", "debug": "*", "fresh": "0.2.0", "methods": "0.0.1", "multiparty": "2.2.0", "negotiator": "0.2.8", "pause": "0.0.1", "qs": "0.6.5", "raw-body": "0.0.3", "send": "0.1.4", "uid2": "0.0.2" } }, "sha512-MCnBanOraSgqyljgGPIKTskM/TW8G0yTVTBY9+3pKhrbTJh4Od4ZKuzKxzGv5aEGHKjvwKx75Ki+xh9IllXaog=="],
-
- "console-browserify": ["console-browserify@1.0.3", "", {}, "sha512-mIy/TXtcNHCzckiUr4f8m9MSQkG2rjvtI7QAK5vM7VdSlCjZqsoYUkcx9NaLEFuKBYJqd5+hLKj/YCo33heXOQ=="],
-
- "constantinople": ["constantinople@1.0.2", "", { "dependencies": { "uglify-js": "~2.4.0" } }, "sha512-n1hD02YqQHUsLQIJ7oW37kiXf+qFESnoaIUuX9BumnykBDUzB75LBpeQ7fIBHI3+bHvDaFksvISIa9n+UjUyKA=="],
-
- "constants-browserify": ["constants-browserify@0.0.1", "", {}, "sha512-FL+diDS9AKR5BAA2M+GNk8lnH64tRE3zepTG9hucxc7o04LgCRhkQZhF7u/OKHZT8LLRT+sZEi9qFzXUchq9pA=="],
-
- "convert-source-map": ["convert-source-map@0.2.6", "", {}, "sha512-FdRIx8lQ7clo1L19NtZ1ldvK6pxX5+JTuj3uIm1um3NTuXunJWEIf2XjEm1oqsYratjNHlCrzT/TraGwLBZjjA=="],
-
- "cookie": ["cookie@0.1.0", "", {}, "sha512-YSNOBX085/nzHvrTLEHYHoNdkvpLU1MPjU3r1IGawudZJjfuqnRNIFrcOJJ7bfwC+HWbHL1Y4yMkC0O+HWjV7w=="],
-
- "cookie-signature": ["cookie-signature@1.0.1", "", {}, "sha512-FMG5ziBzXZ5d4j5obbWOH1X7AtIpsU9ce9mQ+lHo/I1++kzz/isNarOj6T1lBPRspP3mZpuIutc7OVDVcaN1Kg=="],
-
- "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="],
-
- "crypto-browserify": ["crypto-browserify@1.0.9", "", {}, "sha512-fWmkaZPmccreTmANMdpvI0UrF34pzTAZDLKDcF0n5ThwpyeAs+DtSVxyhrZc6kHFiOFdyzjW5uZ8jAWE3kNY6A=="],
-
- "css": ["css@1.0.8", "", { "dependencies": { "css-parse": "1.0.4", "css-stringify": "1.0.5" } }, "sha512-qmTYWhHk910nQWnGqMAiWWPQlB6tESiWgNebQJmiozOAGcBAQ1+U/UzUOkhdrcshlkSRRiKWodwmVvO0OmnIGg=="],
-
- "css-parse": ["css-parse@1.0.4", "", {}, "sha512-pfstzKVRZiHprDXdsmtfH1HYUEw22lzjuHdnpe1hscwoQvgW2C5zDQIBE0RKoALEReTn9W1ECdY8uaT/kO4VfA=="],
-
- "css-stringify": ["css-stringify@1.0.5", "", {}, "sha512-aIThpcErhG5EyHorGqNlTh0TduNBqLrrXLO3x5rku3ZKBxuVfY+T7noyM2G2X/01iQANqJUb6d3+FLoa+N7Xwg=="],
-
- "debug": ["debug@0.8.1", "", {}, "sha512-HlXEJm99YsRjLJ8xmuz0Lq8YUwrv7hAJkTEr6/Em3sUlSUNl0UdFA+1SrY4fnykeq1FVkUEUtwRGHs9VvlYbGA=="],
-
- "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="],
-
- "deep-equal": ["deep-equal@0.0.0", "", {}, "sha512-p1bI/kkDPT6auUI0U+WLuIIrzmDIDo80I406J8tT4y6I4ZGtBuMeTudrKDtBdMJFAcxqrQdx27gosqPVyY3IvQ=="],
-
- "deep-extend": ["deep-extend@0.2.11", "", {}, "sha512-t2N+4ihO7YgydJOUI47I6GdXpONJ+jUZmYeTNiifALaEduiCja1mKcq3tuSp0RhA9mMfxdMN3YskpwB7puMAtw=="],
-
- "defined": ["defined@0.0.0", "", {}, "sha512-zpqiCT8bODLu3QSmLLic8xJnYWBFjOSu/fBCm189oAiTtPq/PSanNACKZDS7kgSyCJY7P+IcODzlIogBK/9RBg=="],
-
- "deps-sort": ["deps-sort@0.1.2", "", { "dependencies": { "JSONStream": "~0.6.4", "minimist": "~0.0.1", "through": "~2.3.4" }, "bin": { "deps-sort": "bin/cmd.js" } }, "sha512-bF5sJp2YeGQAx+vI3KBQwn6wHHyuCcsrPS0qvqnNLgGF1NrjhdvopP3exfdLLKaFtS6V5K/CMjQLtzR7C3Wa6A=="],
-
- "detective": ["detective@2.1.2", "", { "dependencies": { "escodegen": "0.0.15", "esprima": "1.0.2" } }, "sha512-hedmjOYPLbb9/WS8D8v1yRCMGnAvGBu8gQwyzODnpQ0PjvLybHpq4iiz3BQQ8UjvodC3r1qryOuo32PZgoSS8A=="],
-
- "duplexer": ["duplexer@0.1.2", "", {}, "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="],
-
- "es5-ext": ["es5-ext@0.9.2", "", {}, "sha512-wP3OSxZ0L/qK76t6qxPR8gWr2o5F4SzNF9qS5F/mOfVY3Ezcg07v6hSkETDmoekXIzn8xhQbHpp+tVlOE+qOAg=="],
-
- "escodegen": ["escodegen@0.0.15", "", { "dependencies": { "esprima": ">= 1.0.0" }, "optionalDependencies": { "source-map": ">= 0.1.2" }, "bin": { "esgenerate": "./bin/esgenerate.js", "escodegen": "./bin/escodegen.js" } }, "sha512-ALdTVKqhEj6bDf4pC0fXWRiUvhyJSJ0Ic8AdPuMGKckoa3gMXG+MPduI8TlDoSS84swDkfXeogXapbkErAHvDA=="],
-
- "esprima": ["esprima@0.9.9", "", { "bin": { "esparse": "./bin/esparse.js" } }, "sha512-uTFHqyoMus4csxVp8FSqPajg59VwNt0PshVERqiIjPed6L9IG0pYz/zbhZ2HFFvn8AKzduipZP6mFxr3dr18ag=="],
-
- "event-emitter": ["event-emitter@0.2.2", "", { "dependencies": { "es5-ext": "~0.9.2" } }, "sha512-kdjfxF6jYJ5m/OEe3ZNNJzbCEcagF4lNJeuhgrBSRnlitpdxICDKzCel+Z5Wbl7K9UhBN/7k2MzXBvCvSwfzzg=="],
-
- "express": ["express@3.4.8", "", { "dependencies": { "buffer-crc32": "0.2.1", "commander": "1.3.2", "connect": "2.12.0", "cookie": "0.1.0", "cookie-signature": "1.0.1", "debug": ">= 0.7.3 < 1", "fresh": "0.2.0", "merge-descriptors": "0.0.1", "methods": "0.1.0", "mkdirp": "0.3.5", "range-parser": "0.0.4", "send": "0.1.4" }, "bin": { "express": "./bin/express" } }, "sha512-NC6Ff/tlg4JNjGTrw0is0aOe9k7iAnb3Ra6mF3Be15UscxZKpbP7XCMmXx9EiNpHe9IClbHo6EDslH9eJNo1HQ=="],
-
- "express-validator": ["express-validator@0.8.0", "", { "dependencies": { "validator": "1.5.0" } }, "sha512-y+QjOeuEZn9o15XyS8g27oXhPZChT+dV19ILoB78bSmQzIVgTBa+FvQydHteDGso0K0WGll6inFGLuLEqPAYDw=="],
-
- "fresh": ["fresh@0.2.0", "", {}, "sha512-ckGdAuSRr1wBmnq7CsW7eU37DBwQxHx3vW8foJUIrF56rkOy8Osm6Fe8KSwemwyKejivKki7jVBgpBpBJexmrw=="],
-
- "graceful-fs": ["graceful-fs@2.0.3", "", {}, "sha512-hcj/NTUWv+C3MbqrVb9F+aH6lvTwEHJdx2foBxlrVq5h6zE8Bfu4pv4CAAqbDcZrw/9Ak5lsRXlY9Ao8/F0Tuw=="],
-
- "hono": ["hono@4.10.8", "", {}, "sha512-DDT0A0r6wzhe8zCGoYOmMeuGu3dyTAE40HHjwUsWFTEy5WxK1x2WDSsBPlEXgPbRIFY6miDualuUDbasPogIww=="],
-
- "html-formatter": ["html-formatter@0.1.9", "", {}, "sha512-ao56oQHElDyKjnRara+Tw9iT6Ieuu6MRiBvCOCn2yhKtdT2Z9ViAyBal2j83bAf8sc6qAzGU0gkNVlFzkVAFHQ=="],
-
- "http-browserify": ["http-browserify@0.1.14", "", { "dependencies": { "Base64": "~0.1.2", "concat-stream": "~1.0.0" } }, "sha512-q9Gd3S/dVbLBhRsEQh3R7/Y1aHUvdqdfgHWt/QQRwInX5Cji6bCQhD5yXbcV2c03bApRdYpTDQ0XZSIR2o7nWg=="],
-
- "hype": ["hype@file:..", { "dependencies": { "hono": "^4.10.4", "html-formatter": "^0.1.9", "hype": "^0.0.3", "kleur": "^4.1.5" }, "devDependencies": { "@types/bun": "latest" }, "peerDependencies": { "typescript": "^5" } }],
-
- "indexof": ["indexof@0.0.1", "", {}, "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="],
-
- "inherits": ["inherits@1.0.2", "", {}, "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA=="],
-
- "inline-source-map": ["inline-source-map@0.2.5", "", { "dependencies": { "source-map": "~0.1.25" } }, "sha512-t4ZmlgEk83uozBYdjfoqG/IWMI/PzjdaLonqhCSYVBoFrgPU6CuBl8w5x7n/YUkjhdSftwB+41vydc8T8Qocwg=="],
-
- "insert-module-globals": ["insert-module-globals@1.3.1", "", { "dependencies": { "JSONStream": "~0.4.3", "commondir": "~0.0.1", "duplexer": "~0.0.3", "lexical-scope": "~0.0.5", "process": "~0.5.1", "through": "~2.2.0" }, "bin": { "insert-module-globals": "bin/cmd.js" } }, "sha512-ZqHb9aHVV7KG+xMOKeBcQ/AOQKtMFVOUOZXNJG7ZXtglblbH0Q5b7o+dsVMNgifTuf+H5noiUVFsSM1v+Pw//g=="],
-
- "intersect": ["intersect@0.0.3", "", {}, "sha512-Bp/mSG9dsq/eOMk2Q7DyjKxY62TTU2RvNvycjXHhi5TjrA72H+I3c5+1nAOAqtENcrQvCb5NDlsoPWJ4Bh01SA=="],
-
- "is-promise": ["is-promise@1.0.1", "", {}, "sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg=="],
-
- "isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="],
-
- "jade": ["jade@0.35.0", "", { "dependencies": { "character-parser": "1.2.0", "commander": "2.0.0", "constantinople": "~1.0.1", "mkdirp": "0.3.x", "monocle": "1.1.50", "transformers": "2.1.0", "with": "~1.1.0" }, "bin": { "jade": "./bin/jade" } }, "sha512-mwAxPpWT/VIOSAnB8If8/gAtQyhqlGHflkZ7Pdfua+9mrA4YkIBBiiV7LcaN5amXN3e6XwgTVu9Uk4BduHSx0w=="],
-
- "jsonify": ["jsonify@0.0.1", "", {}, "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg=="],
-
- "jsonparse": ["jsonparse@0.0.5", "", {}, "sha512-fw7Q/8gFR8iSekUi9I+HqWIap6mywuoe7hQIg3buTVjuZgALKj4HAmm0X6f+TaL4c9NJbvyFQdaI2ppr5p6dnQ=="],
-
- "kerberos": ["kerberos@0.0.3", "", {}, "sha512-F9z+7FT9Fa68tesrXMreEneHWgLvmQhvjfxsXYvlnByuTGJKNy70c8yGjmsk3TJA/glNKQ3zoqTlwfmaI4eQIA=="],
-
- "keypress": ["keypress@0.1.0", "", {}, "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA=="],
-
- "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
-
- "lexical-scope": ["lexical-scope@0.0.15", "", { "dependencies": { "astw": "~0.0.0" } }, "sha512-w2GlDzW3WYJcytiVfNeFKYQ4CUZJDBP8vtxkqD3jCjgqei4IbvMJu8EMhNXHbH//yW2hTVz04/Zbhi7eNeGEaw=="],
-
- "memoizee": ["memoizee@0.2.6", "", { "dependencies": { "es5-ext": "~0.9.2", "event-emitter": "~0.2.2", "next-tick": "0.1.x" } }, "sha512-0VZI0btwyGk6FSDnJGuJtso4M/eSxhVb5ID5AZNWMFFgT2LexCV18hHI764V4ELKlyfnQ5KMQ+q5H3uvFN3MLw=="],
-
- "merge-descriptors": ["merge-descriptors@0.0.1", "", {}, "sha512-1VjrOxz6kouIMS/jZ+oQTAUsXufrF8hVzkfzSxqBh0Wy/KzEqZSvy3OZe/Ntrd5QeHtNCUF1bE0bIRLslzHCcw=="],
-
- "methods": ["methods@0.0.1", "", {}, "sha512-pB8oFfci/xcfUgM6DTxc7lbTKifPPgs3mZUOsEgaH+1TTWpmcmv3sHl+5sUHIj2X2W8aPYa2+nJealRHK+Lo6A=="],
-
- "mime": ["mime@1.2.11", "", {}, "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw=="],
-
- "minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
-
- "minimist": ["minimist@0.0.10", "", {}, "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw=="],
-
- "mkdirp": ["mkdirp@0.3.5", "", {}, "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg=="],
-
- "module-deps": ["module-deps@1.0.2", "", { "dependencies": { "JSONStream": "~0.6.4", "browser-resolve": "~1.1.0", "concat-stream": "~1.0.0", "detective": "~2.1.2", "minimist": "~0.0.1", "resolve": "~0.4.0", "through": "~2.3.4" }, "bin": { "module-deps": "cmd.js" } }, "sha512-ArcVFLj57xBmTDjBNRacFDAhF9YRwtnBpUv62MiBkab3/G4QCJblrguvcZayYztn+vaIVx5/qtYmdeb8qrKhew=="],
-
- "mongodb": ["mongodb@1.3.19", "", { "dependencies": { "bson": "0.2.2" }, "optionalDependencies": { "kerberos": "0.0.3" } }, "sha512-cLi2iAHji37fcCYhp8/LZcbokn95X267gWcHv4GBt5s/XSFP0jIM1ZMoaz+S5jkFOAhggQlV/BHIIovH11Wt1Q=="],
-
- "mongoskin": ["mongoskin@0.6.1", "", { "dependencies": { "mongodb": "1.3.19" } }, "sha512-evfMIiMav8MD/VBxI/i7QL8y90e9t3m6mvh4DNOQ7UniWy9Ha3WGRCSgKV7CgIMfTKg7c9fT5f6IpxMxcOWHuw=="],
-
- "monocle": ["monocle@1.1.50", "", { "dependencies": { "readdirp": "~0.2.3" } }, "sha512-vwHHIM9xp6ARQ82nvZSLMlVUI42BHJIxc4DYGEiKo192fryV1Dr7aWmVwPhDNlbawrmrT/GrGUYMYO50AyRMcw=="],
-
- "multiparty": ["multiparty@2.2.0", "", { "dependencies": { "readable-stream": "~1.1.9", "stream-counter": "~0.2.0" } }, "sha512-fiFMI4tSze1TsrWFZNABRwy7kF/VycEWz4t0UFESOoP5IdJh29AUFmbirWXv/Ih/rNw62OO2YaQpQEiw1BFQpQ=="],
-
- "nan": ["nan@1.0.0", "", {}, "sha512-Wm2/nFOm2y9HtJfgOLnctGbfvF23FcQZeyUZqDD8JQG3zO5kXh3MkQKiUaA68mJiVWrOzLFkAV1u6bC8P52DJA=="],
-
- "negotiator": ["negotiator@0.2.8", "", {}, "sha512-2iv1EafEsegrlyCHYPn4bMKM0g5wVTNqkdp8AqOggvSLV5znbQfTASWh4eKBqwEcw1awuY8l3U7wX95JSQWFEg=="],
-
- "next-tick": ["next-tick@0.1.0", "", {}, "sha512-I44QWeGCHJTx2D3buhnljvSjmPgJua3zdPGtlCQEvA45t9kS/CaHnlVqidTzHwq8LGXhD2SMezjk4hQgP+32Lg=="],
-
- "node-minify": ["node-minify@0.8.2", "", { "dependencies": { "sqwish": "*", "uglify-js": "*" } }, "sha512-b10/Pxpw9V4Zn9btrF/Fn5cKJ18HZScb18pJ/TERydEBRePRFXwH0fEGLI1+b8j0FcPqH2wTSvYpIjDHZtWb2w=="],
-
- "objectid": ["objectid@3.1.0", "", { "dependencies": { "bson": "~0.1.8", "mongodb": "~1.3.3", "to-string": "~0.2.0" } }, "sha512-+P91tEz+QSaD9hoxZF3lIjIB8tazX0m5+jvrvivwogMLwZcWNZabZHQThM5rSvSdUZYFvieFS6PX0aV6+ayDCQ=="],
-
- "optimist": ["optimist@0.5.2", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-r9M8ZpnM9SXV5Wii7TCqienfcaY3tAiJe9Jchof87icbmbruKgK0xKXngmrnowTDnEawmmI1Qbha59JEoBkBGA=="],
-
- "options": ["options@0.0.6", "", {}, "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg=="],
-
- "os-browserify": ["os-browserify@0.1.2", "", {}, "sha512-aZicJZccvxWOZ0Bja2eAch2L8RIJWBuRYmM8Gwl/JjNtRltH0Itcz4eH/ESyuIWfse8cc93ZCf0XrzhXK2HEDA=="],
-
- "parents": ["parents@0.0.3", "", { "dependencies": { "path-platform": "^0.0.1" } }, "sha512-ASkdjFPS2nrxujzSBZGt8ZCKeG0/K2ZZVKveqXt7XGtXfu+ssnk4DQhnK91KRvt83f36LjfxOfwi0cv1+Re0eA=="],
-
- "path-platform": ["path-platform@0.0.1", "", {}, "sha512-ydK1VKZFYwy0mT2JvimJfxt5z6Z6sjBbLfsFMoJczbwZ/ul0AjgpXLHinUzclf4/XYC8mtsWGuFERZ95Rnm8wA=="],
-
- "pause": ["pause@0.0.1", "", {}, "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="],
-
- "policyfile": ["policyfile@0.0.4", "", {}, "sha512-UfDtlscNialXfmVEwEPm0t/5qtM0xPK025eYWd/ilv89hxLIhVQmt3QIzMHincLO2MBtZyww0386pt13J4aIhQ=="],
-
- "process": ["process@0.5.2", "", {}, "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA=="],
-
- "promise": ["promise@2.0.0", "", { "dependencies": { "is-promise": "~1" } }, "sha512-OgMc+sxI3zWF8D5BJGtA0z7/IsrDy1/0cPaDv6HPpqa2fSTo7AdON5U10NbZCUeF+zCAj3PtfPE50Hf02386aA=="],
-
- "punycode": ["punycode@1.2.4", "", {}, "sha512-h/vscxLPvI2l7k/0dFUKZ5I5TgMCJ/Pl+J6rw77PDuQM6UApf/GaRVkjv/YSm2k+fbp7Yw8dxsoe29DolT7h7w=="],
-
- "qs": ["qs@0.6.5", "", {}, "sha512-n7wA/f30O3SsOw2BVkGUDzjWMw7kXvQJWKtDdgfq5HJvDoad+Jbc6osN1AQ0Iain5plo9e7Cs5fE+xR+DVkPTw=="],
-
- "range-parser": ["range-parser@0.0.4", "", {}, "sha512-okJVEq9DbZyg+5lD8pr6ooQmeA0uu8DYIyAU7VK1WUUK7hctI1yw2ZHhKiKjB6RXaDrYRmTR4SsIHkyiQpaLMA=="],
-
- "raw-body": ["raw-body@0.0.3", "", {}, "sha512-WjGZWnZVDVr4VX27TAaX7wTnHht4lqz2nX0xRjQFUVxooxYXPY2F7DV6bvlVJ+HSnn9BAhk5qteKL8Y/XnWKqw=="],
-
- "readable-stream": ["readable-stream@1.1.14", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ=="],
-
- "readdirp": ["readdirp@0.2.5", "", { "dependencies": { "minimatch": ">=0.2.4" } }, "sha512-j3/RLxRiCZSei/4UaYaOAqHa+rQ8ZL9vpolGO9E7mLXiVTb7Fu99eTG74ZmaB/4gCGgy7Veq+U6vw8y7sKJiTw=="],
-
- "redis": ["redis@0.7.3", "", {}, "sha512-0Pgb0jOLfn6eREtEIRn/ifyZJjl2H+wUY4F/Pe7T4UhmoSrZ/1HU5ZqiBpDk8I8Wbyv2N5DpXKzbEtMj3drprg=="],
-
- "resolve": ["resolve@0.5.1", "", {}, "sha512-PgoPtxVz3j45jqtNbMbxcBG+5FhjLLa425zzNBf50//c4XJDx/FC0fbAWJiVPsXOV/MLhbQslSYuEv6RFf7p3A=="],
-
- "rfile": ["rfile@1.0.0", "", { "dependencies": { "callsite": "~1.0.0", "resolve": "~0.3.0" } }, "sha512-aNeTpY8g6DYmqPvakau22B0SipQTskO8FtYXzn8qg4X4bN9ExIH8VAhq/L9w7N8HvESYeSSwk3e4GmW+rLLAxQ=="],
-
- "ruglify": ["ruglify@1.0.0", "", { "dependencies": { "rfile": "~1.0", "uglify-js": "~2.2" } }, "sha512-XfRj1YJdm/gnZNvmpQ5L+2YGRHglDGMPgJRbitgCxC3GzKVQF/t+ij1aNcNg2AnEXGtLHJDwoSWrAq3TUm0EVg=="],
-
- "send": ["send@0.1.4", "", { "dependencies": { "debug": "*", "fresh": "0.2.0", "mime": "~1.2.9", "range-parser": "0.0.4" } }, "sha512-NJnIaB29/EcNqkNneUAm16oEVnzM2LeNBc/hmgKuExv2k9pCZQEw8SHJeCdjqesHJTyWAr7x5HjeOmRFS4BoFw=="],
-
- "settings": ["settings@0.1.1", "", {}, "sha512-5/RjHd66x8wrVDWfNHX2orFMQ2Aaay/iIXwZix41GRzWwyN9lxKhlGdU3AWCHb3b0m9hBB/RUKpFCV7GlSFCyA=="],
-
- "shell-quote": ["shell-quote@0.0.1", "", {}, "sha512-uEWz7wa9vnCi9w4mvKZMgbHFk3DCKjLQlZcy0tJxUH4NwZjRrPPHXAYIEt2TmJs600Dcgj0Z3fZLZKVPVdGNbQ=="],
-
- "socket.io": ["socket.io@0.9.19", "", { "dependencies": { "base64id": "0.1.0", "policyfile": "0.0.4", "socket.io-client": "0.9.16" }, "optionalDependencies": { "redis": "0.7.3" } }, "sha512-UPdVIGPBPmCibzIP2rAjXuiPTI2gPs6kiu4P7njH6WAK7wiOlozNG62ohohCNOycx+Dztd4vRNXxq8alIOEtfA=="],
-
- "socket.io-client": ["socket.io-client@0.9.16", "", { "dependencies": { "active-x-obfuscator": "0.0.1", "uglify-js": "1.2.5", "ws": "0.4.x", "xmlhttprequest": "1.4.2" } }, "sha512-wSM7PKJkzpGqUAo6d6SAn+ph4xeQJ6nzyDULRJAX1G7e6Xm0wNuMh2RpNvwXrHMzoV9Or5hti7LINiQAm1H2yA=="],
-
- "source-map": ["source-map@0.1.34", "", { "dependencies": { "amdefine": ">=0.0.4" } }, "sha512-yfCwDj0vR9RTwt3pEzglgb3ZgmcXHt6DjG3bjJvzPwTL+5zDQ2MhmSzAcTy0GTiQuCiriSWXvWM1/NhKdXuoQA=="],
-
- "sqwish": ["sqwish@0.2.2", "", { "bin": { "sqwish": "bin/sqwish" } }, "sha512-MyaCOSCiThzFPcXHebkWiiXDDlEzbHtbdJBqos4CkUwiKdCgQU0IOzBJwswhBv2Qg3glj5TxzDxvKobuyB4e8w=="],
-
- "stream-combiner": ["stream-combiner@0.0.4", "", { "dependencies": { "duplexer": "~0.1.1" } }, "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw=="],
-
- "stream-counter": ["stream-counter@0.2.0", "", { "dependencies": { "readable-stream": "~1.1.8" } }, "sha512-GjA2zKc2iXUUKRcOxXQmhEx0Ev3XHJ6c8yWGqhQjWwhGrqNwSsvq9YlRLgoGtZ5Kx2Ln94IedaqJ5GUG6aBbxA=="],
-
- "string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="],
-
- "syntax-error": ["syntax-error@0.0.1", "", { "dependencies": { "esprima": "~0.9.9" } }, "sha512-Pg2FzUaDR1Zlkl5ol+6LGAES7PjqcvfUpa2OKZZhww4VrRyjZyU2v+4C0dcYfhwNl2FMaZW9mXHzX0kS9x3xXw=="],
-
- "tape": ["tape@0.2.2", "", { "dependencies": { "deep-equal": "~0.0.0", "defined": "~0.0.0", "jsonify": "~0.0.0" } }, "sha512-bfyf/0yv2FZVsf80b7oo50Lyi35sfjE7VM6206du7LtpbdQP8rbLhZy/stuS/Dcq4w6jE1Pz2zFrHtfeOKbaUA=="],
-
- "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="],
-
- "tinycolor": ["tinycolor@0.0.1", "", {}, "sha512-+CorETse1kl98xg0WAzii8DTT4ABF4R3nquhrkIbVGcw1T8JYs5Gfx9xEfGINPUZGDj9C4BmOtuKeaTtuuRolg=="],
-
- "to-string": ["to-string@0.2.0", "", {}, "sha512-L0Xkt289plmcyqKldDjckQRjwaflaUraVc+Dp91n3o5HsgWjvIABmwFUVDYufwY8/P9vXTsAh1IFBssJL018rQ=="],
-
- "to-utf8": ["to-utf8@0.0.1", "", {}, "sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ=="],
-
- "transformers": ["transformers@2.1.0", "", { "dependencies": { "css": "~1.0.8", "promise": "~2.0", "uglify-js": "~2.2.5" } }, "sha512-zJf5m2EIOngmBbDe2fhTPpCjzM2qkZVqrFJZc2jaln+KBeEaYKhS2QMOIkfVrNUyoOwqgbTwOHATzr3jZRQDyg=="],
-
- "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
-
- "uglify-js": ["uglify-js@2.4.24", "", { "dependencies": { "async": "~0.2.6", "source-map": "0.1.34", "uglify-to-browserify": "~1.0.0", "yargs": "~3.5.4" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-tktIjwackfZLd893KGJmXc1hrRHH1vH9Po3xFh1XBjjeGAnN02xJ3SuoA+n1L29/ZaCA18KzCFlckS+vfPugiA=="],
-
- "uglify-to-browserify": ["uglify-to-browserify@1.0.2", "", {}, "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q=="],
-
- "uid2": ["uid2@0.0.2", "", {}, "sha512-FjCp6IusuzzbZG8y0MDDsXcPwYuDAD6jK/0uzxwTFZy2/WaJEFCpQevYE9DPJsJQLMZSxX5x4HY3W7uTKhhI6Q=="],
-
- "umd": ["umd@1.1.1", "", { "dependencies": { "rfile": "~1.0.0", "ruglify": "~1.0.0", "through": "~2.3.1", "uglify-js": "~2.2.5" } }, "sha512-enmeQO53e7Ra7A6xT7poPdqapuy5RJo+w+fFl50rpj0NsQ3TrCT6tENe6OljDXQ0MAAC70raDWewA0mEeMMH0w=="],
-
- "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
-
- "validator": ["validator@1.5.0", "", {}, "sha512-OnhDLyUb//Wq5AzMxWn7Z166pwzfrStGkhsWuJFEUJsJ4gVuBXwLysMji5kIy+P8b1ATJmTo4TQjPQ7BAwk6AA=="],
-
- "vm-browserify": ["vm-browserify@0.0.4", "", { "dependencies": { "indexof": "0.0.1" } }, "sha512-NyZNR3WDah+NPkjh/YmhuWSsT4a0mF0BJYgUmvrJ70zxjTXh5Y2Asobxlh0Nfs0PCFB5FVpRJft7NozAWFMwLQ=="],
-
- "watch": ["watch@0.8.0", "", {}, "sha512-iSHijIgOHV31dRweeUDtCUfRyP8O0VzqTpFyv13OC4gyXY1bKc0k2yjY5r5JFJSFhy+Q8sZTudC/6cGlsILC/g=="],
-
- "window-size": ["window-size@0.1.0", "", {}, "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg=="],
-
- "with": ["with@1.1.1", "", { "dependencies": { "uglify-js": "2.4.0" } }, "sha512-9dbBdLftQiwtJPuM+eHzFOPdPW61qB6Bgo+KpSZtwf6WAuRU7R7kIhvw0JOUEHeeXbHVMwLUF0mSzWXj/HVW6w=="],
-
- "wordwrap": ["wordwrap@0.0.2", "", {}, "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q=="],
-
- "ws": ["ws@0.4.32", "", { "dependencies": { "commander": "~2.1.0", "nan": "~1.0.0", "options": ">=0.0.5", "tinycolor": "0.x" }, "bin": { "wscat": "./bin/wscat" } }, "sha512-htqsS0U9Z9lb3ITjidQkRvkLdVhQePrMeu475yEfOWkAYvJ6dSjQp1tOH6ugaddzX5b7sQjMPNtY71eTzrV/kA=="],
-
- "xmlhttprequest": ["xmlhttprequest@1.4.2", "", {}, "sha512-WTsthd44hTdCRrHkdtTgbgTKIJyNDV+xiShdooFZBUstY7xk+EXMx/u5gjuUXaCiCWvtBVCHwauzml2joevB4w=="],
-
- "yargs": ["yargs@3.5.4", "", { "dependencies": { "camelcase": "^1.0.2", "decamelize": "^1.0.0", "window-size": "0.1.0", "wordwrap": "0.0.2" } }, "sha512-5j382E4xQSs71p/xZQsU1PtRA2HXPAjX0E0DkoGLxwNASMOKX6A9doV1NrZmj85u2Pjquz402qonBzz/yLPbPA=="],
-
- "zeparser": ["zeparser@0.0.5", "", {}, "sha512-Qj4lJIRPy7hIW1zCBqwA3AW8F9uHswVoXPnotuY6uyNgbg5qGb6SJfWZi+YzD3DktbUnUoGiGZFhopbn9l1GYw=="],
-
- "zlib-browserify": ["zlib-browserify@0.0.3", "", { "dependencies": { "tape": "~0.2.2" } }, "sha512-KW42YGoQKq7+oU46deeWMUsrPyBruEWV1DoObBTMfEC2LnTqQIrwKVKrPoz2mn5DXESW4Ca/lIP2MqGHrt/WFA=="],
-
- "JSONStream/through": ["through@2.2.7", "", {}, "sha512-JIR0m0ybkmTcR8URann+HbwKmodP+OE8UCbsifQDYMLD5J3em1Cdn3MYPpbEd5elGDwmP98T+WbqP/tvzA5Mjg=="],
-
- "astw/esprima": ["esprima@1.0.2", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-j2ZAN1Cm/rgsIEHgNa6eqvZjEtqFh8WEUdVswEpxj03AyzR1R6CHfunOpd9NOmLg0U18aAO2FunAjs49f5w0Yg=="],
-
- "bops/base64-js": ["base64-js@0.0.2", "", {}, "sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ=="],
-
- "connect/buffer-crc32": ["buffer-crc32@0.2.1", "", {}, "sha512-vMfBIRp/wjlpueSz7Sb0OmO7C5SH58SSmbsT8G4D48YfO/Zgbr29xNXMpZVSC14ujVJfrZZH1Bl+kXYRQPuvfQ=="],
-
- "detective/esprima": ["esprima@1.0.2", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-j2ZAN1Cm/rgsIEHgNa6eqvZjEtqFh8WEUdVswEpxj03AyzR1R6CHfunOpd9NOmLg0U18aAO2FunAjs49f5w0Yg=="],
-
- "escodegen/esprima": ["esprima@1.0.2", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-j2ZAN1Cm/rgsIEHgNa6eqvZjEtqFh8WEUdVswEpxj03AyzR1R6CHfunOpd9NOmLg0U18aAO2FunAjs49f5w0Yg=="],
-
- "express/buffer-crc32": ["buffer-crc32@0.2.1", "", {}, "sha512-vMfBIRp/wjlpueSz7Sb0OmO7C5SH58SSmbsT8G4D48YfO/Zgbr29xNXMpZVSC14ujVJfrZZH1Bl+kXYRQPuvfQ=="],
-
- "express/commander": ["commander@1.3.2", "", { "dependencies": { "keypress": "0.1.x" } }, "sha512-uoVVA5dchmxZeTMv2Qsd0vhn/RebJYsWo4all1qtrUL3BBhQFn4AQDF4PL+ZvOeK7gczXKEZaSCyMDMwFBlpBg=="],
-
- "express/connect": ["connect@2.12.0", "", { "dependencies": { "batch": "0.5.0", "buffer-crc32": "0.2.1", "bytes": "0.2.1", "cookie": "0.1.0", "cookie-signature": "1.0.1", "debug": ">= 0.7.3 < 1", "fresh": "0.2.0", "methods": "0.1.0", "multiparty": "2.2.0", "negotiator": "0.3.0", "pause": "0.0.1", "qs": "0.6.6", "raw-body": "1.1.2", "send": "0.1.4", "uid2": "0.0.3" } }, "sha512-i3poGdQamCEvDhvaFuG99KUDCU1Cvv7S2T6YfpY4X2+a0+uDrUcpRk08AQEge3NhtidVKfODQfpoMW4xlbQ0LQ=="],
-
- "express/methods": ["methods@0.1.0", "", {}, "sha512-N4cn4CbDqu7Fp3AT4z3AsO19calgczhsmCGzXLCiUOrWg9sjb1B+yKFKOrnnPGKKvjyJBmw+k6b3adFN2LbuBw=="],
-
- "hype/hype": ["hype@0.0.3", "", { "dependencies": { "bower-json": "~0.4.0", "browserify": "~2.33.1", "buffer-crc32": "~0.2.1", "cli-color": "~0.2.3", "commander": "~2.0.0", "connect": "~2.9.0", "express": "~3.4.0", "express-validator": "~0.8.0", "jade": "~0.35.0", "mongoskin": "~0.6.0", "node-minify": "~0.8.1", "objectid": "~3.1.0", "redis": "~0.7.3", "settings": "~0.1.1", "socket.io": "~0.9.16", "uglify-js": "~2.4.0", "watch": "~0.8.0" }, "bin": { "hype": "./bin/hype" } }, "sha512-mR3njXmnAraiE832Y/eLE+O2DWoIbzVG7NwJlyeOnrSFNNhq+5oPeD1h5NKtS8Xq9/eJgQoGpLDuhoFc2wA2rw=="],
-
- "insert-module-globals/JSONStream": ["JSONStream@0.4.4", "", { "dependencies": { "jsonparse": "0.0.5" } }, "sha512-0PZdD2nQCa76Q+So8SX6au7v19Bp4veBTqD91kqfJiYPhG0uwumVmz0PBcwFfXDeVlN7JjlgHbAZejUvfUBzBQ=="],
-
- "insert-module-globals/duplexer": ["duplexer@0.0.4", "", {}, "sha512-nO0WWuIDTde3CWK/8IPpG50dyhUilgpsqzYSIP+w20Yh+4iDgb/2Gs75QItcp0Hmx/JtxtTXBalj+LSTD1VemA=="],
-
- "insert-module-globals/through": ["through@2.2.7", "", {}, "sha512-JIR0m0ybkmTcR8URann+HbwKmodP+OE8UCbsifQDYMLD5J3em1Cdn3MYPpbEd5elGDwmP98T+WbqP/tvzA5Mjg=="],
-
- "module-deps/resolve": ["resolve@0.4.3", "", {}, "sha512-VRdITglwtstb0Hqag3iAVSYWgS/HfeuQIfUcq5Iv9Dmt+kzevtN7i5IZTJrZA+KcDHq8lSVOH8UewJxD9EMa7Q=="],
-
- "mongodb/bson": ["bson@0.2.2", "", {}, "sha512-lL3VqRQ3bNAHRTFvY+r3SRnbicZgmXq+YNEYTLEwx4OmObCc0bx/SkjAS8ZsdxZUVb238F3bTdFYJ6WVdeWVFg=="],
-
- "objectid/mongodb": ["mongodb@1.3.23", "", { "dependencies": { "bson": "0.2.5" }, "optionalDependencies": { "kerberos": "0.0.3" } }, "sha512-z+gksaRRYuA+MTukjAvUlpX2KssTZ2Y7J58stYUnelQkV2DDHSKlrJQt2f2HwME6AUupnkAYiLtuqZPDM7ipOg=="],
-
- "readable-stream/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
-
- "rfile/resolve": ["resolve@0.3.1", "", {}, "sha512-mxx/I/wLjxtryDBtrrb0ZNzaYERVWaHpJ0W0Arm8N4l8b+jiX/U5yKcsj0zQpF9UuKN1uz80EUTOudON6OPuaQ=="],
-
- "ruglify/uglify-js": ["uglify-js@2.2.5", "", { "dependencies": { "optimist": "~0.3.5", "source-map": "~0.1.7" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-viLk+/8G0zm2aKt1JJAVcz5J/5ytdiNaIsKgrre3yvSUjwVG6ZUujGH7E2TiPigZUwLYCe7eaIUEP2Zka2VJPA=="],
-
- "socket.io-client/uglify-js": ["uglify-js@1.2.5", "", { "bin": { "uglifyjs": "./bin/uglifyjs" } }, "sha512-Ps1oQryKOcRDYuAN1tGpPWd/DIRMcdLz4p7JMxLjJiFvp+aaG01IEu0ZSoVvYUSxIkvW7k2X50BCW2InguEGlg=="],
-
- "transformers/uglify-js": ["uglify-js@2.2.5", "", { "dependencies": { "optimist": "~0.3.5", "source-map": "~0.1.7" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-viLk+/8G0zm2aKt1JJAVcz5J/5ytdiNaIsKgrre3yvSUjwVG6ZUujGH7E2TiPigZUwLYCe7eaIUEP2Zka2VJPA=="],
-
- "umd/uglify-js": ["uglify-js@2.2.5", "", { "dependencies": { "optimist": "~0.3.5", "source-map": "~0.1.7" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-viLk+/8G0zm2aKt1JJAVcz5J/5ytdiNaIsKgrre3yvSUjwVG6ZUujGH7E2TiPigZUwLYCe7eaIUEP2Zka2VJPA=="],
-
- "with/uglify-js": ["uglify-js@2.4.0", "", { "dependencies": { "async": "~0.2.6", "optimist": "~0.3.5", "source-map": "~0.1.7", "uglify-to-browserify": "~1.0.0" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-mtA+XO8x2+OJmdoqWUDloUdS/VxmeoxEeExlDaKHl3lOQjBQfEJJEYD/0ue07BduJd137AUyUqyEW1R6vlWYXQ=="],
-
- "ws/commander": ["commander@2.1.0", "", {}, "sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ=="],
-
- "express/connect/bytes": ["bytes@0.2.1", "", {}, "sha512-odbk8/wGazOuC1v8v4phoV285/yx8UN5kfQhhuxaVcceig4OUiCZQBtaEtmA1Q78QSTN9iXOQ7X2EViybrEvtQ=="],
-
- "express/connect/negotiator": ["negotiator@0.3.0", "", {}, "sha512-q9wF64uB31BDZQ44DWf+8gE7y8xSpBdREAsJfnBO2WX9ecsutfUO6S9uWEdixlDLOlWaqnlnFXXwZxUUmyLfgg=="],
-
- "express/connect/qs": ["qs@0.6.6", "", {}, "sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA=="],
-
- "express/connect/raw-body": ["raw-body@1.1.2", "", { "dependencies": { "bytes": "~0.2.1" } }, "sha512-9Vyxam2+QrtmNIc3mFrwazAXOeQdxgFvS3vvkvH02R5YbdsaSqL4N9M93s0znkh0q4cGBk8CbrqOSGkz3BUeDg=="],
-
- "express/connect/uid2": ["uid2@0.0.3", "", {}, "sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg=="],
-
- "objectid/mongodb/bson": ["bson@0.2.5", "", {}, "sha512-Cyohgcnnb3Qfeg15o2o/ZY/DdOutzpDCXnsNA44xc6ktviDyaYf/QR/N9nmii+FDpN1CowpQj/mo7Sgmo+7vBQ=="],
-
- "ruglify/uglify-js/optimist": ["optimist@0.3.7", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ=="],
-
- "transformers/uglify-js/optimist": ["optimist@0.3.7", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ=="],
-
- "umd/uglify-js/optimist": ["optimist@0.3.7", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ=="],
-
- "with/uglify-js/optimist": ["optimist@0.3.7", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ=="],
- }
-}
diff --git a/examples/spa/.gitignore b/examples/spa/.gitignore
new file mode 100644
index 0000000..40b878d
--- /dev/null
+++ b/examples/spa/.gitignore
@@ -0,0 +1 @@
+node_modules/
\ No newline at end of file
diff --git a/examples/spa/README.md b/examples/spa/README.md
new file mode 100644
index 0000000..4bf0078
--- /dev/null
+++ b/examples/spa/README.md
@@ -0,0 +1,3 @@
+# hype spa example project
+
+Check the main hype README.md for more info.
diff --git a/examples/spa/bun.lock b/examples/spa/bun.lock
new file mode 100644
index 0000000..ed89d3e
--- /dev/null
+++ b/examples/spa/bun.lock
@@ -0,0 +1,35 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 1,
+ "workspaces": {
+ "": {
+ "name": "hype-spa-example",
+ "dependencies": {
+ "hype": "git+https://git.nose.space/defunkt/hype",
+ },
+ "devDependencies": {
+ "@types/bun": "latest",
+ },
+ "peerDependencies": {
+ "typescript": "^5",
+ },
+ },
+ },
+ "packages": {
+ "@types/bun": ["@types/bun@1.3.6", "", { "dependencies": { "bun-types": "1.3.6" } }, "sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA=="],
+
+ "@types/node": ["@types/node@25.0.9", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw=="],
+
+ "bun-types": ["bun-types@1.3.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ=="],
+
+ "hono": ["hono@4.11.4", "", {}, "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA=="],
+
+ "hype": ["hype@git+https://git.nose.space/defunkt/hype#33d228c9ac6a01fad570e0ac2ba836a100dde623", { "dependencies": { "hono": "^4.10.4", "kleur": "^4.1.5" }, "peerDependencies": { "typescript": "^5" } }, "33d228c9ac6a01fad570e0ac2ba836a100dde623"],
+
+ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
+
+ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
+ }
+}
diff --git a/examples/spa/package.json b/examples/spa/package.json
new file mode 100644
index 0000000..b463f15
--- /dev/null
+++ b/examples/spa/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "hype-spa-example",
+ "module": "src/index.ts",
+ "type": "module",
+ "devDependencies": {
+ "@types/bun": "latest"
+ },
+ "peerDependencies": {
+ "typescript": "^5"
+ },
+ "dependencies": {
+ "hype": "git+https://git.nose.space/defunkt/hype"
+ },
+ "scripts": {
+ "start": "bun run src/server/index.ts",
+ "dev": "bun run --hot src/server/index.ts"
+ }
+}
\ No newline at end of file
diff --git a/example/pub/img/bite1.png b/examples/spa/pub/img/bite1.png
similarity index 100%
rename from example/pub/img/bite1.png
rename to examples/spa/pub/img/bite1.png
diff --git a/example/pub/img/bite2.png b/examples/spa/pub/img/bite2.png
similarity index 100%
rename from example/pub/img/bite2.png
rename to examples/spa/pub/img/bite2.png
diff --git a/example/pub/img/burger.png b/examples/spa/pub/img/burger.png
similarity index 100%
rename from example/pub/img/burger.png
rename to examples/spa/pub/img/burger.png
diff --git a/examples/spa/src/client/app.tsx b/examples/spa/src/client/app.tsx
new file mode 100644
index 0000000..0b264a8
--- /dev/null
+++ b/examples/spa/src/client/app.tsx
@@ -0,0 +1,29 @@
+import { render } from 'hono/jsx/dom'
+import { useState } from 'hono/jsx/dom'
+
+let count = 0
+
+export default function App() {
+ const [count, setCount] = useState(0)
+
+ try {
+ return (
+ <>
+ It works!
+ Count: {count}
+
+ setCount(c => c + 1)}>+
+
+ setCount(c => c && c - 1)}>-
+
+ >
+ )
+ } catch (error) {
+ console.error('Render error:', error)
+ return <>Error {error instanceof Error ? error : new Error(String(error))} >
+ }
+}
+
+// initial render
+const root = document.getElementById('root')!
+render( , root)
diff --git a/example/src/css/main.css b/examples/spa/src/css/main.css
similarity index 100%
rename from example/src/css/main.css
rename to examples/spa/src/css/main.css
diff --git a/examples/spa/src/pages/index.tsx b/examples/spa/src/pages/index.tsx
new file mode 100644
index 0000000..126eeb5
--- /dev/null
+++ b/examples/spa/src/pages/index.tsx
@@ -0,0 +1,31 @@
+import { $ } from 'bun'
+
+const GIT_HASH = process.env.RENDER_GIT_COMMIT?.slice(0, 7)
+ || await $`git rev-parse --short HEAD`.text().then(s => s.trim()).catch(() => 'unknown')
+
+export default () => <>
+
+
+ hype
+
+
+
+
+
+
+
+
+
+
+
+>
diff --git a/examples/spa/src/server/index.ts b/examples/spa/src/server/index.ts
new file mode 100644
index 0000000..289c7a1
--- /dev/null
+++ b/examples/spa/src/server/index.ts
@@ -0,0 +1,8 @@
+import { Hype } from 'hype'
+
+const app = new Hype({ layout: false })
+
+// custom routes go here
+// app.get("/my-custom-routes", (c) => c.text("wild, wild stuff"))
+
+export default app.defaults
diff --git a/example/src/shared/types.ts b/examples/spa/src/shared/types.ts
similarity index 100%
rename from example/src/shared/types.ts
rename to examples/spa/src/shared/types.ts
diff --git a/examples/spa/tsconfig.json b/examples/spa/tsconfig.json
new file mode 100644
index 0000000..1c47734
--- /dev/null
+++ b/examples/spa/tsconfig.json
@@ -0,0 +1,29 @@
+{
+ "compilerOptions": {
+ "lib": ["ESNext", "DOM"],
+ "target": "ESNext",
+ "module": "Preserve",
+ "moduleDetection": "force",
+ "jsx": "react-jsx",
+ "jsxImportSource": "hono/jsx",
+ "allowJs": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "noEmit": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedIndexedAccess": true,
+ "noImplicitOverride": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noPropertyAccessFromIndexSignature": false,
+ "baseUrl": ".",
+ "paths": {
+ "$*": ["src/server/*"],
+ "#*": ["src/client/*"],
+ "@*": ["src/shared/*"]
+ }
+ }
+}
diff --git a/examples/ssr/.gitignore b/examples/ssr/.gitignore
new file mode 100644
index 0000000..c2658d7
--- /dev/null
+++ b/examples/ssr/.gitignore
@@ -0,0 +1 @@
+node_modules/
diff --git a/example/README.md b/examples/ssr/README.md
similarity index 100%
rename from example/README.md
rename to examples/ssr/README.md
diff --git a/examples/ssr/bun.lock b/examples/ssr/bun.lock
new file mode 100644
index 0000000..c4e6c3c
--- /dev/null
+++ b/examples/ssr/bun.lock
@@ -0,0 +1,35 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 1,
+ "workspaces": {
+ "": {
+ "name": "hype-ssr-example",
+ "dependencies": {
+ "hype": "git+https://git.nose.space/defunkt/hype",
+ },
+ "devDependencies": {
+ "@types/bun": "latest",
+ },
+ "peerDependencies": {
+ "typescript": "^5",
+ },
+ },
+ },
+ "packages": {
+ "@types/bun": ["@types/bun@1.3.6", "", { "dependencies": { "bun-types": "1.3.6" } }, "sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA=="],
+
+ "@types/node": ["@types/node@25.0.9", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw=="],
+
+ "bun-types": ["bun-types@1.3.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ=="],
+
+ "hono": ["hono@4.11.4", "", {}, "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA=="],
+
+ "hype": ["hype@git+https://git.nose.space/defunkt/hype#33d228c9ac6a01fad570e0ac2ba836a100dde623", { "dependencies": { "hono": "^4.10.4", "kleur": "^4.1.5" }, "peerDependencies": { "typescript": "^5" } }, "33d228c9ac6a01fad570e0ac2ba836a100dde623"],
+
+ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
+
+ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
+ }
+}
diff --git a/example/package.json b/examples/ssr/package.json
similarity index 77%
rename from example/package.json
rename to examples/ssr/package.json
index c76a026..650feeb 100644
--- a/example/package.json
+++ b/examples/ssr/package.json
@@ -1,5 +1,5 @@
{
- "name": "hype-example",
+ "name": "hype-ssr-example",
"module": "src/index.tsx",
"type": "module",
"devDependencies": {
@@ -9,10 +9,10 @@
"typescript": "^5"
},
"dependencies": {
- "hype": "file:..",
+ "hype": "git+https://git.nose.space/defunkt/hype"
},
"scripts": {
"start": "bun run src/server/index.ts",
"dev": "bun run --hot src/server/index.ts"
}
-}
+}
\ No newline at end of file
diff --git a/examples/ssr/pub/img/bite1.png b/examples/ssr/pub/img/bite1.png
new file mode 100644
index 0000000..bdc5d37
Binary files /dev/null and b/examples/ssr/pub/img/bite1.png differ
diff --git a/examples/ssr/pub/img/bite2.png b/examples/ssr/pub/img/bite2.png
new file mode 100644
index 0000000..f0be640
Binary files /dev/null and b/examples/ssr/pub/img/bite2.png differ
diff --git a/examples/ssr/pub/img/burger.png b/examples/ssr/pub/img/burger.png
new file mode 100644
index 0000000..292aef3
Binary files /dev/null and b/examples/ssr/pub/img/burger.png differ
diff --git a/example/src/client/burger.ts b/examples/ssr/src/client/burger.ts
similarity index 100%
rename from example/src/client/burger.ts
rename to examples/ssr/src/client/burger.ts
diff --git a/example/src/client/main.ts b/examples/ssr/src/client/main.ts
similarity index 100%
rename from example/src/client/main.ts
rename to examples/ssr/src/client/main.ts
diff --git a/examples/ssr/src/css/main.css b/examples/ssr/src/css/main.css
new file mode 100644
index 0000000..62bcd77
--- /dev/null
+++ b/examples/ssr/src/css/main.css
@@ -0,0 +1,40 @@
+section {
+ max-width: 500px;
+ margin: 0 auto;
+ text-align: center;
+ font-size: 200%;
+}
+
+h1 {
+ margin-top: 0;
+}
+
+.hype {
+ display: inline-block;
+ padding: 0.3rem 0.8rem;
+ background: linear-gradient(45deg,
+ #ff00ff 0%,
+ #00ffff 33%,
+ #ffff00 66%,
+ #ff00ff 100%);
+ background-size: 400% 400%;
+ animation: gradientShift 15s ease infinite;
+ color: black;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+ font-weight: 700;
+ border-radius: 4px;
+}
+
+@keyframes gradientShift {
+ 0% {
+ background-position: 0% 50%;
+ }
+
+ 100% {
+ background-position: 100% 50%;
+ }
+}
+
+ul {
+ list-style-type: none;
+}
\ No newline at end of file
diff --git a/example/src/pages/about.tsx b/examples/ssr/src/pages/about.tsx
similarity index 100%
rename from example/src/pages/about.tsx
rename to examples/ssr/src/pages/about.tsx
diff --git a/example/src/pages/index.tsx b/examples/ssr/src/pages/index.tsx
similarity index 100%
rename from example/src/pages/index.tsx
rename to examples/ssr/src/pages/index.tsx
diff --git a/example/src/pages/js-test.tsx b/examples/ssr/src/pages/js-test.tsx
similarity index 100%
rename from example/src/pages/js-test.tsx
rename to examples/ssr/src/pages/js-test.tsx
diff --git a/example/src/server/index.ts b/examples/ssr/src/server/index.ts
similarity index 100%
rename from example/src/server/index.ts
rename to examples/ssr/src/server/index.ts
diff --git a/examples/ssr/src/shared/types.ts b/examples/ssr/src/shared/types.ts
new file mode 100644
index 0000000..e69de29
diff --git a/example/tsconfig.json b/examples/ssr/tsconfig.json
similarity index 100%
rename from example/tsconfig.json
rename to examples/ssr/tsconfig.json