slackScoutmain.tsx10 matches
15}
1617export default async function(interval: Interval): Promise<void> {
18try {
19await createTable();
3839// Create an SQLite table
40async function createTable(): Promise<void> {
41await sqlite.execute(`
42CREATE TABLE IF NOT EXISTS ${TABLE_NAME} (
5051// Fetch Hacker news, Twitter, and Reddit results
52async function fetchHackerNewsResults(topic: string): Promise<Website[]> {
53return hackerNewsSearch({
54query: topic,
58}
5960// async function fetchTwitterResults(topic: string): Promise<Website[]> {
61// return twitterSearch({
62// query: topic,
67// }
6869async function fetchRedditResults(topic: string): Promise<Website[]> {
70return redditSearch({ query: topic });
71}
7273function formatSlackMessage(website: Website): string {
74const displayTitle = website.title || website.url;
75return `*<${website.url}|${displayTitle}>*
78}
7980async function sendSlackMessage(message: string): Promise<Response> {
81const slackWebhookUrl = Deno.env.get("SLACK_WEBHOOK_URL");
82if (!slackWebhookUrl) {
104}
105106async function isURLInTable(url: string): Promise<boolean> {
107const result = await sqlite.execute({
108sql: `SELECT 1 FROM ${TABLE_NAME} WHERE url = :url LIMIT 1`,
112}
113114async function addWebsiteToTable(website: Website): Promise<void> {
115await sqlite.execute({
116sql: `INSERT INTO ${TABLE_NAME} (source, url, title, date_published)
120}
121122async function processResults(results: Website[]): Promise<void> {
123for (const website of results) {
124if (!(await isURLInTable(website.url))) {
1// Custom error logger
2function logError(error, errorType) {
3var errorMessage = error.message || error.toString();
4var errorSource = error.fileName || error.sourceURL || error.src || "unknown";
1920// Catch general JavaScript errors
21window.addEventListener("error", function(event) {
22// Check if the error is a script loading error
23if (event.target && event.target.tagName === "SCRIPT") {
3334// Handle unhandled promise rejections
35window.addEventListener("unhandledrejection", function(event) {
36logError(event.reason, "unhandledRejection");
37});
3839// Catch and log any errors that occur during script execution
40document.addEventListener("error", function(event) {
41if (event.target && event.target.tagName === "SCRIPT") {
42logError({
49// Override createElement to catch dynamic script loading errors
50var originalCreateElement = document.createElement;
51document.createElement = function() {
52var element = originalCreateElement.apply(this, arguments);
53if (arguments[0].toLowerCase() === "script") {
54element.addEventListener("error", function(event) {
55logError({
56message: "Failed to load dynamically added script",
linkInBioTemplatemain.tsx1 match
12import { renderToString } from "npm:react-dom/server";
1314export default async function(req: Request) {
15return new Response(
16renderToString(
snakeclonemain.tsx5 matches
7const CELL_SIZE = CANVAS_SIZE / GRID_SIZE;
89function ChatRoom() {
10const [messages, setMessages] = useState([]);
11const [inputMessage, setInputMessage] = useState('');
46}
4748function SnakeGame() {
49const [snake, setSnake] = useState([{ x: 10, y: 10 }]);
50const [food, setFood] = useState({ x: 15, y: 15 });
127}
128129function App() {
130const [currentView, setCurrentView] = useState('menu');
131157}
158159function mountApp() {
160const root = document.getElementById("root");
161if (root) {
166}
167168async function server(request: Request): Promise<Response> {
169return new Response(`
170<html>
missingRosePonymain.tsx1 match
4import { currency } from "https://esm.town/v/stevekrouse/currency";
56export default async function btcPriceAlert() {
7const lastBtcPrice: number = await blob.getJSON("lastBtcPrice");
8let btcPrice = await currency("usd", "btc");
weekWorkoutIconsmain.tsx1 match
4import { addDays, format } from "npm:date-fns@2.30.0";
56export function weekWorkoutIcons(
7byDay: Record<string, any>,
8timezone: string = "America/Los_Angeles",
setTidbytImagemain.tsx1 match
7];
89export async function setTidbytImage({ image }: {
10image: string;
11}) {
scientificCyanHarriermain.tsx3 matches
4import { vtTokenSessionAuth } from "https://esm.town/v/stevekrouse/vtTokenSessionAuthSafe";
56function App() {
7const [tables, setTables] = useState([]);
8const [selectedTable, setSelectedTable] = useState(null);
214}
215216function client() {
217createRoot(document.getElementById("root")).render(<App />);
218}
222}
223224async function server(request: Request): Promise<Response> {
225try {
226const { sqlite } = await import("https://esm.town/v/stevekrouse/sqlite");
whoIsHiringHomemain.tsx1 match
2import { Dispatch } from "https://esm.sh/react";
34export default function Home(
5dispatch: Dispatch<{
6type: string;
tidbytStarmain.tsx1 match
1import { tidbytCircle } from "https://esm.town/v/andreterron/tidbytCircle";
23export async function tidbytStar({ size = 7, bg = 0x047857ff, star = 0xffffffff }: {
4size?: number;
5bg?: number;