diff --git a/.vscode/settings.json b/.vscode/settings.json index 333acb2..c737624 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "files.associations": { "supa": "shellscript", - "*.mjml": "mjml" + "*.mjml": "html" }, "editor.defaultFormatter": null, "editor.linkedEditing": true, @@ -37,7 +37,8 @@ "supabase/functions" ], "deno.lint": true, - "deno.unstable": true, + "deno.config": "./deno.json", + "deno.importMap": "./deno.json", "[jsonc]": { "editor.defaultFormatter": "vscode.json-language-features" }, diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..de04a4e --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Supabase - Serve Functions", + "command": "bunx supabase functions serve --env-file .env", + "type": "shell", + "args": [], + "problemMatcher": [], + "options": { + "cwd": "${workspaceFolder}" + }, + "presentation": { + "reveal": "silent" + }, + "group": "test" + }, + { + "label": "Web - Dev", + "command": "bun run dev", + "type": "shell", + "args": [], + "problemMatcher": [], + "options": { + "cwd": "${workspaceFolder}/web" + }, + "presentation": { + "reveal": "silent" + }, + "group": "test" + } + ] +} diff --git a/cli/actions.ts b/cli/actions.ts index 6ac3fe2..5054b35 100644 --- a/cli/actions.ts +++ b/cli/actions.ts @@ -3,20 +3,21 @@ import type { InstallerModule } from '@/types.js' const actions: InstallerModule[] = [ await import('@/actions/status.js'), await import('@/actions/list.js'), - await import('@/actions/auth/jwt.js'), - await import('@/actions/migrate/rollback.js'), + await import('@/actions/storage/upload.js'), + await import('@/actions/config/print.js'), + await import('@/actions/config/generate.js'), + await import('@/actions/email/configure.js'), + await import('@/actions/email/compile.js'), await import('@/actions/migrate/status.js'), - await import('@/actions/migrate/index.js'), + await import('@/actions/migrate/rollback.js'), await import('@/actions/migrate/redo.js'), + await import('@/actions/migrate/index.js'), await import('@/actions/migrate/fresh.js'), await import('@/actions/make/migrations.js'), - await import('@/actions/config/print.js'), - await import('@/actions/config/generate.js'), - await import('@/actions/db/seed.js'), await import('@/actions/db/typegen.js'), + await import('@/actions/db/seed.js'), await import('@/actions/db/reset.js'), - await import('@/actions/email/compile.js'), - await import('@/actions/email/configure.js'), + await import('@/actions/auth/jwt.js') ] export default actions diff --git a/cli/actions/make/migrations.ts b/cli/actions/make/migrations.ts index 2f2dd93..eafc781 100644 --- a/cli/actions/make/migrations.ts +++ b/cli/actions/make/migrations.ts @@ -6,7 +6,7 @@ import { resolve } from 'path' import { MIGRATIONS_DIRECTORY } from '../migrate/index.js' const template = ` -import { ColumnDefinitions, MigrationBuilder } from 'node-pg-migrate' +import type { ColumnDefinitions, MigrationBuilder } from 'node-pg-migrate' export const shorthands: ColumnDefinitions | undefined = undefined diff --git a/cli/actions/storage/upload.ts b/cli/actions/storage/upload.ts new file mode 100644 index 0000000..d58602f --- /dev/null +++ b/cli/actions/storage/upload.ts @@ -0,0 +1,72 @@ +import type { Installer } from '@/types.js' +import { action, supabaseStatus } from '@/utils.js' +import input from '@inquirer/input' +import select from '@inquirer/select' +import { createClient } from '@supabase/supabase-js' +import { readFile, stat } from 'fs/promises' +import { glob } from 'glob' +import { oraPromise } from 'ora' +import { basename, join } from 'path' + +const installer: Installer = program => { + program.command('storage:upload') + .description('Create a new migration') + .argument('', 'The local path to upload. Files and directories are supported.') + .argument('[bucket]', 'An optional bucket to upload to. Omit to show a selection box.') + .argument('[destination]', 'An optional destination directory in the bucket to upload to.') + .action(action(async ({ args, opts }) => { + const { API_URL, SERVICE_ROLE_KEY } = await supabaseStatus(opts.linked) + const supabase = createClient(API_URL, SERVICE_ROLE_KEY) + + let [path, bucket, destination] = args + + if (bucket === undefined) { + const { data, error } = await supabase.storage.listBuckets() + if (error) { + throw error + } + + bucket = await select({ + message: 'Choose a bucket to upload to', + choices: data.map(bucket => bucket.name), + }) + } + + if (destination === undefined) { + destination = await input({ + message: 'Enter a destination directory', + default: '/', + }) + } + + const files: string[] = [] + + const stats = await stat(path) + if (stats.isFile()) { + files.push(path) + } + else if (stats.isDirectory()) { + const globbed = await glob(join(path, '**/*')) + files.push(...globbed) + } + + let counter = 0 + for await (const file of files) { + const data = await readFile(file) + await oraPromise( + supabase.storage.from(bucket).upload( + join(destination, basename(file)), + data, + { + upsert: true, + }, + ), + { + text: `Uploading file ${file} (${++counter}/${files.length}) …`, + }, + ) + } + })) +} + +export default installer diff --git a/deno.json b/deno.json new file mode 100644 index 0000000..95e4298 --- /dev/null +++ b/deno.json @@ -0,0 +1,11 @@ +{ + "fmt": { + "include": [ + "supabase/functions" + ], + "indentWidth": 4, + "semiColons": false, + "singleQuote": true, + "useTabs": false + } +} diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..bfe545b --- /dev/null +++ b/deno.lock @@ -0,0 +1,4850 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "jsr:@oak/commons@^1.0": "jsr:@oak/commons@1.0.0", + "jsr:@std/assert@^1.0": "jsr:@std/assert@1.0.6", + "jsr:@std/bytes@^1.0": "jsr:@std/bytes@1.0.2", + "jsr:@std/bytes@^1.0.2": "jsr:@std/bytes@1.0.2", + "jsr:@std/crypto@^1.0": "jsr:@std/crypto@1.0.3", + "jsr:@std/encoding": "jsr:@std/encoding@1.0.5", + "jsr:@std/encoding@^1.0": "jsr:@std/encoding@1.0.5", + "jsr:@std/encoding@^1.0.5": "jsr:@std/encoding@1.0.5", + "jsr:@std/http@^1.0": "jsr:@std/http@1.0.7", + "jsr:@std/io@0.224": "jsr:@std/io@0.224.9", + "jsr:@std/media-types@^1.0": "jsr:@std/media-types@1.0.3", + "jsr:@std/path@^1.0": "jsr:@std/path@1.0.6", + "jsr:@supabase/functions-js": "jsr:@supabase/functions-js@2.4.3", + "jsr:@supabase/supabase-js@2": "jsr:@supabase/supabase-js@2.45.4", + "jsr:@supabase/supabase-js@^2.45.4": "jsr:@supabase/supabase-js@2.45.4", + "npm:@actcoding/eslint-config@^0.0.7": "npm:@actcoding/eslint-config@0.0.7_eslint@9.11.1_@typescript-eslint+parser@7.18.0__eslint@8.57.1__typescript@5.6.2_typescript@5.6.2", + "npm:@inquirer/confirm@^3.1.20": "npm:@inquirer/confirm@3.2.0", + "npm:@inquirer/input@^2.2.7": "npm:@inquirer/input@2.3.0", + "npm:@inquirer/password@^2.1.20": "npm:@inquirer/password@2.2.0", + "npm:@inquirer/select@^2.4.7": "npm:@inquirer/select@2.5.0", + "npm:@supabase/auth-js@2.64.4": "npm:@supabase/auth-js@2.64.4", + "npm:@supabase/auth-js@2.65.0": "npm:@supabase/auth-js@2.65.0", + "npm:@supabase/functions-js@2.4.1": "npm:@supabase/functions-js@2.4.1", + "npm:@supabase/node-fetch@2.6.15": "npm:@supabase/node-fetch@2.6.15", + "npm:@supabase/postgrest-js@1.15.8": "npm:@supabase/postgrest-js@1.15.8", + "npm:@supabase/postgrest-js@1.16.1": "npm:@supabase/postgrest-js@1.16.1", + "npm:@supabase/realtime-js@2.10.2": "npm:@supabase/realtime-js@2.10.2", + "npm:@supabase/storage-js@2.6.0": "npm:@supabase/storage-js@2.6.0", + "npm:@supabase/storage-js@2.7.0": "npm:@supabase/storage-js@2.7.0", + "npm:@types/bun@^1.1.6": "npm:@types/bun@1.1.10", + "npm:@types/ejs@3.1.5": "npm:@types/ejs@3.1.5", + "npm:@types/ejs@^3.1.5": "npm:@types/ejs@3.1.5", + "npm:@types/espree@^10.1.0": "npm:@types/espree@10.1.0", + "npm:@types/hast@^3.0.4": "npm:@types/hast@3.0.4", + "npm:@types/mjml@4.7.4": "npm:@types/mjml@4.7.4", + "npm:@types/mjml@^4.7.4": "npm:@types/mjml@4.7.4", + "npm:@types/node": "npm:@types/node@18.16.19", + "npm:@types/node@^20.0.0": "npm:@types/node@20.16.10", + "npm:@types/pg@^8.11.6": "npm:@types/pg@8.11.10", + "npm:@types/slug@^5.0.8": "npm:@types/slug@5.0.9", + "npm:acorn@^8.12.1": "npm:acorn@8.12.1", + "npm:commander@^12.1.0": "npm:commander@12.1.0", + "npm:comment-parser@^1.4.1": "npm:comment-parser@1.4.1", + "npm:dayjs@^1.11.12": "npm:dayjs@1.11.13", + "npm:dot-prop@^9.0.0": "npm:dot-prop@9.0.0", + "npm:dotenv@^16.4.5": "npm:dotenv@16.4.5", + "npm:ejs@3.1.10": "npm:ejs@3.1.10", + "npm:ejs@^3.1.10": "npm:ejs@3.1.10", + "npm:eslint@^9.8.0": "npm:eslint@9.11.1", + "npm:espree@^10.1.0": "npm:espree@10.2.0_acorn@8.12.1", + "npm:glob@^11.0.0": "npm:glob@11.0.0", + "npm:hast-util-select@6.0.2": "npm:hast-util-select@6.0.2", + "npm:hast-util-select@^6.0.2": "npm:hast-util-select@6.0.2", + "npm:hast@1.0.0": "npm:hast@1.0.0", + "npm:jose@^5.6.3": "npm:jose@5.9.3", + "npm:mjml-core@4.15.3": "npm:mjml-core@4.15.3", + "npm:mjml@4.15.3": "npm:mjml@4.15.3", + "npm:mjml@^4.15.3": "npm:mjml@4.15.3", + "npm:node-pg-migrate@^7.6.0": "npm:node-pg-migrate@7.7.0_@types+pg@8.11.10_pg@8.13.0", + "npm:openai@^4.52.5": "npm:openai@4.57.1", + "npm:ora@^8.0.1": "npm:ora@8.1.0", + "npm:path-to-regexp@6.2.1": "npm:path-to-regexp@6.2.1", + "npm:pg@^8.12.0": "npm:pg@8.13.0", + "npm:rehype-preset-minify@7.0.0": "npm:rehype-preset-minify@7.0.0", + "npm:rehype-preset-minify@^7.0.0": "npm:rehype-preset-minify@7.0.1", + "npm:rehype-stringify@10.0.0": "npm:rehype-stringify@10.0.0", + "npm:rehype-stringify@^10.0.0": "npm:rehype-stringify@10.0.1", + "npm:rehype@13.0.1": "npm:rehype@13.0.1", + "npm:rehype@^13.0.1": "npm:rehype@13.0.2", + "npm:remark-parse@^11.0.0": "npm:remark-parse@11.0.0", + "npm:remark-stringify@^11.0.0": "npm:remark-stringify@11.0.0", + "npm:slug@^9.1.0": "npm:slug@9.1.0", + "npm:tsc-alias@^1.8.10": "npm:tsc-alias@1.8.10", + "npm:typescript@^5.5.4": "npm:typescript@5.6.2", + "npm:unified@11.0.5": "npm:unified@11.0.5", + "npm:unified@^11.0.5": "npm:unified@11.0.5", + "npm:zod@^3.23.8": "npm:zod@3.23.8" + }, + "jsr": { + "@oak/commons@1.0.0": { + "integrity": "49805b55603c3627a9d6235c0655aa2b6222d3036b3a13ff0380c16368f607ac", + "dependencies": [ + "jsr:@std/assert@^1.0", + "jsr:@std/bytes@^1.0", + "jsr:@std/crypto@^1.0", + "jsr:@std/encoding@^1.0", + "jsr:@std/http@^1.0", + "jsr:@std/media-types@^1.0" + ] + }, + "@std/assert@1.0.6": { + "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207" + }, + "@std/bytes@1.0.2": { + "integrity": "fbdee322bbd8c599a6af186a1603b3355e59a5fb1baa139f8f4c3c9a1b3e3d57" + }, + "@std/crypto@1.0.3": { + "integrity": "a2a32f51ddef632d299e3879cd027c630dcd4d1d9a5285d6e6788072f4e51e7f" + }, + "@std/encoding@1.0.5": { + "integrity": "ecf363d4fc25bd85bd915ff6733a7e79b67e0e7806334af15f4645c569fefc04" + }, + "@std/http@1.0.7": { + "integrity": "9b904fc256678a5c9759f1a53a24a3fdcc59d83dc62099bb472683b6f819194c", + "dependencies": [ + "jsr:@std/encoding@^1.0.5" + ] + }, + "@std/io@0.224.9": { + "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3", + "dependencies": [ + "jsr:@std/bytes@^1.0.2" + ] + }, + "@std/media-types@1.0.3": { + "integrity": "b12d30a7852f7578f4d210622df713bbfd1cbdd9b4ec2eaf5c1845ab70bab159" + }, + "@std/path@1.0.6": { + "integrity": "ab2c55f902b380cf28e0eec501b4906e4c1960d13f00e11cfbcd21de15f18fed" + }, + "@supabase/functions-js@2.4.3": { + "integrity": "010834c9e7d2996b4be8e4004a15ed8f42b326490e4b354683f9c191353b76cc", + "dependencies": [ + "npm:openai@^4.52.5" + ] + }, + "@supabase/supabase-js@2.44.4": { + "integrity": "23fc1596b385aaf847e6e140ba44a512d1f8bf443a1daf97cd46e38c4fe2808d", + "dependencies": [ + "npm:@supabase/auth-js@2.64.4", + "npm:@supabase/functions-js@2.4.1", + "npm:@supabase/node-fetch@2.6.15", + "npm:@supabase/postgrest-js@1.15.8", + "npm:@supabase/realtime-js@2.10.2", + "npm:@supabase/storage-js@2.6.0" + ] + }, + "@supabase/supabase-js@2.45.4": { + "integrity": "8437784b8631665a28fadff4521003a119e5702010ccb31e68d84a6d29379e18", + "dependencies": [ + "npm:@supabase/auth-js@2.65.0", + "npm:@supabase/functions-js@2.4.1", + "npm:@supabase/node-fetch@2.6.15", + "npm:@supabase/postgrest-js@1.16.1", + "npm:@supabase/realtime-js@2.10.2", + "npm:@supabase/storage-js@2.7.0" + ] + } + }, + "npm": { + "@actcoding/eslint-config@0.0.7_eslint@9.11.1_@typescript-eslint+parser@7.18.0__eslint@8.57.1__typescript@5.6.2_typescript@5.6.2": { + "integrity": "sha512-0O7Dyv+pv5u+g5jUk+N+t8pOpXR7YMuUgWRvhgFBlrLPlwDuFn88iKZckPOMZ94mpGZrwW8obe5MKZG7H1GgFQ==", + "dependencies": { + "@next/eslint-plugin-next": "@next/eslint-plugin-next@14.2.14", + "@stylistic/eslint-plugin": "@stylistic/eslint-plugin@2.8.0_eslint@9.11.1_typescript@5.6.2", + "@typescript-eslint/eslint-plugin": "@typescript-eslint/eslint-plugin@7.18.0_@typescript-eslint+parser@7.18.0__eslint@8.57.1__typescript@5.6.2_eslint@8.57.1_typescript@5.6.2", + "@typescript-eslint/parser": "@typescript-eslint/parser@7.18.0_eslint@8.57.1_typescript@5.6.2", + "eslint": "eslint@9.11.1", + "eslint-plugin-import-newlines": "eslint-plugin-import-newlines@1.4.0_eslint@9.11.1", + "eslint-plugin-react": "eslint-plugin-react@7.37.1_eslint@9.11.1", + "eslint-plugin-react-hooks": "eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614_eslint@9.11.1", + "eslint-plugin-react-refresh": "eslint-plugin-react-refresh@0.4.12_eslint@9.11.1", + "eslint-plugin-tailwindcss": "eslint-plugin-tailwindcss@3.17.4_tailwindcss@3.4.13__postcss@8.4.47", + "map-obj": "map-obj@5.0.2" + } + }, + "@alloc/quick-lru@5.2.0": { + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dependencies": {} + }, + "@babel/runtime@7.25.7": { + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "regenerator-runtime@0.14.1" + } + }, + "@eslint-community/eslint-utils@4.4.0_eslint@8.57.1": { + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint": "eslint@8.57.1", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3" + } + }, + "@eslint-community/eslint-utils@4.4.0_eslint@9.11.1": { + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint": "eslint@9.11.1", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3" + } + }, + "@eslint-community/regexpp@4.11.1": { + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dependencies": {} + }, + "@eslint/config-array@0.18.0": { + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dependencies": { + "@eslint/object-schema": "@eslint/object-schema@2.1.4", + "debug": "debug@4.3.7", + "minimatch": "minimatch@3.1.2" + } + }, + "@eslint/core@0.6.0": { + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dependencies": {} + }, + "@eslint/eslintrc@2.1.4": { + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dependencies": { + "ajv": "ajv@6.12.6", + "debug": "debug@4.3.7", + "espree": "espree@9.6.1_acorn@8.12.1", + "globals": "globals@13.24.0", + "ignore": "ignore@5.3.2", + "import-fresh": "import-fresh@3.3.0", + "js-yaml": "js-yaml@4.1.0", + "minimatch": "minimatch@3.1.2", + "strip-json-comments": "strip-json-comments@3.1.1" + } + }, + "@eslint/eslintrc@3.1.0": { + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dependencies": { + "ajv": "ajv@6.12.6", + "debug": "debug@4.3.7", + "espree": "espree@10.2.0_acorn@8.12.1", + "globals": "globals@14.0.0", + "ignore": "ignore@5.3.2", + "import-fresh": "import-fresh@3.3.0", + "js-yaml": "js-yaml@4.1.0", + "minimatch": "minimatch@3.1.2", + "strip-json-comments": "strip-json-comments@3.1.1" + } + }, + "@eslint/js@8.57.1": { + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dependencies": {} + }, + "@eslint/js@9.11.1": { + "integrity": "sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==", + "dependencies": {} + }, + "@eslint/object-schema@2.1.4": { + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dependencies": {} + }, + "@eslint/plugin-kit@0.2.0": { + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dependencies": { + "levn": "levn@0.4.1" + } + }, + "@humanwhocodes/config-array@0.13.0": { + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "dependencies": { + "@humanwhocodes/object-schema": "@humanwhocodes/object-schema@2.0.3", + "debug": "debug@4.3.7", + "minimatch": "minimatch@3.1.2" + } + }, + "@humanwhocodes/module-importer@1.0.1": { + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dependencies": {} + }, + "@humanwhocodes/object-schema@2.0.3": { + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dependencies": {} + }, + "@humanwhocodes/retry@0.3.1": { + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dependencies": {} + }, + "@inquirer/confirm@3.2.0": { + "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "dependencies": { + "@inquirer/core": "@inquirer/core@9.2.1", + "@inquirer/type": "@inquirer/type@1.5.5" + } + }, + "@inquirer/core@9.2.1": { + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dependencies": { + "@inquirer/figures": "@inquirer/figures@1.0.6", + "@inquirer/type": "@inquirer/type@2.0.0", + "@types/mute-stream": "@types/mute-stream@0.0.4", + "@types/node": "@types/node@22.7.4", + "@types/wrap-ansi": "@types/wrap-ansi@3.0.0", + "ansi-escapes": "ansi-escapes@4.3.2", + "cli-width": "cli-width@4.1.0", + "mute-stream": "mute-stream@1.0.0", + "signal-exit": "signal-exit@4.1.0", + "strip-ansi": "strip-ansi@6.0.1", + "wrap-ansi": "wrap-ansi@6.2.0", + "yoctocolors-cjs": "yoctocolors-cjs@2.1.2" + } + }, + "@inquirer/figures@1.0.6": { + "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", + "dependencies": {} + }, + "@inquirer/input@2.3.0": { + "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "dependencies": { + "@inquirer/core": "@inquirer/core@9.2.1", + "@inquirer/type": "@inquirer/type@1.5.5" + } + }, + "@inquirer/password@2.2.0": { + "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "dependencies": { + "@inquirer/core": "@inquirer/core@9.2.1", + "@inquirer/type": "@inquirer/type@1.5.5", + "ansi-escapes": "ansi-escapes@4.3.2" + } + }, + "@inquirer/select@2.5.0": { + "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "dependencies": { + "@inquirer/core": "@inquirer/core@9.2.1", + "@inquirer/figures": "@inquirer/figures@1.0.6", + "@inquirer/type": "@inquirer/type@1.5.5", + "ansi-escapes": "ansi-escapes@4.3.2", + "yoctocolors-cjs": "yoctocolors-cjs@2.1.2" + } + }, + "@inquirer/type@1.5.5": { + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "dependencies": { + "mute-stream": "mute-stream@1.0.0" + } + }, + "@inquirer/type@2.0.0": { + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dependencies": { + "mute-stream": "mute-stream@1.0.0" + } + }, + "@isaacs/cliui@8.0.2": { + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "string-width@5.1.2", + "string-width-cjs": "string-width@4.2.3", + "strip-ansi": "strip-ansi@7.1.0", + "strip-ansi-cjs": "strip-ansi@6.0.1", + "wrap-ansi": "wrap-ansi@8.1.0", + "wrap-ansi-cjs": "wrap-ansi@7.0.0" + } + }, + "@jridgewell/gen-mapping@0.3.5": { + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "@jridgewell/set-array@1.2.1", + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.5.0", + "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25" + } + }, + "@jridgewell/resolve-uri@3.1.2": { + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dependencies": {} + }, + "@jridgewell/set-array@1.2.1": { + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dependencies": {} + }, + "@jridgewell/sourcemap-codec@1.5.0": { + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dependencies": {} + }, + "@jridgewell/trace-mapping@0.3.25": { + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "@jridgewell/resolve-uri@3.1.2", + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.5.0" + } + }, + "@next/eslint-plugin-next@14.2.14": { + "integrity": "sha512-kV+OsZ56xhj0rnTn6HegyTGkoa16Mxjrpk7pjWumyB2P8JVQb8S9qtkjy/ye0GnTr4JWtWG4x/2qN40lKZ3iVQ==", + "dependencies": { + "glob": "glob@10.3.10" + } + }, + "@nodelib/fs.scandir@2.1.5": { + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", + "run-parallel": "run-parallel@1.2.0" + } + }, + "@nodelib/fs.stat@2.0.5": { + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dependencies": {} + }, + "@nodelib/fs.walk@1.2.8": { + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "@nodelib/fs.scandir@2.1.5", + "fastq": "fastq@1.17.1" + } + }, + "@one-ini/wasm@0.1.1": { + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dependencies": {} + }, + "@pkgjs/parseargs@0.11.0": { + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dependencies": {} + }, + "@stylistic/eslint-plugin@2.8.0_eslint@9.11.1_typescript@5.6.2": { + "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", + "dependencies": { + "@typescript-eslint/utils": "@typescript-eslint/utils@8.8.0_eslint@9.11.1_typescript@5.6.2", + "eslint": "eslint@9.11.1", + "eslint-visitor-keys": "eslint-visitor-keys@4.1.0", + "espree": "espree@10.2.0_acorn@8.12.1", + "estraverse": "estraverse@5.3.0", + "picomatch": "picomatch@4.0.2" + } + }, + "@supabase/auth-js@2.64.4": { + "integrity": "sha512-9ITagy4WP4FLl+mke1rchapOH0RQpf++DI+WSG2sO1OFOZ0rW3cwAM0nCrMOxu+Zw4vJ4zObc08uvQrXx590Tg==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/auth-js@2.65.0": { + "integrity": "sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/functions-js@2.4.1": { + "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/node-fetch@2.6.15": { + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "whatwg-url@5.0.0" + } + }, + "@supabase/postgrest-js@1.15.8": { + "integrity": "sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/postgrest-js@1.16.1": { + "integrity": "sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/realtime-js@2.10.2": { + "integrity": "sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15", + "@types/phoenix": "@types/phoenix@1.6.5", + "@types/ws": "@types/ws@8.5.11", + "ws": "ws@8.18.0" + } + }, + "@supabase/storage-js@2.6.0": { + "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@supabase/storage-js@2.7.0": { + "integrity": "sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==", + "dependencies": { + "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" + } + }, + "@types/bun@1.1.10": { + "integrity": "sha512-76KYVSwrHwr9zsnk6oLXOGs9KvyBg3U066GLO4rk6JZk1ypEPGCUDZ5yOiESyIHWs9cx9iC8r01utYN32XdmgA==", + "dependencies": { + "bun-types": "bun-types@1.1.29" + } + }, + "@types/debug@4.1.12": { + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "@types/ms@0.7.34" + } + }, + "@types/ejs@3.1.5": { + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", + "dependencies": {} + }, + "@types/espree@10.1.0": { + "integrity": "sha512-uPQZdoUWWMuO6WS8/dwX1stZH/vOBa/wAniGnYEFI0IuU9RmLx6PLmo+VGfNOlbRc5I7hBsQc8H0zcdVI37kxg==", + "dependencies": { + "acorn": "acorn@8.12.1", + "eslint-visitor-keys": "eslint-visitor-keys@4.1.0" + } + }, + "@types/estree@1.0.6": { + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dependencies": {} + }, + "@types/hast@3.0.4": { + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3" + } + }, + "@types/json-schema@7.0.15": { + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dependencies": {} + }, + "@types/mdast@4.0.4": { + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3" + } + }, + "@types/mjml-core@4.15.0": { + "integrity": "sha512-jSRWTOpwRS/uHIBfGdvLl0a7MaoBZZYHKI+HhsFYChrUOKVJTnjSYsuV6wx0snv6ZaX3TUo5OP/gNsz/uzZz1A==", + "dependencies": {} + }, + "@types/mjml@4.7.4": { + "integrity": "sha512-vyi1vzWgMzFMwZY7GSZYX0GU0dmtC8vLHwpgk+NWmwbwRSrlieVyJ9sn5elodwUfklJM7yGl0zQeet1brKTWaQ==", + "dependencies": { + "@types/mjml-core": "@types/mjml-core@4.15.0" + } + }, + "@types/ms@0.7.34": { + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dependencies": {} + }, + "@types/mute-stream@0.0.4": { + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dependencies": { + "@types/node": "@types/node@18.16.19" + } + }, + "@types/node-fetch@2.6.11": { + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "@types/node@18.16.19", + "form-data": "form-data@4.0.0" + } + }, + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + }, + "@types/node@18.19.3": { + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dependencies": { + "undici-types": "undici-types@5.26.5" + } + }, + "@types/node@20.12.14": { + "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", + "dependencies": { + "undici-types": "undici-types@5.26.5" + } + }, + "@types/node@20.16.10": { + "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==", + "dependencies": { + "undici-types": "undici-types@6.19.8" + } + }, + "@types/node@22.7.4": { + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "dependencies": { + "undici-types": "undici-types@6.19.8" + } + }, + "@types/pg@8.11.10": { + "integrity": "sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==", + "dependencies": { + "@types/node": "@types/node@18.16.19", + "pg-protocol": "pg-protocol@1.7.0", + "pg-types": "pg-types@4.0.2" + } + }, + "@types/phoenix@1.6.5": { + "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==", + "dependencies": {} + }, + "@types/qs@6.9.15": { + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dependencies": {} + }, + "@types/slug@5.0.9": { + "integrity": "sha512-6Yp8BSplP35Esa/wOG1wLNKiqXevpQTEF/RcL/NV6BBQaMmZh4YlDwCgrrFSoUE4xAGvnKd5c+lkQJmPrBAzfQ==", + "dependencies": {} + }, + "@types/unist@3.0.3": { + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dependencies": {} + }, + "@types/wrap-ansi@3.0.0": { + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dependencies": {} + }, + "@types/ws@8.5.11": { + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "dependencies": { + "@types/node": "@types/node@18.16.19" + } + }, + "@typescript-eslint/eslint-plugin@7.18.0_@typescript-eslint+parser@7.18.0__eslint@8.57.1__typescript@5.6.2_eslint@8.57.1_typescript@5.6.2": { + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dependencies": { + "@eslint-community/regexpp": "@eslint-community/regexpp@4.11.1", + "@typescript-eslint/parser": "@typescript-eslint/parser@7.18.0_eslint@8.57.1_typescript@5.6.2", + "@typescript-eslint/scope-manager": "@typescript-eslint/scope-manager@7.18.0", + "@typescript-eslint/type-utils": "@typescript-eslint/type-utils@7.18.0_eslint@8.57.1_typescript@5.6.2", + "@typescript-eslint/utils": "@typescript-eslint/utils@7.18.0_eslint@8.57.1_typescript@5.6.2", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@7.18.0", + "eslint": "eslint@8.57.1", + "graphemer": "graphemer@1.4.0", + "ignore": "ignore@5.3.2", + "natural-compare": "natural-compare@1.4.0", + "ts-api-utils": "ts-api-utils@1.3.0_typescript@5.6.2" + } + }, + "@typescript-eslint/parser@7.18.0_eslint@8.57.1_typescript@5.6.2": { + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dependencies": { + "@typescript-eslint/scope-manager": "@typescript-eslint/scope-manager@7.18.0", + "@typescript-eslint/types": "@typescript-eslint/types@7.18.0", + "@typescript-eslint/typescript-estree": "@typescript-eslint/typescript-estree@7.18.0_typescript@5.6.2", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@7.18.0", + "debug": "debug@4.3.7", + "eslint": "eslint@8.57.1" + } + }, + "@typescript-eslint/scope-manager@7.18.0": { + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@7.18.0", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@7.18.0" + } + }, + "@typescript-eslint/scope-manager@8.8.0": { + "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@8.8.0", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@8.8.0" + } + }, + "@typescript-eslint/type-utils@7.18.0_eslint@8.57.1_typescript@5.6.2": { + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dependencies": { + "@typescript-eslint/typescript-estree": "@typescript-eslint/typescript-estree@7.18.0_typescript@5.6.2", + "@typescript-eslint/utils": "@typescript-eslint/utils@7.18.0_eslint@8.57.1_typescript@5.6.2", + "debug": "debug@4.3.7", + "eslint": "eslint@8.57.1", + "ts-api-utils": "ts-api-utils@1.3.0_typescript@5.6.2" + } + }, + "@typescript-eslint/types@7.18.0": { + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dependencies": {} + }, + "@typescript-eslint/types@8.8.0": { + "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "dependencies": {} + }, + "@typescript-eslint/typescript-estree@7.18.0_typescript@5.6.2": { + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@7.18.0", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@7.18.0", + "debug": "debug@4.3.7", + "globby": "globby@11.1.0", + "is-glob": "is-glob@4.0.3", + "minimatch": "minimatch@9.0.5", + "semver": "semver@7.6.3", + "ts-api-utils": "ts-api-utils@1.3.0_typescript@5.6.2" + } + }, + "@typescript-eslint/typescript-estree@8.8.0_typescript@5.6.2": { + "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@8.8.0", + "@typescript-eslint/visitor-keys": "@typescript-eslint/visitor-keys@8.8.0", + "debug": "debug@4.3.7", + "fast-glob": "fast-glob@3.3.2", + "is-glob": "is-glob@4.0.3", + "minimatch": "minimatch@9.0.5", + "semver": "semver@7.6.3", + "ts-api-utils": "ts-api-utils@1.3.0_typescript@5.6.2" + } + }, + "@typescript-eslint/utils@7.18.0_eslint@8.57.1_typescript@5.6.2": { + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dependencies": { + "@eslint-community/eslint-utils": "@eslint-community/eslint-utils@4.4.0_eslint@8.57.1", + "@typescript-eslint/scope-manager": "@typescript-eslint/scope-manager@7.18.0", + "@typescript-eslint/types": "@typescript-eslint/types@7.18.0", + "@typescript-eslint/typescript-estree": "@typescript-eslint/typescript-estree@7.18.0_typescript@5.6.2", + "eslint": "eslint@8.57.1" + } + }, + "@typescript-eslint/utils@8.8.0_eslint@9.11.1_typescript@5.6.2": { + "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", + "dependencies": { + "@eslint-community/eslint-utils": "@eslint-community/eslint-utils@4.4.0_eslint@9.11.1", + "@typescript-eslint/scope-manager": "@typescript-eslint/scope-manager@8.8.0", + "@typescript-eslint/types": "@typescript-eslint/types@8.8.0", + "@typescript-eslint/typescript-estree": "@typescript-eslint/typescript-estree@8.8.0_typescript@5.6.2", + "eslint": "eslint@9.11.1" + } + }, + "@typescript-eslint/visitor-keys@7.18.0": { + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@7.18.0", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3" + } + }, + "@typescript-eslint/visitor-keys@8.8.0": { + "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "dependencies": { + "@typescript-eslint/types": "@typescript-eslint/types@8.8.0", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3" + } + }, + "@ungap/structured-clone@1.2.0": { + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dependencies": {} + }, + "abbrev@2.0.0": { + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dependencies": {} + }, + "abort-controller@3.0.0": { + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "event-target-shim@5.0.1" + } + }, + "acorn-jsx@5.3.2_acorn@8.12.1": { + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dependencies": { + "acorn": "acorn@8.12.1" + } + }, + "acorn@8.12.1": { + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dependencies": {} + }, + "agentkeepalive@4.5.0": { + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "humanize-ms@1.2.1" + } + }, + "ajv@6.12.6": { + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "fast-deep-equal@3.1.3", + "fast-json-stable-stringify": "fast-json-stable-stringify@2.1.0", + "json-schema-traverse": "json-schema-traverse@0.4.1", + "uri-js": "uri-js@4.4.1" + } + }, + "ansi-colors@4.1.3": { + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dependencies": {} + }, + "ansi-escapes@4.3.2": { + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "type-fest@0.21.3" + } + }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dependencies": {} + }, + "ansi-regex@6.1.0": { + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dependencies": {} + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "color-convert@2.0.1" + } + }, + "ansi-styles@6.2.1": { + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dependencies": {} + }, + "any-promise@1.3.0": { + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dependencies": {} + }, + "anymatch@3.1.3": { + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "normalize-path@3.0.0", + "picomatch": "picomatch@2.3.1" + } + }, + "arg@5.0.2": { + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dependencies": {} + }, + "argparse@2.0.1": { + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dependencies": {} + }, + "array-buffer-byte-length@1.0.1": { + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "is-array-buffer": "is-array-buffer@3.0.4" + } + }, + "array-includes@3.1.8": { + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-object-atoms": "es-object-atoms@1.0.0", + "get-intrinsic": "get-intrinsic@1.2.4", + "is-string": "is-string@1.0.7" + } + }, + "array-union@2.1.0": { + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dependencies": {} + }, + "array.prototype.findlast@1.2.5": { + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "es-object-atoms": "es-object-atoms@1.0.0", + "es-shim-unscopables": "es-shim-unscopables@1.0.2" + } + }, + "array.prototype.flat@1.3.2": { + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-shim-unscopables": "es-shim-unscopables@1.0.2" + } + }, + "array.prototype.flatmap@1.3.2": { + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-shim-unscopables": "es-shim-unscopables@1.0.2" + } + }, + "array.prototype.tosorted@1.1.4": { + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "es-shim-unscopables": "es-shim-unscopables@1.0.2" + } + }, + "arraybuffer.prototype.slice@1.0.3": { + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "array-buffer-byte-length@1.0.1", + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "get-intrinsic": "get-intrinsic@1.2.4", + "is-array-buffer": "is-array-buffer@3.0.4", + "is-shared-array-buffer": "is-shared-array-buffer@1.0.3" + } + }, + "async@3.2.6": { + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dependencies": {} + }, + "asynckit@0.4.0": { + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dependencies": {} + }, + "available-typed-arrays@1.0.7": { + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "possible-typed-array-names@1.0.0" + } + }, + "bail@2.0.2": { + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dependencies": {} + }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dependencies": {} + }, + "bcp-47-match@2.0.3": { + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "dependencies": {} + }, + "bcp-47-normalize@2.3.0": { + "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==", + "dependencies": { + "bcp-47": "bcp-47@2.1.0", + "bcp-47-match": "bcp-47-match@2.0.3" + } + }, + "bcp-47@2.1.0": { + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "dependencies": { + "is-alphabetical": "is-alphabetical@2.0.1", + "is-alphanumerical": "is-alphanumerical@2.0.1", + "is-decimal": "is-decimal@2.0.1" + } + }, + "binary-extensions@2.3.0": { + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dependencies": {} + }, + "boolbase@1.0.0": { + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dependencies": {} + }, + "brace-expansion@1.1.11": { + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "balanced-match@1.0.2", + "concat-map": "concat-map@0.0.1" + } + }, + "brace-expansion@2.0.1": { + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "balanced-match@1.0.2" + } + }, + "braces@3.0.3": { + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "fill-range@7.1.1" + } + }, + "bun-types@1.1.29": { + "integrity": "sha512-En3/TzSPMPyl5UlUB1MHzHpcrZDakTm7mS203eLoX1fBoEa3PW+aSS8GAqVJ7Is/m34Z5ogL+ECniLY0uDaCPw==", + "dependencies": { + "@types/node": "@types/node@20.12.14", + "@types/ws": "@types/ws@8.5.11" + } + }, + "call-bind@1.0.7": { + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "es-define-property@1.0.0", + "es-errors": "es-errors@1.3.0", + "function-bind": "function-bind@1.1.2", + "get-intrinsic": "get-intrinsic@1.2.4", + "set-function-length": "set-function-length@1.2.2" + } + }, + "callsites@3.1.0": { + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dependencies": {} + }, + "camel-case@3.0.0": { + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dependencies": { + "no-case": "no-case@2.3.2", + "upper-case": "upper-case@1.1.3" + } + }, + "camelcase-css@2.0.1": { + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dependencies": {} + }, + "ccount@2.0.1": { + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dependencies": {} + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "supports-color": "supports-color@7.2.0" + } + }, + "chalk@5.3.0": { + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dependencies": {} + }, + "character-entities-html4@2.1.0": { + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dependencies": {} + }, + "character-entities-legacy@3.0.0": { + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dependencies": {} + }, + "character-entities@2.0.2": { + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dependencies": {} + }, + "cheerio-select@2.1.0": { + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "boolbase@1.0.0", + "css-select": "css-select@5.1.0", + "css-what": "css-what@6.1.0", + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0" + } + }, + "cheerio@1.0.0-rc.12": { + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "cheerio-select@2.1.0", + "dom-serializer": "dom-serializer@2.0.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "htmlparser2": "htmlparser2@8.0.2", + "parse5": "parse5@7.1.2", + "parse5-htmlparser2-tree-adapter": "parse5-htmlparser2-tree-adapter@7.0.0" + } + }, + "chokidar@3.6.0": { + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "anymatch@3.1.3", + "braces": "braces@3.0.3", + "fsevents": "fsevents@2.3.3", + "glob-parent": "glob-parent@5.1.2", + "is-binary-path": "is-binary-path@2.1.0", + "is-glob": "is-glob@4.0.3", + "normalize-path": "normalize-path@3.0.0", + "readdirp": "readdirp@3.6.0" + } + }, + "clean-css@4.2.4": { + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "source-map@0.6.1" + } + }, + "clean-css@5.3.3": { + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dependencies": { + "source-map": "source-map@0.6.1" + } + }, + "cli-cursor@5.0.0": { + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dependencies": { + "restore-cursor": "restore-cursor@5.1.0" + } + }, + "cli-spinners@2.9.2": { + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dependencies": {} + }, + "cli-width@4.1.0": { + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dependencies": {} + }, + "cliui@8.0.1": { + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1", + "wrap-ansi": "wrap-ansi@7.0.0" + } + }, + "collapse-white-space@2.1.0": { + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "dependencies": {} + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "color-name@1.1.4" + } + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dependencies": {} + }, + "combined-stream@1.0.8": { + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "delayed-stream@1.0.0" + } + }, + "comma-separated-tokens@2.0.3": { + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dependencies": {} + }, + "commander@10.0.1": { + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dependencies": {} + }, + "commander@12.1.0": { + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dependencies": {} + }, + "commander@2.20.3": { + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dependencies": {} + }, + "commander@4.1.1": { + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dependencies": {} + }, + "commander@6.2.1": { + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dependencies": {} + }, + "commander@9.5.0": { + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dependencies": {} + }, + "comment-parser@1.4.1": { + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dependencies": {} + }, + "concat-map@0.0.1": { + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dependencies": {} + }, + "config-chain@1.1.13": { + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "ini@1.3.8", + "proto-list": "proto-list@1.2.4" + } + }, + "cross-spawn@7.0.3": { + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "path-key@3.1.1", + "shebang-command": "shebang-command@2.0.0", + "which": "which@2.0.2" + } + }, + "css-select@5.1.0": { + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "boolbase@1.0.0", + "css-what": "css-what@6.1.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "nth-check": "nth-check@2.1.1" + } + }, + "css-selector-parser@3.0.5": { + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "dependencies": {} + }, + "css-what@6.1.0": { + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dependencies": {} + }, + "cssesc@3.0.0": { + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dependencies": {} + }, + "data-view-buffer@1.0.1": { + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "is-data-view": "is-data-view@1.0.1" + } + }, + "data-view-byte-length@1.0.1": { + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "is-data-view": "is-data-view@1.0.1" + } + }, + "data-view-byte-offset@1.0.0": { + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "is-data-view": "is-data-view@1.0.1" + } + }, + "dayjs@1.11.13": { + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dependencies": {} + }, + "debug@4.3.7": { + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "ms@2.1.3" + } + }, + "decode-named-character-reference@1.0.2": { + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "character-entities@2.0.2" + } + }, + "deep-is@0.1.4": { + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dependencies": {} + }, + "define-data-property@1.1.4": { + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "es-define-property@1.0.0", + "es-errors": "es-errors@1.3.0", + "gopd": "gopd@1.0.1" + } + }, + "define-properties@1.2.1": { + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "define-data-property@1.1.4", + "has-property-descriptors": "has-property-descriptors@1.0.2", + "object-keys": "object-keys@1.1.1" + } + }, + "delayed-stream@1.0.0": { + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dependencies": {} + }, + "dequal@2.0.3": { + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dependencies": {} + }, + "detect-node@2.1.0": { + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dependencies": {} + }, + "devlop@1.1.0": { + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "dequal@2.0.3" + } + }, + "didyoumean@1.2.2": { + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dependencies": {} + }, + "dir-glob@3.0.1": { + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "path-type@4.0.0" + } + }, + "direction@2.0.1": { + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "dependencies": {} + }, + "dlv@1.1.3": { + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dependencies": {} + }, + "doctrine@2.1.0": { + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "esutils@2.0.3" + } + }, + "doctrine@3.0.0": { + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "esutils@2.0.3" + } + }, + "dom-serializer@1.4.1": { + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@4.3.1", + "entities": "entities@2.2.0" + } + }, + "dom-serializer@2.0.0": { + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "entities": "entities@4.5.0" + } + }, + "domelementtype@2.3.0": { + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dependencies": {} + }, + "domhandler@3.3.0": { + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0" + } + }, + "domhandler@4.3.1": { + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0" + } + }, + "domhandler@5.0.3": { + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0" + } + }, + "domutils@2.8.0": { + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "dom-serializer@1.4.1", + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@4.3.1" + } + }, + "domutils@3.1.0": { + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "dom-serializer@2.0.0", + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3" + } + }, + "dot-prop@9.0.0": { + "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", + "dependencies": { + "type-fest": "type-fest@4.26.1" + } + }, + "dotenv@16.4.5": { + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dependencies": {} + }, + "eastasianwidth@0.2.0": { + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dependencies": {} + }, + "editorconfig@1.0.4": { + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dependencies": { + "@one-ini/wasm": "@one-ini/wasm@0.1.1", + "commander": "commander@10.0.1", + "minimatch": "minimatch@9.0.1", + "semver": "semver@7.6.3" + } + }, + "ejs@3.1.10": { + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dependencies": { + "jake": "jake@10.9.2" + } + }, + "emoji-regex@10.4.0": { + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dependencies": {} + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dependencies": {} + }, + "emoji-regex@9.2.2": { + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dependencies": {} + }, + "entities@2.2.0": { + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dependencies": {} + }, + "entities@4.5.0": { + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dependencies": {} + }, + "es-abstract@1.23.3": { + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "array-buffer-byte-length@1.0.1", + "arraybuffer.prototype.slice": "arraybuffer.prototype.slice@1.0.3", + "available-typed-arrays": "available-typed-arrays@1.0.7", + "call-bind": "call-bind@1.0.7", + "data-view-buffer": "data-view-buffer@1.0.1", + "data-view-byte-length": "data-view-byte-length@1.0.1", + "data-view-byte-offset": "data-view-byte-offset@1.0.0", + "es-define-property": "es-define-property@1.0.0", + "es-errors": "es-errors@1.3.0", + "es-object-atoms": "es-object-atoms@1.0.0", + "es-set-tostringtag": "es-set-tostringtag@2.0.3", + "es-to-primitive": "es-to-primitive@1.2.1", + "function.prototype.name": "function.prototype.name@1.1.6", + "get-intrinsic": "get-intrinsic@1.2.4", + "get-symbol-description": "get-symbol-description@1.0.2", + "globalthis": "globalthis@1.0.4", + "gopd": "gopd@1.0.1", + "has-property-descriptors": "has-property-descriptors@1.0.2", + "has-proto": "has-proto@1.0.3", + "has-symbols": "has-symbols@1.0.3", + "hasown": "hasown@2.0.2", + "internal-slot": "internal-slot@1.0.7", + "is-array-buffer": "is-array-buffer@3.0.4", + "is-callable": "is-callable@1.2.7", + "is-data-view": "is-data-view@1.0.1", + "is-negative-zero": "is-negative-zero@2.0.3", + "is-regex": "is-regex@1.1.4", + "is-shared-array-buffer": "is-shared-array-buffer@1.0.3", + "is-string": "is-string@1.0.7", + "is-typed-array": "is-typed-array@1.1.13", + "is-weakref": "is-weakref@1.0.2", + "object-inspect": "object-inspect@1.13.2", + "object-keys": "object-keys@1.1.1", + "object.assign": "object.assign@4.1.5", + "regexp.prototype.flags": "regexp.prototype.flags@1.5.3", + "safe-array-concat": "safe-array-concat@1.1.2", + "safe-regex-test": "safe-regex-test@1.0.3", + "string.prototype.trim": "string.prototype.trim@1.2.9", + "string.prototype.trimend": "string.prototype.trimend@1.0.8", + "string.prototype.trimstart": "string.prototype.trimstart@1.0.8", + "typed-array-buffer": "typed-array-buffer@1.0.2", + "typed-array-byte-length": "typed-array-byte-length@1.0.1", + "typed-array-byte-offset": "typed-array-byte-offset@1.0.2", + "typed-array-length": "typed-array-length@1.0.6", + "unbox-primitive": "unbox-primitive@1.0.2", + "which-typed-array": "which-typed-array@1.1.15" + } + }, + "es-define-property@1.0.0": { + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.4" + } + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dependencies": {} + }, + "es-iterator-helpers@1.0.19": { + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "es-set-tostringtag": "es-set-tostringtag@2.0.3", + "function-bind": "function-bind@1.1.2", + "get-intrinsic": "get-intrinsic@1.2.4", + "globalthis": "globalthis@1.0.4", + "has-property-descriptors": "has-property-descriptors@1.0.2", + "has-proto": "has-proto@1.0.3", + "has-symbols": "has-symbols@1.0.3", + "internal-slot": "internal-slot@1.0.7", + "iterator.prototype": "iterator.prototype@1.1.2", + "safe-array-concat": "safe-array-concat@1.1.2" + } + }, + "es-object-atoms@1.0.0": { + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "es-errors@1.3.0" + } + }, + "es-set-tostringtag@2.0.3": { + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.4", + "has-tostringtag": "has-tostringtag@1.0.2", + "hasown": "hasown@2.0.2" + } + }, + "es-shim-unscopables@1.0.2": { + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dependencies": { + "hasown": "hasown@2.0.2" + } + }, + "es-to-primitive@1.2.1": { + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "is-callable@1.2.7", + "is-date-object": "is-date-object@1.0.5", + "is-symbol": "is-symbol@1.0.4" + } + }, + "escalade@3.2.0": { + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dependencies": {} + }, + "escape-goat@3.0.0": { + "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==", + "dependencies": {} + }, + "escape-string-regexp@4.0.0": { + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dependencies": {} + }, + "eslint-plugin-import-newlines@1.4.0_eslint@9.11.1": { + "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", + "dependencies": { + "eslint": "eslint@9.11.1" + } + }, + "eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614_eslint@9.11.1": { + "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", + "dependencies": { + "eslint": "eslint@9.11.1" + } + }, + "eslint-plugin-react-refresh@0.4.12_eslint@9.11.1": { + "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", + "dependencies": { + "eslint": "eslint@9.11.1" + } + }, + "eslint-plugin-react@7.37.1_eslint@9.11.1": { + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", + "dependencies": { + "array-includes": "array-includes@3.1.8", + "array.prototype.findlast": "array.prototype.findlast@1.2.5", + "array.prototype.flatmap": "array.prototype.flatmap@1.3.2", + "array.prototype.tosorted": "array.prototype.tosorted@1.1.4", + "doctrine": "doctrine@2.1.0", + "es-iterator-helpers": "es-iterator-helpers@1.0.19", + "eslint": "eslint@9.11.1", + "estraverse": "estraverse@5.3.0", + "hasown": "hasown@2.0.2", + "jsx-ast-utils": "jsx-ast-utils@3.3.5", + "minimatch": "minimatch@3.1.2", + "object.entries": "object.entries@1.1.8", + "object.fromentries": "object.fromentries@2.0.8", + "object.values": "object.values@1.2.0", + "prop-types": "prop-types@15.8.1", + "resolve": "resolve@2.0.0-next.5", + "semver": "semver@6.3.1", + "string.prototype.matchall": "string.prototype.matchall@4.0.11", + "string.prototype.repeat": "string.prototype.repeat@1.0.0" + } + }, + "eslint-plugin-tailwindcss@3.17.4_tailwindcss@3.4.13__postcss@8.4.47": { + "integrity": "sha512-gJAEHmCq2XFfUP/+vwEfEJ9igrPeZFg+skeMtsxquSQdxba9XRk5bn0Bp9jxG1VV9/wwPKi1g3ZjItu6MIjhNg==", + "dependencies": { + "fast-glob": "fast-glob@3.3.2", + "postcss": "postcss@8.4.47", + "tailwindcss": "tailwindcss@3.4.13_postcss@8.4.47" + } + }, + "eslint-scope@7.2.2": { + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "esrecurse@4.3.0", + "estraverse": "estraverse@5.3.0" + } + }, + "eslint-scope@8.1.0": { + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dependencies": { + "esrecurse": "esrecurse@4.3.0", + "estraverse": "estraverse@5.3.0" + } + }, + "eslint-visitor-keys@3.4.3": { + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dependencies": {} + }, + "eslint-visitor-keys@4.1.0": { + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "dependencies": {} + }, + "eslint@8.57.1": { + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dependencies": { + "@eslint-community/eslint-utils": "@eslint-community/eslint-utils@4.4.0_eslint@8.57.1", + "@eslint-community/regexpp": "@eslint-community/regexpp@4.11.1", + "@eslint/eslintrc": "@eslint/eslintrc@2.1.4", + "@eslint/js": "@eslint/js@8.57.1", + "@humanwhocodes/config-array": "@humanwhocodes/config-array@0.13.0", + "@humanwhocodes/module-importer": "@humanwhocodes/module-importer@1.0.1", + "@nodelib/fs.walk": "@nodelib/fs.walk@1.2.8", + "@ungap/structured-clone": "@ungap/structured-clone@1.2.0", + "ajv": "ajv@6.12.6", + "chalk": "chalk@4.1.2", + "cross-spawn": "cross-spawn@7.0.3", + "debug": "debug@4.3.7", + "doctrine": "doctrine@3.0.0", + "escape-string-regexp": "escape-string-regexp@4.0.0", + "eslint-scope": "eslint-scope@7.2.2", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3", + "espree": "espree@9.6.1_acorn@8.12.1", + "esquery": "esquery@1.6.0", + "esutils": "esutils@2.0.3", + "fast-deep-equal": "fast-deep-equal@3.1.3", + "file-entry-cache": "file-entry-cache@6.0.1", + "find-up": "find-up@5.0.0", + "glob-parent": "glob-parent@6.0.2", + "globals": "globals@13.24.0", + "graphemer": "graphemer@1.4.0", + "ignore": "ignore@5.3.2", + "imurmurhash": "imurmurhash@0.1.4", + "is-glob": "is-glob@4.0.3", + "is-path-inside": "is-path-inside@3.0.3", + "js-yaml": "js-yaml@4.1.0", + "json-stable-stringify-without-jsonify": "json-stable-stringify-without-jsonify@1.0.1", + "levn": "levn@0.4.1", + "lodash.merge": "lodash.merge@4.6.2", + "minimatch": "minimatch@3.1.2", + "natural-compare": "natural-compare@1.4.0", + "optionator": "optionator@0.9.4", + "strip-ansi": "strip-ansi@6.0.1", + "text-table": "text-table@0.2.0" + } + }, + "eslint@9.11.1": { + "integrity": "sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==", + "dependencies": { + "@eslint-community/eslint-utils": "@eslint-community/eslint-utils@4.4.0_eslint@9.11.1", + "@eslint-community/regexpp": "@eslint-community/regexpp@4.11.1", + "@eslint/config-array": "@eslint/config-array@0.18.0", + "@eslint/core": "@eslint/core@0.6.0", + "@eslint/eslintrc": "@eslint/eslintrc@3.1.0", + "@eslint/js": "@eslint/js@9.11.1", + "@eslint/plugin-kit": "@eslint/plugin-kit@0.2.0", + "@humanwhocodes/module-importer": "@humanwhocodes/module-importer@1.0.1", + "@humanwhocodes/retry": "@humanwhocodes/retry@0.3.1", + "@nodelib/fs.walk": "@nodelib/fs.walk@1.2.8", + "@types/estree": "@types/estree@1.0.6", + "@types/json-schema": "@types/json-schema@7.0.15", + "ajv": "ajv@6.12.6", + "chalk": "chalk@4.1.2", + "cross-spawn": "cross-spawn@7.0.3", + "debug": "debug@4.3.7", + "escape-string-regexp": "escape-string-regexp@4.0.0", + "eslint-scope": "eslint-scope@8.1.0", + "eslint-visitor-keys": "eslint-visitor-keys@4.1.0", + "espree": "espree@10.2.0_acorn@8.12.1", + "esquery": "esquery@1.6.0", + "esutils": "esutils@2.0.3", + "fast-deep-equal": "fast-deep-equal@3.1.3", + "file-entry-cache": "file-entry-cache@8.0.0", + "find-up": "find-up@5.0.0", + "glob-parent": "glob-parent@6.0.2", + "ignore": "ignore@5.3.2", + "imurmurhash": "imurmurhash@0.1.4", + "is-glob": "is-glob@4.0.3", + "is-path-inside": "is-path-inside@3.0.3", + "json-stable-stringify-without-jsonify": "json-stable-stringify-without-jsonify@1.0.1", + "lodash.merge": "lodash.merge@4.6.2", + "minimatch": "minimatch@3.1.2", + "natural-compare": "natural-compare@1.4.0", + "optionator": "optionator@0.9.4", + "strip-ansi": "strip-ansi@6.0.1", + "text-table": "text-table@0.2.0" + } + }, + "espree@10.2.0_acorn@8.12.1": { + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "dependencies": { + "acorn": "acorn@8.12.1", + "acorn-jsx": "acorn-jsx@5.3.2_acorn@8.12.1", + "eslint-visitor-keys": "eslint-visitor-keys@4.1.0" + } + }, + "espree@9.6.1_acorn@8.12.1": { + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "acorn@8.12.1", + "acorn-jsx": "acorn-jsx@5.3.2_acorn@8.12.1", + "eslint-visitor-keys": "eslint-visitor-keys@3.4.3" + } + }, + "esquery@1.6.0": { + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dependencies": { + "estraverse": "estraverse@5.3.0" + } + }, + "esrecurse@4.3.0": { + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "estraverse@5.3.0" + } + }, + "estraverse@5.3.0": { + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dependencies": {} + }, + "esutils@2.0.3": { + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dependencies": {} + }, + "event-target-shim@5.0.1": { + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dependencies": {} + }, + "extend@3.0.2": { + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dependencies": {} + }, + "fast-deep-equal@3.1.3": { + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dependencies": {} + }, + "fast-glob@3.3.2": { + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", + "@nodelib/fs.walk": "@nodelib/fs.walk@1.2.8", + "glob-parent": "glob-parent@5.1.2", + "merge2": "merge2@1.4.1", + "micromatch": "micromatch@4.0.8" + } + }, + "fast-json-stable-stringify@2.1.0": { + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dependencies": {} + }, + "fast-levenshtein@2.0.6": { + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dependencies": {} + }, + "fastq@1.17.1": { + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "reusify@1.0.4" + } + }, + "file-entry-cache@6.0.1": { + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "flat-cache@3.2.0" + } + }, + "file-entry-cache@8.0.0": { + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dependencies": { + "flat-cache": "flat-cache@4.0.1" + } + }, + "filelist@1.0.4": { + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "minimatch@5.1.6" + } + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "to-regex-range@5.0.1" + } + }, + "find-up@5.0.0": { + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "locate-path@6.0.0", + "path-exists": "path-exists@4.0.0" + } + }, + "flat-cache@3.2.0": { + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "flatted@3.3.1", + "keyv": "keyv@4.5.4", + "rimraf": "rimraf@3.0.2" + } + }, + "flat-cache@4.0.1": { + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dependencies": { + "flatted": "flatted@3.3.1", + "keyv": "keyv@4.5.4" + } + }, + "flatted@3.3.1": { + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dependencies": {} + }, + "for-each@0.3.3": { + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "is-callable@1.2.7" + } + }, + "foreground-child@3.3.0": { + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": { + "cross-spawn": "cross-spawn@7.0.3", + "signal-exit": "signal-exit@4.1.0" + } + }, + "form-data-encoder@1.7.2": { + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dependencies": {} + }, + "form-data@4.0.0": { + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "asynckit@0.4.0", + "combined-stream": "combined-stream@1.0.8", + "mime-types": "mime-types@2.1.35" + } + }, + "formdata-node@4.4.1": { + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "node-domexception@1.0.0", + "web-streams-polyfill": "web-streams-polyfill@4.0.0-beta.3" + } + }, + "fs.realpath@1.0.0": { + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dependencies": {} + }, + "fsevents@2.3.3": { + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dependencies": {} + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dependencies": {} + }, + "function.prototype.name@1.1.6": { + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "functions-have-names": "functions-have-names@1.2.3" + } + }, + "functions-have-names@1.2.3": { + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dependencies": {} + }, + "get-caller-file@2.0.5": { + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dependencies": {} + }, + "get-east-asian-width@1.2.0": { + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dependencies": {} + }, + "get-intrinsic@1.2.4": { + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "es-errors@1.3.0", + "function-bind": "function-bind@1.1.2", + "has-proto": "has-proto@1.0.3", + "has-symbols": "has-symbols@1.0.3", + "hasown": "hasown@2.0.2" + } + }, + "get-symbol-description@1.0.2": { + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "get-intrinsic": "get-intrinsic@1.2.4" + } + }, + "glob-parent@5.1.2": { + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "is-glob@4.0.3" + } + }, + "glob-parent@6.0.2": { + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "is-glob@4.0.3" + } + }, + "glob@10.3.10": { + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "foreground-child@3.3.0", + "jackspeak": "jackspeak@2.3.6", + "minimatch": "minimatch@9.0.5", + "minipass": "minipass@7.1.2", + "path-scurry": "path-scurry@1.11.1" + } + }, + "glob@11.0.0": { + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dependencies": { + "foreground-child": "foreground-child@3.3.0", + "jackspeak": "jackspeak@4.0.2", + "minimatch": "minimatch@10.0.1", + "minipass": "minipass@7.1.2", + "package-json-from-dist": "package-json-from-dist@1.0.1", + "path-scurry": "path-scurry@2.0.0" + } + }, + "glob@7.2.3": { + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "fs.realpath@1.0.0", + "inflight": "inflight@1.0.6", + "inherits": "inherits@2.0.4", + "minimatch": "minimatch@3.1.2", + "once": "once@1.4.0", + "path-is-absolute": "path-is-absolute@1.0.1" + } + }, + "globals@13.24.0": { + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "type-fest@0.20.2" + } + }, + "globals@14.0.0": { + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dependencies": {} + }, + "globalthis@1.0.4": { + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": { + "define-properties": "define-properties@1.2.1", + "gopd": "gopd@1.0.1" + } + }, + "globby@11.1.0": { + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "array-union@2.1.0", + "dir-glob": "dir-glob@3.0.1", + "fast-glob": "fast-glob@3.3.2", + "ignore": "ignore@5.3.2", + "merge2": "merge2@1.4.1", + "slash": "slash@3.0.0" + } + }, + "gopd@1.0.1": { + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.4" + } + }, + "graphemer@1.4.0": { + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dependencies": {} + }, + "has-bigints@1.0.2": { + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dependencies": {} + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dependencies": {} + }, + "has-property-descriptors@1.0.2": { + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "es-define-property@1.0.0" + } + }, + "has-proto@1.0.3": { + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dependencies": {} + }, + "has-symbols@1.0.3": { + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dependencies": {} + }, + "has-tostringtag@1.0.2": { + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "has-symbols@1.0.3" + } + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "function-bind@1.1.2" + } + }, + "hast-util-embedded@3.0.0": { + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0" + } + }, + "hast-util-from-html@2.0.3": { + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "devlop": "devlop@1.1.0", + "hast-util-from-parse5": "hast-util-from-parse5@8.0.1", + "parse5": "parse5@7.1.2", + "vfile": "vfile@6.0.3", + "vfile-message": "vfile-message@4.0.2" + } + }, + "hast-util-from-parse5@8.0.1": { + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "@types/unist": "@types/unist@3.0.3", + "devlop": "devlop@1.1.0", + "hastscript": "hastscript@8.0.0", + "property-information": "property-information@6.5.0", + "vfile": "vfile@6.0.3", + "vfile-location": "vfile-location@5.0.3", + "web-namespaces": "web-namespaces@2.0.1" + } + }, + "hast-util-from-string@3.0.1": { + "integrity": "sha512-EpOi8Ux+QiJEUhv69d0xtGlA/7o6V1Yr4jqy6hq0s71mgl9sJsdruRrCo9UMVLMg+VwBVB4dnut/qsOsem5WWA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-has-property@3.0.0": { + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-is-conditional-comment@3.0.1": { + "integrity": "sha512-RWpXL//CiEWwOh4OeAvr2fFeoBbX/sAnPnaYN9x4Nv6O4VPdFf/3Dq64mIybctblVA498SgVjfNc0/mN9S4IQw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-is-css-link@3.0.1": { + "integrity": "sha512-jyR6Ns8ypYH3nnJhvGehHTpSJdymxjKrg5PgDMClNH61JpWxXm9FLMvnk2CtWN5nulm6IeIrRgbVCsye+UPIBg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "collapse-white-space": "collapse-white-space@2.1.0" + } + }, + "hast-util-is-css-style@3.0.1": { + "integrity": "sha512-5dlGKMoyB2+HY4hAB9pEkzlrH1tfnlHdkw6q1pkzLv2RI01w2ofyhJICzcYbW3NOrTUy4/0qrNvCPsVyHQlB2w==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "collapse-white-space": "collapse-white-space@2.1.0" + } + }, + "hast-util-is-element@3.0.0": { + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-is-event-handler@3.0.1": { + "integrity": "sha512-Xu8jmmojIJ45sSE4c39kZXrW96O/J/wFCxZmg+C7/A/Av6kxwtTPRMBe9TGNJEtRRSch3v1H6iZe7C2hkGe8oQ==", + "dependencies": {} + }, + "hast-util-is-javascript@3.0.1": { + "integrity": "sha512-z4KmilPwiFev1QP9dl++aZDvN1y9LLKgWiZ5oyOG23ybNz+F3Y4tIoWzG+RiQfns/+y3iq7H7p2ebwaY2fFLSQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "collapse-white-space": "collapse-white-space@2.1.0" + } + }, + "hast-util-minify-whitespace@1.0.1": { + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-embedded": "hast-util-embedded@3.0.0", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "hast-util-whitespace": "hast-util-whitespace@3.0.0", + "unist-util-is": "unist-util-is@6.0.0" + } + }, + "hast-util-parse-selector@4.0.0": { + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-select@6.0.2": { + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "@types/unist": "@types/unist@3.0.3", + "bcp-47-match": "bcp-47-match@2.0.3", + "comma-separated-tokens": "comma-separated-tokens@2.0.3", + "css-selector-parser": "css-selector-parser@3.0.5", + "devlop": "devlop@1.1.0", + "direction": "direction@2.0.1", + "hast-util-has-property": "hast-util-has-property@3.0.0", + "hast-util-to-string": "hast-util-to-string@3.0.1", + "hast-util-whitespace": "hast-util-whitespace@3.0.0", + "not": "not@0.1.0", + "nth-check": "nth-check@2.1.1", + "property-information": "property-information@6.5.0", + "space-separated-tokens": "space-separated-tokens@2.0.2", + "unist-util-visit": "unist-util-visit@5.0.0", + "zwitch": "zwitch@2.0.4" + } + }, + "hast-util-to-html@9.0.3": { + "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "@types/unist": "@types/unist@3.0.3", + "ccount": "ccount@2.0.1", + "comma-separated-tokens": "comma-separated-tokens@2.0.3", + "hast-util-whitespace": "hast-util-whitespace@3.0.0", + "html-void-elements": "html-void-elements@3.0.0", + "mdast-util-to-hast": "mdast-util-to-hast@13.2.0", + "property-information": "property-information@6.5.0", + "space-separated-tokens": "space-separated-tokens@2.0.2", + "stringify-entities": "stringify-entities@4.0.4", + "zwitch": "zwitch@2.0.4" + } + }, + "hast-util-to-string@3.0.1": { + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast-util-whitespace@3.0.0": { + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4" + } + }, + "hast@1.0.0": { + "integrity": "sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==", + "dependencies": {} + }, + "hastscript@8.0.0": { + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "comma-separated-tokens": "comma-separated-tokens@2.0.3", + "hast-util-parse-selector": "hast-util-parse-selector@4.0.0", + "property-information": "property-information@6.5.0", + "space-separated-tokens": "space-separated-tokens@2.0.2" + } + }, + "he@1.2.0": { + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dependencies": {} + }, + "html-enumerated-attributes@1.1.1": { + "integrity": "sha512-fxfswuADQ6N6RmCUYoCEIw09Zbk/h8GJSJsbiQ3Uw3mkQegJ5b7Eu5Tpxl2xDUq9meWmivHe0GFieG2qHl2j4A==", + "dependencies": {} + }, + "html-minifier@4.0.0": { + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dependencies": { + "camel-case": "camel-case@3.0.0", + "clean-css": "clean-css@4.2.4", + "commander": "commander@2.20.3", + "he": "he@1.2.0", + "param-case": "param-case@2.1.1", + "relateurl": "relateurl@0.2.7", + "uglify-js": "uglify-js@3.19.3" + } + }, + "html-url-attributes@3.0.1": { + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "dependencies": {} + }, + "html-void-elements@3.0.0": { + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dependencies": {} + }, + "htmlparser2@5.0.1": { + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@3.3.0", + "domutils": "domutils@2.8.0", + "entities": "entities@2.2.0" + } + }, + "htmlparser2@8.0.2": { + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "entities": "entities@4.5.0" + } + }, + "htmlparser2@9.1.0": { + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "entities": "entities@4.5.0" + } + }, + "humanize-ms@1.2.1": { + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "ms@2.1.3" + } + }, + "ignore@5.3.2": { + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dependencies": {} + }, + "import-fresh@3.3.0": { + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "parent-module@1.0.1", + "resolve-from": "resolve-from@4.0.0" + } + }, + "imurmurhash@0.1.4": { + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dependencies": {} + }, + "inflight@1.0.6": { + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "once@1.4.0", + "wrappy": "wrappy@1.0.2" + } + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dependencies": {} + }, + "ini@1.3.8": { + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dependencies": {} + }, + "internal-slot@1.0.7": { + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": { + "es-errors": "es-errors@1.3.0", + "hasown": "hasown@2.0.2", + "side-channel": "side-channel@1.0.6" + } + }, + "is-alphabetical@2.0.1": { + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dependencies": {} + }, + "is-alphanumerical@2.0.1": { + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "is-alphabetical@2.0.1", + "is-decimal": "is-decimal@2.0.1" + } + }, + "is-array-buffer@3.0.4": { + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "get-intrinsic": "get-intrinsic@1.2.4" + } + }, + "is-async-function@2.0.0": { + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-bigint@1.0.4": { + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "has-bigints@1.0.2" + } + }, + "is-binary-path@2.1.0": { + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "binary-extensions@2.3.0" + } + }, + "is-boolean-object@1.1.2": { + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-callable@1.2.7": { + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dependencies": {} + }, + "is-core-module@2.15.1": { + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": { + "hasown": "hasown@2.0.2" + } + }, + "is-data-view@1.0.1": { + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "is-typed-array@1.1.13" + } + }, + "is-date-object@1.0.5": { + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-decimal@2.0.1": { + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dependencies": {} + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dependencies": {} + }, + "is-finalizationregistry@1.0.2": { + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": { + "call-bind": "call-bind@1.0.7" + } + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dependencies": {} + }, + "is-generator-function@1.0.10": { + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "is-extglob@2.1.1" + } + }, + "is-interactive@2.0.0": { + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dependencies": {} + }, + "is-map@2.0.3": { + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dependencies": {} + }, + "is-negative-zero@2.0.3": { + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dependencies": {} + }, + "is-number-object@1.0.7": { + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dependencies": {} + }, + "is-path-inside@3.0.3": { + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dependencies": {} + }, + "is-plain-obj@4.1.0": { + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dependencies": {} + }, + "is-regex@1.1.4": { + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-set@2.0.3": { + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dependencies": {} + }, + "is-shared-array-buffer@1.0.3": { + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": { + "call-bind": "call-bind@1.0.7" + } + }, + "is-string@1.0.7": { + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "is-symbol@1.0.4": { + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "has-symbols@1.0.3" + } + }, + "is-typed-array@1.1.13": { + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "which-typed-array@1.1.15" + } + }, + "is-unicode-supported@1.3.0": { + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dependencies": {} + }, + "is-unicode-supported@2.1.0": { + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dependencies": {} + }, + "is-weakmap@2.0.2": { + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dependencies": {} + }, + "is-weakref@1.0.2": { + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7" + } + }, + "is-weakset@2.0.3": { + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "get-intrinsic": "get-intrinsic@1.2.4" + } + }, + "isarray@2.0.5": { + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dependencies": {} + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dependencies": {} + }, + "iterator.prototype@1.1.2": { + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dependencies": { + "define-properties": "define-properties@1.2.1", + "get-intrinsic": "get-intrinsic@1.2.4", + "has-symbols": "has-symbols@1.0.3", + "reflect.getprototypeof": "reflect.getprototypeof@1.0.6", + "set-function-name": "set-function-name@2.0.2" + } + }, + "jackspeak@2.3.6": { + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "@isaacs/cliui@8.0.2", + "@pkgjs/parseargs": "@pkgjs/parseargs@0.11.0" + } + }, + "jackspeak@4.0.2": { + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dependencies": { + "@isaacs/cliui": "@isaacs/cliui@8.0.2" + } + }, + "jake@10.9.2": { + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dependencies": { + "async": "async@3.2.6", + "chalk": "chalk@4.1.2", + "filelist": "filelist@1.0.4", + "minimatch": "minimatch@3.1.2" + } + }, + "jiti@1.21.6": { + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dependencies": {} + }, + "jose@5.9.3": { + "integrity": "sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==", + "dependencies": {} + }, + "js-beautify@1.15.1": { + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dependencies": { + "config-chain": "config-chain@1.1.13", + "editorconfig": "editorconfig@1.0.4", + "glob": "glob@10.3.10", + "js-cookie": "js-cookie@3.0.5", + "nopt": "nopt@7.2.1" + } + }, + "js-cookie@3.0.5": { + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dependencies": {} + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dependencies": {} + }, + "js-yaml@4.1.0": { + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "argparse@2.0.1" + } + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dependencies": {} + }, + "json-schema-traverse@0.4.1": { + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dependencies": {} + }, + "json-stable-stringify-without-jsonify@1.0.1": { + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dependencies": {} + }, + "jsx-ast-utils@3.3.5": { + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "array-includes@3.1.8", + "array.prototype.flat": "array.prototype.flat@1.3.2", + "object.assign": "object.assign@4.1.5", + "object.values": "object.values@1.2.0" + } + }, + "juice@10.0.1": { + "integrity": "sha512-ZhJT1soxJCkOiO55/mz8yeBKTAJhRzX9WBO+16ZTqNTONnnVlUPyVBIzQ7lDRjaBdTbid+bAnyIon/GM3yp4cA==", + "dependencies": { + "cheerio": "cheerio@1.0.0-rc.12", + "commander": "commander@6.2.1", + "mensch": "mensch@0.3.4", + "slick": "slick@1.12.2", + "web-resource-inliner": "web-resource-inliner@6.0.1" + } + }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "json-buffer@3.0.1" + } + }, + "levn@0.4.1": { + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "prelude-ls@1.2.1", + "type-check": "type-check@0.4.0" + } + }, + "lilconfig@2.1.0": { + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dependencies": {} + }, + "lilconfig@3.1.2": { + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dependencies": {} + }, + "lines-and-columns@1.2.4": { + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dependencies": {} + }, + "locate-path@6.0.0": { + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "p-locate@5.0.0" + } + }, + "lodash.merge@4.6.2": { + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dependencies": {} + }, + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dependencies": {} + }, + "log-symbols@6.0.0": { + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dependencies": { + "chalk": "chalk@5.3.0", + "is-unicode-supported": "is-unicode-supported@1.3.0" + } + }, + "longest-streak@3.1.0": { + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dependencies": {} + }, + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "js-tokens@4.0.0" + } + }, + "lower-case@1.1.4": { + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dependencies": {} + }, + "lru-cache@10.4.3": { + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dependencies": {} + }, + "lru-cache@11.0.1": { + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", + "dependencies": {} + }, + "map-obj@5.0.2": { + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dependencies": {} + }, + "mdast-util-from-markdown@2.0.1": { + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4", + "@types/unist": "@types/unist@3.0.3", + "decode-named-character-reference": "decode-named-character-reference@1.0.2", + "devlop": "devlop@1.1.0", + "mdast-util-to-string": "mdast-util-to-string@4.0.0", + "micromark": "micromark@4.0.0", + "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", + "micromark-util-decode-string": "micromark-util-decode-string@2.0.0", + "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0", + "unist-util-stringify-position": "unist-util-stringify-position@4.0.0" + } + }, + "mdast-util-phrasing@4.1.0": { + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4", + "unist-util-is": "unist-util-is@6.0.0" + } + }, + "mdast-util-to-hast@13.2.0": { + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "@types/mdast": "@types/mdast@4.0.4", + "@ungap/structured-clone": "@ungap/structured-clone@1.2.0", + "devlop": "devlop@1.1.0", + "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", + "trim-lines": "trim-lines@3.0.1", + "unist-util-position": "unist-util-position@5.0.0", + "unist-util-visit": "unist-util-visit@5.0.0", + "vfile": "vfile@6.0.3" + } + }, + "mdast-util-to-markdown@2.1.0": { + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4", + "@types/unist": "@types/unist@3.0.3", + "longest-streak": "longest-streak@3.1.0", + "mdast-util-phrasing": "mdast-util-phrasing@4.1.0", + "mdast-util-to-string": "mdast-util-to-string@4.0.0", + "micromark-util-decode-string": "micromark-util-decode-string@2.0.0", + "unist-util-visit": "unist-util-visit@5.0.0", + "zwitch": "zwitch@2.0.4" + } + }, + "mdast-util-to-string@4.0.0": { + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4" + } + }, + "mensch@0.3.4": { + "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==", + "dependencies": {} + }, + "merge2@1.4.1": { + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dependencies": {} + }, + "micromark-core-commonmark@2.0.1": { + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "dependencies": { + "decode-named-character-reference": "decode-named-character-reference@1.0.2", + "devlop": "devlop@1.1.0", + "micromark-factory-destination": "micromark-factory-destination@2.0.0", + "micromark-factory-label": "micromark-factory-label@2.0.0", + "micromark-factory-space": "micromark-factory-space@2.0.0", + "micromark-factory-title": "micromark-factory-title@2.0.0", + "micromark-factory-whitespace": "micromark-factory-whitespace@2.0.0", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-chunked": "micromark-util-chunked@2.0.0", + "micromark-util-classify-character": "micromark-util-classify-character@2.0.0", + "micromark-util-html-tag-name": "micromark-util-html-tag-name@2.0.0", + "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", + "micromark-util-resolve-all": "micromark-util-resolve-all@2.0.0", + "micromark-util-subtokenize": "micromark-util-subtokenize@2.0.1", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-factory-destination@2.0.0": { + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "dependencies": { + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-factory-label@2.0.0": { + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "dependencies": { + "devlop": "devlop@1.1.0", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-factory-space@2.0.0": { + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "dependencies": { + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-factory-title@2.0.0": { + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "dependencies": { + "micromark-factory-space": "micromark-factory-space@2.0.0", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-factory-whitespace@2.0.0": { + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "dependencies": { + "micromark-factory-space": "micromark-factory-space@2.0.0", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-character@2.1.0": { + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dependencies": { + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-chunked@2.0.0": { + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "dependencies": { + "micromark-util-symbol": "micromark-util-symbol@2.0.0" + } + }, + "micromark-util-classify-character@2.0.0": { + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "dependencies": { + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-combine-extensions@2.0.0": { + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "dependencies": { + "micromark-util-chunked": "micromark-util-chunked@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-decode-numeric-character-reference@2.0.1": { + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "dependencies": { + "micromark-util-symbol": "micromark-util-symbol@2.0.0" + } + }, + "micromark-util-decode-string@2.0.0": { + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "dependencies": { + "decode-named-character-reference": "decode-named-character-reference@1.0.2", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", + "micromark-util-symbol": "micromark-util-symbol@2.0.0" + } + }, + "micromark-util-encode@2.0.0": { + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dependencies": {} + }, + "micromark-util-html-tag-name@2.0.0": { + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "dependencies": {} + }, + "micromark-util-normalize-identifier@2.0.0": { + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "dependencies": { + "micromark-util-symbol": "micromark-util-symbol@2.0.0" + } + }, + "micromark-util-resolve-all@2.0.0": { + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "dependencies": { + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-sanitize-uri@2.0.0": { + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dependencies": { + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-encode": "micromark-util-encode@2.0.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0" + } + }, + "micromark-util-subtokenize@2.0.1": { + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "dependencies": { + "devlop": "devlop@1.1.0", + "micromark-util-chunked": "micromark-util-chunked@2.0.0", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromark-util-symbol@2.0.0": { + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dependencies": {} + }, + "micromark-util-types@2.0.0": { + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dependencies": {} + }, + "micromark@4.0.0": { + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "dependencies": { + "@types/debug": "@types/debug@4.1.12", + "debug": "debug@4.3.7", + "decode-named-character-reference": "decode-named-character-reference@1.0.2", + "devlop": "devlop@1.1.0", + "micromark-core-commonmark": "micromark-core-commonmark@2.0.1", + "micromark-factory-space": "micromark-factory-space@2.0.0", + "micromark-util-character": "micromark-util-character@2.1.0", + "micromark-util-chunked": "micromark-util-chunked@2.0.0", + "micromark-util-combine-extensions": "micromark-util-combine-extensions@2.0.0", + "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", + "micromark-util-encode": "micromark-util-encode@2.0.0", + "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", + "micromark-util-resolve-all": "micromark-util-resolve-all@2.0.0", + "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", + "micromark-util-subtokenize": "micromark-util-subtokenize@2.0.1", + "micromark-util-symbol": "micromark-util-symbol@2.0.0", + "micromark-util-types": "micromark-util-types@2.0.0" + } + }, + "micromatch@4.0.8": { + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "braces@3.0.3", + "picomatch": "picomatch@2.3.1" + } + }, + "mime-db@1.52.0": { + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dependencies": {} + }, + "mime-types@2.1.35": { + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "mime-db@1.52.0" + } + }, + "mime@2.6.0": { + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dependencies": {} + }, + "mimic-function@5.0.1": { + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dependencies": {} + }, + "minimatch@10.0.1": { + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dependencies": { + "brace-expansion": "brace-expansion@2.0.1" + } + }, + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "brace-expansion@1.1.11" + } + }, + "minimatch@5.1.6": { + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "brace-expansion@2.0.1" + } + }, + "minimatch@9.0.1": { + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dependencies": { + "brace-expansion": "brace-expansion@2.0.1" + } + }, + "minimatch@9.0.5": { + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "brace-expansion@2.0.1" + } + }, + "minipass@7.1.2": { + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dependencies": {} + }, + "mjml-accordion@4.15.3": { + "integrity": "sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-body@4.15.3": { + "integrity": "sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-button@4.15.3": { + "integrity": "sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-carousel@4.15.3": { + "integrity": "sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-cli@4.15.3": { + "integrity": "sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "chokidar": "chokidar@3.6.0", + "glob": "glob@10.3.10", + "html-minifier": "html-minifier@4.0.0", + "js-beautify": "js-beautify@1.15.1", + "lodash": "lodash@4.17.21", + "minimatch": "minimatch@9.0.5", + "mjml-core": "mjml-core@4.15.3", + "mjml-migrate": "mjml-migrate@4.15.3", + "mjml-parser-xml": "mjml-parser-xml@4.15.3", + "mjml-validator": "mjml-validator@4.15.3", + "yargs": "yargs@17.7.2" + } + }, + "mjml-column@4.15.3": { + "integrity": "sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-core@4.15.3": { + "integrity": "sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "cheerio": "cheerio@1.0.0-rc.12", + "detect-node": "detect-node@2.1.0", + "html-minifier": "html-minifier@4.0.0", + "js-beautify": "js-beautify@1.15.1", + "juice": "juice@10.0.1", + "lodash": "lodash@4.17.21", + "mjml-migrate": "mjml-migrate@4.15.3", + "mjml-parser-xml": "mjml-parser-xml@4.15.3", + "mjml-validator": "mjml-validator@4.15.3" + } + }, + "mjml-divider@4.15.3": { + "integrity": "sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-group@4.15.3": { + "integrity": "sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-attributes@4.15.3": { + "integrity": "sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-breakpoint@4.15.3": { + "integrity": "sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-font@4.15.3": { + "integrity": "sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-html-attributes@4.15.3": { + "integrity": "sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-preview@4.15.3": { + "integrity": "sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-style@4.15.3": { + "integrity": "sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head-title@4.15.3": { + "integrity": "sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-head@4.15.3": { + "integrity": "sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-hero@4.15.3": { + "integrity": "sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-image@4.15.3": { + "integrity": "sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-migrate@4.15.3": { + "integrity": "sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "js-beautify": "js-beautify@1.15.1", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3", + "mjml-parser-xml": "mjml-parser-xml@4.15.3", + "yargs": "yargs@17.7.2" + } + }, + "mjml-navbar@4.15.3": { + "integrity": "sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-parser-xml@4.15.3": { + "integrity": "sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "detect-node": "detect-node@2.1.0", + "htmlparser2": "htmlparser2@9.1.0", + "lodash": "lodash@4.17.21" + } + }, + "mjml-preset-core@4.15.3": { + "integrity": "sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "mjml-accordion": "mjml-accordion@4.15.3", + "mjml-body": "mjml-body@4.15.3", + "mjml-button": "mjml-button@4.15.3", + "mjml-carousel": "mjml-carousel@4.15.3", + "mjml-column": "mjml-column@4.15.3", + "mjml-divider": "mjml-divider@4.15.3", + "mjml-group": "mjml-group@4.15.3", + "mjml-head": "mjml-head@4.15.3", + "mjml-head-attributes": "mjml-head-attributes@4.15.3", + "mjml-head-breakpoint": "mjml-head-breakpoint@4.15.3", + "mjml-head-font": "mjml-head-font@4.15.3", + "mjml-head-html-attributes": "mjml-head-html-attributes@4.15.3", + "mjml-head-preview": "mjml-head-preview@4.15.3", + "mjml-head-style": "mjml-head-style@4.15.3", + "mjml-head-title": "mjml-head-title@4.15.3", + "mjml-hero": "mjml-hero@4.15.3", + "mjml-image": "mjml-image@4.15.3", + "mjml-navbar": "mjml-navbar@4.15.3", + "mjml-raw": "mjml-raw@4.15.3", + "mjml-section": "mjml-section@4.15.3", + "mjml-social": "mjml-social@4.15.3", + "mjml-spacer": "mjml-spacer@4.15.3", + "mjml-table": "mjml-table@4.15.3", + "mjml-text": "mjml-text@4.15.3", + "mjml-wrapper": "mjml-wrapper@4.15.3" + } + }, + "mjml-raw@4.15.3": { + "integrity": "sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-section@4.15.3": { + "integrity": "sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-social@4.15.3": { + "integrity": "sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-spacer@4.15.3": { + "integrity": "sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-table@4.15.3": { + "integrity": "sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-text@4.15.3": { + "integrity": "sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3" + } + }, + "mjml-validator@4.15.3": { + "integrity": "sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7" + } + }, + "mjml-wrapper@4.15.3": { + "integrity": "sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "lodash": "lodash@4.17.21", + "mjml-core": "mjml-core@4.15.3", + "mjml-section": "mjml-section@4.15.3" + } + }, + "mjml@4.15.3": { + "integrity": "sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "mjml-cli": "mjml-cli@4.15.3", + "mjml-core": "mjml-core@4.15.3", + "mjml-migrate": "mjml-migrate@4.15.3", + "mjml-preset-core": "mjml-preset-core@4.15.3", + "mjml-validator": "mjml-validator@4.15.3" + } + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dependencies": {} + }, + "mute-stream@1.0.0": { + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dependencies": {} + }, + "mylas@2.1.13": { + "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", + "dependencies": {} + }, + "mz@2.7.0": { + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "any-promise@1.3.0", + "object-assign": "object-assign@4.1.1", + "thenify-all": "thenify-all@1.6.0" + } + }, + "nanoid@3.3.7": { + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dependencies": {} + }, + "natural-compare@1.4.0": { + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dependencies": {} + }, + "no-case@2.3.2": { + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "lower-case@1.1.4" + } + }, + "node-domexception@1.0.0": { + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dependencies": {} + }, + "node-fetch@2.7.0": { + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "whatwg-url@5.0.0" + } + }, + "node-pg-migrate@7.7.0_@types+pg@8.11.10_pg@8.13.0": { + "integrity": "sha512-TUkdiy1YIofPKX5/kOBdKrmOcABngOJvnN/NWlWq2as86uU5v1kmL5zfqmjeuTAClZk7Rn4EXA2V06b4zcrk7w==", + "dependencies": { + "@types/pg": "@types/pg@8.11.10", + "glob": "glob@11.0.0", + "pg": "pg@8.13.0", + "yargs": "yargs@17.7.2" + } + }, + "nopt@7.2.1": { + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "abbrev@2.0.0" + } + }, + "normalize-path@3.0.0": { + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dependencies": {} + }, + "not@0.1.0": { + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==", + "dependencies": {} + }, + "nth-check@2.1.1": { + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "boolbase@1.0.0" + } + }, + "object-assign@4.1.1": { + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dependencies": {} + }, + "object-hash@3.0.0": { + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dependencies": {} + }, + "object-inspect@1.13.2": { + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dependencies": {} + }, + "object-keys@1.1.1": { + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dependencies": {} + }, + "object.assign@4.1.5": { + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "has-symbols": "has-symbols@1.0.3", + "object-keys": "object-keys@1.1.1" + } + }, + "object.entries@1.1.8": { + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "object.fromentries@2.0.8": { + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "object.values@1.2.0": { + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "obuf@1.1.2": { + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dependencies": {} + }, + "once@1.4.0": { + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "wrappy@1.0.2" + } + }, + "onetime@7.0.0": { + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dependencies": { + "mimic-function": "mimic-function@5.0.1" + } + }, + "openai@4.57.1": { + "integrity": "sha512-7q+4U9A/klaAT40bqL6sPFhIKb4jsUJ8udddCzaf8mdwICYeBG7grps/zDcrOUfkwCxCzR6fxfDDah3WqHoVUA==", + "dependencies": { + "@types/node": "@types/node@18.19.3", + "@types/node-fetch": "@types/node-fetch@2.6.11", + "@types/qs": "@types/qs@6.9.15", + "abort-controller": "abort-controller@3.0.0", + "agentkeepalive": "agentkeepalive@4.5.0", + "form-data-encoder": "form-data-encoder@1.7.2", + "formdata-node": "formdata-node@4.4.1", + "node-fetch": "node-fetch@2.7.0", + "qs": "qs@6.13.0" + } + }, + "optionator@0.9.4": { + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": { + "deep-is": "deep-is@0.1.4", + "fast-levenshtein": "fast-levenshtein@2.0.6", + "levn": "levn@0.4.1", + "prelude-ls": "prelude-ls@1.2.1", + "type-check": "type-check@0.4.0", + "word-wrap": "word-wrap@1.2.5" + } + }, + "ora@8.1.0": { + "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", + "dependencies": { + "chalk": "chalk@5.3.0", + "cli-cursor": "cli-cursor@5.0.0", + "cli-spinners": "cli-spinners@2.9.2", + "is-interactive": "is-interactive@2.0.0", + "is-unicode-supported": "is-unicode-supported@2.1.0", + "log-symbols": "log-symbols@6.0.0", + "stdin-discarder": "stdin-discarder@0.2.2", + "string-width": "string-width@7.2.0", + "strip-ansi": "strip-ansi@7.1.0" + } + }, + "p-limit@3.1.0": { + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "yocto-queue@0.1.0" + } + }, + "p-locate@5.0.0": { + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "p-limit@3.1.0" + } + }, + "package-json-from-dist@1.0.1": { + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dependencies": {} + }, + "param-case@2.1.1": { + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dependencies": { + "no-case": "no-case@2.3.2" + } + }, + "parent-module@1.0.1": { + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "callsites@3.1.0" + } + }, + "parse5-htmlparser2-tree-adapter@7.0.0": { + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "parse5": "parse5@7.1.2" + } + }, + "parse5@7.1.2": { + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "entities@4.5.0" + } + }, + "path-exists@4.0.0": { + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dependencies": {} + }, + "path-is-absolute@1.0.1": { + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dependencies": {} + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dependencies": {} + }, + "path-parse@1.0.7": { + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dependencies": {} + }, + "path-scurry@1.11.1": { + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "lru-cache@10.4.3", + "minipass": "minipass@7.1.2" + } + }, + "path-scurry@2.0.0": { + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dependencies": { + "lru-cache": "lru-cache@11.0.1", + "minipass": "minipass@7.1.2" + } + }, + "path-to-regexp@6.2.1": { + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dependencies": {} + }, + "path-type@4.0.0": { + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dependencies": {} + }, + "pg-cloudflare@1.1.1": { + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "dependencies": {} + }, + "pg-connection-string@2.7.0": { + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", + "dependencies": {} + }, + "pg-int8@1.0.1": { + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dependencies": {} + }, + "pg-numeric@1.0.2": { + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "dependencies": {} + }, + "pg-pool@3.7.0_pg@8.13.0": { + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "dependencies": { + "pg": "pg@8.13.0" + } + }, + "pg-protocol@1.7.0": { + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "dependencies": {} + }, + "pg-types@2.2.0": { + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "pg-int8@1.0.1", + "postgres-array": "postgres-array@2.0.0", + "postgres-bytea": "postgres-bytea@1.0.0", + "postgres-date": "postgres-date@1.0.7", + "postgres-interval": "postgres-interval@1.2.0" + } + }, + "pg-types@4.0.2": { + "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", + "dependencies": { + "pg-int8": "pg-int8@1.0.1", + "pg-numeric": "pg-numeric@1.0.2", + "postgres-array": "postgres-array@3.0.2", + "postgres-bytea": "postgres-bytea@3.0.0", + "postgres-date": "postgres-date@2.1.0", + "postgres-interval": "postgres-interval@3.0.0", + "postgres-range": "postgres-range@1.1.4" + } + }, + "pg@8.13.0": { + "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==", + "dependencies": { + "pg-cloudflare": "pg-cloudflare@1.1.1", + "pg-connection-string": "pg-connection-string@2.7.0", + "pg-pool": "pg-pool@3.7.0_pg@8.13.0", + "pg-protocol": "pg-protocol@1.7.0", + "pg-types": "pg-types@2.2.0", + "pgpass": "pgpass@1.0.5" + } + }, + "pgpass@1.0.5": { + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "split2@4.2.0" + } + }, + "picocolors@1.1.0": { + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dependencies": {} + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dependencies": {} + }, + "picomatch@4.0.2": { + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dependencies": {} + }, + "pify@2.3.0": { + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dependencies": {} + }, + "pirates@4.0.6": { + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dependencies": {} + }, + "plimit-lit@1.6.1": { + "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", + "dependencies": { + "queue-lit": "queue-lit@1.5.2" + } + }, + "possible-typed-array-names@1.0.0": { + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dependencies": {} + }, + "postcss-import@15.1.0_postcss@8.4.47": { + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss": "postcss@8.4.47", + "postcss-value-parser": "postcss-value-parser@4.2.0", + "read-cache": "read-cache@1.0.0", + "resolve": "resolve@1.22.8" + } + }, + "postcss-js@4.0.1_postcss@8.4.47": { + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "camelcase-css@2.0.1", + "postcss": "postcss@8.4.47" + } + }, + "postcss-load-config@4.0.2_postcss@8.4.47": { + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dependencies": { + "lilconfig": "lilconfig@3.1.2", + "postcss": "postcss@8.4.47", + "yaml": "yaml@2.5.1" + } + }, + "postcss-nested@6.2.0_postcss@8.4.47": { + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dependencies": { + "postcss": "postcss@8.4.47", + "postcss-selector-parser": "postcss-selector-parser@6.1.2" + } + }, + "postcss-selector-parser@6.1.2": { + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "cssesc@3.0.0", + "util-deprecate": "util-deprecate@1.0.2" + } + }, + "postcss-value-parser@4.2.0": { + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dependencies": {} + }, + "postcss@8.4.47": { + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dependencies": { + "nanoid": "nanoid@3.3.7", + "picocolors": "picocolors@1.1.0", + "source-map-js": "source-map-js@1.2.1" + } + }, + "postgres-array@2.0.0": { + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dependencies": {} + }, + "postgres-array@3.0.2": { + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", + "dependencies": {} + }, + "postgres-bytea@1.0.0": { + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "dependencies": {} + }, + "postgres-bytea@3.0.0": { + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dependencies": { + "obuf": "obuf@1.1.2" + } + }, + "postgres-date@1.0.7": { + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dependencies": {} + }, + "postgres-date@2.1.0": { + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", + "dependencies": {} + }, + "postgres-interval@1.2.0": { + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "xtend@4.0.2" + } + }, + "postgres-interval@3.0.0": { + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "dependencies": {} + }, + "postgres-range@1.1.4": { + "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==", + "dependencies": {} + }, + "prelude-ls@1.2.1": { + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dependencies": {} + }, + "prop-types@15.8.1": { + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0", + "object-assign": "object-assign@4.1.1", + "react-is": "react-is@16.13.1" + } + }, + "property-information@6.5.0": { + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dependencies": {} + }, + "proto-list@1.2.4": { + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dependencies": {} + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dependencies": {} + }, + "qs@6.13.0": { + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "side-channel@1.0.6" + } + }, + "queue-lit@1.5.2": { + "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==", + "dependencies": {} + }, + "queue-microtask@1.2.3": { + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dependencies": {} + }, + "react-is@16.13.1": { + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dependencies": {} + }, + "read-cache@1.0.0": { + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "pify@2.3.0" + } + }, + "readdirp@3.6.0": { + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "picomatch@2.3.1" + } + }, + "reflect.getprototypeof@1.0.6": { + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "get-intrinsic": "get-intrinsic@1.2.4", + "globalthis": "globalthis@1.0.4", + "which-builtin-type": "which-builtin-type@1.1.4" + } + }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dependencies": {} + }, + "regexp.prototype.flags@1.5.3": { + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-errors": "es-errors@1.3.0", + "set-function-name": "set-function-name@2.0.2" + } + }, + "rehype-minify-attribute-whitespace@4.0.1": { + "integrity": "sha512-QAfUrcZ6KCfpYonDbiWKTRpnVu9DYxFlvXMWWZe4BQbojwjjUbGIg1zoqyInJiJHAdYYyTHN5yJV2THa3opIng==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "collapse-white-space": "collapse-white-space@2.1.0", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "hast-util-is-event-handler": "hast-util-is-event-handler@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-css-style@4.0.1": { + "integrity": "sha512-vIYlkQx0vvstzUk7XKc//i5HOklD7N84jaRq22XzOqxgf8bpGF9Jl90V4T+OUepX110UMEltv1rHl57lpAQjjg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "clean-css": "clean-css@5.3.3", + "hast-util-from-string": "hast-util-from-string@3.0.1", + "hast-util-is-css-style": "hast-util-is-css-style@3.0.1", + "hast-util-to-string": "hast-util-to-string@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-enumerated-attribute@5.0.1": { + "integrity": "sha512-w3mva9U3XwlyjjZ6+epr9NJrpqYamlOQRvttyGQCEmWXqy3DGS3vjQ9KYpqSDEGHS2g4qtGjoq7C7sYYPlzQXQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-select": "hast-util-select@6.0.2", + "html-enumerated-attributes": "html-enumerated-attributes@1.1.1", + "property-information": "property-information@6.5.0", + "space-separated-tokens": "space-separated-tokens@2.0.2", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-event-handler@4.0.1": { + "integrity": "sha512-zDO5GyQqPKP68mGV4lGeCDoVii9eAt4DgqOiyfYIapHA/8YTQHCjJAevrNuBd3+xPg2e9jsH4KE8SpRjjAKfLg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-event-handler": "hast-util-is-event-handler@3.0.1", + "uglify-js": "uglify-js@3.19.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-javascript-script@5.0.1": { + "integrity": "sha512-7kzo/4hJz/6zIdPune/TyaFfA8IEawN3WmEZpw1Sa/iGu0nXwFI07nH45efYdYg/PD8EGNzJfuGqHGzfq0ewhA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-from-string": "hast-util-from-string@3.0.1", + "hast-util-is-javascript": "hast-util-is-javascript@3.0.1", + "hast-util-to-string": "hast-util-to-string@3.0.1", + "uglify-js": "uglify-js@3.19.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-javascript-url@5.0.1": { + "integrity": "sha512-sBaN58Vj/a303tnKVv0fKKJoN9TxpZhw1Jt1k1rQoIxs3SCCjDpIc+VGp4RcqBY4K2F7i1gjbAKYQ1H/7mjUTQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "html-url-attributes": "html-url-attributes@3.0.1", + "uglify-js": "uglify-js@3.19.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-json-script@4.0.1": { + "integrity": "sha512-r4+mqLZvhICFTPGxNykw2uOejnCy0wHtnAZSFHZbOCq5fF0+fr9892o6fdwT7phcXCrLPeZXORRZr48mTyhEBQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-from-string": "hast-util-from-string@3.0.1", + "hast-util-to-string": "hast-util-to-string@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-language@3.0.1": { + "integrity": "sha512-601rocoA1MntPZZsWmPUkNN76nisKbG2JGv8OsacWs8tnpHoE8Ozurm9kp7ddvFjTbYy8xtgJB72s2yPEFhbzg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "bcp-47-normalize": "bcp-47-normalize@2.3.0", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-media-attribute@4.0.1": { + "integrity": "sha512-J6W+RceuJ07PQcHUTBfFEgxw5buGvwY901PQMGSQJBoWkfe7vJhXSPwZJ5EdIeAMbh0vYpc80k//FNfFUhqKXg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "clean-css": "clean-css@5.3.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-meta-color@4.0.1": { + "integrity": "sha512-oWpcdB+fZQNZBvVLSF8Jo7/D+s8y7okJQCJNOu73WF2asXuR5Iz5zmFChujhqTVl4X3Io2yZ9NryJ+2QK/butQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "clean-css": "clean-css@5.3.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-meta-content@4.0.1": { + "integrity": "sha512-81/0V5HIgaSkgzlhi8P9lXh8JkoQ8gZzda+xAIGgK0zRFu9EUYfbzJp/y5pUsV7zZaSWDgr0WhMSs4zyUnRLQA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "comma-separated-tokens": "comma-separated-tokens@2.0.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-style-attribute@4.0.1": { + "integrity": "sha512-J2efUDe9A4AIwCi04HRHnqf2+mZoADZAmnwBmfJKMAjoci1d8nGgTyAhw1uq6XHXzG0wDa3i54o5xoS+4lc5xw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "clean-css": "clean-css@5.3.3", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-minify-whitespace@6.0.2": { + "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-minify-whitespace": "hast-util-minify-whitespace@1.0.1" + } + }, + "rehype-normalize-attribute-value-case@4.0.1": { + "integrity": "sha512-sdsfY4DgVWO3K9lJHdIQHg+ErgSGxpFJX0lIOo0tpChQ+iaJHMITHWCGofLor1NjcxLZeeMTfJ5Aif85kLhL3g==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-parse@9.0.1": { + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-from-html": "hast-util-from-html@2.0.3", + "unified": "unified@11.0.5" + } + }, + "rehype-preset-minify@7.0.0": { + "integrity": "sha512-bZ/k4Th7I3n2+6qOM7fMysvfGWNrSeJ6ACStZpdAnZMIHx50onj4l+fMBfI8oZEOxQXZUINw7L20Hxg/Qr6N4g==", + "dependencies": { + "rehype-minify-attribute-whitespace": "rehype-minify-attribute-whitespace@4.0.1", + "rehype-minify-css-style": "rehype-minify-css-style@4.0.1", + "rehype-minify-enumerated-attribute": "rehype-minify-enumerated-attribute@5.0.1", + "rehype-minify-event-handler": "rehype-minify-event-handler@4.0.1", + "rehype-minify-javascript-script": "rehype-minify-javascript-script@5.0.1", + "rehype-minify-javascript-url": "rehype-minify-javascript-url@5.0.1", + "rehype-minify-json-script": "rehype-minify-json-script@4.0.1", + "rehype-minify-language": "rehype-minify-language@3.0.1", + "rehype-minify-media-attribute": "rehype-minify-media-attribute@4.0.1", + "rehype-minify-meta-color": "rehype-minify-meta-color@4.0.1", + "rehype-minify-meta-content": "rehype-minify-meta-content@4.0.1", + "rehype-minify-style-attribute": "rehype-minify-style-attribute@4.0.1", + "rehype-minify-whitespace": "rehype-minify-whitespace@6.0.2", + "rehype-normalize-attribute-value-case": "rehype-normalize-attribute-value-case@4.0.1", + "rehype-remove-comments": "rehype-remove-comments@6.1.1", + "rehype-remove-duplicate-attribute-values": "rehype-remove-duplicate-attribute-values@4.0.1", + "rehype-remove-empty-attribute": "rehype-remove-empty-attribute@4.0.1", + "rehype-remove-external-script-content": "rehype-remove-external-script-content@4.0.1", + "rehype-remove-meta-http-equiv": "rehype-remove-meta-http-equiv@4.0.1", + "rehype-remove-script-type-javascript": "rehype-remove-script-type-javascript@4.0.1", + "rehype-remove-style-type-css": "rehype-remove-style-type-css@4.0.1", + "rehype-sort-attribute-values": "rehype-sort-attribute-values@5.0.1", + "rehype-sort-attributes": "rehype-sort-attributes@5.0.1", + "unified": "unified@11.0.5" + } + }, + "rehype-preset-minify@7.0.1": { + "integrity": "sha512-yI5Jdfkg8cVar+d5GgqL3HdM1uFOSvnjIOuoJz2U5ZDOSTMrxPrFlh1egNzYNdddwVXakUz9ivKeCuZbATsFDQ==", + "dependencies": { + "rehype-minify-attribute-whitespace": "rehype-minify-attribute-whitespace@4.0.1", + "rehype-minify-css-style": "rehype-minify-css-style@4.0.1", + "rehype-minify-enumerated-attribute": "rehype-minify-enumerated-attribute@5.0.1", + "rehype-minify-event-handler": "rehype-minify-event-handler@4.0.1", + "rehype-minify-javascript-script": "rehype-minify-javascript-script@5.0.1", + "rehype-minify-javascript-url": "rehype-minify-javascript-url@5.0.1", + "rehype-minify-json-script": "rehype-minify-json-script@4.0.1", + "rehype-minify-language": "rehype-minify-language@3.0.1", + "rehype-minify-media-attribute": "rehype-minify-media-attribute@4.0.1", + "rehype-minify-meta-color": "rehype-minify-meta-color@4.0.1", + "rehype-minify-meta-content": "rehype-minify-meta-content@4.0.1", + "rehype-minify-style-attribute": "rehype-minify-style-attribute@4.0.1", + "rehype-minify-whitespace": "rehype-minify-whitespace@6.0.2", + "rehype-normalize-attribute-value-case": "rehype-normalize-attribute-value-case@4.0.1", + "rehype-remove-comments": "rehype-remove-comments@6.1.1", + "rehype-remove-duplicate-attribute-values": "rehype-remove-duplicate-attribute-values@4.0.1", + "rehype-remove-empty-attribute": "rehype-remove-empty-attribute@4.0.1", + "rehype-remove-external-script-content": "rehype-remove-external-script-content@4.0.1", + "rehype-remove-meta-http-equiv": "rehype-remove-meta-http-equiv@4.0.1", + "rehype-remove-script-type-javascript": "rehype-remove-script-type-javascript@4.0.1", + "rehype-remove-style-type-css": "rehype-remove-style-type-css@4.0.1", + "rehype-sort-attribute-values": "rehype-sort-attribute-values@5.0.1", + "rehype-sort-attributes": "rehype-sort-attributes@5.0.1", + "unified": "unified@11.0.5" + } + }, + "rehype-remove-comments@6.1.1": { + "integrity": "sha512-O3OAvqpV8IUJf6+Q4s5nqaKQqrgeXdU/+0fjUHMO0KAB4SwkMdN34NJQC9hexwvjYE00tX/xB8GvnVJI8Cdf6g==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-conditional-comment": "hast-util-is-conditional-comment@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-duplicate-attribute-values@4.0.1": { + "integrity": "sha512-CwSTYj6Oxs/CzfMvzwJeTyqKegiYMr1L8y4PUlbAicnZm0Ex1DzDKlTmW8ik6jDOL4SzA6+f4PRkt6t4bJBM9Q==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-empty-attribute@4.0.1": { + "integrity": "sha512-DumltSgLRNKSecLa9+amnr72Qn70D9mwnm/1Y1FcSiyXLcfrbXaM9bvTwpGGIhDPdyUp1khEDGxx1MnD2PPV2Q==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "hast-util-is-event-handler": "hast-util-is-event-handler@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-external-script-content@4.0.1": { + "integrity": "sha512-wt+ONr0EY97RUMcI7J+oUuyuTu8AbMGIxApNdfaYi+/zYQfqre0LEvMuuaCSG6hRbmo22nr0a2FeKNmo6bYfNw==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-javascript": "hast-util-is-javascript@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-meta-http-equiv@4.0.1": { + "integrity": "sha512-BtnEEEjxFzj8ywdvY5iBoOWINFUPFHa73hdFRA/1niho82KeB7jZCbetDNX4nE4B16aooSuPUiKtM3J1WnDhiA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "space-separated-tokens": "space-separated-tokens@2.0.2", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-script-type-javascript@4.0.1": { + "integrity": "sha512-YtFejlGvyZE1tbpGav6RThBuVcfLMV9IAG8CDf8wXENIu3qJyegyC+HFz80MZPxw3mQKsZHAOHYE3G4LoOcGzg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-javascript": "hast-util-is-javascript@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-remove-style-type-css@4.0.1": { + "integrity": "sha512-vMTQu+QjkzpzftOGzr6tmk/tA9V/JsfYlPz1APjrsjWl4el5ySJjKKjZiSVmxKUZDO6cDNVZQm+2ldODyoN4wg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-css-link": "hast-util-is-css-link@3.0.1", + "hast-util-is-css-style": "hast-util-is-css-style@3.0.1", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-sort-attribute-values@5.0.1": { + "integrity": "sha512-lU3ABJO5frbUgV132YS6SL7EISf//irIm9KFMaeu5ixHfgWf6jhe+09Uf/Ef8pOYUJWKOaQJDRJGCXs6cNsdsQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-is-element": "hast-util-is-element@3.0.0", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-sort-attributes@5.0.1": { + "integrity": "sha512-Bxo+AKUIELcnnAZwJDt5zUDDRpt4uzhfz9d0PVGhcxYWsbFj5Cv35xuWxu5r1LeYNFNhgGqsr9Q2QiIOM/Qctg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "unist-util-visit": "unist-util-visit@5.0.0" + } + }, + "rehype-stringify@10.0.0": { + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-to-html": "hast-util-to-html@9.0.3", + "unified": "unified@11.0.5" + } + }, + "rehype-stringify@10.0.1": { + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "hast-util-to-html": "hast-util-to-html@9.0.3", + "unified": "unified@11.0.5" + } + }, + "rehype@13.0.1": { + "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "rehype-parse": "rehype-parse@9.0.1", + "rehype-stringify": "rehype-stringify@10.0.1", + "unified": "unified@11.0.5" + } + }, + "rehype@13.0.2": { + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "dependencies": { + "@types/hast": "@types/hast@3.0.4", + "rehype-parse": "rehype-parse@9.0.1", + "rehype-stringify": "rehype-stringify@10.0.1", + "unified": "unified@11.0.5" + } + }, + "relateurl@0.2.7": { + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dependencies": {} + }, + "remark-parse@11.0.0": { + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4", + "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.1", + "micromark-util-types": "micromark-util-types@2.0.0", + "unified": "unified@11.0.5" + } + }, + "remark-stringify@11.0.0": { + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "@types/mdast@4.0.4", + "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0", + "unified": "unified@11.0.5" + } + }, + "require-directory@2.1.1": { + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dependencies": {} + }, + "resolve-from@4.0.0": { + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dependencies": {} + }, + "resolve@1.22.8": { + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "is-core-module@2.15.1", + "path-parse": "path-parse@1.0.7", + "supports-preserve-symlinks-flag": "supports-preserve-symlinks-flag@1.0.0" + } + }, + "resolve@2.0.0-next.5": { + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "is-core-module@2.15.1", + "path-parse": "path-parse@1.0.7", + "supports-preserve-symlinks-flag": "supports-preserve-symlinks-flag@1.0.0" + } + }, + "restore-cursor@5.1.0": { + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dependencies": { + "onetime": "onetime@7.0.0", + "signal-exit": "signal-exit@4.1.0" + } + }, + "reusify@1.0.4": { + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dependencies": {} + }, + "rimraf@3.0.2": { + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "glob@7.2.3" + } + }, + "run-parallel@1.2.0": { + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dependencies": { + "queue-microtask": "queue-microtask@1.2.3" + } + }, + "safe-array-concat@1.1.2": { + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "get-intrinsic": "get-intrinsic@1.2.4", + "has-symbols": "has-symbols@1.0.3", + "isarray": "isarray@2.0.5" + } + }, + "safe-regex-test@1.0.3": { + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "is-regex": "is-regex@1.1.4" + } + }, + "semver@6.3.1": { + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dependencies": {} + }, + "semver@7.6.3": { + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dependencies": {} + }, + "set-function-length@1.2.2": { + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "define-data-property@1.1.4", + "es-errors": "es-errors@1.3.0", + "function-bind": "function-bind@1.1.2", + "get-intrinsic": "get-intrinsic@1.2.4", + "gopd": "gopd@1.0.1", + "has-property-descriptors": "has-property-descriptors@1.0.2" + } + }, + "set-function-name@2.0.2": { + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "define-data-property@1.1.4", + "es-errors": "es-errors@1.3.0", + "functions-have-names": "functions-have-names@1.2.3", + "has-property-descriptors": "has-property-descriptors@1.0.2" + } + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "shebang-regex@3.0.0" + } + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dependencies": {} + }, + "side-channel@1.0.6": { + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "get-intrinsic": "get-intrinsic@1.2.4", + "object-inspect": "object-inspect@1.13.2" + } + }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dependencies": {} + }, + "slash@3.0.0": { + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dependencies": {} + }, + "slick@1.12.2": { + "integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==", + "dependencies": {} + }, + "slug@9.1.0": { + "integrity": "sha512-ioOsCfzQSu+D6NZ8XMCR8IW9FgvF8W7Xzz56hBkB/ALvNaWeBs2MUvvPugq3GCrxfHPFeK6hAxGkY/WLnfX2Lg==", + "dependencies": {} + }, + "source-map-js@1.2.1": { + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dependencies": {} + }, + "source-map@0.6.1": { + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dependencies": {} + }, + "space-separated-tokens@2.0.2": { + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dependencies": {} + }, + "split2@4.2.0": { + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dependencies": {} + }, + "stdin-discarder@0.2.2": { + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dependencies": {} + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "emoji-regex@8.0.0", + "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "string-width@5.1.2": { + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "eastasianwidth@0.2.0", + "emoji-regex": "emoji-regex@9.2.2", + "strip-ansi": "strip-ansi@7.1.0" + } + }, + "string-width@7.2.0": { + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dependencies": { + "emoji-regex": "emoji-regex@10.4.0", + "get-east-asian-width": "get-east-asian-width@1.2.0", + "strip-ansi": "strip-ansi@7.1.0" + } + }, + "string.prototype.matchall@4.0.11": { + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-errors": "es-errors@1.3.0", + "es-object-atoms": "es-object-atoms@1.0.0", + "get-intrinsic": "get-intrinsic@1.2.4", + "gopd": "gopd@1.0.1", + "has-symbols": "has-symbols@1.0.3", + "internal-slot": "internal-slot@1.0.7", + "regexp.prototype.flags": "regexp.prototype.flags@1.5.3", + "set-function-name": "set-function-name@2.0.2", + "side-channel": "side-channel@1.0.6" + } + }, + "string.prototype.repeat@1.0.0": { + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dependencies": { + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3" + } + }, + "string.prototype.trim@1.2.9": { + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.23.3", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "string.prototype.trimend@1.0.8": { + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "string.prototype.trimstart@1.0.8": { + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "define-properties": "define-properties@1.2.1", + "es-object-atoms": "es-object-atoms@1.0.0" + } + }, + "stringify-entities@4.0.4": { + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "character-entities-html4@2.1.0", + "character-entities-legacy": "character-entities-legacy@3.0.0" + } + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "ansi-regex@5.0.1" + } + }, + "strip-ansi@7.1.0": { + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "ansi-regex@6.1.0" + } + }, + "strip-json-comments@3.1.1": { + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dependencies": {} + }, + "sucrase@3.35.0": { + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "@jridgewell/gen-mapping@0.3.5", + "commander": "commander@4.1.1", + "glob": "glob@10.3.10", + "lines-and-columns": "lines-and-columns@1.2.4", + "mz": "mz@2.7.0", + "pirates": "pirates@4.0.6", + "ts-interface-checker": "ts-interface-checker@0.1.13" + } + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "has-flag@4.0.0" + } + }, + "supports-preserve-symlinks-flag@1.0.0": { + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dependencies": {} + }, + "tailwindcss@3.4.13_postcss@8.4.47": { + "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "dependencies": { + "@alloc/quick-lru": "@alloc/quick-lru@5.2.0", + "arg": "arg@5.0.2", + "chokidar": "chokidar@3.6.0", + "didyoumean": "didyoumean@1.2.2", + "dlv": "dlv@1.1.3", + "fast-glob": "fast-glob@3.3.2", + "glob-parent": "glob-parent@6.0.2", + "is-glob": "is-glob@4.0.3", + "jiti": "jiti@1.21.6", + "lilconfig": "lilconfig@2.1.0", + "micromatch": "micromatch@4.0.8", + "normalize-path": "normalize-path@3.0.0", + "object-hash": "object-hash@3.0.0", + "picocolors": "picocolors@1.1.0", + "postcss": "postcss@8.4.47", + "postcss-import": "postcss-import@15.1.0_postcss@8.4.47", + "postcss-js": "postcss-js@4.0.1_postcss@8.4.47", + "postcss-load-config": "postcss-load-config@4.0.2_postcss@8.4.47", + "postcss-nested": "postcss-nested@6.2.0_postcss@8.4.47", + "postcss-selector-parser": "postcss-selector-parser@6.1.2", + "resolve": "resolve@1.22.8", + "sucrase": "sucrase@3.35.0" + } + }, + "text-table@0.2.0": { + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dependencies": {} + }, + "thenify-all@1.6.0": { + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": "thenify@3.3.1" + } + }, + "thenify@3.3.1": { + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "any-promise@1.3.0" + } + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "is-number@7.0.0" + } + }, + "tr46@0.0.3": { + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dependencies": {} + }, + "trim-lines@3.0.1": { + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dependencies": {} + }, + "trough@2.2.0": { + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dependencies": {} + }, + "ts-api-utils@1.3.0_typescript@5.6.2": { + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dependencies": { + "typescript": "typescript@5.6.2" + } + }, + "ts-interface-checker@0.1.13": { + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dependencies": {} + }, + "tsc-alias@1.8.10": { + "integrity": "sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==", + "dependencies": { + "chokidar": "chokidar@3.6.0", + "commander": "commander@9.5.0", + "globby": "globby@11.1.0", + "mylas": "mylas@2.1.13", + "normalize-path": "normalize-path@3.0.0", + "plimit-lit": "plimit-lit@1.6.1" + } + }, + "type-check@0.4.0": { + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "prelude-ls@1.2.1" + } + }, + "type-fest@0.20.2": { + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dependencies": {} + }, + "type-fest@0.21.3": { + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dependencies": {} + }, + "type-fest@4.26.1": { + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "dependencies": {} + }, + "typed-array-buffer@1.0.2": { + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "es-errors": "es-errors@1.3.0", + "is-typed-array": "is-typed-array@1.1.13" + } + }, + "typed-array-byte-length@1.0.1": { + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "for-each": "for-each@0.3.3", + "gopd": "gopd@1.0.1", + "has-proto": "has-proto@1.0.3", + "is-typed-array": "is-typed-array@1.1.13" + } + }, + "typed-array-byte-offset@1.0.2": { + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "available-typed-arrays@1.0.7", + "call-bind": "call-bind@1.0.7", + "for-each": "for-each@0.3.3", + "gopd": "gopd@1.0.1", + "has-proto": "has-proto@1.0.3", + "is-typed-array": "is-typed-array@1.1.13" + } + }, + "typed-array-length@1.0.6": { + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "for-each": "for-each@0.3.3", + "gopd": "gopd@1.0.1", + "has-proto": "has-proto@1.0.3", + "is-typed-array": "is-typed-array@1.1.13", + "possible-typed-array-names": "possible-typed-array-names@1.0.0" + } + }, + "typescript@5.6.2": { + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dependencies": {} + }, + "uglify-js@3.19.3": { + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dependencies": {} + }, + "unbox-primitive@1.0.2": { + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "call-bind@1.0.7", + "has-bigints": "has-bigints@1.0.2", + "has-symbols": "has-symbols@1.0.3", + "which-boxed-primitive": "which-boxed-primitive@1.0.2" + } + }, + "undici-types@5.26.5": { + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dependencies": {} + }, + "undici-types@6.19.8": { + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dependencies": {} + }, + "unified@11.0.5": { + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "bail": "bail@2.0.2", + "devlop": "devlop@1.1.0", + "extend": "extend@3.0.2", + "is-plain-obj": "is-plain-obj@4.1.0", + "trough": "trough@2.2.0", + "vfile": "vfile@6.0.3" + } + }, + "unist-util-is@6.0.0": { + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3" + } + }, + "unist-util-position@5.0.0": { + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3" + } + }, + "unist-util-stringify-position@4.0.0": { + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3" + } + }, + "unist-util-visit-parents@6.0.1": { + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "unist-util-is": "unist-util-is@6.0.0" + } + }, + "unist-util-visit@5.0.0": { + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "unist-util-is": "unist-util-is@6.0.0", + "unist-util-visit-parents": "unist-util-visit-parents@6.0.1" + } + }, + "upper-case@1.1.3": { + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dependencies": {} + }, + "uri-js@4.4.1": { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "punycode@2.3.1" + } + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dependencies": {} + }, + "valid-data-url@3.0.1": { + "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==", + "dependencies": {} + }, + "vfile-location@5.0.3": { + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "vfile": "vfile@6.0.3" + } + }, + "vfile-message@4.0.2": { + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "unist-util-stringify-position": "unist-util-stringify-position@4.0.0" + } + }, + "vfile@6.0.3": { + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "@types/unist@3.0.3", + "vfile-message": "vfile-message@4.0.2" + } + }, + "web-namespaces@2.0.1": { + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dependencies": {} + }, + "web-resource-inliner@6.0.1": { + "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==", + "dependencies": { + "ansi-colors": "ansi-colors@4.1.3", + "escape-goat": "escape-goat@3.0.0", + "htmlparser2": "htmlparser2@5.0.1", + "mime": "mime@2.6.0", + "node-fetch": "node-fetch@2.7.0", + "valid-data-url": "valid-data-url@3.0.1" + } + }, + "web-streams-polyfill@4.0.0-beta.3": { + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dependencies": {} + }, + "webidl-conversions@3.0.1": { + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dependencies": {} + }, + "whatwg-url@5.0.0": { + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "tr46@0.0.3", + "webidl-conversions": "webidl-conversions@3.0.1" + } + }, + "which-boxed-primitive@1.0.2": { + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "is-bigint@1.0.4", + "is-boolean-object": "is-boolean-object@1.1.2", + "is-number-object": "is-number-object@1.0.7", + "is-string": "is-string@1.0.7", + "is-symbol": "is-symbol@1.0.4" + } + }, + "which-builtin-type@1.1.4": { + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dependencies": { + "function.prototype.name": "function.prototype.name@1.1.6", + "has-tostringtag": "has-tostringtag@1.0.2", + "is-async-function": "is-async-function@2.0.0", + "is-date-object": "is-date-object@1.0.5", + "is-finalizationregistry": "is-finalizationregistry@1.0.2", + "is-generator-function": "is-generator-function@1.0.10", + "is-regex": "is-regex@1.1.4", + "is-weakref": "is-weakref@1.0.2", + "isarray": "isarray@2.0.5", + "which-boxed-primitive": "which-boxed-primitive@1.0.2", + "which-collection": "which-collection@1.0.2", + "which-typed-array": "which-typed-array@1.1.15" + } + }, + "which-collection@1.0.2": { + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dependencies": { + "is-map": "is-map@2.0.3", + "is-set": "is-set@2.0.3", + "is-weakmap": "is-weakmap@2.0.2", + "is-weakset": "is-weakset@2.0.3" + } + }, + "which-typed-array@1.1.15": { + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "available-typed-arrays@1.0.7", + "call-bind": "call-bind@1.0.7", + "for-each": "for-each@0.3.3", + "gopd": "gopd@1.0.1", + "has-tostringtag": "has-tostringtag@1.0.2" + } + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, + "word-wrap@1.2.5": { + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dependencies": {} + }, + "wrap-ansi@6.2.0": { + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "wrap-ansi@7.0.0": { + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "wrap-ansi@8.1.0": { + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "ansi-styles@6.2.1", + "string-width": "string-width@5.1.2", + "strip-ansi": "strip-ansi@7.1.0" + } + }, + "wrappy@1.0.2": { + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dependencies": {} + }, + "ws@8.18.0": { + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dependencies": {} + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dependencies": {} + }, + "y18n@5.0.8": { + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dependencies": {} + }, + "yaml@2.5.1": { + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dependencies": {} + }, + "yargs-parser@21.1.1": { + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dependencies": {} + }, + "yargs@17.7.2": { + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "cliui@8.0.1", + "escalade": "escalade@3.2.0", + "get-caller-file": "get-caller-file@2.0.5", + "require-directory": "require-directory@2.1.1", + "string-width": "string-width@4.2.3", + "y18n": "y18n@5.0.8", + "yargs-parser": "yargs-parser@21.1.1" + } + }, + "yocto-queue@0.1.0": { + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dependencies": {} + }, + "yoctocolors-cjs@2.1.2": { + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dependencies": {} + }, + "zod@3.23.8": { + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dependencies": {} + }, + "zwitch@2.0.4": { + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dependencies": {} + } + } + }, + "redirects": { + "https://deno.land/x/zod/mod.ts": "https://deno.land/x/zod@v3.23.8/mod.ts", + "https://esm.sh/gh/actcoding/denomailer": "https://esm.sh/gh/actcoding/denomailer@3662edd173", + "https://esm.sh/mjml-browser": "https://esm.sh/mjml-browser@4.15.3", + "https://esm.sh/v135/@types/mjml": "https://esm.sh/v135/@types/mjml@4.7.4", + "https://esm.sh/v135/@types/mjml-browser@~4.15/index.d.ts": "https://esm.sh/v135/@types/mjml-browser@4.15.0/index.d.ts", + "https://esm.sh/v135/@types/mjml@": "https://esm.sh/v135/@types/mjml@4.7.4", + "https://esm.sh/v135/@types/mjml@4.7.4": "https://esm.sh/v135/@types/mjml@4.7.4/index.d.ts" + }, + "remote": { + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/basic/QUE.ts": "5af1dfcc5814bf4542f098908ac1fdd8a1a1c2b1597138a121c95eaa791315d0", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/basic/client.ts": "b89110ffdef6e79a66af8952b60af2396887374f6a7c9ba2b4a8afd6c12802d6", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/basic/connection.ts": "68de68d7551d8303629905c2b7581cb09b45646e530ce93a5786ca1aba61055c", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/basic/transforms.ts": "e630a23d24e9b397e231ae8796c0a0080770ac6f5ab9bffc105d3717706e62c9", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/mod.ts": "8ec4c25d9586f83f8629768311a077eaf03b1490dcb872030ba2e27fadb674d8", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/pool.ts": "0466e69ca8959aa85501cc6b30d7f5fd8e43b0a6ac88ecc60dab71081e801bae", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/client/worker/worker.ts": "a4c3a3e2e1fde0967817ece7c345a565eb44a7312acf8d46ce620d4ff4443b31", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/client.ts": "302f5c18fbb5531b5615613084b86d44120acc210e072f4135e431fa27fc4526", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/attachments.ts": "1f357bddc9d5e813c3f647498db81a165a1a8a7163116c58dc10cf01427fd81e", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/content.ts": "3925d4c3baaabed4e08933159d34b1450e6426b35a5bc323a0666780bef20192", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/email.ts": "bb0ca104bf9cb54af6613a04b3f8cb05290f4fb012e7113f1d050cab10226a7c", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/encoding.ts": "3a0d5630e3f307fb525a30953a6e0d78c9ed9aff4c8cd7da1ae7dde2f1aa41ae", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/headers.ts": "ce94874beb5a1a7248b5b91bf1ae3b3aed2d4c0541f3f448f2bbfad6c8f570ee", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/config/mail/mod.ts": "a7fafa3386a45a585d7983d816b09ddc28b2f2b84097a614f1e38685b1f62868", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/deps.ts": "d566cc5f41610053952dad89daf3f24c956b07b71512edec823873e1e89199e1", + "https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/mod.ts": "71a197dff098194ab53691abd3c9d22a276ef04e1382eb85f5632dbcb5a83bf3", + "https://deno.land/std@0.177.0/encoding/base64.ts": "7de04c2f8aeeb41453b09b186480be90f2ff357613b988e99fabb91d2eeceba1", + "https://deno.land/x/oak@v17.0.0/application.ts": "f6b48422d3207a4cfbd4f535fd54999dc41e33a42e08447fe166fac8c0d07067", + "https://deno.land/x/oak@v17.0.0/body.ts": "f84e31e923fdadc3463519a4ab5409083d00281ae4cae00b9594af3e808f3007", + "https://deno.land/x/oak@v17.0.0/context.ts": "345cfdaa5a2310558ee0863f2fba5f9ba648188412b16ce342c33266c085f5d3", + "https://deno.land/x/oak@v17.0.0/deps.ts": "b778c76e91d6d2afe6124981212b6dc3d0b195739ea01857a45396dc78812b59", + "https://deno.land/x/oak@v17.0.0/http_server_bun.ts": "cb3a66c735cd0533c4c3776b37ae627ab42344c82f91dff63e3030d9656fd3a0", + "https://deno.land/x/oak@v17.0.0/http_server_native.ts": "3bea00ebb9638203d2449fbf9a14a6b87f119bd45012f13282ececdf7b4c4242", + "https://deno.land/x/oak@v17.0.0/http_server_native_request.ts": "a4da6f4939736e6323720db2d4b0d19ff2e83f02e52ab1eea9ae80f2c047fa56", + "https://deno.land/x/oak@v17.0.0/http_server_node.ts": "9bb5291c15305b297fd634aa4c6b1d5054368f4b7a171d7c7c302c73eb2489ed", + "https://deno.land/x/oak@v17.0.0/middleware.ts": "4170180fe5009d2581a0bdc995e5953b90ccb5b1c3767f3eae8a4fe238b8bd81", + "https://deno.land/x/oak@v17.0.0/middleware/etag.ts": "34a31c3d1c0cafcf331361cc54a882e5c6efe5757e9ab9bad3b83412c31431bc", + "https://deno.land/x/oak@v17.0.0/middleware/proxy.ts": "a0b4964509d4320735ffbe52ae2629c78e302dd9b934fcf2ddf189d491469892", + "https://deno.land/x/oak@v17.0.0/middleware/serve.ts": "efceebd70afb73bcabe0a6a8981f3d8474a2f2f30e85b46761aee49e81bd9d6a", + "https://deno.land/x/oak@v17.0.0/mod.ts": "38e53e01e609583e843f3e2b2677de9872d23d68939ce0de85b402e7a8db01a7", + "https://deno.land/x/oak@v17.0.0/node_shims.ts": "4db1569b2b79b73f37c4d947f4aaa50a93e266d48fe67601c8a31af17a28884d", + "https://deno.land/x/oak@v17.0.0/request.ts": "1e7f2c338cd6889b616bbdc9e2062eac27acbffde05c685adfb1c60ecc80682a", + "https://deno.land/x/oak@v17.0.0/response.ts": "bc47174d3d797ffc802f40fba006c16de8390e776a36f6f4a4d4f58b278bf36f", + "https://deno.land/x/oak@v17.0.0/router.ts": "882f36a576e280b0d617cc174feca320f02deed77bdea8264444ba8b55cc0422", + "https://deno.land/x/oak@v17.0.0/send.ts": "a207e48ff384bf9713edfe4d1e35a89800c349b9b622d38a1f5512fd5b79e745", + "https://deno.land/x/oak@v17.0.0/testing.ts": "2b80f231aa2207ecdee690da46e230d1e5375d95b268dfaa5205b2b2f6cc740f", + "https://deno.land/x/oak@v17.0.0/types.ts": "cd4ccd3e182d0cba2117cd27f560267970470ab9c0ff6556cadd73f605193be7", + "https://deno.land/x/oak@v17.0.0/utils/clone_state.ts": "cf8989ddd56816b36ada253ae0acdbd46cdf3d68dbe674d2b66c46640fab3500", + "https://deno.land/x/oak@v17.0.0/utils/consts.ts": "137c4f73479f5e98a13153b9305f06f0d85df3cf2aacad2c9f82d4c1f3a2f105", + "https://deno.land/x/oak@v17.0.0/utils/create_promise_with_resolvers.ts": "de99e9a998162b929a011f8873eaf0895cf4742492b3ce6f6866d39217342523", + "https://deno.land/x/oak@v17.0.0/utils/decode_component.ts": "d3e2c40ecdd2fdb79761c6e9ae224cf01a4643f7c5f4c1e0b69698d43025261b", + "https://deno.land/x/oak@v17.0.0/utils/encode_url.ts": "c0ed6b318eb9523adeebba32eb9acd059c0f94d3511b2b9e3b024722d1b3dfb8", + "https://deno.land/x/oak@v17.0.0/utils/resolve_path.ts": "aa39d54a003b38fee55f340a0cba3f93a7af85b8ddd5fbfb049a98fc0109b36d", + "https://deno.land/x/oak@v17.0.0/utils/streams.ts": "6d55543fdeddc3c9c6f512de227b9b33ff4b0ec5e320edc109f0cbf9bef8963f", + "https://deno.land/x/oak@v17.0.0/utils/type_guards.ts": "a1b42aa4c431c4c07d3f8a45a2142020f86d5a3e1e319af94fdf2f4c6c72465f", + "https://deno.land/x/zod@v3.23.8/ZodError.ts": "528da200fbe995157b9ae91498b103c4ef482217a5c086249507ac850bd78f52", + "https://deno.land/x/zod@v3.23.8/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.23.8/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.23.8/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.23.8/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.23.8/helpers/parseUtil.ts": "c14814d167cc286972b6e094df88d7d982572a08424b7cd50f862036b6fcaa77", + "https://deno.land/x/zod@v3.23.8/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", + "https://deno.land/x/zod@v3.23.8/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.23.8/helpers/util.ts": "30c273131661ca5dc973f2cfb196fa23caf3a43e224cdde7a683b72e101a31fc", + "https://deno.land/x/zod@v3.23.8/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", + "https://deno.land/x/zod@v3.23.8/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", + "https://deno.land/x/zod@v3.23.8/mod.ts": "ec6e2b1255c1a350b80188f97bd0a6bac45801bb46fc48f50b9763aa66046039", + "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", + "https://esm.sh/gh/actcoding/denomailer@v1.6.1/mod.ts": "680f7a72e9223b0f433633bf85578471e04abb7155d51dbf2fa22c5a1dd0d964", + "https://esm.sh/mjml-browser@4.15.3": "b22c04f0c2bee610d2d5633936faf2de1f6dda98ad3723508cd81fc898812f38", + "https://esm.sh/standardwebhooks@1.0.0": "8738bff80210a0144cb3aea0e6646eb47d127812bc6c3ef067ada731ee22ed86", + "https://esm.sh/v135/@stablelib/base64@1.0.1/denonext/base64.mjs": "2aa9927b4f4e9ae456aa7e03f730c6c715d90cece8e54d7a09ca1fe9d894e966", + "https://esm.sh/v135/fast-sha256@1.3.0/denonext/fast-sha256.mjs": "580bba94ab81b091a8bfb1c933a8f18e7b186ee96e3fc70c19fcc2d888a5bcb4", + "https://esm.sh/v135/gh/actcoding/denomailer@v1.6.1/denonext/mod.ts.js": "9eeb2337d7bf08758bac5b85ffa63ca8d0a005fecea9469991e0c2942abb062d", + "https://esm.sh/v135/mjml-browser@4.15.3/denonext/mjml-browser.mjs": "4ea50f54a3315757f028483731867fee31650f148005f63b39b58b39001b88a6", + "https://esm.sh/v135/standardwebhooks@1.0.0/denonext/standardwebhooks.mjs": "f32c55607cf6f0df49177f960796b43014004b80f904ced5da801b1446986b71" + }, + "workspace": { + "dependencies": [ + "jsr:@supabase/supabase-js@^2.45.4" + ], + "packageJson": { + "dependencies": [ + "npm:@actcoding/eslint-config@^0.0.7", + "npm:@inquirer/confirm@^3.1.20", + "npm:@inquirer/input@^2.2.7", + "npm:@inquirer/password@^2.1.20", + "npm:@inquirer/select@^2.4.7", + "npm:@types/bun@^1.1.6", + "npm:@types/ejs@^3.1.5", + "npm:@types/espree@^10.1.0", + "npm:@types/hast@^3.0.4", + "npm:@types/mjml@^4.7.4", + "npm:@types/node@^20.0.0", + "npm:@types/pg@^8.11.6", + "npm:@types/slug@^5.0.8", + "npm:acorn@^8.12.1", + "npm:commander@^12.1.0", + "npm:comment-parser@^1.4.1", + "npm:dayjs@^1.11.12", + "npm:dot-prop@^9.0.0", + "npm:dotenv@^16.4.5", + "npm:ejs@^3.1.10", + "npm:eslint@^9.8.0", + "npm:espree@^10.1.0", + "npm:glob@^11.0.0", + "npm:hast-util-select@^6.0.2", + "npm:jose@^5.6.3", + "npm:mjml@^4.15.3", + "npm:node-pg-migrate@^7.6.0", + "npm:ora@^8.0.1", + "npm:pg@^8.12.0", + "npm:rehype-preset-minify@^7.0.0", + "npm:rehype-stringify@^10.0.0", + "npm:rehype@^13.0.1", + "npm:remark-parse@^11.0.0", + "npm:remark-stringify@^11.0.0", + "npm:slug@^9.1.0", + "npm:tsc-alias@^1.8.10", + "npm:typescript@^5.5.4", + "npm:unified@^11.0.5", + "npm:zod@^3.23.8" + ] + } + } +} diff --git a/supabase/config.toml b/supabase/config.toml index 8a0f073..e0118b0 100644 --- a/supabase/config.toml +++ b/supabase/config.toml @@ -83,9 +83,9 @@ enabled = true enabled = true # The base URL of your website. Used as an allow-list for redirects and for constructing URLs used # in emails. -site_url = "http://127.0.0.1:3000" +site_url = "http://localhost:5173" # A list of *exact* URLs that auth providers are permitted to redirect to post authentication. -additional_redirect_urls = ["https://127.0.0.1:3000"] +additional_redirect_urls = ["https://localhost:5173"] # How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week). jwt_expiry = 3600 # If disabled, the refresh token will never expire. @@ -107,18 +107,18 @@ enable_signup = true # addresses. If disabled, only the new email is required to confirm. double_confirm_changes = true # If enabled, users need to confirm their email address before signing in. -enable_confirmations = false +enable_confirmations = true # Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email. max_frequency = "1s" # Use a production-ready SMTP server -# [auth.email.smtp] -# host = "smtp.sendgrid.net" -# port = 587 -# user = "apikey" -# pass = "env(SENDGRID_API_KEY)" -# admin_email = "admin@email.com" -# sender_name = "Admin" +[auth.email.smtp] +host = "env(SMTP_HOST)" +port = 465 +user = "env(SMTP_USER)" +pass = "env(SMTP_PASSWORD)" +admin_email = "env(SMTP_FROM_ADDRESS)" +sender_name = "env(SMTP_FROM_NAME)" [auth.email.template.invite] content_path = "./supabase/emails/invite.mjml.html" @@ -138,11 +138,6 @@ content_path = "./supabase/emails/email_change.mjml.html" [auth.email.template.reauthentication] content_path = "./supabase/emails/reauthentication.mjml.html" -# Uncomment to customize email template -# [auth.email.template.invite] -# subject = "You have been invited" -# content_path = "./supabase/templates/invite.html" - [auth.sms] # Allow/disallow new user signups via SMS to your project. enable_signup = true @@ -165,9 +160,10 @@ max_frequency = "5s" # inactivity_timeout = "8h" # This hook runs before a token is issued and allows you to add additional claims based on the authentication method used. -# [auth.hook.custom_access_token] -# enabled = true -# uri = "pg-functions:////" +[auth.hook.send_email] +enabled = true +uri = "http://host.docker.internal:54321/functions/v1/send-email" +secrets = "env(SEND_EMAIL_HOOK_SECRET)" # Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`. [auth.sms.twilio] diff --git a/supabase/emails/confirmation.mjml b/supabase/emails/confirmation.mjml deleted file mode 100644 index 1e3a50d..0000000 --- a/supabase/emails/confirmation.mjml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - Hello World - - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - - - - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - - - - - - - - - - Footer - - - - - - - - - - Copyright (c) [NAME] [YEAR] - - - - - - - diff --git a/supabase/emails/signup.mjml b/supabase/emails/signup.mjml new file mode 100644 index 0000000..b12123b --- /dev/null +++ b/supabase/emails/signup.mjml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + Signup Request + + + Hello there! We have received a request to create a new account using your email address <%= locals.email %> + + + + Please use the following link to confirm and activate your account: + + + + + + Confirm my account + + + + + + If you believe this is an error, you can safely delete this email. + + + + + + + + + + Footer + + + + + + + + + + Copyright (c) act coding GbR <%= new Date().getFullYear() %> + + + + + + diff --git a/supabase/functions/send-email/compiler/compiler.ts b/supabase/functions/send-email/compiler/compiler.ts new file mode 100644 index 0000000..c8234ca --- /dev/null +++ b/supabase/functions/send-email/compiler/compiler.ts @@ -0,0 +1,30 @@ +// @deno-types="npm:@types/mjml@4.7.4" +import mjml2html from 'npm:mjml@4.15.3' + +// @deno-types="npm:@types/ejs@3.1.5" +import ejs from 'npm:ejs@3.1.10' + +type Props = { + source: string + data: Record +} + +export async function compile({ source, data }: Props) { + const template = ejs.compile(source, { + async: true, + beautify: false, + cache: false, + strict: true, + }) + + const mjml = await template(data) + const { errors, html } = mjml2html(mjml, { + filePath: Deno.cwd() + }) + + if (errors.length > 0) { + return errors + } + + return html +} diff --git a/supabase/functions/send-email/compiler/index.ts b/supabase/functions/send-email/compiler/index.ts new file mode 100644 index 0000000..44297d7 --- /dev/null +++ b/supabase/functions/send-email/compiler/index.ts @@ -0,0 +1,65 @@ +import { SupabaseClient } from 'jsr:@supabase/supabase-js@2' +import { MJMLParseError } from 'npm:mjml-core@4.15.3' +import { compile } from './compiler.ts' +import { EmailPayload } from './types.ts' +import { rehype } from 'npm:rehype@13.0.2' +import rehypeMinify from 'npm:rehype-preset-minify@7.0.0' +import rehypeStringify from 'npm:rehype-stringify@10.0.0' +import inlineImages from './inline-images.ts'; + +export type CompilerConfig = { + supabase: SupabaseClient + payload: EmailPayload + bucket: string +} + +type Result = + | { + html: string + errors: null + } + | { + html: null + errors: MJMLParseError[] + } + +export default async function compileEmail(config: CompilerConfig): Promise { + const { supabase, bucket, payload } = config + if (payload.user.is_anonymous) { + return { + errors: [], + html: null, + } + } + + const { error, data } = await supabase.storage.from(bucket).download(`templates/${payload.email_data.email_action_type}.mjml`) + if (error) { + throw error + } + + const result = await compile({ + source: await data.text(), + data: { + ...payload.email_data, + email: payload.user.email, + }, + }) + + if (typeof result === 'string') { + const processed = await rehype() + .use(inlineImages, { config }) + .use(rehypeMinify) + .use(rehypeStringify) + .process(result) + + return { + html: String(processed), + errors: null, + } + } + + return { + errors: result, + html: null, + } +} diff --git a/supabase/functions/send-email/compiler/inline-images.ts b/supabase/functions/send-email/compiler/inline-images.ts new file mode 100644 index 0000000..2c1fea7 --- /dev/null +++ b/supabase/functions/send-email/compiler/inline-images.ts @@ -0,0 +1,60 @@ +import * as base64 from "jsr:@std/encoding/base64" +import { join } from 'jsr:@std/path@^1.0' +import type { Root } from 'npm:@types/hast@3.0.4' +import { selectAll } from 'npm:hast-util-select@6.0.2' +import { CompilerConfig } from './index.ts' + +type Props = { + config: CompilerConfig +} + +export default function inlineImages({ config }: Props) { + return async function (rootNode: Root) { + const imgElements = selectAll('img', rootNode) + for await (const image of imgElements) { + const imgPath = image.properties.src as string + if (imgPath?.startsWith('data:')) { + // ignore image that's already inlined + return + } + + const isSupabase = imgPath.startsWith('supabase://') + const fileExt = imgPath?.match('\\.([a-zA-Z]+)$')?.[1] + if (fileExt === undefined || fileExt === null) { + throw new Error('image path without file extension') + } + + const imgContent = await doReadFile(imgPath, isSupabase ? config : undefined) + if (fileExt === 'svg') { + image.properties.src = `data:image/svg+xml;base64,${imgContent}` + } else { + image.properties.src = `data:image/${fileExt};base64,${imgContent}` + } + } + } +} + +async function doReadFile(path: string, config?: CompilerConfig) { + if (config === undefined) { + const response = await fetch(path, { + method: 'GET', + cache: 'no-store', + }) + + if (!response.ok) { + throw new Error(await response.text()) + } + + const buffer = await response.arrayBuffer() + return base64.encodeBase64(buffer) + } + + const { supabase, bucket } = config + const { error, data } = await supabase.storage.from(bucket).download(join('assets', path.substring(11))) + if (error) { + throw error + } + + const buffer = await data.arrayBuffer() + return base64.encodeBase64(buffer) +} diff --git a/supabase/functions/send-email/compiler/types.ts b/supabase/functions/send-email/compiler/types.ts new file mode 100644 index 0000000..b527e7b --- /dev/null +++ b/supabase/functions/send-email/compiler/types.ts @@ -0,0 +1,62 @@ +export type EmailAction = + | 'signup' + | 'recovery' + | 'invite' + | 'magic_link' + | 'email_change' + | 'email_change_new' + | 'reauthentication' + +export type EmailPayload = { + user: + | { + is_anonymous: true + } + | { + id: string + aud: 'authenticated' + role: 'anon' | 'authenticated' + email: string + phone: string + app_metadata: { + provider?: 'email' + providers?: ['email'] + } + user_metadata: { + email?: string + email_verified?: boolean + phone_verified?: boolean + sub?: string + [k: string]: any + } + identities: { + identity_id: string + id: string + user_id: string + identity_data: { + email?: string + email_verified?: boolean + phone_verified?: boolean + sub?: string + } + provider: 'email' + last_sign_in_at: string + created_at: string + updated_at: string + email: string + }[] + created_at: string + updated_at: string + is_anonymous: false + } + + email_data: { + token: string + token_hash: string + redirect_to: string + email_action_type: EmailAction + site_url: string + token_new: string + token_hash_new: string + } +} diff --git a/supabase/functions/send-email/config.ts b/supabase/functions/send-email/config.ts new file mode 100644 index 0000000..6bfe051 --- /dev/null +++ b/supabase/functions/send-email/config.ts @@ -0,0 +1,25 @@ +import { z } from 'https://deno.land/x/zod@v3.23.8/mod.ts' + +const envSchema = z.object({ + SUPABASE_URL: z.string().url(), + SUPABASE_SERVICE_ROLE_KEY: z.string(), + + SEND_EMAIL_HOOK_SECRET: z.string(), + + SMTP_HOST: z.string(), + SMTP_PORT: z.coerce.number().optional().default(465), + SMTP_TLS: z.coerce.boolean().optional().default(true), + SMTP_USER: z.string(), + SMTP_PASSWORD: z.string(), +}) + +const { success, data: env, error: zodError } = envSchema.safeParse( + Deno.env.toObject(), +) + +if (!success) { + console.error(zodError) + throw zodError +} + +export default env! diff --git a/supabase/functions/send-email/index.ts b/supabase/functions/send-email/index.ts new file mode 100644 index 0000000..62f7d0a --- /dev/null +++ b/supabase/functions/send-email/index.ts @@ -0,0 +1,91 @@ +import { Application } from 'https://deno.land/x/oak@v17.0.0/mod.ts' +import { Webhook } from 'https://esm.sh/standardwebhooks@1.0.0' +import { createClient, SupabaseClient } from 'jsr:@supabase/supabase-js@^2.45.4' +import compileEmail from './compiler/index.ts' +import { EmailPayload } from './compiler/types.ts' +import smtp from './smtp.ts' +import env from './config.ts' + +type State = { + supabase: SupabaseClient + payload: EmailPayload +} + +const subjects: Record> = { + en: { + signup: 'Confirm Your Email', + recovery: 'Reset Your Password', + invite: 'You have been invited', + magic_link: 'Your Magic Link', + email_change: 'Confirm Email Change', + email_change_new: 'Confirm New Email Address', + reauthentication: 'Confirm Reauthentication', + }, +} + +const app = new Application() + +// verify & decode email hook data +app.use(async (ctx, next) => { + const payload = await ctx.request.body.text() + const headers = Object.fromEntries(ctx.request.headers) + const base64_secret = env.SEND_EMAIL_HOOK_SECRET.substring(9) + const wh = new Webhook(base64_secret) + const verified = wh.verify(payload, headers) as EmailPayload + + ctx.state.payload = verified + + return next() +}) + +// create Supabase client +app.use((ctx, next) => { + ctx.state.supabase = createClient( + env.SUPABASE_URL, + env.SUPABASE_SERVICE_ROLE_KEY, + { + global: { + headers: { + Authorization: env.SUPABASE_SERVICE_ROLE_KEY, + }, + }, + }, + ) + + return next() +}) + +// main handler +app.use(async (ctx) => { + const { supabase, payload } = ctx.state + + if (!payload.user.is_anonymous) { + const { errors, html } = await compileEmail({ + supabase, + payload, + bucket: 'emails', // TODO: Config + }) + + if (errors?.length ?? 0 > 0) { + ctx.response.status = 500 + ctx.response.body = errors + return + } + + const language = payload.user.user_metadata.language ?? 'en' + + await smtp.send({ + from: 'noreply@axelrindle.de', + subject: subjects[language][payload.email_data.email_action_type], + to: payload.user.email, + html: html!, + }) + } + + ctx.response.status = 200 + ctx.response.body = { + message: 'Email sent' + } +}) + +await app.listen() diff --git a/supabase/functions/send-email/smtp.ts b/supabase/functions/send-email/smtp.ts new file mode 100644 index 0000000..faefec9 --- /dev/null +++ b/supabase/functions/send-email/smtp.ts @@ -0,0 +1,16 @@ +import { SMTPClient } from 'https://cdn.jsdelivr.net/gh/actcoding/denomailer@v1.6.1/mod.ts' +import env from './config.ts' + +const smtp = new SMTPClient({ + connection: { + hostname: env.SMTP_HOST, + port: env.SMTP_PORT, + tls: env.SMTP_TLS, + auth: { + username: env.SMTP_USER, + password: env.SMTP_PASSWORD, + }, + }, +}) + +export default smtp diff --git a/supabase/migrations/20240830100103221_user_profiles.ts b/supabase/migrations/20240830100103221_user_profiles.ts new file mode 100644 index 0000000..91de2c0 --- /dev/null +++ b/supabase/migrations/20240830100103221_user_profiles.ts @@ -0,0 +1,29 @@ +import type { ColumnDefinitions, MigrationBuilder } from 'node-pg-migrate' + +export const shorthands: ColumnDefinitions | undefined = undefined + +export async function up(pgm: MigrationBuilder): Promise { + pgm.createTable('profile', { + user_id: { + type: 'uuid', + notNull: true, + references: '"auth"."users"', + onUpdate: 'CASCADE', + onDelete: 'CASCADE', + }, + firstname: { + type: 'text', + notNull: true, + }, + lastname: { + type: 'text', + notNull: true, + }, + }) + pgm.createIndex('profile', 'user_id') +} + +export async function down(pgm: MigrationBuilder): Promise { + pgm.dropIndex('profile', 'user_id') + pgm.dropTable('profile') +} diff --git a/supabase/migrations/20241020201608937_bucket_emails.ts b/supabase/migrations/20241020201608937_bucket_emails.ts new file mode 100644 index 0000000..f159b86 --- /dev/null +++ b/supabase/migrations/20241020201608937_bucket_emails.ts @@ -0,0 +1,17 @@ +import type { ColumnDefinitions, MigrationBuilder } from 'node-pg-migrate' + +export const shorthands: ColumnDefinitions | undefined = undefined + +export async function up(pgm: MigrationBuilder): Promise { + pgm.sql(` + insert into storage.buckets (id, name, public) + values ('emails', 'emails', false) + `) +} + +export async function down(pgm: MigrationBuilder): Promise { + pgm.sql(` + delete from storage.buckets + where id = 'emails' + `) +} diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..4922981 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +src/routeTree.gen.ts diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..74872fd --- /dev/null +++ b/web/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/web/bun.lockb b/web/bun.lockb new file mode 100755 index 0000000..024c095 Binary files /dev/null and b/web/bun.lockb differ diff --git a/web/components.json b/web/components.json new file mode 100644 index 0000000..80ca630 --- /dev/null +++ b/web/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "stone", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..d7a6c5a --- /dev/null +++ b/web/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + + @actcoding/supa-cli + + + +
+ + + + diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..eff79e1 --- /dev/null +++ b/web/package.json @@ -0,0 +1,60 @@ +{ + "name": "web", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/react-fontawesome": "^0.2.2", + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-toast": "^1.2.1", + "@supabase/supabase-js": "^2.45.2", + "@tanstack/react-query": "^5.59.0", + "@tanstack/react-router": "^1.64.0", + "@tanstack/router-zod-adapter": "^1.64.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.53.0", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7", + "usehooks-ts": "^3.1.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@tanstack/react-query-devtools": "^5.59.9", + "@tanstack/router-devtools": "^1.64.0", + "@tanstack/router-plugin": "^1.64.0", + "@types/node": "^22.5.1", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "postcss": "^8.4.41", + "tailwindcss": "^3.4.10", + "type-fest": "^4.26.1", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + } +} diff --git a/web/postcss.config.js b/web/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/web/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/web/public/apple-touch-icon.png b/web/public/apple-touch-icon.png new file mode 100644 index 0000000..8baca2f Binary files /dev/null and b/web/public/apple-touch-icon.png differ diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000..3497fde Binary files /dev/null and b/web/public/favicon.ico differ diff --git a/web/public/icon-192-maskable.png b/web/public/icon-192-maskable.png new file mode 100644 index 0000000..bbe65fd Binary files /dev/null and b/web/public/icon-192-maskable.png differ diff --git a/web/public/icon-192.png b/web/public/icon-192.png new file mode 100644 index 0000000..0d64cee Binary files /dev/null and b/web/public/icon-192.png differ diff --git a/web/public/icon-512-maskable.png b/web/public/icon-512-maskable.png new file mode 100644 index 0000000..d0d4c15 Binary files /dev/null and b/web/public/icon-512-maskable.png differ diff --git a/web/public/icon-512.png b/web/public/icon-512.png new file mode 100644 index 0000000..b58840f Binary files /dev/null and b/web/public/icon-512.png differ diff --git a/web/src/App.tsx b/web/src/App.tsx new file mode 100644 index 0000000..895f229 --- /dev/null +++ b/web/src/App.tsx @@ -0,0 +1,21 @@ +import SupabaseProvider from '@/components/supabase/Provider.tsx' +import { Toaster } from '@/components/ui/toaster.tsx' +import AppRouter from '@/router.tsx' +import { + QueryClient, + QueryClientProvider, +} from '@tanstack/react-query' + +const queryClient = new QueryClient() + +export default function App() { + return (<> + + + + + + + + ) +} diff --git a/web/src/assets/react.svg b/web/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/web/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/components/Container.tsx b/web/src/components/Container.tsx new file mode 100644 index 0000000..1894fe0 --- /dev/null +++ b/web/src/components/Container.tsx @@ -0,0 +1,40 @@ +import { cn } from '@/lib/utils.ts' +import { cva, VariantProps } from 'class-variance-authority' +import { ElementType, HTMLAttributes, PropsWithChildren } from 'react' +import type { Simplify } from 'type-fest' + +const containerVariants = cva( + 'container flex flex-col gap-y-6', + { + variants: { + variant: { + default: 'items-start', + centered: 'items-center', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +type Props = Simplify< + PropsWithChildren> & + VariantProps & + { + as?: T + } +> + + +export default function Container({ className, variant, children, as, ...props}: Props) { + const Comp = as ?? 'div' + return ( + + {children} + + ) +} diff --git a/web/src/components/DarkModeToggle.tsx b/web/src/components/DarkModeToggle.tsx new file mode 100644 index 0000000..5b28dfc --- /dev/null +++ b/web/src/components/DarkModeToggle.tsx @@ -0,0 +1,48 @@ +import { useTernaryDarkMode } from 'usehooks-ts' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu.tsx' +import { useEffect } from 'react' +import { MoonIcon, SunIcon } from '@radix-ui/react-icons' +import { Button } from '@/components/ui/button.tsx' + +export default function DarkModeToggle() { + const { isDarkMode, setTernaryDarkMode } = useTernaryDarkMode() + + useEffect(() => { + const html = document.querySelector('html') as HTMLHtmlElement + if (isDarkMode) { + html.classList.add('dark') + } else { + html.classList.remove('dark') + } + }, [isDarkMode]) + + return ( + + + + + + setTernaryDarkMode('light')}> + Hell + + setTernaryDarkMode('dark')}> + Dunkel + + setTernaryDarkMode('system')}> + System + + + + ) +} diff --git a/web/src/components/supabase/Provider.tsx b/web/src/components/supabase/Provider.tsx new file mode 100644 index 0000000..991333b --- /dev/null +++ b/web/src/components/supabase/Provider.tsx @@ -0,0 +1,60 @@ +import { supabase, SupabaseClient } from '@/components/supabase/client.ts' +import { Session } from '@supabase/supabase-js' +import { createContext, PropsWithChildren, useContext, useEffect, useMemo, useState } from 'react' + +type Props = PropsWithChildren +type Context = { + client: SupabaseClient + session: Session|null +} + +const SupabaseContext = createContext({} as Context) + +export default function SupabaseProvider(props: Props) { + const [session, setSession] = useState(null) + const [isInitialized, setInitialized] = useState(false) + + const context = useMemo(() => ({ + client: supabase, + session, + }), [session]) + + useEffect(() => { + supabase.auth.getSession().then(({ data: { session } }) => { + setSession(session) + }) + + const { data: { subscription } } = supabase.auth.onAuthStateChange( + (event, session) => { + if (import.meta.env.DEV) { + console.log(event) + } + + if (event === 'INITIAL_SESSION') { + setInitialized(true) + } else if (event === 'SIGNED_OUT') { + setSession(null) + } else if (session) { + setSession(session) + } + }) + + return () => { + subscription.unsubscribe() + } + }, [setSession]) + + if (!isInitialized) { + return null + } + + return ( + + {props.children} + + ) +} + +export function useSupabase() { + return useContext(SupabaseContext) +} diff --git a/web/src/components/supabase/client.ts b/web/src/components/supabase/client.ts new file mode 100644 index 0000000..821ccde --- /dev/null +++ b/web/src/components/supabase/client.ts @@ -0,0 +1,22 @@ +import { createClient } from '@supabase/supabase-js' + +const url = import.meta.env.VITE_SUPABASE_URL! + +const isRemote = /^(?:https:\/\/)(?[\w]+)(?:\.supabase\.co)$/.test(url) + +const supabase = createClient( + url, + import.meta.env.VITE_SUPABASE_ANON_KEY!, + { + auth: { + autoRefreshToken: true, + persistSession: true, + storage: localStorage, + storageKey: 'supa-cli-demo-session', + }, + }, +) + +export type SupabaseClient = typeof supabase + +export { supabase, isRemote } diff --git a/web/src/components/ui/avatar.tsx b/web/src/components/ui/avatar.tsx new file mode 100644 index 0000000..991f56e --- /dev/null +++ b/web/src/components/ui/avatar.tsx @@ -0,0 +1,48 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/web/src/components/ui/button.tsx b/web/src/components/ui/button.tsx new file mode 100644 index 0000000..0270f64 --- /dev/null +++ b/web/src/components/ui/button.tsx @@ -0,0 +1,57 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/web/src/components/ui/card.tsx b/web/src/components/ui/card.tsx new file mode 100644 index 0000000..77e9fb7 --- /dev/null +++ b/web/src/components/ui/card.tsx @@ -0,0 +1,76 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/web/src/components/ui/dropdown-menu.tsx b/web/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..6edb630 --- /dev/null +++ b/web/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,203 @@ +import * as React from 'react' +import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu' +import { + CheckIcon, + ChevronRightIcon, + DotFilledIcon, +} from '@radix-ui/react-icons' + +import { cn } from '@/lib/utils' + +const DropdownMenu = DropdownMenuPrimitive.Root + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger + +const DropdownMenuGroup = DropdownMenuPrimitive.Group + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal + +const DropdownMenuSub = DropdownMenuPrimitive.Sub + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +DropdownMenuShortcut.displayName = 'DropdownMenuShortcut' + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} diff --git a/web/src/components/ui/form.tsx b/web/src/components/ui/form.tsx new file mode 100644 index 0000000..f6afdaf --- /dev/null +++ b/web/src/components/ui/form.tsx @@ -0,0 +1,176 @@ +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { Slot } from "@radix-ui/react-slot" +import { + Controller, + ControllerProps, + FieldPath, + FieldValues, + FormProvider, + useFormContext, +} from "react-hook-form" + +import { cn } from "@/lib/utils" +import { Label } from "@/components/ui/label" + +const Form = FormProvider + +type FormFieldContextValue< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +> = { + name: TName +} + +const FormFieldContext = React.createContext( + {} as FormFieldContextValue +) + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +>({ + ...props +}: ControllerProps) => { + return ( + + + + ) +} + +const useFormField = () => { + const fieldContext = React.useContext(FormFieldContext) + const itemContext = React.useContext(FormItemContext) + const { getFieldState, formState } = useFormContext() + + const fieldState = getFieldState(fieldContext.name, formState) + + if (!fieldContext) { + throw new Error("useFormField should be used within ") + } + + const { id } = itemContext + + return { + id, + name: fieldContext.name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} + +type FormItemContextValue = { + id: string +} + +const FormItemContext = React.createContext( + {} as FormItemContextValue +) + +const FormItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const id = React.useId() + + return ( + +
+ + ) +}) +FormItem.displayName = "FormItem" + +const FormLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { error, formItemId } = useFormField() + + return ( +