summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--.gitignore169
-rw-r--r--README.md22
-rwxr-xr-xbun.lockbbin0 -> 2354 bytes
-rw-r--r--package.json15
-rw-r--r--src/index.ts10
-rw-r--r--test/index.test.ts21
-rw-r--r--tsconfig.json22
7 files changed, 259 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f81d56e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,169 @@
+# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
+
+# Logs
+
+logs
+_.log
+npm-debug.log_
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+
+report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
+
+# Runtime data
+
+pids
+_.pid
+_.seed
+\*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+
+lib-cov
+
+# Coverage directory used by tools like istanbul
+
+coverage
+\*.lcov
+
+# nyc test coverage
+
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+
+bower_components
+
+# node-waf configuration
+
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+
+build/Release
+
+# Dependency directories
+
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+
+web_modules/
+
+# TypeScript cache
+
+\*.tsbuildinfo
+
+# Optional npm cache directory
+
+.npm
+
+# Optional eslint cache
+
+.eslintcache
+
+# Optional stylelint cache
+
+.stylelintcache
+
+# Microbundle cache
+
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+
+.node_repl_history
+
+# Output of 'npm pack'
+
+\*.tgz
+
+# Yarn Integrity file
+
+.yarn-integrity
+
+# dotenv environment variable files
+
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+
+.cache
+.parcel-cache
+
+# Next.js build output
+
+.next
+out
+
+# Nuxt.js build / generate output
+
+.nuxt
+dist
+
+# Gatsby files
+
+.cache/
+
+# Comment in the public line in if your project uses Gatsby and not Next.js
+
+# https://nextjs.org/blog/next-9-1#public-directory-support
+
+# public
+
+# vuepress build output
+
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+
+.temp
+.cache
+
+# Docusaurus cache and generated files
+
+.docusaurus
+
+# Serverless directories
+
+.serverless/
+
+# FuseBox cache
+
+.fusebox/
+
+# DynamoDB Local files
+
+.dynamodb/
+
+# TernJS port file
+
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+
+.vscode-test
+
+# yarn v2
+
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.\*
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3430625
--- /dev/null
+++ b/README.md
@@ -0,0 +1,22 @@
+# homestead
+
+## Goals
+
+1. To be a near-drop-in replacement for Zola
+2. More indieweb features
+
+## Installing
+
+To install dependencies:
+
+```bash
+bun install
+```
+
+To run:
+
+```bash
+bun run src/index.ts
+```
+
+This project was created using `bun init` in bun v0.8.1. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
diff --git a/bun.lockb b/bun.lockb
new file mode 100755
index 0000000..2ab9dd9
--- /dev/null
+++ b/bun.lockb
Binary files differdiff --git a/package.json b/package.json
new file mode 100644
index 0000000..96a8252
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "homestead",
+  "module": "src/index.ts",
+  "devDependencies": {
+    "bun-html-live-reload": "^0.1.1",
+    "bun-types": "latest"
+  },
+  "peerDependencies": {
+    "typescript": "^5.0.0"
+  },
+  "type": "module",
+  "dependencies": {
+    "siopao": "^0.4.0"
+  }
+}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..8c0a3ba
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,10 @@
+import { withHtmlLiveReload } from "bun-html-live-reload";
+import Siopao from "siopao";
+
+const router = new Siopao();
+
+router.get("/status", () => new Response("OK"));
+
+export default withHtmlLiveReload({
+  fetch: router.fetch.bind(router),
+})
diff --git a/test/index.test.ts b/test/index.test.ts
new file mode 100644
index 0000000..d82cb9e
--- /dev/null
+++ b/test/index.test.ts
@@ -0,0 +1,21 @@
+import { type Server } from "bun"
+import { expect, test, beforeAll, afterAll } from "bun:test"
+
+import app from "../src/index"
+
+const port = 33000;
+let server: Server
+
+beforeAll(async function () {
+  server = Bun.serve(Object.assign({}, app, { port }))
+})
+
+afterAll(function () {
+  server.stop()
+})
+
+test("/status returns 200 OK", async function () {
+  const res = await fetch(`http://localhost:${port}/status`)
+  expect(res.status).toBe(200)
+  expect(await res.text()).toBe("OK")
+})
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..1c542d7
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,22 @@
+{
+  "compilerOptions": {
+    "lib": ["ES2017", "ES2019", "ESNext"],
+    "module": "esnext",
+    "target": "esnext",
+    "moduleResolution": "bundler",
+    "moduleDetection": "force",
+    "allowImportingTsExtensions": true,
+    "noEmit": true,
+    "composite": true,
+    "strict": true,
+    "downlevelIteration": true,
+    "skipLibCheck": true,
+    "jsx": "preserve",
+    "allowSyntheticDefaultImports": true,
+    "forceConsistentCasingInFileNames": true,
+    "allowJs": true,
+    "types": [
+      "bun-types" // add Bun global
+    ]
+  }
+}