switch back from drizzle to astro db for Now
This commit is contained in:
parent
bd2c535cee
commit
3d30f55e72
@ -1,6 +1,7 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
import { defineConfig, envField } from 'astro/config';
|
import { defineConfig, envField } from 'astro/config';
|
||||||
import { modifiedTime } from './src/utils/lastModified.mjs';
|
import { modifiedTime } from './src/utils/lastModified.mjs';
|
||||||
|
import db from "@astrojs/db";
|
||||||
import mdx from "@astrojs/mdx";
|
import mdx from "@astrojs/mdx";
|
||||||
import node from "@astrojs/node";
|
import node from "@astrojs/node";
|
||||||
import devOnlyRoutes from '@fujocoded/astro-dev-only';
|
import devOnlyRoutes from '@fujocoded/astro-dev-only';
|
||||||
@ -14,6 +15,7 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
integrations: [
|
integrations: [
|
||||||
mdx(),
|
mdx(),
|
||||||
|
db(),
|
||||||
devOnlyRoutes({
|
devOnlyRoutes({
|
||||||
// dryRun: true,
|
// dryRun: true,
|
||||||
routePatterns: ["/guestbook/admin"]
|
routePatterns: ["/guestbook/admin"]
|
||||||
|
|||||||
19
db/config.ts
Normal file
19
db/config.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { column, defineDb, defineTable, NOW } from 'astro:db';
|
||||||
|
|
||||||
|
const Guestbook = defineTable({
|
||||||
|
columns: {
|
||||||
|
id: column.number({ primaryKey: true }),
|
||||||
|
username: column.text(),
|
||||||
|
website: column.text({ optional: true }),
|
||||||
|
message: column.text(),
|
||||||
|
published: column.date({ default: NOW }),
|
||||||
|
updated: column.date({ optional: true }),
|
||||||
|
reply: column.text({ optional: true }),
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default defineDb({
|
||||||
|
tables: {
|
||||||
|
Guestbook,
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -1,9 +0,0 @@
|
|||||||
import { db } from "db";
|
|
||||||
import { guestbookTable } from "./schema";
|
|
||||||
|
|
||||||
export default async function seed() {
|
|
||||||
await db.insert(guestbookTable).values([
|
|
||||||
{ id: 1, username: "test user", message: "this is a message!" },
|
|
||||||
{ id: 2, username: "heylo", website: "https://world.org", message: "hiii!!" },
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
import { loadEnv } from "vite";
|
|
||||||
import { defineConfig } from 'drizzle-kit';
|
|
||||||
|
|
||||||
const { ASTRO_DB_REMOTE_URL } = loadEnv(process.env.NODE_ENV!, process.cwd(), "");
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
out: "./db/migrations",
|
|
||||||
schema: "./db/schema.ts",
|
|
||||||
dialect: "turso",
|
|
||||||
dbCredentials: {
|
|
||||||
url: ASTRO_DB_REMOTE_URL,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
BIN
guestbook.db
BIN
guestbook.db
Binary file not shown.
@ -9,20 +9,18 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@astrojs/db": "^0.18.3",
|
||||||
"@astrojs/mdx": "^4.3.12",
|
"@astrojs/mdx": "^4.3.12",
|
||||||
"@astrojs/node": "9.5.1",
|
"@astrojs/node": "9.5.1",
|
||||||
"@astrojs/rss": "4.0.14",
|
"@astrojs/rss": "4.0.14",
|
||||||
"@fujocoded/astro-dev-only": "0.0.4",
|
"@fujocoded/astro-dev-only": "0.0.4",
|
||||||
"@libsql/client": "^0.15.15",
|
|
||||||
"astro": "5.16.0",
|
"astro": "5.16.0",
|
||||||
"astro-breadcrumbs": "^3.3.1",
|
"astro-breadcrumbs": "^3.3.1",
|
||||||
"dayjs": "^1.11.19",
|
"dayjs": "^1.11.19",
|
||||||
"drizzle-orm": "^0.44.7",
|
|
||||||
"isomorphic-dompurify": "^2.33.0",
|
"isomorphic-dompurify": "^2.33.0",
|
||||||
"marked": "^16.4.2"
|
"marked": "^16.4.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.19.1",
|
"@types/node": "^22.19.1"
|
||||||
"drizzle-kit": "^0.31.7"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
278
pnpm-lock.yaml
generated
278
pnpm-lock.yaml
generated
@ -11,6 +11,9 @@ importers:
|
|||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@astrojs/db':
|
||||||
|
specifier: ^0.18.3
|
||||||
|
version: 0.18.3
|
||||||
'@astrojs/mdx':
|
'@astrojs/mdx':
|
||||||
specifier: ^4.3.12
|
specifier: ^4.3.12
|
||||||
version: 4.3.12(astro@5.16.0(@types/node@22.19.1)(rollup@4.53.3)(typescript@5.9.2))
|
version: 4.3.12(astro@5.16.0(@types/node@22.19.1)(rollup@4.53.3)(typescript@5.9.2))
|
||||||
@ -23,9 +26,6 @@ importers:
|
|||||||
'@fujocoded/astro-dev-only':
|
'@fujocoded/astro-dev-only':
|
||||||
specifier: 0.0.4
|
specifier: 0.0.4
|
||||||
version: 0.0.4
|
version: 0.0.4
|
||||||
'@libsql/client':
|
|
||||||
specifier: ^0.15.15
|
|
||||||
version: 0.15.15
|
|
||||||
astro:
|
astro:
|
||||||
specifier: 5.16.0
|
specifier: 5.16.0
|
||||||
version: 5.16.0(@types/node@22.19.1)(rollup@4.53.3)(typescript@5.9.2)
|
version: 5.16.0(@types/node@22.19.1)(rollup@4.53.3)(typescript@5.9.2)
|
||||||
@ -35,9 +35,6 @@ importers:
|
|||||||
dayjs:
|
dayjs:
|
||||||
specifier: ^1.11.19
|
specifier: ^1.11.19
|
||||||
version: 1.11.19
|
version: 1.11.19
|
||||||
drizzle-orm:
|
|
||||||
specifier: ^0.44.7
|
|
||||||
version: 0.44.7(@libsql/client@0.15.15)
|
|
||||||
isomorphic-dompurify:
|
isomorphic-dompurify:
|
||||||
specifier: ^2.33.0
|
specifier: ^2.33.0
|
||||||
version: 2.33.0
|
version: 2.33.0
|
||||||
@ -48,9 +45,6 @@ importers:
|
|||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.19.1
|
specifier: ^22.19.1
|
||||||
version: 22.19.1
|
version: 22.19.1
|
||||||
drizzle-kit:
|
|
||||||
specifier: ^0.31.7
|
|
||||||
version: 0.31.7
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@ -60,8 +54,8 @@ packages:
|
|||||||
'@asamuzakjp/css-color@4.1.0':
|
'@asamuzakjp/css-color@4.1.0':
|
||||||
resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==}
|
resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==}
|
||||||
|
|
||||||
'@asamuzakjp/dom-selector@6.7.4':
|
'@asamuzakjp/dom-selector@6.7.5':
|
||||||
resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==}
|
resolution: {integrity: sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==}
|
||||||
|
|
||||||
'@asamuzakjp/nwsapi@2.3.9':
|
'@asamuzakjp/nwsapi@2.3.9':
|
||||||
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
|
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
|
||||||
@ -69,6 +63,9 @@ packages:
|
|||||||
'@astrojs/compiler@2.13.0':
|
'@astrojs/compiler@2.13.0':
|
||||||
resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==}
|
resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==}
|
||||||
|
|
||||||
|
'@astrojs/db@0.18.3':
|
||||||
|
resolution: {integrity: sha512-iTK50jUgyj25oa/JiXSN1/IVp5kTmPuioLlve06LE8/HzWGv3JpVgCKIV9HHf3kOVi1HV/uauXnyWzkB+yHLSQ==}
|
||||||
|
|
||||||
'@astrojs/internal-helpers@0.7.5':
|
'@astrojs/internal-helpers@0.7.5':
|
||||||
resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==}
|
resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==}
|
||||||
|
|
||||||
@ -142,28 +139,17 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@csstools/css-tokenizer': ^3.0.4
|
'@csstools/css-tokenizer': ^3.0.4
|
||||||
|
|
||||||
'@csstools/css-syntax-patches-for-csstree@1.0.17':
|
'@csstools/css-syntax-patches-for-csstree@1.0.20':
|
||||||
resolution: {integrity: sha512-LCC++2h8pLUSPY+EsZmrrJ1EOUu+5iClpEiDhhdw3zRJpPbABML/N5lmRuBHjxtKm9VnRcsUzioyD0sekFMF0A==}
|
resolution: {integrity: sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
'@csstools/css-tokenizer@3.0.4':
|
'@csstools/css-tokenizer@3.0.4':
|
||||||
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
|
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
'@drizzle-team/brocli@0.10.2':
|
|
||||||
resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}
|
|
||||||
|
|
||||||
'@emnapi/runtime@1.7.1':
|
'@emnapi/runtime@1.7.1':
|
||||||
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
|
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
|
||||||
|
|
||||||
'@esbuild-kit/core-utils@3.3.2':
|
|
||||||
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
|
|
||||||
deprecated: 'Merged into tsx: https://tsx.is'
|
|
||||||
|
|
||||||
'@esbuild-kit/esm-loader@2.6.5':
|
|
||||||
resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
|
|
||||||
deprecated: 'Merged into tsx: https://tsx.is'
|
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.25.12':
|
'@esbuild/aix-ppc64@0.25.12':
|
||||||
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
|
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@ -652,23 +638,23 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@shikijs/core@3.15.0':
|
'@shikijs/core@3.17.1':
|
||||||
resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==}
|
resolution: {integrity: sha512-VWsduykcibGU0WMi66PflThDWyqEeTOiWdCRa3wmsZuishh+1PDSOh5gGxHdSrOtS+v1pmYaxodk/JNzwusElA==}
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.15.0':
|
'@shikijs/engine-javascript@3.17.1':
|
||||||
resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==}
|
resolution: {integrity: sha512-Ars0DVJITQrkOl5Swwy+94NL/BlOi/w1NSFbPGkcsln7Dv+M2qHaVpNHwdtWCC4/arzvjuHbyWBUsWExDHPDLw==}
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.15.0':
|
'@shikijs/engine-oniguruma@3.17.1':
|
||||||
resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==}
|
resolution: {integrity: sha512-fsXPy4va/4iblEGS+22nP5V08IwwBcM+8xHUzSON0QmHm29/AJRghA95w9VDnxuwp9wOdJxEhfPkKp6vqcsN+w==}
|
||||||
|
|
||||||
'@shikijs/langs@3.15.0':
|
'@shikijs/langs@3.17.1':
|
||||||
resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==}
|
resolution: {integrity: sha512-YTBVN+L2j7zBuOVjNZ2XiSNQEkm/7wZ1TSc5UO77GJPcg7Rk25WSscWA7y8pW7Bo25JIU0EWchUkq/UQjOJlJA==}
|
||||||
|
|
||||||
'@shikijs/themes@3.15.0':
|
'@shikijs/themes@3.17.1':
|
||||||
resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==}
|
resolution: {integrity: sha512-aohwwqNUB5h2ATfgrqYRPl8vyazqCiQ2wIV4xq+UzaBRHpqLMGSemkasK+vIEpl0YaendoaKUsDfpwhCqyHIaQ==}
|
||||||
|
|
||||||
'@shikijs/types@3.15.0':
|
'@shikijs/types@3.17.1':
|
||||||
resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==}
|
resolution: {integrity: sha512-yUFLiCnZHHJ16KbVbt3B1EzBUadU3OVpq0PEyb301m5BbuFKApQYBzJGhrK48hH/tYWSjzwcj7BSmYbBc0zntQ==}
|
||||||
|
|
||||||
'@shikijs/vscode-textmate@10.0.2':
|
'@shikijs/vscode-textmate@10.0.2':
|
||||||
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
|
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
|
||||||
@ -804,9 +790,6 @@ packages:
|
|||||||
brotli@1.3.3:
|
brotli@1.3.3:
|
||||||
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
|
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
|
||||||
|
|
||||||
buffer-from@1.1.2:
|
|
||||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
|
||||||
|
|
||||||
camelcase@8.0.0:
|
camelcase@8.0.0:
|
||||||
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
|
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
@ -866,8 +849,8 @@ packages:
|
|||||||
cookie-es@1.2.2:
|
cookie-es@1.2.2:
|
||||||
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
|
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
|
||||||
|
|
||||||
cookie@1.0.2:
|
cookie@1.1.1:
|
||||||
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
|
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
crossws@0.3.5:
|
crossws@0.3.5:
|
||||||
@ -927,6 +910,9 @@ packages:
|
|||||||
decode-named-character-reference@1.2.0:
|
decode-named-character-reference@1.2.0:
|
||||||
resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
|
resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
|
||||||
|
|
||||||
|
deep-diff@1.0.2:
|
||||||
|
resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==}
|
||||||
|
|
||||||
defu@6.1.4:
|
defu@6.1.4:
|
||||||
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
|
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
|
||||||
|
|
||||||
@ -985,12 +971,8 @@ packages:
|
|||||||
domutils@3.2.2:
|
domutils@3.2.2:
|
||||||
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
|
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
|
||||||
|
|
||||||
drizzle-kit@0.31.7:
|
drizzle-orm@0.42.0:
|
||||||
resolution: {integrity: sha512-hOzRGSdyKIU4FcTSFYGKdXEjFsncVwHZ43gY3WU5Bz9j5Iadp6Rh6hxLSQ1IWXpKLBKt/d5y1cpSPcV+FcoQ1A==}
|
resolution: {integrity: sha512-pS8nNJm2kBNZwrOjTHJfdKkaU+KuUQmV/vk5D57NojDq4FG+0uAYGMulXtYT///HfgsMF0hnFFvu1ezI3OwOkg==}
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
drizzle-orm@0.44.7:
|
|
||||||
resolution: {integrity: sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==}
|
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@aws-sdk/client-rds-data': '>=3'
|
'@aws-sdk/client-rds-data': '>=3'
|
||||||
'@cloudflare/workers-types': '>=4'
|
'@cloudflare/workers-types': '>=4'
|
||||||
@ -1006,7 +988,6 @@ packages:
|
|||||||
'@types/better-sqlite3': '*'
|
'@types/better-sqlite3': '*'
|
||||||
'@types/pg': '*'
|
'@types/pg': '*'
|
||||||
'@types/sql.js': '*'
|
'@types/sql.js': '*'
|
||||||
'@upstash/redis': '>=1.34.7'
|
|
||||||
'@vercel/postgres': '>=0.8.0'
|
'@vercel/postgres': '>=0.8.0'
|
||||||
'@xata.io/client': '*'
|
'@xata.io/client': '*'
|
||||||
better-sqlite3: '>=7'
|
better-sqlite3: '>=7'
|
||||||
@ -1050,8 +1031,6 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
'@types/sql.js':
|
'@types/sql.js':
|
||||||
optional: true
|
optional: true
|
||||||
'@upstash/redis':
|
|
||||||
optional: true
|
|
||||||
'@vercel/postgres':
|
'@vercel/postgres':
|
||||||
optional: true
|
optional: true
|
||||||
'@xata.io/client':
|
'@xata.io/client':
|
||||||
@ -1115,11 +1094,6 @@ packages:
|
|||||||
esast-util-from-js@2.0.1:
|
esast-util-from-js@2.0.1:
|
||||||
resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
|
resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
|
||||||
|
|
||||||
esbuild-register@3.6.0:
|
|
||||||
resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
|
|
||||||
peerDependencies:
|
|
||||||
esbuild: '>=0.25.0'
|
|
||||||
|
|
||||||
esbuild@0.25.12:
|
esbuild@0.25.12:
|
||||||
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
|
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@ -1213,9 +1187,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
|
resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
get-tsconfig@4.13.0:
|
|
||||||
resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
|
|
||||||
|
|
||||||
github-slugger@2.0.0:
|
github-slugger@2.0.0:
|
||||||
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
|
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
|
||||||
|
|
||||||
@ -1371,8 +1342,8 @@ packages:
|
|||||||
lru-cache@10.4.3:
|
lru-cache@10.4.3:
|
||||||
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
||||||
|
|
||||||
lru-cache@11.2.2:
|
lru-cache@11.2.4:
|
||||||
resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==}
|
resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
|
||||||
engines: {node: 20 || >=22}
|
engines: {node: 20 || >=22}
|
||||||
|
|
||||||
magic-string@0.30.21:
|
magic-string@0.30.21:
|
||||||
@ -1435,8 +1406,8 @@ packages:
|
|||||||
mdast-util-phrasing@4.1.0:
|
mdast-util-phrasing@4.1.0:
|
||||||
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
|
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
|
||||||
|
|
||||||
mdast-util-to-hast@13.2.0:
|
mdast-util-to-hast@13.2.1:
|
||||||
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
|
resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
|
||||||
|
|
||||||
mdast-util-to-markdown@2.1.2:
|
mdast-util-to-markdown@2.1.2:
|
||||||
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
|
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
|
||||||
@ -1575,6 +1546,11 @@ packages:
|
|||||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
nanoid@5.1.6:
|
||||||
|
resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
|
||||||
|
engines: {node: ^18 || >=20}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
neotraverse@0.6.18:
|
neotraverse@0.6.18:
|
||||||
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
|
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
@ -1632,8 +1608,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
|
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
|
||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
|
|
||||||
package-manager-detector@1.5.0:
|
package-manager-detector@1.6.0:
|
||||||
resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
|
resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==}
|
||||||
|
|
||||||
pako@0.2.9:
|
pako@0.2.9:
|
||||||
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
|
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
|
||||||
@ -1761,9 +1737,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
resolve-pkg-maps@1.0.0:
|
|
||||||
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
|
||||||
|
|
||||||
restructure@3.0.2:
|
restructure@3.0.2:
|
||||||
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
|
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
|
||||||
|
|
||||||
@ -1813,8 +1786,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
|
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
|
|
||||||
shiki@3.15.0:
|
shiki@3.17.1:
|
||||||
resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==}
|
resolution: {integrity: sha512-KbAPJo6pQpfjupOg5HW0fk/OSmeBfzza2IjZ5XbNKbqhZaCoxro/EyOgesaLvTdyDfrsAUDA6L4q14sc+k9i7g==}
|
||||||
|
|
||||||
sisteransi@1.0.5:
|
sisteransi@1.0.5:
|
||||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||||
@ -1827,13 +1800,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
source-map-support@0.5.21:
|
|
||||||
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
|
||||||
|
|
||||||
source-map@0.6.1:
|
|
||||||
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
|
||||||
engines: {node: '>=0.10.0'}
|
|
||||||
|
|
||||||
source-map@0.7.6:
|
source-map@0.7.6:
|
||||||
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
|
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
@ -2216,20 +2182,61 @@ snapshots:
|
|||||||
'@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
|
'@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
|
||||||
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
|
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
|
||||||
'@csstools/css-tokenizer': 3.0.4
|
'@csstools/css-tokenizer': 3.0.4
|
||||||
lru-cache: 11.2.2
|
lru-cache: 11.2.4
|
||||||
|
|
||||||
'@asamuzakjp/dom-selector@6.7.4':
|
'@asamuzakjp/dom-selector@6.7.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@asamuzakjp/nwsapi': 2.3.9
|
'@asamuzakjp/nwsapi': 2.3.9
|
||||||
bidi-js: 1.0.3
|
bidi-js: 1.0.3
|
||||||
css-tree: 3.1.0
|
css-tree: 3.1.0
|
||||||
is-potential-custom-element-name: 1.0.1
|
is-potential-custom-element-name: 1.0.1
|
||||||
lru-cache: 11.2.2
|
lru-cache: 11.2.4
|
||||||
|
|
||||||
'@asamuzakjp/nwsapi@2.3.9': {}
|
'@asamuzakjp/nwsapi@2.3.9': {}
|
||||||
|
|
||||||
'@astrojs/compiler@2.13.0': {}
|
'@astrojs/compiler@2.13.0': {}
|
||||||
|
|
||||||
|
'@astrojs/db@0.18.3':
|
||||||
|
dependencies:
|
||||||
|
'@libsql/client': 0.15.15
|
||||||
|
deep-diff: 1.0.2
|
||||||
|
drizzle-orm: 0.42.0(@libsql/client@0.15.15)
|
||||||
|
nanoid: 5.1.6
|
||||||
|
piccolore: 0.1.3
|
||||||
|
prompts: 2.4.2
|
||||||
|
yargs-parser: 21.1.1
|
||||||
|
zod: 3.25.76
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@aws-sdk/client-rds-data'
|
||||||
|
- '@cloudflare/workers-types'
|
||||||
|
- '@electric-sql/pglite'
|
||||||
|
- '@libsql/client-wasm'
|
||||||
|
- '@neondatabase/serverless'
|
||||||
|
- '@op-engineering/op-sqlite'
|
||||||
|
- '@opentelemetry/api'
|
||||||
|
- '@planetscale/database'
|
||||||
|
- '@prisma/client'
|
||||||
|
- '@tidbcloud/serverless'
|
||||||
|
- '@types/better-sqlite3'
|
||||||
|
- '@types/pg'
|
||||||
|
- '@types/sql.js'
|
||||||
|
- '@vercel/postgres'
|
||||||
|
- '@xata.io/client'
|
||||||
|
- better-sqlite3
|
||||||
|
- bufferutil
|
||||||
|
- bun-types
|
||||||
|
- expo-sqlite
|
||||||
|
- gel
|
||||||
|
- knex
|
||||||
|
- kysely
|
||||||
|
- mysql2
|
||||||
|
- pg
|
||||||
|
- postgres
|
||||||
|
- prisma
|
||||||
|
- sql.js
|
||||||
|
- sqlite3
|
||||||
|
- utf-8-validate
|
||||||
|
|
||||||
'@astrojs/internal-helpers@0.7.5': {}
|
'@astrojs/internal-helpers@0.7.5': {}
|
||||||
|
|
||||||
'@astrojs/markdown-remark@6.3.9':
|
'@astrojs/markdown-remark@6.3.9':
|
||||||
@ -2248,7 +2255,7 @@ snapshots:
|
|||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0
|
||||||
remark-rehype: 11.1.2
|
remark-rehype: 11.1.2
|
||||||
remark-smartypants: 3.0.2
|
remark-smartypants: 3.0.2
|
||||||
shiki: 3.15.0
|
shiki: 3.17.1
|
||||||
smol-toml: 1.5.2
|
smol-toml: 1.5.2
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
unist-util-remove-position: 5.0.0
|
unist-util-remove-position: 5.0.0
|
||||||
@ -2342,27 +2349,15 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@csstools/css-tokenizer': 3.0.4
|
'@csstools/css-tokenizer': 3.0.4
|
||||||
|
|
||||||
'@csstools/css-syntax-patches-for-csstree@1.0.17': {}
|
'@csstools/css-syntax-patches-for-csstree@1.0.20': {}
|
||||||
|
|
||||||
'@csstools/css-tokenizer@3.0.4': {}
|
'@csstools/css-tokenizer@3.0.4': {}
|
||||||
|
|
||||||
'@drizzle-team/brocli@0.10.2': {}
|
|
||||||
|
|
||||||
'@emnapi/runtime@1.7.1':
|
'@emnapi/runtime@1.7.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@esbuild-kit/core-utils@3.3.2':
|
|
||||||
dependencies:
|
|
||||||
esbuild: 0.25.12
|
|
||||||
source-map-support: 0.5.21
|
|
||||||
|
|
||||||
'@esbuild-kit/esm-loader@2.6.5':
|
|
||||||
dependencies:
|
|
||||||
'@esbuild-kit/core-utils': 3.3.2
|
|
||||||
get-tsconfig: 4.13.0
|
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.25.12':
|
'@esbuild/aix-ppc64@0.25.12':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@ -2712,33 +2707,33 @@ snapshots:
|
|||||||
'@rollup/rollup-win32-x64-msvc@4.53.3':
|
'@rollup/rollup-win32-x64-msvc@4.53.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@shikijs/core@3.15.0':
|
'@shikijs/core@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
hast-util-to-html: 9.0.5
|
hast-util-to-html: 9.0.5
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.15.0':
|
'@shikijs/engine-javascript@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
oniguruma-to-es: 4.3.4
|
oniguruma-to-es: 4.3.4
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.15.0':
|
'@shikijs/engine-oniguruma@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
|
|
||||||
'@shikijs/langs@3.15.0':
|
'@shikijs/langs@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
|
|
||||||
'@shikijs/themes@3.15.0':
|
'@shikijs/themes@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
|
|
||||||
'@shikijs/types@3.15.0':
|
'@shikijs/types@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
@ -2847,7 +2842,7 @@ snapshots:
|
|||||||
ci-info: 4.3.1
|
ci-info: 4.3.1
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
common-ancestor-path: 1.0.1
|
common-ancestor-path: 1.0.1
|
||||||
cookie: 1.0.2
|
cookie: 1.1.1
|
||||||
cssesc: 3.0.0
|
cssesc: 3.0.0
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
deterministic-object-hash: 2.0.2
|
deterministic-object-hash: 2.0.2
|
||||||
@ -2871,13 +2866,13 @@ snapshots:
|
|||||||
neotraverse: 0.6.18
|
neotraverse: 0.6.18
|
||||||
p-limit: 6.2.0
|
p-limit: 6.2.0
|
||||||
p-queue: 8.1.1
|
p-queue: 8.1.1
|
||||||
package-manager-detector: 1.5.0
|
package-manager-detector: 1.6.0
|
||||||
piccolore: 0.1.3
|
piccolore: 0.1.3
|
||||||
picomatch: 4.0.3
|
picomatch: 4.0.3
|
||||||
prompts: 2.4.2
|
prompts: 2.4.2
|
||||||
rehype: 13.0.2
|
rehype: 13.0.2
|
||||||
semver: 7.7.3
|
semver: 7.7.3
|
||||||
shiki: 3.15.0
|
shiki: 3.17.1
|
||||||
smol-toml: 1.5.2
|
smol-toml: 1.5.2
|
||||||
svgo: 4.0.0
|
svgo: 4.0.0
|
||||||
tinyexec: 1.0.2
|
tinyexec: 1.0.2
|
||||||
@ -2962,8 +2957,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
base64-js: 1.5.1
|
base64-js: 1.5.1
|
||||||
|
|
||||||
buffer-from@1.1.2: {}
|
|
||||||
|
|
||||||
camelcase@8.0.0: {}
|
camelcase@8.0.0: {}
|
||||||
|
|
||||||
ccount@2.0.1: {}
|
ccount@2.0.1: {}
|
||||||
@ -3000,7 +2993,7 @@ snapshots:
|
|||||||
|
|
||||||
cookie-es@1.2.2: {}
|
cookie-es@1.2.2: {}
|
||||||
|
|
||||||
cookie@1.0.2: {}
|
cookie@1.1.1: {}
|
||||||
|
|
||||||
crossws@0.3.5:
|
crossws@0.3.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3035,7 +3028,7 @@ snapshots:
|
|||||||
cssstyle@5.3.3:
|
cssstyle@5.3.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@asamuzakjp/css-color': 4.1.0
|
'@asamuzakjp/css-color': 4.1.0
|
||||||
'@csstools/css-syntax-patches-for-csstree': 1.0.17
|
'@csstools/css-syntax-patches-for-csstree': 1.0.20
|
||||||
css-tree: 3.1.0
|
css-tree: 3.1.0
|
||||||
|
|
||||||
data-uri-to-buffer@4.0.1: {}
|
data-uri-to-buffer@4.0.1: {}
|
||||||
@ -3057,6 +3050,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
character-entities: 2.0.2
|
character-entities: 2.0.2
|
||||||
|
|
||||||
|
deep-diff@1.0.2: {}
|
||||||
|
|
||||||
defu@6.1.4: {}
|
defu@6.1.4: {}
|
||||||
|
|
||||||
depd@2.0.0: {}
|
depd@2.0.0: {}
|
||||||
@ -3108,16 +3103,7 @@ snapshots:
|
|||||||
domelementtype: 2.3.0
|
domelementtype: 2.3.0
|
||||||
domhandler: 5.0.3
|
domhandler: 5.0.3
|
||||||
|
|
||||||
drizzle-kit@0.31.7:
|
drizzle-orm@0.42.0(@libsql/client@0.15.15):
|
||||||
dependencies:
|
|
||||||
'@drizzle-team/brocli': 0.10.2
|
|
||||||
'@esbuild-kit/esm-loader': 2.6.5
|
|
||||||
esbuild: 0.25.12
|
|
||||||
esbuild-register: 3.6.0(esbuild@0.25.12)
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
drizzle-orm@0.44.7(@libsql/client@0.15.15):
|
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@libsql/client': 0.15.15
|
'@libsql/client': 0.15.15
|
||||||
|
|
||||||
@ -3151,13 +3137,6 @@ snapshots:
|
|||||||
esast-util-from-estree: 2.0.0
|
esast-util-from-estree: 2.0.0
|
||||||
vfile-message: 4.0.3
|
vfile-message: 4.0.3
|
||||||
|
|
||||||
esbuild-register@3.6.0(esbuild@0.25.12):
|
|
||||||
dependencies:
|
|
||||||
debug: 4.4.3
|
|
||||||
esbuild: 0.25.12
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
esbuild@0.25.12:
|
esbuild@0.25.12:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@esbuild/aix-ppc64': 0.25.12
|
'@esbuild/aix-ppc64': 0.25.12
|
||||||
@ -3277,10 +3256,6 @@ snapshots:
|
|||||||
|
|
||||||
get-east-asian-width@1.4.0: {}
|
get-east-asian-width@1.4.0: {}
|
||||||
|
|
||||||
get-tsconfig@4.13.0:
|
|
||||||
dependencies:
|
|
||||||
resolve-pkg-maps: 1.0.0
|
|
||||||
|
|
||||||
github-slugger@2.0.0: {}
|
github-slugger@2.0.0: {}
|
||||||
|
|
||||||
h3@1.15.4:
|
h3@1.15.4:
|
||||||
@ -3331,7 +3306,7 @@ snapshots:
|
|||||||
hast-util-from-parse5: 8.0.3
|
hast-util-from-parse5: 8.0.3
|
||||||
hast-util-to-parse5: 8.0.0
|
hast-util-to-parse5: 8.0.0
|
||||||
html-void-elements: 3.0.0
|
html-void-elements: 3.0.0
|
||||||
mdast-util-to-hast: 13.2.0
|
mdast-util-to-hast: 13.2.1
|
||||||
parse5: 7.3.0
|
parse5: 7.3.0
|
||||||
unist-util-position: 5.0.0
|
unist-util-position: 5.0.0
|
||||||
unist-util-visit: 5.0.0
|
unist-util-visit: 5.0.0
|
||||||
@ -3368,7 +3343,7 @@ snapshots:
|
|||||||
comma-separated-tokens: 2.0.3
|
comma-separated-tokens: 2.0.3
|
||||||
hast-util-whitespace: 3.0.0
|
hast-util-whitespace: 3.0.0
|
||||||
html-void-elements: 3.0.0
|
html-void-elements: 3.0.0
|
||||||
mdast-util-to-hast: 13.2.0
|
mdast-util-to-hast: 13.2.1
|
||||||
property-information: 7.1.0
|
property-information: 7.1.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
stringify-entities: 4.0.4
|
stringify-entities: 4.0.4
|
||||||
@ -3513,7 +3488,7 @@ snapshots:
|
|||||||
jsdom@27.2.0:
|
jsdom@27.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@acemir/cssom': 0.9.24
|
'@acemir/cssom': 0.9.24
|
||||||
'@asamuzakjp/dom-selector': 6.7.4
|
'@asamuzakjp/dom-selector': 6.7.5
|
||||||
cssstyle: 5.3.3
|
cssstyle: 5.3.3
|
||||||
data-urls: 6.0.0
|
data-urls: 6.0.0
|
||||||
decimal.js: 10.6.0
|
decimal.js: 10.6.0
|
||||||
@ -3558,7 +3533,7 @@ snapshots:
|
|||||||
|
|
||||||
lru-cache@10.4.3: {}
|
lru-cache@10.4.3: {}
|
||||||
|
|
||||||
lru-cache@11.2.2: {}
|
lru-cache@11.2.4: {}
|
||||||
|
|
||||||
magic-string@0.30.21:
|
magic-string@0.30.21:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3717,7 +3692,7 @@ snapshots:
|
|||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
unist-util-is: 6.0.1
|
unist-util-is: 6.0.1
|
||||||
|
|
||||||
mdast-util-to-hast@13.2.0:
|
mdast-util-to-hast@13.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
@ -4025,6 +4000,8 @@ snapshots:
|
|||||||
|
|
||||||
nanoid@3.3.11: {}
|
nanoid@3.3.11: {}
|
||||||
|
|
||||||
|
nanoid@5.1.6: {}
|
||||||
|
|
||||||
neotraverse@0.6.18: {}
|
neotraverse@0.6.18: {}
|
||||||
|
|
||||||
nlcst-to-string@4.0.0:
|
nlcst-to-string@4.0.0:
|
||||||
@ -4080,7 +4057,7 @@ snapshots:
|
|||||||
|
|
||||||
p-timeout@6.1.4: {}
|
p-timeout@6.1.4: {}
|
||||||
|
|
||||||
package-manager-detector@1.5.0: {}
|
package-manager-detector@1.6.0: {}
|
||||||
|
|
||||||
pako@0.2.9: {}
|
pako@0.2.9: {}
|
||||||
|
|
||||||
@ -4249,7 +4226,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
mdast-util-to-hast: 13.2.0
|
mdast-util-to-hast: 13.2.1
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
|
|
||||||
@ -4268,8 +4245,6 @@ snapshots:
|
|||||||
|
|
||||||
require-from-string@2.0.2: {}
|
require-from-string@2.0.2: {}
|
||||||
|
|
||||||
resolve-pkg-maps@1.0.0: {}
|
|
||||||
|
|
||||||
restructure@3.0.2: {}
|
restructure@3.0.2: {}
|
||||||
|
|
||||||
retext-latin@4.0.0:
|
retext-latin@4.0.0:
|
||||||
@ -4387,14 +4362,14 @@ snapshots:
|
|||||||
'@img/sharp-win32-x64': 0.34.5
|
'@img/sharp-win32-x64': 0.34.5
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
shiki@3.15.0:
|
shiki@3.17.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/core': 3.15.0
|
'@shikijs/core': 3.17.1
|
||||||
'@shikijs/engine-javascript': 3.15.0
|
'@shikijs/engine-javascript': 3.17.1
|
||||||
'@shikijs/engine-oniguruma': 3.15.0
|
'@shikijs/engine-oniguruma': 3.17.1
|
||||||
'@shikijs/langs': 3.15.0
|
'@shikijs/langs': 3.17.1
|
||||||
'@shikijs/themes': 3.15.0
|
'@shikijs/themes': 3.17.1
|
||||||
'@shikijs/types': 3.15.0
|
'@shikijs/types': 3.17.1
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
|
||||||
@ -4404,13 +4379,6 @@ snapshots:
|
|||||||
|
|
||||||
source-map-js@1.2.1: {}
|
source-map-js@1.2.1: {}
|
||||||
|
|
||||||
source-map-support@0.5.21:
|
|
||||||
dependencies:
|
|
||||||
buffer-from: 1.1.2
|
|
||||||
source-map: 0.6.1
|
|
||||||
|
|
||||||
source-map@0.6.1: {}
|
|
||||||
|
|
||||||
source-map@0.7.6: {}
|
source-map@0.7.6: {}
|
||||||
|
|
||||||
space-separated-tokens@2.0.2: {}
|
space-separated-tokens@2.0.2: {}
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
export default {
|
export default {
|
||||||
host: {
|
host: {
|
||||||
host: "137.184.37.162",
|
host: "15.235.122.159",
|
||||||
username: "haetae",
|
username: "haetae",
|
||||||
remoteProjectPath: "/var/www/fujohost/haetae/",
|
remoteProjectPath: "/var/www/",
|
||||||
remoteDbPath: "/var/www/fujohost/haetae/guestbook.db",
|
remoteDbPath: "/var/www/fujohost/haetae/guestbook.db",
|
||||||
dbDriver: "astro:db",
|
dbDriver: "astro:db",
|
||||||
privateKeyPath: "/home/ayowaddup/.ssh/shippy.id_ed25519"
|
privateKeyPath: "/home/ayowaddup/.ssh/shippy.id_ed25519"
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
import { ActionError, defineAction } from "astro:actions";
|
import { ActionError, defineAction } from "astro:actions";
|
||||||
import { z } from "astro:schema";
|
import { z } from "astro:schema";
|
||||||
import { db } from "db";
|
import { db, eq, Guestbook } from "astro:db";
|
||||||
import { guestbookTable } from "db/schema";
|
// import { guestbookTable } from "db/schema";
|
||||||
import { eq } from "drizzle-orm";
|
|
||||||
import DOMPurify from "isomorphic-dompurify";
|
import DOMPurify from "isomorphic-dompurify";
|
||||||
|
|
||||||
export const guestbook = {
|
export const guestbook = {
|
||||||
@ -26,7 +25,7 @@ export const guestbook = {
|
|||||||
const sanitized = DOMPurify.sanitize(addLine);
|
const sanitized = DOMPurify.sanitize(addLine);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const entry = await db.insert(guestbookTable).values({
|
const entry = await db.insert(Guestbook).values({
|
||||||
username,
|
username,
|
||||||
website,
|
website,
|
||||||
message: sanitized,
|
message: sanitized,
|
||||||
@ -50,7 +49,7 @@ export const guestbook = {
|
|||||||
throw new ActionError({ code: "UNAUTHORIZED" });
|
throw new ActionError({ code: "UNAUTHORIZED" });
|
||||||
}
|
}
|
||||||
|
|
||||||
const entry = await db.select().from(guestbookTable).where(eq(guestbookTable.id, id));
|
const entry = await db.select().from(Guestbook).where(eq(Guestbook.id, id));
|
||||||
if (!entry) {
|
if (!entry) {
|
||||||
throw new ActionError({
|
throw new ActionError({
|
||||||
code: "NOT_FOUND",
|
code: "NOT_FOUND",
|
||||||
@ -62,10 +61,10 @@ export const guestbook = {
|
|||||||
const sanitized = DOMPurify.sanitize(addLine);
|
const sanitized = DOMPurify.sanitize(addLine);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const update = await db.update(guestbookTable).set({
|
const update = await db.update(Guestbook).set({
|
||||||
reply: sanitized,
|
reply: sanitized,
|
||||||
updated: new Date().toDateString(),
|
updated: new Date(),
|
||||||
}).where(eq(guestbookTable.id, id)).returning();
|
}).where(eq(Guestbook.id, id)).returning();
|
||||||
|
|
||||||
return update[0];
|
return update[0];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -83,7 +82,7 @@ export const guestbook = {
|
|||||||
throw new ActionError({ code: "UNAUTHORIZED" });
|
throw new ActionError({ code: "UNAUTHORIZED" });
|
||||||
}
|
}
|
||||||
|
|
||||||
const entry = await db.select().from(guestbookTable).where(eq(guestbookTable.id, id));
|
const entry = await db.select().from(Guestbook).where(eq(Guestbook.id, id));
|
||||||
if (!entry) {
|
if (!entry) {
|
||||||
throw new ActionError({
|
throw new ActionError({
|
||||||
code: "NOT_FOUND",
|
code: "NOT_FOUND",
|
||||||
@ -92,7 +91,7 @@ export const guestbook = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const entry = await db.delete(guestbookTable).where(eq(guestbookTable.id, id)).returning();
|
const entry = await db.delete(Guestbook).where(eq(Guestbook.id, id)).returning();
|
||||||
|
|
||||||
return entry[0];
|
return entry[0];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
---
|
---
|
||||||
import { desc } from "drizzle-orm";
|
import type { GuestbookEntry } from "db/schema";
|
||||||
import { db } from "db";
|
|
||||||
import { guestbookTable } from "db/schema";
|
|
||||||
import formatDate from "@/utils/formatDate";
|
import formatDate from "@/utils/formatDate";
|
||||||
|
import speech from "$/speech.png";
|
||||||
import pikachu from "$/images/portrait-0025.png";
|
import pikachu from "$/images/portrait-0025.png";
|
||||||
|
|
||||||
const entries = await db.select().from(guestbookTable).orderBy(desc(guestbookTable.published));
|
interface Props {
|
||||||
|
entries: GuestbookEntry[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { entries } = Astro.props;
|
||||||
---
|
---
|
||||||
<section id="entries">
|
<section id="entries">
|
||||||
{entries.map(entry => (
|
{entries.map(entry => (
|
||||||
@ -29,7 +32,8 @@ const entries = await db.select().from(guestbookTable).orderBy(desc(guestbookTab
|
|||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
{entry.reply && <article class="reply" id={`reply-${entry.username}-${entry.id}`}>
|
{entry.reply && (
|
||||||
|
<article class="reply" id={`reply-${entry.username}-${entry.id}`}>
|
||||||
<img src={pikachu.src} width="80" height="80" alt="a portrait of pikachu" />
|
<img src={pikachu.src} width="80" height="80" alt="a portrait of pikachu" />
|
||||||
<div class="entry">
|
<div class="entry">
|
||||||
<header>
|
<header>
|
||||||
@ -43,7 +47,8 @@ const entries = await db.select().from(guestbookTable).orderBy(desc(guestbookTab
|
|||||||
<Fragment set:html={entry.reply} />
|
<Fragment set:html={entry.reply} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</article>}
|
</article>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
@ -53,9 +58,16 @@ const entries = await db.select().from(guestbookTable).orderBy(desc(guestbookTab
|
|||||||
<p>There's nothing here! Want to be the first to comment?</p>
|
<p>There's nothing here! Want to be the first to comment?</p>
|
||||||
</article>
|
</article>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<slot name="pagination" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<style>
|
<style define:vars={{ border: `url(${speech.src})` }}>
|
||||||
|
:root {
|
||||||
|
--speech-bg-color: #f8f8f8;
|
||||||
|
--speech-fg-color: #404040;
|
||||||
|
}
|
||||||
|
|
||||||
#entries {
|
#entries {
|
||||||
margin: 2rem 0 3rem;
|
margin: 2rem 0 3rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { getCollection } from "astro:content";
|
|||||||
import UpdateCard from "./UpdateCard.astro";
|
import UpdateCard from "./UpdateCard.astro";
|
||||||
|
|
||||||
const updates = await getCollection("updates");
|
const updates = await getCollection("updates");
|
||||||
|
const data = updates.sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf());
|
||||||
---
|
---
|
||||||
<section id="updates">
|
<section id="updates">
|
||||||
<header>
|
<header>
|
||||||
@ -18,9 +19,12 @@ const updates = await getCollection("updates");
|
|||||||
<span class="segment">Date</span>
|
<span class="segment">Date</span>
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
|
<!--
|
||||||
|
<UpdateCard title={data[0].data.title} date={data[0].data.date}>
|
||||||
|
{data[0].body}
|
||||||
|
</UpdateCard> -->
|
||||||
|
|
||||||
<UpdateCard title="redo gallery and guestbook" date="2024-05-10">
|
<UpdateCard title="redo gallery and guestbook" date="2024-05-10">
|
||||||
{updates.length}
|
|
||||||
<p>redid <a href="/gallery">gallery page</a> to make adding images easier and added alpinejs to <a href="/guestbook">guestbook</a> for fetching entries live</p>
|
<p>redid <a href="/gallery">gallery page</a> to make adding images easier and added alpinejs to <a href="/guestbook">guestbook</a> for fetching entries live</p>
|
||||||
</UpdateCard>
|
</UpdateCard>
|
||||||
|
|
||||||
@ -29,14 +33,14 @@ const updates = await getCollection("updates");
|
|||||||
</UpdateCard>
|
</UpdateCard>
|
||||||
|
|
||||||
<footer id="updates-pagination">
|
<footer id="updates-pagination">
|
||||||
<a id="previous" aria-label="go to previous post" href="javascript:void(0)">
|
<button id="previous" aria-label="go to previous post">
|
||||||
<div class="arrow" />
|
<div class="arrow" />
|
||||||
<div class="title">prev</div>
|
<div class="title">prev</div>
|
||||||
</a>
|
</button>
|
||||||
<a id="next" aria-label="go to next post" href="javascript:void(0)">
|
<button id="next" aria-label="go to next post">
|
||||||
<div class="title">next</div>
|
<div class="title">next</div>
|
||||||
<div class="arrow" />
|
<div class="arrow" />
|
||||||
</a>
|
</button>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -146,12 +150,16 @@ const updates = await getCollection("updates");
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* BASE STYLING FOR ARROW BUTTONS */
|
/* BASE STYLING FOR ARROW BUTTONS */
|
||||||
a {
|
button {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row wrap;
|
flex-flow: row wrap;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
color: var(--normal-color);
|
color: var(--normal-color);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
background: unset;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
font-family: ;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
display: grid;
|
display: grid;
|
||||||
@ -194,3 +202,8 @@ const updates = await getCollection("updates");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- <script>
|
||||||
|
const prev = document.getElementById("previous");
|
||||||
|
const next = document.getElementById("next");
|
||||||
|
</script> -->
|
||||||
33
src/pages/guestbook/[page].astro
Normal file
33
src/pages/guestbook/[page].astro
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
import type { GetStaticPaths } from "astro";
|
||||||
|
import { Font } from "astro:assets";
|
||||||
|
import { desc } from "drizzle-orm";
|
||||||
|
import { db } from "db";
|
||||||
|
import { guestbookTable } from "db/schema";
|
||||||
|
|
||||||
|
import Layout from "@/layouts/Layout.astro";
|
||||||
|
import Entries from "~/Entries.astro";
|
||||||
|
|
||||||
|
export const getStaticPaths = (async ({ paginate }) => {
|
||||||
|
const data = await db.select().from(guestbookTable).orderBy(desc(guestbookTable.published));
|
||||||
|
return paginate(data, { pageSize: 1 });
|
||||||
|
}) satisfies GetStaticPaths;
|
||||||
|
|
||||||
|
const { page } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<Fragment slot="head">
|
||||||
|
<Font cssVariable="--mono" preload />
|
||||||
|
<Font cssVariable="--mlss" preload />
|
||||||
|
</Fragment>
|
||||||
|
<Entries entries={page.data} server:defer>
|
||||||
|
<nav slot="pagination">
|
||||||
|
{page.currentPage}
|
||||||
|
{page.url.first ? <a href={page.url.first}>First</a> : null}
|
||||||
|
{page.url.prev ? <a href={page.url.prev}>Previous</a> : null}
|
||||||
|
{page.url.next ? <a href={page.url.next}>Next</a> : null}
|
||||||
|
{page.url.last ? <a href={page.url.last}>Last</a> : null}
|
||||||
|
</nav>
|
||||||
|
</Entries>
|
||||||
|
</Layout>
|
||||||
@ -1,13 +1,17 @@
|
|||||||
---
|
---
|
||||||
import { actions, isInputError } from "astro:actions";
|
import { actions, isInputError } from "astro:actions";
|
||||||
import { Font } from "astro:assets";
|
import { Font } from "astro:assets";
|
||||||
|
import { desc } from "drizzle-orm";
|
||||||
|
import { db } from "db";
|
||||||
|
import { guestbookTable } from "db/schema";
|
||||||
|
|
||||||
import Layout from "@/layouts/Layout.astro";
|
import Layout from "@/layouts/Layout.astro";
|
||||||
import speech from "$/speech.png";
|
|
||||||
import Entries from "~/Entries.astro";
|
import Entries from "~/Entries.astro";
|
||||||
import Dialog from "~/Dialog.astro";
|
import Dialog from "~/Dialog.astro";
|
||||||
|
|
||||||
const result = Astro.getActionResult(actions.guestbook.addEntry);
|
const result = Astro.getActionResult(actions.guestbook.addEntry);
|
||||||
|
const entries = await db.select().from(guestbookTable).orderBy(desc(guestbookTable.published));
|
||||||
|
entries.slice(0, 10);
|
||||||
const inputErrors = isInputError(result?.error) ? result.error.fields : {};
|
const inputErrors = isInputError(result?.error) ? result.error.fields : {};
|
||||||
---
|
---
|
||||||
<Layout title="haetae, guestbook">
|
<Layout title="haetae, guestbook">
|
||||||
@ -42,7 +46,7 @@ const inputErrors = isInputError(result?.error) ? result.error.fields : {};
|
|||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<Entries server:defer>
|
<Entries entries={entries} server:defer>
|
||||||
<p slot="fallback">Loading...</p>
|
<p slot="fallback">Loading...</p>
|
||||||
</Entries>
|
</Entries>
|
||||||
|
|
||||||
@ -52,12 +56,7 @@ const inputErrors = isInputError(result?.error) ? result.error.fields : {};
|
|||||||
</main>
|
</main>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
||||||
<style define:vars={{ border: `url(${speech.src})` }}>
|
<style>
|
||||||
:root {
|
|
||||||
--speech-bg-color: #f8f8f8;
|
|
||||||
--speech-fg-color: #404040;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
main {
|
||||||
max-width: clamp(75ch, 80ch, 100%);
|
max-width: clamp(75ch, 80ch, 100%);
|
||||||
margin: 1rem auto;
|
margin: 1rem auto;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user