From 026c9c7f42588ec3bd22a534c04ec6831f52eeb4 Mon Sep 17 00:00:00 2001 From: Andrei Voinea <8058187+andreivcodes@users.noreply.github.com> Date: Thu, 27 Jul 2023 21:06:19 +0300 Subject: [PATCH] feat: migrate to drizzle part 1 of very many --- apps/shortie/package.json | 1 - apps/shortie/postcss.config.js | 1 - apps/shortie/src/app/[...slug]/page.tsx | 60 +- apps/shortie/src/app/globals.css | 4 - apps/shortie/tailwind.config.js | 18 - apps/shortie/tsconfig.json | 5 +- packages/database/drizzle.config.ts | 12 + packages/database/package.json | 4 + .../db/migrations/0000_legal_colleen_wing.sql | 184 +++ .../src/db/migrations/meta/0000_snapshot.json | 1201 +++++++++++++++++ .../src/db/migrations/meta/_journal.json | 13 + packages/database/src/db/migrations/schema.ts | 346 +++++ packages/database/src/index.ts | 24 +- packages/database/tsconfig.json | 4 +- yarn.lock | 454 ++++++- 15 files changed, 2255 insertions(+), 76 deletions(-) delete mode 100644 apps/shortie/tailwind.config.js create mode 100644 packages/database/drizzle.config.ts create mode 100644 packages/database/src/db/migrations/0000_legal_colleen_wing.sql create mode 100644 packages/database/src/db/migrations/meta/0000_snapshot.json create mode 100644 packages/database/src/db/migrations/meta/_journal.json create mode 100644 packages/database/src/db/migrations/schema.ts diff --git a/apps/shortie/package.json b/apps/shortie/package.json index a4fa40cc6..b2ee8f158 100644 --- a/apps/shortie/package.json +++ b/apps/shortie/package.json @@ -38,7 +38,6 @@ "eslint-config-next": "^13.4.12", "postcss": "^8.4.27", "prettier": "^3", - "tailwindcss": "^3.3.3", "typescript": "5.1.6" }, "packageManager": "yarn@1.22.19", diff --git a/apps/shortie/postcss.config.js b/apps/shortie/postcss.config.js index 12a703d90..a47ef4f95 100644 --- a/apps/shortie/postcss.config.js +++ b/apps/shortie/postcss.config.js @@ -1,6 +1,5 @@ module.exports = { plugins: { - tailwindcss: {}, autoprefixer: {}, }, }; diff --git a/apps/shortie/src/app/[...slug]/page.tsx b/apps/shortie/src/app/[...slug]/page.tsx index 8debf934d..4a239dd34 100644 --- a/apps/shortie/src/app/[...slug]/page.tsx +++ b/apps/shortie/src/app/[...slug]/page.tsx @@ -1,4 +1,4 @@ -import { prisma } from "@senate/database"; +import { db, proposal, user, like } from "@senate/database"; import { redirect } from "next/navigation"; import { PostHog } from "posthog-node"; @@ -7,64 +7,38 @@ const posthog = new PostHog(process.env.NEXT_PUBLIC_POSTHOG_KEY || "", { }); async function getProposalId(slug: string) { - const proposal = await prisma.proposal.findFirst({ - where: { - id: { - endsWith: slug, - }, - }, - select: { - id: true, - }, + const p = await db.query.proposal.findFirst({ + where: like(proposal.id, `%${slug}`), }); - return proposal ? proposal.id : ""; + return p ? p.id : ""; } async function getUser(slug: string) { - const user = await prisma.user.findFirst({ - where: { - id: { - endsWith: slug, - }, - }, - }); + const [u] = await db + .select() + .from(user) + .limit(1) + .where(like(user.id, `%${slug}`)); - return user; + return u; } async function getProposal(slug: string) { - const proposal = await prisma.proposal.findFirst({ - where: { - id: { - endsWith: slug, - }, - }, - include: { - dao: { - select: { - name: true, - }, - }, - }, + const p = await db.query.proposal.findFirst({ + where: like(proposal.id, `%${slug}`), + with: { dao: true }, }); - return proposal; + return p; } async function getProposalUrl(slug: string) { - const proposal = await prisma.proposal.findFirst({ - where: { - id: { - endsWith: slug, - }, - }, - select: { - url: true, - }, + const p = await db.query.proposal.findFirst({ + where: like(proposal.id, `%${slug}`), }); - return proposal ? proposal.url : ""; + return p?.url ?? ""; } async function log(type: Type, proposalId: string, userId: string) { diff --git a/apps/shortie/src/app/globals.css b/apps/shortie/src/app/globals.css index fd81e8858..2b602f66b 100644 --- a/apps/shortie/src/app/globals.css +++ b/apps/shortie/src/app/globals.css @@ -1,7 +1,3 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - :root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 214, 219, 220; diff --git a/apps/shortie/tailwind.config.js b/apps/shortie/tailwind.config.js deleted file mode 100644 index 798035013..000000000 --- a/apps/shortie/tailwind.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/app/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: { - backgroundImage: { - "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", - "gradient-conic": - "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", - }, - }, - }, - plugins: [], -}; diff --git a/apps/shortie/tsconfig.json b/apps/shortie/tsconfig.json index 9185e2714..e9c37d57b 100644 --- a/apps/shortie/tsconfig.json +++ b/apps/shortie/tsconfig.json @@ -28,8 +28,9 @@ "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", - ".eslintrc.cjs", - "prettier.config.cjs" + "./eslintrc.cjs", + "./prettier.config.cjs", + "./postcss.config.js" ], "exclude": ["node_modules"] } diff --git a/packages/database/drizzle.config.ts b/packages/database/drizzle.config.ts new file mode 100644 index 000000000..b35873852 --- /dev/null +++ b/packages/database/drizzle.config.ts @@ -0,0 +1,12 @@ +import type { Config } from "drizzle-kit"; +import "dotenv/config"; + +export default { + schema: "./src/db/schema.ts", + out: "./src/db/migrations", + dbCredentials: { + connectionString: process.env.DATABASE_URL, + }, + driver: "mysql2", + breakpoints: true, +} satisfies Config; diff --git a/packages/database/package.json b/packages/database/package.json index 262183f6e..2e0fd8878 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -26,8 +26,11 @@ "update": "ncu -u" }, "dependencies": { + "@planetscale/database": "^1.10.0", "@prisma/client": "5.0.0", + "drizzle-orm": "^0.27.2", "ethers": "^6.6.5", + "mysql2": "^3.5.2", "type-fest": "^4.0.0" }, "devDependencies": { @@ -35,6 +38,7 @@ "@types/prettier": "^2.7.3", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", + "drizzle-kit": "^0.19.12", "eslint": "^8.45.0", "prettier": "^3.0.0", "prisma": "5.0.0", diff --git a/packages/database/src/db/migrations/0000_legal_colleen_wing.sql b/packages/database/src/db/migrations/0000_legal_colleen_wing.sql new file mode 100644 index 000000000..6bd636cac --- /dev/null +++ b/packages/database/src/db/migrations/0000_legal_colleen_wing.sql @@ -0,0 +1,184 @@ +-- Current sql file was generated after introspecting the database +-- If you want to run this migration please uncomment this code before executing migrations +/* +CREATE TABLE `_userTovoter` ( + `A` varchar(191) NOT NULL, + `B` varchar(191) NOT NULL, + CONSTRAINT `_userTovoter_AB_unique` UNIQUE(`A`,`B`) +); +--> statement-breakpoint +CREATE TABLE `config` ( + `key` varchar(191) NOT NULL, + `value` int NOT NULL, + CONSTRAINT `config_key` PRIMARY KEY(`key`) +); +--> statement-breakpoint +CREATE TABLE `dao` ( + `id` varchar(191) NOT NULL, + `name` varchar(191) NOT NULL, + `picture` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + `quorumwarningemailsupport` tinyint NOT NULL DEFAULT 0, + CONSTRAINT `dao_id` PRIMARY KEY(`id`), + CONSTRAINT `dao_name_key` UNIQUE(`name`) +); +--> statement-breakpoint +CREATE TABLE `daohandler` ( + `id` varchar(191) NOT NULL, + `type` enum('AAVE_CHAIN','COMPOUND_CHAIN','UNISWAP_CHAIN','ENS_CHAIN','GITCOIN_CHAIN','HOP_CHAIN','DYDX_CHAIN','MAKER_EXECUTIVE','MAKER_POLL','MAKER_POLL_ARBITRUM','INTEREST_PROTOCOL_CHAIN','ZEROX_PROTOCOL_CHAIN','SNAPSHOT') NOT NULL, + `decoder` json NOT NULL, + `chainindex` bigint DEFAULT 0, + `snapshotindex` datetime(3) DEFAULT '2000-01-01 00:00:00.000', + `uptodate` tinyint NOT NULL DEFAULT 0, + `daoid` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `daohandler_id` PRIMARY KEY(`id`), + CONSTRAINT `daohandler_daoid_type_key` UNIQUE(`daoid`,`type`) +); +--> statement-breakpoint +CREATE TABLE `notification` ( + `id` varchar(191) NOT NULL, + `userid` varchar(191) NOT NULL, + `proposalid` varchar(191), + `type` enum('QUORUM_NOT_REACHED_EMAIL','BULLETIN_EMAIL','NEW_PROPOSAL_DISCORD','FIRST_REMINDER_DISCORD','SECOND_REMINDER_DISCORD','THIRD_REMINDER_DISCORD','ENDED_PROPOSAL_DISCORD','NEW_PROPOSAL_TELEGRAM','FIRST_REMINDER_TELEGRAM','SECOND_REMINDER_TELEGRAM','THIRD_REMINDER_TELEGRAM','ENDED_PROPOSAL_TELEGRAM') NOT NULL, + `dispatchstatus` enum('NOT_DISPATCHED','FIRST_RETRY','SECOND_RETRY','THIRD_RETRY','DISPATCHED','DELETED','FAILED') NOT NULL DEFAULT 'NOT_DISPATCHED', + `emailmessageid` varchar(191), + `discordmessagelink` varchar(191), + `discordmessageid` varchar(191), + `telegramchatid` varchar(191), + `telegrammessageid` varchar(191), + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `emailtemplate` varchar(191), + CONSTRAINT `notification_id` PRIMARY KEY(`id`), + CONSTRAINT `notification_userid_proposalid_type_key` UNIQUE(`userid`,`proposalid`,`type`) +); +--> statement-breakpoint +CREATE TABLE `proposal` ( + `id` varchar(191) NOT NULL, + `name` varchar(2048) NOT NULL, + `externalid` varchar(191) NOT NULL, + `choices` json NOT NULL, + `scores` json NOT NULL, + `scorestotal` json NOT NULL, + `quorum` json NOT NULL, + `state` enum('PENDING','ACTIVE','CANCELED','DEFEATED','SUCCEEDED','QUEUED','EXPIRED','EXECUTED','HIDDEN','UNKNOWN') NOT NULL, + `blockcreated` bigint DEFAULT 0, + `timecreated` datetime(3) NOT NULL, + `timestart` datetime(3) NOT NULL, + `timeend` datetime(3) NOT NULL, + `url` varchar(1024) NOT NULL, + `daohandlerid` varchar(191) NOT NULL, + `daoid` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + `visible` tinyint NOT NULL DEFAULT 1, + CONSTRAINT `proposal_id` PRIMARY KEY(`id`), + CONSTRAINT `proposal_externalid_daoid_key` UNIQUE(`externalid`,`daoid`) +); +--> statement-breakpoint +CREATE TABLE `subscription` ( + `id` varchar(191) NOT NULL, + `userid` varchar(191) NOT NULL, + `daoid` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `subscription_id` PRIMARY KEY(`id`), + CONSTRAINT `subscription_userid_daoid_key` UNIQUE(`userid`,`daoid`) +); +--> statement-breakpoint +CREATE TABLE `user` ( + `id` varchar(191) NOT NULL, + `address` varchar(191), + `email` varchar(191), + `verifiedaddress` tinyint NOT NULL DEFAULT 0, + `verifiedemail` tinyint NOT NULL DEFAULT 0, + `isuniswapuser` enum('DISABLED','VERIFICATION','ENABLED') NOT NULL DEFAULT 'DISABLED', + `isaaveuser` enum('DISABLED','VERIFICATION','ENABLED') NOT NULL DEFAULT 'DISABLED', + `challengecode` varchar(191), + `emaildailybulletin` tinyint NOT NULL DEFAULT 0, + `emptydailybulletin` tinyint NOT NULL DEFAULT 0, + `emailquorumwarning` tinyint NOT NULL DEFAULT 1, + `discordnotifications` tinyint NOT NULL DEFAULT 0, + `discordreminders` tinyint NOT NULL DEFAULT 1, + `discordincludevotes` tinyint NOT NULL DEFAULT 1, + `discordwebhook` varchar(191) NOT NULL DEFAULT '', + `telegramnotifications` tinyint NOT NULL DEFAULT 0, + `telegramreminders` tinyint NOT NULL DEFAULT 1, + `telegramincludevotes` tinyint NOT NULL DEFAULT 1, + `telegramchatid` varchar(191) NOT NULL DEFAULT '', + `acceptedterms` tinyint NOT NULL DEFAULT 0, + `acceptedtermstimestamp` datetime(3), + `firstactive` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `lastactive` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `sessioncount` int NOT NULL DEFAULT 0, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `user_id` PRIMARY KEY(`id`), + CONSTRAINT `user_address_key` UNIQUE(`address`), + CONSTRAINT `user_email_key` UNIQUE(`email`) +); +--> statement-breakpoint +CREATE TABLE `vote` ( + `id` varchar(191) NOT NULL, + `choice` json NOT NULL, + `votingpower` json NOT NULL, + `reason` varchar(2048) NOT NULL, + `voteraddress` varchar(191) NOT NULL, + `proposalid` varchar(191) NOT NULL, + `daoid` varchar(191) NOT NULL, + `daohandlerid` varchar(191) NOT NULL, + `blockcreated` bigint DEFAULT 0, + `timecreated` datetime(3), + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `vote_id` PRIMARY KEY(`id`), + CONSTRAINT `vote_voteraddress_daoid_proposalid_key` UNIQUE(`voteraddress`,`daoid`,`proposalid`) +); +--> statement-breakpoint +CREATE TABLE `voter` ( + `id` varchar(191) NOT NULL, + `address` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `voter_id` PRIMARY KEY(`id`), + CONSTRAINT `voter_address_key` UNIQUE(`address`) +); +--> statement-breakpoint +CREATE TABLE `voterhandler` ( + `id` varchar(191) NOT NULL, + `chainindex` bigint DEFAULT 0, + `snapshotindex` datetime(3) DEFAULT '2000-01-01 00:00:00.000', + `uptodate` tinyint NOT NULL DEFAULT 0, + `daohandlerid` varchar(191) NOT NULL, + `voterid` varchar(191) NOT NULL, + `createdat` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedat` datetime(3) NOT NULL, + CONSTRAINT `voterhandler_id` PRIMARY KEY(`id`), + CONSTRAINT `voterhandler_voterid_daohandlerid_key` UNIQUE(`voterid`,`daohandlerid`) +); +--> statement-breakpoint +CREATE INDEX `_userTovoter_B_index` ON `_userTovoter` (`B`);--> statement-breakpoint +CREATE INDEX `config_key_idx` ON `config` (`key`);--> statement-breakpoint +CREATE INDEX `dao_name_idx` ON `dao` (`name`);--> statement-breakpoint +CREATE INDEX `daohandler_daoid_idx` ON `daohandler` (`daoid`);--> statement-breakpoint +CREATE INDEX `notification_userid_idx` ON `notification` (`userid`);--> statement-breakpoint +CREATE INDEX `notification_type_idx` ON `notification` (`type`);--> statement-breakpoint +CREATE INDEX `notification_proposalid_idx` ON `notification` (`proposalid`);--> statement-breakpoint +CREATE INDEX `notification_dispatchstatus_idx` ON `notification` (`dispatchstatus`);--> statement-breakpoint +CREATE INDEX `proposal_daoid_idx` ON `proposal` (`daoid`);--> statement-breakpoint +CREATE INDEX `proposal_daohandlerid_idx` ON `proposal` (`daohandlerid`);--> statement-breakpoint +CREATE INDEX `subscription_daoid_idx` ON `subscription` (`daoid`);--> statement-breakpoint +CREATE INDEX `subscription_userid_idx` ON `subscription` (`userid`);--> statement-breakpoint +CREATE INDEX `user_email_idx` ON `user` (`email`);--> statement-breakpoint +CREATE INDEX `user_address_idx` ON `user` (`address`);--> statement-breakpoint +CREATE INDEX `vote_proposalid_idx` ON `vote` (`proposalid`);--> statement-breakpoint +CREATE INDEX `vote_daoid_idx` ON `vote` (`daoid`);--> statement-breakpoint +CREATE INDEX `vote_voteraddress_idx` ON `vote` (`voteraddress`);--> statement-breakpoint +CREATE INDEX `vote_daohandlerid_idx` ON `vote` (`daohandlerid`);--> statement-breakpoint +CREATE INDEX `voter_address_idx` ON `voter` (`address`);--> statement-breakpoint +CREATE INDEX `voterhandler_daohandlerid_idx` ON `voterhandler` (`daohandlerid`);--> statement-breakpoint +CREATE INDEX `voterhandler_voterid_idx` ON `voterhandler` (`voterid`); +*/ \ No newline at end of file diff --git a/packages/database/src/db/migrations/meta/0000_snapshot.json b/packages/database/src/db/migrations/meta/0000_snapshot.json new file mode 100644 index 000000000..71a65f094 --- /dev/null +++ b/packages/database/src/db/migrations/meta/0000_snapshot.json @@ -0,0 +1,1201 @@ +{ + "id": "00000000-0000-0000-0000-000000000000", + "prevId": "", + "version": "5", + "dialect": "mysql", + "tables": { + "_userTovoter": { + "name": "_userTovoter", + "columns": { + "A": { + "autoincrement": false, + "name": "A", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "B": { + "autoincrement": false, + "name": "B", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": {}, + "indexes": { + "_userTovoter_B_index": { + "name": "_userTovoter_B_index", + "columns": [ + "B" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "_userTovoter_AB_unique": { + "name": "_userTovoter_AB_unique", + "columns": [ + "A", + "B" + ] + } + } + }, + "config": { + "name": "config", + "columns": { + "key": { + "autoincrement": false, + "name": "key", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "value": { + "autoincrement": false, + "name": "value", + "type": "int", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "config_key": { + "name": "config_key", + "columns": [ + "key" + ] + } + }, + "indexes": { + "config_key_idx": { + "name": "config_key_idx", + "columns": [ + "key" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": {} + }, + "dao": { + "name": "dao", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "autoincrement": false, + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "picture": { + "autoincrement": false, + "name": "picture", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "quorumwarningemailsupport": { + "default": 0, + "autoincrement": false, + "name": "quorumwarningemailsupport", + "type": "tinyint", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "dao_id": { + "name": "dao_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "dao_name_idx": { + "name": "dao_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "dao_name_key": { + "name": "dao_name_key", + "columns": [ + "name" + ] + } + } + }, + "daohandler": { + "name": "daohandler", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "autoincrement": false, + "name": "type", + "type": "enum('AAVE_CHAIN','COMPOUND_CHAIN','UNISWAP_CHAIN','ENS_CHAIN','GITCOIN_CHAIN','HOP_CHAIN','DYDX_CHAIN','MAKER_EXECUTIVE','MAKER_POLL','MAKER_POLL_ARBITRUM','INTEREST_PROTOCOL_CHAIN','ZEROX_PROTOCOL_CHAIN','SNAPSHOT')", + "primaryKey": false, + "notNull": true + }, + "decoder": { + "autoincrement": false, + "name": "decoder", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "chainindex": { + "default": 0, + "autoincrement": false, + "name": "chainindex", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "snapshotindex": { + "default": "'2000-01-01 00:00:00.000'", + "autoincrement": false, + "name": "snapshotindex", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false + }, + "uptodate": { + "default": 0, + "autoincrement": false, + "name": "uptodate", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "daoid": { + "autoincrement": false, + "name": "daoid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "daohandler_id": { + "name": "daohandler_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "daohandler_daoid_idx": { + "name": "daohandler_daoid_idx", + "columns": [ + "daoid" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "daohandler_daoid_type_key": { + "name": "daohandler_daoid_type_key", + "columns": [ + "daoid", + "type" + ] + } + } + }, + "notification": { + "name": "notification", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "userid": { + "autoincrement": false, + "name": "userid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "proposalid": { + "autoincrement": false, + "name": "proposalid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "type": { + "autoincrement": false, + "name": "type", + "type": "enum('QUORUM_NOT_REACHED_EMAIL','BULLETIN_EMAIL','NEW_PROPOSAL_DISCORD','FIRST_REMINDER_DISCORD','SECOND_REMINDER_DISCORD','THIRD_REMINDER_DISCORD','ENDED_PROPOSAL_DISCORD','NEW_PROPOSAL_TELEGRAM','FIRST_REMINDER_TELEGRAM','SECOND_REMINDER_TELEGRAM','THIRD_REMINDER_TELEGRAM','ENDED_PROPOSAL_TELEGRAM')", + "primaryKey": false, + "notNull": true + }, + "dispatchstatus": { + "default": "'NOT_DISPATCHED'", + "autoincrement": false, + "name": "dispatchstatus", + "type": "enum('NOT_DISPATCHED','FIRST_RETRY','SECOND_RETRY','THIRD_RETRY','DISPATCHED','DELETED','FAILED')", + "primaryKey": false, + "notNull": true + }, + "emailmessageid": { + "autoincrement": false, + "name": "emailmessageid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "discordmessagelink": { + "autoincrement": false, + "name": "discordmessagelink", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "discordmessageid": { + "autoincrement": false, + "name": "discordmessageid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "telegramchatid": { + "autoincrement": false, + "name": "telegramchatid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "telegrammessageid": { + "autoincrement": false, + "name": "telegrammessageid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "emailtemplate": { + "autoincrement": false, + "name": "emailtemplate", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "compositePrimaryKeys": { + "notification_id": { + "name": "notification_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "notification_userid_idx": { + "name": "notification_userid_idx", + "columns": [ + "userid" + ], + "isUnique": false + }, + "notification_type_idx": { + "name": "notification_type_idx", + "columns": [ + "type" + ], + "isUnique": false + }, + "notification_proposalid_idx": { + "name": "notification_proposalid_idx", + "columns": [ + "proposalid" + ], + "isUnique": false + }, + "notification_dispatchstatus_idx": { + "name": "notification_dispatchstatus_idx", + "columns": [ + "dispatchstatus" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "notification_userid_proposalid_type_key": { + "name": "notification_userid_proposalid_type_key", + "columns": [ + "userid", + "proposalid", + "type" + ] + } + } + }, + "proposal": { + "name": "proposal", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "autoincrement": false, + "name": "name", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": true + }, + "externalid": { + "autoincrement": false, + "name": "externalid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "choices": { + "autoincrement": false, + "name": "choices", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "scores": { + "autoincrement": false, + "name": "scores", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "scorestotal": { + "autoincrement": false, + "name": "scorestotal", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "quorum": { + "autoincrement": false, + "name": "quorum", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "state": { + "autoincrement": false, + "name": "state", + "type": "enum('PENDING','ACTIVE','CANCELED','DEFEATED','SUCCEEDED','QUEUED','EXPIRED','EXECUTED','HIDDEN','UNKNOWN')", + "primaryKey": false, + "notNull": true + }, + "blockcreated": { + "default": 0, + "autoincrement": false, + "name": "blockcreated", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "timecreated": { + "autoincrement": false, + "name": "timecreated", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "timestart": { + "autoincrement": false, + "name": "timestart", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "timeend": { + "autoincrement": false, + "name": "timeend", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "url": { + "autoincrement": false, + "name": "url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "daohandlerid": { + "autoincrement": false, + "name": "daohandlerid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "daoid": { + "autoincrement": false, + "name": "daoid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "visible": { + "default": 1, + "autoincrement": false, + "name": "visible", + "type": "tinyint", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "proposal_id": { + "name": "proposal_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "proposal_daoid_idx": { + "name": "proposal_daoid_idx", + "columns": [ + "daoid" + ], + "isUnique": false + }, + "proposal_daohandlerid_idx": { + "name": "proposal_daohandlerid_idx", + "columns": [ + "daohandlerid" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "proposal_externalid_daoid_key": { + "name": "proposal_externalid_daoid_key", + "columns": [ + "externalid", + "daoid" + ] + } + } + }, + "subscription": { + "name": "subscription", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "userid": { + "autoincrement": false, + "name": "userid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "daoid": { + "autoincrement": false, + "name": "daoid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "subscription_id": { + "name": "subscription_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "subscription_daoid_idx": { + "name": "subscription_daoid_idx", + "columns": [ + "daoid" + ], + "isUnique": false + }, + "subscription_userid_idx": { + "name": "subscription_userid_idx", + "columns": [ + "userid" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "subscription_userid_daoid_key": { + "name": "subscription_userid_daoid_key", + "columns": [ + "userid", + "daoid" + ] + } + } + }, + "user": { + "name": "user", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "address": { + "autoincrement": false, + "name": "address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "autoincrement": false, + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "verifiedaddress": { + "default": 0, + "autoincrement": false, + "name": "verifiedaddress", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "verifiedemail": { + "default": 0, + "autoincrement": false, + "name": "verifiedemail", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "isuniswapuser": { + "default": "'DISABLED'", + "autoincrement": false, + "name": "isuniswapuser", + "type": "enum('DISABLED','VERIFICATION','ENABLED')", + "primaryKey": false, + "notNull": true + }, + "isaaveuser": { + "default": "'DISABLED'", + "autoincrement": false, + "name": "isaaveuser", + "type": "enum('DISABLED','VERIFICATION','ENABLED')", + "primaryKey": false, + "notNull": true + }, + "challengecode": { + "autoincrement": false, + "name": "challengecode", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "emaildailybulletin": { + "default": 0, + "autoincrement": false, + "name": "emaildailybulletin", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "emptydailybulletin": { + "default": 0, + "autoincrement": false, + "name": "emptydailybulletin", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "emailquorumwarning": { + "default": 1, + "autoincrement": false, + "name": "emailquorumwarning", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "discordnotifications": { + "default": 0, + "autoincrement": false, + "name": "discordnotifications", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "discordreminders": { + "default": 1, + "autoincrement": false, + "name": "discordreminders", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "discordincludevotes": { + "default": 1, + "autoincrement": false, + "name": "discordincludevotes", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "discordwebhook": { + "default": "''", + "autoincrement": false, + "name": "discordwebhook", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "telegramnotifications": { + "default": 0, + "autoincrement": false, + "name": "telegramnotifications", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "telegramreminders": { + "default": 1, + "autoincrement": false, + "name": "telegramreminders", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "telegramincludevotes": { + "default": 1, + "autoincrement": false, + "name": "telegramincludevotes", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "telegramchatid": { + "default": "''", + "autoincrement": false, + "name": "telegramchatid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "acceptedterms": { + "default": 0, + "autoincrement": false, + "name": "acceptedterms", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "acceptedtermstimestamp": { + "autoincrement": false, + "name": "acceptedtermstimestamp", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false + }, + "firstactive": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "firstactive", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "lastactive": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "lastactive", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "sessioncount": { + "default": 0, + "autoincrement": false, + "name": "sessioncount", + "type": "int", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "user_id": { + "name": "user_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "user_email_idx": { + "name": "user_email_idx", + "columns": [ + "email" + ], + "isUnique": false + }, + "user_address_idx": { + "name": "user_address_idx", + "columns": [ + "address" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "user_address_key": { + "name": "user_address_key", + "columns": [ + "address" + ] + }, + "user_email_key": { + "name": "user_email_key", + "columns": [ + "email" + ] + } + } + }, + "vote": { + "name": "vote", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "choice": { + "autoincrement": false, + "name": "choice", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "votingpower": { + "autoincrement": false, + "name": "votingpower", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "reason": { + "autoincrement": false, + "name": "reason", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": true + }, + "voteraddress": { + "autoincrement": false, + "name": "voteraddress", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "proposalid": { + "autoincrement": false, + "name": "proposalid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "daoid": { + "autoincrement": false, + "name": "daoid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "daohandlerid": { + "autoincrement": false, + "name": "daohandlerid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "blockcreated": { + "default": 0, + "autoincrement": false, + "name": "blockcreated", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "timecreated": { + "autoincrement": false, + "name": "timecreated", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "vote_id": { + "name": "vote_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "vote_proposalid_idx": { + "name": "vote_proposalid_idx", + "columns": [ + "proposalid" + ], + "isUnique": false + }, + "vote_daoid_idx": { + "name": "vote_daoid_idx", + "columns": [ + "daoid" + ], + "isUnique": false + }, + "vote_voteraddress_idx": { + "name": "vote_voteraddress_idx", + "columns": [ + "voteraddress" + ], + "isUnique": false + }, + "vote_daohandlerid_idx": { + "name": "vote_daohandlerid_idx", + "columns": [ + "daohandlerid" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "vote_voteraddress_daoid_proposalid_key": { + "name": "vote_voteraddress_daoid_proposalid_key", + "columns": [ + "voteraddress", + "daoid", + "proposalid" + ] + } + } + }, + "voter": { + "name": "voter", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "address": { + "autoincrement": false, + "name": "address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "voter_id": { + "name": "voter_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "voter_address_idx": { + "name": "voter_address_idx", + "columns": [ + "address" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "voter_address_key": { + "name": "voter_address_key", + "columns": [ + "address" + ] + } + } + }, + "voterhandler": { + "name": "voterhandler", + "columns": { + "id": { + "autoincrement": false, + "name": "id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "chainindex": { + "default": 0, + "autoincrement": false, + "name": "chainindex", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "snapshotindex": { + "default": "'2000-01-01 00:00:00.000'", + "autoincrement": false, + "name": "snapshotindex", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false + }, + "uptodate": { + "default": 0, + "autoincrement": false, + "name": "uptodate", + "type": "tinyint", + "primaryKey": false, + "notNull": true + }, + "daohandlerid": { + "autoincrement": false, + "name": "daohandlerid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "voterid": { + "autoincrement": false, + "name": "voterid", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "createdat": { + "default": "CURRENT_TIMESTAMP(3)", + "autoincrement": false, + "name": "createdat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + }, + "updatedat": { + "autoincrement": false, + "name": "updatedat", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true + } + }, + "compositePrimaryKeys": { + "voterhandler_id": { + "name": "voterhandler_id", + "columns": [ + "id" + ] + } + }, + "indexes": { + "voterhandler_daohandlerid_idx": { + "name": "voterhandler_daohandlerid_idx", + "columns": [ + "daohandlerid" + ], + "isUnique": false + }, + "voterhandler_voterid_idx": { + "name": "voterhandler_voterid_idx", + "columns": [ + "voterid" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "uniqueConstraints": { + "voterhandler_voterid_daohandlerid_key": { + "name": "voterhandler_voterid_daohandlerid_key", + "columns": [ + "voterid", + "daohandlerid" + ] + } + } + } + }, + "schemas": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} \ No newline at end of file diff --git a/packages/database/src/db/migrations/meta/_journal.json b/packages/database/src/db/migrations/meta/_journal.json new file mode 100644 index 000000000..3fe1cfa79 --- /dev/null +++ b/packages/database/src/db/migrations/meta/_journal.json @@ -0,0 +1,13 @@ +{ + "version": "5", + "dialect": "mysql", + "entries": [ + { + "idx": 0, + "version": "5", + "when": 1690474517666, + "tag": "0000_legal_colleen_wing", + "breakpoints": true + } + ] +} diff --git a/packages/database/src/db/migrations/schema.ts b/packages/database/src/db/migrations/schema.ts new file mode 100644 index 000000000..c0510fea0 --- /dev/null +++ b/packages/database/src/db/migrations/schema.ts @@ -0,0 +1,346 @@ +import { + mysqlTable, + unique, + varchar, + int, + datetime, + tinyint, + mysqlEnum, + json, + bigint, +} from "drizzle-orm/mysql-core"; +import { relations, sql } from "drizzle-orm"; + +export const userTovoter = mysqlTable( + "_userTovoter", + { + a: varchar("A", { length: 191 }).notNull(), + b: varchar("B", { length: 191 }).notNull(), + }, + (table) => { + return { + userTovoterAbUnique: unique("_userTovoter_AB_unique").on( + table.a, + table.b, + ), + }; + }, +); + +export const config = mysqlTable("config", { + key: varchar("key", { length: 191 }).notNull(), + value: int("value").notNull(), +}); + +export const dao = mysqlTable("dao", { + id: varchar("id", { length: 191 }).notNull(), + name: varchar("name", { length: 191 }).notNull(), + picture: varchar("picture", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), + quorumwarningemailsupport: tinyint("quorumwarningemailsupport") + .default(0) + .notNull(), +}); + +export const daoRelations = relations(dao, ({ many }) => ({ + handlers: many(daohandler), + proposals: many(proposal), + subscriptions: many(subscription), + votes: many(vote), +})); + +export const daohandler = mysqlTable("daohandler", { + id: varchar("id", { length: 191 }).notNull(), + type: mysqlEnum("type", [ + "AAVE_CHAIN", + "COMPOUND_CHAIN", + "UNISWAP_CHAIN", + "ENS_CHAIN", + "GITCOIN_CHAIN", + "HOP_CHAIN", + "DYDX_CHAIN", + "MAKER_EXECUTIVE", + "MAKER_POLL", + "MAKER_POLL_ARBITRUM", + "INTEREST_PROTOCOL_CHAIN", + "ZEROX_PROTOCOL_CHAIN", + "SNAPSHOT", + ]).notNull(), + decoder: json("decoder").notNull(), + chainindex: bigint("chainindex", { mode: "number" }), + snapshotindex: datetime("snapshotindex", { + mode: "string", + fsp: 3, + }).default("2000-01-01 00:00:00.000"), + uptodate: tinyint("uptodate").default(0).notNull(), + daoid: varchar("daoid", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const daoHandlerRelations = relations(daohandler, ({ many }) => ({ + proposals: many(proposal), + voterhandlers: many(voterhandler), + votes: many(vote), +})); + +export const notification = mysqlTable("notification", { + id: varchar("id", { length: 191 }).notNull(), + userid: varchar("userid", { length: 191 }).notNull(), + proposalid: varchar("proposalid", { length: 191 }), + type: mysqlEnum("type", [ + "QUORUM_NOT_REACHED_EMAIL", + "BULLETIN_EMAIL", + "NEW_PROPOSAL_DISCORD", + "FIRST_REMINDER_DISCORD", + "SECOND_REMINDER_DISCORD", + "THIRD_REMINDER_DISCORD", + "ENDED_PROPOSAL_DISCORD", + "NEW_PROPOSAL_TELEGRAM", + "FIRST_REMINDER_TELEGRAM", + "SECOND_REMINDER_TELEGRAM", + "THIRD_REMINDER_TELEGRAM", + "ENDED_PROPOSAL_TELEGRAM", + ]).notNull(), + dispatchstatus: mysqlEnum("dispatchstatus", [ + "NOT_DISPATCHED", + "FIRST_RETRY", + "SECOND_RETRY", + "THIRD_RETRY", + "DISPATCHED", + "DELETED", + "FAILED", + ]) + .default("NOT_DISPATCHED") + .notNull(), + emailmessageid: varchar("emailmessageid", { length: 191 }), + discordmessagelink: varchar("discordmessagelink", { length: 191 }), + discordmessageid: varchar("discordmessageid", { length: 191 }), + telegramchatid: varchar("telegramchatid", { length: 191 }), + telegrammessageid: varchar("telegrammessageid", { length: 191 }), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + emailtemplate: varchar("emailtemplate", { length: 191 }), +}); + +export const notificationRelations = relations(notification, ({ one }) => ({ + user: one(user, { + fields: [notification.userid], + references: [user.id], + }), + proposal: one(proposal, { + fields: [notification.proposalid], + references: [proposal.id], + }), +})); + +export const proposal = mysqlTable("proposal", { + id: varchar("id", { length: 191 }).notNull(), + name: varchar("name", { length: 2048 }).notNull(), + externalid: varchar("externalid", { length: 191 }).notNull(), + choices: json("choices").notNull(), + scores: json("scores").notNull(), + scorestotal: json("scorestotal").notNull(), + quorum: json("quorum").notNull(), + state: mysqlEnum("state", [ + "PENDING", + "ACTIVE", + "CANCELED", + "DEFEATED", + "SUCCEEDED", + "QUEUED", + "EXPIRED", + "EXECUTED", + "HIDDEN", + "UNKNOWN", + ]).notNull(), + blockcreated: bigint("blockcreated", { mode: "number" }), + timecreated: datetime("timecreated", { mode: "string", fsp: 3 }).notNull(), + timestart: datetime("timestart", { mode: "string", fsp: 3 }).notNull(), + timeend: datetime("timeend", { mode: "string", fsp: 3 }).notNull(), + url: varchar("url", { length: 1024 }).notNull(), + daohandlerid: varchar("daohandlerid", { length: 191 }).notNull(), + daoid: varchar("daoid", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), + visible: tinyint("visible").default(1).notNull(), +}); + +export const proposalRelations = relations(proposal, ({ many, one }) => ({ + votes: many(vote), + notifications: many(notification), + dao: one(dao, { + fields: [proposal.daoid], + references: [dao.id], + }), + daohandler: one(daohandler, { + fields: [proposal.daohandlerid], + references: [daohandler.id], + }), +})); + +export const subscription = mysqlTable("subscription", { + id: varchar("id", { length: 191 }).notNull(), + userid: varchar("userid", { length: 191 }).notNull(), + daoid: varchar("daoid", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const subscriptionRelation = relations(subscription, ({ one }) => ({ + dao: one(dao, { + fields: [subscription.daoid], + references: [dao.id], + }), + user: one(user, { + fields: [subscription.userid], + references: [user.id], + }), +})); + +export const user = mysqlTable("user", { + id: varchar("id", { length: 191 }).notNull(), + address: varchar("address", { length: 191 }), + email: varchar("email", { length: 191 }), + verifiedaddress: tinyint("verifiedaddress").default(0).notNull(), + verifiedemail: tinyint("verifiedemail").default(0).notNull(), + isuniswapuser: mysqlEnum("isuniswapuser", [ + "DISABLED", + "VERIFICATION", + "ENABLED", + ]) + .default("DISABLED") + .notNull(), + isaaveuser: mysqlEnum("isaaveuser", ["DISABLED", "VERIFICATION", "ENABLED"]) + .default("DISABLED") + .notNull(), + challengecode: varchar("challengecode", { length: 191 }), + emaildailybulletin: tinyint("emaildailybulletin").default(0).notNull(), + emptydailybulletin: tinyint("emptydailybulletin").default(0).notNull(), + emailquorumwarning: tinyint("emailquorumwarning").default(1).notNull(), + discordnotifications: tinyint("discordnotifications").default(0).notNull(), + discordreminders: tinyint("discordreminders").default(1).notNull(), + discordincludevotes: tinyint("discordincludevotes").default(1).notNull(), + discordwebhook: varchar("discordwebhook", { length: 191 }) + .default("") + .notNull(), + telegramnotifications: tinyint("telegramnotifications").default(0).notNull(), + telegramreminders: tinyint("telegramreminders").default(1).notNull(), + telegramincludevotes: tinyint("telegramincludevotes").default(1).notNull(), + telegramchatid: varchar("telegramchatid", { length: 191 }) + .default("") + .notNull(), + acceptedterms: tinyint("acceptedterms").default(0).notNull(), + acceptedtermstimestamp: datetime("acceptedtermstimestamp", { + mode: "string", + fsp: 3, + }), + firstactive: datetime("firstactive", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + lastactive: datetime("lastactive", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + sessioncount: int("sessioncount").default(0).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const usersRelations = relations(user, ({ many }) => ({ + daos: many(dao), + voters: many(voter), + notifications: many(notification), +})); + +export const vote = mysqlTable("vote", { + id: varchar("id", { length: 191 }).notNull(), + choice: json("choice").notNull(), + votingpower: json("votingpower").notNull(), + reason: varchar("reason", { length: 2048 }).notNull(), + voteraddress: varchar("voteraddress", { length: 191 }).notNull(), + proposalid: varchar("proposalid", { length: 191 }).notNull(), + daoid: varchar("daoid", { length: 191 }).notNull(), + daohandlerid: varchar("daohandlerid", { length: 191 }).notNull(), + blockcreated: bigint("blockcreated", { mode: "number" }), + timecreated: datetime("timecreated", { mode: "string", fsp: 3 }), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const voteRelations = relations(vote, ({ one }) => ({ + voter: one(voter, { + fields: [vote.voteraddress], + references: [voter.address], + }), + proposal: one(proposal, { + fields: [vote.proposalid], + references: [proposal.id], + }), + dao: one(dao, { + fields: [vote.daoid], + references: [dao.id], + }), + daohandler: one(daohandler, { + fields: [vote.daohandlerid], + references: [daohandler.id], + }), +})); + +export const voter = mysqlTable("voter", { + id: varchar("id", { length: 191 }).notNull(), + address: varchar("address", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const voterRelations = relations(voter, ({ many }) => ({ + votes: many(vote), + voterhandlers: many(voterhandler), + users: many(user), +})); + +export const voterhandler = mysqlTable("voterhandler", { + id: varchar("id", { length: 191 }).notNull(), + chainindex: bigint("chainindex", { mode: "number" }), + snapshotindex: datetime("snapshotindex", { + mode: "string", + fsp: 3, + }).default("2000-01-01 00:00:00.000"), + uptodate: tinyint("uptodate").default(0).notNull(), + daohandlerid: varchar("daohandlerid", { length: 191 }).notNull(), + voterid: varchar("voterid", { length: 191 }).notNull(), + createdat: datetime("createdat", { mode: "string", fsp: 3 }) + .default(sql`CURRENT_TIMESTAMP(3)`) + .notNull(), + updatedat: datetime("updatedat", { mode: "string", fsp: 3 }).notNull(), +}); + +export const voterHandlerRelations = relations(voterhandler, ({ one }) => ({ + voter: one(voter, { + fields: [voterhandler.id], + references: [voter.id], + }), + daohandler: one(daohandler, { + fields: [voterhandler.daohandlerid], + references: [daohandler.id], + }), +})); diff --git a/packages/database/src/index.ts b/packages/database/src/index.ts index 87cbf772e..9623be872 100644 --- a/packages/database/src/index.ts +++ b/packages/database/src/index.ts @@ -1,4 +1,4 @@ -import { Prisma, PrismaClient } from "@prisma/client"; +import { type Prisma, PrismaClient } from "@prisma/client"; export type { JsonArray, JsonValue } from "type-fest"; @@ -65,3 +65,25 @@ const globalForPrisma = globalThis as unknown as { export const prisma = globalForPrisma.prisma ?? new PrismaClient(); if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; + +import { drizzle } from "drizzle-orm/planetscale-serverless"; +import { connect } from "@planetscale/database"; +import * as schema from "./db/migrations/schema"; + +const connection = connect({ + url: process.env.DATABASE_URL, +}); + +export const db = drizzle(connection, { schema: { ...schema } }); + +export { like } from "drizzle-orm"; +export const { + dao, + daohandler, + proposal, + subscription, + user, + vote, + voter, + voterhandler, +} = schema; diff --git a/packages/database/tsconfig.json b/packages/database/tsconfig.json index da82d2d31..236ad8154 100644 --- a/packages/database/tsconfig.json +++ b/packages/database/tsconfig.json @@ -5,11 +5,11 @@ "src/**/*.ts", "src/**/*.json", ".eslintrc.cjs", - "prettier.config.cjs" + "prettier.config.cjs", + "drizzle.config.ts" ], "exclude": ["node_modules", "dist"], "compilerOptions": { - "composite": true, "declarationMap": true, "resolveJsonModule": true, "allowJs": true, diff --git a/yarn.lock b/yarn.lock index daac8cc63..889fe126a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -499,6 +499,11 @@ debug "^3.1.0" lodash.once "^4.1.1" +"@drizzle-team/studio@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@drizzle-team/studio/-/studio-0.0.5.tgz#d2488ab4e8e755cc69287e2267cc4033a0e6ca35" + integrity sha512-ps5qF0tMxWRVu+V5gvCRrQNqlY92aTnIKdq27gm9LZMSdaKYZt6AVvSK1dlUMzs6Rt0Jm80b+eWct6xShBKhIw== + "@drptbl/gremlins.js@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@drptbl/gremlins.js/-/gremlins.js-2.2.1.tgz#1a0449af74afa1cf74238a36de611d4c9ce93b27" @@ -558,6 +563,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz#fa6f0cc7105367cb79cc0a8bf32bf50cb1673e45" integrity sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw== +"@esbuild/android-arm64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz#9e00eb6865ed5f2dbe71a1e96f2c52254cd92903" + integrity sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg== + "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" @@ -568,6 +578,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.11.tgz#ae84a410696c9f549a15be94eaececb860bacacb" integrity sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q== +"@esbuild/android-arm@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.17.tgz#1aa013b65524f4e9f794946b415b32ae963a4618" + integrity sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg== + "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" @@ -578,6 +593,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.11.tgz#0e58360bbc789ad0d68174d32ba20e678c2a16b6" integrity sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw== +"@esbuild/android-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.17.tgz#c2bd0469b04ded352de011fae34a7a1d4dcecb79" + integrity sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz" @@ -588,6 +608,11 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz" integrity sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w== +"@esbuild/darwin-arm64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz#0c21a59cb5bd7a2cec66c7a42431dca42aefeddd" + integrity sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g== + "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" @@ -598,6 +623,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz#c5ac602ec0504a8ff81e876bc8a9811e94d69d37" integrity sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw== +"@esbuild/darwin-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz#92f8763ff6f97dff1c28a584da7b51b585e87a7b" + integrity sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g== + "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" @@ -608,6 +638,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz#7012fb06ee3e6e0d5560664a65f3fefbcc46db2e" integrity sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A== +"@esbuild/freebsd-arm64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz#934f74bdf4022e143ba2f21d421b50fd0fead8f8" + integrity sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ== + "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" @@ -618,6 +653,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz#c5de1199f70e1f97d5c8fca51afa9bf9a2af5969" integrity sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q== +"@esbuild/freebsd-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz#16b6e90ba26ecc865eab71c56696258ec7f5d8bf" + integrity sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA== + "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" @@ -628,6 +668,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz#2a6d3a74e0b8b5f294e22b4515b29f76ebd42660" integrity sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog== +"@esbuild/linux-arm64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz#179a58e8d4c72116eb068563629349f8f4b48072" + integrity sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ== + "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" @@ -638,6 +683,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz#5175bd61b793b436e4aece6328aa0d9be07751e1" integrity sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg== +"@esbuild/linux-arm@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz#9d78cf87a310ae9ed985c3915d5126578665c7b5" + integrity sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg== + "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" @@ -648,6 +698,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz#20ee6cfd65a398875f321a485e7b2278e5f6f67b" integrity sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw== +"@esbuild/linux-ia32@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz#6fed202602d37361bca376c9d113266a722a908c" + integrity sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg== + "@esbuild/linux-loong64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" @@ -658,6 +713,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz#8e7b251dede75083bf44508dab5edce3f49d052b" integrity sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw== +"@esbuild/linux-loong64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz#cdc60304830be1e74560c704bfd72cab8a02fa06" + integrity sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg== + "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" @@ -668,6 +728,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz#a3125eb48538ac4932a9d05089b157f94e443165" integrity sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg== +"@esbuild/linux-mips64el@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz#c367b2855bb0902f5576291a2049812af2088086" + integrity sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ== + "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" @@ -678,6 +743,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz#842abadb7a0995bd539adee2be4d681b68279499" integrity sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ== +"@esbuild/linux-ppc64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz#7fdc0083d42d64a4651711ee0a7964f489242f45" + integrity sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ== + "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" @@ -688,6 +758,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz#7ce6e6cee1c72d5b4d2f4f8b6fcccf4a9bea0e28" integrity sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w== +"@esbuild/linux-riscv64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz#5198a417f3f5b86b10c95647b8bc032e5b6b2b1c" + integrity sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g== + "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" @@ -698,6 +773,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz#98fbc794363d02ded07d300df2e535650b297b96" integrity sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg== +"@esbuild/linux-s390x@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz#7459c2fecdee2d582f0697fb76a4041f4ad1dd1e" + integrity sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg== + "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" @@ -708,6 +788,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz#f8458ec8cf74c8274e4cacd00744d8446cac52eb" integrity sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA== +"@esbuild/linux-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz#948cdbf46d81c81ebd7225a7633009bc56a4488c" + integrity sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ== + "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" @@ -718,6 +803,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz#a7b2f991b8293748a7be42eac1c4325faf0c7cca" integrity sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q== +"@esbuild/netbsd-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz#6bb89668c0e093c5a575ded08e1d308bd7fd63e7" + integrity sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ== + "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" @@ -728,6 +818,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz#3e50923de84c54008f834221130fd23646072b2f" integrity sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ== +"@esbuild/openbsd-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz#abac2ae75fef820ef6c2c48da4666d092584c79d" + integrity sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA== + "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" @@ -738,6 +833,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz#ae47a550b0cd395de03606ecfba03cc96c7c19e2" integrity sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng== +"@esbuild/sunos-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz#74a45fe1db8ea96898f1a9bb401dcf1dadfc8371" + integrity sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g== + "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" @@ -748,6 +848,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz#05d364582b7862d7fbf4698ef43644f7346dcfcc" integrity sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg== +"@esbuild/win32-arm64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz#fd95ffd217995589058a4ed8ac17ee72a3d7f615" + integrity sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw== + "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" @@ -758,6 +863,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz#a3372095a4a1939da672156a3c104f8ce85ee616" integrity sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg== +"@esbuild/win32-ia32@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz#9b7ef5d0df97593a80f946b482e34fcba3fa4aaf" + integrity sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg== + "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" @@ -768,6 +878,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz#6526c7e1b40d5b9f0a222c6b767c22f6fb97aa57" integrity sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA== +"@esbuild/win32-x64@0.18.17": + version "0.18.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz#bcb2e042631b3c15792058e189ed879a22b2968b" + integrity sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -1222,6 +1337,11 @@ picocolors "^1.0.0" tslib "^2.5.0" +"@planetscale/database@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@planetscale/database/-/database-1.10.0.tgz#04f1f2e153c899e637704514c6eef911fa888095" + integrity sha512-XMfNRjIPgGTga6g1YpGr7E21CcnHZcHZdyhRUIiZ/AlpD+ts65UF2B3wKjcu7MKMynmmcOGs6R9kAT6D1OTlZQ== + "@playwright/test@^1.33.0": version "1.35.1" resolved "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz" @@ -3716,6 +3836,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: version "1.0.30001512" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz" @@ -3743,6 +3868,11 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + chance@^1.1.4: version "1.1.11" resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.11.tgz#78e10e1f9220a5bbc60a83e3f28a5d8558d84d1b" @@ -3815,6 +3945,17 @@ clean-stack@^2.0.0: resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-color@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" @@ -3980,6 +4121,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + common-tags@^1.8.0: version "1.8.2" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" @@ -4269,6 +4415,14 @@ cypress@*, cypress@^12.11.0: untildify "^4.0.0" yauzl "^2.10.0" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" @@ -4527,6 +4681,11 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" @@ -4577,6 +4736,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +difflib@~0.2.1: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + dijkstrajs@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz" @@ -4712,6 +4878,36 @@ download@^8.0.0: p-event "^2.1.0" pify "^4.0.1" +dreamopt@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.8.0.tgz#5bcc80be7097e45fc489c342405ab68140a8c1d9" + integrity sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg== + dependencies: + wordwrap ">=0.0.2" + +drizzle-kit@^0.19.12: + version "0.19.12" + resolved "https://registry.yarnpkg.com/drizzle-kit/-/drizzle-kit-0.19.12.tgz#11fde54444dffda2215fa778443f5b8f224859a7" + integrity sha512-rcsmh5gUIkvuD0WrbEc+aLpqY2q2J8ltynRcJiJo2l01hhsYvPnX0sgxWlFXlfAIa5ZXNw2nJZhYlslI6tG3MA== + dependencies: + "@drizzle-team/studio" "^0.0.5" + "@esbuild-kit/esm-loader" "^2.5.5" + camelcase "^7.0.1" + chalk "^5.2.0" + commander "^9.4.1" + esbuild "^0.18.6" + esbuild-register "^3.4.2" + glob "^8.1.0" + hanji "^0.0.5" + json-diff "0.9.0" + minimatch "^7.4.3" + zod "^3.20.2" + +drizzle-orm@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.27.2.tgz#bff4b9bb3dc53aa9f12ad2804bc8229f4c757cf8" + integrity sha512-ZvBvceff+JlgP7FxHKe0zOU9CkZ4RcOtibumIrqfYzDGuOeF0YUY0F9iMqYpRM7pxnLRfC+oO7rWOUH3T5oFQA== + duplexer3@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" @@ -4909,11 +5105,29 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" @@ -4926,6 +5140,31 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +esbuild-register@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" + integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== + dependencies: + debug "^4.3.4" + esbuild@^0.18.2: version "0.18.11" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz" @@ -4954,6 +5193,34 @@ esbuild@^0.18.2: "@esbuild/win32-ia32" "0.18.11" "@esbuild/win32-x64" "0.18.11" +esbuild@^0.18.6: + version "0.18.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.17.tgz#2aaf6bc6759b0c605777fdc435fea3969e091cad" + integrity sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg== + optionalDependencies: + "@esbuild/android-arm" "0.18.17" + "@esbuild/android-arm64" "0.18.17" + "@esbuild/android-x64" "0.18.17" + "@esbuild/darwin-arm64" "0.18.17" + "@esbuild/darwin-x64" "0.18.17" + "@esbuild/freebsd-arm64" "0.18.17" + "@esbuild/freebsd-x64" "0.18.17" + "@esbuild/linux-arm" "0.18.17" + "@esbuild/linux-arm64" "0.18.17" + "@esbuild/linux-ia32" "0.18.17" + "@esbuild/linux-loong64" "0.18.17" + "@esbuild/linux-mips64el" "0.18.17" + "@esbuild/linux-ppc64" "0.18.17" + "@esbuild/linux-riscv64" "0.18.17" + "@esbuild/linux-s390x" "0.18.17" + "@esbuild/linux-x64" "0.18.17" + "@esbuild/netbsd-x64" "0.18.17" + "@esbuild/openbsd-x64" "0.18.17" + "@esbuild/sunos-x64" "0.18.17" + "@esbuild/win32-arm64" "0.18.17" + "@esbuild/win32-ia32" "0.18.17" + "@esbuild/win32-x64" "0.18.17" + esbuild@~0.17.6: version "0.17.19" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz" @@ -5293,6 +5560,14 @@ etherscan-api@^10.3.0: gh-pages "4.0.0" querystring "0.2.1" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + event-stream@=3.3.4: version "3.3.4" resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz" @@ -5430,6 +5705,13 @@ ext-name@^5.0.0: ext-list "^2.0.0" sort-keys-length "^1.0.0" +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -5874,6 +6156,13 @@ functions-have-names@^1.2.2, functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +generate-function@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6065,6 +6354,17 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" @@ -6196,6 +6496,14 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +hanji@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/hanji/-/hanji-0.0.5.tgz#22a5092e53b2a83ed6172c488ae0d68eb3119213" + integrity sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw== + dependencies: + lodash.throttle "^4.1.1" + sisteransi "^1.0.5" + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -6285,6 +6593,11 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + hey-listen@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" @@ -6507,6 +6820,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" @@ -6790,6 +7110,16 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" @@ -7123,6 +7453,15 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== +json-diff@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/json-diff/-/json-diff-0.9.0.tgz#e7c536798053cb409113d7403c774849e8a0d7ff" + integrity sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ== + dependencies: + cli-color "^2.0.0" + difflib "~0.2.1" + dreamopt "~0.8.0" + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -7459,6 +7798,11 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" @@ -7497,6 +7841,11 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +long@^5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -7535,11 +7884,28 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +lru-cache@^8.0.0: + version "8.0.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e" + integrity sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA== + "lru-cache@^9.1.1 || ^10.0.0": version "10.0.0" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + lz-string@^1.4.4, lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -7606,6 +7972,20 @@ memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -7705,13 +8085,20 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" +minimatch@^7.4.3: + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.1: version "9.0.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz" @@ -7783,6 +8170,20 @@ multiformats@^9.4.2: resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== +mysql2@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.5.2.tgz#a06050e1514e9ac15711a8b883ffd51cb44b2dc8" + integrity sha512-cptobmhYkYeTBIFp2c0piw2+gElpioga1rUw5UidHvo8yaHijMZoo8A3zyBVoo/K71f7ZFvrShA9iMIy9dCzCA== + dependencies: + denque "^2.1.0" + generate-function "^2.3.1" + iconv-lite "^0.6.3" + long "^5.2.1" + lru-cache "^8.0.0" + named-placeholders "^1.1.3" + seq-queue "^0.0.5" + sqlstring "^2.3.2" + mz@^2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" @@ -7792,6 +8193,13 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +named-placeholders@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== + dependencies: + lru-cache "^7.14.1" + nanoid@^3.3.4, nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" @@ -7837,6 +8245,11 @@ next-auth@4.22.3: preact-render-to-string "^5.1.19" uuid "^8.3.2" +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + next@13.4.12, next@^13.4.12: version "13.4.12" resolved "https://registry.yarnpkg.com/next/-/next-13.4.12.tgz#809b21ea0aabbe88ced53252c88c4a5bd5af95df" @@ -9389,7 +9802,7 @@ safe-stable-stringify@^2.1.0: resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -9480,6 +9893,11 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +seq-queue@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" + integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -9811,6 +10229,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sqlstring@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + sshpk@^1.14.1: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" @@ -10125,7 +10548,7 @@ synckit@^0.8.5: "@pkgr/utils" "^2.3.1" tslib "^2.5.0" -tailwindcss@3.3.3, tailwindcss@^3.3.3: +tailwindcss@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== @@ -10328,6 +10751,14 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + titleize@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" @@ -10610,6 +11041,16 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" @@ -11084,6 +11525,11 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== +wordwrap@>=0.0.2: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -11265,7 +11711,7 @@ zip-stream@^4.1.0: compress-commons "^4.1.0" readable-stream "^3.6.0" -zod@3.21.4: +zod@3.21.4, zod@^3.20.2: version "3.21.4" resolved "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz" integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==