a tool for shared writing and social publishing

unified leaflet option menus in published post and home

+1713 -192
+4
app/(home-pages)/home/HomeLayout.tsx
··· 231 231 leaflet.leaflets_in_publications?.find((l) => l.doc)?.documents 232 232 ?.indexed_at 233 233 } 234 + document_uri={ 235 + leaflet.leaflets_in_publications?.find((l) => l.doc)?.documents 236 + ?.uri 237 + } 234 238 leaflet_id={leaflet.root_entity} 235 239 loggedIn={!!identity} 236 240 display={display}
+8 -3
app/(home-pages)/home/LeafletList/LeafletInfo.tsx
··· 2 2 import { PermissionToken } from "src/replicache"; 3 3 import { LeafletOptions } from "./LeafletOptions"; 4 4 import Link from "next/link"; 5 - import { useState } from "react"; 5 + import { use, useState } from "react"; 6 6 import { theme } from "tailwind.config"; 7 7 import { TemplateSmall } from "components/Icons/TemplateSmall"; 8 8 import { timeAgo } from "src/utils/timeAgo"; 9 + import { usePublishLink } from "components/ShareOptions"; 9 10 10 11 export const LeafletInfo = (props: { 11 12 title?: string; ··· 19 20 display: "grid" | "list"; 20 21 added_at: string; 21 22 publishedAt?: string; 23 + document_uri?: string; 22 24 }) => { 23 25 let [prefetch, setPrefetch] = useState(false); 24 26 let prettyCreatedAt = props.added_at ? timeAgo(props.added_at) : ""; 25 27 26 28 let prettyPublishedAt = props.publishedAt ? timeAgo(props.publishedAt) : ""; 27 29 30 + let shareLink = usePublishLink(); 31 + console.log(shareLink); 28 32 return ( 29 33 <div 30 34 className={`leafletInfo w-full min-w-0 flex flex-col ${props.className}`} ··· 51 55 <LeafletOptions 52 56 leaflet={props.token} 53 57 isTemplate={props.isTemplate} 54 - loggedIn={props.loggedIn} 55 - added_at={props.added_at} 58 + draft={props.draft} 59 + document_uri={props.document_uri} 60 + shareLink={shareLink} 56 61 /> 57 62 </div> 58 63 </div>
+1
app/(home-pages)/home/LeafletList/LeafletListItem.tsx
··· 16 16 draft?: boolean; 17 17 published?: boolean; 18 18 publishedAt?: string; 19 + document_uri?: string; 19 20 index: number; 20 21 isHidden: boolean; 21 22 showPreview?: boolean;
+161 -82
app/(home-pages)/home/LeafletList/LeafletOptions.tsx
··· 4 4 import { useReplicache, type PermissionToken } from "src/replicache"; 5 5 import { hideDoc } from "../storage"; 6 6 import { useState } from "react"; 7 - import { ButtonPrimary } from "components/Buttons"; 7 + import { ButtonPrimary, ButtonTertiary } from "components/Buttons"; 8 8 import { useTemplateState } from "../Actions/CreateNewButton"; 9 9 import { useSmoker, useToaster } from "components/Toast"; 10 10 import { removeLeafletFromHome } from "actions/removeLeafletFromHome"; ··· 14 14 import { TemplateRemoveSmall } from "components/Icons/TemplateRemoveSmall"; 15 15 import { TemplateSmall } from "components/Icons/TemplateSmall"; 16 16 import { MoreOptionsVerticalTiny } from "components/Icons/MoreOptionsVerticalTiny"; 17 - import { addLeafletToHome } from "actions/addLeafletToHome"; 17 + import { DeleteSmall } from "components/Icons/DeleteSmall"; 18 + import { deleteLeaflet } from "actions/deleteLeaflet"; 19 + import { ArchiveSmall } from "components/Icons/ArchiveSmall"; 20 + import { UnpublishSmall } from "components/Icons/UnpublishSmall"; 21 + import { 22 + deletePost, 23 + unpublishPost, 24 + } from "app/lish/[did]/[publication]/dashboard/deletePost"; 25 + import { usePublicationData } from "app/lish/[did]/[publication]/dashboard/PublicationSWRProvider"; 26 + import { ShareButton } from "components/ShareOptions"; 27 + import { ShareSmall } from "components/Icons/ShareSmall"; 18 28 19 29 export const LeafletOptions = (props: { 20 30 leaflet: PermissionToken; 21 - isTemplate: boolean; 22 - loggedIn: boolean; 23 - added_at: string; 31 + isTemplate?: boolean; 32 + draft?: boolean; 33 + document_uri?: string; 34 + shareLink: string | undefined | null; 24 35 }) => { 36 + console.log("sharelink: " + props.shareLink); 25 37 let { mutate: mutateIdentity } = useIdentityData(); 26 - let [state, setState] = useState<"normal" | "template">("normal"); 38 + let [state, setState] = useState<"normal" | "template" | "areYouSure">( 39 + "normal", 40 + ); 27 41 let [open, setOpen] = useState(false); 28 42 let smoker = useSmoker(); 29 - let toaster = useToaster(); 30 43 return ( 31 44 <> 32 45 <Menu ··· 50 63 > 51 64 {state === "normal" ? ( 52 65 <> 66 + <ShareButton 67 + className="" 68 + text={ 69 + <div className="flex gap-2"> 70 + <ShareSmall /> 71 + Copy {props.document_uri ? "Post" : "Edit"} Link 72 + </div> 73 + } 74 + subtext="" 75 + smokerText="Link copied!" 76 + id="get-link" 77 + link={`/${props.leaflet.id}`} 78 + /> 79 + 53 80 {!props.isTemplate ? ( 54 81 <MenuItem 55 82 onSelect={(e) => { ··· 57 84 setState("template"); 58 85 }} 59 86 > 60 - <TemplateSmall /> Add as Template 87 + <TemplateSmall /> Use as Template 61 88 </MenuItem> 62 89 ) : ( 63 90 <MenuItem ··· 80 107 <TemplateRemoveSmall /> Remove from Templates 81 108 </MenuItem> 82 109 )} 83 - <MenuItem 84 - onSelect={async () => { 85 - if (props.loggedIn) { 86 - mutateIdentity( 87 - (s) => { 88 - if (!s) return s; 89 - return { 90 - ...s, 91 - permission_token_on_homepage: 92 - s.permission_token_on_homepage.filter( 93 - (ptrh) => 94 - ptrh.permission_tokens.id !== props.leaflet.id, 95 - ), 96 - }; 97 - }, 98 - { revalidate: false }, 99 - ); 100 - await removeLeafletFromHome([props.leaflet.id]); 101 - mutateIdentity(); 102 - } else { 103 - hideDoc(props.leaflet); 104 - } 105 - toaster({ 106 - content: ( 107 - <div className="font-bold"> 108 - Doc removed!{" "} 109 - <UndoRemoveFromHomeButton 110 - leaflet={props.leaflet} 111 - added_at={props.added_at} 112 - /> 113 - </div> 114 - ), 115 - type: "success", 116 - }); 117 - }} 118 - > 119 - <HideSmall /> 120 - Remove from Home 121 - </MenuItem> 110 + <hr className="border-border-light" /> 111 + {props.document_uri ? ( 112 + <PublishedPostOptions 113 + setState={setState} 114 + document_uri={props.document_uri} 115 + /> 116 + ) : ( 117 + <DefaultOptions setState={setState} draft={props.draft} /> 118 + )} 122 119 </> 123 120 ) : state === "template" ? ( 124 121 <AddTemplateForm 125 122 leaflet={props.leaflet} 126 123 close={() => setOpen(false)} 127 124 /> 125 + ) : state === "areYouSure" ? ( 126 + <DeleteAreYouSure 127 + backToMenu={() => setState("normal")} 128 + leaflet={props.leaflet} 129 + document_uri={props.document_uri} 130 + draft={props.draft} 131 + /> 128 132 ) : null} 129 133 </Menu> 130 134 </> 131 135 ); 132 136 }; 133 137 134 - const UndoRemoveFromHomeButton = (props: { 138 + const DefaultOptions = (props: { 139 + setState: (s: "areYouSure") => void; 140 + draft?: boolean; 141 + }) => { 142 + return ( 143 + <> 144 + <MenuItem onSelect={() => {}}> 145 + <ArchiveSmall /> 146 + Archive{props.draft && " Draft"} 147 + </MenuItem> 148 + <MenuItem 149 + onSelect={(e) => { 150 + e.preventDefault(); 151 + props.setState("areYouSure"); 152 + }} 153 + > 154 + <DeleteSmall /> 155 + Delete Forever 156 + </MenuItem> 157 + </> 158 + ); 159 + }; 160 + 161 + const PublishedPostOptions = (props: { 162 + setState: (s: "areYouSure") => void; 163 + document_uri: string; 164 + }) => { 165 + let toaster = useToaster(); 166 + let { mutate, data } = usePublicationData(); 167 + return ( 168 + <> 169 + <MenuItem 170 + onSelect={async () => { 171 + if (props.document_uri) { 172 + await unpublishPost(props.document_uri); 173 + } 174 + toaster({ 175 + content: <div className="font-bold">Unpublished Post!</div>, 176 + type: "success", 177 + }); 178 + }} 179 + > 180 + <UnpublishSmall /> 181 + <div className="flex flex-col"> 182 + Unpublish Post 183 + <div className="text-tertiary text-sm font-normal!"> 184 + Move this post back into drafts 185 + </div> 186 + </div> 187 + </MenuItem> 188 + <MenuItem 189 + onSelect={(e) => { 190 + e.preventDefault(); 191 + props.setState("areYouSure"); 192 + }} 193 + > 194 + <DeleteSmall /> 195 + <div className="flex flex-col"> 196 + Delete Post 197 + <div className="text-tertiary text-sm font-normal!"> 198 + Unpublish AND delete 199 + </div> 200 + </div> 201 + </MenuItem> 202 + </> 203 + ); 204 + }; 205 + 206 + const DeleteAreYouSure = (props: { 207 + backToMenu: () => void; 208 + document_uri?: string; 135 209 leaflet: PermissionToken; 136 - added_at: string | undefined; 210 + draft?: boolean; 137 211 }) => { 138 212 let toaster = useToaster(); 139 - let { mutate } = useIdentityData(); 213 + 140 214 return ( 141 - <button 142 - onClick={async (e) => { 143 - await mutate( 144 - (identity) => { 145 - if (!identity) return; 146 - return { 147 - ...identity, 148 - permission_token_on_homepage: [ 149 - ...identity.permission_token_on_homepage, 150 - { 151 - created_at: props.added_at || new Date().toISOString(), 152 - permission_tokens: { 153 - ...props.leaflet, 154 - leaflets_in_publications: [], 155 - }, 156 - }, 157 - ], 158 - }; 159 - }, 160 - { revalidate: false }, 161 - ); 162 - await addLeafletToHome(props.leaflet.id); 163 - await mutate(); 215 + <div className="flex flex-col justify-center p-2 text-center"> 216 + <div className="text-primary font-bold"> Are you sure?</div> 217 + <div className="text-sm text-secondary"> 218 + This will delete it forever for everyone! 219 + </div> 220 + <div className="flex gap-2 mx-auto items-center mt-2"> 221 + <ButtonTertiary onClick={() => props.backToMenu()}> 222 + Nevermind 223 + </ButtonTertiary> 224 + <ButtonPrimary 225 + onClick={async () => { 226 + //TODO refresh local data 227 + if (props.document_uri) { 228 + await deletePost(props.document_uri); 229 + } 230 + deleteLeaflet(props.leaflet); 231 + console.log("deleting leaflet"); 164 232 165 - toaster({ 166 - content: <div className="font-bold">Recovered Doc!</div>, 167 - type: "success", 168 - }); 169 - }} 170 - className="underline" 171 - > 172 - Undo? 173 - </button> 233 + toaster({ 234 + content: ( 235 + <div className="font-bold"> 236 + Deleted{" "} 237 + {props.document_uri 238 + ? "Post!" 239 + : props.draft 240 + ? "Draft" 241 + : "Leaflet!"} 242 + </div> 243 + ), 244 + type: "success", 245 + }); 246 + console.log("toasting"); 247 + }} 248 + > 249 + Delete it! 250 + </ButtonPrimary> 251 + </div> 252 + </div> 174 253 ); 175 254 }; 176 255
+91 -106
app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx
··· 18 18 import { QuoteTiny } from "components/Icons/QuoteTiny"; 19 19 import { CommentTiny } from "components/Icons/CommentTiny"; 20 20 import { useLocalizedDate } from "src/hooks/useLocalizedDate"; 21 + import { LeafletOptions } from "app/(home-pages)/home/LeafletList/LeafletOptions"; 21 22 22 23 export function PublishedPostsList(props: { 23 24 searchValue: string; ··· 57 58 let quotes = doc.documents.document_mentions_in_bsky[0]?.count || 0; 58 59 let comments = doc.documents.comments_on_documents[0]?.count || 0; 59 60 61 + let postLink = data?.publication 62 + ? `${getPublicationURL(data?.publication)}/${new AtUri(doc.documents.uri).rkey}` 63 + : null; 64 + 60 65 return ( 61 66 <Fragment key={doc.documents?.uri}> 62 67 <div className="flex gap-2 w-full "> ··· 80 85 </a> 81 86 <div className="flex justify-start align-top flex-row gap-1"> 82 87 {leaflet && ( 83 - <SpeedyLink 84 - className="pt-[6px]" 85 - href={`/${leaflet.leaflet}`} 86 - > 87 - <EditTiny /> 88 - </SpeedyLink> 88 + <> 89 + <SpeedyLink 90 + className="pt-[6px]" 91 + href={`/${leaflet.leaflet}`} 92 + > 93 + <EditTiny /> 94 + </SpeedyLink> 95 + 96 + <LeafletOptions 97 + leaflet={leaflet?.permission_tokens!} 98 + document_uri={doc.documents.uri} 99 + shareLink={postLink} 100 + /> 101 + </> 89 102 )} 90 - <Options document_uri={doc.documents.uri} /> 91 103 </div> 92 104 </div> 93 105 ··· 133 145 ); 134 146 } 135 147 136 - let Options = (props: { document_uri: string }) => { 137 - return ( 138 - <Menu 139 - align="end" 140 - alignOffset={20} 141 - asChild 142 - trigger={ 143 - <button className="text-secondary rounded-md selected-outline border-transparent! hover:border-border! h-min"> 144 - <MoreOptionsVerticalTiny /> 145 - </button> 146 - } 147 - > 148 - <> 149 - <OptionsMenu document_uri={props.document_uri} /> 150 - </> 151 - </Menu> 152 - ); 153 - }; 148 + // function OptionsMenu(props: { document_uri: string }) { 149 + // let { mutate, data } = usePublicationData(); 150 + // let [state, setState] = useState<"normal" | "confirm">("normal"); 154 151 155 - function OptionsMenu(props: { document_uri: string }) { 156 - let { mutate, data } = usePublicationData(); 157 - let [state, setState] = useState<"normal" | "confirm">("normal"); 152 + // if (state === "normal") { 153 + // return ( 154 + // <> 155 + // <ShareButton 156 + // className="justify-end" 157 + // text={ 158 + // <div className="flex gap-2"> 159 + // Share Post Link 160 + // <ShareSmall /> 161 + // </div> 162 + // } 163 + // subtext="" 164 + // smokerText="Post link copied!" 165 + // id="get-post-link" 166 + // fullLink={postLink?.includes("https") ? postLink : undefined} 167 + // link={postLink} 168 + // /> 158 169 159 - let postLink = data?.publication 160 - ? `${getPublicationURL(data?.publication)}/${new AtUri(props.document_uri).rkey}` 161 - : null; 162 - 163 - if (state === "normal") { 164 - return ( 165 - <> 166 - <ShareButton 167 - className="justify-end" 168 - text={ 169 - <div className="flex gap-2"> 170 - Share Post Link 171 - <ShareSmall /> 172 - </div> 173 - } 174 - subtext="" 175 - smokerText="Post link copied!" 176 - id="get-post-link" 177 - fullLink={postLink?.includes("https") ? postLink : undefined} 178 - link={postLink} 179 - /> 180 - 181 - <hr className="border-border-light" /> 182 - <MenuItem 183 - className="justify-end" 184 - onSelect={async (e) => { 185 - e.preventDefault(); 186 - setState("confirm"); 187 - return; 188 - }} 189 - > 190 - Delete Post 191 - <DeleteSmall /> 192 - </MenuItem> 193 - </> 194 - ); 195 - } 196 - if (state === "confirm") { 197 - return ( 198 - <div className="flex flex-col items-center font-bold text-secondary px-2 py-1"> 199 - Are you sure? 200 - <div className="text-sm text-tertiary font-normal"> 201 - This action cannot be undone! 202 - </div> 203 - <ButtonPrimary 204 - className="mt-2" 205 - onClick={async () => { 206 - await mutate((data) => { 207 - if (!data) return data; 208 - return { 209 - ...data, 210 - publication: { 211 - ...data.publication!, 212 - leaflets_in_publications: 213 - data.publication?.leaflets_in_publications.filter( 214 - (l) => l.doc !== props.document_uri, 215 - ) || [], 216 - documents_in_publications: 217 - data.publication?.documents_in_publications.filter( 218 - (d) => d.documents?.uri !== props.document_uri, 219 - ) || [], 220 - }, 221 - }; 222 - }, false); 223 - await deletePost(props.document_uri); 224 - }} 225 - > 226 - Delete 227 - </ButtonPrimary> 228 - </div> 229 - ); 230 - } 231 - } 170 + // <hr className="border-border-light" /> 171 + // <MenuItem 172 + // className="justify-end" 173 + // onSelect={async (e) => { 174 + // e.preventDefault(); 175 + // setState("confirm"); 176 + // return; 177 + // }} 178 + // > 179 + // Delete Post 180 + // <DeleteSmall /> 181 + // </MenuItem> 182 + // </> 183 + // ); 184 + // } 185 + // if (state === "confirm") { 186 + // return ( 187 + // <div className="flex flex-col items-center font-bold text-secondary px-2 py-1"> 188 + // Are you sure? 189 + // <div className="text-sm text-tertiary font-normal"> 190 + // This action cannot be undone! 191 + // </div> 192 + // <ButtonPrimary 193 + // className="mt-2" 194 + // onClick={async () => { 195 + // await mutate((data) => { 196 + // if (!data) return data; 197 + // return { 198 + // ...data, 199 + // publication: { 200 + // ...data.publication!, 201 + // leaflets_in_publications: 202 + // data.publication?.leaflets_in_publications.filter( 203 + // (l) => l.doc !== props.document_uri, 204 + // ) || [], 205 + // documents_in_publications: 206 + // data.publication?.documents_in_publications.filter( 207 + // (d) => d.documents?.uri !== props.document_uri, 208 + // ) || [], 209 + // }, 210 + // }; 211 + // }, false); 212 + // await deletePost(props.document_uri); 213 + // }} 214 + // > 215 + // Delete 216 + // </ButtonPrimary> 217 + // </div> 218 + // ); 219 + // } 220 + //} 232 221 233 222 function PublishedDate(props: { dateString: string }) { 234 223 const formattedDate = useLocalizedDate(props.dateString, { ··· 237 226 day: "2-digit", 238 227 }); 239 228 240 - return ( 241 - <p className="text-sm text-tertiary"> 242 - Published {formattedDate} 243 - </p> 244 - ); 229 + return <p className="text-sm text-tertiary">Published {formattedDate}</p>; 245 230 }
+24
app/lish/[did]/[publication]/dashboard/deletePost.ts
··· 30 30 .delete() 31 31 .eq("doc", document_uri), 32 32 ]); 33 + console.log("called delete"); 34 + 35 + return revalidatePath("/lish/[did]/[publication]/dashboard", "layout"); 36 + } 37 + 38 + export async function unpublishPost(document_uri: string) { 39 + let identity = await getIdentityData(); 40 + if (!identity || !identity.atp_did) throw new Error("No Identity"); 41 + 42 + const oauthClient = await createOauthClient(); 43 + let credentialSession = await oauthClient.restore(identity.atp_did); 44 + let agent = new AtpBaseClient( 45 + credentialSession.fetchHandler.bind(credentialSession), 46 + ); 47 + let uri = new AtUri(document_uri); 48 + if (uri.host !== identity.atp_did) return; 49 + 50 + await Promise.all([ 51 + agent.pub.leaflet.document.delete({ 52 + repo: credentialSession.did, 53 + rkey: uri.rkey, 54 + }), 55 + supabaseServerClient.from("documents").delete().eq("uri", document_uri), 56 + ]); 33 57 return revalidatePath("/lish/[did]/[publication]/dashboard", "layout"); 34 58 }
-1
app/lish/createPub/UpdatePubForm.tsx
··· 66 66 if (!pubData) return; 67 67 e.preventDefault(); 68 68 props.setLoadingAction(true); 69 - console.log("step 1:update"); 70 69 let data = await updatePublication({ 71 70 uri: pubData.uri, 72 71 name: nameValue,
+1423
package-lock.json
··· 18 18 "@atproto/syntax": "^0.3.3", 19 19 "@atproto/xrpc": "^0.7.5", 20 20 "@atproto/xrpc-server": "^0.9.5", 21 + "@esbuild/darwin-arm64": "^0.27.0", 21 22 "@hono/node-server": "^1.14.3", 22 23 "@mdx-js/loader": "^3.1.0", 23 24 "@mdx-js/react": "^3.1.0", ··· 714 715 "source-map-support": "^0.5.21" 715 716 } 716 717 }, 718 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { 719 + "version": "0.18.20", 720 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 721 + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 722 + "cpu": [ 723 + "arm" 724 + ], 725 + "dev": true, 726 + "optional": true, 727 + "os": [ 728 + "android" 729 + ], 730 + "engines": { 731 + "node": ">=12" 732 + } 733 + }, 734 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { 735 + "version": "0.18.20", 736 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 737 + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 738 + "cpu": [ 739 + "arm64" 740 + ], 741 + "dev": true, 742 + "optional": true, 743 + "os": [ 744 + "android" 745 + ], 746 + "engines": { 747 + "node": ">=12" 748 + } 749 + }, 750 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { 751 + "version": "0.18.20", 752 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 753 + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 754 + "cpu": [ 755 + "x64" 756 + ], 757 + "dev": true, 758 + "optional": true, 759 + "os": [ 760 + "android" 761 + ], 762 + "engines": { 763 + "node": ">=12" 764 + } 765 + }, 766 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { 767 + "version": "0.18.20", 768 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 769 + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 770 + "cpu": [ 771 + "arm64" 772 + ], 773 + "dev": true, 774 + "optional": true, 775 + "os": [ 776 + "darwin" 777 + ], 778 + "engines": { 779 + "node": ">=12" 780 + } 781 + }, 782 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { 783 + "version": "0.18.20", 784 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 785 + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 786 + "cpu": [ 787 + "x64" 788 + ], 789 + "dev": true, 790 + "optional": true, 791 + "os": [ 792 + "darwin" 793 + ], 794 + "engines": { 795 + "node": ">=12" 796 + } 797 + }, 798 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { 799 + "version": "0.18.20", 800 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 801 + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 802 + "cpu": [ 803 + "arm64" 804 + ], 805 + "dev": true, 806 + "optional": true, 807 + "os": [ 808 + "freebsd" 809 + ], 810 + "engines": { 811 + "node": ">=12" 812 + } 813 + }, 814 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { 815 + "version": "0.18.20", 816 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 817 + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 818 + "cpu": [ 819 + "x64" 820 + ], 821 + "dev": true, 822 + "optional": true, 823 + "os": [ 824 + "freebsd" 825 + ], 826 + "engines": { 827 + "node": ">=12" 828 + } 829 + }, 830 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { 831 + "version": "0.18.20", 832 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 833 + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 834 + "cpu": [ 835 + "arm" 836 + ], 837 + "dev": true, 838 + "optional": true, 839 + "os": [ 840 + "linux" 841 + ], 842 + "engines": { 843 + "node": ">=12" 844 + } 845 + }, 846 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { 847 + "version": "0.18.20", 848 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 849 + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 850 + "cpu": [ 851 + "arm64" 852 + ], 853 + "dev": true, 854 + "optional": true, 855 + "os": [ 856 + "linux" 857 + ], 858 + "engines": { 859 + "node": ">=12" 860 + } 861 + }, 862 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { 863 + "version": "0.18.20", 864 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 865 + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 866 + "cpu": [ 867 + "ia32" 868 + ], 869 + "dev": true, 870 + "optional": true, 871 + "os": [ 872 + "linux" 873 + ], 874 + "engines": { 875 + "node": ">=12" 876 + } 877 + }, 878 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { 879 + "version": "0.18.20", 880 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 881 + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 882 + "cpu": [ 883 + "loong64" 884 + ], 885 + "dev": true, 886 + "optional": true, 887 + "os": [ 888 + "linux" 889 + ], 890 + "engines": { 891 + "node": ">=12" 892 + } 893 + }, 894 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { 895 + "version": "0.18.20", 896 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 897 + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 898 + "cpu": [ 899 + "mips64el" 900 + ], 901 + "dev": true, 902 + "optional": true, 903 + "os": [ 904 + "linux" 905 + ], 906 + "engines": { 907 + "node": ">=12" 908 + } 909 + }, 910 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { 911 + "version": "0.18.20", 912 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 913 + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 914 + "cpu": [ 915 + "ppc64" 916 + ], 917 + "dev": true, 918 + "optional": true, 919 + "os": [ 920 + "linux" 921 + ], 922 + "engines": { 923 + "node": ">=12" 924 + } 925 + }, 926 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { 927 + "version": "0.18.20", 928 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 929 + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 930 + "cpu": [ 931 + "riscv64" 932 + ], 933 + "dev": true, 934 + "optional": true, 935 + "os": [ 936 + "linux" 937 + ], 938 + "engines": { 939 + "node": ">=12" 940 + } 941 + }, 942 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { 943 + "version": "0.18.20", 944 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 945 + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 946 + "cpu": [ 947 + "s390x" 948 + ], 949 + "dev": true, 950 + "optional": true, 951 + "os": [ 952 + "linux" 953 + ], 954 + "engines": { 955 + "node": ">=12" 956 + } 957 + }, 717 958 "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { 718 959 "version": "0.18.20", 719 960 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", ··· 730 971 "node": ">=12" 731 972 } 732 973 }, 974 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { 975 + "version": "0.18.20", 976 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 977 + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 978 + "cpu": [ 979 + "x64" 980 + ], 981 + "dev": true, 982 + "optional": true, 983 + "os": [ 984 + "netbsd" 985 + ], 986 + "engines": { 987 + "node": ">=12" 988 + } 989 + }, 990 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { 991 + "version": "0.18.20", 992 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 993 + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 994 + "cpu": [ 995 + "x64" 996 + ], 997 + "dev": true, 998 + "optional": true, 999 + "os": [ 1000 + "openbsd" 1001 + ], 1002 + "engines": { 1003 + "node": ">=12" 1004 + } 1005 + }, 1006 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { 1007 + "version": "0.18.20", 1008 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 1009 + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 1010 + "cpu": [ 1011 + "x64" 1012 + ], 1013 + "dev": true, 1014 + "optional": true, 1015 + "os": [ 1016 + "sunos" 1017 + ], 1018 + "engines": { 1019 + "node": ">=12" 1020 + } 1021 + }, 1022 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { 1023 + "version": "0.18.20", 1024 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 1025 + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 1026 + "cpu": [ 1027 + "arm64" 1028 + ], 1029 + "dev": true, 1030 + "optional": true, 1031 + "os": [ 1032 + "win32" 1033 + ], 1034 + "engines": { 1035 + "node": ">=12" 1036 + } 1037 + }, 1038 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { 1039 + "version": "0.18.20", 1040 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 1041 + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 1042 + "cpu": [ 1043 + "ia32" 1044 + ], 1045 + "dev": true, 1046 + "optional": true, 1047 + "os": [ 1048 + "win32" 1049 + ], 1050 + "engines": { 1051 + "node": ">=12" 1052 + } 1053 + }, 1054 + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { 1055 + "version": "0.18.20", 1056 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 1057 + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 1058 + "cpu": [ 1059 + "x64" 1060 + ], 1061 + "dev": true, 1062 + "optional": true, 1063 + "os": [ 1064 + "win32" 1065 + ], 1066 + "engines": { 1067 + "node": ">=12" 1068 + } 1069 + }, 733 1070 "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { 734 1071 "version": "0.18.20", 735 1072 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", ··· 799 1136 "esbuild": "*" 800 1137 } 801 1138 }, 1139 + "node_modules/@esbuild/aix-ppc64": { 1140 + "version": "0.25.4", 1141 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", 1142 + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", 1143 + "cpu": [ 1144 + "ppc64" 1145 + ], 1146 + "dev": true, 1147 + "optional": true, 1148 + "os": [ 1149 + "aix" 1150 + ], 1151 + "engines": { 1152 + "node": ">=18" 1153 + } 1154 + }, 1155 + "node_modules/@esbuild/android-arm": { 1156 + "version": "0.25.4", 1157 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", 1158 + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", 1159 + "cpu": [ 1160 + "arm" 1161 + ], 1162 + "dev": true, 1163 + "optional": true, 1164 + "os": [ 1165 + "android" 1166 + ], 1167 + "engines": { 1168 + "node": ">=18" 1169 + } 1170 + }, 1171 + "node_modules/@esbuild/android-arm64": { 1172 + "version": "0.25.4", 1173 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", 1174 + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", 1175 + "cpu": [ 1176 + "arm64" 1177 + ], 1178 + "dev": true, 1179 + "optional": true, 1180 + "os": [ 1181 + "android" 1182 + ], 1183 + "engines": { 1184 + "node": ">=18" 1185 + } 1186 + }, 1187 + "node_modules/@esbuild/android-x64": { 1188 + "version": "0.25.4", 1189 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", 1190 + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", 1191 + "cpu": [ 1192 + "x64" 1193 + ], 1194 + "dev": true, 1195 + "optional": true, 1196 + "os": [ 1197 + "android" 1198 + ], 1199 + "engines": { 1200 + "node": ">=18" 1201 + } 1202 + }, 1203 + "node_modules/@esbuild/darwin-arm64": { 1204 + "version": "0.27.0", 1205 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", 1206 + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", 1207 + "cpu": [ 1208 + "arm64" 1209 + ], 1210 + "os": [ 1211 + "darwin" 1212 + ], 1213 + "engines": { 1214 + "node": ">=18" 1215 + } 1216 + }, 1217 + "node_modules/@esbuild/darwin-x64": { 1218 + "version": "0.25.4", 1219 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", 1220 + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", 1221 + "cpu": [ 1222 + "x64" 1223 + ], 1224 + "dev": true, 1225 + "optional": true, 1226 + "os": [ 1227 + "darwin" 1228 + ], 1229 + "engines": { 1230 + "node": ">=18" 1231 + } 1232 + }, 1233 + "node_modules/@esbuild/freebsd-arm64": { 1234 + "version": "0.25.4", 1235 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", 1236 + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", 1237 + "cpu": [ 1238 + "arm64" 1239 + ], 1240 + "dev": true, 1241 + "optional": true, 1242 + "os": [ 1243 + "freebsd" 1244 + ], 1245 + "engines": { 1246 + "node": ">=18" 1247 + } 1248 + }, 1249 + "node_modules/@esbuild/freebsd-x64": { 1250 + "version": "0.25.4", 1251 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", 1252 + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", 1253 + "cpu": [ 1254 + "x64" 1255 + ], 1256 + "dev": true, 1257 + "optional": true, 1258 + "os": [ 1259 + "freebsd" 1260 + ], 1261 + "engines": { 1262 + "node": ">=18" 1263 + } 1264 + }, 1265 + "node_modules/@esbuild/linux-arm": { 1266 + "version": "0.25.4", 1267 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", 1268 + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", 1269 + "cpu": [ 1270 + "arm" 1271 + ], 1272 + "dev": true, 1273 + "optional": true, 1274 + "os": [ 1275 + "linux" 1276 + ], 1277 + "engines": { 1278 + "node": ">=18" 1279 + } 1280 + }, 1281 + "node_modules/@esbuild/linux-arm64": { 1282 + "version": "0.25.4", 1283 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", 1284 + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", 1285 + "cpu": [ 1286 + "arm64" 1287 + ], 1288 + "dev": true, 1289 + "optional": true, 1290 + "os": [ 1291 + "linux" 1292 + ], 1293 + "engines": { 1294 + "node": ">=18" 1295 + } 1296 + }, 1297 + "node_modules/@esbuild/linux-ia32": { 1298 + "version": "0.25.4", 1299 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", 1300 + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", 1301 + "cpu": [ 1302 + "ia32" 1303 + ], 1304 + "dev": true, 1305 + "optional": true, 1306 + "os": [ 1307 + "linux" 1308 + ], 1309 + "engines": { 1310 + "node": ">=18" 1311 + } 1312 + }, 1313 + "node_modules/@esbuild/linux-loong64": { 1314 + "version": "0.25.4", 1315 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", 1316 + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", 1317 + "cpu": [ 1318 + "loong64" 1319 + ], 1320 + "dev": true, 1321 + "optional": true, 1322 + "os": [ 1323 + "linux" 1324 + ], 1325 + "engines": { 1326 + "node": ">=18" 1327 + } 1328 + }, 1329 + "node_modules/@esbuild/linux-mips64el": { 1330 + "version": "0.25.4", 1331 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", 1332 + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", 1333 + "cpu": [ 1334 + "mips64el" 1335 + ], 1336 + "dev": true, 1337 + "optional": true, 1338 + "os": [ 1339 + "linux" 1340 + ], 1341 + "engines": { 1342 + "node": ">=18" 1343 + } 1344 + }, 1345 + "node_modules/@esbuild/linux-ppc64": { 1346 + "version": "0.25.4", 1347 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", 1348 + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", 1349 + "cpu": [ 1350 + "ppc64" 1351 + ], 1352 + "dev": true, 1353 + "optional": true, 1354 + "os": [ 1355 + "linux" 1356 + ], 1357 + "engines": { 1358 + "node": ">=18" 1359 + } 1360 + }, 1361 + "node_modules/@esbuild/linux-riscv64": { 1362 + "version": "0.25.4", 1363 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", 1364 + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", 1365 + "cpu": [ 1366 + "riscv64" 1367 + ], 1368 + "dev": true, 1369 + "optional": true, 1370 + "os": [ 1371 + "linux" 1372 + ], 1373 + "engines": { 1374 + "node": ">=18" 1375 + } 1376 + }, 1377 + "node_modules/@esbuild/linux-s390x": { 1378 + "version": "0.25.4", 1379 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", 1380 + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", 1381 + "cpu": [ 1382 + "s390x" 1383 + ], 1384 + "dev": true, 1385 + "optional": true, 1386 + "os": [ 1387 + "linux" 1388 + ], 1389 + "engines": { 1390 + "node": ">=18" 1391 + } 1392 + }, 802 1393 "node_modules/@esbuild/linux-x64": { 803 1394 "version": "0.25.4", 804 1395 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", ··· 816 1407 "node": ">=18" 817 1408 } 818 1409 }, 1410 + "node_modules/@esbuild/netbsd-arm64": { 1411 + "version": "0.25.4", 1412 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", 1413 + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", 1414 + "cpu": [ 1415 + "arm64" 1416 + ], 1417 + "dev": true, 1418 + "optional": true, 1419 + "os": [ 1420 + "netbsd" 1421 + ], 1422 + "engines": { 1423 + "node": ">=18" 1424 + } 1425 + }, 1426 + "node_modules/@esbuild/netbsd-x64": { 1427 + "version": "0.25.4", 1428 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", 1429 + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", 1430 + "cpu": [ 1431 + "x64" 1432 + ], 1433 + "dev": true, 1434 + "optional": true, 1435 + "os": [ 1436 + "netbsd" 1437 + ], 1438 + "engines": { 1439 + "node": ">=18" 1440 + } 1441 + }, 1442 + "node_modules/@esbuild/openbsd-arm64": { 1443 + "version": "0.25.4", 1444 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", 1445 + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", 1446 + "cpu": [ 1447 + "arm64" 1448 + ], 1449 + "dev": true, 1450 + "optional": true, 1451 + "os": [ 1452 + "openbsd" 1453 + ], 1454 + "engines": { 1455 + "node": ">=18" 1456 + } 1457 + }, 1458 + "node_modules/@esbuild/openbsd-x64": { 1459 + "version": "0.25.4", 1460 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", 1461 + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", 1462 + "cpu": [ 1463 + "x64" 1464 + ], 1465 + "dev": true, 1466 + "optional": true, 1467 + "os": [ 1468 + "openbsd" 1469 + ], 1470 + "engines": { 1471 + "node": ">=18" 1472 + } 1473 + }, 1474 + "node_modules/@esbuild/sunos-x64": { 1475 + "version": "0.25.4", 1476 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", 1477 + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", 1478 + "cpu": [ 1479 + "x64" 1480 + ], 1481 + "dev": true, 1482 + "optional": true, 1483 + "os": [ 1484 + "sunos" 1485 + ], 1486 + "engines": { 1487 + "node": ">=18" 1488 + } 1489 + }, 1490 + "node_modules/@esbuild/win32-arm64": { 1491 + "version": "0.25.4", 1492 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", 1493 + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", 1494 + "cpu": [ 1495 + "arm64" 1496 + ], 1497 + "dev": true, 1498 + "optional": true, 1499 + "os": [ 1500 + "win32" 1501 + ], 1502 + "engines": { 1503 + "node": ">=18" 1504 + } 1505 + }, 1506 + "node_modules/@esbuild/win32-ia32": { 1507 + "version": "0.25.4", 1508 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", 1509 + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", 1510 + "cpu": [ 1511 + "ia32" 1512 + ], 1513 + "dev": true, 1514 + "optional": true, 1515 + "os": [ 1516 + "win32" 1517 + ], 1518 + "engines": { 1519 + "node": ">=18" 1520 + } 1521 + }, 1522 + "node_modules/@esbuild/win32-x64": { 1523 + "version": "0.25.4", 1524 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", 1525 + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", 1526 + "cpu": [ 1527 + "x64" 1528 + ], 1529 + "dev": true, 1530 + "optional": true, 1531 + "os": [ 1532 + "win32" 1533 + ], 1534 + "engines": { 1535 + "node": ">=18" 1536 + } 1537 + }, 819 1538 "node_modules/@eslint-community/eslint-utils": { 820 1539 "version": "4.7.0", 821 1540 "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", ··· 8478 9197 "drizzle-kit": "bin.cjs" 8479 9198 } 8480 9199 }, 9200 + "node_modules/drizzle-kit/node_modules/@esbuild/aix-ppc64": { 9201 + "version": "0.19.12", 9202 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", 9203 + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", 9204 + "cpu": [ 9205 + "ppc64" 9206 + ], 9207 + "dev": true, 9208 + "optional": true, 9209 + "os": [ 9210 + "aix" 9211 + ], 9212 + "engines": { 9213 + "node": ">=12" 9214 + } 9215 + }, 9216 + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm": { 9217 + "version": "0.19.12", 9218 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", 9219 + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", 9220 + "cpu": [ 9221 + "arm" 9222 + ], 9223 + "dev": true, 9224 + "optional": true, 9225 + "os": [ 9226 + "android" 9227 + ], 9228 + "engines": { 9229 + "node": ">=12" 9230 + } 9231 + }, 9232 + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm64": { 9233 + "version": "0.19.12", 9234 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", 9235 + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", 9236 + "cpu": [ 9237 + "arm64" 9238 + ], 9239 + "dev": true, 9240 + "optional": true, 9241 + "os": [ 9242 + "android" 9243 + ], 9244 + "engines": { 9245 + "node": ">=12" 9246 + } 9247 + }, 9248 + "node_modules/drizzle-kit/node_modules/@esbuild/android-x64": { 9249 + "version": "0.19.12", 9250 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", 9251 + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", 9252 + "cpu": [ 9253 + "x64" 9254 + ], 9255 + "dev": true, 9256 + "optional": true, 9257 + "os": [ 9258 + "android" 9259 + ], 9260 + "engines": { 9261 + "node": ">=12" 9262 + } 9263 + }, 9264 + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-arm64": { 9265 + "version": "0.19.12", 9266 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", 9267 + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", 9268 + "cpu": [ 9269 + "arm64" 9270 + ], 9271 + "dev": true, 9272 + "optional": true, 9273 + "os": [ 9274 + "darwin" 9275 + ], 9276 + "engines": { 9277 + "node": ">=12" 9278 + } 9279 + }, 9280 + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-x64": { 9281 + "version": "0.19.12", 9282 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", 9283 + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", 9284 + "cpu": [ 9285 + "x64" 9286 + ], 9287 + "dev": true, 9288 + "optional": true, 9289 + "os": [ 9290 + "darwin" 9291 + ], 9292 + "engines": { 9293 + "node": ">=12" 9294 + } 9295 + }, 9296 + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-arm64": { 9297 + "version": "0.19.12", 9298 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", 9299 + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", 9300 + "cpu": [ 9301 + "arm64" 9302 + ], 9303 + "dev": true, 9304 + "optional": true, 9305 + "os": [ 9306 + "freebsd" 9307 + ], 9308 + "engines": { 9309 + "node": ">=12" 9310 + } 9311 + }, 9312 + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-x64": { 9313 + "version": "0.19.12", 9314 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", 9315 + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", 9316 + "cpu": [ 9317 + "x64" 9318 + ], 9319 + "dev": true, 9320 + "optional": true, 9321 + "os": [ 9322 + "freebsd" 9323 + ], 9324 + "engines": { 9325 + "node": ">=12" 9326 + } 9327 + }, 9328 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm": { 9329 + "version": "0.19.12", 9330 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", 9331 + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", 9332 + "cpu": [ 9333 + "arm" 9334 + ], 9335 + "dev": true, 9336 + "optional": true, 9337 + "os": [ 9338 + "linux" 9339 + ], 9340 + "engines": { 9341 + "node": ">=12" 9342 + } 9343 + }, 9344 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm64": { 9345 + "version": "0.19.12", 9346 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", 9347 + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", 9348 + "cpu": [ 9349 + "arm64" 9350 + ], 9351 + "dev": true, 9352 + "optional": true, 9353 + "os": [ 9354 + "linux" 9355 + ], 9356 + "engines": { 9357 + "node": ">=12" 9358 + } 9359 + }, 9360 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ia32": { 9361 + "version": "0.19.12", 9362 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", 9363 + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", 9364 + "cpu": [ 9365 + "ia32" 9366 + ], 9367 + "dev": true, 9368 + "optional": true, 9369 + "os": [ 9370 + "linux" 9371 + ], 9372 + "engines": { 9373 + "node": ">=12" 9374 + } 9375 + }, 9376 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-loong64": { 9377 + "version": "0.19.12", 9378 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", 9379 + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", 9380 + "cpu": [ 9381 + "loong64" 9382 + ], 9383 + "dev": true, 9384 + "optional": true, 9385 + "os": [ 9386 + "linux" 9387 + ], 9388 + "engines": { 9389 + "node": ">=12" 9390 + } 9391 + }, 9392 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-mips64el": { 9393 + "version": "0.19.12", 9394 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", 9395 + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", 9396 + "cpu": [ 9397 + "mips64el" 9398 + ], 9399 + "dev": true, 9400 + "optional": true, 9401 + "os": [ 9402 + "linux" 9403 + ], 9404 + "engines": { 9405 + "node": ">=12" 9406 + } 9407 + }, 9408 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ppc64": { 9409 + "version": "0.19.12", 9410 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", 9411 + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", 9412 + "cpu": [ 9413 + "ppc64" 9414 + ], 9415 + "dev": true, 9416 + "optional": true, 9417 + "os": [ 9418 + "linux" 9419 + ], 9420 + "engines": { 9421 + "node": ">=12" 9422 + } 9423 + }, 9424 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-riscv64": { 9425 + "version": "0.19.12", 9426 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", 9427 + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", 9428 + "cpu": [ 9429 + "riscv64" 9430 + ], 9431 + "dev": true, 9432 + "optional": true, 9433 + "os": [ 9434 + "linux" 9435 + ], 9436 + "engines": { 9437 + "node": ">=12" 9438 + } 9439 + }, 9440 + "node_modules/drizzle-kit/node_modules/@esbuild/linux-s390x": { 9441 + "version": "0.19.12", 9442 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", 9443 + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", 9444 + "cpu": [ 9445 + "s390x" 9446 + ], 9447 + "dev": true, 9448 + "optional": true, 9449 + "os": [ 9450 + "linux" 9451 + ], 9452 + "engines": { 9453 + "node": ">=12" 9454 + } 9455 + }, 8481 9456 "node_modules/drizzle-kit/node_modules/@esbuild/linux-x64": { 8482 9457 "version": "0.19.12", 8483 9458 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", ··· 8495 9470 "node": ">=12" 8496 9471 } 8497 9472 }, 9473 + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-x64": { 9474 + "version": "0.19.12", 9475 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", 9476 + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", 9477 + "cpu": [ 9478 + "x64" 9479 + ], 9480 + "dev": true, 9481 + "optional": true, 9482 + "os": [ 9483 + "netbsd" 9484 + ], 9485 + "engines": { 9486 + "node": ">=12" 9487 + } 9488 + }, 9489 + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-x64": { 9490 + "version": "0.19.12", 9491 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", 9492 + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", 9493 + "cpu": [ 9494 + "x64" 9495 + ], 9496 + "dev": true, 9497 + "optional": true, 9498 + "os": [ 9499 + "openbsd" 9500 + ], 9501 + "engines": { 9502 + "node": ">=12" 9503 + } 9504 + }, 9505 + "node_modules/drizzle-kit/node_modules/@esbuild/sunos-x64": { 9506 + "version": "0.19.12", 9507 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", 9508 + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", 9509 + "cpu": [ 9510 + "x64" 9511 + ], 9512 + "dev": true, 9513 + "optional": true, 9514 + "os": [ 9515 + "sunos" 9516 + ], 9517 + "engines": { 9518 + "node": ">=12" 9519 + } 9520 + }, 9521 + "node_modules/drizzle-kit/node_modules/@esbuild/win32-arm64": { 9522 + "version": "0.19.12", 9523 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", 9524 + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", 9525 + "cpu": [ 9526 + "arm64" 9527 + ], 9528 + "dev": true, 9529 + "optional": true, 9530 + "os": [ 9531 + "win32" 9532 + ], 9533 + "engines": { 9534 + "node": ">=12" 9535 + } 9536 + }, 9537 + "node_modules/drizzle-kit/node_modules/@esbuild/win32-ia32": { 9538 + "version": "0.19.12", 9539 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", 9540 + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", 9541 + "cpu": [ 9542 + "ia32" 9543 + ], 9544 + "dev": true, 9545 + "optional": true, 9546 + "os": [ 9547 + "win32" 9548 + ], 9549 + "engines": { 9550 + "node": ">=12" 9551 + } 9552 + }, 9553 + "node_modules/drizzle-kit/node_modules/@esbuild/win32-x64": { 9554 + "version": "0.19.12", 9555 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", 9556 + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", 9557 + "cpu": [ 9558 + "x64" 9559 + ], 9560 + "dev": true, 9561 + "optional": true, 9562 + "os": [ 9563 + "win32" 9564 + ], 9565 + "engines": { 9566 + "node": ">=12" 9567 + } 9568 + }, 8498 9569 "node_modules/drizzle-kit/node_modules/esbuild": { 8499 9570 "version": "0.19.12", 8500 9571 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", ··· 9029 10100 }, 9030 10101 "peerDependencies": { 9031 10102 "esbuild": ">=0.12 <1" 10103 + } 10104 + }, 10105 + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { 10106 + "version": "0.25.4", 10107 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", 10108 + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", 10109 + "cpu": [ 10110 + "arm64" 10111 + ], 10112 + "dev": true, 10113 + "optional": true, 10114 + "os": [ 10115 + "darwin" 10116 + ], 10117 + "engines": { 10118 + "node": ">=18" 9032 10119 } 9033 10120 }, 9034 10121 "node_modules/escalade": { ··· 17457 18544 } 17458 18545 } 17459 18546 }, 18547 + "node_modules/wrangler/node_modules/@esbuild/android-arm": { 18548 + "version": "0.17.19", 18549 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 18550 + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 18551 + "cpu": [ 18552 + "arm" 18553 + ], 18554 + "dev": true, 18555 + "optional": true, 18556 + "os": [ 18557 + "android" 18558 + ], 18559 + "engines": { 18560 + "node": ">=12" 18561 + } 18562 + }, 18563 + "node_modules/wrangler/node_modules/@esbuild/android-arm64": { 18564 + "version": "0.17.19", 18565 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 18566 + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 18567 + "cpu": [ 18568 + "arm64" 18569 + ], 18570 + "dev": true, 18571 + "optional": true, 18572 + "os": [ 18573 + "android" 18574 + ], 18575 + "engines": { 18576 + "node": ">=12" 18577 + } 18578 + }, 18579 + "node_modules/wrangler/node_modules/@esbuild/android-x64": { 18580 + "version": "0.17.19", 18581 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 18582 + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 18583 + "cpu": [ 18584 + "x64" 18585 + ], 18586 + "dev": true, 18587 + "optional": true, 18588 + "os": [ 18589 + "android" 18590 + ], 18591 + "engines": { 18592 + "node": ">=12" 18593 + } 18594 + }, 18595 + "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": { 18596 + "version": "0.17.19", 18597 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 18598 + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 18599 + "cpu": [ 18600 + "arm64" 18601 + ], 18602 + "dev": true, 18603 + "optional": true, 18604 + "os": [ 18605 + "darwin" 18606 + ], 18607 + "engines": { 18608 + "node": ">=12" 18609 + } 18610 + }, 18611 + "node_modules/wrangler/node_modules/@esbuild/darwin-x64": { 18612 + "version": "0.17.19", 18613 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 18614 + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 18615 + "cpu": [ 18616 + "x64" 18617 + ], 18618 + "dev": true, 18619 + "optional": true, 18620 + "os": [ 18621 + "darwin" 18622 + ], 18623 + "engines": { 18624 + "node": ">=12" 18625 + } 18626 + }, 18627 + "node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": { 18628 + "version": "0.17.19", 18629 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 18630 + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 18631 + "cpu": [ 18632 + "arm64" 18633 + ], 18634 + "dev": true, 18635 + "optional": true, 18636 + "os": [ 18637 + "freebsd" 18638 + ], 18639 + "engines": { 18640 + "node": ">=12" 18641 + } 18642 + }, 18643 + "node_modules/wrangler/node_modules/@esbuild/freebsd-x64": { 18644 + "version": "0.17.19", 18645 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 18646 + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 18647 + "cpu": [ 18648 + "x64" 18649 + ], 18650 + "dev": true, 18651 + "optional": true, 18652 + "os": [ 18653 + "freebsd" 18654 + ], 18655 + "engines": { 18656 + "node": ">=12" 18657 + } 18658 + }, 18659 + "node_modules/wrangler/node_modules/@esbuild/linux-arm": { 18660 + "version": "0.17.19", 18661 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 18662 + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 18663 + "cpu": [ 18664 + "arm" 18665 + ], 18666 + "dev": true, 18667 + "optional": true, 18668 + "os": [ 18669 + "linux" 18670 + ], 18671 + "engines": { 18672 + "node": ">=12" 18673 + } 18674 + }, 18675 + "node_modules/wrangler/node_modules/@esbuild/linux-arm64": { 18676 + "version": "0.17.19", 18677 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 18678 + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 18679 + "cpu": [ 18680 + "arm64" 18681 + ], 18682 + "dev": true, 18683 + "optional": true, 18684 + "os": [ 18685 + "linux" 18686 + ], 18687 + "engines": { 18688 + "node": ">=12" 18689 + } 18690 + }, 18691 + "node_modules/wrangler/node_modules/@esbuild/linux-ia32": { 18692 + "version": "0.17.19", 18693 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 18694 + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 18695 + "cpu": [ 18696 + "ia32" 18697 + ], 18698 + "dev": true, 18699 + "optional": true, 18700 + "os": [ 18701 + "linux" 18702 + ], 18703 + "engines": { 18704 + "node": ">=12" 18705 + } 18706 + }, 18707 + "node_modules/wrangler/node_modules/@esbuild/linux-loong64": { 18708 + "version": "0.17.19", 18709 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 18710 + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 18711 + "cpu": [ 18712 + "loong64" 18713 + ], 18714 + "dev": true, 18715 + "optional": true, 18716 + "os": [ 18717 + "linux" 18718 + ], 18719 + "engines": { 18720 + "node": ">=12" 18721 + } 18722 + }, 18723 + "node_modules/wrangler/node_modules/@esbuild/linux-mips64el": { 18724 + "version": "0.17.19", 18725 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 18726 + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 18727 + "cpu": [ 18728 + "mips64el" 18729 + ], 18730 + "dev": true, 18731 + "optional": true, 18732 + "os": [ 18733 + "linux" 18734 + ], 18735 + "engines": { 18736 + "node": ">=12" 18737 + } 18738 + }, 18739 + "node_modules/wrangler/node_modules/@esbuild/linux-ppc64": { 18740 + "version": "0.17.19", 18741 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 18742 + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 18743 + "cpu": [ 18744 + "ppc64" 18745 + ], 18746 + "dev": true, 18747 + "optional": true, 18748 + "os": [ 18749 + "linux" 18750 + ], 18751 + "engines": { 18752 + "node": ">=12" 18753 + } 18754 + }, 18755 + "node_modules/wrangler/node_modules/@esbuild/linux-riscv64": { 18756 + "version": "0.17.19", 18757 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 18758 + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 18759 + "cpu": [ 18760 + "riscv64" 18761 + ], 18762 + "dev": true, 18763 + "optional": true, 18764 + "os": [ 18765 + "linux" 18766 + ], 18767 + "engines": { 18768 + "node": ">=12" 18769 + } 18770 + }, 18771 + "node_modules/wrangler/node_modules/@esbuild/linux-s390x": { 18772 + "version": "0.17.19", 18773 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 18774 + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 18775 + "cpu": [ 18776 + "s390x" 18777 + ], 18778 + "dev": true, 18779 + "optional": true, 18780 + "os": [ 18781 + "linux" 18782 + ], 18783 + "engines": { 18784 + "node": ">=12" 18785 + } 18786 + }, 17460 18787 "node_modules/wrangler/node_modules/@esbuild/linux-x64": { 17461 18788 "version": "0.17.19", 17462 18789 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", ··· 17468 18795 "optional": true, 17469 18796 "os": [ 17470 18797 "linux" 18798 + ], 18799 + "engines": { 18800 + "node": ">=12" 18801 + } 18802 + }, 18803 + "node_modules/wrangler/node_modules/@esbuild/netbsd-x64": { 18804 + "version": "0.17.19", 18805 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 18806 + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 18807 + "cpu": [ 18808 + "x64" 18809 + ], 18810 + "dev": true, 18811 + "optional": true, 18812 + "os": [ 18813 + "netbsd" 18814 + ], 18815 + "engines": { 18816 + "node": ">=12" 18817 + } 18818 + }, 18819 + "node_modules/wrangler/node_modules/@esbuild/openbsd-x64": { 18820 + "version": "0.17.19", 18821 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 18822 + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 18823 + "cpu": [ 18824 + "x64" 18825 + ], 18826 + "dev": true, 18827 + "optional": true, 18828 + "os": [ 18829 + "openbsd" 18830 + ], 18831 + "engines": { 18832 + "node": ">=12" 18833 + } 18834 + }, 18835 + "node_modules/wrangler/node_modules/@esbuild/sunos-x64": { 18836 + "version": "0.17.19", 18837 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 18838 + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 18839 + "cpu": [ 18840 + "x64" 18841 + ], 18842 + "dev": true, 18843 + "optional": true, 18844 + "os": [ 18845 + "sunos" 18846 + ], 18847 + "engines": { 18848 + "node": ">=12" 18849 + } 18850 + }, 18851 + "node_modules/wrangler/node_modules/@esbuild/win32-arm64": { 18852 + "version": "0.17.19", 18853 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 18854 + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 18855 + "cpu": [ 18856 + "arm64" 18857 + ], 18858 + "dev": true, 18859 + "optional": true, 18860 + "os": [ 18861 + "win32" 18862 + ], 18863 + "engines": { 18864 + "node": ">=12" 18865 + } 18866 + }, 18867 + "node_modules/wrangler/node_modules/@esbuild/win32-ia32": { 18868 + "version": "0.17.19", 18869 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 18870 + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 18871 + "cpu": [ 18872 + "ia32" 18873 + ], 18874 + "dev": true, 18875 + "optional": true, 18876 + "os": [ 18877 + "win32" 18878 + ], 18879 + "engines": { 18880 + "node": ">=12" 18881 + } 18882 + }, 18883 + "node_modules/wrangler/node_modules/@esbuild/win32-x64": { 18884 + "version": "0.17.19", 18885 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 18886 + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 18887 + "cpu": [ 18888 + "x64" 18889 + ], 18890 + "dev": true, 18891 + "optional": true, 18892 + "os": [ 18893 + "win32" 17471 18894 ], 17472 18895 "engines": { 17473 18896 "node": ">=12"
+1
package.json
··· 28 28 "@atproto/syntax": "^0.3.3", 29 29 "@atproto/xrpc": "^0.7.5", 30 30 "@atproto/xrpc-server": "^0.9.5", 31 + "@esbuild/darwin-arm64": "^0.27.0", 31 32 "@hono/node-server": "^1.14.3", 32 33 "@mdx-js/loader": "^3.1.0", 33 34 "@mdx-js/react": "^3.1.0",