A fast, local-first "redirection engine" for !bang users with a few extra features ^-^

feat: add image bang back

Fixes #8

dunkirk.sh 3f76b83e 26f41d6f

verified
+48 -39
+48 -39
src/bangs/hashbanggen.ts
··· 3 3 // Developer script that converts ./bang.ts' array to hashmap. 4 4 5 5 const hashbang: { 6 - [key: string]: { 7 - c?: string; // Category 8 - sc?: string; // Subcategory 9 - d: string; // Domain 10 - ad?: string; // Alternate Domain 11 - r: number; // Rank (default to 0) 12 - s: string; // Website Name 13 - t: string; // Trigger 14 - ts?: string[]; // Additional Triggers 15 - u: string; // Template URL 16 - x?: string; // Regex pattern 17 - fmt?: string[]; // Format flags 18 - skip_tests?: boolean; // Skip tests flag 19 - }; 20 - } = { 6 + [key: string]: { 7 + c?: string; // Category 8 + sc?: string; // Subcategory 9 + d: string; // Domain 10 + ad?: string; // Alternate Domain 11 + r: number; // Rank (default to 0) 12 + s: string; // Website Name 13 + t: string; // Trigger 14 + ts?: string[]; // Additional Triggers 15 + u: string; // Template URL 16 + x?: string; // Regex pattern 17 + fmt?: string[]; // Format flags 18 + skip_tests?: boolean; // Skip tests flag 19 + }; 20 + } = { 21 21 t3: { 22 22 c: "AI", 23 23 d: "www.t3.chat", ··· 45 45 t: "tiktok", 46 46 u: "https://www.tiktok.com/search?q={{{s}}}", 47 47 }, 48 + image: { 49 + c: "Online Services", 50 + d: "duckduckgo.com", 51 + r: 0, 52 + s: "Duckduckgo images", 53 + sc: "Search", 54 + t: "image", 55 + u: "https://duckduckgo.com/?q={{{s}}}&ia=images&iax=images&atb=v375-1", 56 + }, 48 57 }; 49 58 50 59 // Convert rawBangs array to hashbang object 51 60 rawBangs.forEach((bang: any) => { 52 - if (!bang.t || !bang.u || !bang.s || !bang.d) { 53 - console.warn(`Skipping invalid bang: ${JSON.stringify(bang)}`); 54 - return; 55 - } 61 + if (!bang.t || !bang.u || !bang.s || !bang.d) { 62 + console.warn(`Skipping invalid bang: ${JSON.stringify(bang)}`); 63 + return; 64 + } 56 65 57 - hashbang[bang.t] = { 58 - c: bang.c, 59 - sc: bang.sc, 60 - d: bang.d, 61 - ad: bang.ad, 62 - r: 0, // Default rank 63 - s: bang.s, 64 - t: bang.t, 65 - ts: bang.ts, 66 - u: bang.u, 67 - x: bang.x, 68 - fmt: bang.fmt, 69 - skip_tests: bang.skip_tests, 70 - }; 66 + hashbang[bang.t] = { 67 + c: bang.c, 68 + sc: bang.sc, 69 + d: bang.d, 70 + ad: bang.ad, 71 + r: 0, // Default rank 72 + s: bang.s, 73 + t: bang.t, 74 + ts: bang.ts, 75 + u: bang.u, 76 + x: bang.x, 77 + fmt: bang.fmt, 78 + skip_tests: bang.skip_tests, 79 + }; 71 80 72 - // Add additional triggers (if any) to the hashbang 73 - if (bang.ts) { 74 - bang.ts.forEach((trigger: string) => { 75 - hashbang[trigger] = { ...hashbang[bang.t], t: trigger }; 76 - }); 77 - } 81 + // Add additional triggers (if any) to the hashbang 82 + if (bang.ts) { 83 + bang.ts.forEach((trigger: string) => { 84 + hashbang[trigger] = { ...hashbang[bang.t], t: trigger }; 85 + }); 86 + } 78 87 }); 79 88 80 89 Bun.write(