From afba918d3c0932e77cda8a6f393905f1911526b2 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Sun, 27 Oct 2024 02:21:26 +0800 Subject: [PATCH] add email status change notifications --- deno.lock | 1694 ++++++++++++++++- supabase/config.toml | 6 + .../_email/StatusChangeNotificationEmail.tsx | 151 ++ supabase/functions/import_map.json | 7 +- .../notify-domain-status-change/index.ts | 60 + .../20240917123202_update_whois_function.sql | 4 +- ...1026160057_notify_domain_status_change.sql | 41 + 7 files changed, 1936 insertions(+), 27 deletions(-) create mode 100644 supabase/functions/_email/StatusChangeNotificationEmail.tsx create mode 100644 supabase/functions/notify-domain-status-change/index.ts create mode 100644 supabase/migrations/20241026160057_notify_domain_status_change.sql diff --git a/deno.lock b/deno.lock index 5bbc4b7..0d61f57 100644 --- a/deno.lock +++ b/deno.lock @@ -4,15 +4,34 @@ "specifiers": { "jsr:@supabase/functions-js": "jsr:@supabase/functions-js@2.4.3", "jsr:@supabase/supabase-js@^2.45.4": "jsr:@supabase/supabase-js@2.45.4", + "npm:@hookform/resolvers@^3.6.0": "npm:@hookform/resolvers@3.9.0_react-hook-form@7.53.1__react@18.3.1_react@18.3.1", + "npm:@radix-ui/react-alert-dialog@^1.1.2": "npm:@radix-ui/react-alert-dialog@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "npm:@radix-ui/react-dialog@^1.1.2": "npm:@radix-ui/react-dialog@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "npm:@radix-ui/react-slot@^1.0.2": "npm:@radix-ui/react-slot@1.1.0_react@18.3.1", + "npm:@react-email/components@0.0.7": "npm:@react-email/components@0.0.7", + "npm:@react-email/components@^0.0.25": "npm:@react-email/components@0.0.25_react@18.3.1", "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.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.7.0": "npm:@supabase/storage-js@2.7.0", + "npm:@tanstack/react-query@^4.29.19": "npm:@tanstack/react-query@4.36.1_react@18.3.1", + "npm:@types/node": "npm:@types/node@18.16.19", + "npm:class-variance-authority@^0.7.0": "npm:class-variance-authority@0.7.0", + "npm:date-fns@^2.30.0": "npm:date-fns@2.30.0", + "npm:date-fns@^4.1.0": "npm:date-fns@4.1.0", + "npm:lucide-react@^0.387.0": "npm:lucide-react@0.387.0_react@18.3.1", + "npm:next@^13.2.4": "npm:next@13.5.7_react@18.3.1_react-dom@18.3.1__react@18.3.1", "npm:openai@^4.52.5": "npm:openai@4.61.1", + "npm:parse-domain@^8.0.2": "npm:parse-domain@8.2.2", + "npm:react-hook-form@^7.51.5": "npm:react-hook-form@7.53.1_react@18.3.1", + "npm:react@^18.2.0": "npm:react@18.3.1", + "npm:react@^18.3.1": "npm:react@18.3.1", + "npm:resend@^4.0.0": "npm:resend@4.0.0_react@18.3.1", "npm:whois@^2.14.2": "npm:whois@2.14.2", - "npm:whoiser@^1.18.0": "npm:whoiser@1.18.0" + "npm:whoiser@^1.18.0": "npm:whoiser@1.18.0", + "npm:zod@^3.23.8": "npm:zod@3.23.8" }, "jsr": { "@supabase/functions-js@2.4.3": { @@ -34,6 +53,558 @@ } }, "npm": { + "@babel/runtime@7.25.7": { + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "regenerator-runtime@0.14.1" + } + }, + "@hookform/resolvers@3.9.0_react-hook-form@7.53.1__react@18.3.1_react@18.3.1": { + "integrity": "sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==", + "dependencies": { + "react-hook-form": "react-hook-form@7.53.1_react@18.3.1" + } + }, + "@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" + } + }, + "@next/env@13.5.7": { + "integrity": "sha512-uVuRqoj28Ys/AI/5gVEgRAISd0KWI0HRjOO1CTpNgmX3ZsHb5mdn14Y59yk0IxizXdo7ZjsI2S7qbWnO+GNBcA==", + "dependencies": {} + }, + "@next/swc-darwin-arm64@13.5.7": { + "integrity": "sha512-7SxmxMex45FvKtRoP18eftrDCMyL6WQVYJSEE/s7A1AW/fCkznxjEShKet2iVVzf89gWp8HbXGaL4hCaseux6g==", + "dependencies": {} + }, + "@next/swc-darwin-x64@13.5.7": { + "integrity": "sha512-6iENvgyIkGFLFszBL4b1VfEogKC3TDPEB6/P/lgxmgXVXIV09Q4or1MVn+U/tYyYmm7oHMZ3oxGpHAyJ80nA6g==", + "dependencies": {} + }, + "@next/swc-linux-arm64-gnu@13.5.7": { + "integrity": "sha512-P42jDX56wu9zEdVI+Xv4zyTeXB3DpqgE1Gb4bWrc0s2RIiDYr6uKBprnOs1hCGIwfVyByxyTw5Va66QCdFFNUg==", + "dependencies": {} + }, + "@next/swc-linux-arm64-musl@13.5.7": { + "integrity": "sha512-A06vkj+8X+tLRzSja5REm/nqVOCzR+x5Wkw325Q/BQRyRXWGCoNbQ6A+BR5M86TodigrRfI3lUZEKZKe3QJ9Bg==", + "dependencies": {} + }, + "@next/swc-linux-x64-gnu@13.5.7": { + "integrity": "sha512-UdHm7AlxIbdRdMsK32cH0EOX4OmzAZ4Xm+UVlS0YdvwLkI3pb7AoBEoVMG5H0Wj6Wpz6GNkrFguHTRLymTy6kw==", + "dependencies": {} + }, + "@next/swc-linux-x64-musl@13.5.7": { + "integrity": "sha512-c50Y8xBKU16ZGj038H6C13iedRglxvdQHD/1BOtes56gwUrIRDX2Nkzn3mYtpz3Wzax0gfAF9C0Nqljt93IxvA==", + "dependencies": {} + }, + "@next/swc-win32-arm64-msvc@13.5.7": { + "integrity": "sha512-NcUx8cmkA+JEp34WNYcKW6kW2c0JBhzJXIbw+9vKkt9m/zVJ+KfizlqmoKf04uZBtzFN6aqE2Fyv2MOd021WIA==", + "dependencies": {} + }, + "@next/swc-win32-ia32-msvc@13.5.7": { + "integrity": "sha512-wXp+/3NVcuyJDED6gJiLXs5dqHaWO7moAB6aBtjlKZvsxBDxpcyjsfRbtHPeYtaT20zCkmPs69H0K25lrVZmlA==", + "dependencies": {} + }, + "@next/swc-win32-x64-msvc@13.5.7": { + "integrity": "sha512-PLyD3Dl6jTTkLG8AoqhPGd5pXtSs8wbqIhWPQt3yEMfnYld/dGYuF2YPs3YHaVFrijCIF9pXY3+QOyvP23Zn7g==", + "dependencies": {} + }, + "@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": {} + }, + "@radix-ui/primitive@1.1.0": { + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "dependencies": {} + }, + "@radix-ui/react-alert-dialog@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "dependencies": { + "@radix-ui/primitive": "@radix-ui/primitive@1.1.0", + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "@radix-ui/react-context": "@radix-ui/react-context@1.1.1_react@18.3.1", + "@radix-ui/react-dialog": "@radix-ui/react-dialog@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-primitive": "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-slot": "@radix-ui/react-slot@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-compose-refs@1.0.0_react@18.2.0": { + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "react": "react@18.2.0" + } + }, + "@radix-ui/react-compose-refs@1.1.0_react@18.3.1": { + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@radix-ui/react-context@1.1.1_react@18.3.1": { + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@radix-ui/react-dialog@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "dependencies": { + "@radix-ui/primitive": "@radix-ui/primitive@1.1.0", + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "@radix-ui/react-context": "@radix-ui/react-context@1.1.1_react@18.3.1", + "@radix-ui/react-dismissable-layer": "@radix-ui/react-dismissable-layer@1.1.1_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-focus-guards": "@radix-ui/react-focus-guards@1.1.1_react@18.3.1", + "@radix-ui/react-focus-scope": "@radix-ui/react-focus-scope@1.1.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-id": "@radix-ui/react-id@1.1.0_react@18.3.1", + "@radix-ui/react-portal": "@radix-ui/react-portal@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-presence": "@radix-ui/react-presence@1.1.1_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-primitive": "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-slot": "@radix-ui/react-slot@1.1.0_react@18.3.1", + "@radix-ui/react-use-controllable-state": "@radix-ui/react-use-controllable-state@1.1.0_react@18.3.1", + "aria-hidden": "aria-hidden@1.2.4", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1", + "react-remove-scroll": "react-remove-scroll@2.6.0_react@18.3.1" + } + }, + "@radix-ui/react-dismissable-layer@1.1.1_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "dependencies": { + "@radix-ui/primitive": "@radix-ui/primitive@1.1.0", + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "@radix-ui/react-primitive": "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-use-callback-ref": "@radix-ui/react-use-callback-ref@1.1.0_react@18.3.1", + "@radix-ui/react-use-escape-keydown": "@radix-ui/react-use-escape-keydown@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-focus-guards@1.1.1_react@18.3.1": { + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@radix-ui/react-focus-scope@1.1.0_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "dependencies": { + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "@radix-ui/react-primitive": "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-use-callback-ref": "@radix-ui/react-use-callback-ref@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-id@1.1.0_react@18.3.1": { + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "@radix-ui/react-use-layout-effect@1.1.0_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@radix-ui/react-portal@1.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "dependencies": { + "@radix-ui/react-primitive": "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@radix-ui/react-use-layout-effect": "@radix-ui/react-use-layout-effect@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-presence@1.1.1_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "dependencies": { + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "@radix-ui/react-use-layout-effect": "@radix-ui/react-use-layout-effect@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-primitive@2.0.0_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "dependencies": { + "@radix-ui/react-slot": "@radix-ui/react-slot@1.1.0_react@18.3.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1" + } + }, + "@radix-ui/react-slot@1.0.0_react@18.2.0": { + "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7", + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.0.0_react@18.2.0", + "react": "react@18.2.0" + } + }, + "@radix-ui/react-slot@1.1.0_react@18.3.1": { + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dependencies": { + "@radix-ui/react-compose-refs": "@radix-ui/react-compose-refs@1.1.0_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@radix-ui/react-use-callback-ref@1.1.0_react@18.3.1": { + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@radix-ui/react-use-controllable-state@1.1.0_react@18.3.1": { + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "@radix-ui/react-use-callback-ref@1.1.0_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@radix-ui/react-use-escape-keydown@1.1.0_react@18.3.1": { + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "@radix-ui/react-use-callback-ref@1.1.0_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@radix-ui/react-use-layout-effect@1.1.0_react@18.3.1": { + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/body@0.0.10_react@18.3.1": { + "integrity": "sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/body@0.0.2": { + "integrity": "sha512-SqZrZdxZlH7viwnrLvrMnVzOKpiofVAtho09bmm2siDzy0VMDGItXRzUPLcpg9vcbVJCHZRCIKoNXqA+PtokzQ==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/button@0.0.17_react@18.3.1": { + "integrity": "sha512-ioHdsk+BpGS/PqjU6JS7tUrVy9yvbUx92Z+Cem2+MbYp55oEwQ9VHf7u4f5NoM0gdhfKSehBwRdYlHt/frEMcg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/button@0.0.9": { + "integrity": "sha512-eYWQ1X4RFlkKYYSPgSrT6rk98wuLOieEAGENrp9j37t1v/1C+jMmBu0UjZvwHsHWdbOMRjbVDFeMI/+MxWKSEg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/code-block@0.0.9_react@18.3.1": { + "integrity": "sha512-Zrhc71VYrSC1fVXJuaViKoB/dBjxLw6nbE53Bm/eUuZPdnnZ1+ZUIh8jfaRKC5MzMjgnLGQTweGXVnfIrhyxtQ==", + "dependencies": { + "prismjs": "prismjs@1.29.0", + "react": "react@18.3.1" + } + }, + "@react-email/code-inline@0.0.4_react@18.3.1": { + "integrity": "sha512-zj3oMQiiUCZbddSNt3k0zNfIBFK0ZNDIzzDyBaJKy6ZASTtWfB+1WFX0cpTX8q0gUiYK+A94rk5Qp68L6YXjXQ==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/column@0.0.12_react@18.3.1": { + "integrity": "sha512-Rsl7iSdDaeHZO938xb+0wR5ud0Z3MVfdtPbNKJNojZi2hApwLAQXmDrnn/AcPDM5Lpl331ZljJS8vHTWxxkvKw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/column@0.0.7": { + "integrity": "sha512-B29wVXyIcuVprgGpLkR23waPh/twlqmugZQsCKk05JlMCQ80/Puv4Lgj4dRsIJzgyTLMwG6xq17+Uxc5iGfuaQ==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/components@0.0.25_react@18.3.1": { + "integrity": "sha512-lnfVVrThEcET5NPoeaXvrz9UxtWpGRcut2a07dLbyKgNbP7vj/cXTI5TuHtanCvhCddFpMDnElNRghDOfPzwUg==", + "dependencies": { + "@react-email/body": "@react-email/body@0.0.10_react@18.3.1", + "@react-email/button": "@react-email/button@0.0.17_react@18.3.1", + "@react-email/code-block": "@react-email/code-block@0.0.9_react@18.3.1", + "@react-email/code-inline": "@react-email/code-inline@0.0.4_react@18.3.1", + "@react-email/column": "@react-email/column@0.0.12_react@18.3.1", + "@react-email/container": "@react-email/container@0.0.14_react@18.3.1", + "@react-email/font": "@react-email/font@0.0.8_react@18.3.1", + "@react-email/head": "@react-email/head@0.0.11_react@18.3.1", + "@react-email/heading": "@react-email/heading@0.0.14_react@18.3.1", + "@react-email/hr": "@react-email/hr@0.0.10_react@18.3.1", + "@react-email/html": "@react-email/html@0.0.10_react@18.3.1", + "@react-email/img": "@react-email/img@0.0.10_react@18.3.1", + "@react-email/link": "@react-email/link@0.0.10_react@18.3.1", + "@react-email/markdown": "@react-email/markdown@0.0.12_react@18.3.1", + "@react-email/preview": "@react-email/preview@0.0.11_react@18.3.1", + "@react-email/render": "@react-email/render@1.0.1_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "@react-email/row": "@react-email/row@0.0.10_react@18.3.1", + "@react-email/section": "@react-email/section@0.0.14_react@18.3.1", + "@react-email/tailwind": "@react-email/tailwind@0.1.0_react@18.3.1", + "@react-email/text": "@react-email/text@0.0.10_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@react-email/components@0.0.7": { + "integrity": "sha512-GpRKV8E7EvK9OPf61f5Z8hliB3p0hTot8tslmEUVCTtX7tdL0wM2YEcZiDWU4PJcudJ/QWHJ7Y5wGzNEARcooA==", + "dependencies": { + "@react-email/body": "@react-email/body@0.0.2", + "@react-email/button": "@react-email/button@0.0.9", + "@react-email/column": "@react-email/column@0.0.7", + "@react-email/container": "@react-email/container@0.0.8", + "@react-email/font": "@react-email/font@0.0.2", + "@react-email/head": "@react-email/head@0.0.5", + "@react-email/heading": "@react-email/heading@0.0.8_react@18.2.0", + "@react-email/hr": "@react-email/hr@0.0.5", + "@react-email/html": "@react-email/html@0.0.4", + "@react-email/img": "@react-email/img@0.0.5", + "@react-email/link": "@react-email/link@0.0.5", + "@react-email/preview": "@react-email/preview@0.0.6", + "@react-email/render": "@react-email/render@0.0.7_react@18.2.0", + "@react-email/row": "@react-email/row@0.0.5", + "@react-email/section": "@react-email/section@0.0.9", + "@react-email/tailwind": "@react-email/tailwind@0.0.8_react@18.2.0", + "@react-email/text": "@react-email/text@0.0.5", + "react": "react@18.2.0" + } + }, + "@react-email/container@0.0.14_react@18.3.1": { + "integrity": "sha512-NgoaJJd9tTtsrveL86Ocr/AYLkGyN3prdXKd/zm5fQpfDhy/NXezyT3iF6VlwAOEUIu64ErHpAJd+P6ygR+vjg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/container@0.0.8": { + "integrity": "sha512-MQZQxvTOoLWjJR+Jm689jltm0I/mtZbEaDnwZbNkkHKgccr++wwb9kOKMgXG777Y7tGa1JATAsZpvFYiCITwUg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/font@0.0.2": { + "integrity": "sha512-mmkyOCAcbgytE7DfIuOBVG1YVDUZY9rPCor4o7pUEzGJiU2y/TNuV8CgNPSU/VgXeBKL/94QDjB62OrGHlFNMQ==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/font@0.0.8_react@18.3.1": { + "integrity": "sha512-fSBEqYyVPAyyACBBHcs3wEYzNknpHMuwcSAAKE8fOoDfGqURr/vSxKPdh4tOa9z7G4hlcEfgGrCYEa2iPT22cw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/head@0.0.11_react@18.3.1": { + "integrity": "sha512-skw5FUgyamIMK+LN+fZQ5WIKQYf0dPiRAvsUAUR2eYoZp9oRsfkIpFHr0GWPkKAYjFEj+uJjaxQ/0VzQH7svVg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/head@0.0.5": { + "integrity": "sha512-s84OxJxZMee2z5b1a+RVwY1NOSUNNf1ecjPf6n64aZmMNcNUyn4gOl7RO6xbfBrZko7TigBwsFB1Cgjxtn/ydg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/heading@0.0.14_react@18.3.1": { + "integrity": "sha512-jZM7IVuZOXa0G110ES8OkxajPTypIKlzlO1K1RIe1auk76ukQRiCg1IRV4HZlWk1GGUbec5hNxsvZa2kU8cb9w==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/heading@0.0.8_react@18.2.0": { + "integrity": "sha512-7atATmoHBHTk7hFYFsFFzOIBV3u1zPpsSOWkLBojdjSUdenpk2SbX8GP8/3aBhWl/tuFX9RBGcu1Xes+ZijFLg==", + "dependencies": { + "@radix-ui/react-slot": "@radix-ui/react-slot@1.0.0_react@18.2.0", + "react": "react@18.2.0" + } + }, + "@react-email/hr@0.0.10_react@18.3.1": { + "integrity": "sha512-3AA4Yjgl3zEid/KVx6uf6TuLJHVZvUc2cG9Wm9ZpWeAX4ODA+8g9HyuC0tfnjbRsVMhMcCGiECuWWXINi+60vA==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/hr@0.0.5": { + "integrity": "sha512-nwB8GmSdvPlR/bWjDS07yHtgdfJqtvCaPXee3SVUY69YYP7NeDO/VACJlgrS9V2l79bj1lUpH0MJMU6MNAk5FQ==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/html@0.0.10_react@18.3.1": { + "integrity": "sha512-06uiuSKJBWQJfhCKv4MPupELei4Lepyz9Sth7Yq7Fq29CAeB1ejLgKkGqn1I+FZ72hQxPLdYF4iq4yloKv3JCg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/html@0.0.4": { + "integrity": "sha512-7tRYSnudYAWez+NkPWOM8yLZH7EuYFtYdiLPnzpD+pf4cdk16Gz4up531DaIX6dNBbfbyEFpQxhXZxGeJ5ZkfQ==", + "dependencies": {} + }, + "@react-email/img@0.0.10_react@18.3.1": { + "integrity": "sha512-pJ8glJjDNaJ53qoM95pvX9SK05yh0bNQY/oyBKmxlBDdUII6ixuMc3SCwYXPMl+tgkQUyDgwEBpSTrLAnjL3hA==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/img@0.0.5": { + "integrity": "sha512-9ziFgBfrIAL+DpVlsraFcd2KwsTRyobLpqTnoiBYCcVZGod59xbYkmsmB3CbUosmLwPYg6AeD7Q7e+hCiwkWgg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/link@0.0.10_react@18.3.1": { + "integrity": "sha512-tva3wvAWSR10lMJa9fVA09yRn7pbEki0ZZpHE6GD1jKbFhmzt38VgLO9B797/prqoDZdAr4rVK7LJFcdPx3GwA==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/link@0.0.5": { + "integrity": "sha512-z+QW9f4gXBdyfhl7iYMY3td+rXKeZYK/2AGElEMsxVoywn5D0b6cF8m5w2jbf0U2V3enT+zy9yc1R6AyT59NOg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/markdown@0.0.12_react@18.3.1": { + "integrity": "sha512-wsuvj1XAb6O63aizCLNEeqVgKR3oFjAwt9vjfg2y2oh4G1dZeo8zonZM2x1fmkEkBZhzwSHraNi70jSXhA3A9w==", + "dependencies": { + "md-to-react-email": "md-to-react-email@5.0.2_react@18.3.1", + "react": "react@18.3.1" + } + }, + "@react-email/preview@0.0.11_react@18.3.1": { + "integrity": "sha512-7O/CT4b16YlSGrj18htTPx3Vbhu2suCGv/cSe5c+fuSrIM/nMiBSZ3Js16Vj0XJbAmmmlVmYFZw9L20wXJ+LjQ==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/preview@0.0.6": { + "integrity": "sha512-mXDCc3NGpm/4W7gowBtjsTxYXowLNOLsJsYhIfrsjNJWGlVhVFB9uEHm55LjBLpxSG020g6/8LIrpJU6g22qvg==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/render@0.0.17_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==", + "dependencies": { + "html-to-text": "html-to-text@9.0.5", + "js-beautify": "js-beautify@1.15.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1", + "react-promise-suspense": "react-promise-suspense@0.3.4" + } + }, + "@react-email/render@0.0.7_react@18.2.0": { + "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", + "dependencies": { + "html-to-text": "html-to-text@9.0.3", + "pretty": "pretty@2.0.0", + "react": "react@18.2.0", + "react-dom": "react-dom@18.2.0_react@18.2.0" + } + }, + "@react-email/render@1.0.1_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA==", + "dependencies": { + "html-to-text": "html-to-text@9.0.5", + "js-beautify": "js-beautify@1.15.1", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1", + "react-promise-suspense": "react-promise-suspense@0.3.4" + } + }, + "@react-email/row@0.0.10_react@18.3.1": { + "integrity": "sha512-jPyEhG3gsLX+Eb9U+A30fh0gK6hXJwF4ghJ+ZtFQtlKAKqHX+eCpWlqB3Xschd/ARJLod8WAswg0FB+JD9d0/A==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/row@0.0.5": { + "integrity": "sha512-dir5l1M7Z/1BQqQkUrKUPIIDPt6ueEf6ScMGoBOcUh+VNNqmnqJE2Q2CH5X3w2uo6a5X7tnVhoJHGa2KTKe8Sw==", + "dependencies": {} + }, + "@react-email/section@0.0.14_react@18.3.1": { + "integrity": "sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/section@0.0.9": { + "integrity": "sha512-3EbcWJ1jUZrzquWSvXrv8Hbk9V+BGvLcMWQIli4NdIpQlddmlGKUYfXU2mB2d2pf+5ojqkGcFZZ9fWxycB84jQ==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@react-email/tailwind@0.0.8_react@18.2.0": { + "integrity": "sha512-0BLjD5GpiyBK7YDlaDrjHIpj9eTrrZrMJud3f1UPoCZhS+0S/M8LcR8WMbQsR+8/aLGmiy4F4TGZuRQcsJEsFw==", + "dependencies": { + "html-react-parser": "html-react-parser@3.0.9_react@18.2.0", + "react": "react@18.2.0", + "react-dom": "react-dom@18.2.0_react@18.2.0", + "tw-to-css": "tw-to-css@0.0.11_postcss@8.4.21" + } + }, + "@react-email/tailwind@0.1.0_react@18.3.1": { + "integrity": "sha512-qysVUEY+M3SKUvu35XDpzn7yokhqFOT3tPU6Mj/pgc62TL5tQFj6msEbBtwoKs2qO3WZvai0DIHdLhaOxBQSow==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/text@0.0.10_react@18.3.1": { + "integrity": "sha512-wNAnxeEAiFs6N+SxS0y6wTJWfewEzUETuyS2aZmT00xk50VijwyFRuhm4sYSjusMyshevomFwz5jNISCxRsGWw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "@react-email/text@0.0.5": { + "integrity": "sha512-LXhHiaC6oRRsNAfOzJDos4wQA22eIdVJvR6G7uu4QzUvYNOAatDMf89jRQcKGrxX7InkS640v8sHd9jl5ztM5w==", + "dependencies": { + "react": "react@18.2.0" + } + }, + "@selderee/plugin-htmlparser2@0.10.0": { + "integrity": "sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "selderee": "selderee@0.10.0" + } + }, + "@selderee/plugin-htmlparser2@0.11.0": { + "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "selderee": "selderee@0.11.0" + } + }, "@supabase/auth-js@2.65.0": { "integrity": "sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==", "dependencies": { @@ -73,6 +644,24 @@ "@supabase/node-fetch": "@supabase/node-fetch@2.6.15" } }, + "@swc/helpers@0.5.2": { + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "tslib@2.7.0" + } + }, + "@tanstack/query-core@4.36.1": { + "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", + "dependencies": {} + }, + "@tanstack/react-query@4.36.1_react@18.3.1": { + "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", + "dependencies": { + "@tanstack/query-core": "@tanstack/query-core@4.36.1", + "react": "react@18.3.1", + "use-sync-external-store": "use-sync-external-store@1.2.2_react@18.3.1" + } + }, "@types/node-fetch@2.6.11": { "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dependencies": { @@ -104,12 +693,32 @@ "@types/node": "@types/node@18.16.19" } }, + "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-node@1.8.2": { + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "acorn@7.4.1", + "acorn-walk": "acorn-walk@7.2.0", + "xtend": "xtend@4.0.2" + } + }, + "acorn-walk@7.2.0": { + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dependencies": {} + }, + "acorn@7.4.1": { + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dependencies": {} + }, "agentkeepalive@4.5.0": { "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dependencies": { @@ -120,16 +729,67 @@ "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": {} + }, + "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": {} + }, + "aria-hidden@1.2.4": { + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "tslib@2.7.0" + } + }, "asynckit@0.4.0": { "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dependencies": {} }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dependencies": {} + }, + "binary-extensions@2.3.0": { + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dependencies": {} + }, + "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" + } + }, + "busboy@1.6.0": { + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "streamsearch@1.1.0" + } + }, "call-bind@1.0.7": { "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { @@ -140,10 +800,41 @@ "set-function-length": "set-function-length@1.2.2" } }, + "camelcase-css@2.0.1": { + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dependencies": {} + }, "camelcase@5.3.1": { "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dependencies": {} }, + "caniuse-lite@1.0.30001669": { + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "dependencies": {} + }, + "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" + } + }, + "class-variance-authority@0.7.0": { + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "clsx@2.0.0" + } + }, + "client-only@0.0.1": { + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "dependencies": {} + }, "cliui@6.0.0": { "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dependencies": { @@ -152,6 +843,16 @@ "wrap-ansi": "wrap-ansi@6.2.0" } }, + "clone-regexp@3.0.0": { + "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", + "dependencies": { + "is-regexp": "is-regexp@3.1.0" + } + }, + "clsx@2.0.0": { + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "dependencies": {} + }, "color-convert@2.0.1": { "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { @@ -168,10 +869,59 @@ "delayed-stream": "delayed-stream@1.0.0" } }, + "commander@10.0.1": { + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dependencies": {} + }, + "condense-newlines@0.2.1": { + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dependencies": { + "extend-shallow": "extend-shallow@2.0.1", + "is-whitespace": "is-whitespace@0.3.0", + "kind-of": "kind-of@3.2.2" + } + }, + "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" + } + }, + "convert-hrtime@5.0.0": { + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dependencies": {} + }, + "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" + } + }, + "cssesc@3.0.0": { + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dependencies": {} + }, + "date-fns@2.30.0": { + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.25.7" + } + }, + "date-fns@4.1.0": { + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "dependencies": {} + }, "decamelize@1.2.0": { "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dependencies": {} }, + "deepmerge@4.3.1": { + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dependencies": {} + }, "define-data-property@1.1.4": { "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { @@ -180,14 +930,85 @@ "gopd": "gopd@1.0.1" } }, + "defined@1.0.1": { + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dependencies": {} + }, "delayed-stream@1.0.0": { "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dependencies": {} }, + "detect-node-es@1.1.0": { + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dependencies": {} + }, + "detective@5.2.1": { + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dependencies": { + "acorn-node": "acorn-node@1.8.2", + "defined": "defined@1.0.1", + "minimist": "minimist@1.2.8" + } + }, + "didyoumean@1.2.2": { + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dependencies": {} + }, + "dlv@1.1.3": { + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dependencies": {} + }, + "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@5.0.3": { + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0" + } + }, + "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" + } + }, + "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" + } + }, "emoji-regex@8.0.0": { "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dependencies": {} }, + "emoji-regex@9.2.2": { + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dependencies": {} + }, + "entities@4.5.0": { + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dependencies": {} + }, "es-define-property@1.0.0": { "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { @@ -198,10 +1019,50 @@ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dependencies": {} }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dependencies": {} + }, "event-target-shim@5.0.1": { "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dependencies": {} }, + "extend-shallow@2.0.1": { + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "is-extendable@0.1.1" + } + }, + "extend@3.0.2": { + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dependencies": {} + }, + "fast-deep-equal@2.0.1": { + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "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" + } + }, + "fastq@1.17.1": { + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "reusify@1.0.4" + } + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "to-regex-range@5.0.1" + } + }, "find-up@4.1.0": { "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { @@ -209,6 +1070,13 @@ "path-exists": "path-exists@4.0.0" } }, + "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": {} @@ -228,10 +1096,18 @@ "web-streams-polyfill": "web-streams-polyfill@4.0.0-beta.3" } }, + "fsevents@2.3.3": { + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dependencies": {} + }, "function-bind@1.1.2": { "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dependencies": {} }, + "function-timeout@0.1.1": { + "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "dependencies": {} + }, "get-caller-file@2.0.5": { "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dependencies": {} @@ -246,57 +1122,295 @@ "hasown": "hasown@2.0.2" } }, + "get-nonce@1.0.1": { + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dependencies": {} + }, + "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-to-regexp@0.4.1": { + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dependencies": {} + }, + "glob@10.4.5": { + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "foreground-child@3.3.0", + "jackspeak": "jackspeak@3.4.3", + "minimatch": "minimatch@9.0.5", + "minipass": "minipass@7.1.2", + "package-json-from-dist": "package-json-from-dist@1.0.1", + "path-scurry": "path-scurry@1.11.1" + } + }, "gopd@1.0.1": { "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { "get-intrinsic": "get-intrinsic@1.2.4" } }, - "has-property-descriptors@1.0.2": { - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "graceful-fs@4.2.11": { + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "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": {} + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "function-bind@1.1.2" + } + }, + "html-dom-parser@3.1.3": { + "integrity": "sha512-fI0yyNlIeSboxU+jnrA4v8qj4+M8SI9/q6AKYdwCY2qki22UtKCDTxvagHniECu7sa5/o2zFRdLleA67035lsA==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "htmlparser2": "htmlparser2@8.0.1" + } + }, + "html-react-parser@3.0.9_react@18.2.0": { + "integrity": "sha512-gOPZmaCMXNYu7Y9+58k2tLhTMXQ+QN8ctNFijzLuBxJaLZ6TsN+tUpN+MhbI+6nGaBCRGT2rpw6y/AqkTFZckg==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "html-dom-parser": "html-dom-parser@3.1.3", + "react": "react@18.2.0", + "react-property": "react-property@2.0.0", + "style-to-js": "style-to-js@1.1.3" + } + }, + "html-to-text@9.0.3": { + "integrity": "sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==", + "dependencies": { + "@selderee/plugin-htmlparser2": "@selderee/plugin-htmlparser2@0.10.0", + "deepmerge": "deepmerge@4.3.1", + "dom-serializer": "dom-serializer@2.0.0", + "htmlparser2": "htmlparser2@8.0.2", + "selderee": "selderee@0.10.0" + } + }, + "html-to-text@9.0.5": { + "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", + "dependencies": { + "@selderee/plugin-htmlparser2": "@selderee/plugin-htmlparser2@0.11.0", + "deepmerge": "deepmerge@4.3.1", + "dom-serializer": "dom-serializer@2.0.0", + "htmlparser2": "htmlparser2@8.0.2", + "selderee": "selderee@0.11.0" + } + }, + "htmlparser2@8.0.1": { + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "entities": "entities@4.5.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" + } + }, + "humanize-ms@1.2.1": { + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "ms@2.1.3" + } + }, + "ini@1.3.8": { + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dependencies": {} + }, + "inline-style-parser@0.1.1": { + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dependencies": {} + }, + "invariant@2.2.4": { + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } + }, + "ip-address@9.0.5": { + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "jsbn@1.1.0", + "sprintf-js": "sprintf-js@1.1.3" + } + }, + "ip-regex@5.0.0": { + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "dependencies": {} + }, + "is-binary-path@2.1.0": { + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "binary-extensions@2.3.0" + } + }, + "is-buffer@1.1.6": { + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dependencies": {} + }, + "is-core-module@2.15.1": { + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": { + "hasown": "hasown@2.0.2" + } + }, + "is-extendable@0.1.1": { + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dependencies": {} + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dependencies": {} + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dependencies": {} + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "is-extglob@2.1.1" + } + }, + "is-ip@5.0.1": { + "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", + "dependencies": { + "ip-regex": "ip-regex@5.0.0", + "super-regex": "super-regex@0.2.0" + } + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dependencies": {} + }, + "is-regexp@3.1.0": { + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "dependencies": {} + }, + "is-whitespace@0.3.0": { + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "dependencies": {} + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dependencies": {} + }, + "jackspeak@3.4.3": { + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "@isaacs/cliui@8.0.2", + "@pkgjs/parseargs": "@pkgjs/parseargs@0.11.0" + } + }, + "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.4.5", + "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": {} + }, + "jsbn@1.1.0": { + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dependencies": {} + }, + "kind-of@3.2.2": { + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { - "es-define-property": "es-define-property@1.0.0" + "is-buffer": "is-buffer@1.1.6" } }, - "has-proto@1.0.3": { - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "leac@0.6.0": { + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", "dependencies": {} }, - "has-symbols@1.0.3": { - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "lilconfig@2.1.0": { + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dependencies": {} }, - "hasown@2.0.2": { - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "locate-path@5.0.0": { + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { - "function-bind": "function-bind@1.1.2" + "p-locate": "p-locate@4.1.0" } }, - "humanize-ms@1.2.1": { - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "ms": "ms@2.1.3" + "js-tokens": "js-tokens@4.0.0" } }, - "ip-address@9.0.5": { - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "lru-cache@10.4.3": { + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dependencies": {} + }, + "lucide-react@0.387.0_react@18.3.1": { + "integrity": "sha512-NyB4oJZ0pzLHT/QgMpgCPbez6yqvz8QPBocMJBXQCInPpXcQVCUpcU1CDlRG8mT2j0KqodLQYp+F5zn8U86sXg==", "dependencies": { - "jsbn": "jsbn@1.1.0", - "sprintf-js": "sprintf-js@1.1.3" + "react": "react@18.3.1" } }, - "is-fullwidth-code-point@3.0.0": { - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "marked@7.0.4": { + "integrity": "sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==", "dependencies": {} }, - "jsbn@1.1.0": { - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "md-to-react-email@5.0.2_react@18.3.1": { + "integrity": "sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==", + "dependencies": { + "marked": "marked@7.0.4", + "react": "react@18.3.1" + } + }, + "merge2@1.4.1": { + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dependencies": {} }, - "locate-path@5.0.0": { - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "micromatch@4.0.8": { + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { - "p-locate": "p-locate@4.1.0" + "braces": "braces@3.0.3", + "picomatch": "picomatch@2.3.1" } }, "mime-db@1.52.0": { @@ -309,10 +1423,57 @@ "mime-db": "mime-db@1.52.0" } }, + "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" + } + }, + "minimist@1.2.8": { + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dependencies": {} + }, + "minipass@7.1.2": { + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dependencies": {} + }, "ms@2.1.3": { "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dependencies": {} }, + "nanoid@3.3.7": { + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dependencies": {} + }, + "next@13.5.7_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "integrity": "sha512-W7KIRTE+hPcgGdq89P3mQLDX3m7pJ6nxSyC+YxYaUExE+cS4UledB+Ntk98tKoyhsv6fjb2TRAnD7VDvoqmeFg==", + "dependencies": { + "@next/env": "@next/env@13.5.7", + "@next/swc-darwin-arm64": "@next/swc-darwin-arm64@13.5.7", + "@next/swc-darwin-x64": "@next/swc-darwin-x64@13.5.7", + "@next/swc-linux-arm64-gnu": "@next/swc-linux-arm64-gnu@13.5.7", + "@next/swc-linux-arm64-musl": "@next/swc-linux-arm64-musl@13.5.7", + "@next/swc-linux-x64-gnu": "@next/swc-linux-x64-gnu@13.5.7", + "@next/swc-linux-x64-musl": "@next/swc-linux-x64-musl@13.5.7", + "@next/swc-win32-arm64-msvc": "@next/swc-win32-arm64-msvc@13.5.7", + "@next/swc-win32-ia32-msvc": "@next/swc-win32-ia32-msvc@13.5.7", + "@next/swc-win32-x64-msvc": "@next/swc-win32-x64-msvc@13.5.7", + "@swc/helpers": "@swc/helpers@0.5.2", + "busboy": "busboy@1.6.0", + "caniuse-lite": "caniuse-lite@1.0.30001669", + "postcss": "postcss@8.4.31", + "react": "react@18.3.1", + "react-dom": "react-dom@18.3.1_react@18.3.1", + "styled-jsx": "styled-jsx@5.1.1_react@18.3.1", + "watchpack": "watchpack@2.4.0" + } + }, "node-domexception@1.0.0": { "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dependencies": {} @@ -323,6 +1484,20 @@ "whatwg-url": "whatwg-url@5.0.0" } }, + "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": {} + }, + "object-hash@3.0.0": { + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dependencies": {} + }, "object-inspect@1.13.2": { "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dependencies": {} @@ -357,10 +1532,152 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dependencies": {} }, + "package-json-from-dist@1.0.1": { + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dependencies": {} + }, + "parse-domain@8.2.2": { + "integrity": "sha512-CoksenD3UDqphCHlXIcNh/TX0dsYLHo6dSAUC/QBcJRWJXcV5rc1mwsS4WbhYGu4LD4Uxc0v3ZzGo+OHCGsLcw==", + "dependencies": { + "is-ip": "is-ip@5.0.1" + } + }, + "parseley@0.11.0": { + "integrity": "sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==", + "dependencies": { + "leac": "leac@0.6.0", + "peberminta": "peberminta@0.8.0" + } + }, + "parseley@0.12.1": { + "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", + "dependencies": { + "leac": "leac@0.6.0", + "peberminta": "peberminta@0.9.0" + } + }, "path-exists@4.0.0": { "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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" + } + }, + "peberminta@0.8.0": { + "integrity": "sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==", + "dependencies": {} + }, + "peberminta@0.9.0": { + "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", + "dependencies": {} + }, + "picocolors@1.1.0": { + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dependencies": {} + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dependencies": {} + }, + "pify@2.3.0": { + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dependencies": {} + }, + "postcss-css-variables@0.18.0_postcss@8.4.21": { + "integrity": "sha512-lYS802gHbzn1GI+lXvy9MYIYDuGnl1WB4FTKoqMQqJ3Mab09A7a/1wZvGTkCEZJTM8mSbIyb1mJYn8f0aPye0Q==", + "dependencies": { + "balanced-match": "balanced-match@1.0.2", + "escape-string-regexp": "escape-string-regexp@1.0.5", + "extend": "extend@3.0.2", + "postcss": "postcss@8.4.21" + } + }, + "postcss-import@14.1.0_postcss@8.4.21": { + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dependencies": { + "postcss": "postcss@8.4.21", + "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.21": { + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "camelcase-css@2.0.1", + "postcss": "postcss@8.4.21" + } + }, + "postcss-load-config@3.1.4_postcss@8.4.21": { + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dependencies": { + "lilconfig": "lilconfig@2.1.0", + "postcss": "postcss@8.4.21", + "yaml": "yaml@1.10.2" + } + }, + "postcss-nested@6.0.0_postcss@8.4.21": { + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dependencies": { + "postcss": "postcss@8.4.21", + "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.21": { + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dependencies": { + "nanoid": "nanoid@3.3.7", + "picocolors": "picocolors@1.1.0", + "source-map-js": "source-map-js@1.2.1" + } + }, + "postcss@8.4.31": { + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dependencies": { + "nanoid": "nanoid@3.3.7", + "picocolors": "picocolors@1.1.0", + "source-map-js": "source-map-js@1.2.1" + } + }, + "pretty@2.0.0": { + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dependencies": { + "condense-newlines": "condense-newlines@0.2.1", + "extend-shallow": "extend-shallow@2.0.1", + "js-beautify": "js-beautify@1.15.1" + } + }, + "prismjs@1.29.0": { + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dependencies": {} + }, + "proto-list@1.2.4": { + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dependencies": {} + }, "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dependencies": {} @@ -371,6 +1688,102 @@ "side-channel": "side-channel@1.0.6" } }, + "queue-microtask@1.2.3": { + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dependencies": {} + }, + "quick-lru@5.1.1": { + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dependencies": {} + }, + "react-dom@18.2.0_react@18.2.0": { + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0", + "react": "react@18.2.0", + "scheduler": "scheduler@0.23.2" + } + }, + "react-dom@18.3.1_react@18.3.1": { + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0", + "react": "react@18.3.1", + "scheduler": "scheduler@0.23.2" + } + }, + "react-hook-form@7.53.1_react@18.3.1": { + "integrity": "sha512-6aiQeBda4zjcuaugWvim9WsGqisoUk+etmFEsSUMm451/Ic8L/UAb7sRtMj3V+Hdzm6mMjU1VhiSzYUZeBm0Vg==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "react-promise-suspense@0.3.4": { + "integrity": "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==", + "dependencies": { + "fast-deep-equal": "fast-deep-equal@2.0.1" + } + }, + "react-property@2.0.0": { + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==", + "dependencies": {} + }, + "react-remove-scroll-bar@2.3.6_react@18.3.1": { + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react": "react@18.3.1", + "react-style-singleton": "react-style-singleton@2.2.1_react@18.3.1", + "tslib": "tslib@2.7.0" + } + }, + "react-remove-scroll@2.6.0_react@18.3.1": { + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dependencies": { + "react": "react@18.3.1", + "react-remove-scroll-bar": "react-remove-scroll-bar@2.3.6_react@18.3.1", + "react-style-singleton": "react-style-singleton@2.2.1_react@18.3.1", + "tslib": "tslib@2.7.0", + "use-callback-ref": "use-callback-ref@1.3.2_react@18.3.1", + "use-sidecar": "use-sidecar@1.1.2_react@18.3.1" + } + }, + "react-style-singleton@2.2.1_react@18.3.1": { + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "get-nonce@1.0.1", + "invariant": "invariant@2.2.4", + "react": "react@18.3.1", + "tslib": "tslib@2.7.0" + } + }, + "react@18.2.0": { + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } + }, + "react@18.3.1": { + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } + }, + "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" + } + }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dependencies": {} + }, "require-directory@2.1.1": { "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dependencies": {} @@ -379,6 +1792,52 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dependencies": {} }, + "resend@4.0.0_react@18.3.1": { + "integrity": "sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==", + "dependencies": { + "@react-email/render": "@react-email/render@0.0.17_react@18.3.1_react-dom@18.3.1__react@18.3.1" + } + }, + "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" + } + }, + "reusify@1.0.4": { + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dependencies": {} + }, + "run-parallel@1.2.0": { + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dependencies": { + "queue-microtask": "queue-microtask@1.2.3" + } + }, + "scheduler@0.23.2": { + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } + }, + "selderee@0.10.0": { + "integrity": "sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==", + "dependencies": { + "parseley": "parseley@0.11.0" + } + }, + "selderee@0.11.0": { + "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", + "dependencies": { + "parseley": "parseley@0.12.1" + } + }, + "semver@7.6.3": { + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dependencies": {} + }, "set-blocking@2.0.0": { "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dependencies": {} @@ -394,6 +1853,16 @@ "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": { @@ -403,6 +1872,10 @@ "object-inspect": "object-inspect@1.13.2" } }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dependencies": {} + }, "smart-buffer@4.2.0": { "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dependencies": {} @@ -414,10 +1887,18 @@ "smart-buffer": "smart-buffer@4.2.0" } }, + "source-map-js@1.2.1": { + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dependencies": {} + }, "sprintf-js@1.1.3": { "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dependencies": {} }, + "streamsearch@1.1.0": { + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dependencies": {} + }, "string-width@4.2.3": { "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { @@ -426,16 +1907,113 @@ "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" + } + }, "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" + } + }, + "style-to-js@1.1.3": { + "integrity": "sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ==", + "dependencies": { + "style-to-object": "style-to-object@0.4.1" + } + }, + "style-to-object@0.4.1": { + "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", + "dependencies": { + "inline-style-parser": "inline-style-parser@0.1.1" + } + }, + "styled-jsx@5.1.1_react@18.3.1": { + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "client-only@0.0.1", + "react": "react@18.3.1" + } + }, + "super-regex@0.2.0": { + "integrity": "sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==", + "dependencies": { + "clone-regexp": "clone-regexp@3.0.0", + "function-timeout": "function-timeout@0.1.1", + "time-span": "time-span@5.1.0" + } + }, + "supports-preserve-symlinks-flag@1.0.0": { + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dependencies": {} + }, + "tailwindcss@3.2.7_postcss@8.4.21": { + "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", + "dependencies": { + "arg": "arg@5.0.2", + "chokidar": "chokidar@3.6.0", + "color-name": "color-name@1.1.4", + "detective": "detective@5.2.1", + "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", + "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.21", + "postcss-import": "postcss-import@14.1.0_postcss@8.4.21", + "postcss-js": "postcss-js@4.0.1_postcss@8.4.21", + "postcss-load-config": "postcss-load-config@3.1.4_postcss@8.4.21", + "postcss-nested": "postcss-nested@6.0.0_postcss@8.4.21", + "postcss-selector-parser": "postcss-selector-parser@6.1.2", + "postcss-value-parser": "postcss-value-parser@4.2.0", + "quick-lru": "quick-lru@5.1.1", + "resolve": "resolve@1.22.8" + } + }, + "time-span@5.1.0": { + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dependencies": { + "convert-hrtime": "convert-hrtime@5.0.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": {} }, + "tslib@2.7.0": { + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dependencies": {} + }, + "tw-to-css@0.0.11_postcss@8.4.21": { + "integrity": "sha512-uIJuEBIwyHzZg9xyGyEgDWHIkbAwEC4bhEHQ4THPuN5SToR7Zlhes5ffMjqtrv+WdtTmudTHTdc9VwUldy0FxQ==", + "dependencies": { + "postcss": "postcss@8.4.21", + "postcss-css-variables": "postcss-css-variables@0.18.0_postcss@8.4.21", + "tailwindcss": "tailwindcss@3.2.7_postcss@8.4.21" + } + }, "underscore@1.13.7": { "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "dependencies": {} @@ -444,6 +2022,38 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dependencies": {} }, + "use-callback-ref@1.3.2_react@18.3.1": { + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "react": "react@18.3.1", + "tslib": "tslib@2.7.0" + } + }, + "use-sidecar@1.1.2_react@18.3.1": { + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "detect-node-es@1.1.0", + "react": "react@18.3.1", + "tslib": "tslib@2.7.0" + } + }, + "use-sync-external-store@1.2.2_react@18.3.1": { + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "dependencies": { + "react": "react@18.3.1" + } + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dependencies": {} + }, + "watchpack@2.4.0": { + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "glob-to-regexp@0.4.1", + "graceful-fs": "graceful-fs@4.2.11" + } + }, "web-streams-polyfill@4.0.0-beta.3": { "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "dependencies": {} @@ -463,6 +2073,12 @@ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dependencies": {} }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, "whois@2.14.2": { "integrity": "sha512-JzH7/WUC4L59hPKwc6lZ59OpeBDcG+axt9vBYeQg1DCtrlwyxTUzorhI58nEWHmN+R/RtiUi9MdQ6NE9TmPREQ==", "dependencies": { @@ -486,14 +2102,38 @@ "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" + } + }, "ws@8.18.0": { "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dependencies": {} }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dependencies": {} + }, "y18n@4.0.3": { "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dependencies": {} }, + "yaml@1.10.2": { + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dependencies": {} + }, "yargs-parser@18.1.3": { "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dependencies": { @@ -516,6 +2156,10 @@ "y18n": "y18n@4.0.3", "yargs-parser": "yargs-parser@18.1.3" } + }, + "zod@3.23.8": { + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dependencies": {} } } }, diff --git a/supabase/config.toml b/supabase/config.toml index 23e268d..feff573 100644 --- a/supabase/config.toml +++ b/supabase/config.toml @@ -49,3 +49,9 @@ vector_port = 54328 gcp_project_id = "" gcp_project_number = "" gcp_jwt_path = "supabase/gcloud.json" + +[functions.notify-domain-status-change] +enabled = true + +[functions.update-whois] +enabled = true diff --git a/supabase/functions/_email/StatusChangeNotificationEmail.tsx b/supabase/functions/_email/StatusChangeNotificationEmail.tsx new file mode 100644 index 0000000..a4883d9 --- /dev/null +++ b/supabase/functions/_email/StatusChangeNotificationEmail.tsx @@ -0,0 +1,151 @@ +import { + Body, + Column, + Container, + Head, + Heading, + Html, + Link, + Preview, + Row, + Section, + Text, +} from '@react-email/components' +import { format } from 'date-fns' +import * as React from 'react' + +interface StatusChangeNotificationEmailProps { + domain_name: string + previous_status: string + new_status: string + updated_at: Date +} + +export const StatusChangeNotificationEmail = ({ + domain_name, + previous_status, + new_status, + updated_at, +}: StatusChangeNotificationEmailProps) => { + const previewText = `Status update for ${domain_name}: ${previous_status} → ${new_status}` + + return ( + + + {previewText} + + + + Domain Status Update for {domain_name} + + +
+ Status changed from + + + + {previous_status} + + + to + + + {new_status} + + + + + Updated on {format(updated_at, "MMMM do, yyyy 'at' h:mm:ss a")} + +
+ + + This email was sent by{' '} + + side.domains + + . If you don't want to receive status notifications for this domain,{' '} + + visit the dashboard + + . + +
+ + + ) +} + +const main = { + backgroundColor: '#ffffff', + fontFamily: '-apple-system, "Segoe UI", sans-serif', +} + +const container = { + maxWidth: '600px', + margin: '0 auto', + padding: '20px', +} + +const heading = { + color: '#111827', + fontSize: '24px', + fontWeight: '400', + textAlign: 'left', + margin: '16px 0', +} + +const section = { + backgroundColor: '#f3f4f6', + borderRadius: '12px', + padding: '24px', + margin: '24px 0', +} + +const statusRow = { + display: 'flex', + alignItems: 'center', + gap: '12px', +} + +const statusText = { + color: '#4b5563', + fontSize: '16px', + margin: '12px 0', +} + +const statusTextTo = { + ...statusText, + margin: '12px', +} + +const statusPill = { + backgroundColor: '#6b7280', + color: '#ffffff', + padding: '8px 16px', + borderRadius: '16px', + fontSize: '14px', + fontWeight: '500', + display: 'inline-block', +} + +const timestamp = { + color: '#6b7280', + fontSize: '14px', + margin: '20px 0 0 0', +} + +const footer = { + color: '#6b7280', + fontSize: '14px', + lineHeight: '24px', + margin: '32px 0', + textAlign: 'center', +} + +const link = { + color: '#2563eb', + textDecoration: 'underline', +} + +export default StatusChangeNotificationEmail diff --git a/supabase/functions/import_map.json b/supabase/functions/import_map.json index ba71c41..433a058 100644 --- a/supabase/functions/import_map.json +++ b/supabase/functions/import_map.json @@ -1,5 +1,10 @@ { "imports": { - "@supabase/supabase-js": "jsr:@supabase/supabase-js@^2.45.4" + "@react-email/components": "npm:@react-email/components@^0.0.25", + "@supabase/supabase-js": "jsr:@supabase/supabase-js@^2.45.4", + "date-fns": "npm:date-fns@^4.1.0", + "react": "npm:react@^18.3.1", + "react-dom": "npm:react-dom@^18.3.1", + "resend": "npm:resend@^4.0.0" } } diff --git a/supabase/functions/notify-domain-status-change/index.ts b/supabase/functions/notify-domain-status-change/index.ts new file mode 100644 index 0000000..76ae11a --- /dev/null +++ b/supabase/functions/notify-domain-status-change/index.ts @@ -0,0 +1,60 @@ +import 'jsr:@supabase/functions-js/edge-runtime.d.ts' + +import { createClient } from '@supabase/supabase-js' +import { Resend } from 'resend' +import StatusChangeNotificationEmail from '../_email/StatusChangeNotificationEmail.tsx' + +const resend = new Resend(Deno.env.get('RESEND_API_KEY')!) + +Deno.serve(async (req) => { + if (req.method !== 'POST') { + return new Response(null, { status: 405 }) + } + + const serviceRoleKey = Deno.env.get('SUPABASE_SERVICE_ROLE_KEY') + const token = req.headers.get('Authorization')?.replace('Bearer ', '') + + if (!serviceRoleKey || !token || token !== serviceRoleKey) { + return new Response(null, { status: 401 }) + } + + const supabaseAdmin = createClient( + Deno.env.get('SUPABASE_URL')!, + Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')! + ) + + const { new_status, previous_status, domain_name_id } = await req.json() + + const { data } = await supabaseAdmin + .from('domain_names') + .select() + .eq('id', domain_name_id) + .maybeSingle() + + if (!data) { + return new Response(null, { status: 404 }) + } + + const { domain_name, updated_at } = data + + const { error } = await resend.emails.send({ + from: 'side.domains Notifications ', + to: 'a@alaisteryoung.com', + subject: `Status update for ${data.domain_name}: ${previous_status} → ${new_status}`, + react: StatusChangeNotificationEmail({ + domain_name, + previous_status, + new_status, + updated_at, + }), + }) + + if (error) { + console.error('error sending email:', error) + return new Response(null, { status: 500 }) + } + + return new Response(JSON.stringify({ sent: true }), { + headers: { 'Content-Type': 'application/json' }, + }) +}) diff --git a/supabase/migrations/20240917123202_update_whois_function.sql b/supabase/migrations/20240917123202_update_whois_function.sql index fb4593a..859dba9 100644 --- a/supabase/migrations/20240917123202_update_whois_function.sql +++ b/supabase/migrations/20240917123202_update_whois_function.sql @@ -31,7 +31,9 @@ begin 'Content-Type','application/json', 'Authorization', concat('Bearer ', v_supabase_service_role_key) ), - body := concat('{"id": "', v_domain_name_id::text, '"}')::jsonb + body := jsonb_build_object( + 'id', v_domain_name_id::text + ) ); end; $$ language plpgsql security invoker volatile; diff --git a/supabase/migrations/20241026160057_notify_domain_status_change.sql b/supabase/migrations/20241026160057_notify_domain_status_change.sql new file mode 100644 index 0000000..c55a72c --- /dev/null +++ b/supabase/migrations/20241026160057_notify_domain_status_change.sql @@ -0,0 +1,41 @@ +create +or replace function public.notify_domain_status_change () returns trigger as $$ +declare + v_supabase_url text; + v_supabase_service_role_key text; +begin + select decrypted_secret into v_supabase_url + from vault.decrypted_secrets + where name = 'supabase-url'; + + select decrypted_secret into v_supabase_service_role_key + from vault.decrypted_secrets + where name = 'supabase-service-role-key'; + + perform net.http_post( + url := concat(v_supabase_url, '/functions/v1/notify-domain-status-change'), + headers := jsonb_build_object( + 'Content-Type','application/json', + 'Authorization', concat('Bearer ', v_supabase_service_role_key) + ), + body := jsonb_build_object( + 'domain_name_id', new.id, + 'previous_status', old.status, + 'new_status', new.status + ) + ); + + return new; +end; +$$ language plpgsql volatile; + +create trigger notify_domain_status_change +after +update on public.domain_names for each row when ( + new.status_change_notifications_enabled = true + and old.status <> 'unknown'::domain_name_status + and old.status is distinct + from + new.status +) +execute procedure public.notify_domain_status_change (); \ No newline at end of file