diff --git a/README.md b/README.md
index 1db3fb3..79642a8 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,8 @@
-# Astro Starter Kit: Basics
+# Urlbox Towel
+
+## A towel is the most massively useful thing an interstellar hitchhiker a web developer can have
+
+Get your Twitter screen-shot on a beach towel
```sh
npm create astro@latest -- --template basics
diff --git a/db/config.ts b/db/config.ts
index bb968c4..bb76202 100644
--- a/db/config.ts
+++ b/db/config.ts
@@ -1,42 +1,13 @@
import { defineDb, defineTable, column } from "astro:db";
-const Comment = defineTable({
+const Screenshot = defineTable({
columns: {
id: column.number({ primaryKey: true }),
- author: column.text({ optional: true }),
- content: column.text({ optional: true }),
- },
-});
-
-const Playlist = defineTable({
- columns: {
- id: column.number({ primaryKey: true }),
- name: column.text(),
- description: column.text({ optional: true }),
- createdBy: column.text({ optional: true }),
- },
-});
-
-const Episode = defineTable({
- columns: {
- id: column.text({ primaryKey: true }),
- title: column.text(),
- description: column.text({ optional: true }),
- audio: column.text(),
- },
-});
-
-const PlaylistEpisode = defineTable({
- columns: {
- playlistId: column.number({
- references: () => Playlist.columns.id,
- }),
- episodeId: column.text({
- references: () => Episode.columns.id,
- }),
+ tweetUrl: column.text({ optional: false }),
+ renderUrl: column.text({ optional: true }),
},
});
export default defineDb({
- tables: { Comment, Playlist, Episode, PlaylistEpisode },
+ tables: { Screenshot },
});
diff --git a/db/seed.ts b/db/seed.ts
index 7883e6e..0e3ace3 100644
--- a/db/seed.ts
+++ b/db/seed.ts
@@ -1,75 +1,7 @@
-import { db, Comment, Playlist, Episode, PlaylistEpisode } from "astro:db";
+import { db, Screenshot } from "astro:db";
export default async function () {
- await db.insert(Comment).values([
- { author: "Queen", content: "Hope you like Astro DB!" },
- { author: "Captain", content: "Enjoy!" },
- ]);
-
- await db.insert(Playlist).values([
- {
- id: 1,
- name: "Queen's Playlist",
- description: "Hope you like Astro DB!",
- createdBy: "Queen",
- },
- { id: 2, name: "Captain's Playlist", createdBy: "Captain Ola" },
- ]);
-
- await db.insert(Episode).values([
- {
- id: "7afc54fd90c24aabb7aaae7b989828f6",
- title: "607: Astro Launches an Integrated Database",
- description:
- "
Show Description Fred K. Schott stops by to talk about Astro announcement of Astro DB. The pluses and minuses of it, and whether you have to always use the database with Astro DB. We get into how to seed your database, upgrading the database, and the almost weirdly generous pricing model.
\n" +
- `Listen on Website →
Guests Fred K. Schott Guest's Main URL • Guest's Twitter
Co-creator of Astro.
\n` +
- "Links Sponsors ",
- audio:
- "https://www.listennotes.com/e/p/7afc54fd90c24aabb7aaae7b989828f6/",
- },
- {
- id: "af0ece984ab24e01aa9ef0b914794f83",
- title: "#23 - Tailwind V4, Layoffs, Do It Anyways, Astro DB",
- description:
- "Lots has happened this week! New alpha preview of Tailwind V4, more very unexpected layoffs of great people, Jason Lengstorf kicked off the "Do It Anyways" movements, and Astro launched a database!
\n" +
- "
\n" +
- "Website: https://navbar.tech
\n" +
- "Pro Tailwind : https://www.protailwind.com/
\n" +
- "
\n" +
- "Build a Twitter Clone with the Next.js App Router and Supabase (free egghead course): https://egghead.io/courses/build-a-twitter-clone-with-the-next-js-app-router-and-supabase-19bebadb
\n" +
- "
\n" +
- "Want more NavBar? 🍔🍫
\n" +
- "🐦 Twitter - https://twitter.com/the_navbar
\n" +
- "🎥 YouTube - https://www.youtube.com/channel/UCmZK0v8TNlCbizOkbIxQwmw
\n" +
- "Enjoy these podcasts? Simon and Jon create lots of content 👇
\n" +
- "Simon
\n" +
- "🐦 Twitter - https://twitter.com/simonswiss
\n" +
- "🎥 YouTube - https://www.youtube.com/c/Simonswissdev
\n" +
- "🥚 egghead - https://egghead.io/q/resources-by-simon-vrachliotis
\n" +
- "Jon
\n" +
- "🐦 Twitter - https://twitter.com/jonmeyers_io
\n" +
- "🎥 YouTube - https://www.youtube.com/c/jonmeyers
\n" +
- "🥚 egghead - https://egghead.io/q/resources-by-jon-meyers
",
- audio:
- "https://www.listennotes.com/e/p/af0ece984ab24e01aa9ef0b914794f83/",
- },
- ]);
-
- await db.insert(PlaylistEpisode).values([
- { playlistId: 1, episodeId: "7afc54fd90c24aabb7aaae7b989828f6" },
- { playlistId: 2, episodeId: "7afc54fd90c24aabb7aaae7b989828f6" },
- { playlistId: 2, episodeId: "af0ece984ab24e01aa9ef0b914794f83" },
+ await db.insert(Screenshot).values([
+ { tweetUrl: "https://x.com/raae/status/1797182382337892473", renderUrl: "https://renders.urlbox.io/urlbox1/renders/662b9336def898573d9552ab/2024/6/6/d8e6c843-8ebc-4644-842a-d5ea49c5aead.png" },
]);
}
diff --git a/package-lock.json b/package-lock.json
index a801855..5480cf0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,15 @@
{
- "name": "mixpod-astro",
+ "name": "xtowel",
"version": "0.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "mixpod-astro",
+ "name": "xtowel",
"version": "0.0.1",
"dependencies": {
"@astrojs/check": "^0.5.4",
- "@astrojs/db": "^0.10.5",
+ "@astrojs/db": "^0.11.4",
"@astrojs/netlify": "^5.2.1",
"@astrojs/node": "^8.2.0",
"astro": "^4.4.0",
@@ -57,132 +57,73 @@
"integrity": "sha512-c74k8iGHL3DzkosSJ0tGcHIEBEiIfBhr7eadSaPyvWlVKaieDVzVs8OW1tnRSQyBsfMc8DZQ4RcN2KAcESD8UQ=="
},
"node_modules/@astrojs/db": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/@astrojs/db/-/db-0.10.5.tgz",
- "integrity": "sha512-hsHcv44FTOgTTWqg7kv6CVlRkb08o2aenkilk3n2gTgJ15czi/O/1Hh8QZfJ+TZHvOA/tcjKSYeWJMJ7x67xfg==",
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/db/-/db-0.11.4.tgz",
+ "integrity": "sha512-PuVej9DNu5ZzlRGS0NUl3iH/5BRo/eG3XRywXbHIQvA0sdI7UZSFisbpUQYJU9iKK9Bxow/FWrqfw2jwqXaC8Q==",
"dependencies": {
- "@libsql/client": "^0.5.5",
+ "@astrojs/studio": "0.1.0",
+ "@libsql/client": "^0.6.0",
"async-listen": "^3.0.1",
+ "ci-info": "^4.0.0",
"deep-diff": "^1.0.2",
- "drizzle-orm": "^0.30.4",
+ "drizzle-orm": "^0.30.10",
"github-slugger": "^2.0.0",
"kleur": "^4.1.5",
- "nanoid": "^5.0.1",
- "open": "^10.0.3",
- "ora": "^7.0.1",
+ "nanoid": "^5.0.7",
+ "open": "^10.1.0",
+ "ora": "^8.0.1",
"prompts": "^2.4.2",
"strip-ansi": "^7.1.0",
"yargs-parser": "^21.1.1",
- "zod": "^3.22.4"
+ "zod": "^3.23.8"
}
},
- "node_modules/@astrojs/db/node_modules/drizzle-orm": {
- "version": "0.30.8",
- "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.8.tgz",
- "integrity": "sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==",
- "peerDependencies": {
- "@aws-sdk/client-rds-data": ">=3",
- "@cloudflare/workers-types": ">=3",
- "@electric-sql/pglite": ">=0.1.1",
- "@libsql/client": "*",
- "@neondatabase/serverless": ">=0.1",
- "@op-engineering/op-sqlite": ">=2",
- "@opentelemetry/api": "^1.4.1",
- "@planetscale/database": ">=1",
- "@types/better-sqlite3": "*",
- "@types/pg": "*",
- "@types/react": ">=18",
- "@types/sql.js": "*",
- "@vercel/postgres": ">=0.8.0",
- "@xata.io/client": "*",
- "better-sqlite3": ">=7",
- "bun-types": "*",
- "expo-sqlite": ">=13.2.0",
- "knex": "*",
- "kysely": "*",
- "mysql2": ">=2",
- "pg": ">=8",
- "postgres": ">=3",
- "react": ">=18",
- "sql.js": ">=1",
- "sqlite3": ">=5"
+ "node_modules/@astrojs/db/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
},
- "peerDependenciesMeta": {
- "@aws-sdk/client-rds-data": {
- "optional": true
- },
- "@cloudflare/workers-types": {
- "optional": true
- },
- "@electric-sql/pglite": {
- "optional": true
- },
- "@libsql/client": {
- "optional": true
- },
- "@neondatabase/serverless": {
- "optional": true
- },
- "@op-engineering/op-sqlite": {
- "optional": true
- },
- "@opentelemetry/api": {
- "optional": true
- },
- "@planetscale/database": {
- "optional": true
- },
- "@types/better-sqlite3": {
- "optional": true
- },
- "@types/pg": {
- "optional": true
- },
- "@types/react": {
- "optional": true
- },
- "@types/sql.js": {
- "optional": true
- },
- "@vercel/postgres": {
- "optional": true
- },
- "@xata.io/client": {
- "optional": true
- },
- "better-sqlite3": {
- "optional": true
- },
- "bun-types": {
- "optional": true
- },
- "expo-sqlite": {
- "optional": true
- },
- "knex": {
- "optional": true
- },
- "kysely": {
- "optional": true
- },
- "mysql2": {
- "optional": true
- },
- "pg": {
- "optional": true
- },
- "postgres": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "sql.js": {
- "optional": true
- },
- "sqlite3": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@astrojs/db/node_modules/is-unicode-supported": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
+ "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/db/node_modules/log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/db/node_modules/log-symbols/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@astrojs/db/node_modules/nanoid": {
@@ -202,6 +143,39 @@
"node": "^18 || >=20"
}
},
+ "node_modules/@astrojs/db/node_modules/ora": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz",
+ "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/db/node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@astrojs/internal-helpers": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.2.1.tgz",
@@ -302,6 +276,97 @@
"node": ">=18.14.1"
}
},
+ "node_modules/@astrojs/studio": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/studio/-/studio-0.1.0.tgz",
+ "integrity": "sha512-pjggMFgtZHPem6RWall02DTa54VCQ4fjqj4bLV0CpQEi0ydgDlughb81PtLhpQPTV0IUtTFOnHbzx6rcKMBAzg==",
+ "dependencies": {
+ "ci-info": "^4.0.0",
+ "kleur": "^4.1.5",
+ "ora": "^8.0.1"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/is-unicode-supported": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
+ "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/log-symbols/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/ora": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz",
+ "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@astrojs/studio/node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@astrojs/telemetry": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.0.4.tgz",
@@ -1082,28 +1147,28 @@
}
},
"node_modules/@libsql/client": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.5.6.tgz",
- "integrity": "sha512-UBjmDoxz75Z2sHdP+ETCROpeLA/77VMesiff8R4UWK1rnaWbh6/YoCLDILMJL3Rh0udQeKxjL8MjXthqohax+g==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.6.2.tgz",
+ "integrity": "sha512-xRNfRLv/dOCbV4qd+M0baQwGmvuZpMd2wG2UAPs8XmcdaPvu5ErkcaeITkxlm3hDEJVabQM1cFhMBxsugWW9fQ==",
"dependencies": {
- "@libsql/core": "^0.5.6",
- "@libsql/hrana-client": "^0.5.6",
+ "@libsql/core": "^0.6.2",
+ "@libsql/hrana-client": "^0.6.0",
"js-base64": "^3.7.5",
"libsql": "^0.3.10"
}
},
"node_modules/@libsql/core": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.5.6.tgz",
- "integrity": "sha512-3vicUAydq6jPth410n4AsHHm1n2psTwvkSf94nfJlSXutGSZsl0updn2N/mJBgqUHkbuFoWZtlMifF0SwBj1xQ==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.6.2.tgz",
+ "integrity": "sha512-c2P4M+4u/4b2L02A0KjggO3UW51rGkhxr/7fzJO0fEAqsqrWGxuNj2YtRkina/oxfYvAof6xjp8RucNoIV/Odw==",
"dependencies": {
"js-base64": "^3.7.5"
}
},
"node_modules/@libsql/darwin-arm64": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.3.16.tgz",
- "integrity": "sha512-GPQGCulqknc4BnluNuBDK55wwAah9j3KCsRQPAAbz1XsGrPyWgXOyID6e6wNk4ZPXCFOdLs9OCUsJH6hT6dwlQ==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.3.18.tgz",
+ "integrity": "sha512-Zt49dt+cwhPCkuoWgvjbQd4ckNfCJR5xzIAyhgHl3CBZqZaEuaXTOGKLNQT7bnFRPuQcdLt5PBT1cenKu2N6pA==",
"cpu": [
"arm64"
],
@@ -1113,9 +1178,9 @@
]
},
"node_modules/@libsql/darwin-x64": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.3.16.tgz",
- "integrity": "sha512-SXomcHsQSw5W/g0kZsiE3qNo/r4R1FAxfXoR6PgFOiFD85r7iUm+dRBcXwqtftiUanDlbhhrENhBPY0zuLoSfA==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.3.18.tgz",
+ "integrity": "sha512-faq6HUGDaNaueeqPei5cypHaD/hhazUyfHo094CXiEeRZq6ZKtNl5PHdlr8jE/Uw8USNpVVQaLdnvSgKcpRPHw==",
"cpu": [
"x64"
],
@@ -1125,43 +1190,20 @@
]
},
"node_modules/@libsql/hrana-client": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.5.6.tgz",
- "integrity": "sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.6.2.tgz",
+ "integrity": "sha512-MWxgD7mXLNf9FXXiM0bc90wCjZSpErWKr5mGza7ERy2FJNNMXd7JIOv+DepBA1FQTIfI8TFO4/QDYgaQC0goNw==",
"dependencies": {
- "@libsql/isomorphic-fetch": "^0.1.12",
+ "@libsql/isomorphic-fetch": "^0.2.1",
"@libsql/isomorphic-ws": "^0.1.5",
"js-base64": "^3.7.5",
"node-fetch": "^3.3.2"
}
},
"node_modules/@libsql/isomorphic-fetch": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.1.12.tgz",
- "integrity": "sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==",
- "dependencies": {
- "@types/node-fetch": "^2.6.11",
- "node-fetch": "^2.7.0"
- }
- },
- "node_modules/@libsql/isomorphic-fetch/node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.2.1.tgz",
+ "integrity": "sha512-Sv07QP1Aw8A5OOrmKgRUBKe2fFhF2hpGJhtHe3d1aRnTESZCGkn//0zDycMKTGamVWb3oLYRroOsCV8Ukes9GA=="
},
"node_modules/@libsql/isomorphic-ws": {
"version": "0.1.5",
@@ -1173,9 +1215,9 @@
}
},
"node_modules/@libsql/linux-arm64-gnu": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.3.16.tgz",
- "integrity": "sha512-pvXyj0THb/y7P9mRl263ouEsQUaOPAw+dlKJZ3NDzinDImSr1JsPtgsftEAGJx2Y7qajbMAkor72uwQNj927/A==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.3.18.tgz",
+ "integrity": "sha512-5m9xtDAhoyLSV54tho9uQ2ZIDeJWc0vU3Xpe/VK4+6bpURISs23qNhXiCrZnnq3oV0hFlBfcIgQUIATmb6jD2A==",
"cpu": [
"arm64"
],
@@ -1185,9 +1227,9 @@
]
},
"node_modules/@libsql/linux-arm64-musl": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.3.16.tgz",
- "integrity": "sha512-IfNkwH1TJWnCys+1NFz8j7Hto3N5KTYuCQ/EshIhUiQSzx00aNEor+5cZMr1CCK2Vw+Pdog5zKyvWKNHqUwnyw==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.3.18.tgz",
+ "integrity": "sha512-oYD5+oM2gPEalp+EoR5DVQBRtdGjLsocjsRbQs5O2m4WOBJKER7VUfDYZHsifLGZoBSc11Yo6s9IR9rjGWy20w==",
"cpu": [
"arm64"
],
@@ -1197,9 +1239,9 @@
]
},
"node_modules/@libsql/linux-x64-gnu": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.3.16.tgz",
- "integrity": "sha512-O2OURkYa0jb2nGTjPpGWU5oTyj6DmBsB0dDCx/Y5wThpNLM5kbHRpXyyz8QdTE9PW5oM1zn9ij8kUYhgFDfCaQ==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.3.18.tgz",
+ "integrity": "sha512-QDSSP60nS8KIldGE7H3bpEflQHiL1erwED6huoVJdmDFxsyDJX2CYdWUWW8Za0ZUOvUbnEWAOyMhp6j1dBbZqw==",
"cpu": [
"x64"
],
@@ -1209,9 +1251,9 @@
]
},
"node_modules/@libsql/linux-x64-musl": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.3.16.tgz",
- "integrity": "sha512-D+4uS9HdHIAHgn3KvH9aJSJOv4Zi80ccfCFVFVbJESJ/0pdqyJVBZGzHYyuw59ol0xZAgfcxIFSriyAragbhEA==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.3.18.tgz",
+ "integrity": "sha512-5SXwTlaLCUPzxYyq+P0c7Ko7tcEjpd1X6RZKe1DuRFmJPg6f7j2+LrPEhMSIbqKcrl5ACUUAyoKmGZqNYwz23w==",
"cpu": [
"x64"
],
@@ -1221,9 +1263,9 @@
]
},
"node_modules/@libsql/win32-x64-msvc": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.3.16.tgz",
- "integrity": "sha512-/+n2ibxYs6C1GHQbmkdeCPlw7QhAJJb4XOAEzvfk069lelk8f26MHrodJJiRBBJczmwUl4HNwDjR4HT2+k9ljw==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.3.18.tgz",
+ "integrity": "sha512-9EEIHz+e8tTbx9TMkb8ByZnzxc0pYFirK1nSbqC6cFEST95fiY0NCfQ/zAzJxe90KckbjifX6BbO69eWIi3TAg==",
"cpu": [
"x64"
],
@@ -1498,16 +1540,6 @@
"@babel/types": "^7.20.7"
}
},
- "node_modules/@types/better-sqlite3": {
- "version": "7.6.9",
- "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.9.tgz",
- "integrity": "sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/debug": {
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
@@ -1563,15 +1595,6 @@
"undici-types": "~5.26.4"
}
},
- "node_modules/@types/node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
- "dependencies": {
- "@types/node": "*",
- "form-data": "^4.0.0"
- }
- },
"node_modules/@types/unist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
@@ -1891,11 +1914,6 @@
"node": ">= 14"
}
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
"node_modules/axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
@@ -1984,18 +2002,6 @@
}
]
},
- "node_modules/better-sqlite3": {
- "version": "9.4.3",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.4.3.tgz",
- "integrity": "sha512-ud0bTmD9O3uWJGuXDltyj3R47Nz0OHX8iqPOT5PMspGqlu/qQFn+5S2eFBUCrySpavTjFXbi4EgrfVvPAHlImw==",
- "hasInstallScript": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "bindings": "^1.5.0",
- "prebuild-install": "^7.1.1"
- }
- },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -2004,16 +2010,6 @@
"node": ">=8"
}
},
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
"node_modules/bl": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
@@ -2472,17 +2468,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"optional": true
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -2636,14 +2621,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -2729,6 +2706,115 @@
"url": "https://dotenvx.com"
}
},
+ "node_modules/drizzle-orm": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.10.tgz",
+ "integrity": "sha512-IRy/QmMWw9lAQHpwbUh1b8fcn27S/a9zMIzqea1WNOxK9/4EB8gIo+FZWLiPXzl2n9ixGSv8BhsLZiOppWEwBw==",
+ "peerDependencies": {
+ "@aws-sdk/client-rds-data": ">=3",
+ "@cloudflare/workers-types": ">=3",
+ "@electric-sql/pglite": ">=0.1.1",
+ "@libsql/client": "*",
+ "@neondatabase/serverless": ">=0.1",
+ "@op-engineering/op-sqlite": ">=2",
+ "@opentelemetry/api": "^1.4.1",
+ "@planetscale/database": ">=1",
+ "@types/better-sqlite3": "*",
+ "@types/pg": "*",
+ "@types/react": ">=18",
+ "@types/sql.js": "*",
+ "@vercel/postgres": ">=0.8.0",
+ "@xata.io/client": "*",
+ "better-sqlite3": ">=7",
+ "bun-types": "*",
+ "expo-sqlite": ">=13.2.0",
+ "knex": "*",
+ "kysely": "*",
+ "mysql2": ">=2",
+ "pg": ">=8",
+ "postgres": ">=3",
+ "react": ">=18",
+ "sql.js": ">=1",
+ "sqlite3": ">=5"
+ },
+ "peerDependenciesMeta": {
+ "@aws-sdk/client-rds-data": {
+ "optional": true
+ },
+ "@cloudflare/workers-types": {
+ "optional": true
+ },
+ "@electric-sql/pglite": {
+ "optional": true
+ },
+ "@libsql/client": {
+ "optional": true
+ },
+ "@neondatabase/serverless": {
+ "optional": true
+ },
+ "@op-engineering/op-sqlite": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@planetscale/database": {
+ "optional": true
+ },
+ "@types/better-sqlite3": {
+ "optional": true
+ },
+ "@types/pg": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ },
+ "@types/sql.js": {
+ "optional": true
+ },
+ "@vercel/postgres": {
+ "optional": true
+ },
+ "@xata.io/client": {
+ "optional": true
+ },
+ "better-sqlite3": {
+ "optional": true
+ },
+ "bun-types": {
+ "optional": true
+ },
+ "expo-sqlite": {
+ "optional": true
+ },
+ "knex": {
+ "optional": true
+ },
+ "kysely": {
+ "optional": true
+ },
+ "mysql2": {
+ "optional": true
+ },
+ "pg": {
+ "optional": true
+ },
+ "postgres": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "sql.js": {
+ "optional": true
+ },
+ "sqlite3": {
+ "optional": true
+ }
+ }
+ },
"node_modules/dset": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz",
@@ -2988,13 +3074,6 @@
"node": "^12.20 || >= 14.13"
}
},
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "optional": true,
- "peer": true
- },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -3057,19 +3136,6 @@
}
}
},
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
@@ -3716,9 +3782,9 @@
}
},
"node_modules/libsql": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.3.16.tgz",
- "integrity": "sha512-pIv3hP+W0bHTyjg56H5O3D45RP1BGcs0jnSOCk8PQ41nlPpVG3+sG9AG9Vc2NcnvFKuL02gGPFLzvbBe8AQjgg==",
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.3.18.tgz",
+ "integrity": "sha512-lvhKr7WV3NLWRbXkjn/MeKqXOAqWKU0PX9QYrvDh7fneukapj+iUQ4qgJASrQyxcCrEsClXCQiiK5W6OoYPAlA==",
"cpu": [
"x64",
"arm64",
@@ -3735,13 +3801,13 @@
"libsql": "^0.3.15"
},
"optionalDependencies": {
- "@libsql/darwin-arm64": "0.3.16",
- "@libsql/darwin-x64": "0.3.16",
- "@libsql/linux-arm64-gnu": "0.3.16",
- "@libsql/linux-arm64-musl": "0.3.16",
- "@libsql/linux-x64-gnu": "0.3.16",
- "@libsql/linux-x64-musl": "0.3.16",
- "@libsql/win32-x64-msvc": "0.3.16"
+ "@libsql/darwin-arm64": "0.3.18",
+ "@libsql/darwin-x64": "0.3.18",
+ "@libsql/linux-arm64-gnu": "0.3.18",
+ "@libsql/linux-arm64-musl": "0.3.18",
+ "@libsql/linux-x64-gnu": "0.3.18",
+ "@libsql/linux-x64-musl": "0.3.18",
+ "@libsql/win32-x64-msvc": "0.3.18"
}
},
"node_modules/load-yaml-file": {
@@ -4647,25 +4713,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/mimic-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
@@ -6583,11 +6630,6 @@
"node": ">=0.6"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
"node_modules/trim-lines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -7160,20 +7202,6 @@
"node": ">= 8"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -7298,9 +7326,9 @@
"optional": true
},
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"engines": {
"node": ">=10.0.0"
},
@@ -7404,9 +7432,9 @@
}
},
"node_modules/zod": {
- "version": "3.22.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
- "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package.json b/package.json
index ef5bd42..ab804ff 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "mixpod-astro",
+ "name": "xtowel",
"type": "module",
"version": "0.0.1",
"scripts": {
@@ -13,7 +13,7 @@
},
"dependencies": {
"@astrojs/check": "^0.5.4",
- "@astrojs/db": "^0.10.5",
+ "@astrojs/db": "^0.11.4",
"@astrojs/netlify": "^5.2.1",
"@astrojs/node": "^8.2.0",
"astro": "^4.4.0",
diff --git a/public/assets/background-mid-1.png b/public/assets/background-mid-1.png
new file mode 100644
index 0000000..16a7f7a
Binary files /dev/null and b/public/assets/background-mid-1.png differ
diff --git a/public/assets/background-mid-orange.png b/public/assets/background-mid-orange.png
deleted file mode 100644
index bf84d22..0000000
Binary files a/public/assets/background-mid-orange.png and /dev/null differ
diff --git a/public/assets/background-top.png b/public/assets/background-top.png
index 37294e5..54bad7d 100644
Binary files a/public/assets/background-top.png and b/public/assets/background-top.png differ
diff --git a/src/components/Comment.astro b/src/components/Comment.astro
deleted file mode 100644
index 94d0eb0..0000000
--- a/src/components/Comment.astro
+++ /dev/null
@@ -1,15 +0,0 @@
----
-interface Props {
- comment: { author: string | null; content: string | null };
-}
-const { comment } = Astro.props;
----
-
-
-
- {comment.content}
-
-
-
diff --git a/src/components/CommentForm.astro b/src/components/CommentForm.astro
deleted file mode 100644
index 37332c1..0000000
--- a/src/components/CommentForm.astro
+++ /dev/null
@@ -1,43 +0,0 @@
----
-
----
-
-
-
-
diff --git a/src/components/PlaylistForm.astro b/src/components/PlaylistForm.astro
deleted file mode 100644
index 895041f..0000000
--- a/src/components/PlaylistForm.astro
+++ /dev/null
@@ -1,64 +0,0 @@
----
-import type { Playlist } from "../models/types";
-
-interface Props {
- playlist?: Playlist;
-}
-
-const { playlist } = Astro.props;
----
-
-
- Name of playlist
-
-
- Description
- {playlist?.description}
-
- Created by
-
-
-
- Reset
- Save
-
-
-
-
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index db71ced..5991303 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -12,7 +12,7 @@ const pathname = new URL(Astro.request.url).pathname;
const navItems = [];
if (nav === "minimal" || nav === "full") {
- navItems.push({ path: "/", label: "👈 MixPod" });
+ navItems.push({ path: "/", label: "👈 Home" });
}
if (nav === "full") {
@@ -90,13 +90,13 @@ if (typeof nav === "object") {
background-color: floralwhite;
background-image: url("/assets/background-top.png"),
url("/assets/background-bottom.png"),
- url("/assets/background-mid-orange.png");
+ url("/assets/background-mid-1.png");
background-position:
top center,
bottom center,
- center center;
+ center right;
background-repeat: no-repeat, no-repeat, repeat-y;
- background-size: 100vw auto;
+ /* background-size: 100vw auto; */
min-height: 100vh;
}
diff --git a/src/pages/404.astro b/src/pages/404.astro
index ae3e79d..7394a22 100644
--- a/src/pages/404.astro
+++ b/src/pages/404.astro
@@ -2,8 +2,9 @@
import Layout from "../layouts/Layout.astro";
---
-
+
+ A towel is the most massively useful thing an interstellar hitchhiker and web developer can have, but you've lost yours...
diff --git a/src/pages/[playlistId]/edit.astro b/src/pages/[playlistId]/edit.astro
deleted file mode 100644
index bcff214..0000000
--- a/src/pages/[playlistId]/edit.astro
+++ /dev/null
@@ -1,62 +0,0 @@
----
-import { db, Playlist, eq } from "astro:db";
-
-import Layout from "../../layouts/Layout.astro";
-import PlaylistForm from "../../components/PlaylistForm.astro";
-
-const { playlistId: playlistIdParam = "" } = Astro.params;
-const playlistId = parseInt(playlistIdParam);
-
-const playlists = await db
- .select()
- .from(Playlist)
- .where(eq(Playlist.id, playlistId));
-
-const playlist = playlists[0];
-
-if (!playlist) return Astro.redirect("/404");
-
-if (Astro.request.method === "POST") {
- const data = await Astro.request.formData();
-
- await db
- .update(Playlist)
- .set({
- name: data.get("name") as string,
- description: data.get("description") as string,
- createdBy: data.get("created-by") as string,
- })
- .where(eq(Playlist.id, playlistId));
-
- return Astro.redirect(`/${playlistId}`);
-}
----
-
-
-
-
-
- Edit MixPod Details
- ❌
-
-
-
-
-
-
-
diff --git a/src/pages/[playlistId]/index.astro b/src/pages/[playlistId]/index.astro
deleted file mode 100644
index b9c314c..0000000
--- a/src/pages/[playlistId]/index.astro
+++ /dev/null
@@ -1,109 +0,0 @@
----
-import { db, Playlist, Episode, PlaylistEpisode, eq } from "astro:db";
-
-import Layout from "../../layouts/Layout.astro";
-
-const query = Astro.url.searchParams.get("q");
-const { playlistId: playlistIdParam = "" } = Astro.params;
-const playlistId = parseInt(playlistIdParam);
-
-const playlists = await db
- .select()
- .from(Playlist)
- .where(eq(Playlist.id, playlistId));
-
-const playlist = playlists[0];
-
-if (!playlist) return Astro.redirect("/404");
-
-const playlistEpisodes = await db
- .select({ episode: Episode })
- .from(PlaylistEpisode)
- .innerJoin(Episode, eq(Episode.id, PlaylistEpisode.episodeId))
- .where(eq(PlaylistEpisode.playlistId, playlistId));
-
-console.log(playlistEpisodes);
----
-
-
-
-
-
- {playlist?.name}
-
- 📝
-
-
- Public MixPod
-
- {playlist?.description}
- {playlist?.createdBy}
-
-
-
-
-
-
diff --git a/src/pages/[playlistId]/search.astro b/src/pages/[playlistId]/search.astro
deleted file mode 100644
index 44cf1b4..0000000
--- a/src/pages/[playlistId]/search.astro
+++ /dev/null
@@ -1,166 +0,0 @@
----
-import { db, Playlist, Episode, PlaylistEpisode, eq } from "astro:db";
-import Layout from "../../layouts/Layout.astro";
-import { Client } from "podcast-api";
-
-interface EpisodeSearchResult {
- id: string;
- image: string;
- audio: string;
- title_highlighted: string;
- description_highlighted: string;
- podcast: {
- title_highlighted: string;
- };
-}
-
-const query = Astro.url.searchParams.get("q");
-const { playlistId: playlistIdParam = "" } = Astro.params;
-const playlistId = parseInt(playlistIdParam);
-
-const playlists = await db
- .select()
- .from(Playlist)
- .where(eq(Playlist.id, playlistId));
-
-const playlist = playlists[0];
-
-if (!playlist) return Astro.redirect("/404");
-if (!query) return Astro.redirect(`/${playlistId}/`);
-
-const playlistEpisodes = await db
- .select({ episodeId: Episode.id })
- .from(PlaylistEpisode)
- .innerJoin(Episode, eq(Episode.id, PlaylistEpisode.episodeId))
- .where(eq(PlaylistEpisode.playlistId, playlistId));
-
-const episodeIds = playlistEpisodes.map(({ episodeId }) => episodeId);
-
-// If apiKey is null, then we will connect to a mock server
-// that returns fake data for testing purposes.
-const podcastApi = Client({ apiKey: import.meta.env.LISTEN_NOTES_API_KEY });
-
-let results: EpisodeSearchResult[] = [];
-
-if (query) {
- const response = await podcastApi.search({
- q: query,
- type: "episode",
- page_size: 10,
- });
-
- results = response.data.results;
-}
-
-if (Astro.request.method === "POST") {
- const formData = await Astro.request.formData();
- const episodeId = formData.get("episodeId");
-
- if (episodeId && playlistId) {
- const { data: fetchedData } = await podcastApi.fetchEpisodeById({
- id: episodeId,
- });
-
- const episodeData = {
- title: fetchedData.title as string,
- description: fetchedData.description as string,
- audio: fetchedData.audio as string,
- };
-
- await db.batch([
- db
- .insert(Episode)
- .values({ id: fetchedData.id as string, ...episodeData })
- .onConflictDoUpdate({ target: Episode.id, set: episodeData }),
- db
- .insert(PlaylistEpisode)
- .values({
- playlistId: playlistId,
- episodeId: fetchedData.id as string,
- })
- .onConflictDoNothing(),
- ]);
-
- return Astro.redirect(`/${playlistId}/?q=${query}`);
- }
-}
----
-
-
-
-
- {query}
- Search results for
-
-
-
- {
- results.map((result) => {
- return (
-
-
-
- {result.podcast.title_highlighted}
-
-
-
-
-
-
- {episodeIds?.includes(result.id)
- ? "Alredy added"
- : "Add to your MixPod"}
-
-
-
-
-
-
-
- );
- })
- }
-
-
-
-
-
diff --git a/src/pages/about.astro b/src/pages/about.astro
index 9406bb8..202557a 100644
--- a/src/pages/about.astro
+++ b/src/pages/about.astro
@@ -3,23 +3,18 @@ import Layout from "../layouts/Layout.astro";
import SignUp from "../components/SignUp.astro";
const streams = [
- "vIJeL9Mu31I?",
- "2KWprkl0CVo",
- "ES_ZDVQfngo",
- "UiG7S8pDk4E",
- "SQ8URCwbW5g",
- "ZWhzBS0PJQg",
+ "oslrnHwClx8",
+ "LzSyS7UQFXQ",
];
---
-
+
- About MixPod
+ About Twowels, TwitterTowels, XTowe, Towelie?!?!
- MixPod is an exploration of what can be done with no client-side
- javascript and open web standards such as RSS.
+ Twowels, TwitterTowels, XTowe, Towelie?!?! is an exploration of what can be done with screenshot API Urlbox.
@@ -30,12 +25,11 @@ const streams = [
VIDEO
- every other Saturday at 11:00 CET
@@ -55,13 +49,6 @@ const streams = [
Captain Ola @OlaHolstVea
- The Pirate Princess
-
- Ruler of the chat: AK @ja_gatka
-
@@ -69,7 +56,7 @@ const streams = [
Past voyages
{
- streams.map((stream) => (
+ streams.slice(1).map((stream) => (
VIDEO
- MixPod
- Curate podcast episodes into new shareable podcast feeds!
+ Twowels, TwitterTowels, XTowe, Towelie?!?!
+ A towel is the most massively useful thing an interstellar hitchhiker a web developer can have!
- Create a MixPod
+ Create an Xtowel
diff --git a/src/pages/new.astro b/src/pages/new.astro
index bbff084..f2de5c5 100644
--- a/src/pages/new.astro
+++ b/src/pages/new.astro
@@ -1,30 +1,9 @@
---
-import { db, Playlist } from "astro:db";
+import { db } from "astro:db";
-import {
- uniqueNamesGenerator,
- adjectives,
- colors,
- animals,
-} from "unique-names-generator";
-import type { Config } from "unique-names-generator";
if (Astro.request.method === "POST") {
console.log("POST request received");
- const customConfig: Config = {
- dictionaries: [adjectives, colors, animals],
- separator: " ",
- length: 3,
- };
- const randomName: string = uniqueNamesGenerator(customConfig);
- const playlistData = { name: `My new ${randomName} MixPod` };
-
- const response = await db.insert(Playlist).values(playlistData);
- const playlistId = response.lastInsertRowid;
-
- if (playlistId) {
- return Astro.redirect(`/${playlistId}`);
- }
}
return Astro.redirect(`/`);
diff --git a/src/pages/tinystack.astro b/src/pages/tinystack.astro
index 1f18a73..ae3b465 100644
--- a/src/pages/tinystack.astro
+++ b/src/pages/tinystack.astro
@@ -1,4 +1,4 @@
----
+