├── .nvmrc ├── .vscode └── settings.json ├── .gitignore ├── .prettierrc ├── docker ├── postgres.conf ├── schema-pg.sql ├── schema-sqlite.sql └── schema-mysql.sql ├── tsconfig.json ├── src ├── seed │ ├── random │ │ ├── index.ts │ │ ├── first_name.txt │ │ └── last_name.txt │ ├── run.ts │ └── generators.ts ├── pg │ ├── single.ts │ ├── database.ts │ ├── multiple.ts │ └── orchid.ts ├── mysql │ ├── single.ts │ ├── database.ts │ └── multiple.ts └── sqlite │ ├── single.ts │ ├── database.ts │ └── multiple.ts ├── package.json ├── docker-compose.yaml ├── README.md ├── pnpm-lock.yaml └── yarn.lock /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | docker/data 4 | docker/seed.sql 5 | single.json 6 | multiple.json 7 | orchid.json 8 | db.sqlite 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "printWidth": 120, 4 | "singleQuote": true, 5 | "trailingComma": "es5", 6 | "bracketSpacing": true 7 | } 8 | -------------------------------------------------------------------------------- /docker/postgres.conf: -------------------------------------------------------------------------------- 1 | listen_addresses = '*' 2 | max_wal_size = 5120 # equivalent to 5GB 3 | min_wal_size = 2048 # equivalent to 2GB 4 | log_statement = 'all' 5 | log_duration = on -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2016", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docker/schema-pg.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE users ( 2 | id SERIAL PRIMARY KEY, 3 | name VARCHAR(255), 4 | email VARCHAR(255), 5 | bio TEXT 6 | ); 7 | 8 | CREATE TABLE posts ( 9 | id SERIAL PRIMARY KEY, 10 | user_id INT, 11 | title TEXT, 12 | content TEXT, 13 | FOREIGN KEY (user_id) REFERENCES users(id) 14 | ); 15 | 16 | CREATE TABLE comments ( 17 | id SERIAL PRIMARY KEY, 18 | user_id INT, 19 | post_id INT, 20 | content TEXT, 21 | FOREIGN KEY (user_id) REFERENCES users(id), 22 | FOREIGN KEY (post_id) REFERENCES posts(id) 23 | ); 24 | -------------------------------------------------------------------------------- /docker/schema-sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE users ( 2 | id INTEGER PRIMARY KEY, 3 | name VARCHAR(255), 4 | email VARCHAR(255), 5 | bio TEXT 6 | ); 7 | 8 | CREATE TABLE posts ( 9 | id INTEGER PRIMARY KEY, 10 | user_id INT, 11 | title TEXT, 12 | content TEXT, 13 | FOREIGN KEY (user_id) REFERENCES users(id) 14 | ); 15 | 16 | CREATE TABLE comments ( 17 | id INTEGER PRIMARY KEY, 18 | user_id INT, 19 | post_id INT, 20 | content TEXT, 21 | FOREIGN KEY (user_id) REFERENCES users(id), 22 | FOREIGN KEY (post_id) REFERENCES posts(id) 23 | ); 24 | -------------------------------------------------------------------------------- /docker/schema-mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE users ( 2 | id INT PRIMARY KEY AUTO_INCREMENT, 3 | name VARCHAR(255), 4 | email VARCHAR(255), 5 | bio TEXT 6 | ); 7 | 8 | CREATE TABLE posts ( 9 | id INT PRIMARY KEY AUTO_INCREMENT, 10 | user_id INT, 11 | title TEXT, 12 | content TEXT, 13 | FOREIGN KEY (user_id) REFERENCES users(id) 14 | ); 15 | 16 | CREATE TABLE comments ( 17 | id INT PRIMARY KEY AUTO_INCREMENT, 18 | user_id INT, 19 | post_id INT, 20 | content TEXT, 21 | FOREIGN KEY (user_id) REFERENCES users(id), 22 | FOREIGN KEY (post_id) REFERENCES posts(id) 23 | ); 24 | -------------------------------------------------------------------------------- /src/seed/random/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import {readFileSync} from 'fs' 3 | 4 | function generator(name: string) { 5 | const values = readFileSync(path.join(__dirname, name + '.txt'), 'utf-8') 6 | .trim() 7 | .split(`\n`) 8 | const size = values.length 9 | return () => { 10 | return values[Math.floor(size * Math.random())] 11 | } 12 | } 13 | 14 | export const word = generator('word') 15 | export const last_name = generator('last_name') 16 | export const first_name = generator('first_name') 17 | export function text(wordsCount = 100) { 18 | let words = Array(wordsCount) 19 | for (let i = 0; i < wordsCount; i++) words[i] = word() 20 | return words.join(' ') 21 | } 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "joins-perf", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start-db": "docker-compose up", 8 | "stop-db": "docker-compose down -v", 9 | "generate-seed": "tsx src/seed/run.ts", 10 | "seed-sqlite": "cat docker/schema-sqlite.sql | sqlite3 db.sqlite && cat docker/seed.sql | sqlite3 db.sqlite" 11 | }, 12 | "dependencies": { 13 | "@types/node": "^20.2.5", 14 | "better-sqlite3": "^8.4.0", 15 | "drizzle-orm": "^0.28.0", 16 | "mysql2": "^3.5.1", 17 | "orchid-orm": "^1.10.5", 18 | "postgres": "^3.3.5", 19 | "prettier": "^2.8.8", 20 | "tsx": "^3.12.7" 21 | }, 22 | "devDependencies": { 23 | "@types/better-sqlite3": "^7.6.4", 24 | "drizzle-kit": "^0.18.1", 25 | "typescript": "^5.1.3" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | pg: 4 | image: postgres 5 | command: postgres -c config_file=/etc/postgresql/postgresql.conf 6 | environment: 7 | POSTGRES_USER: user 8 | POSTGRES_PASSWORD: pass 9 | POSTGRES_DB: benchmark 10 | ports: 11 | - '5432:5432' 12 | volumes: 13 | - ./docker/postgres.conf:/etc/postgresql/postgresql.conf 14 | - ./docker/schema-pg.sql:/docker-entrypoint-initdb.d/1-schema.sql 15 | - ./docker/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql 16 | mysql: 17 | image: mysql 18 | environment: 19 | MYSQL_ROOT_PASSWORD: pass 20 | MYSQL_DATABASE: benchmark 21 | ports: 22 | - '3306:3306' 23 | volumes: 24 | - ./docker/schema-mysql.sql:/docker-entrypoint-initdb.d/1-schema.sql 25 | - ./docker/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql 26 | -------------------------------------------------------------------------------- /src/seed/run.ts: -------------------------------------------------------------------------------- 1 | import { createWriteStream } from 'fs' 2 | import { Readable } from 'stream' 3 | import { pipeline } from 'stream/promises' 4 | import { comments, posts, users } from './generators' 5 | 6 | function* generate() { 7 | yield `-- users data\n` 8 | for (const query of users()) yield query 9 | yield `\n\n-- posts data\n` 10 | for (const query of posts()) yield query 11 | yield `\n\n-- comments data\n` 12 | for (const query of comments()) yield query 13 | yield `\n\n-- create indexes and analyze\n` 14 | yield `CREATE INDEX idx_posts_user_id ON posts(user_id);\n` 15 | yield `CREATE INDEX idx_comments_user_id ON comments(user_id);\n` 16 | yield `CREATE INDEX idx_comments_post_id ON comments(post_id);\n` 17 | } 18 | 19 | async function main() { 20 | console.log(`generating docker/seed.sql ...`) 21 | await pipeline(Readable.from(generate()), createWriteStream('docker/seed.sql')) 22 | console.log(`Done!`) 23 | } 24 | main() 25 | -------------------------------------------------------------------------------- /src/pg/single.ts: -------------------------------------------------------------------------------- 1 | import { writeFile } from 'fs/promises' 2 | import { comments, db, sql } from './database' 3 | 4 | async function main() { 5 | const limit = Number(process.argv[2] || '0') 6 | if (!limit) throw `Please provide a limit in the command!` 7 | 8 | const start = performance.now() 9 | const items = await db.query.comments.findMany({ 10 | limit, 11 | orderBy: comments.id, 12 | with: { 13 | user: { 14 | columns: { name: true }, 15 | }, 16 | post: { 17 | columns: { title: true }, 18 | with: { 19 | user: { 20 | columns: { name: true }, 21 | }, 22 | }, 23 | }, 24 | }, 25 | }) 26 | const end = performance.now() 27 | console.log(`Took ${Math.floor(end - start)}ms`) 28 | await writeFile('single.json', JSON.stringify(items)) 29 | console.log(`Result written to single.json file`) 30 | await sql.end() 31 | } 32 | main().catch(console.error) 33 | -------------------------------------------------------------------------------- /src/mysql/single.ts: -------------------------------------------------------------------------------- 1 | import { writeFile } from 'fs/promises' 2 | import { comments, db, pool } from './database' 3 | 4 | async function main() { 5 | const limit = Number(process.argv[2] || '0') 6 | if (!limit) throw `Please provide a limit in the command!` 7 | 8 | const start = performance.now() 9 | const items = await db.query.comments.findMany({ 10 | limit, 11 | orderBy: comments.id, 12 | with: { 13 | user: { 14 | columns: { name: true }, 15 | }, 16 | post: { 17 | columns: { title: true }, 18 | with: { 19 | user: { 20 | columns: { name: true }, 21 | }, 22 | }, 23 | }, 24 | }, 25 | }) 26 | const end = performance.now() 27 | console.log(`Took ${Math.floor(end - start)}ms`) 28 | await writeFile('single.json', JSON.stringify(items)) 29 | console.log(`Result written to single.json file`) 30 | await pool.end() 31 | } 32 | main().catch(console.error) 33 | -------------------------------------------------------------------------------- /src/sqlite/single.ts: -------------------------------------------------------------------------------- 1 | import { writeFile } from 'fs/promises' 2 | import { comments, db, sqliteDB } from './database' 3 | 4 | async function main() { 5 | const limit = Number(process.argv[2] || '0') 6 | if (!limit) throw `Please provide a limit in the command!` 7 | 8 | const start = performance.now() 9 | const items = db.query.comments.findMany({ 10 | limit, 11 | orderBy: comments.id, 12 | with: { 13 | user: { 14 | columns: { name: true }, 15 | }, 16 | post: { 17 | columns: { title: true }, 18 | with: { 19 | user: { 20 | columns: { name: true }, 21 | }, 22 | }, 23 | }, 24 | }, 25 | }) 26 | const end = performance.now() 27 | console.log(`Took ${Math.floor(end - start)}ms`) 28 | await writeFile('single.json', JSON.stringify(items)) 29 | console.log(`Result written to single.json file`) 30 | sqliteDB.close() 31 | } 32 | main().catch(console.error) 33 | -------------------------------------------------------------------------------- /src/seed/generators.ts: -------------------------------------------------------------------------------- 1 | import * as random from './random' 2 | 3 | const counts = { 4 | users: 100_000, 5 | posts: 500_000, 6 | comments: 5_000_000, 7 | } 8 | 9 | function create(table_fields: string, count: number, fn: (i: number) => string) { 10 | return function* () { 11 | const INSERT = `INSERT INTO ${table_fields} VALUES\n` 12 | yield `${INSERT} (${fn(0)})` 13 | for (let i = 1; i < count; i++) { 14 | if (i % 10000 === 0) yield `;\n${INSERT} (${fn(i)})` 15 | else yield `,\n (${fn(i)})` 16 | } 17 | yield `;` 18 | } 19 | } 20 | 21 | export const users = create('users(name, email, bio)', counts.users, (id) => { 22 | const firstName = random.first_name() 23 | const lastName = random.last_name() 24 | const bio = random.text(50) 25 | return `'${firstName} ${lastName}', '${firstName}-${lastName}-${id}@gmail.com', '${bio}'` 26 | }) 27 | 28 | export const posts = create('posts(user_id, title, content)', counts.posts, () => { 29 | const user_id = 1 + Math.floor(counts.users * Math.random()) 30 | const title = random.text(10) 31 | const content = random.text(200) 32 | return `${user_id}, '${title}', '${content}'` 33 | }) 34 | 35 | export const comments = create('comments(user_id, post_id, content)', counts.comments, () => { 36 | const user_id = 1 + Math.floor(counts.users * Math.random()) 37 | const post_id = 1 + Math.floor(counts.posts * Math.random()) 38 | const content = random.text(50) 39 | return `${user_id}, ${post_id}, '${content}'` 40 | }) 41 | -------------------------------------------------------------------------------- /src/sqlite/database.ts: -------------------------------------------------------------------------------- 1 | import Database from 'better-sqlite3' 2 | import { relations } from 'drizzle-orm' 3 | import { drizzle } from 'drizzle-orm/better-sqlite3' 4 | import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core' 5 | 6 | export const sqliteDB = new Database('db.sqlite') 7 | 8 | export const users = sqliteTable('users', { 9 | id: int('id').primaryKey(), 10 | name: text('name', { length: 255 }), 11 | email: text('email', { length: 255 }), 12 | bio: text('bio'), 13 | }) 14 | const usersRelations = relations(users, ({ many }) => ({ 15 | posts: many(posts), 16 | })) 17 | 18 | export const posts = sqliteTable('posts', { 19 | id: int('id').primaryKey(), 20 | user_id: int('user_id').references(() => users.id), 21 | title: text('title'), 22 | content: text('content'), 23 | }) 24 | const postsRelations = relations(posts, ({ one, many }) => ({ 25 | user: one(users, { 26 | fields: [posts.user_id], 27 | references: [users.id], 28 | }), 29 | comments: many(comments), 30 | })) 31 | 32 | export const comments = sqliteTable('comments', { 33 | id: int('id').primaryKey(), 34 | user_id: int('user_id').references(() => users.id), 35 | post_id: int('post_id').references(() => posts.id), 36 | content: text('content'), 37 | }) 38 | const commentsRelations = relations(comments, ({ one, many }) => ({ 39 | user: one(users, { 40 | fields: [comments.user_id], 41 | references: [users.id], 42 | }), 43 | post: one(posts, { 44 | fields: [comments.post_id], 45 | references: [posts.id], 46 | }), 47 | })) 48 | 49 | export const db = drizzle(sqliteDB, { 50 | schema: { users, usersRelations, posts, postsRelations, comments, commentsRelations }, 51 | logger: true, 52 | }) 53 | -------------------------------------------------------------------------------- /src/pg/database.ts: -------------------------------------------------------------------------------- 1 | import postgres from 'postgres' 2 | import { relations } from 'drizzle-orm' 3 | import { drizzle } from 'drizzle-orm/postgres-js' 4 | import { integer, pgTable, serial, text, varchar } from 'drizzle-orm/pg-core' 5 | 6 | export const sql = postgres({ 7 | host: '127.0.0.1', 8 | port: 5432, 9 | username: 'user', 10 | password: 'pass', 11 | database: 'benchmark', 12 | }) 13 | 14 | export const users = pgTable('users', { 15 | id: serial('id').primaryKey(), 16 | name: varchar('name', { length: 255 }), 17 | email: varchar('email', { length: 255 }), 18 | bio: text('bio'), 19 | }) 20 | const usersRelations = relations(users, ({ many }) => ({ 21 | posts: many(posts), 22 | })) 23 | 24 | export const posts = pgTable('posts', { 25 | id: serial('id').primaryKey(), 26 | user_id: integer('user_id').references(() => users.id), 27 | title: text('title'), 28 | content: text('content'), 29 | }) 30 | const postsRelations = relations(posts, ({ one, many }) => ({ 31 | user: one(users, { 32 | fields: [posts.user_id], 33 | references: [users.id], 34 | }), 35 | comments: many(comments), 36 | })) 37 | 38 | export const comments = pgTable('comments', { 39 | id: serial('id').primaryKey(), 40 | user_id: integer('user_id').references(() => users.id), 41 | post_id: integer('post_id').references(() => posts.id), 42 | content: text('content'), 43 | }) 44 | const commentsRelations = relations(comments, ({ one, many }) => ({ 45 | user: one(users, { 46 | fields: [comments.user_id], 47 | references: [users.id], 48 | }), 49 | post: one(posts, { 50 | fields: [comments.post_id], 51 | references: [posts.id], 52 | }), 53 | })) 54 | 55 | export const db = drizzle(sql, { 56 | schema: { users, usersRelations, posts, postsRelations, comments, commentsRelations }, 57 | logger: false, 58 | }) 59 | -------------------------------------------------------------------------------- /src/mysql/database.ts: -------------------------------------------------------------------------------- 1 | import mysql from 'mysql2/promise' 2 | import { relations } from 'drizzle-orm' 3 | import { drizzle } from 'drizzle-orm/mysql2' 4 | import { int, mysqlTable, serial, text, varchar } from 'drizzle-orm/mysql-core' 5 | 6 | export const pool = mysql.createPool({ 7 | host: '127.0.0.1', 8 | port: 3306, 9 | user: 'root', 10 | password: 'pass', 11 | database: 'benchmark', 12 | }) 13 | 14 | export const users = mysqlTable('users', { 15 | id: serial('id').primaryKey(), 16 | name: varchar('name', { length: 255 }), 17 | email: varchar('email', { length: 255 }), 18 | bio: text('bio'), 19 | }) 20 | const usersRelations = relations(users, ({ many }) => ({ 21 | posts: many(posts), 22 | })) 23 | 24 | export const posts = mysqlTable('posts', { 25 | id: serial('id').primaryKey(), 26 | user_id: int('user_id').references(() => users.id), 27 | title: text('title'), 28 | content: text('content'), 29 | }) 30 | const postsRelations = relations(posts, ({ one, many }) => ({ 31 | user: one(users, { 32 | fields: [posts.user_id], 33 | references: [users.id], 34 | }), 35 | comments: many(comments), 36 | })) 37 | 38 | export const comments = mysqlTable('comments', { 39 | id: serial('id').primaryKey(), 40 | user_id: int('user_id').references(() => users.id), 41 | post_id: int('post_id').references(() => posts.id), 42 | content: text('content'), 43 | }) 44 | const commentsRelations = relations(comments, ({ one, many }) => ({ 45 | user: one(users, { 46 | fields: [comments.user_id], 47 | references: [users.id], 48 | }), 49 | post: one(posts, { 50 | fields: [comments.post_id], 51 | references: [posts.id], 52 | }), 53 | })) 54 | 55 | export const db = drizzle(pool, { 56 | schema: { users, usersRelations, posts, postsRelations, comments, commentsRelations }, 57 | logger: false, 58 | }) 59 | -------------------------------------------------------------------------------- /src/sqlite/multiple.ts: -------------------------------------------------------------------------------- 1 | import { inArray } from 'drizzle-orm' 2 | import { comments, db, posts, sqliteDB, users } from './database' 3 | import { writeFile } from 'fs/promises' 4 | 5 | async function main() { 6 | const limit = Number(process.argv[2] || '0') 7 | if (!limit) throw `Please provide a limit in the command!` 8 | 9 | const start = performance.now() 10 | 11 | const items = db.query.comments.findMany({ limit, orderBy: comments.id }) 12 | 13 | const userIdIndex: Record = createIndex(items, 'user_id') 14 | const postIdIndex: Record = createIndex(items, 'post_id') 15 | const usersIds = Object.keys(userIdIndex).map((x) => Number(x)) 16 | const postsIds = Object.keys(postIdIndex).map((x) => Number(x)) 17 | 18 | const usersList = db.query.users.findMany({ 19 | columns: { id: true, name: true }, 20 | where: inArray(users.id, usersIds), 21 | }) 22 | 23 | const postsList = db.query.posts.findMany({ 24 | columns: { id: true, title: true }, 25 | with: { user: { columns: { name: true } } }, 26 | where: inArray(posts.id, postsIds), 27 | }) 28 | 29 | for (const user of usersList) { 30 | const { id, ...value } = user 31 | for (const i of userIdIndex[id]) { 32 | ;(items as any)[i].user = value 33 | } 34 | } 35 | 36 | for (const post of postsList) { 37 | const { id, ...value } = post 38 | for (const i of postIdIndex[id]) { 39 | ;(items as any)[i].post = value 40 | } 41 | } 42 | 43 | const end = performance.now() 44 | console.log(`Took ${Math.floor(end - start)}ms`) 45 | await writeFile('multiple.json', JSON.stringify(items)) 46 | console.log(`Result written to multiple.json file`) 47 | sqliteDB.close() 48 | } 49 | main().catch(console.error) 50 | 51 | function createIndex(items: T[], field: keyof T) { 52 | const index: Record = {} 53 | for (let i = 0; i < items.length; i++) { 54 | const value = items[i][field] as number 55 | index[value] ||= [] 56 | index[value].push(i) 57 | } 58 | return index 59 | } 60 | -------------------------------------------------------------------------------- /src/mysql/multiple.ts: -------------------------------------------------------------------------------- 1 | import { inArray } from 'drizzle-orm' 2 | import { comments, db, posts, pool, users } from './database' 3 | import { writeFile } from 'fs/promises' 4 | 5 | async function main() { 6 | const limit = Number(process.argv[2] || '0') 7 | if (!limit) throw `Please provide a limit in the command!` 8 | 9 | const start = performance.now() 10 | 11 | const items = await db.query.comments.findMany({ limit, orderBy: comments.id }) 12 | 13 | const userIdIndex: Record = createIndex(items, 'user_id') 14 | const postIdIndex: Record = createIndex(items, 'post_id') 15 | const usersIds = Object.keys(userIdIndex).map((x) => Number(x)) 16 | const postsIds = Object.keys(postIdIndex).map((x) => Number(x)) 17 | 18 | const [usersList, postsList] = await Promise.all([ 19 | db.query.users.findMany({ 20 | columns: { id: true, name: true }, 21 | where: inArray(users.id, usersIds), 22 | }), 23 | db.query.posts.findMany({ 24 | columns: { id: true, title: true }, 25 | with: { user: { columns: { name: true } } }, 26 | where: inArray(posts.id, postsIds), 27 | }), 28 | ]) 29 | 30 | for (const user of usersList) { 31 | const { id, ...value } = user 32 | for (const i of userIdIndex[id]) { 33 | ;(items as any)[i].user = value 34 | } 35 | } 36 | 37 | for (const post of postsList) { 38 | const { id, ...value } = post 39 | for (const i of postIdIndex[id]) { 40 | ;(items as any)[i].post = value 41 | } 42 | } 43 | 44 | const end = performance.now() 45 | console.log(`Took ${Math.floor(end - start)}ms`) 46 | await writeFile('multiple.json', JSON.stringify(items)) 47 | console.log(`Result written to multiple.json file`) 48 | await pool.end() 49 | } 50 | main().catch(console.error) 51 | 52 | function createIndex(items: T[], field: keyof T) { 53 | const index: Record = {} 54 | for (let i = 0; i < items.length; i++) { 55 | const value = items[i][field] as number 56 | index[value] ||= [] 57 | index[value].push(i) 58 | } 59 | return index 60 | } 61 | -------------------------------------------------------------------------------- /src/pg/multiple.ts: -------------------------------------------------------------------------------- 1 | import { inArray } from 'drizzle-orm' 2 | import { db, posts, sql, users } from './database' 3 | import { writeFile } from 'fs/promises' 4 | import { comments } from './database' 5 | 6 | async function main() { 7 | const limit = Number(process.argv[2] || '0') 8 | if (!limit) throw `Please provide a limit in the command!` 9 | 10 | const start = performance.now() 11 | 12 | const items = await db.query.comments.findMany({ limit, orderBy: comments.id }) 13 | 14 | const userIdIndex: Record = createIndex(items, 'user_id') 15 | const postIdIndex: Record = createIndex(items, 'post_id') 16 | const usersIds = Object.keys(userIdIndex).map((x) => Number(x)) 17 | const postsIds = Object.keys(postIdIndex).map((x) => Number(x)) 18 | 19 | const [usersList, postsList] = await Promise.all([ 20 | db.query.users.findMany({ 21 | columns: { id: true, name: true }, 22 | where: inArray(users.id, usersIds), 23 | }), 24 | db.query.posts.findMany({ 25 | columns: { id: true, title: true }, 26 | with: { user: { columns: { name: true } } }, 27 | where: inArray(posts.id, postsIds), 28 | }), 29 | ]) 30 | 31 | for (const user of usersList) { 32 | const { id, ...value } = user 33 | for (const i of userIdIndex[id]) { 34 | ;(items as any)[i].user = value 35 | } 36 | } 37 | 38 | for (const post of postsList) { 39 | const { id, ...value } = post 40 | for (const i of postIdIndex[id]) { 41 | ;(items as any)[i].post = value 42 | } 43 | } 44 | 45 | const end = performance.now() 46 | console.log(`Took ${Math.floor(end - start)}ms`) 47 | await writeFile('multiple.json', JSON.stringify(items)) 48 | console.log(`Result written to multiple.json file`) 49 | await sql.end() 50 | } 51 | main().catch(console.error) 52 | 53 | function createIndex(items: T[], field: keyof T) { 54 | const index: Record = {} 55 | for (let i = 0; i < items.length; i++) { 56 | const value = items[i][field] as number 57 | index[value] ||= [] 58 | index[value].push(i) 59 | } 60 | return index 61 | } 62 | -------------------------------------------------------------------------------- /src/pg/orchid.ts: -------------------------------------------------------------------------------- 1 | import { createBaseTable, orchidORM } from 'orchid-orm' 2 | import { writeFile } from 'fs/promises' 3 | import util from 'node:util'; 4 | 5 | const BaseTable = createBaseTable({ 6 | columnTypes: (t) => ({ 7 | ...t, 8 | // set default min and max parameters for the text type 9 | text: (min = 0, max = Infinity) => t.text(min, max), 10 | }), 11 | }) 12 | 13 | class UserTable extends BaseTable { 14 | readonly table = 'users' 15 | columns = this.setColumns((t) => ({ 16 | id: t.serial().primaryKey(), 17 | name: t.varchar(255), 18 | email: t.varchar(255), 19 | bio: t.text(), 20 | })) 21 | 22 | relations = { 23 | posts: this.hasMany(() => PostTable, { 24 | primaryKey: 'id', 25 | foreignKey: 'user_id', 26 | }), 27 | comments: this.hasMany(() => CommentTable, { 28 | primaryKey: 'id', 29 | foreignKey: 'user_id', 30 | }), 31 | } 32 | } 33 | 34 | class PostTable extends BaseTable { 35 | readonly table = 'posts' 36 | columns = this.setColumns((t) => ({ 37 | id: t.serial().primaryKey(), 38 | user_id: t.integer().foreignKey(() => UserTable, 'id'), 39 | title: t.text(), 40 | content: t.text(), 41 | })) 42 | 43 | relations = { 44 | user: this.belongsTo(() => UserTable, { 45 | primaryKey: 'id', 46 | foreignKey: 'user_id', 47 | }), 48 | 49 | comments: this.hasMany(() => CommentTable, { 50 | primaryKey: 'id', 51 | foreignKey: 'post_id', 52 | }), 53 | } 54 | } 55 | 56 | class CommentTable extends BaseTable { 57 | readonly table = 'comments' 58 | columns = this.setColumns((t) => ({ 59 | id: t.serial().primaryKey(), 60 | user_id: t.integer().foreignKey(() => UserTable, 'id'), 61 | post_id: t.integer().foreignKey(() => PostTable, 'id'), 62 | content: t.text(), 63 | })) 64 | 65 | relations = { 66 | user: this.belongsTo(() => UserTable, { 67 | primaryKey: 'id', 68 | foreignKey: 'user_id', 69 | }), 70 | 71 | post: this.belongsTo(() => PostTable, { 72 | primaryKey: 'id', 73 | foreignKey: 'post_id', 74 | }), 75 | } 76 | } 77 | 78 | const db = orchidORM( 79 | { 80 | databaseURL: 'postgres://user:pass@localhost:5432/benchmark', 81 | log: true, 82 | }, 83 | { 84 | user: UserTable, 85 | post: PostTable, 86 | comment: CommentTable, 87 | } 88 | ) 89 | 90 | async function main() { 91 | const limit = Number(process.argv[2] || '0') 92 | if (!limit) throw `Please provide a limit to the command!` 93 | 94 | const start = performance.now() 95 | 96 | const items = await db.comment 97 | .select('*', { 98 | user: (q) => q.user.select('name'), 99 | post: (q) => 100 | q.post.select('title', { 101 | user: (q) => q.user.select('name'), 102 | }), 103 | }) 104 | .order('id') 105 | .limit(limit) 106 | 107 | const end = performance.now() 108 | console.log(`Took ${Math.floor(end - start)}ms`) 109 | // console.log(util.inspect(items, { depth: null, colors: true })); 110 | await writeFile('orchid.json', JSON.stringify(items)) 111 | console.log(`Result written to orchid.json file`) 112 | await db.$close() 113 | } 114 | 115 | main().catch(console.error) 116 | -------------------------------------------------------------------------------- /src/seed/random/first_name.txt: -------------------------------------------------------------------------------- 1 | Liam 2 | Noah 3 | Oliver 4 | James 5 | Elijah 6 | William 7 | Henry 8 | Lucas 9 | Benjamin 10 | Theodore 11 | Mateo 12 | Levi 13 | Sebastian 14 | Daniel 15 | Jack 16 | Michael 17 | Alexander 18 | Owen 19 | Asher 20 | Samuel 21 | Ethan 22 | Leo 23 | Jackson 24 | Mason 25 | Ezra 26 | John 27 | Hudson 28 | Luca 29 | Aiden 30 | Joseph 31 | David 32 | Jacob 33 | Logan 34 | Luke 35 | Julian 36 | Gabriel 37 | Grayson 38 | Wyatt 39 | Matthew 40 | Maverick 41 | Dylan 42 | Isaac 43 | Elias 44 | Anthony 45 | Thomas 46 | Jayden 47 | Carter 48 | Santiago 49 | Ezekiel 50 | Charles 51 | Josiah 52 | Caleb 53 | Cooper 54 | Lincoln 55 | Miles 56 | Christopher 57 | Nathan 58 | Isaiah 59 | Kai 60 | Joshua 61 | Andrew 62 | Angel 63 | Adrian 64 | Cameron 65 | Nolan 66 | Waylon 67 | Jaxon 68 | Roman 69 | Eli 70 | Wesley 71 | Aaron 72 | Ian 73 | Christian 74 | Ryan 75 | Leonardo 76 | Brooks 77 | Axel 78 | Walker 79 | Jonathan 80 | Easton 81 | Everett 82 | Weston 83 | Bennett 84 | Robert 85 | Jameson 86 | Landon 87 | Silas 88 | Jose 89 | Beau 90 | Micah 91 | Colton 92 | Jordan 93 | Jeremiah 94 | Parker 95 | Greyson 96 | Rowan 97 | Adam 98 | Nicholas 99 | Theo 100 | Xavier 101 | Hunter 102 | Dominic 103 | Jace 104 | Gael 105 | River 106 | Thiago 107 | Kayden 108 | Damian 109 | August 110 | Carson 111 | Austin 112 | Myles 113 | Amir 114 | Declan 115 | Emmett 116 | Ryder 117 | Luka 118 | Connor 119 | Jaxson 120 | Milo 121 | Enzo 122 | Giovanni 123 | Vincent 124 | Diego 125 | Luis 126 | Archer 127 | Harrison 128 | Kingston 129 | Atlas 130 | Sawyer 131 | Legend 132 | Lorenzo 133 | Evan 134 | Jonah 135 | Chase 136 | Bryson 137 | Adriel 138 | Nathaniel 139 | Arthur 140 | Juan 141 | George 142 | Cole 143 | Zion 144 | Jason 145 | Ashton 146 | Carlos 147 | Calvin 148 | Brayden 149 | Elliot 150 | Rhett 151 | Emiliano 152 | Ace 153 | Jayce 154 | Graham 155 | Max 156 | Braxton 157 | Leon 158 | Ivan 159 | Hayden 160 | Jude 161 | Malachi 162 | Dean 163 | Tyler 164 | Jesus 165 | Zachary 166 | Kaiden 167 | Elliott 168 | Arlo 169 | Emmanuel 170 | Ayden 171 | Bentley 172 | Maxwell 173 | Amari 174 | Ryker 175 | Finn 176 | Antonio 177 | Charlie 178 | Maddox 179 | Justin 180 | Judah 181 | Kevin 182 | Dawson 183 | Matteo 184 | Miguel 185 | Zayden 186 | Camden 187 | Messiah 188 | Alan 189 | Alex 190 | Nicolas 191 | Felix 192 | Alejandro 193 | Jesse 194 | Beckett 195 | Matias 196 | Tucker 197 | Emilio 198 | Xander 199 | Knox 200 | Oscar 201 | Beckham 202 | Timothy 203 | Abraham 204 | Andres 205 | Gavin 206 | Brody 207 | Barrett 208 | Hayes 209 | Jett 210 | Brandon 211 | Joel 212 | Victor 213 | Peter 214 | Abel 215 | Edward 216 | Karter 217 | Patrick 218 | Richard 219 | Grant 220 | Avery 221 | King 222 | Caden 223 | Adonis 224 | Riley 225 | Tristan 226 | Kyrie 227 | Blake 228 | Eric 229 | Griffin 230 | Malakai 231 | Rafael 232 | Israel 233 | Tate 234 | Lukas 235 | Nico 236 | Marcus 237 | Stetson 238 | Javier 239 | Colt 240 | Omar 241 | Simon 242 | Kash 243 | Remington 244 | Jeremy 245 | Louis 246 | Mark 247 | Lennox 248 | Callum 249 | Kairo 250 | Nash 251 | Kyler 252 | Dallas 253 | Crew 254 | Preston 255 | Paxton 256 | Steven 257 | Zane 258 | Kaleb 259 | Lane 260 | Phoenix 261 | Cash 262 | Kenneth 263 | Bryce 264 | Ronan 265 | Kaden 266 | Maximiliano 267 | Walter 268 | Maximus 269 | Emerson 270 | Hendrix 271 | Jax 272 | Atticus 273 | Zayn 274 | Tobias 275 | Cohen 276 | Aziel 277 | Kayson 278 | Rory 279 | Brady 280 | Finley 281 | Holden 282 | Jorge 283 | Malcolm 284 | Clayton 285 | Niko 286 | Francisco 287 | Josue 288 | Brian 289 | Bryan 290 | Cade 291 | Colin 292 | Andre 293 | Cayden 294 | Aidan 295 | Muhammad 296 | Derek 297 | Ali 298 | Elian 299 | Bodhi 300 | Cody 301 | Jensen 302 | Damien 303 | Martin 304 | Cairo 305 | Ellis 306 | Khalil 307 | Otto 308 | Zander 309 | Dante 310 | Ismael 311 | Angelo 312 | Brantley 313 | Manuel 314 | Colson 315 | Cruz 316 | Tatum 317 | Jaylen 318 | Jaden 319 | Erick 320 | Cristian 321 | Romeo 322 | Milan 323 | Reid 324 | Cyrus 325 | Leonel 326 | Joaquin 327 | Ari 328 | Odin 329 | Orion 330 | Ezequiel 331 | Gideon 332 | Daxton 333 | Warren 334 | Casey 335 | Anderson 336 | Spencer 337 | Karson 338 | Eduardo 339 | Chance 340 | Fernando 341 | Raymond 342 | Bradley 343 | Cesar 344 | Wade 345 | Prince 346 | Julius 347 | Dakota 348 | Kade 349 | Koa 350 | Raiden 351 | Callan 352 | Hector 353 | Onyx 354 | Remy 355 | Ricardo 356 | Edwin 357 | Stephen 358 | Kane 359 | Saint 360 | Titus 361 | Desmond 362 | Killian 363 | Sullivan 364 | Mario 365 | Jay 366 | Kamari 367 | Luciano 368 | Royal 369 | Zyaire 370 | Marco 371 | Wilder 372 | Russell 373 | Nasir 374 | Rylan 375 | Archie 376 | Jared 377 | Gianni 378 | Kashton 379 | Kobe 380 | Sergio 381 | Travis 382 | Marshall 383 | Iker 384 | Briggs 385 | Gunner 386 | Apollo 387 | Bowen 388 | Baylor 389 | Sage 390 | Tyson 391 | Kyle 392 | Malik 393 | Mathias 394 | Sean 395 | Armani 396 | Hugo 397 | Johnny 398 | Sterling 399 | Forrest 400 | Harvey 401 | Banks 402 | Grady 403 | Kameron 404 | Jake 405 | Franklin 406 | Lawson 407 | Tanner 408 | Eden 409 | Jaziel 410 | Pablo 411 | Reed 412 | Pedro 413 | Zayne 414 | Royce 415 | Edgar 416 | Ibrahim 417 | Winston 418 | Ronin 419 | Leonidas 420 | Devin 421 | Damon 422 | Noel 423 | Rhys 424 | Clark 425 | Corbin 426 | Sonny 427 | Colter 428 | Esteban 429 | Erik 430 | Baker 431 | Adan 432 | Dariel 433 | Kylo 434 | Tripp 435 | Caiden 436 | Frank 437 | Solomon 438 | Major 439 | Memphis 440 | Quinn 441 | Dax 442 | Hank 443 | Donovan 444 | Finnegan 445 | Nehemiah 446 | Andy 447 | Camilo 448 | Asa 449 | Jeffrey 450 | Santino 451 | Isaias 452 | Jaiden 453 | Kian 454 | Fabian 455 | Callen 456 | Ruben 457 | Alexis 458 | Emanuel 459 | Francis 460 | Garrett 461 | Kendrick 462 | Matthias 463 | Wells 464 | Augustus 465 | Jasiah 466 | Alijah 467 | Alonzo 468 | Koda 469 | Collin 470 | Ford 471 | Frederick 472 | Jaxton 473 | Kohen 474 | Troy 475 | Kason 476 | Seth 477 | Denver 478 | Kyson 479 | Ares 480 | Raphael 481 | Bodie 482 | Sylas 483 | Uriel 484 | Zaiden 485 | Shiloh 486 | Lewis 487 | Kieran 488 | Marcos 489 | Bo 490 | Shepherd 491 | Philip 492 | Zaire 493 | Gregory 494 | Princeton 495 | Roberto 496 | Leland 497 | Eithan 498 | Moshe 499 | Johnathan 500 | Lucca 501 | Kenzo 502 | Mack 503 | Porter 504 | Kolton 505 | Kaison 506 | Valentino 507 | Saul 508 | Shane 509 | Jamari 510 | Rocco 511 | Kylan 512 | Deacon 513 | Dalton 514 | Moses 515 | Callahan 516 | Tadeo 517 | Makai 518 | Amiri 519 | Rowen 520 | Drew 521 | Jalen 522 | Sutton 523 | Dominick 524 | Reece 525 | Rodrigo 526 | Soren 527 | Kasen 528 | Ridge 529 | Zachariah 530 | Jamir 531 | Peyton 532 | Omari 533 | Trevor 534 | Morgan 535 | Izaiah 536 | Alessandro 537 | Kaysen 538 | Enrique 539 | Marcelo 540 | Sincere 541 | Lucian 542 | Leandro 543 | Armando 544 | Braylen 545 | Jayson 546 | Julio 547 | Lawrence 548 | Cassius 549 | Raul 550 | Jase 551 | Mohammad 552 | Zain 553 | Jayceon 554 | Jonas 555 | Ronald 556 | Ayaan 557 | Rio 558 | Allen 559 | Bruce 560 | Mohamed 561 | Dorian 562 | Maximilian 563 | Keegan 564 | Shawn 565 | Yusuf 566 | Pierce 567 | Ariel 568 | Ander 569 | Conor 570 | Conrad 571 | Phillip 572 | Arjun 573 | Roy 574 | Moises 575 | Arturo 576 | Johan 577 | Gerardo 578 | Atreus 579 | Nikolai 580 | Braylon 581 | Samson 582 | Hezekiah 583 | Kayce 584 | Scott 585 | Gunnar 586 | Jamison 587 | Samir 588 | Keanu 589 | Ledger 590 | Jaime 591 | Finnley 592 | Cannon 593 | Colby 594 | Nikolas 595 | Emmitt 596 | Kamden 597 | Miller 598 | Boone 599 | Hamza 600 | Ocean 601 | Mac 602 | Anakin 603 | Brixton 604 | Roland 605 | Huxley 606 | Zeke 607 | Danny 608 | Marvin 609 | Otis 610 | Albert 611 | Clay 612 | Emir 613 | Boston 614 | Bruno 615 | Lionel 616 | Ozzy 617 | Taylor 618 | Jamie 619 | Augustine 620 | Chaim 621 | Krew 622 | Rayan 623 | Alden 624 | Bellamy 625 | Amos 626 | Drake 627 | Davis 628 | Dustin 629 | Corey 630 | Ahmad 631 | Conner 632 | Gustavo 633 | Layton 634 | Abram 635 | Axton 636 | Chandler 637 | Azariah 638 | Reese 639 | Benson 640 | Tru 641 | Case 642 | Trey 643 | Mauricio 644 | Westin 645 | Gage 646 | Reign 647 | Creed 648 | Mylo 649 | Dennis 650 | Quentin 651 | Rome 652 | Julien 653 | Sam 654 | Zaid 655 | Marcel 656 | Maximo 657 | Layne 658 | Ahmed 659 | Kannon 660 | Quincy 661 | Yosef 662 | Aarav 663 | Lennon 664 | Ryland 665 | Skyler 666 | Chris 667 | Eliam 668 | Kareem 669 | Kyree 670 | Dario 671 | Donald 672 | Fletcher 673 | Darius 674 | Duke 675 | Rayden 676 | Salem 677 | Vicente 678 | Vincenzo 679 | Cayson 680 | Eliseo 681 | Issac 682 | Lian 683 | Clyde 684 | Wilson 685 | Santana 686 | Tomas 687 | Dexter 688 | Keith 689 | Houston 690 | Harry 691 | Uriah 692 | Lee 693 | Rex 694 | Tony 695 | Carmelo 696 | Alberto 697 | Loyal 698 | Trace 699 | Alfredo 700 | Riggs 701 | Forest 702 | Raylan 703 | Salvador 704 | Jakari 705 | Zakai 706 | Louie 707 | Flynn 708 | Leonard 709 | Mohammed 710 | Derrick 711 | Musa 712 | Avi 713 | Ty 714 | Westley 715 | Ambrose 716 | Brycen 717 | Aron 718 | Caspian 719 | Gatlin 720 | Harlan 721 | Dillon 722 | Emery 723 | Nixon 724 | Tommy 725 | Watson 726 | Zayd 727 | Azrael 728 | Zyair 729 | Azriel 730 | Legacy 731 | Cillian 732 | Alvin 733 | Bridger 734 | Alec 735 | Edison 736 | Kingsley 737 | Remi 738 | Briar 739 | Jaxxon 740 | Truett 741 | Lachlan 742 | Cal 743 | Landen 744 | Roger 745 | Alonso 746 | Kaiser 747 | Blaze 748 | Jerry 749 | Seven 750 | Kenji 751 | Noe 752 | Quinton 753 | Grey 754 | Jefferson 755 | Marcellus 756 | Ray 757 | Kyro 758 | Benicio 759 | Justice 760 | Neil 761 | Idris 762 | Bear 763 | Kiaan 764 | Wayne 765 | Ben 766 | Junior 767 | Karim 768 | Yehuda 769 | Jimmy 770 | Ramon 771 | Bjorn 772 | Nathanael 773 | Stanley 774 | Hassan 775 | Magnus 776 | Trenton 777 | Brayan 778 | Brock 779 | Jagger 780 | Cason 781 | Dakari 782 | Rey 783 | Abdullah 784 | Casen 785 | Jiraiya 786 | Lance 787 | Misael 788 | Alvaro 789 | Robin 790 | Langston 791 | Nelson 792 | Wes 793 | Khari 794 | Landyn 795 | Jakai 796 | Lochlan 797 | Valentin 798 | Keaton 799 | Amias 800 | Joziah 801 | Thaddeus 802 | Jedidiah 803 | Orlando 804 | Eliel 805 | Hugh 806 | Koen 807 | Calum 808 | Enoch 809 | Mitchell 810 | Rohan 811 | Aryan 812 | Dilan 813 | Aden 814 | Allan 815 | Leighton 816 | Elisha 817 | Evander 818 | Castiel 819 | Curtis 820 | Kellen 821 | Dash 822 | Douglas 823 | Eddie 824 | Melvin 825 | Avyaan 826 | Everest 827 | Zamir 828 | Ricky 829 | Dutton 830 | Yahir 831 | Devon 832 | Franco 833 | Khaza 834 | Dior 835 | Leif 836 | Sevyn 837 | Guillermo 838 | Ira 839 | Emory 840 | Felipe 841 | Titan 842 | Alfred 843 | Azael 844 | Zahir 845 | Kellan 846 | Darren 847 | Rudy 848 | Ayan 849 | Leroy 850 | Anders 851 | Ishaan 852 | Reuben 853 | Boden 854 | Mccoy 855 | Heath 856 | Kase 857 | Wylder 858 | Judson 859 | Khai 860 | Kye 861 | Axl 862 | Crue 863 | Ernesto 864 | Ahmir 865 | Zyon 866 | Aries 867 | Mustafa 868 | Santos 869 | Dane 870 | Damari 871 | Elio 872 | Jadiel 873 | Jovanni 874 | Salvatore 875 | Mathew 876 | Kolson 877 | Nova 878 | Brendan 879 | Murphy 880 | Brodie 881 | Damir 882 | Rocky 883 | Larry 884 | Fisher 885 | Waylen 886 | Byron 887 | Ermias 888 | Joey 889 | Joe 890 | Jon 891 | Arian 892 | Chosen 893 | Jairo 894 | Vihaan 895 | Kylen 896 | Ameer 897 | Dion 898 | Jrue 899 | Kaizen 900 | Yousef 901 | Bryant 902 | Cullen 903 | Kaisen 904 | Kelvin 905 | Zen 906 | Kartier 907 | Randy 908 | Shepard 909 | Alaric 910 | Cain 911 | Jeremias 912 | Alfonso 913 | Brecken 914 | Colten 915 | Rhodes 916 | Wesson 917 | Duncan 918 | Harold 919 | Henrik 920 | Harley 921 | Alistair 922 | Agustin 923 | Jericho 924 | Talon 925 | Westyn 926 | Cassian 927 | Eugene 928 | Ryatt 929 | Shmuel 930 | Braden 931 | Yahya 932 | Aldo 933 | Dangelo 934 | Ezrah 935 | Korbin 936 | Zavier 937 | Bronson 938 | Teo 939 | Jones 940 | Neo 941 | Stefan 942 | Van 943 | Mekhi 944 | Coleson 945 | Eren 946 | Ignacio 947 | Kristian 948 | Harlem 949 | Zev 950 | Canaan 951 | Cedric 952 | Khalid 953 | Bode 954 | Gary 955 | Rene 956 | Benedict 957 | Maxton 958 | Thatcher 959 | Wallace 960 | Davian 961 | Gordon 962 | Niklaus 963 | Yisroel 964 | Kabir 965 | Osman 966 | Adler 967 | Darian 968 | Terry 969 | Cartier 970 | Osiris 971 | Vance 972 | Demetrius 973 | Kamryn 974 | Lux 975 | Stone 976 | Jaxx 977 | Kooper 978 | Rodney 979 | Aurelio 980 | Darwin 981 | Jakob 982 | Zechariah 983 | Brennan 984 | Marlon 985 | Meir 986 | Yael 987 | Asaiah 988 | Atharv 989 | Imran 990 | Ivaan 991 | Kanan 992 | Kalel 993 | London -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Drizzle single vs multiple queries performance comparaison 2 | 3 | This sentence from Drizzle documentation was surprising to me: 4 | 5 | > Regardless of how many nested relations you query - Drizzle will always make exactly one SQL query to the database, it makes it extremely explicit and easy to tune performance with indexes. 6 | 7 | In my mind, using exactly one SQL query will not be performant in all cases. In fact, I have seen some cases where doing multiple joins hurt the performance **a lot**. Am I missing something?! maybe Drizzle is doing something I don't know ... 8 | 9 | So I created this benchmark to experiment with Drizzle a bit and see what I am understanding wrong. 10 | 11 | ## The benchmark 12 | 13 | - I used **Postgres** inside a docker container 14 | - I created a simple blog database 15 | 16 | ``` 17 | users 18 | id int primary key auto-increment 19 | name varchar(255) 20 | email varchar(255) 21 | bio text 22 | 23 | posts 24 | id primary key auto-increment 25 | user_id int foreign key (users.id) 26 | title text 27 | content text 28 | 29 | comments 30 | id primary key auto-increment 31 | user_id int foreign key (users.id) 32 | post_id int foreign key (posts.id) 33 | content text 34 | ``` 35 | 36 | - I inserted a lot of data into the database: 100k users, 500k posts and 5M comments 37 | - I wrote two scripts to fetch the same data: **a number of comments with their author name, post title and post author name**. The count of comments to fetch is given as a parameter to the script. 38 | - The first script `src/single.ts` uses Drizzle `db.query...` to fetch all the data using a single query. 39 | - The second script `src/multiple.ts` uses Drizzle `db.query...` three times to fetch data from the 3 tables and combine them manually. 40 | Both scripts give exactly the same data! 41 | 42 | ## The results 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
count of commentssingle query on v0.26.5multiple queries + combination on v0.26.5single query on v0.28.0multiple queries + combination on v0.28.0single query with Orchid ORM v1.10.5
11900 ms27 ms11 ms17 ms12 ms
1003250 ms30 ms13 ms21 ms13 ms
100016_000 ms55 ms23 ms37 ms21 ms
500071_000 ms150 ms57 ms120 ms50 ms
90 | 91 | SQL produced by **Drizzle ORM v0.26.5** 92 | ```sql 93 | SELECT "id", 94 | "user_id", 95 | "post_id", 96 | "content", 97 | "user"::JSON, 98 | "post"::JSON 99 | FROM 100 | (SELECT "comments".*, 101 | CASE 102 | WHEN count("comments_post"."id") = 0 THEN '[]' 103 | ELSE json_agg(json_build_array("comments_post"."title", "comments_post"."user"::JSON))::text 104 | END AS "post" 105 | FROM 106 | (SELECT "comments".*, 107 | CASE 108 | WHEN count("comments_user"."id") = 0 THEN '[]' 109 | ELSE json_agg(json_build_array("comments_user"."name"))::text 110 | END AS "user" 111 | FROM "comments" 112 | LEFT JOIN 113 | (SELECT "comments_user".* 114 | FROM "users" "comments_user") "comments_user" ON "comments"."user_id" = "comments_user"."id" 115 | GROUP BY "comments"."id", 116 | "comments"."user_id", 117 | "comments"."post_id", 118 | "comments"."content") "comments" 119 | LEFT JOIN 120 | (SELECT "comments_post".* 121 | FROM 122 | (SELECT "comments_post".*, 123 | CASE 124 | WHEN count("comments_post_user"."id") = 0 THEN '[]' 125 | ELSE json_agg(json_build_array("comments_post_user"."name")) 126 | END AS "user" 127 | FROM "posts" "comments_post" 128 | LEFT JOIN 129 | (SELECT "comments_post_user".* 130 | FROM "users" "comments_post_user") "comments_post_user" ON "comments_post"."user_id" = "comments_post_user"."id" 131 | GROUP BY "comments_post"."id") "comments_post") "comments_post" ON "comments"."post_id" = "comments_post"."id" 132 | GROUP BY "comments"."id", 133 | "comments"."user_id", 134 | "comments"."post_id", 135 | "comments"."content", 136 | "comments"."user") "comments" 137 | LIMIT 1 138 | ``` 139 | 140 | SQL produced by **Drizzle ORM v0.28.0** 141 | ```sql 142 | select "comments"."id", 143 | "comments"."user_id", 144 | "comments"."post_id", 145 | "comments"."content", 146 | "comments_user"."data" as "user", 147 | "comments_post"."data" as "post" 148 | from "comments" 149 | left join lateral (select json_build_array("comments_user"."name") as "data" 150 | from (select * 151 | from "users" "comments_user" 152 | where "comments_user"."id" = "comments"."user_id" 153 | limit 1) "comments_user") "comments_user" on true 154 | left join lateral (select json_build_array("comments_post"."title", "comments_post_user"."data") as "data" 155 | from (select * 156 | from "posts" "comments_post" 157 | where "comments_post"."id" = "comments"."post_id" 158 | limit 1) "comments_post" 159 | left join lateral (select json_build_array("comments_post_user"."name") as "data" 160 | from (select * 161 | from "users" "comments_post_user" 162 | where "comments_post_user"."id" = "comments_post"."user_id" 163 | limit 1) "comments_post_user") "comments_post_user" 164 | on true) "comments_post" on true 165 | order by "comments"."id" 166 | limit 1 167 | ``` 168 | 169 | SQL produced by **Orchid ORM v1.10.5** 170 | ```sql 171 | SELECT "comments".*, 172 | row_to_json("user".*) "user", 173 | row_to_json("post".*) "post" 174 | FROM "comments" 175 | LEFT JOIN LATERAL 176 | (SELECT "user"."name" 177 | FROM "users" AS "user" 178 | WHERE "user"."id" = "comments"."user_id") "user" ON TRUE 179 | LEFT JOIN LATERAL 180 | (SELECT "post"."title", 181 | row_to_json("user2".*) "user" 182 | FROM "posts" AS "post" 183 | LEFT JOIN LATERAL 184 | (SELECT "user"."name" 185 | FROM "users" AS "user" 186 | WHERE "user"."id" = "post"."user_id") "user2" ON TRUE 187 | WHERE "post"."id" = "comments"."post_id") "post" ON TRUE 188 | LIMIT 1 189 | ``` 190 | 191 | ### Results for MySQL 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 |
count of commentssingle query with Drizzle ORM on v0.28.0multiple queries + data combination on v0.28.0
117 ms20 ms
10018 ms22 ms
100024 ms35 ms
500073 ms91 ms
224 | 225 | SQL produced by Drizzle ORM v0.28.0 226 | ```sql 227 | select `comments`.`id`, 228 | `comments`.`user_id`, 229 | `comments`.`post_id`, 230 | `comments`.`content`, 231 | `comments_user`.`data` as `user`, 232 | `comments_post`.`data` as `post` 233 | from `comments` 234 | left join lateral (select json_array(`comments_user`.`name`) as `data` 235 | from (select * 236 | from `users` `comments_user` 237 | where `comments_user`.`id` = `comments`.`user_id` 238 | limit 1) `comments_user`) `comments_user` on true 239 | left join lateral (select json_array(`comments_post`.`title`, `comments_post_user`.`data`) as `data` 240 | from (select * 241 | from `posts` `comments_post` 242 | where `comments_post`.`id` = `comments`.`post_id` 243 | limit 1) `comments_post` 244 | left join lateral (select json_array(`comments_post_user`.`name`) as `data` 245 | from (select * 246 | from `users` `comments_post_user` 247 | where `comments_post_user`.`id` = `comments_post`.`user_id` 248 | limit 1) `comments_post_user`) `comments_post_user` 249 | on true) `comments_post` on true 250 | order by `comments`.`id` 251 | limit 1 252 | ``` 253 | 254 | ### Results for SQLite 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 |
count of commentssingle query with Drizzle ORM v0.28.0multiple queries + data combination on v0.28.0
12 ms2 ms
1003 ms4 ms
100015 ms20 ms
500047 ms67 ms
287 | 288 | SQL produced by Drizzle ORM v0.28.0: 289 | 290 | ```sql 291 | select "id", 292 | "user_id", 293 | "post_id", 294 | "content", 295 | (select json_array("name") as "data" 296 | from (select * 297 | from "users" "comments_user" 298 | where "comments_user"."id" = "comments"."user_id" 299 | limit 1) "comments_user") as "user", 300 | (select json_array("title", (select json_array("name") as "data" 301 | from (select * 302 | from "users" "comments_post_user" 303 | where "comments_post_user"."id" = "comments_post"."user_id" 304 | limit 1) "comments_post_user")) as "data" 305 | from (select * 306 | from "posts" "comments_post" 307 | where "comments_post"."id" = "comments"."post_id" 308 | limit 1) "comments_post") as "post" 309 | from "comments" 310 | order by "comments"."id" 311 | limit 1 312 | ``` 313 | 314 | ## Run the benchmark yourself 315 | 316 | **Requirements:** You will need to have [docker-compose](https://docs.docker.com/compose/) and Nodejs installed on your system. 317 | 318 | Then follow these steps: 319 | 320 | - Clone this repo 321 | - Install dependencies `yarn install` 322 | - Generate the SQL file that inserts data into the database `yarn generate-seed` (You can change the amount of data to generate by changing the `counts` variable in `src/seed/generators.ts`) 323 | - Start the database `yarn start-db` (This will take some time to insert all the data, it took about 5mins on my system. Wait untill you see `database system is ready to accept connections`) 324 | - To seed sqlite database - use `yarn seed-sqlite` 325 | - Keep the database running, open a new terminal to run the scripts 326 | 327 | For PostgreSQL tests 328 | - Run the single query script with `yarn tsx src/pg/single.ts ` (example: `yarn tsx src/pg/single.ts 100`) 329 | - Run the multiple queries script with `yarn tsx src/pg/multiple.ts ` (example: `yarn tsx src/pg/multiple.ts 100`) 330 | - Run the orchid queries script with `yarn tsx src/pg/orchid.ts ` (example: `yarn tsx src/pg/orchid.ts 100`) 331 | 332 | For MySQL tests 333 | - Run the single query script with `yarn tsx src/mysql/single.ts ` (example: `yarn tsx src/mysql/single.ts 100`) 334 | - Run the multiple queries script with `yarn tsx src/mysql/multiple.ts ` (example: `yarn tsx src/mysql/multiple.ts 100`) 335 | 336 | For SQLite tests 337 | - Run the single query script with `yarn tsx src/sqlite/single.ts ` (example: `yarn tsx src/sqlite/single.ts 100`) 338 | - Run the multiple queries script with `yarn tsx src/sqlite/multiple.ts ` (example: `yarn tsx src/sqlite/multiple.ts 100`) 339 | 340 | The two scripts write the loaded data into the files `single.json`, `multiple.json`, and `orchid.json` respectively, so you can inspect the files and check that they fetch the same data. 341 | 342 | ## Got a feedback? 343 | 344 | Feel free to open an issue or submit a PR, I created this repo out of curiosity and my goal is to learn new things. if you see that I am doing something wrong, please let me know! 345 | -------------------------------------------------------------------------------- /src/seed/random/last_name.txt: -------------------------------------------------------------------------------- 1 | Smith 2 | Johnson 3 | Williams 4 | Brown 5 | Jones 6 | Garcia 7 | Miller 8 | Davis 9 | Rodriguez 10 | Martinez 11 | Hernandez 12 | Lopez 13 | Gonzalez 14 | Wilson 15 | Anderson 16 | Thomas 17 | Taylor 18 | Moore 19 | Jackson 20 | Martin 21 | Lee 22 | Perez 23 | Thompson 24 | White 25 | Harris 26 | Sanchez 27 | Clark 28 | Ramirez 29 | Lewis 30 | Robinson 31 | Walker 32 | Young 33 | Allen 34 | King 35 | Wright 36 | Scott 37 | Torres 38 | Nguyen 39 | Hill 40 | Flores 41 | Green 42 | Adams 43 | Nelson 44 | Baker 45 | Hall 46 | Rivera 47 | Campbell 48 | Mitchell 49 | Carter 50 | Roberts 51 | Gomez 52 | Phillips 53 | Evans 54 | Turner 55 | Diaz 56 | Parker 57 | Cruz 58 | Edwards 59 | Collins 60 | Reyes 61 | Stewart 62 | Morris 63 | Morales 64 | Murphy 65 | Cook 66 | Rogers 67 | Gutierrez 68 | Ortiz 69 | Morgan 70 | Cooper 71 | Peterson 72 | Bailey 73 | Reed 74 | Kelly 75 | Howard 76 | Ramos 77 | Kim 78 | Cox 79 | Ward 80 | Richardson 81 | Watson 82 | Brooks 83 | Chavez 84 | Wood 85 | James 86 | Bennett 87 | Gray 88 | Mendoza 89 | Ruiz 90 | Hughes 91 | Price 92 | Alvarez 93 | Castillo 94 | Sanders 95 | Patel 96 | Myers 97 | Long 98 | Ross 99 | Foster 100 | Jimenez 101 | Powell 102 | Jenkins 103 | Perry 104 | Russell 105 | Sullivan 106 | Bell 107 | Coleman 108 | Butler 109 | Henderson 110 | Barnes 111 | Gonzales 112 | Fisher 113 | Vasquez 114 | Simmons 115 | Romero 116 | Jordan 117 | Patterson 118 | Alexander 119 | Hamilton 120 | Graham 121 | Reynolds 122 | Griffin 123 | Wallace 124 | Moreno 125 | West 126 | Cole 127 | Hayes 128 | Bryant 129 | Herrera 130 | Gibson 131 | Ellis 132 | Tran 133 | Medina 134 | Aguilar 135 | Stevens 136 | Murray 137 | Ford 138 | Castro 139 | Marshall 140 | Owens 141 | Harrison 142 | Fernandez 143 | Mcdonald 144 | Woods 145 | Washington 146 | Kennedy 147 | Wells 148 | Vargas 149 | Henry 150 | Chen 151 | Freeman 152 | Webb 153 | Tucker 154 | Guzman 155 | Burns 156 | Crawford 157 | Olson 158 | Simpson 159 | Porter 160 | Hunter 161 | Gordon 162 | Mendez 163 | Silva 164 | Shaw 165 | Snyder 166 | Mason 167 | Dixon 168 | Muñoz 169 | Hunt 170 | Hicks 171 | Holmes 172 | Palmer 173 | Wagner 174 | Black 175 | Robertson 176 | Boyd 177 | Rose 178 | Stone 179 | Salazar 180 | Fox 181 | Warren 182 | Mills 183 | Meyer 184 | Rice 185 | Schmidt 186 | Garza 187 | Daniels 188 | Ferguson 189 | Nichols 190 | Stephens 191 | Soto 192 | Weaver 193 | Ryan 194 | Gardner 195 | Payne 196 | Grant 197 | Dunn 198 | Kelley 199 | Spencer 200 | Hawkins 201 | Arnold 202 | Pierce 203 | Vazquez 204 | Hansen 205 | Peters 206 | Santos 207 | Hart 208 | Bradley 209 | Knight 210 | Elliott 211 | Cunningham 212 | Duncan 213 | Armstrong 214 | Hudson 215 | Carroll 216 | Lane 217 | Riley 218 | Andrews 219 | Alvarado 220 | Ray 221 | Delgado 222 | Berry 223 | Perkins 224 | Hoffman 225 | Johnston 226 | Matthews 227 | Peña 228 | Richards 229 | Contreras 230 | Willis 231 | Carpenter 232 | Lawrence 233 | Sandoval 234 | Guerrero 235 | George 236 | Chapman 237 | Rios 238 | Estrada 239 | Ortega 240 | Watkins 241 | Greene 242 | Nuñez 243 | Wheeler 244 | Valdez 245 | Harper 246 | Burke 247 | Larson 248 | Santiago 249 | Maldonado 250 | Morrison 251 | Franklin 252 | Carlson 253 | Austin 254 | Dominguez 255 | Carr 256 | Lawson 257 | Jacobs 258 | O’brien 259 | Lynch 260 | Singh 261 | Vega 262 | Bishop 263 | Montgomery 264 | Oliver 265 | Jensen 266 | Harvey 267 | Williamson 268 | Gilbert 269 | Dean 270 | Sims 271 | Espinoza 272 | Howell 273 | Li 274 | Wong 275 | Reid 276 | Hanson 277 | Le 278 | Mccoy 279 | Garrett 280 | Burton 281 | Fuller 282 | Wang 283 | Weber 284 | Welch 285 | Rojas 286 | Lucas 287 | Marquez 288 | Fields 289 | Park 290 | Yang 291 | Little 292 | Banks 293 | Padilla 294 | Day 295 | Walsh 296 | Bowman 297 | Schultz 298 | Luna 299 | Fowler 300 | Mejia 301 | Davidson 302 | Acosta 303 | Brewer 304 | May 305 | Holland 306 | Juarez 307 | Newman 308 | Pearson 309 | Curtis 310 | Cortéz 311 | Douglas 312 | Schneider 313 | Joseph 314 | Barrett 315 | Navarro 316 | Figueroa 317 | Keller 318 | Ávila 319 | Wade 320 | Molina 321 | Stanley 322 | Hopkins 323 | Campos 324 | Barnett 325 | Bates 326 | Chambers 327 | Caldwell 328 | Beck 329 | Lambert 330 | Miranda 331 | Byrd 332 | Craig 333 | Ayala 334 | Lowe 335 | Frazier 336 | Powers 337 | Neal 338 | Leonard 339 | Gregory 340 | Carrillo 341 | Sutton 342 | Fleming 343 | Rhodes 344 | Shelton 345 | Schwartz 346 | Norris 347 | Jennings 348 | Watts 349 | Duran 350 | Walters 351 | Cohen 352 | Mcdaniel 353 | Moran 354 | Parks 355 | Steele 356 | Vaughn 357 | Becker 358 | Holt 359 | Deleon 360 | Barker 361 | Terry 362 | Hale 363 | Leon 364 | Hail 365 | Benson 366 | Haynes 367 | Horton 368 | Miles 369 | Lyons 370 | Pham 371 | Graves 372 | Bush 373 | Thornton 374 | Wolfe 375 | Warner 376 | Cabrera 377 | Mckinney 378 | Mann 379 | Zimmerman 380 | Dawson 381 | Lara 382 | Fletcher 383 | Page 384 | Mccarthy 385 | Love 386 | Robles 387 | Cervantes 388 | Solis 389 | Erickson 390 | Reeves 391 | Chang 392 | Klein 393 | Salinas 394 | Fuentes 395 | Baldwin 396 | Daniel 397 | Simon 398 | Velasquez 399 | Hardy 400 | Higgins 401 | Aguirre 402 | Lin 403 | Cummings 404 | Chandler 405 | Sharp 406 | Barber 407 | Bowen 408 | Ochoa 409 | Dennis 410 | Robbins 411 | Liu 412 | Ramsey 413 | Francis 414 | Griffith 415 | Paul 416 | Blair 417 | O’connor 418 | Cardenas 419 | Pacheco 420 | Cross 421 | Calderon 422 | Quinn 423 | Moss 424 | Swanson 425 | Chan 426 | Rivas 427 | Khan 428 | Rodgers 429 | Serrano 430 | Fitzgerald 431 | Rosales 432 | Stevenson 433 | Christensen 434 | Manning 435 | Gill 436 | Curry 437 | Mclaughlin 438 | Harmon 439 | Mcgee 440 | Gross 441 | Doyle 442 | Garner 443 | Newton 444 | Burgess 445 | Reese 446 | Walton 447 | Blake 448 | Trujillo 449 | Adkins 450 | Brady 451 | Goodman 452 | Roman 453 | Webster 454 | Goodwin 455 | Fischer 456 | Huang 457 | Potter 458 | Delacruz 459 | Montoya 460 | Todd 461 | Wu 462 | Hines 463 | Mullins 464 | Castaneda 465 | Malone 466 | Cannon 467 | Tate 468 | Mack 469 | Sherman 470 | Hubbard 471 | Hodges 472 | Zhang 473 | Guerra 474 | Wolf 475 | Valencia 476 | Saunders 477 | Franco 478 | Rowe 479 | Gallagher 480 | Farmer 481 | Hammond 482 | Hampton 483 | Townsend 484 | Ingram 485 | Wise 486 | Gallegos 487 | Clarke 488 | Barton 489 | Schroeder 490 | Maxwell 491 | Waters 492 | Logan 493 | Camacho 494 | Strickland 495 | Norman 496 | Person 497 | Colón 498 | Parsons 499 | Frank 500 | Harrington 501 | Glover 502 | Osborne 503 | Buchanan 504 | Casey 505 | Floyd 506 | Patton 507 | Ibarra 508 | Ball 509 | Tyler 510 | Suarez 511 | Bowers 512 | Orozco 513 | Salas 514 | Cobb 515 | Gibbs 516 | Andrade 517 | Bauer 518 | Conner 519 | Moody 520 | Escobar 521 | Mcguire 522 | Lloyd 523 | Mueller 524 | Hartman 525 | French 526 | Kramer 527 | Mcbride 528 | Pope 529 | Lindsey 530 | Velazquez 531 | Norton 532 | Mccormick 533 | Sparks 534 | Flynn 535 | Yates 536 | Hogan 537 | Marsh 538 | Macias 539 | Villanueva 540 | Zamora 541 | Pratt 542 | Stokes 543 | Owen 544 | Ballard 545 | Lang 546 | Brock 547 | Villarreal 548 | Charles 549 | Drake 550 | Barrera 551 | Cain 552 | Patrick 553 | Piñeda 554 | Burnett 555 | Mercado 556 | Santana 557 | Shepherd 558 | Bautista 559 | Ali 560 | Shaffer 561 | Lamb 562 | Trevino 563 | Mckenzie 564 | Hess 565 | Beil 566 | Olsen 567 | Cochran 568 | Morton 569 | Nash 570 | Wilkins 571 | Petersen 572 | Briggs 573 | Shah 574 | Roth 575 | Nicholson 576 | Holloway 577 | Lozano 578 | Rangel 579 | Flowers 580 | Hoover 581 | Short 582 | Arias 583 | Mora 584 | Valenzuela 585 | Bryan 586 | Meyers 587 | Weiss 588 | Underwood 589 | Bass 590 | Greer 591 | Summers 592 | Houston 593 | Carson 594 | Morrow 595 | Clayton 596 | Whitaker 597 | Decker 598 | Yoder 599 | Collier 600 | Zuniga 601 | Carey 602 | Wilcox 603 | Melendez 604 | Poole 605 | Roberson 606 | Larsen 607 | Conley 608 | Davenport 609 | Copeland 610 | Massey 611 | Lam 612 | Huff 613 | Rocha 614 | Cameron 615 | Jefferson 616 | Hood 617 | Monroe 618 | Anthony 619 | Pittman 620 | Huynh 621 | Randall 622 | Singleton 623 | Kirk 624 | Combs 625 | Mathis 626 | Christian 627 | Skinner 628 | Bradford 629 | Richard 630 | Galvan 631 | Wall 632 | Boone 633 | Kirby 634 | Wilkinson 635 | Bridges 636 | Bruce 637 | Atkinson 638 | Velez 639 | Meza 640 | Roy 641 | Vincent 642 | York 643 | Hodge 644 | Villa 645 | Abbott 646 | Allison 647 | Tapia 648 | Gates 649 | Chase 650 | Sosa 651 | Sweeney 652 | Farrell 653 | Wyatt 654 | Dalton 655 | Horn 656 | Barron 657 | Phelps 658 | Yu 659 | Dickerson 660 | Heath 661 | Foley 662 | Atkins 663 | Mathews 664 | Bonilla 665 | Acevedo 666 | Benitez 667 | Zavala 668 | Hensley 669 | Glenn 670 | Cisneros 671 | Harrell 672 | Shields 673 | Rubio 674 | Huffman 675 | Choi 676 | Boyer 677 | Garrison 678 | Arroyo 679 | Bond 680 | Kane 681 | Hancock 682 | Callahan 683 | Dillon 684 | Cline 685 | Wiggins 686 | Grimes 687 | Arellano 688 | Melton 689 | O’neill 690 | Savage 691 | Ho 692 | Beltran 693 | Pitts 694 | Parrish 695 | Ponce 696 | Rich 697 | Booth 698 | Koch 699 | Golden 700 | Ware 701 | Brennan 702 | Mcdowell 703 | Marks 704 | Cantu 705 | Humphrey 706 | Baxter 707 | Sawyer 708 | Clay 709 | Tanner 710 | Hutchinson 711 | Kaur 712 | Berg 713 | Wiley 714 | Gilmore 715 | Russo 716 | Villegas 717 | Hobbs 718 | Keith 719 | Wilkerson 720 | Ahmed 721 | Beard 722 | Mcclain 723 | Montes 724 | Mata 725 | Rosario 726 | Vang 727 | Walter 728 | Henson 729 | O’neal 730 | Mosley 731 | Mcclure 732 | Beasley 733 | Stephenson 734 | Snow 735 | Huerta 736 | Preston 737 | Vance 738 | Barry 739 | Johns 740 | Eaton 741 | Blackwell 742 | Dyer 743 | Prince 744 | Macdonald 745 | Solomon 746 | Guevara 747 | Stafford 748 | English 749 | Hurst 750 | Woodard 751 | Cortes 752 | Shannon 753 | Kemp 754 | Nolan 755 | Mccullough 756 | Merritt 757 | Murillo 758 | Moon 759 | Salgado 760 | Strong 761 | Kline 762 | Cordova 763 | Barajas 764 | Roach 765 | Rosas 766 | Winters 767 | Jacobson 768 | Lester 769 | Knox 770 | Bullock 771 | Kerr 772 | Leach 773 | Meadows 774 | Orr 775 | Davila 776 | Whitehead 777 | Pruitt 778 | Kent 779 | Conway 780 | Mckee 781 | Barr 782 | David 783 | Dejesus 784 | Marin 785 | Berger 786 | Mcintyre 787 | Blankenship 788 | Gaines 789 | Palacios 790 | Cuevas 791 | Bartlett 792 | Durham 793 | Dorsey 794 | Mccall 795 | O’donnell 796 | Stein 797 | Browning 798 | Stout 799 | Lowery 800 | Sloan 801 | Mclean 802 | Hendricks 803 | Calhoun 804 | Sexton 805 | Chung 806 | Gentry 807 | Hull 808 | Duarte 809 | Ellison 810 | Nielsen 811 | Gillespie 812 | Buck 813 | Middleton 814 | Sellers 815 | Leblanc 816 | Esparza 817 | Hardin 818 | Bradshaw 819 | Mcintosh 820 | Howe 821 | Livingston 822 | Frost 823 | Glass 824 | Morse 825 | Knapp 826 | Herman 827 | Stark 828 | Bravo 829 | Noble 830 | Spears 831 | Weeks 832 | Corona 833 | Frederick 834 | Buckley 835 | Mcfarland 836 | Hebert 837 | Enriquez 838 | Hickman 839 | Quintero 840 | Randolph 841 | Schaefer 842 | Walls 843 | Trejo 844 | House 845 | Reilly 846 | Pennington 847 | Michael 848 | Conrad 849 | Giles 850 | Benjamin 851 | Crosby 852 | Fitzpatrick 853 | Donovan 854 | Mays 855 | Mahoney 856 | Valentine 857 | Raymond 858 | Medrano 859 | Hahn 860 | Mcmillan 861 | Small 862 | Bentley 863 | Felix 864 | Peck 865 | Lucero 866 | Boyle 867 | Hanna 868 | Pace 869 | Rush 870 | Hurley 871 | Harding 872 | Mcconnell 873 | Bernal 874 | Nava 875 | Ayers 876 | Everett 877 | Ventura 878 | Avery 879 | Pugh 880 | Mayer 881 | Bender 882 | Shepard 883 | Mcmahon 884 | Landry 885 | Case 886 | Sampson 887 | Moses 888 | Magana 889 | Blackburn 890 | Dunlap 891 | Gould 892 | Duffy 893 | Vaughan 894 | Herring 895 | Mckay 896 | Espinosa 897 | Rivers 898 | Farley 899 | Bernard 900 | Ashley 901 | Friedman 902 | Potts 903 | Truong 904 | Costa 905 | Correa 906 | Blevins 907 | Nixon 908 | Clements 909 | Fry 910 | Delarosa 911 | Best 912 | Benton 913 | Lugo 914 | Portillo 915 | Dougherty 916 | Crane 917 | Haley 918 | Phan 919 | Villalobos 920 | Blanchard 921 | Horne 922 | Finley 923 | Quintana 924 | Lynn 925 | Esquivel 926 | Bean 927 | Dodson 928 | Mullen 929 | Xiong 930 | Hayden 931 | Cano 932 | Levy 933 | Huber 934 | Richmond 935 | Moyer 936 | Lim 937 | Frye 938 | Sheppard 939 | Mccarty 940 | Avalos 941 | Booker 942 | Waller 943 | Parra 944 | Woodward 945 | Jaramillo 946 | Krueger 947 | Rasmussen 948 | Brandt 949 | Peralta 950 | Donaldson 951 | Stuart 952 | Faulkner 953 | Maynard 954 | Galindo 955 | Coffey 956 | Estes 957 | Sanford 958 | Burch 959 | Maddox 960 | Vo 961 | O’connell 962 | Vu 963 | Andersen 964 | Spence 965 | Mcpherson 966 | Church 967 | Schmitt 968 | Stanton 969 | Leal 970 | Cherry 971 | Compton 972 | Dudley 973 | Sierra 974 | Pollard 975 | Alfaro 976 | Hester 977 | Proctor 978 | Lu 979 | Hinton 980 | Novak 981 | Good 982 | Madden 983 | Mccann 984 | Terrell 985 | Jarvis 986 | Dickson 987 | Reyna 988 | Cantrell 989 | Mayo 990 | Branch 991 | Hendrix 992 | Rollins 993 | Rowland 994 | Whitney 995 | Duke 996 | Odom 997 | Daugherty 998 | Travis 999 | Tang 1000 | Archer -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.1' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@types/node': 9 | specifier: ^20.2.5 10 | version: 20.4.8 11 | better-sqlite3: 12 | specifier: ^8.4.0 13 | version: 8.5.0 14 | drizzle-orm: 15 | specifier: ^0.28.0 16 | version: 0.28.0(@types/better-sqlite3@7.6.4)(better-sqlite3@8.5.0)(mysql2@3.6.0)(pg@8.11.2)(postgres@3.3.5) 17 | mysql2: 18 | specifier: ^3.5.1 19 | version: 3.6.0 20 | orchid-orm: 21 | specifier: ^1.10.5 22 | version: 1.15.1(typescript@5.1.6) 23 | postgres: 24 | specifier: ^3.3.5 25 | version: 3.3.5 26 | prettier: 27 | specifier: ^2.8.8 28 | version: 2.8.8 29 | tsx: 30 | specifier: ^3.12.7 31 | version: 3.12.7 32 | 33 | devDependencies: 34 | '@types/better-sqlite3': 35 | specifier: ^7.6.4 36 | version: 7.6.4 37 | drizzle-kit: 38 | specifier: ^0.18.1 39 | version: 0.18.1 40 | typescript: 41 | specifier: ^5.1.3 42 | version: 5.1.6 43 | 44 | packages: 45 | 46 | /@esbuild-kit/cjs-loader@2.4.2: 47 | resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} 48 | dependencies: 49 | '@esbuild-kit/core-utils': 3.1.0 50 | get-tsconfig: 4.6.2 51 | dev: false 52 | 53 | /@esbuild-kit/core-utils@3.1.0: 54 | resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} 55 | dependencies: 56 | esbuild: 0.17.19 57 | source-map-support: 0.5.21 58 | dev: false 59 | 60 | /@esbuild-kit/esm-loader@2.5.5: 61 | resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} 62 | dependencies: 63 | '@esbuild-kit/core-utils': 3.1.0 64 | get-tsconfig: 4.6.2 65 | dev: false 66 | 67 | /@esbuild/android-arm64@0.17.19: 68 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 69 | engines: {node: '>=12'} 70 | cpu: [arm64] 71 | os: [android] 72 | requiresBuild: true 73 | dev: false 74 | optional: true 75 | 76 | /@esbuild/android-arm@0.15.18: 77 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} 78 | engines: {node: '>=12'} 79 | cpu: [arm] 80 | os: [android] 81 | requiresBuild: true 82 | dev: true 83 | optional: true 84 | 85 | /@esbuild/android-arm@0.17.19: 86 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 87 | engines: {node: '>=12'} 88 | cpu: [arm] 89 | os: [android] 90 | requiresBuild: true 91 | dev: false 92 | optional: true 93 | 94 | /@esbuild/android-x64@0.17.19: 95 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 96 | engines: {node: '>=12'} 97 | cpu: [x64] 98 | os: [android] 99 | requiresBuild: true 100 | dev: false 101 | optional: true 102 | 103 | /@esbuild/darwin-arm64@0.17.19: 104 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 105 | engines: {node: '>=12'} 106 | cpu: [arm64] 107 | os: [darwin] 108 | requiresBuild: true 109 | dev: false 110 | optional: true 111 | 112 | /@esbuild/darwin-x64@0.17.19: 113 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 114 | engines: {node: '>=12'} 115 | cpu: [x64] 116 | os: [darwin] 117 | requiresBuild: true 118 | dev: false 119 | optional: true 120 | 121 | /@esbuild/freebsd-arm64@0.17.19: 122 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 123 | engines: {node: '>=12'} 124 | cpu: [arm64] 125 | os: [freebsd] 126 | requiresBuild: true 127 | dev: false 128 | optional: true 129 | 130 | /@esbuild/freebsd-x64@0.17.19: 131 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 132 | engines: {node: '>=12'} 133 | cpu: [x64] 134 | os: [freebsd] 135 | requiresBuild: true 136 | dev: false 137 | optional: true 138 | 139 | /@esbuild/linux-arm64@0.17.19: 140 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 141 | engines: {node: '>=12'} 142 | cpu: [arm64] 143 | os: [linux] 144 | requiresBuild: true 145 | dev: false 146 | optional: true 147 | 148 | /@esbuild/linux-arm@0.17.19: 149 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 150 | engines: {node: '>=12'} 151 | cpu: [arm] 152 | os: [linux] 153 | requiresBuild: true 154 | dev: false 155 | optional: true 156 | 157 | /@esbuild/linux-ia32@0.17.19: 158 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 159 | engines: {node: '>=12'} 160 | cpu: [ia32] 161 | os: [linux] 162 | requiresBuild: true 163 | dev: false 164 | optional: true 165 | 166 | /@esbuild/linux-loong64@0.15.18: 167 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} 168 | engines: {node: '>=12'} 169 | cpu: [loong64] 170 | os: [linux] 171 | requiresBuild: true 172 | dev: true 173 | optional: true 174 | 175 | /@esbuild/linux-loong64@0.17.19: 176 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 177 | engines: {node: '>=12'} 178 | cpu: [loong64] 179 | os: [linux] 180 | requiresBuild: true 181 | dev: false 182 | optional: true 183 | 184 | /@esbuild/linux-mips64el@0.17.19: 185 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 186 | engines: {node: '>=12'} 187 | cpu: [mips64el] 188 | os: [linux] 189 | requiresBuild: true 190 | dev: false 191 | optional: true 192 | 193 | /@esbuild/linux-ppc64@0.17.19: 194 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 195 | engines: {node: '>=12'} 196 | cpu: [ppc64] 197 | os: [linux] 198 | requiresBuild: true 199 | dev: false 200 | optional: true 201 | 202 | /@esbuild/linux-riscv64@0.17.19: 203 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 204 | engines: {node: '>=12'} 205 | cpu: [riscv64] 206 | os: [linux] 207 | requiresBuild: true 208 | dev: false 209 | optional: true 210 | 211 | /@esbuild/linux-s390x@0.17.19: 212 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 213 | engines: {node: '>=12'} 214 | cpu: [s390x] 215 | os: [linux] 216 | requiresBuild: true 217 | dev: false 218 | optional: true 219 | 220 | /@esbuild/linux-x64@0.17.19: 221 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 222 | engines: {node: '>=12'} 223 | cpu: [x64] 224 | os: [linux] 225 | requiresBuild: true 226 | dev: false 227 | optional: true 228 | 229 | /@esbuild/netbsd-x64@0.17.19: 230 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 231 | engines: {node: '>=12'} 232 | cpu: [x64] 233 | os: [netbsd] 234 | requiresBuild: true 235 | dev: false 236 | optional: true 237 | 238 | /@esbuild/openbsd-x64@0.17.19: 239 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 240 | engines: {node: '>=12'} 241 | cpu: [x64] 242 | os: [openbsd] 243 | requiresBuild: true 244 | dev: false 245 | optional: true 246 | 247 | /@esbuild/sunos-x64@0.17.19: 248 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 249 | engines: {node: '>=12'} 250 | cpu: [x64] 251 | os: [sunos] 252 | requiresBuild: true 253 | dev: false 254 | optional: true 255 | 256 | /@esbuild/win32-arm64@0.17.19: 257 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 258 | engines: {node: '>=12'} 259 | cpu: [arm64] 260 | os: [win32] 261 | requiresBuild: true 262 | dev: false 263 | optional: true 264 | 265 | /@esbuild/win32-ia32@0.17.19: 266 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 267 | engines: {node: '>=12'} 268 | cpu: [ia32] 269 | os: [win32] 270 | requiresBuild: true 271 | dev: false 272 | optional: true 273 | 274 | /@esbuild/win32-x64@0.17.19: 275 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 276 | engines: {node: '>=12'} 277 | cpu: [x64] 278 | os: [win32] 279 | requiresBuild: true 280 | dev: false 281 | optional: true 282 | 283 | /@types/better-sqlite3@7.6.4: 284 | resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} 285 | dependencies: 286 | '@types/node': 20.4.8 287 | 288 | /@types/node@20.4.8: 289 | resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==} 290 | 291 | /@types/pg@8.10.2: 292 | resolution: {integrity: sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==} 293 | dependencies: 294 | '@types/node': 20.4.8 295 | pg-protocol: 1.6.0 296 | pg-types: 4.0.1 297 | dev: false 298 | 299 | /balanced-match@1.0.2: 300 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 301 | dev: true 302 | 303 | /base64-js@1.5.1: 304 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 305 | dev: false 306 | 307 | /better-sqlite3@8.5.0: 308 | resolution: {integrity: sha512-vbPcv/Hx5WYdyNg/NbcfyaBZyv9s/NVbxb7yCeC5Bq1pVocNxeL2tZmSu3Rlm4IEOTjYdGyzWQgyx0OSdORBzw==} 309 | requiresBuild: true 310 | dependencies: 311 | bindings: 1.5.0 312 | prebuild-install: 7.1.1 313 | dev: false 314 | 315 | /bindings@1.5.0: 316 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 317 | dependencies: 318 | file-uri-to-path: 1.0.0 319 | dev: false 320 | 321 | /bl@4.1.0: 322 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 323 | dependencies: 324 | buffer: 5.7.1 325 | inherits: 2.0.4 326 | readable-stream: 3.6.2 327 | dev: false 328 | 329 | /brace-expansion@2.0.1: 330 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 331 | dependencies: 332 | balanced-match: 1.0.2 333 | dev: true 334 | 335 | /buffer-from@1.1.2: 336 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 337 | dev: false 338 | 339 | /buffer-writer@2.0.0: 340 | resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 341 | engines: {node: '>=4'} 342 | dev: false 343 | 344 | /buffer@5.7.1: 345 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 346 | dependencies: 347 | base64-js: 1.5.1 348 | ieee754: 1.2.1 349 | dev: false 350 | 351 | /camelcase@7.0.1: 352 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} 353 | engines: {node: '>=14.16'} 354 | dev: true 355 | 356 | /chalk@5.3.0: 357 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 358 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 359 | dev: true 360 | 361 | /chownr@1.1.4: 362 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 363 | dev: false 364 | 365 | /cli-color@2.0.3: 366 | resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} 367 | engines: {node: '>=0.10'} 368 | dependencies: 369 | d: 1.0.1 370 | es5-ext: 0.10.62 371 | es6-iterator: 2.0.3 372 | memoizee: 0.4.15 373 | timers-ext: 0.1.7 374 | dev: true 375 | 376 | /commander@9.5.0: 377 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 378 | engines: {node: ^12.20.0 || >=14} 379 | dev: true 380 | 381 | /d@1.0.1: 382 | resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} 383 | dependencies: 384 | es5-ext: 0.10.62 385 | type: 1.2.0 386 | dev: true 387 | 388 | /debug@4.3.4: 389 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 390 | engines: {node: '>=6.0'} 391 | peerDependencies: 392 | supports-color: '*' 393 | peerDependenciesMeta: 394 | supports-color: 395 | optional: true 396 | dependencies: 397 | ms: 2.1.2 398 | dev: true 399 | 400 | /decompress-response@6.0.0: 401 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 402 | engines: {node: '>=10'} 403 | dependencies: 404 | mimic-response: 3.1.0 405 | dev: false 406 | 407 | /deep-extend@0.6.0: 408 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 409 | engines: {node: '>=4.0.0'} 410 | dev: false 411 | 412 | /denque@2.1.0: 413 | resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} 414 | engines: {node: '>=0.10'} 415 | dev: false 416 | 417 | /detect-libc@2.0.2: 418 | resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 419 | engines: {node: '>=8'} 420 | dev: false 421 | 422 | /difflib@0.2.4: 423 | resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} 424 | dependencies: 425 | heap: 0.2.7 426 | dev: true 427 | 428 | /dreamopt@0.8.0: 429 | resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} 430 | engines: {node: '>=0.4.0'} 431 | dependencies: 432 | wordwrap: 1.0.0 433 | dev: true 434 | 435 | /drizzle-kit@0.18.1: 436 | resolution: {integrity: sha512-Oqie227W2Dd7FuqX4pvQWeClSvnoPCIn2cO9JueeLWZqj3tpdBhnbgt4nLHhBbOdWRlTLYwXnkTDW3hYym/gGQ==} 437 | hasBin: true 438 | dependencies: 439 | camelcase: 7.0.1 440 | chalk: 5.3.0 441 | commander: 9.5.0 442 | esbuild: 0.15.18 443 | esbuild-register: 3.4.2(esbuild@0.15.18) 444 | glob: 8.1.0 445 | hanji: 0.0.5 446 | json-diff: 0.9.0 447 | minimatch: 7.4.6 448 | zod: 3.21.4 449 | transitivePeerDependencies: 450 | - supports-color 451 | dev: true 452 | 453 | /drizzle-orm@0.28.0(@types/better-sqlite3@7.6.4)(better-sqlite3@8.5.0)(mysql2@3.6.0)(pg@8.11.2)(postgres@3.3.5): 454 | resolution: {integrity: sha512-iNNNtWM6YwXWI5vAkgFx+FPtZvo/ZnLh8uZV1e7+Alhan5ZS0q3tqbGFP8uCMngW+hNbJqsaHsxPw6AN87urmw==} 455 | peerDependencies: 456 | '@aws-sdk/client-rds-data': '>=3' 457 | '@cloudflare/workers-types': '>=3' 458 | '@libsql/client': '*' 459 | '@neondatabase/serverless': '>=0.1' 460 | '@opentelemetry/api': ^1.4.1 461 | '@planetscale/database': '>=1' 462 | '@types/better-sqlite3': '*' 463 | '@types/pg': '*' 464 | '@types/sql.js': '*' 465 | '@vercel/postgres': '*' 466 | better-sqlite3: '>=7' 467 | bun-types: '*' 468 | knex: '*' 469 | kysely: '*' 470 | mysql2: '>=2' 471 | pg: '>=8' 472 | postgres: '>=3' 473 | sql.js: '>=1' 474 | sqlite3: '>=5' 475 | peerDependenciesMeta: 476 | '@aws-sdk/client-rds-data': 477 | optional: true 478 | '@cloudflare/workers-types': 479 | optional: true 480 | '@libsql/client': 481 | optional: true 482 | '@neondatabase/serverless': 483 | optional: true 484 | '@opentelemetry/api': 485 | optional: true 486 | '@planetscale/database': 487 | optional: true 488 | '@types/better-sqlite3': 489 | optional: true 490 | '@types/pg': 491 | optional: true 492 | '@types/sql.js': 493 | optional: true 494 | '@vercel/postgres': 495 | optional: true 496 | better-sqlite3: 497 | optional: true 498 | bun-types: 499 | optional: true 500 | knex: 501 | optional: true 502 | kysely: 503 | optional: true 504 | mysql2: 505 | optional: true 506 | pg: 507 | optional: true 508 | postgres: 509 | optional: true 510 | sql.js: 511 | optional: true 512 | sqlite3: 513 | optional: true 514 | dependencies: 515 | '@types/better-sqlite3': 7.6.4 516 | better-sqlite3: 8.5.0 517 | mysql2: 3.6.0 518 | pg: 8.11.2 519 | postgres: 3.3.5 520 | dev: false 521 | 522 | /end-of-stream@1.4.4: 523 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 524 | dependencies: 525 | once: 1.4.0 526 | dev: false 527 | 528 | /es5-ext@0.10.62: 529 | resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} 530 | engines: {node: '>=0.10'} 531 | requiresBuild: true 532 | dependencies: 533 | es6-iterator: 2.0.3 534 | es6-symbol: 3.1.3 535 | next-tick: 1.1.0 536 | dev: true 537 | 538 | /es6-iterator@2.0.3: 539 | resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} 540 | dependencies: 541 | d: 1.0.1 542 | es5-ext: 0.10.62 543 | es6-symbol: 3.1.3 544 | dev: true 545 | 546 | /es6-symbol@3.1.3: 547 | resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} 548 | dependencies: 549 | d: 1.0.1 550 | ext: 1.7.0 551 | dev: true 552 | 553 | /es6-weak-map@2.0.3: 554 | resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} 555 | dependencies: 556 | d: 1.0.1 557 | es5-ext: 0.10.62 558 | es6-iterator: 2.0.3 559 | es6-symbol: 3.1.3 560 | dev: true 561 | 562 | /esbuild-android-64@0.15.18: 563 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} 564 | engines: {node: '>=12'} 565 | cpu: [x64] 566 | os: [android] 567 | requiresBuild: true 568 | dev: true 569 | optional: true 570 | 571 | /esbuild-android-arm64@0.15.18: 572 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} 573 | engines: {node: '>=12'} 574 | cpu: [arm64] 575 | os: [android] 576 | requiresBuild: true 577 | dev: true 578 | optional: true 579 | 580 | /esbuild-darwin-64@0.15.18: 581 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} 582 | engines: {node: '>=12'} 583 | cpu: [x64] 584 | os: [darwin] 585 | requiresBuild: true 586 | dev: true 587 | optional: true 588 | 589 | /esbuild-darwin-arm64@0.15.18: 590 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} 591 | engines: {node: '>=12'} 592 | cpu: [arm64] 593 | os: [darwin] 594 | requiresBuild: true 595 | dev: true 596 | optional: true 597 | 598 | /esbuild-freebsd-64@0.15.18: 599 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} 600 | engines: {node: '>=12'} 601 | cpu: [x64] 602 | os: [freebsd] 603 | requiresBuild: true 604 | dev: true 605 | optional: true 606 | 607 | /esbuild-freebsd-arm64@0.15.18: 608 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} 609 | engines: {node: '>=12'} 610 | cpu: [arm64] 611 | os: [freebsd] 612 | requiresBuild: true 613 | dev: true 614 | optional: true 615 | 616 | /esbuild-linux-32@0.15.18: 617 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} 618 | engines: {node: '>=12'} 619 | cpu: [ia32] 620 | os: [linux] 621 | requiresBuild: true 622 | dev: true 623 | optional: true 624 | 625 | /esbuild-linux-64@0.15.18: 626 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} 627 | engines: {node: '>=12'} 628 | cpu: [x64] 629 | os: [linux] 630 | requiresBuild: true 631 | dev: true 632 | optional: true 633 | 634 | /esbuild-linux-arm64@0.15.18: 635 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} 636 | engines: {node: '>=12'} 637 | cpu: [arm64] 638 | os: [linux] 639 | requiresBuild: true 640 | dev: true 641 | optional: true 642 | 643 | /esbuild-linux-arm@0.15.18: 644 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} 645 | engines: {node: '>=12'} 646 | cpu: [arm] 647 | os: [linux] 648 | requiresBuild: true 649 | dev: true 650 | optional: true 651 | 652 | /esbuild-linux-mips64le@0.15.18: 653 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} 654 | engines: {node: '>=12'} 655 | cpu: [mips64el] 656 | os: [linux] 657 | requiresBuild: true 658 | dev: true 659 | optional: true 660 | 661 | /esbuild-linux-ppc64le@0.15.18: 662 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} 663 | engines: {node: '>=12'} 664 | cpu: [ppc64] 665 | os: [linux] 666 | requiresBuild: true 667 | dev: true 668 | optional: true 669 | 670 | /esbuild-linux-riscv64@0.15.18: 671 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} 672 | engines: {node: '>=12'} 673 | cpu: [riscv64] 674 | os: [linux] 675 | requiresBuild: true 676 | dev: true 677 | optional: true 678 | 679 | /esbuild-linux-s390x@0.15.18: 680 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} 681 | engines: {node: '>=12'} 682 | cpu: [s390x] 683 | os: [linux] 684 | requiresBuild: true 685 | dev: true 686 | optional: true 687 | 688 | /esbuild-netbsd-64@0.15.18: 689 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} 690 | engines: {node: '>=12'} 691 | cpu: [x64] 692 | os: [netbsd] 693 | requiresBuild: true 694 | dev: true 695 | optional: true 696 | 697 | /esbuild-openbsd-64@0.15.18: 698 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} 699 | engines: {node: '>=12'} 700 | cpu: [x64] 701 | os: [openbsd] 702 | requiresBuild: true 703 | dev: true 704 | optional: true 705 | 706 | /esbuild-register@3.4.2(esbuild@0.15.18): 707 | resolution: {integrity: sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==} 708 | peerDependencies: 709 | esbuild: '>=0.12 <1' 710 | dependencies: 711 | debug: 4.3.4 712 | esbuild: 0.15.18 713 | transitivePeerDependencies: 714 | - supports-color 715 | dev: true 716 | 717 | /esbuild-sunos-64@0.15.18: 718 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} 719 | engines: {node: '>=12'} 720 | cpu: [x64] 721 | os: [sunos] 722 | requiresBuild: true 723 | dev: true 724 | optional: true 725 | 726 | /esbuild-windows-32@0.15.18: 727 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} 728 | engines: {node: '>=12'} 729 | cpu: [ia32] 730 | os: [win32] 731 | requiresBuild: true 732 | dev: true 733 | optional: true 734 | 735 | /esbuild-windows-64@0.15.18: 736 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} 737 | engines: {node: '>=12'} 738 | cpu: [x64] 739 | os: [win32] 740 | requiresBuild: true 741 | dev: true 742 | optional: true 743 | 744 | /esbuild-windows-arm64@0.15.18: 745 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} 746 | engines: {node: '>=12'} 747 | cpu: [arm64] 748 | os: [win32] 749 | requiresBuild: true 750 | dev: true 751 | optional: true 752 | 753 | /esbuild@0.15.18: 754 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} 755 | engines: {node: '>=12'} 756 | hasBin: true 757 | requiresBuild: true 758 | optionalDependencies: 759 | '@esbuild/android-arm': 0.15.18 760 | '@esbuild/linux-loong64': 0.15.18 761 | esbuild-android-64: 0.15.18 762 | esbuild-android-arm64: 0.15.18 763 | esbuild-darwin-64: 0.15.18 764 | esbuild-darwin-arm64: 0.15.18 765 | esbuild-freebsd-64: 0.15.18 766 | esbuild-freebsd-arm64: 0.15.18 767 | esbuild-linux-32: 0.15.18 768 | esbuild-linux-64: 0.15.18 769 | esbuild-linux-arm: 0.15.18 770 | esbuild-linux-arm64: 0.15.18 771 | esbuild-linux-mips64le: 0.15.18 772 | esbuild-linux-ppc64le: 0.15.18 773 | esbuild-linux-riscv64: 0.15.18 774 | esbuild-linux-s390x: 0.15.18 775 | esbuild-netbsd-64: 0.15.18 776 | esbuild-openbsd-64: 0.15.18 777 | esbuild-sunos-64: 0.15.18 778 | esbuild-windows-32: 0.15.18 779 | esbuild-windows-64: 0.15.18 780 | esbuild-windows-arm64: 0.15.18 781 | dev: true 782 | 783 | /esbuild@0.17.19: 784 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 785 | engines: {node: '>=12'} 786 | hasBin: true 787 | requiresBuild: true 788 | optionalDependencies: 789 | '@esbuild/android-arm': 0.17.19 790 | '@esbuild/android-arm64': 0.17.19 791 | '@esbuild/android-x64': 0.17.19 792 | '@esbuild/darwin-arm64': 0.17.19 793 | '@esbuild/darwin-x64': 0.17.19 794 | '@esbuild/freebsd-arm64': 0.17.19 795 | '@esbuild/freebsd-x64': 0.17.19 796 | '@esbuild/linux-arm': 0.17.19 797 | '@esbuild/linux-arm64': 0.17.19 798 | '@esbuild/linux-ia32': 0.17.19 799 | '@esbuild/linux-loong64': 0.17.19 800 | '@esbuild/linux-mips64el': 0.17.19 801 | '@esbuild/linux-ppc64': 0.17.19 802 | '@esbuild/linux-riscv64': 0.17.19 803 | '@esbuild/linux-s390x': 0.17.19 804 | '@esbuild/linux-x64': 0.17.19 805 | '@esbuild/netbsd-x64': 0.17.19 806 | '@esbuild/openbsd-x64': 0.17.19 807 | '@esbuild/sunos-x64': 0.17.19 808 | '@esbuild/win32-arm64': 0.17.19 809 | '@esbuild/win32-ia32': 0.17.19 810 | '@esbuild/win32-x64': 0.17.19 811 | dev: false 812 | 813 | /event-emitter@0.3.5: 814 | resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} 815 | dependencies: 816 | d: 1.0.1 817 | es5-ext: 0.10.62 818 | dev: true 819 | 820 | /expand-template@2.0.3: 821 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 822 | engines: {node: '>=6'} 823 | dev: false 824 | 825 | /ext@1.7.0: 826 | resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} 827 | dependencies: 828 | type: 2.7.2 829 | dev: true 830 | 831 | /file-uri-to-path@1.0.0: 832 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 833 | dev: false 834 | 835 | /fs-constants@1.0.0: 836 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 837 | dev: false 838 | 839 | /fs.realpath@1.0.0: 840 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 841 | dev: true 842 | 843 | /fsevents@2.3.2: 844 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 845 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 846 | os: [darwin] 847 | requiresBuild: true 848 | dev: false 849 | optional: true 850 | 851 | /generate-function@2.3.1: 852 | resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} 853 | dependencies: 854 | is-property: 1.0.2 855 | dev: false 856 | 857 | /get-tsconfig@4.6.2: 858 | resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} 859 | dependencies: 860 | resolve-pkg-maps: 1.0.0 861 | dev: false 862 | 863 | /github-from-package@0.0.0: 864 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 865 | dev: false 866 | 867 | /glob@8.1.0: 868 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 869 | engines: {node: '>=12'} 870 | dependencies: 871 | fs.realpath: 1.0.0 872 | inflight: 1.0.6 873 | inherits: 2.0.4 874 | minimatch: 5.1.6 875 | once: 1.4.0 876 | dev: true 877 | 878 | /hanji@0.0.5: 879 | resolution: {integrity: sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==} 880 | dependencies: 881 | lodash.throttle: 4.1.1 882 | sisteransi: 1.0.5 883 | dev: true 884 | 885 | /heap@0.2.7: 886 | resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} 887 | dev: true 888 | 889 | /iconv-lite@0.6.3: 890 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 891 | engines: {node: '>=0.10.0'} 892 | dependencies: 893 | safer-buffer: 2.1.2 894 | dev: false 895 | 896 | /ieee754@1.2.1: 897 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 898 | dev: false 899 | 900 | /inflection@2.0.1: 901 | resolution: {integrity: sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ==} 902 | engines: {node: '>=14.0.0'} 903 | dev: false 904 | 905 | /inflight@1.0.6: 906 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 907 | dependencies: 908 | once: 1.4.0 909 | wrappy: 1.0.2 910 | dev: true 911 | 912 | /inherits@2.0.4: 913 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 914 | 915 | /ini@1.3.8: 916 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 917 | dev: false 918 | 919 | /is-promise@2.2.2: 920 | resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} 921 | dev: true 922 | 923 | /is-property@1.0.2: 924 | resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} 925 | dev: false 926 | 927 | /json-diff@0.9.0: 928 | resolution: {integrity: sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==} 929 | hasBin: true 930 | dependencies: 931 | cli-color: 2.0.3 932 | difflib: 0.2.4 933 | dreamopt: 0.8.0 934 | dev: true 935 | 936 | /kleur@3.0.3: 937 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 938 | engines: {node: '>=6'} 939 | dev: false 940 | 941 | /lodash.throttle@4.1.1: 942 | resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} 943 | dev: true 944 | 945 | /long@5.2.3: 946 | resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} 947 | dev: false 948 | 949 | /lru-cache@6.0.0: 950 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 951 | engines: {node: '>=10'} 952 | dependencies: 953 | yallist: 4.0.0 954 | dev: false 955 | 956 | /lru-cache@7.18.3: 957 | resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} 958 | engines: {node: '>=12'} 959 | dev: false 960 | 961 | /lru-cache@8.0.5: 962 | resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} 963 | engines: {node: '>=16.14'} 964 | dev: false 965 | 966 | /lru-queue@0.1.0: 967 | resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} 968 | dependencies: 969 | es5-ext: 0.10.62 970 | dev: true 971 | 972 | /memoizee@0.4.15: 973 | resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} 974 | dependencies: 975 | d: 1.0.1 976 | es5-ext: 0.10.62 977 | es6-weak-map: 2.0.3 978 | event-emitter: 0.3.5 979 | is-promise: 2.2.2 980 | lru-queue: 0.1.0 981 | next-tick: 1.1.0 982 | timers-ext: 0.1.7 983 | dev: true 984 | 985 | /mimic-response@3.1.0: 986 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 987 | engines: {node: '>=10'} 988 | dev: false 989 | 990 | /minimatch@5.1.6: 991 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 992 | engines: {node: '>=10'} 993 | dependencies: 994 | brace-expansion: 2.0.1 995 | dev: true 996 | 997 | /minimatch@7.4.6: 998 | resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} 999 | engines: {node: '>=10'} 1000 | dependencies: 1001 | brace-expansion: 2.0.1 1002 | dev: true 1003 | 1004 | /minimist@1.2.8: 1005 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1006 | dev: false 1007 | 1008 | /mkdirp-classic@0.5.3: 1009 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 1010 | dev: false 1011 | 1012 | /ms@2.1.2: 1013 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1014 | dev: true 1015 | 1016 | /mysql2@3.6.0: 1017 | resolution: {integrity: sha512-EWUGAhv6SphezurlfI2Fpt0uJEWLmirrtQR7SkbTHFC+4/mJBrPiSzHESHKAWKG7ALVD6xaG/NBjjd1DGJGQQQ==} 1018 | engines: {node: '>= 8.0'} 1019 | dependencies: 1020 | denque: 2.1.0 1021 | generate-function: 2.3.1 1022 | iconv-lite: 0.6.3 1023 | long: 5.2.3 1024 | lru-cache: 8.0.5 1025 | named-placeholders: 1.1.3 1026 | seq-queue: 0.0.5 1027 | sqlstring: 2.3.3 1028 | dev: false 1029 | 1030 | /named-placeholders@1.1.3: 1031 | resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} 1032 | engines: {node: '>=12.0.0'} 1033 | dependencies: 1034 | lru-cache: 7.18.3 1035 | dev: false 1036 | 1037 | /napi-build-utils@1.0.2: 1038 | resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} 1039 | dev: false 1040 | 1041 | /next-tick@1.1.0: 1042 | resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} 1043 | dev: true 1044 | 1045 | /node-abi@3.45.0: 1046 | resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} 1047 | engines: {node: '>=10'} 1048 | dependencies: 1049 | semver: 7.5.4 1050 | dev: false 1051 | 1052 | /obuf@1.1.2: 1053 | resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} 1054 | dev: false 1055 | 1056 | /once@1.4.0: 1057 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1058 | dependencies: 1059 | wrappy: 1.0.2 1060 | 1061 | /orchid-core@0.10.0: 1062 | resolution: {integrity: sha512-tX7zpLhZ+TgojC70LXFQzsms8xC5bS4dMlUTsFA5+ly86a25h52y2dPqAenGL/mhawQztnPyUczPwinfDwYCjQ==} 1063 | dev: false 1064 | 1065 | /orchid-orm@1.15.1(typescript@5.1.6): 1066 | resolution: {integrity: sha512-xkc0C6aE+0JMDltKKSYAUXo/zYBqLhEVUdqq/aeF9EiugOEysoklFxKBI2AqqJ5lDFhFYurCeLbthRSMkIHPfQ==} 1067 | hasBin: true 1068 | peerDependencies: 1069 | typescript: '*' 1070 | dependencies: 1071 | inflection: 2.0.1 1072 | orchid-core: 0.10.0 1073 | pqb: 0.17.6 1074 | prompts: 2.4.2 1075 | typescript: 5.1.6 1076 | transitivePeerDependencies: 1077 | - pg-native 1078 | dev: false 1079 | 1080 | /packet-reader@1.0.0: 1081 | resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 1082 | dev: false 1083 | 1084 | /pg-cloudflare@1.1.1: 1085 | resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} 1086 | requiresBuild: true 1087 | dev: false 1088 | optional: true 1089 | 1090 | /pg-connection-string@2.6.2: 1091 | resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} 1092 | dev: false 1093 | 1094 | /pg-int8@1.0.1: 1095 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 1096 | engines: {node: '>=4.0.0'} 1097 | dev: false 1098 | 1099 | /pg-numeric@1.0.2: 1100 | resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} 1101 | engines: {node: '>=4'} 1102 | dev: false 1103 | 1104 | /pg-pool@3.6.1(pg@8.11.2): 1105 | resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} 1106 | peerDependencies: 1107 | pg: '>=8.0' 1108 | dependencies: 1109 | pg: 8.11.2 1110 | dev: false 1111 | 1112 | /pg-protocol@1.6.0: 1113 | resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} 1114 | dev: false 1115 | 1116 | /pg-types@2.2.0: 1117 | resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 1118 | engines: {node: '>=4'} 1119 | dependencies: 1120 | pg-int8: 1.0.1 1121 | postgres-array: 2.0.0 1122 | postgres-bytea: 1.0.0 1123 | postgres-date: 1.0.7 1124 | postgres-interval: 1.2.0 1125 | dev: false 1126 | 1127 | /pg-types@4.0.1: 1128 | resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} 1129 | engines: {node: '>=10'} 1130 | dependencies: 1131 | pg-int8: 1.0.1 1132 | pg-numeric: 1.0.2 1133 | postgres-array: 3.0.2 1134 | postgres-bytea: 3.0.0 1135 | postgres-date: 2.0.1 1136 | postgres-interval: 3.0.0 1137 | postgres-range: 1.1.3 1138 | dev: false 1139 | 1140 | /pg@8.11.2: 1141 | resolution: {integrity: sha512-l4rmVeV8qTIrrPrIR3kZQqBgSN93331s9i6wiUiLOSk0Q7PmUxZD/m1rQI622l3NfqBby9Ar5PABfS/SulfieQ==} 1142 | engines: {node: '>= 8.0.0'} 1143 | peerDependencies: 1144 | pg-native: '>=3.0.1' 1145 | peerDependenciesMeta: 1146 | pg-native: 1147 | optional: true 1148 | dependencies: 1149 | buffer-writer: 2.0.0 1150 | packet-reader: 1.0.0 1151 | pg-connection-string: 2.6.2 1152 | pg-pool: 3.6.1(pg@8.11.2) 1153 | pg-protocol: 1.6.0 1154 | pg-types: 2.2.0 1155 | pgpass: 1.0.5 1156 | optionalDependencies: 1157 | pg-cloudflare: 1.1.1 1158 | dev: false 1159 | 1160 | /pgpass@1.0.5: 1161 | resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 1162 | dependencies: 1163 | split2: 4.2.0 1164 | dev: false 1165 | 1166 | /postgres-array@2.0.0: 1167 | resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 1168 | engines: {node: '>=4'} 1169 | dev: false 1170 | 1171 | /postgres-array@3.0.2: 1172 | resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} 1173 | engines: {node: '>=12'} 1174 | dev: false 1175 | 1176 | /postgres-bytea@1.0.0: 1177 | resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 1178 | engines: {node: '>=0.10.0'} 1179 | dev: false 1180 | 1181 | /postgres-bytea@3.0.0: 1182 | resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} 1183 | engines: {node: '>= 6'} 1184 | dependencies: 1185 | obuf: 1.1.2 1186 | dev: false 1187 | 1188 | /postgres-date@1.0.7: 1189 | resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 1190 | engines: {node: '>=0.10.0'} 1191 | dev: false 1192 | 1193 | /postgres-date@2.0.1: 1194 | resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} 1195 | engines: {node: '>=12'} 1196 | dev: false 1197 | 1198 | /postgres-interval@1.2.0: 1199 | resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 1200 | engines: {node: '>=0.10.0'} 1201 | dependencies: 1202 | xtend: 4.0.2 1203 | dev: false 1204 | 1205 | /postgres-interval@3.0.0: 1206 | resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} 1207 | engines: {node: '>=12'} 1208 | dev: false 1209 | 1210 | /postgres-range@1.1.3: 1211 | resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} 1212 | dev: false 1213 | 1214 | /postgres@3.3.5: 1215 | resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} 1216 | dev: false 1217 | 1218 | /pqb@0.17.6: 1219 | resolution: {integrity: sha512-9a8fqTfl5RSgtuTUZQHKfc7Glv6luO1e7QiHH0FCxEJKUa4mKMsV4klt9m/yLvFJvO8NA3pIj4GUC4fERf8Bow==} 1220 | dependencies: 1221 | '@types/pg': 8.10.2 1222 | orchid-core: 0.10.0 1223 | pg: 8.11.2 1224 | transitivePeerDependencies: 1225 | - pg-native 1226 | dev: false 1227 | 1228 | /prebuild-install@7.1.1: 1229 | resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} 1230 | engines: {node: '>=10'} 1231 | hasBin: true 1232 | dependencies: 1233 | detect-libc: 2.0.2 1234 | expand-template: 2.0.3 1235 | github-from-package: 0.0.0 1236 | minimist: 1.2.8 1237 | mkdirp-classic: 0.5.3 1238 | napi-build-utils: 1.0.2 1239 | node-abi: 3.45.0 1240 | pump: 3.0.0 1241 | rc: 1.2.8 1242 | simple-get: 4.0.1 1243 | tar-fs: 2.1.1 1244 | tunnel-agent: 0.6.0 1245 | dev: false 1246 | 1247 | /prettier@2.8.8: 1248 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1249 | engines: {node: '>=10.13.0'} 1250 | hasBin: true 1251 | dev: false 1252 | 1253 | /prompts@2.4.2: 1254 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1255 | engines: {node: '>= 6'} 1256 | dependencies: 1257 | kleur: 3.0.3 1258 | sisteransi: 1.0.5 1259 | dev: false 1260 | 1261 | /pump@3.0.0: 1262 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 1263 | dependencies: 1264 | end-of-stream: 1.4.4 1265 | once: 1.4.0 1266 | dev: false 1267 | 1268 | /rc@1.2.8: 1269 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1270 | hasBin: true 1271 | dependencies: 1272 | deep-extend: 0.6.0 1273 | ini: 1.3.8 1274 | minimist: 1.2.8 1275 | strip-json-comments: 2.0.1 1276 | dev: false 1277 | 1278 | /readable-stream@3.6.2: 1279 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1280 | engines: {node: '>= 6'} 1281 | dependencies: 1282 | inherits: 2.0.4 1283 | string_decoder: 1.3.0 1284 | util-deprecate: 1.0.2 1285 | dev: false 1286 | 1287 | /resolve-pkg-maps@1.0.0: 1288 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1289 | dev: false 1290 | 1291 | /safe-buffer@5.2.1: 1292 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1293 | dev: false 1294 | 1295 | /safer-buffer@2.1.2: 1296 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1297 | dev: false 1298 | 1299 | /semver@7.5.4: 1300 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 1301 | engines: {node: '>=10'} 1302 | hasBin: true 1303 | dependencies: 1304 | lru-cache: 6.0.0 1305 | dev: false 1306 | 1307 | /seq-queue@0.0.5: 1308 | resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} 1309 | dev: false 1310 | 1311 | /simple-concat@1.0.1: 1312 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 1313 | dev: false 1314 | 1315 | /simple-get@4.0.1: 1316 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 1317 | dependencies: 1318 | decompress-response: 6.0.0 1319 | once: 1.4.0 1320 | simple-concat: 1.0.1 1321 | dev: false 1322 | 1323 | /sisteransi@1.0.5: 1324 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1325 | 1326 | /source-map-support@0.5.21: 1327 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1328 | dependencies: 1329 | buffer-from: 1.1.2 1330 | source-map: 0.6.1 1331 | dev: false 1332 | 1333 | /source-map@0.6.1: 1334 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1335 | engines: {node: '>=0.10.0'} 1336 | dev: false 1337 | 1338 | /split2@4.2.0: 1339 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 1340 | engines: {node: '>= 10.x'} 1341 | dev: false 1342 | 1343 | /sqlstring@2.3.3: 1344 | resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} 1345 | engines: {node: '>= 0.6'} 1346 | dev: false 1347 | 1348 | /string_decoder@1.3.0: 1349 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1350 | dependencies: 1351 | safe-buffer: 5.2.1 1352 | dev: false 1353 | 1354 | /strip-json-comments@2.0.1: 1355 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1356 | engines: {node: '>=0.10.0'} 1357 | dev: false 1358 | 1359 | /tar-fs@2.1.1: 1360 | resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} 1361 | dependencies: 1362 | chownr: 1.1.4 1363 | mkdirp-classic: 0.5.3 1364 | pump: 3.0.0 1365 | tar-stream: 2.2.0 1366 | dev: false 1367 | 1368 | /tar-stream@2.2.0: 1369 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 1370 | engines: {node: '>=6'} 1371 | dependencies: 1372 | bl: 4.1.0 1373 | end-of-stream: 1.4.4 1374 | fs-constants: 1.0.0 1375 | inherits: 2.0.4 1376 | readable-stream: 3.6.2 1377 | dev: false 1378 | 1379 | /timers-ext@0.1.7: 1380 | resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} 1381 | dependencies: 1382 | es5-ext: 0.10.62 1383 | next-tick: 1.1.0 1384 | dev: true 1385 | 1386 | /tsx@3.12.7: 1387 | resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} 1388 | hasBin: true 1389 | dependencies: 1390 | '@esbuild-kit/cjs-loader': 2.4.2 1391 | '@esbuild-kit/core-utils': 3.1.0 1392 | '@esbuild-kit/esm-loader': 2.5.5 1393 | optionalDependencies: 1394 | fsevents: 2.3.2 1395 | dev: false 1396 | 1397 | /tunnel-agent@0.6.0: 1398 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 1399 | dependencies: 1400 | safe-buffer: 5.2.1 1401 | dev: false 1402 | 1403 | /type@1.2.0: 1404 | resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} 1405 | dev: true 1406 | 1407 | /type@2.7.2: 1408 | resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} 1409 | dev: true 1410 | 1411 | /typescript@5.1.6: 1412 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} 1413 | engines: {node: '>=14.17'} 1414 | hasBin: true 1415 | 1416 | /util-deprecate@1.0.2: 1417 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1418 | dev: false 1419 | 1420 | /wordwrap@1.0.0: 1421 | resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 1422 | dev: true 1423 | 1424 | /wrappy@1.0.2: 1425 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1426 | 1427 | /xtend@4.0.2: 1428 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1429 | engines: {node: '>=0.4'} 1430 | dev: false 1431 | 1432 | /yallist@4.0.0: 1433 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1434 | dev: false 1435 | 1436 | /zod@3.21.4: 1437 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 1438 | dev: true 1439 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@esbuild-kit/cjs-loader@^2.4.2": 6 | version "2.4.2" 7 | resolved "https://registry.yarnpkg.com/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz#cb4dde00fbf744a68c4f20162ea15a8242d0fa54" 8 | integrity sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg== 9 | dependencies: 10 | "@esbuild-kit/core-utils" "^3.0.0" 11 | get-tsconfig "^4.4.0" 12 | 13 | "@esbuild-kit/core-utils@^3.0.0": 14 | version "3.1.0" 15 | resolved "https://registry.yarnpkg.com/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz#49945d533dbd5e1b7620aa0fc522c15e6ec089c5" 16 | integrity sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw== 17 | dependencies: 18 | esbuild "~0.17.6" 19 | source-map-support "^0.5.21" 20 | 21 | "@esbuild-kit/esm-loader@^2.5.5": 22 | version "2.5.5" 23 | resolved "https://registry.yarnpkg.com/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz#b82da14fcee3fc1d219869756c06f43f67d1ca71" 24 | integrity sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw== 25 | dependencies: 26 | "@esbuild-kit/core-utils" "^3.0.0" 27 | get-tsconfig "^4.4.0" 28 | 29 | "@esbuild/android-arm64@0.17.19": 30 | version "0.17.19" 31 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" 32 | integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== 33 | 34 | "@esbuild/android-arm@0.15.18": 35 | version "0.15.18" 36 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" 37 | integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== 38 | 39 | "@esbuild/android-arm@0.17.19": 40 | version "0.17.19" 41 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" 42 | integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== 43 | 44 | "@esbuild/android-x64@0.17.19": 45 | version "0.17.19" 46 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" 47 | integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== 48 | 49 | "@esbuild/darwin-arm64@0.17.19": 50 | version "0.17.19" 51 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" 52 | integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== 53 | 54 | "@esbuild/darwin-x64@0.17.19": 55 | version "0.17.19" 56 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" 57 | integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== 58 | 59 | "@esbuild/freebsd-arm64@0.17.19": 60 | version "0.17.19" 61 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" 62 | integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== 63 | 64 | "@esbuild/freebsd-x64@0.17.19": 65 | version "0.17.19" 66 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" 67 | integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== 68 | 69 | "@esbuild/linux-arm64@0.17.19": 70 | version "0.17.19" 71 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" 72 | integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== 73 | 74 | "@esbuild/linux-arm@0.17.19": 75 | version "0.17.19" 76 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" 77 | integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== 78 | 79 | "@esbuild/linux-ia32@0.17.19": 80 | version "0.17.19" 81 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" 82 | integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== 83 | 84 | "@esbuild/linux-loong64@0.15.18": 85 | version "0.15.18" 86 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" 87 | integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== 88 | 89 | "@esbuild/linux-loong64@0.17.19": 90 | version "0.17.19" 91 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" 92 | integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== 93 | 94 | "@esbuild/linux-mips64el@0.17.19": 95 | version "0.17.19" 96 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" 97 | integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== 98 | 99 | "@esbuild/linux-ppc64@0.17.19": 100 | version "0.17.19" 101 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" 102 | integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== 103 | 104 | "@esbuild/linux-riscv64@0.17.19": 105 | version "0.17.19" 106 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" 107 | integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== 108 | 109 | "@esbuild/linux-s390x@0.17.19": 110 | version "0.17.19" 111 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" 112 | integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== 113 | 114 | "@esbuild/linux-x64@0.17.19": 115 | version "0.17.19" 116 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" 117 | integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== 118 | 119 | "@esbuild/netbsd-x64@0.17.19": 120 | version "0.17.19" 121 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" 122 | integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== 123 | 124 | "@esbuild/openbsd-x64@0.17.19": 125 | version "0.17.19" 126 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" 127 | integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== 128 | 129 | "@esbuild/sunos-x64@0.17.19": 130 | version "0.17.19" 131 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" 132 | integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== 133 | 134 | "@esbuild/win32-arm64@0.17.19": 135 | version "0.17.19" 136 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" 137 | integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== 138 | 139 | "@esbuild/win32-ia32@0.17.19": 140 | version "0.17.19" 141 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" 142 | integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== 143 | 144 | "@esbuild/win32-x64@0.17.19": 145 | version "0.17.19" 146 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" 147 | integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== 148 | 149 | "@types/better-sqlite3@^7.6.4": 150 | version "7.6.4" 151 | resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz#102462611e67aadf950d3ccca10292de91e6f35b" 152 | integrity sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg== 153 | dependencies: 154 | "@types/node" "*" 155 | 156 | "@types/node@*": 157 | version "20.3.1" 158 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" 159 | integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== 160 | 161 | "@types/node@^20.2.5": 162 | version "20.2.5" 163 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.5.tgz#26d295f3570323b2837d322180dfbf1ba156fefb" 164 | integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ== 165 | 166 | balanced-match@^1.0.0: 167 | version "1.0.2" 168 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 169 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 170 | 171 | base64-js@^1.3.1: 172 | version "1.5.1" 173 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 174 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 175 | 176 | better-sqlite3@^8.4.0: 177 | version "8.4.0" 178 | resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.4.0.tgz#aa27bbc6bb42bb438fc55c88b146fcfe5978fa76" 179 | integrity sha512-NmsNW1CQvqMszu/CFAJ3pLct6NEFlNfuGM6vw72KHkjOD1UDnL96XNN1BMQc1hiHo8vE2GbOWQYIpZ+YM5wrZw== 180 | dependencies: 181 | bindings "^1.5.0" 182 | prebuild-install "^7.1.0" 183 | 184 | bindings@^1.5.0: 185 | version "1.5.0" 186 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 187 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 188 | dependencies: 189 | file-uri-to-path "1.0.0" 190 | 191 | bl@^4.0.3: 192 | version "4.1.0" 193 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 194 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 195 | dependencies: 196 | buffer "^5.5.0" 197 | inherits "^2.0.4" 198 | readable-stream "^3.4.0" 199 | 200 | brace-expansion@^2.0.1: 201 | version "2.0.1" 202 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 203 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 204 | dependencies: 205 | balanced-match "^1.0.0" 206 | 207 | buffer-from@^1.0.0: 208 | version "1.1.2" 209 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 210 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 211 | 212 | buffer-writer@2.0.0: 213 | version "2.0.0" 214 | resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" 215 | integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== 216 | 217 | buffer@^5.5.0: 218 | version "5.7.1" 219 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 220 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 221 | dependencies: 222 | base64-js "^1.3.1" 223 | ieee754 "^1.1.13" 224 | 225 | camelcase@^7.0.1: 226 | version "7.0.1" 227 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" 228 | integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== 229 | 230 | chalk@^5.2.0: 231 | version "5.2.0" 232 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" 233 | integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== 234 | 235 | chownr@^1.1.1: 236 | version "1.1.4" 237 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 238 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 239 | 240 | cli-color@^2.0.0: 241 | version "2.0.3" 242 | resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" 243 | integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== 244 | dependencies: 245 | d "^1.0.1" 246 | es5-ext "^0.10.61" 247 | es6-iterator "^2.0.3" 248 | memoizee "^0.4.15" 249 | timers-ext "^0.1.7" 250 | 251 | commander@^9.4.1: 252 | version "9.5.0" 253 | resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" 254 | integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== 255 | 256 | d@1, d@^1.0.1: 257 | version "1.0.1" 258 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" 259 | integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== 260 | dependencies: 261 | es5-ext "^0.10.50" 262 | type "^1.0.1" 263 | 264 | debug@^4.3.4: 265 | version "4.3.4" 266 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 267 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 268 | dependencies: 269 | ms "2.1.2" 270 | 271 | decompress-response@^6.0.0: 272 | version "6.0.0" 273 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 274 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 275 | dependencies: 276 | mimic-response "^3.1.0" 277 | 278 | deep-extend@^0.6.0: 279 | version "0.6.0" 280 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 281 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 282 | 283 | denque@^2.1.0: 284 | version "2.1.0" 285 | resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" 286 | integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== 287 | 288 | detect-libc@^2.0.0: 289 | version "2.0.1" 290 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 291 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 292 | 293 | difflib@~0.2.1: 294 | version "0.2.4" 295 | resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" 296 | integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== 297 | dependencies: 298 | heap ">= 0.2.0" 299 | 300 | dreamopt@~0.8.0: 301 | version "0.8.0" 302 | resolved "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.8.0.tgz#5bcc80be7097e45fc489c342405ab68140a8c1d9" 303 | integrity sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg== 304 | dependencies: 305 | wordwrap ">=0.0.2" 306 | 307 | drizzle-kit@^0.18.1: 308 | version "0.18.1" 309 | resolved "https://registry.yarnpkg.com/drizzle-kit/-/drizzle-kit-0.18.1.tgz#608db7e76c03c2bbe497f6837d66975563a1e3b8" 310 | integrity sha512-Oqie227W2Dd7FuqX4pvQWeClSvnoPCIn2cO9JueeLWZqj3tpdBhnbgt4nLHhBbOdWRlTLYwXnkTDW3hYym/gGQ== 311 | dependencies: 312 | camelcase "^7.0.1" 313 | chalk "^5.2.0" 314 | commander "^9.4.1" 315 | esbuild "^0.15.18" 316 | esbuild-register "^3.4.2" 317 | glob "^8.1.0" 318 | hanji "^0.0.5" 319 | json-diff "0.9.0" 320 | minimatch "^7.4.3" 321 | zod "^3.20.2" 322 | 323 | drizzle-orm@^0.27.3-4f9270a: 324 | version "0.27.3-4f9270a" 325 | resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.27.3-4f9270a.tgz#9e970b96e30757c251c331f728a8cba89e25eb56" 326 | integrity sha512-O+tLoMAbOj0D3C0OycFVOrgkWF0HWPAJ2cv2Cd7gIsy0n8PuhDOhQaJ46yxWQDfFFSrIdSi1LkrsHILCVfhyDA== 327 | 328 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 329 | version "1.4.4" 330 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 331 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 332 | dependencies: 333 | once "^1.4.0" 334 | 335 | 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: 336 | version "0.10.62" 337 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" 338 | integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== 339 | dependencies: 340 | es6-iterator "^2.0.3" 341 | es6-symbol "^3.1.3" 342 | next-tick "^1.1.0" 343 | 344 | es6-iterator@^2.0.3: 345 | version "2.0.3" 346 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 347 | integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== 348 | dependencies: 349 | d "1" 350 | es5-ext "^0.10.35" 351 | es6-symbol "^3.1.1" 352 | 353 | es6-symbol@^3.1.1, es6-symbol@^3.1.3: 354 | version "3.1.3" 355 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" 356 | integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== 357 | dependencies: 358 | d "^1.0.1" 359 | ext "^1.1.2" 360 | 361 | es6-weak-map@^2.0.3: 362 | version "2.0.3" 363 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" 364 | integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== 365 | dependencies: 366 | d "1" 367 | es5-ext "^0.10.46" 368 | es6-iterator "^2.0.3" 369 | es6-symbol "^3.1.1" 370 | 371 | esbuild-android-64@0.15.18: 372 | version "0.15.18" 373 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" 374 | integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== 375 | 376 | esbuild-android-arm64@0.15.18: 377 | version "0.15.18" 378 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04" 379 | integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== 380 | 381 | esbuild-darwin-64@0.15.18: 382 | version "0.15.18" 383 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410" 384 | integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== 385 | 386 | esbuild-darwin-arm64@0.15.18: 387 | version "0.15.18" 388 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337" 389 | integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== 390 | 391 | esbuild-freebsd-64@0.15.18: 392 | version "0.15.18" 393 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2" 394 | integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== 395 | 396 | esbuild-freebsd-arm64@0.15.18: 397 | version "0.15.18" 398 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635" 399 | integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== 400 | 401 | esbuild-linux-32@0.15.18: 402 | version "0.15.18" 403 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce" 404 | integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== 405 | 406 | esbuild-linux-64@0.15.18: 407 | version "0.15.18" 408 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c" 409 | integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== 410 | 411 | esbuild-linux-arm64@0.15.18: 412 | version "0.15.18" 413 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d" 414 | integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== 415 | 416 | esbuild-linux-arm@0.15.18: 417 | version "0.15.18" 418 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc" 419 | integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== 420 | 421 | esbuild-linux-mips64le@0.15.18: 422 | version "0.15.18" 423 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb" 424 | integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== 425 | 426 | esbuild-linux-ppc64le@0.15.18: 427 | version "0.15.18" 428 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507" 429 | integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== 430 | 431 | esbuild-linux-riscv64@0.15.18: 432 | version "0.15.18" 433 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6" 434 | integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== 435 | 436 | esbuild-linux-s390x@0.15.18: 437 | version "0.15.18" 438 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb" 439 | integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== 440 | 441 | esbuild-netbsd-64@0.15.18: 442 | version "0.15.18" 443 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998" 444 | integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== 445 | 446 | esbuild-openbsd-64@0.15.18: 447 | version "0.15.18" 448 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8" 449 | integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== 450 | 451 | esbuild-register@^3.4.2: 452 | version "3.4.2" 453 | resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" 454 | integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== 455 | dependencies: 456 | debug "^4.3.4" 457 | 458 | esbuild-sunos-64@0.15.18: 459 | version "0.15.18" 460 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971" 461 | integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== 462 | 463 | esbuild-windows-32@0.15.18: 464 | version "0.15.18" 465 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3" 466 | integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== 467 | 468 | esbuild-windows-64@0.15.18: 469 | version "0.15.18" 470 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0" 471 | integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== 472 | 473 | esbuild-windows-arm64@0.15.18: 474 | version "0.15.18" 475 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7" 476 | integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== 477 | 478 | esbuild@^0.15.18: 479 | version "0.15.18" 480 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d" 481 | integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== 482 | optionalDependencies: 483 | "@esbuild/android-arm" "0.15.18" 484 | "@esbuild/linux-loong64" "0.15.18" 485 | esbuild-android-64 "0.15.18" 486 | esbuild-android-arm64 "0.15.18" 487 | esbuild-darwin-64 "0.15.18" 488 | esbuild-darwin-arm64 "0.15.18" 489 | esbuild-freebsd-64 "0.15.18" 490 | esbuild-freebsd-arm64 "0.15.18" 491 | esbuild-linux-32 "0.15.18" 492 | esbuild-linux-64 "0.15.18" 493 | esbuild-linux-arm "0.15.18" 494 | esbuild-linux-arm64 "0.15.18" 495 | esbuild-linux-mips64le "0.15.18" 496 | esbuild-linux-ppc64le "0.15.18" 497 | esbuild-linux-riscv64 "0.15.18" 498 | esbuild-linux-s390x "0.15.18" 499 | esbuild-netbsd-64 "0.15.18" 500 | esbuild-openbsd-64 "0.15.18" 501 | esbuild-sunos-64 "0.15.18" 502 | esbuild-windows-32 "0.15.18" 503 | esbuild-windows-64 "0.15.18" 504 | esbuild-windows-arm64 "0.15.18" 505 | 506 | esbuild@~0.17.6: 507 | version "0.17.19" 508 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" 509 | integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== 510 | optionalDependencies: 511 | "@esbuild/android-arm" "0.17.19" 512 | "@esbuild/android-arm64" "0.17.19" 513 | "@esbuild/android-x64" "0.17.19" 514 | "@esbuild/darwin-arm64" "0.17.19" 515 | "@esbuild/darwin-x64" "0.17.19" 516 | "@esbuild/freebsd-arm64" "0.17.19" 517 | "@esbuild/freebsd-x64" "0.17.19" 518 | "@esbuild/linux-arm" "0.17.19" 519 | "@esbuild/linux-arm64" "0.17.19" 520 | "@esbuild/linux-ia32" "0.17.19" 521 | "@esbuild/linux-loong64" "0.17.19" 522 | "@esbuild/linux-mips64el" "0.17.19" 523 | "@esbuild/linux-ppc64" "0.17.19" 524 | "@esbuild/linux-riscv64" "0.17.19" 525 | "@esbuild/linux-s390x" "0.17.19" 526 | "@esbuild/linux-x64" "0.17.19" 527 | "@esbuild/netbsd-x64" "0.17.19" 528 | "@esbuild/openbsd-x64" "0.17.19" 529 | "@esbuild/sunos-x64" "0.17.19" 530 | "@esbuild/win32-arm64" "0.17.19" 531 | "@esbuild/win32-ia32" "0.17.19" 532 | "@esbuild/win32-x64" "0.17.19" 533 | 534 | event-emitter@^0.3.5: 535 | version "0.3.5" 536 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 537 | integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== 538 | dependencies: 539 | d "1" 540 | es5-ext "~0.10.14" 541 | 542 | expand-template@^2.0.3: 543 | version "2.0.3" 544 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 545 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 546 | 547 | ext@^1.1.2: 548 | version "1.7.0" 549 | resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" 550 | integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== 551 | dependencies: 552 | type "^2.7.2" 553 | 554 | file-uri-to-path@1.0.0: 555 | version "1.0.0" 556 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 557 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 558 | 559 | fs-constants@^1.0.0: 560 | version "1.0.0" 561 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 562 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 563 | 564 | fs.realpath@^1.0.0: 565 | version "1.0.0" 566 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 567 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 568 | 569 | fsevents@~2.3.2: 570 | version "2.3.2" 571 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 572 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 573 | 574 | generate-function@^2.3.1: 575 | version "2.3.1" 576 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" 577 | integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== 578 | dependencies: 579 | is-property "^1.0.2" 580 | 581 | get-tsconfig@^4.4.0: 582 | version "4.6.0" 583 | resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.0.tgz#e977690993a42f3e320e932427502a40f7af6d05" 584 | integrity sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg== 585 | dependencies: 586 | resolve-pkg-maps "^1.0.0" 587 | 588 | github-from-package@0.0.0: 589 | version "0.0.0" 590 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 591 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 592 | 593 | glob@^8.1.0: 594 | version "8.1.0" 595 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" 596 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 597 | dependencies: 598 | fs.realpath "^1.0.0" 599 | inflight "^1.0.4" 600 | inherits "2" 601 | minimatch "^5.0.1" 602 | once "^1.3.0" 603 | 604 | hanji@^0.0.5: 605 | version "0.0.5" 606 | resolved "https://registry.yarnpkg.com/hanji/-/hanji-0.0.5.tgz#22a5092e53b2a83ed6172c488ae0d68eb3119213" 607 | integrity sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw== 608 | dependencies: 609 | lodash.throttle "^4.1.1" 610 | sisteransi "^1.0.5" 611 | 612 | "heap@>= 0.2.0": 613 | version "0.2.7" 614 | resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" 615 | integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== 616 | 617 | iconv-lite@^0.6.3: 618 | version "0.6.3" 619 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 620 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 621 | dependencies: 622 | safer-buffer ">= 2.1.2 < 3.0.0" 623 | 624 | ieee754@^1.1.13: 625 | version "1.2.1" 626 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 627 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 628 | 629 | inflection@*: 630 | version "2.0.1" 631 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-2.0.1.tgz#bdf3a4c05d4275f41234910cbbe9a102ac72c99b" 632 | integrity sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ== 633 | 634 | inflight@^1.0.4: 635 | version "1.0.6" 636 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 637 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 638 | dependencies: 639 | once "^1.3.0" 640 | wrappy "1" 641 | 642 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 643 | version "2.0.4" 644 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 645 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 646 | 647 | ini@~1.3.0: 648 | version "1.3.8" 649 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 650 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 651 | 652 | is-promise@^2.2.2: 653 | version "2.2.2" 654 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" 655 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== 656 | 657 | is-property@^1.0.2: 658 | version "1.0.2" 659 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 660 | integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== 661 | 662 | json-diff@0.9.0: 663 | version "0.9.0" 664 | resolved "https://registry.yarnpkg.com/json-diff/-/json-diff-0.9.0.tgz#e7c536798053cb409113d7403c774849e8a0d7ff" 665 | integrity sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ== 666 | dependencies: 667 | cli-color "^2.0.0" 668 | difflib "~0.2.1" 669 | dreamopt "~0.8.0" 670 | 671 | kleur@^3.0.3: 672 | version "3.0.3" 673 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 674 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 675 | 676 | lodash.throttle@^4.1.1: 677 | version "4.1.1" 678 | resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" 679 | integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== 680 | 681 | long@^5.2.1: 682 | version "5.2.3" 683 | resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" 684 | integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== 685 | 686 | lru-cache@^6.0.0: 687 | version "6.0.0" 688 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 689 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 690 | dependencies: 691 | yallist "^4.0.0" 692 | 693 | lru-cache@^7.14.1: 694 | version "7.18.3" 695 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" 696 | integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== 697 | 698 | lru-cache@^8.0.0: 699 | version "8.0.5" 700 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e" 701 | integrity sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA== 702 | 703 | lru-queue@^0.1.0: 704 | version "0.1.0" 705 | resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" 706 | integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== 707 | dependencies: 708 | es5-ext "~0.10.2" 709 | 710 | memoizee@^0.4.15: 711 | version "0.4.15" 712 | resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" 713 | integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== 714 | dependencies: 715 | d "^1.0.1" 716 | es5-ext "^0.10.53" 717 | es6-weak-map "^2.0.3" 718 | event-emitter "^0.3.5" 719 | is-promise "^2.2.2" 720 | lru-queue "^0.1.0" 721 | next-tick "^1.1.0" 722 | timers-ext "^0.1.7" 723 | 724 | mimic-response@^3.1.0: 725 | version "3.1.0" 726 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 727 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 728 | 729 | minimatch@^5.0.1: 730 | version "5.1.6" 731 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 732 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 733 | dependencies: 734 | brace-expansion "^2.0.1" 735 | 736 | minimatch@^7.4.3: 737 | version "7.4.6" 738 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" 739 | integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== 740 | dependencies: 741 | brace-expansion "^2.0.1" 742 | 743 | minimist@^1.2.0, minimist@^1.2.3: 744 | version "1.2.8" 745 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 746 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 747 | 748 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 749 | version "0.5.3" 750 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 751 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 752 | 753 | ms@2.1.2: 754 | version "2.1.2" 755 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 756 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 757 | 758 | mysql2@^3.5.1: 759 | version "3.5.1" 760 | resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.5.1.tgz#d57324228389a670408277399ded1d8f2a61b78c" 761 | integrity sha512-RyaeUBqMiFR1ivk78JToPz0MhwN/sUWCKwPZszbXaFNZ6wmP/EJNPDU6gbZkF+qtLjr3sULQb0Y7JuFrNblnDg== 762 | dependencies: 763 | denque "^2.1.0" 764 | generate-function "^2.3.1" 765 | iconv-lite "^0.6.3" 766 | long "^5.2.1" 767 | lru-cache "^8.0.0" 768 | named-placeholders "^1.1.3" 769 | seq-queue "^0.0.5" 770 | sqlstring "^2.3.2" 771 | 772 | named-placeholders@^1.1.3: 773 | version "1.1.3" 774 | resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" 775 | integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== 776 | dependencies: 777 | lru-cache "^7.14.1" 778 | 779 | napi-build-utils@^1.0.1: 780 | version "1.0.2" 781 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 782 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 783 | 784 | next-tick@1, next-tick@^1.1.0: 785 | version "1.1.0" 786 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" 787 | integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== 788 | 789 | node-abi@^3.3.0: 790 | version "3.45.0" 791 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" 792 | integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== 793 | dependencies: 794 | semver "^7.3.5" 795 | 796 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 797 | version "1.4.0" 798 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 799 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 800 | dependencies: 801 | wrappy "1" 802 | 803 | orchid-core@0.4.14: 804 | version "0.4.14" 805 | resolved "https://registry.yarnpkg.com/orchid-core/-/orchid-core-0.4.14.tgz#336c8c029e956632d73b2b106904fafe17131afd" 806 | integrity sha512-hs3j2oGlSXCpWcSCP99fHWNi8HjoO0RYsGPOtyjSFn38gHzo84UK/BAeTeAJsaAVHqlLdWNvayK3uMKHSYUZpA== 807 | 808 | orchid-orm@^1.10.5: 809 | version "1.10.5" 810 | resolved "https://registry.yarnpkg.com/orchid-orm/-/orchid-orm-1.10.5.tgz#2f23eb8dee3f02b084c45d3443f13bc08720bf93" 811 | integrity sha512-+ATMVQozgqkaAWLyj0+mgZBdEZ8gIy2xxCRAJuG775G7Q7EJMqss6wp5ErFgR6JQt5pCf9z4uO3zaOhMx8paYg== 812 | dependencies: 813 | inflection "*" 814 | orchid-core "0.4.14" 815 | pqb "0.12.4" 816 | prompts "^2.4.2" 817 | 818 | packet-reader@1.0.0: 819 | version "1.0.0" 820 | resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" 821 | integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== 822 | 823 | pg-cloudflare@^1.1.0: 824 | version "1.1.0" 825 | resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz#833d70870d610d14bf9df7afb40e1cba310c17a0" 826 | integrity sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA== 827 | 828 | pg-connection-string@^2.6.0: 829 | version "2.6.0" 830 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.0.tgz#12a36cc4627df19c25cc1b9b736cc39ee1f73ae8" 831 | integrity sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg== 832 | 833 | pg-int8@1.0.1: 834 | version "1.0.1" 835 | resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" 836 | integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== 837 | 838 | pg-pool@^3.6.0: 839 | version "3.6.0" 840 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" 841 | integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== 842 | 843 | pg-protocol@^1.6.0: 844 | version "1.6.0" 845 | resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" 846 | integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== 847 | 848 | pg-types@^2.1.0: 849 | version "2.2.0" 850 | resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" 851 | integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== 852 | dependencies: 853 | pg-int8 "1.0.1" 854 | postgres-array "~2.0.0" 855 | postgres-bytea "~1.0.0" 856 | postgres-date "~1.0.4" 857 | postgres-interval "^1.1.0" 858 | 859 | pg@^8.6.0: 860 | version "8.11.0" 861 | resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.0.tgz#a37e534e94b57a7ed811e926f23a7c56385f55d9" 862 | integrity sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA== 863 | dependencies: 864 | buffer-writer "2.0.0" 865 | packet-reader "1.0.0" 866 | pg-connection-string "^2.6.0" 867 | pg-pool "^3.6.0" 868 | pg-protocol "^1.6.0" 869 | pg-types "^2.1.0" 870 | pgpass "1.x" 871 | optionalDependencies: 872 | pg-cloudflare "^1.1.0" 873 | 874 | pgpass@1.x: 875 | version "1.0.5" 876 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" 877 | integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== 878 | dependencies: 879 | split2 "^4.1.0" 880 | 881 | postgres-array@~2.0.0: 882 | version "2.0.0" 883 | resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" 884 | integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== 885 | 886 | postgres-bytea@~1.0.0: 887 | version "1.0.0" 888 | resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" 889 | integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== 890 | 891 | postgres-date@~1.0.4: 892 | version "1.0.7" 893 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" 894 | integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== 895 | 896 | postgres-interval@^1.1.0: 897 | version "1.2.0" 898 | resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" 899 | integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== 900 | dependencies: 901 | xtend "^4.0.0" 902 | 903 | postgres@^3.3.5: 904 | version "3.3.5" 905 | resolved "https://registry.yarnpkg.com/postgres/-/postgres-3.3.5.tgz#8431605aae2112759d50e362fc08759165455677" 906 | integrity sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw== 907 | 908 | pqb@0.12.4: 909 | version "0.12.4" 910 | resolved "https://registry.yarnpkg.com/pqb/-/pqb-0.12.4.tgz#e268f67207992c6eaa5ec9389042c376ac95ed77" 911 | integrity sha512-BWzrHBpWbNaUKUgZYGyKuX/L5GF8HsYZeXzcYV9itKbGignSjFEjSQXVa/Eyme7W4VhvvqDbf6XPR4ja5Bs6zQ== 912 | dependencies: 913 | orchid-core "0.4.14" 914 | pg "^8.6.0" 915 | 916 | prebuild-install@^7.1.0: 917 | version "7.1.1" 918 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 919 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 920 | dependencies: 921 | detect-libc "^2.0.0" 922 | expand-template "^2.0.3" 923 | github-from-package "0.0.0" 924 | minimist "^1.2.3" 925 | mkdirp-classic "^0.5.3" 926 | napi-build-utils "^1.0.1" 927 | node-abi "^3.3.0" 928 | pump "^3.0.0" 929 | rc "^1.2.7" 930 | simple-get "^4.0.0" 931 | tar-fs "^2.0.0" 932 | tunnel-agent "^0.6.0" 933 | 934 | prettier@^2.8.8: 935 | version "2.8.8" 936 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 937 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 938 | 939 | prompts@^2.4.2: 940 | version "2.4.2" 941 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 942 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 943 | dependencies: 944 | kleur "^3.0.3" 945 | sisteransi "^1.0.5" 946 | 947 | pump@^3.0.0: 948 | version "3.0.0" 949 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 950 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 951 | dependencies: 952 | end-of-stream "^1.1.0" 953 | once "^1.3.1" 954 | 955 | rc@^1.2.7: 956 | version "1.2.8" 957 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 958 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 959 | dependencies: 960 | deep-extend "^0.6.0" 961 | ini "~1.3.0" 962 | minimist "^1.2.0" 963 | strip-json-comments "~2.0.1" 964 | 965 | readable-stream@^3.1.1, readable-stream@^3.4.0: 966 | version "3.6.2" 967 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 968 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 969 | dependencies: 970 | inherits "^2.0.3" 971 | string_decoder "^1.1.1" 972 | util-deprecate "^1.0.1" 973 | 974 | resolve-pkg-maps@^1.0.0: 975 | version "1.0.0" 976 | resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" 977 | integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== 978 | 979 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 980 | version "5.2.1" 981 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 982 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 983 | 984 | "safer-buffer@>= 2.1.2 < 3.0.0": 985 | version "2.1.2" 986 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 987 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 988 | 989 | semver@^7.3.5: 990 | version "7.5.1" 991 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" 992 | integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== 993 | dependencies: 994 | lru-cache "^6.0.0" 995 | 996 | seq-queue@^0.0.5: 997 | version "0.0.5" 998 | resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" 999 | integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== 1000 | 1001 | simple-concat@^1.0.0: 1002 | version "1.0.1" 1003 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1004 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1005 | 1006 | simple-get@^4.0.0: 1007 | version "4.0.1" 1008 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 1009 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 1010 | dependencies: 1011 | decompress-response "^6.0.0" 1012 | once "^1.3.1" 1013 | simple-concat "^1.0.0" 1014 | 1015 | sisteransi@^1.0.5: 1016 | version "1.0.5" 1017 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 1018 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 1019 | 1020 | source-map-support@^0.5.21: 1021 | version "0.5.21" 1022 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1023 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1024 | dependencies: 1025 | buffer-from "^1.0.0" 1026 | source-map "^0.6.0" 1027 | 1028 | source-map@^0.6.0: 1029 | version "0.6.1" 1030 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1031 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1032 | 1033 | split2@^4.1.0: 1034 | version "4.2.0" 1035 | resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" 1036 | integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== 1037 | 1038 | sqlstring@^2.3.2: 1039 | version "2.3.3" 1040 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" 1041 | integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== 1042 | 1043 | string_decoder@^1.1.1: 1044 | version "1.3.0" 1045 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1046 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1047 | dependencies: 1048 | safe-buffer "~5.2.0" 1049 | 1050 | strip-json-comments@~2.0.1: 1051 | version "2.0.1" 1052 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1053 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1054 | 1055 | tar-fs@^2.0.0: 1056 | version "2.1.1" 1057 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1058 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1059 | dependencies: 1060 | chownr "^1.1.1" 1061 | mkdirp-classic "^0.5.2" 1062 | pump "^3.0.0" 1063 | tar-stream "^2.1.4" 1064 | 1065 | tar-stream@^2.1.4: 1066 | version "2.2.0" 1067 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1068 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1069 | dependencies: 1070 | bl "^4.0.3" 1071 | end-of-stream "^1.4.1" 1072 | fs-constants "^1.0.0" 1073 | inherits "^2.0.3" 1074 | readable-stream "^3.1.1" 1075 | 1076 | timers-ext@^0.1.7: 1077 | version "0.1.7" 1078 | resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" 1079 | integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== 1080 | dependencies: 1081 | es5-ext "~0.10.46" 1082 | next-tick "1" 1083 | 1084 | tsx@^3.12.7: 1085 | version "3.12.7" 1086 | resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.7.tgz#b3b8b0fc79afc8260d1e14f9e995616c859a91e9" 1087 | integrity sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw== 1088 | dependencies: 1089 | "@esbuild-kit/cjs-loader" "^2.4.2" 1090 | "@esbuild-kit/core-utils" "^3.0.0" 1091 | "@esbuild-kit/esm-loader" "^2.5.5" 1092 | optionalDependencies: 1093 | fsevents "~2.3.2" 1094 | 1095 | tunnel-agent@^0.6.0: 1096 | version "0.6.0" 1097 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1098 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1099 | dependencies: 1100 | safe-buffer "^5.0.1" 1101 | 1102 | type@^1.0.1: 1103 | version "1.2.0" 1104 | resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" 1105 | integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== 1106 | 1107 | type@^2.7.2: 1108 | version "2.7.2" 1109 | resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" 1110 | integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== 1111 | 1112 | typescript@^5.1.3: 1113 | version "5.1.3" 1114 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" 1115 | integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== 1116 | 1117 | util-deprecate@^1.0.1: 1118 | version "1.0.2" 1119 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1120 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1121 | 1122 | wordwrap@>=0.0.2: 1123 | version "1.0.0" 1124 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1125 | integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== 1126 | 1127 | wrappy@1: 1128 | version "1.0.2" 1129 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1130 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1131 | 1132 | xtend@^4.0.0: 1133 | version "4.0.2" 1134 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1135 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1136 | 1137 | yallist@^4.0.0: 1138 | version "4.0.0" 1139 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1140 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1141 | 1142 | zod@^3.20.2: 1143 | version "3.21.4" 1144 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" 1145 | integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== 1146 | --------------------------------------------------------------------------------