this repo has no description

chore: init

dunkirk.sh 8cb32c12

verified
+34
.gitignore
···
+
# dependencies (bun install)
+
node_modules
+
+
# output
+
out
+
dist
+
*.tgz
+
+
# code coverage
+
coverage
+
*.lcov
+
+
# logs
+
logs
+
_.log
+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
+
+
# dotenv environment variable files
+
.env
+
.env.development.local
+
.env.test.local
+
.env.production.local
+
.env.local
+
+
# caches
+
.eslintcache
+
.cache
+
*.tsbuildinfo
+
+
# IntelliJ based IDEs
+
.idea
+
+
# Finder (MacOS) folder config
+
.DS_Store
+106
CRUSH.md
···
+
+
Default to using Bun instead of Node.js.
+
+
- Use `bun <file>` instead of `node <file>` or `ts-node <file>`
+
- Use `bun test` instead of `jest` or `vitest`
+
- Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild`
+
- Use `bun install` instead of `npm install` or `yarn install` or `pnpm install`
+
- Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>`
+
- Bun automatically loads .env, so don't use dotenv.
+
+
## APIs
+
+
- `Bun.serve()` supports WebSockets, HTTPS, and routes. Don't use `express`.
+
- `bun:sqlite` for SQLite. Don't use `better-sqlite3`.
+
- `Bun.redis` for Redis. Don't use `ioredis`.
+
- `Bun.sql` for Postgres. Don't use `pg` or `postgres.js`.
+
- `WebSocket` is built-in. Don't use `ws`.
+
- Prefer `Bun.file` over `node:fs`'s readFile/writeFile
+
- Bun.$`ls` instead of execa.
+
+
## Testing
+
+
Use `bun test` to run tests.
+
+
```ts#index.test.ts
+
import { test, expect } from "bun:test";
+
+
test("hello world", () => {
+
expect(1).toBe(1);
+
});
+
```
+
+
## Frontend
+
+
Use HTML imports with `Bun.serve()`. Don't use `vite`. HTML imports fully support React, CSS, Tailwind.
+
+
Server:
+
+
```ts#index.ts
+
import index from "./index.html"
+
+
Bun.serve({
+
routes: {
+
"/": index,
+
"/api/users/:id": {
+
GET: (req) => {
+
return new Response(JSON.stringify({ id: req.params.id }));
+
},
+
},
+
},
+
// optional websocket support
+
websocket: {
+
open: (ws) => {
+
ws.send("Hello, world!");
+
},
+
message: (ws, message) => {
+
ws.send(message);
+
},
+
close: (ws) => {
+
// handle close
+
}
+
},
+
development: {
+
hmr: true,
+
console: true,
+
}
+
})
+
```
+
+
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.
+
+
```html#index.html
+
<html>
+
<body>
+
<h1>Hello, world!</h1>
+
<script type="module" src="./frontend.tsx"></script>
+
</body>
+
</html>
+
```
+
+
With the following `frontend.tsx`:
+
+
```tsx#frontend.tsx
+
import React from "react";
+
+
// import .css files directly and it works
+
import './index.css';
+
+
import { createRoot } from "react-dom/client";
+
+
const root = createRoot(document.body);
+
+
export default function Frontend() {
+
return <h1>Hello, world!</h1>;
+
}
+
+
root.render(<Frontend />);
+
```
+
+
Then, run index.ts
+
+
```sh
+
bun --hot ./index.ts
+
```
+
+
For more information, read the Bun API docs in `node_modules/bun-types/docs/**.md`.
+25
LICENSE.md
···
+
The MIT License (MIT)
+
=====================
+
+
Copyright © `2025` `Kieran Klukas`
+
+
Permission is hereby granted, free of charge, to any person
+
obtaining a copy of this software and associated documentation
+
files (the “Software”), to deal in the Software without
+
restriction, including without limitation the rights to use,
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
+
copies of the Software, and to permit persons to whom the
+
Software is furnished to do so, subject to the following
+
conditions:
+
+
The above copyright notice and this permission notice shall be
+
included in all copies or substantial portions of the Software.
+
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+
OTHER DEALINGS IN THE SOFTWARE.
+36
README.md
···
+
# IRC <> Slack bridge
+
+
This is a little bot in active development to bridge slack and irc for Hackclub!
+
+
## How do I hack on it?
+
+
### Development
+
+
This is written in typescript so pretty easy to get started!
+
+
```bash
+
bun install
+
bun dev
+
```
+
+
### Environment Setup
+
+
Make a `.env` file with the following:
+
+
```bash
+
# env vars go here
+
```
+
+
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.
+
+
<p align="center">
+
<img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/master/.github/images/line-break.svg" />
+
</p>
+
+
<p align="center">
+
&copy 2025-present <a href="https://github.com/taciturnaxolotl">Kieran Klukas</a>
+
</p>
+
+
<p align="center">
+
<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>
+
</p>
+26
bun.lock
···
+
{
+
"lockfileVersion": 1,
+
"configVersion": 1,
+
"workspaces": {
+
"": {
+
"name": "irc-slack-bridge",
+
"devDependencies": {
+
"@types/bun": "latest",
+
},
+
"peerDependencies": {
+
"typescript": "^5",
+
},
+
},
+
},
+
"packages": {
+
"@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="],
+
+
"@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
+
+
"bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="],
+
+
"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=="],
+
}
+
}
+1
index.ts
···
+
console.log("Hello via Bun!");
+12
package.json
···
+
{
+
"name": "irc-slack-bridge",
+
"module": "index.ts",
+
"type": "module",
+
"private": true,
+
"devDependencies": {
+
"@types/bun": "latest"
+
},
+
"peerDependencies": {
+
"typescript": "^5"
+
}
+
}
+29
tsconfig.json
···
+
{
+
"compilerOptions": {
+
// Environment setup & latest features
+
"lib": ["ESNext"],
+
"target": "ESNext",
+
"module": "Preserve",
+
"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,
+
"noUncheckedIndexedAccess": true,
+
"noImplicitOverride": true,
+
+
// Some stricter flags (disabled by default)
+
"noUnusedLocals": false,
+
"noUnusedParameters": false,
+
"noPropertyAccessFromIndexSignature": false
+
}
+
}