providing password reset services for a long while: circa 2025

feat: port env var

Changed files
+35 -34
+1
README.md
···
SLACK_SIGNING_SECRET=xxxxxx
NODE_ENV=development
ADMINS=U062UG485EE
```
```bash
···
SLACK_SIGNING_SECRET=xxxxxx
NODE_ENV=development
ADMINS=U062UG485EE
+
HACKATIME_API_KEY=xxxxxx
```
```bash
+34 -34
index.ts
···
import * as features from "./features/index";
-
const { version, name } = require("./package.json");
const environment = process.env.NODE_ENV;
import quip from "./quip";
console.log(
-
`----------------------------------\n${name} server\n----------------------------------\n`,
);
console.log(`๐Ÿ—๏ธ Starting ${name}...`);
console.log("๐Ÿ“ฆ Loading Slack App...");
console.log("๐Ÿ”‘ Loading environment variables...");
if (
-
!process.env.SLACK_BOT_TOKEN ||
-
!process.env.SLACK_SIGNING_SECRET ||
-
!process.env.ADMINS
) {
-
throw new Error(
-
"Missing required environment variables: SLACK_BOT_TOKEN SLACK_SIGNING_SECRET or ADMINS",
-
);
}
const slackApp = new SlackApp({
-
env: {
-
SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN,
-
SLACK_SIGNING_SECRET: process.env.SLACK_SIGNING_SECRET,
-
SLACK_LOGGING_LEVEL: "INFO",
-
},
-
startLazyListenerAfterAck: true,
});
const slackClient = slackApp.client;
console.log(`โš’๏ธ Loading ${Object.entries(features).length} features...`);
for (const [feature, handler] of Object.entries(features)) {
-
console.log(`๐Ÿ“ฆ ${feature} loaded`);
-
if (typeof handler === "function") {
-
handler();
-
}
}
export default {
-
port: 3000,
-
async fetch(request: Request) {
-
const url = new URL(request.url);
-
const path = url.pathname;
-
switch (path) {
-
case "/":
-
return new Response(`Hello World from ${name}@${version}`);
-
case "/health":
-
return new Response("OK");
-
case "/slack":
-
return slackApp.run(request);
-
default:
-
return new Response("404 Not Found", { status: 404 });
-
}
-
},
};
console.log(
-
`๐Ÿš€ Server Started in ${Bun.nanoseconds() / 1000000} milliseconds on version: ${version}!\n\n----------------------------------\n`,
);
console.log(quip());
···
import * as features from "./features/index";
+
import { version, name } from "./package.json";
const environment = process.env.NODE_ENV;
import quip from "./quip";
console.log(
+
`----------------------------------\n${name} server\n----------------------------------\n`,
);
console.log(`๐Ÿ—๏ธ Starting ${name}...`);
console.log("๐Ÿ“ฆ Loading Slack App...");
console.log("๐Ÿ”‘ Loading environment variables...");
if (
+
!process.env.SLACK_BOT_TOKEN ||
+
!process.env.SLACK_SIGNING_SECRET ||
+
!process.env.ADMINS
) {
+
throw new Error(
+
"Missing required environment variables: SLACK_BOT_TOKEN SLACK_SIGNING_SECRET or ADMINS",
+
);
}
const slackApp = new SlackApp({
+
env: {
+
SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN,
+
SLACK_SIGNING_SECRET: process.env.SLACK_SIGNING_SECRET,
+
SLACK_LOGGING_LEVEL: "INFO",
+
},
+
startLazyListenerAfterAck: true,
});
const slackClient = slackApp.client;
console.log(`โš’๏ธ Loading ${Object.entries(features).length} features...`);
for (const [feature, handler] of Object.entries(features)) {
+
console.log(`๐Ÿ“ฆ ${feature} loaded`);
+
if (typeof handler === "function") {
+
handler();
+
}
}
export default {
+
port: process.env.PORT || 3000,
+
async fetch(request: Request) {
+
const url = new URL(request.url);
+
const path = url.pathname;
+
switch (path) {
+
case "/":
+
return new Response(`Hello World from ${name}@${version}`);
+
case "/health":
+
return new Response("OK");
+
case "/slack":
+
return slackApp.run(request);
+
default:
+
return new Response("404 Not Found", { status: 404 });
+
}
+
},
};
console.log(
+
`๐Ÿš€ Server Started in ${Bun.nanoseconds() / 1000000} milliseconds on version: ${version}!\n\n----------------------------------\n`,
);
console.log(quip());