From f74e38dcbfeed6d955c02163f244e0b8fb702cbd Mon Sep 17 00:00:00 2001 From: Brendan Magee Date: Wed, 16 Oct 2024 12:07:56 -0600 Subject: [PATCH] feat: Add Express server using Bun runtime --- express-bun/.flox/.gitignore | 4 + express-bun/.flox/env.json | 4 + express-bun/.flox/env/manifest.lock | 156 ++++++++++++++++++++++++++++ express-bun/.flox/env/manifest.toml | 22 ++++ express-bun/.gitignore | 1 + express-bun/.prettierrc | 10 ++ express-bun/bun.lockb | Bin 0 -> 71072 bytes express-bun/package.json | 17 +++ express-bun/server.ts | 16 +++ express-bun/tsconfig.json | 27 +++++ 10 files changed, 257 insertions(+) create mode 100644 express-bun/.flox/.gitignore create mode 100644 express-bun/.flox/env.json create mode 100644 express-bun/.flox/env/manifest.lock create mode 100644 express-bun/.flox/env/manifest.toml create mode 100644 express-bun/.gitignore create mode 100644 express-bun/.prettierrc create mode 100755 express-bun/bun.lockb create mode 100644 express-bun/package.json create mode 100644 express-bun/server.ts create mode 100644 express-bun/tsconfig.json diff --git a/express-bun/.flox/.gitignore b/express-bun/.flox/.gitignore new file mode 100644 index 0000000..15d71a1 --- /dev/null +++ b/express-bun/.flox/.gitignore @@ -0,0 +1,4 @@ +run/ +cache/ +lib/ +log/ diff --git a/express-bun/.flox/env.json b/express-bun/.flox/env.json new file mode 100644 index 0000000..93a884f --- /dev/null +++ b/express-bun/.flox/env.json @@ -0,0 +1,4 @@ +{ + "name": "express-bun", + "version": 1 +} \ No newline at end of file diff --git a/express-bun/.flox/env/manifest.lock b/express-bun/.flox/env/manifest.lock new file mode 100644 index 0000000..0331fe2 --- /dev/null +++ b/express-bun/.flox/env/manifest.lock @@ -0,0 +1,156 @@ +{ + "lockfile-version": 1, + "manifest": { + "version": 1, + "install": { + "bun": { + "pkg-path": "bun" + } + }, + "hook": { + "on-activate": " export PORT=8080\n echo \"Value of PORT variable is $PORT\"\n bun install\n" + }, + "profile": { + "common": " echo \"it's gettin' Flox in here\"\n" + }, + "options": { + "systems": [ + "aarch64-darwin", + "aarch64-linux", + "x86_64-darwin", + "x86_64-linux" + ], + "allow": { + "licenses": [] + }, + "semver": {} + }, + "services": { + "express": { + "command": "bun server.ts --watch", + "vars": null, + "is-daemon": null, + "shutdown": null, + "systems": null + } + } + }, + "packages": [ + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/bgj47nj2jji1hp0y6fkffqa35gf9d3iz-bun-1.1.29.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "name": "bun-1.1.29", + "pname": "bun", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "rev_count": 692963, + "rev_date": "2024-10-14T06:48:30Z", + "scrape_date": "2024-10-16T03:55:11Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.1.29", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/q8gjb6x9dgz2vq761dr50aifd69lsyhk-bun-1.1.29" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/dpmd8j2ha61jfmnrr4sn238hk0lqn4hd-bun-1.1.29.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "name": "bun-1.1.29", + "pname": "bun", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "rev_count": 692963, + "rev_date": "2024-10-14T06:48:30Z", + "scrape_date": "2024-10-16T03:55:11Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.1.29", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/9dxgpcvzl461f4q3dgz3c1xcl4h4xwjv-bun-1.1.29" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/h1sla4r1r29g4l7hskm056w7jv5wg1bi-bun-1.1.29.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "name": "bun-1.1.29", + "pname": "bun", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "rev_count": 692963, + "rev_date": "2024-10-14T06:48:30Z", + "scrape_date": "2024-10-16T03:55:11Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.1.29", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/0hdv8bbyw472agzgwysk7df0hra6zzj1-bun-1.1.29" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/qig6gh0qpb9c8nl79k7fq7dbzw58wzv0-bun-1.1.29.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "name": "bun-1.1.29", + "pname": "bun", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "rev_count": 692963, + "rev_date": "2024-10-14T06:48:30Z", + "scrape_date": "2024-10-16T03:55:11Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.1.29", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/1xgl28bhcsvmw14vfyxlrb5qhmlzjifi-bun-1.1.29" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + } + ] +} \ No newline at end of file diff --git a/express-bun/.flox/env/manifest.toml b/express-bun/.flox/env/manifest.toml new file mode 100644 index 0000000..d1fac50 --- /dev/null +++ b/express-bun/.flox/env/manifest.toml @@ -0,0 +1,22 @@ +version = 1 + +[install] +bun.pkg-path = "bun" + +[hook] +on-activate = ''' + export PORT=3000 + echo "Value of PORT variable is $PORT" + bun install +''' + +[profile] +common = ''' + echo "it's gettin' Flox in here" +''' + +[services] +express.command = "bun server.ts --watch" + +[options] +systems = ["aarch64-darwin", "aarch64-linux", "x86_64-darwin", "x86_64-linux"] diff --git a/express-bun/.gitignore b/express-bun/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/express-bun/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/express-bun/.prettierrc b/express-bun/.prettierrc new file mode 100644 index 0000000..b017c96 --- /dev/null +++ b/express-bun/.prettierrc @@ -0,0 +1,10 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "tabWidth": 2, + "useTabs": false, + "printWidth": 80, + "endOfLine": "lf" +} diff --git a/express-bun/bun.lockb b/express-bun/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..445ee3defcda6f00bfe6c25bab9d8b6295280698 GIT binary patch literal 71072 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 { + res.status(200).send('Hello, Flox!\n') +}) + +app.get('/ping', (_req: Request, res: Response) => { + res.status(200).send('pong\n') +}) + +app.listen(PORT, () => { + console.log(`Listening on port ${PORT}...`) +}) diff --git a/express-bun/tsconfig.json b/express-bun/tsconfig.json new file mode 100644 index 0000000..c6e65e0 --- /dev/null +++ b/express-bun/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags + "noUnusedLocals": true, + "noUnusedParameters": true, + "noPropertyAccessFromIndexSignature": true, + }, +}