this repo has no description

chore: init

dunkirk.sh 8cb32c12

+269
+34
.gitignore
··· 1 + # dependencies (bun install) 2 + node_modules 3 + 4 + # output 5 + out 6 + dist 7 + *.tgz 8 + 9 + # code coverage 10 + coverage 11 + *.lcov 12 + 13 + # logs 14 + logs 15 + _.log 16 + report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 17 + 18 + # dotenv environment variable files 19 + .env 20 + .env.development.local 21 + .env.test.local 22 + .env.production.local 23 + .env.local 24 + 25 + # caches 26 + .eslintcache 27 + .cache 28 + *.tsbuildinfo 29 + 30 + # IntelliJ based IDEs 31 + .idea 32 + 33 + # Finder (MacOS) folder config 34 + .DS_Store
+106
CRUSH.md
··· 1 + 2 + Default to using Bun instead of Node.js. 3 + 4 + - Use `bun <file>` instead of `node <file>` or `ts-node <file>` 5 + - Use `bun test` instead of `jest` or `vitest` 6 + - Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` 7 + - Use `bun install` instead of `npm install` or `yarn install` or `pnpm install` 8 + - Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>` 9 + - Bun automatically loads .env, so don't use dotenv. 10 + 11 + ## APIs 12 + 13 + - `Bun.serve()` supports WebSockets, HTTPS, and routes. Don't use `express`. 14 + - `bun:sqlite` for SQLite. Don't use `better-sqlite3`. 15 + - `Bun.redis` for Redis. Don't use `ioredis`. 16 + - `Bun.sql` for Postgres. Don't use `pg` or `postgres.js`. 17 + - `WebSocket` is built-in. Don't use `ws`. 18 + - Prefer `Bun.file` over `node:fs`'s readFile/writeFile 19 + - Bun.$`ls` instead of execa. 20 + 21 + ## Testing 22 + 23 + Use `bun test` to run tests. 24 + 25 + ```ts#index.test.ts 26 + import { test, expect } from "bun:test"; 27 + 28 + test("hello world", () => { 29 + expect(1).toBe(1); 30 + }); 31 + ``` 32 + 33 + ## Frontend 34 + 35 + Use HTML imports with `Bun.serve()`. Don't use `vite`. HTML imports fully support React, CSS, Tailwind. 36 + 37 + Server: 38 + 39 + ```ts#index.ts 40 + import index from "./index.html" 41 + 42 + Bun.serve({ 43 + routes: { 44 + "/": index, 45 + "/api/users/:id": { 46 + GET: (req) => { 47 + return new Response(JSON.stringify({ id: req.params.id })); 48 + }, 49 + }, 50 + }, 51 + // optional websocket support 52 + websocket: { 53 + open: (ws) => { 54 + ws.send("Hello, world!"); 55 + }, 56 + message: (ws, message) => { 57 + ws.send(message); 58 + }, 59 + close: (ws) => { 60 + // handle close 61 + } 62 + }, 63 + development: { 64 + hmr: true, 65 + console: true, 66 + } 67 + }) 68 + ``` 69 + 70 + HTML files can import .tsx, .jsx or .js files directly and Bun's bundler will transpile & bundle automatically. `<link>` tags can point to stylesheets and Bun's CSS bundler will bundle. 71 + 72 + ```html#index.html 73 + <html> 74 + <body> 75 + <h1>Hello, world!</h1> 76 + <script type="module" src="./frontend.tsx"></script> 77 + </body> 78 + </html> 79 + ``` 80 + 81 + With the following `frontend.tsx`: 82 + 83 + ```tsx#frontend.tsx 84 + import React from "react"; 85 + 86 + // import .css files directly and it works 87 + import './index.css'; 88 + 89 + import { createRoot } from "react-dom/client"; 90 + 91 + const root = createRoot(document.body); 92 + 93 + export default function Frontend() { 94 + return <h1>Hello, world!</h1>; 95 + } 96 + 97 + root.render(<Frontend />); 98 + ``` 99 + 100 + Then, run index.ts 101 + 102 + ```sh 103 + bun --hot ./index.ts 104 + ``` 105 + 106 + For more information, read the Bun API docs in `node_modules/bun-types/docs/**.md`.
+25
LICENSE.md
··· 1 + The MIT License (MIT) 2 + ===================== 3 + 4 + Copyright © `2025` `Kieran Klukas` 5 + 6 + Permission is hereby granted, free of charge, to any person 7 + obtaining a copy of this software and associated documentation 8 + files (the “Software”), to deal in the Software without 9 + restriction, including without limitation the rights to use, 10 + copy, modify, merge, publish, distribute, sublicense, and/or sell 11 + copies of the Software, and to permit persons to whom the 12 + Software is furnished to do so, subject to the following 13 + conditions: 14 + 15 + The above copyright notice and this permission notice shall be 16 + included in all copies or substantial portions of the Software. 17 + 18 + THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, 19 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 + OTHER DEALINGS IN THE SOFTWARE.
+36
README.md
··· 1 + # IRC <> Slack bridge 2 + 3 + This is a little bot in active development to bridge slack and irc for Hackclub! 4 + 5 + ## How do I hack on it? 6 + 7 + ### Development 8 + 9 + This is written in typescript so pretty easy to get started! 10 + 11 + ```bash 12 + bun install 13 + bun dev 14 + ``` 15 + 16 + ### Environment Setup 17 + 18 + Make a `.env` file with the following: 19 + 20 + ```bash 21 + # env vars go here 22 + ``` 23 + 24 + If you want to report an issue the main repo is [the tangled repo](https://tangled.org/dunkirk.sh/irc-slack-bridge) and the github is just a mirror. 25 + 26 + <p align="center"> 27 + <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/master/.github/images/line-break.svg" /> 28 + </p> 29 + 30 + <p align="center"> 31 + &copy 2025-present <a href="https://github.com/taciturnaxolotl">Kieran Klukas</a> 32 + </p> 33 + 34 + <p align="center"> 35 + <a href="https://github.com/taciturnaxolotl/irc-slack-bridge/blob/main/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a> 36 + </p>
+26
bun.lock
··· 1 + { 2 + "lockfileVersion": 1, 3 + "configVersion": 1, 4 + "workspaces": { 5 + "": { 6 + "name": "irc-slack-bridge", 7 + "devDependencies": { 8 + "@types/bun": "latest", 9 + }, 10 + "peerDependencies": { 11 + "typescript": "^5", 12 + }, 13 + }, 14 + }, 15 + "packages": { 16 + "@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="], 17 + 18 + "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], 19 + 20 + "bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], 21 + 22 + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], 23 + 24 + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], 25 + } 26 + }
+1
index.ts
··· 1 + console.log("Hello via Bun!");
+12
package.json
··· 1 + { 2 + "name": "irc-slack-bridge", 3 + "module": "index.ts", 4 + "type": "module", 5 + "private": true, 6 + "devDependencies": { 7 + "@types/bun": "latest" 8 + }, 9 + "peerDependencies": { 10 + "typescript": "^5" 11 + } 12 + }
+29
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + // Environment setup & latest features 4 + "lib": ["ESNext"], 5 + "target": "ESNext", 6 + "module": "Preserve", 7 + "moduleDetection": "force", 8 + "jsx": "react-jsx", 9 + "allowJs": true, 10 + 11 + // Bundler mode 12 + "moduleResolution": "bundler", 13 + "allowImportingTsExtensions": true, 14 + "verbatimModuleSyntax": true, 15 + "noEmit": true, 16 + 17 + // Best practices 18 + "strict": true, 19 + "skipLibCheck": true, 20 + "noFallthroughCasesInSwitch": true, 21 + "noUncheckedIndexedAccess": true, 22 + "noImplicitOverride": true, 23 + 24 + // Some stricter flags (disabled by default) 25 + "noUnusedLocals": false, 26 + "noUnusedParameters": false, 27 + "noPropertyAccessFromIndexSignature": false 28 + } 29 + }