From 534d1c9d204c58889591d8c807a65dd44a252c7e Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Mon, 2 Oct 2023 19:29:35 -0600 Subject: [PATCH 1/2] SQLite --- .env.example | 1 + app/(client)/dashboard/page.tsx | 1 - app/(client)/room/[id]/page.tsx | 1 - app/_lib/db.ts | 12 +- app/_lib/schema.ts | 61 ++-- app/_utils/types.ts | 8 + app/api/external/private/ping/route.ts | 1 - app/api/external/public/ping/route.ts | 1 - app/api/internal/ably/route.ts | 31 +- app/api/internal/room/[roomId]/route.ts | 17 +- app/api/internal/room/[roomId]/vote/route.ts | 3 +- app/api/internal/room/[roomId]/votes/route.ts | 1 - app/api/internal/room/route.ts | 3 +- app/api/webhooks/clerk/route.ts | 1 - drizzle.config.ts | 5 +- env.mjs | 1 + package.json | 8 +- pnpm-lock.yaml | 327 ++++++++++-------- 18 files changed, 276 insertions(+), 207 deletions(-) diff --git a/.env.example b/.env.example index 781021a..a6030fa 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,6 @@ #Database DATABASE_URL="" +DATABASE_AUTH_TOKEN="" # Redis UPSTASH_REDIS_REST_URL="" diff --git a/app/(client)/dashboard/page.tsx b/app/(client)/dashboard/page.tsx index 80c1599..af5d123 100644 --- a/app/(client)/dashboard/page.tsx +++ b/app/(client)/dashboard/page.tsx @@ -5,7 +5,6 @@ import { isAdmin, isVIP } from "@/_utils/helpers"; import { currentUser } from "@clerk/nextjs"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export default async function Dashboard() { const user = await currentUser(); diff --git a/app/(client)/room/[id]/page.tsx b/app/(client)/room/[id]/page.tsx index 94244af..ade5a09 100644 --- a/app/(client)/room/[id]/page.tsx +++ b/app/(client)/room/[id]/page.tsx @@ -1,7 +1,6 @@ import VoteUI from "@/(client)/room/[id]/VoteUI"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export default function Room() { return ( diff --git a/app/_lib/db.ts b/app/_lib/db.ts index e49f412..2925ab4 100644 --- a/app/_lib/db.ts +++ b/app/_lib/db.ts @@ -1,7 +1,11 @@ -import { neon } from "@neondatabase/serverless"; +import { drizzle } from "drizzle-orm/libsql"; +import { createClient } from "@libsql/client"; import * as schema from "app/_lib/schema"; -import { drizzle } from "drizzle-orm/neon-http"; import { env } from "env.mjs"; -const sql = neon(env.DATABASE_URL); -export const db = drizzle(sql, { schema }); +const client = createClient({ + url: env.DATABASE_URL, + authToken: env.DATABASE_AUTH_TOKEN, +}); + +export const db = drizzle(client, { schema }); diff --git a/app/_lib/schema.ts b/app/_lib/schema.ts index 1737419..ff2eb7c 100644 --- a/app/_lib/schema.ts +++ b/app/_lib/schema.ts @@ -1,22 +1,20 @@ import { - timestamp, - pgTable, - varchar, - boolean, - json, - index, + sqliteTable, + integer, + text, unique, -} from "drizzle-orm/pg-core"; + index, +} from "drizzle-orm/sqlite-core"; import { relations } from "drizzle-orm"; -export const rooms = pgTable("Room", { - id: varchar("id", { length: 255 }).notNull().primaryKey(), - created_at: timestamp("created_at").defaultNow(), - userId: varchar("userId", { length: 255 }).notNull(), - roomName: varchar("roomName", { length: 255 }), - storyName: varchar("storyName", { length: 255 }), - visible: boolean("visible").default(false).notNull(), - scale: varchar("scale", { length: 255 }).default("0.5,1,2,3,5").notNull(), +export const rooms = sqliteTable("Room", { + id: text("id", { length: 255 }).notNull().primaryKey(), + created_at: text("created_at"), + userId: text("userId", { length: 255 }).notNull(), + roomName: text("roomName", { length: 255 }), + storyName: text("storyName", { length: 255 }), + visible: integer("visible").default(0).notNull(), + scale: text("scale", { length: 255 }).default("0.5,1,2,3,5").notNull(), }); export const roomsRelations = relations(rooms, ({ many }) => ({ @@ -24,20 +22,19 @@ export const roomsRelations = relations(rooms, ({ many }) => ({ logs: many(logs), })); -export const votes = pgTable( +export const votes = sqliteTable( "Vote", { - id: varchar("id", { length: 255 }).notNull().primaryKey(), - created_at: timestamp("created_at").defaultNow(), - userId: varchar("userId", { length: 255 }).notNull(), - roomId: varchar("roomId", { length: 255 }) + id: text("id", { length: 255 }).notNull().primaryKey(), + created_at: text("created_at"), + userId: text("userId", { length: 255 }).notNull(), + roomId: text("roomId", { length: 255 }) .notNull() .references(() => rooms.id, { onDelete: "cascade" }), - value: varchar("value", { length: 255 }).notNull(), + value: text("value", { length: 255 }).notNull(), }, (table) => { return { - userIdx: index("user_idx").on(table.userId), unq: unique().on(table.userId, table.roomId), }; } @@ -50,19 +47,17 @@ export const votesRelations = relations(votes, ({ one }) => ({ }), })); -export const logs = pgTable( +export const logs = sqliteTable( "Log", { - id: varchar("id", { length: 255 }).notNull().primaryKey(), - created_at: timestamp("created_at").defaultNow(), - userId: varchar("userId", { length: 255 }).notNull(), - roomId: varchar("roomId", { length: 255 }) - .notNull() - .references(() => rooms.id, { onDelete: "cascade" }), - scale: varchar("scale", { length: 255 }), - votes: json("votes"), - roomName: varchar("roomName", { length: 255 }), - storyName: varchar("storyName", { length: 255 }), + id: text("id", { length: 255 }).notNull().primaryKey(), + created_at: text("created_at"), + userId: text("userId", { length: 255 }).notNull(), + roomId: text("roomId", { length: 255 }).notNull(), + scale: text("scale", { length: 255 }), + votes: text("votes"), + roomName: text("roomName", { length: 255 }), + storyName: text("storyName", { length: 255 }), }, (table) => { return { diff --git a/app/_utils/types.ts b/app/_utils/types.ts index e458662..fbbdcac 100644 --- a/app/_utils/types.ts +++ b/app/_utils/types.ts @@ -67,3 +67,11 @@ export type VoteResponse = }[] | null | undefined; + +export type AblyTokenResponse = { + token: string; + issued: number; + expires: number; + capability: string; + clientId: string; +}; diff --git a/app/api/external/private/ping/route.ts b/app/api/external/private/ping/route.ts index bf4b910..23ffbaf 100644 --- a/app/api/external/private/ping/route.ts +++ b/app/api/external/private/ping/route.ts @@ -1,7 +1,6 @@ import { NextResponse } from "next/server"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; function handler() { return NextResponse.json( diff --git a/app/api/external/public/ping/route.ts b/app/api/external/public/ping/route.ts index a1e4d0c..ae63512 100644 --- a/app/api/external/public/ping/route.ts +++ b/app/api/external/public/ping/route.ts @@ -1,7 +1,6 @@ import { NextResponse } from "next/server"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; function handler() { return NextResponse.json( diff --git a/app/api/internal/ably/route.ts b/app/api/internal/ably/route.ts index 321554c..ab24c09 100644 --- a/app/api/internal/ably/route.ts +++ b/app/api/internal/ably/route.ts @@ -1,8 +1,9 @@ import { NextResponse } from "next/server"; - -import * as Ably from "ably/promises"; import { env } from "env.mjs"; -import { currentUser } from "@clerk/nextjs"; +import { currentUser } from "@clerk/nextjs/server"; +import type { AblyTokenResponse } from "@/_utils/types"; + +export const runtime = "edge"; async function handler() { const user = await currentUser(); @@ -23,12 +24,26 @@ async function handler() { ); } - const client = new Ably.Rest(env.ABLY_API_KEY); - const tokenRequestData = await client.auth.createTokenRequest({ - clientId: user?.id, - }); + const keyName = env.ABLY_API_KEY.split(":")[0]; - return NextResponse.json(tokenRequestData, { + const tokenResponse = await fetch( + `https://rest.ably.io/keys/${keyName}/requestToken`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Basic ${btoa(env.ABLY_API_KEY)}`, + }, + body: JSON.stringify({ + keyName, + clientId: user?.id, + timestamp: Date.now(), + }), + } + ); + const tokenResponseData = (await tokenResponse.json()) as AblyTokenResponse; + + return NextResponse.json(tokenResponseData, { status: 200, statusText: "SUCCESS", }); diff --git a/app/api/internal/room/[roomId]/route.ts b/app/api/internal/room/[roomId]/route.ts index 510a42d..ee8993e 100644 --- a/app/api/internal/room/[roomId]/route.ts +++ b/app/api/internal/room/[roomId]/route.ts @@ -10,7 +10,6 @@ import { createId } from "@paralleldrive/cuid2"; import { eq } from "drizzle-orm"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export async function GET( request: Request, @@ -107,7 +106,7 @@ export async function PUT( const reqBody = (await request.json()) as { name: string; - visible: boolean; + visible: number; scale: string; reset: boolean; log: boolean; @@ -136,12 +135,14 @@ export async function PUT( userId: userId || "", roomId: params.roomId, scale: oldRoom.scale, - votes: oldRoom.votes.map((vote) => { - return { - name: vote.userId, - value: vote.value, - }; - }), + votes: JSON.stringify( + oldRoom.votes.map((vote) => { + return { + name: vote.userId, + value: vote.value, + }; + }) + ), roomName: oldRoom.roomName, storyName: oldRoom.storyName, })); diff --git a/app/api/internal/room/[roomId]/vote/route.ts b/app/api/internal/room/[roomId]/vote/route.ts index 504b9e6..c50d1a8 100644 --- a/app/api/internal/room/[roomId]/vote/route.ts +++ b/app/api/internal/room/[roomId]/vote/route.ts @@ -9,7 +9,6 @@ import { EventTypes } from "@/_utils/types"; import { getAuth } from "@clerk/nextjs/server"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export async function PUT( request: Request, @@ -43,7 +42,7 @@ export async function PUT( }, }); - const success = upsertResult.rowCount > 0; + const success = upsertResult.rowsAffected > 0; if (success) { await invalidateCache(`kv_votes_${params.roomId}`); diff --git a/app/api/internal/room/[roomId]/votes/route.ts b/app/api/internal/room/[roomId]/votes/route.ts index fe2315c..0f2d00b 100644 --- a/app/api/internal/room/[roomId]/votes/route.ts +++ b/app/api/internal/room/[roomId]/votes/route.ts @@ -6,7 +6,6 @@ import { votes } from "@/_lib/schema"; import { eq } from "drizzle-orm"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export async function GET( request: Request, diff --git a/app/api/internal/room/route.ts b/app/api/internal/room/route.ts index 8d3af22..cdaed57 100644 --- a/app/api/internal/room/route.ts +++ b/app/api/internal/room/route.ts @@ -10,7 +10,6 @@ import { EventTypes } from "@/_utils/types"; import { getAuth } from "@clerk/nextjs/server"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; export async function GET(request: Request) { const { userId } = getAuth(request as NextRequest); @@ -55,7 +54,7 @@ export async function POST(request: Request) { roomName: reqBody.name, storyName: "First Story!", scale: "0.5,1,2,3,5,8", - visible: false, + visible: 0, }) .returning(); diff --git a/app/api/webhooks/clerk/route.ts b/app/api/webhooks/clerk/route.ts index 0cdb5fa..0e16a45 100644 --- a/app/api/webhooks/clerk/route.ts +++ b/app/api/webhooks/clerk/route.ts @@ -10,7 +10,6 @@ import { Webhook } from "svix"; import { env } from "env.mjs"; export const runtime = "edge"; -export const preferredRegion = ["pdx1"]; async function handler(req: NextRequest) { // Get the headers diff --git a/drizzle.config.ts b/drizzle.config.ts index 4c22214..270b9f2 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -4,9 +4,10 @@ import "dotenv/config"; export default { schema: "./app/_lib/schema.ts", out: "./drizzle/generated", - driver: "pg", + driver: "turso", breakpoints: true, dbCredentials: { - connectionString: `${process.env.DATABASE_URL}?sslmode=verify-full`, + url: `${process.env.DATABASE_URL}`, + authToken: `${process.env.DATABASE_AUTH_TOKEN}`, }, } satisfies Config; diff --git a/env.mjs b/env.mjs index 2f62a33..5ffb6d2 100644 --- a/env.mjs +++ b/env.mjs @@ -4,6 +4,7 @@ import { z } from "zod"; export const env = createEnv({ server: { DATABASE_URL: z.string().url(), + DATABASE_AUTH_TOKEN: z.string(), UPSTASH_REDIS_REST_URL: z.string().url(), UPSTASH_REDIS_REST_TOKEN: z.string(), UPSTASH_REDIS_EXPIRY_SECONDS: z.string(), diff --git a/package.json b/package.json index 56a8fd7..85af42e 100644 --- a/package.json +++ b/package.json @@ -9,14 +9,14 @@ "dev": "pnpm serv", "lint": "next lint", "start": "next start", - "db:push": "pnpm drizzle-kit push:pg", + "db:push": "pnpm drizzle-kit push:sqlite", "db:studio": "pnpm drizzle-kit studio", "init:env": "cp .env.example .env" }, "dependencies": { "@clerk/nextjs": "^4.24.1", "@clerk/themes": "^1.7.6", - "@neondatabase/serverless": "^0.6.0", + "@libsql/client": "^0.3.5", "@paralleldrive/cuid2": "^2.2.2", "@t3-oss/env-nextjs": "^0.6.1", "@unkey/api": "^0.9.2", @@ -43,14 +43,14 @@ "@types/react": "^18.2.23", "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", + "better-sqlite3": "^8.7.0", "bufferutil": "^4.0.7", "daisyui": "^3.8.0", "drizzle-kit": "^0.19.13", "eslint": "^8.50.0", "eslint-config-next": "^13.5.3", - "pg": "^8.11.3", "tailwindcss": "^3.3.3", "typescript": "^5.2.2", "utf-8-validate": "6.0.3" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d4e583..02f4b88 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,9 @@ dependencies: '@clerk/themes': specifier: ^1.7.6 version: 1.7.6(react@18.2.0) - '@neondatabase/serverless': - specifier: ^0.6.0 - version: 0.6.0 + '@libsql/client': + specifier: ^0.3.5 + version: 0.3.5(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -43,7 +43,7 @@ dependencies: version: 16.3.1 drizzle-orm: specifier: ^0.28.6 - version: 0.28.6(@neondatabase/serverless@0.6.0)(pg@8.11.3) + version: 0.28.6(@libsql/client@0.3.5)(better-sqlite3@8.7.0) next: specifier: ^13.5.3 version: 13.5.3(react-dom@18.2.0)(react@18.2.0) @@ -88,6 +88,9 @@ devDependencies: '@typescript-eslint/parser': specifier: ^6.7.3 version: 6.7.3(eslint@8.50.0)(typescript@5.2.2) + better-sqlite3: + specifier: ^8.7.0 + version: 8.7.0 bufferutil: specifier: ^4.0.7 version: 4.0.7 @@ -103,9 +106,6 @@ devDependencies: eslint-config-next: specifier: ^13.5.3 version: 13.5.3(eslint@8.50.0)(typescript@5.2.2) - pg: - specifier: ^8.11.3 - version: 8.11.3 tailwindcss: specifier: ^3.3.3 version: 3.3.3 @@ -530,10 +530,92 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@neondatabase/serverless@0.6.0: - resolution: {integrity: sha512-qXxBRYN0m2v8kVQBfMxbzNGn2xFAhTXFibzQlE++NfJ56Shz3m7+MyBBtXDlEH+3Wfa6lToDXf1MElocY4sJ3w==} + /@libsql/client@0.3.5(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-4fZxGh0qKW5dtp1yuQLRvRAtbt02V4jzjM9sHSmz5k25xZTLg7/GlNudKdqKZrjJXEV5PvDNsczupBtedZZovw==} dependencies: - '@types/pg': 8.6.6 + '@libsql/hrana-client': 0.5.5(bufferutil@4.0.7)(utf-8-validate@6.0.3) + js-base64: 3.7.5 + libsql: 0.1.24 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@libsql/darwin-arm64@0.1.24: + resolution: {integrity: sha512-owp/uw6cgcf7Y5kj+oh0sF0nZgdmjd3NCsgawwRVWrBf5tHlZs5JaohnKEs+CoqYTgDSbTJw/6xjcJ8oFa6NlQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@libsql/darwin-x64@0.1.24: + resolution: {integrity: sha512-b8vgkEEyPwARbL97bKu0TTy5HcvfFfmU8W/uP2MC3R2ZI1Lw9mdedtfgDCKXwYPjxdi6CIgW/eP5tD17wwgD8g==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@libsql/hrana-client@0.5.5(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-i+hDBpiV719poqEiHupUUZYKJ9YSbCRFe5Q2PQ0v3mHIftePH6gayLjp2u6TXbqbO/Dv6y8yyvYlBXf/kFfRZA==} + dependencies: + '@libsql/isomorphic-fetch': 0.1.10 + '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.0.7)(utf-8-validate@6.0.3) + js-base64: 3.7.5 + node-fetch: 3.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@libsql/isomorphic-fetch@0.1.10: + resolution: {integrity: sha512-dH0lMk50gKSvEKD78xWMu60SY1sjp1sY//iFLO0XMmBwfVfG136P9KOk06R4maBdlb8KMXOzJ1D28FR5ZKnHTA==} + dependencies: + '@types/node-fetch': 2.6.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /@libsql/isomorphic-ws@0.1.5(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} + dependencies: + '@types/ws': 8.5.6 + ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@libsql/linux-x64-gnu@0.1.24: + resolution: {integrity: sha512-ZsqoQlokii5+AUSL9bO6/qaITnn2VW4Fdwnuxe0vgskrt+Sq5LG61MyN55ckSxsSxgKRaKEXl6eNUdw5L7CyUA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-x64-musl@0.1.24: + resolution: {integrity: sha512-31voT85aAHkky59l4/1ikOrXsPJG7TqIl4GlAIOC+3INzTzS0AMUk66wwmJ8UVKH+Ep5MFV2KdWGtHmcOIdhiQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/win32-x64-msvc@0.1.24: + resolution: {integrity: sha512-EWYVE/uZUqeG/BzvYdaoWhCIEbWCTHMmP247MynyIt/puDvOmI8Xvp2S6wdZI2a8xJe3DYNwRgNGB7v4T93xPg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@neon-rs/load@0.0.4: + resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} dev: false /@next/env@13.5.3: @@ -840,14 +922,6 @@ packages: /@types/node@20.7.0: resolution: {integrity: sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==} - /@types/pg@8.6.6: - resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} - dependencies: - '@types/node': 20.7.0 - pg-protocol: 1.6.0 - pg-types: 2.2.0 - dev: false - /@types/prop-types@15.7.7: resolution: {integrity: sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==} dev: true @@ -897,6 +971,12 @@ packages: '@types/node': 20.7.0 dev: false + /@types/ws@8.5.6: + resolution: {integrity: sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==} + dependencies: + '@types/node': 20.7.0 + dev: false + /@typescript-eslint/eslint-plugin@6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1291,20 +1371,30 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + + /better-sqlite3@8.7.0: + resolution: {integrity: sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==} + requiresBuild: true + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.1 /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false /bops@1.0.1: resolution: {integrity: sha512-qCMBuZKP36tELrrgXpAfM+gHzqa0nLsWZ+L37ncsb8txYlnAoxOPpVp+g7fK0sGkMXfA0wl8uQkESqw3v4HNag==} @@ -1348,16 +1438,11 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} @@ -1461,7 +1546,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false /cli-color@2.0.3: resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} @@ -1604,6 +1688,11 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1632,12 +1721,10 @@ packages: engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 - dev: false /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1684,7 +1771,6 @@ packages: /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - dev: false /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -1760,7 +1846,7 @@ packages: - supports-color dev: true - /drizzle-orm@0.28.6(@neondatabase/serverless@0.6.0)(pg@8.11.3): + /drizzle-orm@0.28.6(@libsql/client@0.3.5)(better-sqlite3@8.7.0): resolution: {integrity: sha512-yBe+F9htrlYER7uXgDJUQsTHFoIrI5yMm5A0bg0GiZ/kY5jNXTWoEy4KQtg35cE27sw1VbgzoMWHAgCckUUUww==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' @@ -1822,8 +1908,8 @@ packages: sqlite3: optional: true dependencies: - '@neondatabase/serverless': 0.6.0 - pg: 8.11.3 + '@libsql/client': 0.3.5(bufferutil@4.0.7)(utf-8-validate@6.0.3) + better-sqlite3: 8.7.0 dev: false /electron-to-chromium@1.4.531: @@ -1838,7 +1924,6 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: false /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} @@ -2309,7 +2394,6 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - dev: false /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -2358,6 +2442,14 @@ packages: reusify: 1.0.4 dev: true + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2365,6 +2457,9 @@ packages: flat-cache: 3.1.0 dev: true + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2408,13 +2503,19 @@ packages: mime-types: 2.1.35 dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + /fraction.js@4.3.6: resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} dev: false /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2478,7 +2579,6 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -2662,7 +2762,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} @@ -2694,7 +2793,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -2906,6 +3004,10 @@ packages: hasBin: true dev: true + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: false + /js-cookie@3.0.1: resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} engines: {node: '>=12'} @@ -2981,6 +3083,21 @@ packages: type-check: 0.4.0 dev: true + /libsql@0.1.24: + resolution: {integrity: sha512-Pcq9W3bQsrb8gLycc7vai19rWSoWc/RrKes35PxECe8UOV3JS51VmrXNrFUZCtpsPLQuasghtEOGT95raZ7YHA==} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + optionalDependencies: + '@libsql/darwin-arm64': 0.1.24 + '@libsql/darwin-x64': 0.1.24 + '@libsql/linux-x64-gnu': 0.1.24 + '@libsql/linux-x64-musl': 0.1.24 + '@libsql/win32-x64-msvc': 0.1.24 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -3085,7 +3202,6 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3112,7 +3228,6 @@ packages: /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -3137,7 +3252,6 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3208,12 +3322,16 @@ packages: engines: {node: '>=10'} dependencies: semver: 7.5.4 - dev: false /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + /node-fetch-native@1.0.1: resolution: {integrity: sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==} dev: false @@ -3230,6 +3348,15 @@ packages: whatwg-url: 5.0.0 dev: false + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + /node-gyp-build@4.6.1: resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true @@ -3360,9 +3487,6 @@ packages: p-limit: 3.1.0 dev: true - /packet-reader@1.0.0: - resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3398,62 +3522,6 @@ packages: engines: {node: '>=8'} dev: true - /pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - requiresBuild: true - optional: true - - /pg-connection-string@2.6.2: - resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - - /pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - /pg-pool@3.6.1(pg@8.11.3): - resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} - peerDependencies: - pg: '>=8.0' - dependencies: - pg: 8.11.3 - - /pg-protocol@1.6.0: - resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} - - /pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - /pg@8.11.3: - resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - - /pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - dependencies: - split2: 4.2.0 - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -3549,24 +3617,6 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - /postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - /postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - /postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - dependencies: - xtend: 4.0.2 - /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -3584,7 +3634,6 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -3604,7 +3653,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -3652,7 +3700,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} @@ -3696,7 +3743,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -3801,7 +3847,6 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -3875,7 +3920,6 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} @@ -3883,7 +3927,6 @@ packages: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: false /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3940,10 +3983,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -3999,7 +4038,6 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: false /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -4016,7 +4054,6 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: false /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -4139,7 +4176,6 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: false /tar-fs@3.0.4: resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} @@ -4158,7 +4194,6 @@ packages: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false /tar-stream@3.1.6: resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} @@ -4257,7 +4292,6 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: false /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -4391,6 +4425,11 @@ packages: graceful-fs: 4.2.11 dev: false + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /webcrypto-core@1.7.7: resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} dependencies: @@ -4495,9 +4534,21 @@ packages: utf-8-validate: 6.0.3 dev: false - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + /ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 + dev: false /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} From 28145353bd4c3579b51a4f8a8a0e2d702898573f Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Mon, 2 Oct 2023 19:35:19 -0600 Subject: [PATCH 2/2] 3.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 85af42e..01a5931 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sprintpadawan", - "version": "3.0.2", + "version": "3.1.0", "description": "Plan. Sprint. Repeat.", "private": true, "scripts": {