import { readFileSync } from "fs"; // wrangler d1 execute paintings --remote --json --command "SELECT id, data FROM Paintings ORDER BY id DESC LIMIT 1" > result.json // id = 533 const data: number[] = JSON.parse(readFileSync("result.json", "utf-8"))[0].results[0].data; // 6 color palette, so group pixels and interpret as base 6 const base6 = (data: number[]) => data.reduce((acc, n) => acc * 6 + n, 0); const toChar = (v: number) => (v <= 25 ? String.fromCharCode(v + 97) : ' '); const chunks = Array.from({ length: data.length / 2 }, (_, i) => data.slice(i * 2, i * 2 + 2), ).slice(0, 24); // slice off the 00 at the end (except for one) console.log("chunks:", chunks); const values = chunks.map(base6); console.log("values:", values) const chars = values.map(toChar); const decoded = chars.join(""); console.log("decoded:", decoded) /* chunks: [ [ 1, 2 ], [ 4, 3 ], [ 3, 1 ], [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 1, 4 ], [ 4, 3 ], [ 4, 0 ], [ 2, 2 ], [ 3, 2 ], [ 2, 5 ], [ 0, 4 ], [ 4, 3 ], [ 0, 2 ], [ 3, 2 ], [ 3, 1 ], [ 0, 4 ], [ 4, 3 ], [ 0, 0 ], [ 3, 3 ], [ 1, 2 ], [ 3, 3 ], [ 0, 0 ] ] values: [ 8, 27, 19, 7, 8, 13, 10, 27, 24, 14, 20, 17, 4, 27, 2, 20, 19, 4, 27, 0, 21, 8, 21, 0 ] decoded: i think youre cute aviva */