diff --git a/.env.example b/.env.example
index 2ee83ee87..36a7e2f14 100644
--- a/.env.example
+++ b/.env.example
@@ -5,10 +5,7 @@
# If you are cloning this repo, create a copy of this file named `.env` and populate it with your secrets.
# The database URL is used to connect to your PlanetScale database.
-DB_HOST='aws.connect.psdb.cloud'
-DB_NAME='YOUR_DB_NAME'
-DB_USERNAME=''
-DB_PASSWORD='pscale_pw_'
+DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE'
# @see https://next-auth.js.org/configuration/options#nextauth_url
AUTH_URL='http://localhost:3000'
diff --git a/.gitignore b/.gitignore
index dedd72512..a9669defa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,3 +42,6 @@ yarn-error.log*
# turbo
.turbo
+
+# database
+db.sqlite
\ No newline at end of file
diff --git a/apps/nextjs/next.config.mjs b/apps/nextjs/next.config.mjs
index 97bea3aee..ffdb573aa 100644
--- a/apps/nextjs/next.config.mjs
+++ b/apps/nextjs/next.config.mjs
@@ -6,10 +6,13 @@ import "@alparr/auth/env.mjs";
const config = {
reactStrictMode: true,
/** Enables hot reloading for local packages without a build step */
- transpilePackages: ["@alparr/api", "@alparr/auth", "@alparr/db"],
+ transpilePackages: ["@alparr/api", "@alparr/auth", "@alparr/db", "@alparr/ui"],
/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },
+ experimental: {
+ optimizePackageImports: ['@mantine/core', '@mantine/hooks'],
+ },
};
export default config;
diff --git a/apps/nextjs/src/app/page.tsx b/apps/nextjs/src/app/page.tsx
index 8af6b3e8a..41e2206c2 100644
--- a/apps/nextjs/src/app/page.tsx
+++ b/apps/nextjs/src/app/page.tsx
@@ -1,10 +1,14 @@
+import { db } from "@alparr/db";
import { Button, Stack, Title } from "@mantine/core";
-export default function HomePage() {
+export default async function HomePage() {
+ const users = await db.query.users.findMany();
+
return (
Home
Test
+ {JSON.stringify(users)}
);
}
diff --git a/apps/nextjs/src/env.mjs b/apps/nextjs/src/env.mjs
index 3adac3a4b..f098ee199 100644
--- a/apps/nextjs/src/env.mjs
+++ b/apps/nextjs/src/env.mjs
@@ -14,10 +14,7 @@ export const env = createEnv({
* built with invalid env vars.
*/
server: {
- DB_USERNAME: z.string(),
- DB_PASSWORD: z.string(),
- DB_HOST: z.string(),
- DB_NAME: z.string(),
+ DB_URL: z.string(),
},
/**
* Specify your client-side environment variables schema here.
@@ -32,10 +29,7 @@ export const env = createEnv({
runtimeEnv: {
VERCEL_URL: process.env.VERCEL_URL,
PORT: process.env.PORT,
- DB_USERNAME: process.env.DB_USERNAME,
- DB_PASSWORD: process.env.DB_PASSWORD,
- DB_HOST: process.env.DB_HOST,
- DB_NAME: process.env.DB_NAME,
+ DB_URL: process.env.DB_URL,
// NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,
},
skipValidation:
diff --git a/packages/db/drizzle.config.ts b/packages/db/drizzle.config.ts
index 47c9afe36..61d448cde 100644
--- a/packages/db/drizzle.config.ts
+++ b/packages/db/drizzle.config.ts
@@ -3,21 +3,8 @@ import type { Config } from "drizzle-kit";
dotenv.config({ path: "../../.env" });
-const uri = [
- "mysql://",
- process.env.DB_USERNAME,
- ":",
- process.env.DB_PASSWORD,
- "@",
- process.env.DB_HOST,
- ":3306/",
- process.env.DB_NAME,
- '?ssl={"rejectUnauthorized":true}',
-].join("");
-
export default {
schema: "./schema",
- driver: "mysql2",
- dbCredentials: { uri },
- tablesFilter: ["t3turbo_*"],
+ driver: "better-sqlite",
+ dbCredentials: { url: process.env.DB_URL! },
} satisfies Config;
diff --git a/packages/db/index.ts b/packages/db/index.ts
index 746768317..aac19b480 100644
--- a/packages/db/index.ts
+++ b/packages/db/index.ts
@@ -1,20 +1,13 @@
-import { Client } from "@planetscale/database";
-import { drizzle } from "drizzle-orm/planetscale-serverless";
+import Database from 'better-sqlite3';
+import { drizzle } from "drizzle-orm/better-sqlite3";
-import * as auth from "./schema/auth";
-import * as post from "./schema/post";
+import * as sqliteSchema from "./schema/sqlite";
-export const schema = { ...auth, ...post };
-export { mySqlTable as tableCreator } from "./schema/_table";
+export const schema = sqliteSchema;
export * from "drizzle-orm";
-export const db = drizzle(
- new Client({
- host: process.env.DB_HOST,
- username: process.env.DB_USERNAME,
- password: process.env.DB_PASSWORD,
- }).connection(),
- { schema },
-);
+const sqlite = new Database(process.env.DB_URL!);
+
+export const db = drizzle(sqlite, { schema });
diff --git a/packages/db/package.json b/packages/db/package.json
index 075c6629b..0ba18f250 100644
--- a/packages/db/package.json
+++ b/packages/db/package.json
@@ -9,12 +9,13 @@
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
- "push": "drizzle-kit push:mysql",
+ "push": "drizzle-kit push:sqlite",
"studio": "drizzle-kit studio",
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@planetscale/database": "^1.11.0",
+ "@types/better-sqlite3": "^7.6.8",
+ "better-sqlite3": "^9.2.2",
"drizzle-orm": "^0.29.1"
},
"devDependencies": {
diff --git a/packages/db/schema/_table.ts b/packages/db/schema/_table.ts
deleted file mode 100644
index 9cde0e1db..000000000
--- a/packages/db/schema/_table.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { mysqlTableCreator } from "drizzle-orm/mysql-core";
-
-/**
- * This is an example of how to use the multi-project schema feature of Drizzle ORM. Use the same
- * database instance for multiple projects.
- *
- * @see https://orm.drizzle.team/docs/goodies#multi-project-schema
- */
-export const mySqlTable = mysqlTableCreator((name) => `t3turbo_${name}`);
diff --git a/packages/db/schema/auth.ts b/packages/db/schema/auth.ts
deleted file mode 100644
index 1e932bf86..000000000
--- a/packages/db/schema/auth.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import type { AdapterAccount } from "@auth/core/adapters";
-import { relations, sql } from "drizzle-orm";
-import {
- index,
- int,
- primaryKey,
- text,
- timestamp,
- varchar,
-} from "drizzle-orm/mysql-core";
-
-import { mySqlTable } from "./_table";
-
-export const users = mySqlTable("user", {
- id: varchar("id", { length: 255 }).notNull().primaryKey(),
- name: varchar("name", { length: 255 }),
- email: varchar("email", { length: 255 }).notNull(),
- emailVerified: timestamp("emailVerified", {
- mode: "date",
- fsp: 3,
- }).default(sql`CURRENT_TIMESTAMP(3)`),
- image: varchar("image", { length: 255 }),
-});
-
-export const usersRelations = relations(users, ({ many }) => ({
- accounts: many(accounts),
-}));
-
-export const accounts = mySqlTable(
- "account",
- {
- userId: varchar("userId", { length: 255 }).notNull(),
- type: varchar("type", { length: 255 })
- .$type()
- .notNull(),
- provider: varchar("provider", { length: 255 }).notNull(),
- providerAccountId: varchar("providerAccountId", { length: 255 }).notNull(),
- refresh_token: varchar("refresh_token", { length: 255 }),
- access_token: varchar("access_token", { length: 255 }),
- expires_at: int("expires_at"),
- token_type: varchar("token_type", { length: 255 }),
- scope: varchar("scope", { length: 255 }),
- id_token: text("id_token"),
- session_state: varchar("session_state", { length: 255 }),
- },
- (account) => ({
- compoundKey: primaryKey(account.provider, account.providerAccountId),
- userIdIdx: index("userId_idx").on(account.userId),
- }),
-);
-
-export const accountsRelations = relations(accounts, ({ one }) => ({
- user: one(users, { fields: [accounts.userId], references: [users.id] }),
-}));
-
-export const sessions = mySqlTable(
- "session",
- {
- sessionToken: varchar("sessionToken", { length: 255 })
- .notNull()
- .primaryKey(),
- userId: varchar("userId", { length: 255 }).notNull(),
- expires: timestamp("expires", { mode: "date" }).notNull(),
- },
- (session) => ({
- userIdIdx: index("userId_idx").on(session.userId),
- }),
-);
-
-export const sessionsRelations = relations(sessions, ({ one }) => ({
- user: one(users, { fields: [sessions.userId], references: [users.id] }),
-}));
-
-export const verificationTokens = mySqlTable(
- "verificationToken",
- {
- identifier: varchar("identifier", { length: 255 }).notNull(),
- token: varchar("token", { length: 255 }).notNull(),
- expires: timestamp("expires", { mode: "date" }).notNull(),
- },
- (vt) => ({
- compoundKey: primaryKey(vt.identifier, vt.token),
- }),
-);
diff --git a/packages/db/schema/post.ts b/packages/db/schema/post.ts
deleted file mode 100644
index 3b26be3ab..000000000
--- a/packages/db/schema/post.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { sql } from "drizzle-orm";
-import { serial, timestamp, varchar } from "drizzle-orm/mysql-core";
-
-import { mySqlTable } from "./_table";
-
-export const post = mySqlTable("post", {
- id: serial("id").primaryKey(),
- title: varchar("name", { length: 256 }).notNull(),
- content: varchar("content", { length: 256 }).notNull(),
- createdAt: timestamp("created_at")
- .default(sql`CURRENT_TIMESTAMP`)
- .notNull(),
- updatedAt: timestamp("updatedAt").onUpdateNow(),
-});
diff --git a/packages/db/schema/sqlite.ts b/packages/db/schema/sqlite.ts
new file mode 100644
index 000000000..aefdb4d7f
--- /dev/null
+++ b/packages/db/schema/sqlite.ts
@@ -0,0 +1,79 @@
+import type { AdapterAccount } from '@auth/core/adapters';
+import type { InferSelectModel } from 'drizzle-orm';
+import { relations } from 'drizzle-orm';
+import { index, integer, primaryKey, sqliteTable, text } from 'drizzle-orm/sqlite-core';
+
+export const users = sqliteTable('user', {
+ id: text('id').notNull().primaryKey(),
+ name: text('name'),
+ email: text('email'),
+ emailVerified: integer('emailVerified', { mode: 'timestamp_ms' }),
+ image: text('image'),
+ password: text('password'),
+ salt: text('salt'),
+});
+
+export const accounts = sqliteTable(
+ 'account',
+ {
+ userId: text('userId')
+ .notNull()
+ .references(() => users.id, { onDelete: 'cascade' }),
+ type: text('type').$type().notNull(),
+ provider: text('provider').notNull(),
+ providerAccountId: text('providerAccountId').notNull(),
+ refresh_token: text('refresh_token'),
+ access_token: text('access_token'),
+ expires_at: integer('expires_at'),
+ token_type: text('token_type'),
+ scope: text('scope'),
+ id_token: text('id_token'),
+ session_state: text('session_state'),
+ },
+ (account) => ({
+ compoundKey: primaryKey({ columns: [account.provider, account.providerAccountId] }),
+ userIdIdx: index('userId_idx').on(account.userId),
+ })
+);
+
+export const sessions = sqliteTable(
+ 'session',
+ {
+ sessionToken: text('sessionToken').notNull().primaryKey(),
+ userId: text('userId')
+ .notNull()
+ .references(() => users.id, { onDelete: 'cascade' }),
+ expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
+ },
+ (session) => ({
+ userIdIdx: index('user_id_idx').on(session.userId),
+ })
+);
+
+export const verificationTokens = sqliteTable(
+ 'verificationToken',
+ {
+ identifier: text('identifier').notNull(),
+ token: text('token').notNull(),
+ expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
+ },
+ (vt) => ({
+ compoundKey: primaryKey({ columns: [vt.identifier, vt.token] }),
+ })
+);
+
+export const accountRelations = relations(accounts, ({ one }) => ({
+ user: one(users, {
+ fields: [accounts.userId],
+ references: [users.id],
+ }),
+}));
+
+export const userRelations = relations(users, ({ many }) => ({
+ accounts: many(accounts),
+}));
+
+export type User = InferSelectModel;
+export type Account = InferSelectModel;
+export type Session = InferSelectModel;
+export type VerificationToken = InferSelectModel;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index addb54829..5e65b5394 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -270,12 +270,15 @@ importers:
packages/db:
dependencies:
- '@planetscale/database':
- specifier: ^1.11.0
- version: 1.11.0
+ '@types/better-sqlite3':
+ specifier: ^7.6.8
+ version: 7.6.8
+ better-sqlite3:
+ specifier: ^9.2.2
+ version: 9.2.2
drizzle-orm:
specifier: ^0.29.1
- version: 0.29.1(@planetscale/database@1.11.0)
+ version: 0.29.1(@types/better-sqlite3@7.6.8)(better-sqlite3@9.2.2)
devDependencies:
'@alparr/eslint-config':
specifier: workspace:^0.2.0
@@ -1698,11 +1701,6 @@ packages:
'@parcel/watcher-win32-x64': 2.3.0
dev: true
- /@planetscale/database@1.11.0:
- resolution: {integrity: sha512-aWbU+D/IRHoDE9975y+Q4c+EwwAWxCPwFId+N1AhQVFXzbeJMkj6KN2iQtoi03elcLMRdfT+V3i9Z4WRw+/oIA==}
- engines: {node: '>=16'}
- dev: false
-
/@popperjs/core@2.11.8:
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: false
@@ -2460,6 +2458,12 @@ packages:
update-check: 1.5.4
dev: true
+ /@types/better-sqlite3@7.6.8:
+ resolution: {integrity: sha512-ASndM4rdGrzk7iXXqyNC4fbwt4UEjpK0i3j4q4FyeQrLAthfB6s7EF135ZJE0qQxtKIMFwmyT6x0switET7uIw==}
+ dependencies:
+ '@types/node': 18.18.13
+ dev: false
+
/@types/eslint@8.44.7:
resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==}
dependencies:
@@ -2512,7 +2516,6 @@ packages:
resolution: {integrity: sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==}
dependencies:
undici-types: 5.26.5
- dev: true
/@types/object.omit@3.0.3:
resolution: {integrity: sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew==}
@@ -3025,13 +3028,20 @@ packages:
/base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- dev: true
/basic-ftp@5.0.3:
resolution: {integrity: sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==}
engines: {node: '>=10.0.0'}
dev: true
+ /better-sqlite3@9.2.2:
+ resolution: {integrity: sha512-qwjWB46il0lsDkeB4rSRI96HyDQr8sxeu1MkBVLMrwusq1KRu4Bpt1TMI+8zIJkDUtZ3umjAkaEjIlokZKWCQw==}
+ requiresBuild: true
+ dependencies:
+ bindings: 1.5.0
+ prebuild-install: 7.1.1
+ dev: false
+
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
@@ -3041,7 +3051,6 @@ packages:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
dependencies:
file-uri-to-path: 1.0.0
- dev: true
/bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
@@ -3049,7 +3058,6 @@ packages:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
- dev: true
/blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
@@ -3096,7 +3104,6 @@ packages:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
- dev: true
/builtin-modules@3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
@@ -3250,6 +3257,10 @@ packages:
fsevents: 2.3.2
dev: true
+ /chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+ dev: false
+
/chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
@@ -3529,10 +3540,16 @@ packages:
dependencies:
ms: 2.1.2
+ /decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ 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: true
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -3641,7 +3658,6 @@ packages:
/detect-libc@2.0.2:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
engines: {node: '>=8'}
- dev: true
/detect-node-es@1.1.0:
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
@@ -3751,7 +3767,7 @@ packages:
- utf-8-validate
dev: true
- /drizzle-orm@0.29.1(@planetscale/database@1.11.0):
+ /drizzle-orm@0.29.1(@types/better-sqlite3@7.6.8)(better-sqlite3@9.2.2):
resolution: {integrity: sha512-yItc4unfHnk8XkDD3/bdC63vdboTY7e7I03lCF1OJYABXSIfQYU9BFTQJXMMovVeb3T1/OJWwfW/70T1XPnuUA==}
peerDependencies:
'@aws-sdk/client-rds-data': '>=3'
@@ -3813,7 +3829,8 @@ packages:
sqlite3:
optional: true
dependencies:
- '@planetscale/database': 1.11.0
+ '@types/better-sqlite3': 7.6.8
+ better-sqlite3: 9.2.2
dev: false
/duplexer@0.1.2:
@@ -3841,6 +3858,12 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ dependencies:
+ once: 1.4.0
+ dev: false
+
/entities@3.0.1:
resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
engines: {node: '>=0.12'}
@@ -4383,6 +4406,11 @@ packages:
engines: {node: '>=6'}
dev: true
+ /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==}
dependencies:
@@ -4451,7 +4479,6 @@ packages:
/file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
- dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
@@ -4491,6 +4518,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+ dev: false
+
/fs-extra@10.1.0:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
engines: {node: '>=12'}
@@ -4648,6 +4679,10 @@ packages:
- supports-color
dev: true
+ /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==}
engines: {node: '>= 6'}
@@ -4941,7 +4976,6 @@ packages:
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- dev: true
/ignore@5.2.4:
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
@@ -4974,7 +5008,6 @@ packages:
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- dev: true
/inquirer@7.3.3:
resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
@@ -5689,6 +5722,11 @@ packages:
engines: {node: '>=6'}
dev: true
+ /mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+ dev: false
+
/miniflare@3.20231030.2:
resolution: {integrity: sha512-+DYdMqWlUaY4wBylIjewNu8OVsPFquYjQkxoSb2jGIMBmlKaef65Hn2Bu8sub5tQzQ8tLO0FRklmD2Upx0HCCQ==}
engines: {node: '>=16.13'}
@@ -5760,6 +5798,10 @@ packages:
yallist: 4.0.0
dev: true
+ /mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+ dev: false
+
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
dependencies:
@@ -5807,6 +5849,10 @@ packages:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ /napi-build-utils@1.0.2:
+ resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
+ dev: false
+
/napi-wasm@1.1.0:
resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==}
dev: true
@@ -5978,6 +6024,13 @@ packages:
lower-case: 1.1.4
dev: true
+ /node-abi@3.52.0:
+ resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ semver: 7.5.4
+ dev: false
+
/node-addon-api@7.0.0:
resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==}
dev: true
@@ -6475,6 +6528,25 @@ packages:
resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==}
dev: false
+ /prebuild-install@7.1.1:
+ resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ detect-libc: 2.0.2
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 1.0.2
+ node-abi: 3.52.0
+ pump: 3.0.0
+ rc: 1.2.8
+ 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==}
engines: {node: '>= 0.8.0'}
@@ -6671,6 +6743,13 @@ packages:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: true
+ /pump@3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: false
+
/punycode@2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
@@ -6712,7 +6791,6 @@ packages:
ini: 1.3.8
minimist: 1.2.8
strip-json-comments: 2.0.1
- dev: true
/react-dom@18.2.0(react@18.2.0):
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
@@ -6853,7 +6931,6 @@ packages:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
- dev: true
/readdir-glob@1.1.3:
resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
@@ -7094,7 +7171,6 @@ packages:
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- dev: true
/safe-regex-test@1.0.0:
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
@@ -7226,6 +7302,18 @@ packages:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
+ /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==}
+ dependencies:
+ decompress-response: 6.0.0
+ once: 1.4.0
+ simple-concat: 1.0.1
+ dev: false
+
/sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true
@@ -7398,7 +7486,6 @@ packages:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
- dev: true
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
@@ -7419,7 +7506,6 @@ packages:
/strip-json-comments@2.0.1:
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
- dev: true
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
@@ -7495,6 +7581,26 @@ packages:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: false
+ /tar-fs@2.1.1:
+ resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 2.2.0
+ dev: false
+
+ /tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ 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==}
dependencies:
@@ -7651,6 +7757,12 @@ packages:
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
+ /tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
/turbo-darwin-64@1.10.16:
resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==}
cpu: [x64]
@@ -7823,7 +7935,6 @@ packages:
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
- dev: true
/undici@5.27.2:
resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==}