work-in-progress atproto PDS
typescript atproto pds atcute
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: no cva dependency

Mary d4c0e062 3aa43878

+878 -1149
+2 -2
package.json
··· 11 11 "devDependencies": { 12 12 "@ianvs/prettier-plugin-sort-imports": "^4.7.0", 13 13 "@prettier/plugin-oxc": "^0.1.3", 14 - "oxlint": "^1.38.0", 15 - "prettier": "^3.7.4", 14 + "oxlint": "^1.41.0", 15 + "prettier": "^3.8.0", 16 16 "prettier-plugin-tailwindcss": "^0.7.2", 17 17 "typescript": "^5.9.3" 18 18 }
+8 -9
packages/danaus/package.json
··· 26 26 }, 27 27 "dependencies": { 28 28 "@atcute/atproto": "^3.1.10", 29 - "@atcute/bluesky": "^3.2.14", 30 - "@atcute/car": "^5.0.0", 31 - "@atcute/cbor": "^2.2.8", 32 - "@atcute/cid": "^2.3.0", 29 + "@atcute/bluesky": "^3.2.15", 30 + "@atcute/car": "^5.1.0", 31 + "@atcute/cbor": "^2.3.0", 32 + "@atcute/cid": "^2.4.0", 33 33 "@atcute/client": "^4.2.1", 34 34 "@atcute/crypto": "^2.3.0", 35 35 "@atcute/did-plc": "^0.3.1", ··· 37 37 "@atcute/identity-resolver": "^1.2.2", 38 38 "@atcute/identity-resolver-node": "^1.0.3", 39 39 "@atcute/lexicons": "^1.2.6", 40 - "@atcute/mst": "^0.1.1", 40 + "@atcute/mst": "^0.1.2", 41 41 "@atcute/multibase": "^1.1.6", 42 42 "@atcute/repo": "^0.1.1", 43 43 "@atcute/tid": "^1.1.1", ··· 46 46 "@atcute/xrpc-server": "^0.1.8", 47 47 "@atcute/xrpc-server-bun": "^0.1.1", 48 48 "@kelinci/danaus-lexicons": "workspace:*", 49 - "@logtape/logtape": "^2.0.0", 49 + "@logtape/logtape": "^2.0.1", 50 50 "@oomfware/fetch-router": "^0.2.1", 51 51 "@oomfware/forms": "^0.3.0", 52 - "@oomfware/jsx": "^0.1.5", 52 + "@oomfware/jsx": "^0.1.8", 53 53 "@simplewebauthn/server": "^13.2.2", 54 - "cva": "1.0.0-beta.4", 55 54 "drizzle-orm": "1.0.0-beta.6-4414a19", 56 55 "get-port": "^7.1.0", 57 56 "jose": "^6.1.3", ··· 65 64 "@rollup/plugin-multi-entry": "^7.1.0", 66 65 "@standard-schema/spec": "^1.1.0", 67 66 "@tailwindcss/cli": "^4.1.18", 68 - "@types/bun": "^1.3.5", 67 + "@types/bun": "^1.3.6", 69 68 "@types/qrcode": "^1.5.6", 70 69 "chokidar": "^5.0.0", 71 70 "concurrently": "^9.2.1",
+5 -17
packages/danaus/src/web/admin/components/stat-card.tsx
··· 1 - import { cva } from 'cva'; 2 - 3 - const root = cva({ 4 - base: ['flex flex-col gap-1 rounded-lg border border-neutral-stroke-2 bg-neutral-background-1 p-3'], 5 - }); 6 - 7 - const label = cva({ 8 - base: 'text-base-200 text-neutral-foreground-3', 9 - }); 10 - 11 - const value = cva({ 12 - base: 'text-base-500 font-semibold text-neutral-foreground-1', 13 - }); 14 - 15 1 export interface StatCardProps { 16 2 label: string; 17 3 value: number; ··· 24 10 */ 25 11 const StatCard = (props: StatCardProps) => { 26 12 return ( 27 - <div class={root()}> 28 - <span class={label()}>{props.label}</span> 29 - <span class={value()}>{props.value.toLocaleString()}</span> 13 + <div class="flex flex-col gap-1 rounded-lg border border-neutral-stroke-2 bg-neutral-background-1 p-3"> 14 + <span class="text-base-200 text-neutral-foreground-3">{props.label}</span> 15 + <span class="text-base-500 font-semibold text-neutral-foreground-1"> 16 + {props.value.toLocaleString()} 17 + </span> 30 18 </div> 31 19 ); 32 20 };
+6 -20
packages/danaus/src/web/components/aside-item.tsx
··· 1 1 import { getContext } from '@oomfware/fetch-router/middlewares/async-context'; 2 2 import type { JSXNode } from '@oomfware/jsx'; 3 3 4 - import { cva } from 'cva'; 5 - 6 - const root = cva({ 7 - base: [ 8 - 'relative ml-2 flex gap-2 rounded-md px-2 py-2', 9 - 'text-base-300 font-medium text-neutral-foreground-2 no-underline', 10 - 'outline-2 -outline-offset-2 outline-transparent', 11 - 'transition duration-100 ease-fluent', 12 - 'hover:bg-subtle-background-hover', 13 - 'active:bg-subtle-background-active', 14 - 'focus-visible:z-10 focus-visible:outline-stroke-focus-2', 15 - ], 16 - }); 17 - 18 - const indicator = cva({ 19 - base: 'absolute -left-1.5 h-5 w-1 rounded-md bg-compound-brand-background', 20 - }); 21 - 22 4 export interface AsideItemProps { 23 5 href: string; 24 6 /** whether to match the path exactly (default: false) */ ··· 41 23 const isActive = exact ? currentPath === href : currentPath.startsWith(href); 42 24 43 25 return ( 44 - <a href={href} class={root()} aria-current={isActive}> 45 - {isActive && <span class={indicator()} />} 26 + <a 27 + href={href} 28 + class="relative ml-2 flex gap-2 rounded-md px-2 py-2 text-base-300 font-medium text-neutral-foreground-2 no-underline outline-2 -outline-offset-2 outline-transparent transition duration-100 ease-fluent hover:bg-subtle-background-hover focus-visible:z-10 focus-visible:outline-stroke-focus-2 active:bg-subtle-background-active" 29 + aria-current={isActive} 30 + > 31 + {isActive && <span class="absolute -left-1.5 h-5 w-1 rounded-md bg-compound-brand-background" />} 46 32 47 33 {icon !== undefined && <span class="grid size-5 place-items-center text-[20px]">{icon}</span>} 48 34
+30 -50
packages/danaus/src/web/primitives/accordion/header.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import ChevronDownSmallOutlined from '../../icons/central/chevron-down-small-outlined.tsx'; 6 4 7 - const root = cva({ 8 - base: [ 9 - 'flex w-full cursor-pointer list-none items-center', 10 - 'm-0 rounded-md border-0', 11 - 'bg-transparent text-neutral-foreground-1', 12 - 'outline-2 -outline-offset-2 outline-transparent', 13 - 'focus-visible:outline-stroke-focus-2', 14 - // hide default marker 15 - '[&::-webkit-details-marker]:hidden', 16 - ], 17 - variants: { 18 - size: { 19 - small: 'min-h-8 text-base-200', 20 - medium: 'min-h-11 text-base-300', 21 - large: 'min-h-11 text-base-400', 22 - 'extra-large': 'min-h-11 text-base-500', 23 - }, 24 - expandIconPosition: { 25 - // padding: 0 12px 0 10px 26 - start: 'pr-3 pl-2.5', 27 - // padding: 0 10px 0 12px (reversed) 28 - end: 'pr-2.5 pl-3', 29 - }, 30 - }, 31 - defaultVariants: { 32 - size: 'medium', 33 - expandIconPosition: 'start', 34 - }, 35 - }); 36 - 37 - const expandIconStyle = cva({ 38 - base: ['flex shrink-0 items-center', 'leading-base-500 text-base-500'], 39 - variants: { 40 - position: { 41 - start: 'pr-2', 42 - end: 'shrink grow basis-0 justify-end pl-2', 43 - }, 44 - }, 45 - }); 46 - 47 - const iconStyle = cva({ 48 - base: 'leading-base-500 flex shrink-0 items-center pr-2 text-base-500', 49 - }); 50 - 51 5 export interface AccordionHeaderProps { 52 6 size?: 'small' | 'medium' | 'large' | 'extra-large'; 53 7 expandIconPosition?: 'start' | 'end'; ··· 64 18 const { size = 'medium', expandIconPosition = 'start', icon, class: className, children } = props; 65 19 66 20 return ( 67 - <summary class={root({ size, expandIconPosition, className })}> 21 + <summary 22 + class={[ 23 + 'flex w-full cursor-pointer list-none items-center', 24 + 'm-0 rounded-md border-0', 25 + 'bg-transparent text-neutral-foreground-1', 26 + 'outline-2 -outline-offset-2 outline-transparent', 27 + 'focus-visible:outline-stroke-focus-2', 28 + // hide default marker 29 + '[&::-webkit-details-marker]:hidden', 30 + 31 + size === 'small' && 'min-h-8 text-base-200', 32 + size === 'medium' && 'min-h-11 text-base-300', 33 + size === 'large' && 'min-h-11 text-base-400', 34 + size === 'extra-large' && 'min-h-11 text-base-500', 35 + 36 + expandIconPosition === 'start' && 'pr-3 pl-2.5', 37 + expandIconPosition === 'end' && 'pr-2.5 pl-3', 38 + 39 + className, 40 + ]} 41 + > 68 42 {expandIconPosition === 'start' && ( 69 - <span class={expandIconStyle({ position: 'start' })}> 43 + <span class={['flex shrink-0 items-center', 'leading-base-500 text-base-500', 'pr-2']}> 70 44 <ChevronDownSmallOutlined size={20} /> 71 45 </span> 72 46 )} 73 47 74 - {icon && <span class={iconStyle()}>{icon}</span>} 48 + {icon && <span class="leading-base-500 flex shrink-0 items-center pr-2 text-base-500">{icon}</span>} 75 49 76 50 {children} 77 51 78 52 {expandIconPosition === 'end' && ( 79 - <span class={expandIconStyle({ position: 'end' })}> 53 + <span 54 + class={[ 55 + 'flex shrink-0 items-center', 56 + 'leading-base-500 text-base-500', 57 + 'shrink grow basis-0 justify-end pl-2', 58 + ]} 59 + > 80 60 <ChevronDownSmallOutlined size={20} /> 81 61 </span> 82 62 )}
+1 -7
packages/danaus/src/web/primitives/accordion/item.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 export interface AccordionItemProps { 6 4 /** whether the accordion item is open by default */ 7 5 open?: boolean; ··· 11 9 children?: JSXNode; 12 10 } 13 11 14 - const root = cva({ 15 - base: 'group/accordion-item', 16 - }); 17 - 18 12 /** 19 13 * accordion item component using native `<details>` element 20 14 */ ··· 22 16 const { open = false, name, class: className, children } = props; 23 17 24 18 return ( 25 - <details open={open} name={name} class={root({ className })}> 19 + <details open={open} name={name} class={['group/accordion-item', className]}> 26 20 {children} 27 21 </details> 28 22 );
+1 -7
packages/danaus/src/web/primitives/accordion/panel.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: 'px-3 pb-3', 7 - }); 8 - 9 3 export interface AccordionPanelProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 17 11 const AccordionPanel = (props: AccordionPanelProps) => { 18 12 const { class: className, children } = props; 19 13 20 - return <div class={root({ className })}>{children}</div>; 14 + return <div class={['px-3 pb-3', className]}>{children}</div>; 21 15 }; 22 16 23 17 export default AccordionPanel;
+46 -50
packages/danaus/src/web/primitives/button.tsx
··· 1 - import type { JSXNode } from '@oomfware/jsx'; 2 - 3 - import { cva, type VariantProps } from 'cva'; 1 + import type { ClassValue, JSXNode } from '@oomfware/jsx'; 4 2 5 3 import type { InvokerCommand } from './utils/types.ts'; 6 4 7 - const root = cva({ 8 - base: [ 9 - 'inline-flex appearance-none items-center justify-center gap-2 overflow-hidden align-middle select-none', 10 - 'text-base-300 font-medium', 11 - 'rounded-md border', 12 - 'min-w-24 px-3 py-1.25', 13 - 'outline-2 -outline-offset-2 outline-transparent', 14 - 'transition duration-100 ease-fluent', 15 - 'disabled:cursor-not-allowed', 16 - ], 17 - variants: { 18 - variant: { 19 - default: [ 20 - 'border-neutral-stroke-1 bg-neutral-background-1 text-neutral-foreground-1', 21 - 'hover:border-neutral-stroke-1-hover hover:bg-neutral-background-1-hover hover:text-neutral-foreground-1-hover', 22 - 'active:border-neutral-stroke-1-active active:bg-neutral-background-1-active active:text-neutral-foreground-1-active', 23 - 'focus-visible:outline-stroke-focus-2', 24 - 'disabled:border-neutral-stroke-disabled disabled:bg-neutral-background-disabled disabled:text-neutral-foreground-disabled', 25 - ], 26 - primary: [ 27 - 'border-transparent bg-brand-background text-neutral-foreground-on-brand', 28 - 'hover:bg-brand-background-hover', 29 - 'active:bg-brand-background-active', 30 - 'focus-visible:outline-stroke-focus-2', 31 - 'disabled:bg-neutral-background-disabled disabled:text-neutral-foreground-disabled', 32 - ], 33 - outlined: [ 34 - 'border-neutral-stroke-1 text-neutral-foreground-1', 35 - 'hover:border-neutral-stroke-1-hover', 36 - 'active:border-neutral-stroke-1-active', 37 - 'focus-visible:outline-stroke-focus-2', 38 - 'disabled:border-neutral-stroke-disabled disabled:text-neutral-foreground-disabled', 39 - ], 40 - subtle: [ 41 - 'border-transparent bg-subtle-background text-neutral-foreground-2', 42 - 'hover:bg-subtle-background-hover hover:text-neutral-foreground-2-hover', 43 - 'active:bg-subtle-background-active active:text-neutral-foreground-2-active', 44 - 'focus-visible:outline-stroke-focus-2', 45 - 'disabled:bg-transparent disabled:text-neutral-foreground-disabled', 46 - ], 47 - }, 48 - }, 49 - }); 50 - 51 - export interface ButtonProps extends VariantProps<typeof root> { 5 + export interface ButtonProps { 52 6 type?: 'submit' | 'button'; 53 7 href?: string; 54 8 disabled?: boolean; ··· 57 11 commandfor?: string; 58 12 /** invoker command action */ 59 13 command?: InvokerCommand; 14 + variant?: 'default' | 'primary' | 'outlined' | 'subtle'; 60 15 class?: string; 61 16 children?: JSXNode; 62 17 'data-target'?: string; ··· 76 31 children, 77 32 } = props; 78 33 34 + const cn: ClassValue[] = [ 35 + 'inline-flex appearance-none items-center justify-center gap-2 overflow-hidden align-middle select-none', 36 + 'text-base-300 font-medium', 37 + 'rounded-md border', 38 + 'min-w-24 px-3 py-1.25', 39 + 'outline-2 -outline-offset-2 outline-transparent', 40 + 'transition duration-100 ease-fluent', 41 + 'disabled:cursor-not-allowed', 42 + 43 + variant === 'default' && [ 44 + 'border-neutral-stroke-1 bg-neutral-background-1 text-neutral-foreground-1', 45 + 'hover:border-neutral-stroke-1-hover hover:bg-neutral-background-1-hover hover:text-neutral-foreground-1-hover', 46 + 'active:border-neutral-stroke-1-active active:bg-neutral-background-1-active active:text-neutral-foreground-1-active', 47 + 'focus-visible:outline-stroke-focus-2', 48 + 'disabled:border-neutral-stroke-disabled disabled:bg-neutral-background-disabled disabled:text-neutral-foreground-disabled', 49 + ], 50 + variant === 'primary' && [ 51 + 'border-transparent bg-brand-background text-neutral-foreground-on-brand', 52 + 'hover:bg-brand-background-hover', 53 + 'active:bg-brand-background-active', 54 + 'focus-visible:outline-stroke-focus-2', 55 + 'disabled:bg-neutral-background-disabled disabled:text-neutral-foreground-disabled', 56 + ], 57 + variant === 'outlined' && [ 58 + 'border-neutral-stroke-1 text-neutral-foreground-1', 59 + 'hover:border-neutral-stroke-1-hover', 60 + 'active:border-neutral-stroke-1-active', 61 + 'focus-visible:outline-stroke-focus-2', 62 + 'disabled:border-neutral-stroke-disabled disabled:text-neutral-foreground-disabled', 63 + ], 64 + variant === 'subtle' && [ 65 + 'border-transparent bg-subtle-background text-neutral-foreground-2', 66 + 'hover:bg-subtle-background-hover hover:text-neutral-foreground-2-hover', 67 + 'active:bg-subtle-background-active active:text-neutral-foreground-2-active', 68 + 'focus-visible:outline-stroke-focus-2', 69 + 'disabled:bg-transparent disabled:text-neutral-foreground-disabled', 70 + ], 71 + 72 + className, 73 + ]; 74 + 79 75 if (href !== undefined) { 80 76 return ( 81 - <a href={href} data-target={targetId} class={root({ variant, className })}> 77 + <a href={href} data-target={targetId} class={cn}> 82 78 {children} 83 79 </a> 84 80 ); ··· 92 88 commandfor={commandfor} 93 89 command={command} 94 90 data-target={targetId} 95 - class={root({ variant, className })} 91 + class={cn} 96 92 > 97 93 {children} 98 94 </button>
+50 -70
packages/danaus/src/web/primitives/checkbox.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useId } from '../components/id.tsx'; 6 4 import CheckmarkIcon from '../icons/central/checkmark-1-solid.tsx'; 7 5 8 6 import { useFieldContext } from './utils/field-context.tsx'; 9 7 10 - const root = cva({ 11 - base: [ 12 - 'group/checkbox relative inline-flex max-w-fit cursor-pointer align-middle select-none', 13 - 'has-focus-visible:rounded-md has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-stroke-focus-2', 14 - // unchecked text 15 - 'text-neutral-foreground-3', 16 - 'hover:text-neutral-foreground-2', 17 - 'active:text-neutral-foreground-1', 18 - // checked text 19 - 'has-checked:text-neutral-foreground-1', 20 - // disabled 21 - 'has-disabled:cursor-default has-disabled:text-neutral-foreground-disabled', 22 - ], 23 - }); 24 - 25 - const input = cva({ 26 - base: 'peer absolute top-0 m-0 h-8 w-8 cursor-pointer opacity-0', 27 - variants: { 28 - labelPosition: { 29 - before: 'right-0', 30 - after: 'left-0', 31 - }, 32 - }, 33 - }); 34 - 35 - const indicator = cva({ 36 - base: [ 37 - 'flex shrink-0 items-center justify-center self-start', 38 - 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-sm border', 39 - ], 40 - variants: { 41 - variant: { 42 - unchecked: [ 43 - 'peer-checked:hidden', 44 - 'border-neutral-stroke-accessible', 45 - 'group-hover/checkbox:border-neutral-stroke-accessible-hover', 46 - 'group-active/checkbox:border-neutral-stroke-accessible-active', 47 - // disabled 48 - 'peer-disabled:border-neutral-stroke-disabled', 49 - ], 50 - checked: [ 51 - 'hidden peer-checked:flex', 52 - 'border-compound-brand-background bg-compound-brand-background text-neutral-foreground-inverted', 53 - 'group-hover/checkbox:border-compound-brand-background-hover group-hover/checkbox:bg-compound-brand-background-hover', 54 - 'group-active/checkbox:border-compound-brand-background-active group-active/checkbox:bg-compound-brand-background-active', 55 - // disabled 56 - 'peer-disabled:border-neutral-stroke-disabled peer-disabled:bg-transparent peer-disabled:text-neutral-foreground-disabled', 57 - ], 58 - }, 59 - }, 60 - }); 61 - 62 - const label = cva({ 63 - base: '-my-0.5 self-center p-2 text-base-300', 64 - variants: { 65 - labelPosition: { 66 - before: 'pr-1', 67 - after: 'pl-1', 68 - }, 69 - }, 70 - }); 71 - 72 8 export interface CheckboxProps { 73 9 name?: string; 74 10 value?: string; ··· 100 36 : undefined; 101 37 102 38 return ( 103 - <span class={root({ className })}> 39 + <span 40 + class={[ 41 + 'group/checkbox relative inline-flex max-w-fit cursor-pointer align-middle select-none', 42 + 'has-focus-visible:rounded-md has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-stroke-focus-2', 43 + // unchecked text 44 + 'text-neutral-foreground-3', 45 + 'hover:text-neutral-foreground-2', 46 + 'active:text-neutral-foreground-1', 47 + // checked text 48 + 'has-checked:text-neutral-foreground-1', 49 + // disabled 50 + 'has-disabled:cursor-default has-disabled:text-neutral-foreground-disabled', 51 + 52 + className, 53 + ]} 54 + > 104 55 <input 105 56 type="checkbox" 106 57 id={inputId} ··· 110 61 disabled={disabled} 111 62 aria-describedby={ariaDescribedBy} 112 63 aria-invalid={fieldContext?.validationStatus === 'error' ? true : undefined} 113 - class={input({ labelPosition })} 64 + class={[ 65 + 'peer absolute top-0 m-0 h-8 w-8 cursor-pointer opacity-0', 66 + 67 + labelPosition === 'before' && 'right-0', 68 + labelPosition === 'after' && 'left-0', 69 + ]} 114 70 /> 115 71 116 72 {labelPosition === 'before' && children && ( 117 - <label for={inputId} class={label({ labelPosition })}> 73 + <label for={inputId} class={['-my-0.5 self-center p-2 text-base-300', 'pr-1']}> 118 74 {children} 119 75 </label> 120 76 )} 121 77 122 - <span class={indicator({ variant: 'unchecked' })} /> 123 - <span class={indicator({ variant: 'checked' })}> 78 + <span 79 + class={[ 80 + 'flex shrink-0 items-center justify-center self-start', 81 + 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-sm border', 82 + 83 + 'peer-checked:hidden', 84 + 'border-neutral-stroke-accessible', 85 + 'group-hover/checkbox:border-neutral-stroke-accessible-hover', 86 + 'group-active/checkbox:border-neutral-stroke-accessible-active', 87 + // disabled 88 + 'peer-disabled:border-neutral-stroke-disabled', 89 + ]} 90 + /> 91 + <span 92 + class={[ 93 + 'flex shrink-0 items-center justify-center self-start', 94 + 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-sm border', 95 + 96 + 'hidden peer-checked:flex', 97 + 'border-compound-brand-background bg-compound-brand-background text-neutral-foreground-inverted', 98 + 'group-hover/checkbox:border-compound-brand-background-hover group-hover/checkbox:bg-compound-brand-background-hover', 99 + 'group-active/checkbox:border-compound-brand-background-active group-active/checkbox:bg-compound-brand-background-active', 100 + // disabled 101 + 'peer-disabled:border-neutral-stroke-disabled peer-disabled:bg-transparent peer-disabled:text-neutral-foreground-disabled', 102 + ]} 103 + > 124 104 <CheckmarkIcon size={12} /> 125 105 </span> 126 106 127 107 {labelPosition === 'after' && children && ( 128 - <label for={inputId} class={label({ labelPosition })}> 108 + <label for={inputId} class={['-my-0.5 self-center p-2 text-base-300', 'pl-1']}> 129 109 {children} 130 110 </label> 131 111 )}
+19 -19
packages/danaus/src/web/primitives/dialog/actions.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva, type VariantProps } from 'cva'; 4 - 5 - const root = cva({ 6 - base: [ 7 - 'pt-2', 8 - // stacked on small containers, inline row on larger 9 - 'flex flex-col gap-2', 10 - '@sm/dialog-body:flex-row @sm/dialog-body:items-center', 11 - ], 12 - variants: { 13 - position: { 14 - start: '@sm/dialog-body:justify-start', 15 - end: '@sm/dialog-body:justify-end', 16 - }, 17 - }, 18 - }); 19 - 20 - export interface DialogActionsProps extends VariantProps<typeof root> { 3 + export interface DialogActionsProps { 4 + position?: 'start' | 'end'; 21 5 class?: string; 22 6 children?: JSXNode; 23 7 } ··· 30 14 const DialogActions = (props: DialogActionsProps) => { 31 15 const { position = 'end', class: className, children } = props; 32 16 33 - return <div class={root({ position, className })}>{children}</div>; 17 + return ( 18 + <div 19 + class={[ 20 + 'pt-2', 21 + // stacked on small containers, inline row on larger 22 + 'flex flex-col gap-2', 23 + '@sm/dialog-body:flex-row @sm/dialog-body:items-center', 24 + 25 + position === 'start' && '@sm/dialog-body:justify-start', 26 + position === 'end' && '@sm/dialog-body:justify-end', 27 + 28 + className, 29 + ]} 30 + > 31 + {children} 32 + </div> 33 + ); 34 34 }; 35 35 36 36 export default DialogActions;
+1 -7
packages/danaus/src/web/primitives/dialog/body.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: ['grid gap-2 p-6', '@container/dialog-body'], 7 - }); 8 - 9 3 export interface DialogBodyProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 18 12 const DialogBody = (props: DialogBodyProps) => { 19 13 const { class: className, children } = props; 20 14 21 - return <div class={root({ className })}>{children}</div>; 15 + return <div class={['@container/dialog-body', 'grid gap-2 p-6', className]}>{children}</div>; 22 16 }; 23 17 24 18 export default DialogBody;
+1 -7
packages/danaus/src/web/primitives/dialog/content.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: ['min-h-8 overflow-y-auto', 'text-base-300'], 7 - }); 8 - 9 3 export interface DialogContentProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 18 12 const DialogContent = (props: DialogContentProps) => { 19 13 const { class: className, children } = props; 20 14 21 - return <div class={root({ className })}>{children}</div>; 15 + return <div class={['min-h-8 overflow-y-auto', 'text-base-300', className]}>{children}</div>; 22 16 }; 23 17 24 18 export default DialogContent;
+38 -46
packages/danaus/src/web/primitives/dialog/surface.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva, type VariantProps } from 'cva'; 4 - 5 3 import { useDialogContext } from './utils/context.tsx'; 6 4 7 - const root = cva({ 8 - base: [ 9 - 'fixed inset-0 m-0 h-dvh max-h-dvh w-dvw max-w-dvw', 10 - 'border-none p-0', 11 - 'bg-transparent', 12 - 'overflow-visible', 13 - 'open:flex', 14 - // bottom-aligned on mobile, centered on larger screens 15 - 'items-end justify-center', 16 - 'sm:items-center', 17 - // backdrop 18 - 'backdrop:bg-background-overlay', 19 - // entry/exit animations 20 - 'dialog-animate dialog-backdrop-animate', 21 - ], 22 - }); 23 - 24 - const backdrop = cva({ 25 - base: ['absolute inset-0 z-0'], 26 - }); 27 - 28 - const surface = cva({ 29 - base: [ 30 - 'relative z-10', 31 - 'box-border', 32 - 'w-full', 33 - 'max-h-[calc(100dvh-48px)]', 34 - // rounded top on mobile, all corners on larger screens 35 - 'rounded-t-xl sm:rounded-xl', 36 - 'bg-neutral-background-1 text-neutral-foreground-1', 37 - 'shadow-64', 38 - ], 39 - variants: { 40 - size: { 41 - small: 'max-w-120', 42 - medium: 'max-w-150', 43 - }, 44 - }, 45 - }); 46 - 47 - export interface DialogSurfaceProps extends VariantProps<typeof surface> { 5 + export interface DialogSurfaceProps { 6 + size?: 'small' | 'medium'; 48 7 children?: JSXNode; 49 8 } 50 9 ··· 58 17 const { dialogId, titleId } = useDialogContext(); 59 18 60 19 return ( 61 - <dialog id={dialogId} aria-labelledby={titleId} class={root()}> 62 - <div class={surface({ size })}>{children}</div> 20 + <dialog 21 + id={dialogId} 22 + aria-labelledby={titleId} 23 + class={[ 24 + 'fixed inset-0 m-0 h-dvh max-h-dvh w-dvw max-w-dvw', 25 + 'border-none p-0', 26 + 'bg-transparent', 27 + 'overflow-visible', 28 + 'open:flex', 29 + // bottom-aligned on mobile, centered on larger screens 30 + 'items-end justify-center', 31 + 'sm:items-center', 32 + // backdrop 33 + 'backdrop:bg-background-overlay', 34 + // entry/exit animations 35 + 'dialog-animate dialog-backdrop-animate', 36 + ]} 37 + > 38 + <div 39 + class={[ 40 + 'relative z-10', 41 + 'box-border', 42 + 'w-full', 43 + 'max-h-[calc(100dvh-48px)]', 44 + // rounded top on mobile, all corners on larger screens 45 + 'rounded-t-xl sm:rounded-xl', 46 + 'bg-neutral-background-1 text-neutral-foreground-1', 47 + 'shadow-64', 48 + 49 + size === 'small' && 'max-w-120', 50 + size === 'medium' && 'max-w-150', 51 + ]} 52 + > 53 + {children} 54 + </div> 63 55 64 56 <button 65 57 type="button" ··· 67 59 aria-hidden="true" 68 60 commandfor={dialogId} 69 61 command="close" 70 - class={backdrop()} 62 + class="absolute inset-0 z-0" 71 63 /> 72 64 </dialog> 73 65 );
+2 -12
packages/danaus/src/web/primitives/dialog/title.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useDialogContext } from './utils/context.tsx'; 6 - 7 - const root = cva({ 8 - base: ['m-0 flex items-start gap-2', 'text-base-500 font-semibold'], 9 - }); 10 - 11 - const action = cva({ 12 - base: ['ml-auto shrink-0'], 13 - }); 14 4 15 5 export interface DialogTitleProps { 16 6 /** optional action element (e.g., close button) */ ··· 30 20 const context = useDialogContext(null); 31 21 32 22 return ( 33 - <div class={root({ className })}> 23 + <div class={['m-0 flex items-start gap-2', 'text-base-500 font-semibold', className]}> 34 24 <h2 id={context?.titleId} class="m-0 grow"> 35 25 {children} 36 26 </h2> 37 27 38 - {actionSlot && <div class={action()}>{actionSlot}</div>} 28 + {actionSlot && <div class="ml-auto shrink-0">{actionSlot}</div>} 39 29 </div> 40 30 ); 41 31 };
+16 -60
packages/danaus/src/web/primitives/field.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useId } from '../components/id.tsx'; 6 4 import CheckCircle2Solid from '../icons/central/check-circle-2-solid.tsx'; 7 5 import ExclamationCircleSolid from '../icons/central/exclamation-circle-solid.tsx'; ··· 10 8 import Label from './label.tsx'; 11 9 import { FieldContext, type ValidationStatus } from './utils/field-context.tsx'; 12 10 13 - const root = cva({ 14 - base: 'block', 15 - }); 16 - 17 - const inner = cva({ 18 - base: 'flex flex-col gap-2', 19 - }); 20 - 21 - const header = cva({ 22 - base: 'flex flex-col gap-1', 23 - }); 24 - 25 - const description = cva({ 26 - base: 'text-base-300 wrap-break-word text-neutral-foreground-3', 27 - }); 28 - 29 - const control = cva({ 30 - base: 'flex flex-col gap-2', 31 - }); 32 - 33 - const hint = cva({ 34 - base: 'text-base-200 text-neutral-foreground-3', 35 - }); 36 - 37 - const validationMessage = cva({ 38 - base: 'flex gap-1 text-base-200', 39 - variants: { 40 - status: { 41 - error: 'text-status-danger-foreground-1', 42 - warning: 'text-status-warning-foreground-3', 43 - success: 'text-status-success-foreground-1', 44 - none: 'text-neutral-foreground-3', 45 - }, 46 - }, 47 - }); 48 - 49 - const validationMessageIcon = cva({ 50 - base: 'my-0.5 grid h-3 w-3 place-items-center', 51 - }); 52 - 53 - const validationMessageText = cva({ 54 - base: '', 55 - variants: { 56 - muted: { 57 - true: 'text-neutral-foreground-3', 58 - }, 59 - }, 60 - }); 61 - 62 11 export interface FieldProps { 63 12 required?: boolean; 64 13 validationStatus?: ValidationStatus; ··· 123 72 124 73 return ( 125 74 <FieldContext.Provider value={contextValue}> 126 - <div class={root({ className })}> 127 - <div class={inner()}> 75 + <div class={['block', className]}> 76 + <div class="flex flex-col gap-2"> 128 77 {(labelContent || descriptionContent) && ( 129 - <div class={header()}> 78 + <div class="flex flex-col gap-1"> 130 79 {labelContent && <Label required={required}>{labelContent}</Label>} 131 80 132 81 {descriptionContent && ( 133 - <p id={descriptionId} class={description()}> 82 + <p id={descriptionId} class="text-base-300 wrap-break-word text-neutral-foreground-3"> 134 83 {descriptionContent} 135 84 </p> 136 85 )} 137 86 </div> 138 87 )} 139 88 140 - <div class={control()}> 89 + <div class="flex flex-col gap-2"> 141 90 {children} 142 91 143 92 {hintContent && ( 144 - <p id={hintId} class={hint()}> 93 + <p id={hintId} class="text-base-200 text-neutral-foreground-3"> 145 94 {hintContent} 146 95 </p> 147 96 )} ··· 150 99 <p 151 100 id={validationMessageId} 152 101 role={effectiveStatus === 'error' ? 'alert' : undefined} 153 - class={validationMessage({ status: effectiveStatus })} 102 + class={[ 103 + 'flex gap-1 text-base-200', 104 + 105 + effectiveStatus === 'error' && 'text-status-danger-foreground-1', 106 + effectiveStatus === 'warning' && 'text-status-warning-foreground-3', 107 + effectiveStatus === 'success' && 'text-status-success-foreground-1', 108 + effectiveStatus === 'none' && 'text-neutral-foreground-3', 109 + ]} 154 110 > 155 - <span class={validationMessageIcon()}>{renderValidationIcon()}</span> 111 + <span class="my-0.5 grid h-3 w-3 place-items-center">{renderValidationIcon()}</span> 156 112 157 - <span class={validationMessageText({ muted: effectiveStatus !== 'error' })}> 113 + <span class={[effectiveStatus !== 'error' && 'text-neutral-foreground-3']}> 158 114 {validationMessageContent} 159 115 </span> 160 116 </p>
+46 -61
packages/danaus/src/web/primitives/input.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useFieldContext } from './utils/field-context.tsx'; 6 4 7 - const root = cva({ 8 - base: [ 9 - 'relative inline-flex flex-nowrap align-middle', 10 - 'gap-0.5', 11 - 'transition duration-100', 12 - 'box-border', 13 - 'outline-2 -outline-offset-2 outline-transparent', 14 - 'border border-neutral-stroke-1', 15 - 'rounded-md', 16 - 'bg-neutral-background-1', 17 - 'h-8 min-w-0', 18 - 'text-base-300 text-neutral-foreground-1', 19 - // enabled states 20 - 'group-not-disabled/input:hover:border-neutral-stroke-1-hover', 21 - 'group-not-disabled/input:active:border-neutral-stroke-1-active', 22 - 'group-not-disabled/input:has-focus-visible:outline-compound-brand-stroke', 23 - // disabled states 24 - 'group-disabled/input:border-neutral-stroke-disabled group-disabled/input:bg-transparent group-disabled/input:text-neutral-foreground-disabled', 25 - ], 26 - variants: { 27 - hasContentBefore: { 28 - true: 'pl-2.5', 29 - }, 30 - hasContentAfter: { 31 - true: 'pr-2.5', 32 - }, 33 - }, 34 - }); 35 - 36 - const input = cva({ 37 - base: [ 38 - 'h-full grow', 39 - 'box-border', 40 - 'border-none outline-none', 41 - 'bg-transparent', 42 - 'px-2.5', 43 - 'min-w-0', 44 - 'text-current', 45 - 'placeholder:text-neutral-foreground-3 placeholder:opacity-100', 46 - 'group-disabled/input:placeholder:text-current', 47 - ], 48 - variants: { 49 - hasContentBefore: { 50 - true: 'pl-2', 51 - }, 52 - hasContentAfter: { 53 - true: 'pr-2', 54 - }, 55 - }, 56 - }); 57 - 58 - const content = cva({ 59 - base: 'box-border flex items-center text-neutral-foreground-3', 60 - }); 61 - 62 5 export interface InputProps { 63 6 type?: 'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number'; 64 7 name?: string; ··· 108 51 109 52 return ( 110 53 <fieldset disabled={disabled} class="group/input contents"> 111 - <span class={root({ hasContentBefore, hasContentAfter, className })}> 112 - {contentBefore && <span class={content()}>{contentBefore}</span>} 54 + <span 55 + class={[ 56 + 'relative inline-flex flex-nowrap align-middle', 57 + 'gap-0.5', 58 + 'transition duration-100', 59 + 'box-border', 60 + 'outline-2 -outline-offset-2 outline-transparent', 61 + 'border border-neutral-stroke-1', 62 + 'rounded-md', 63 + 'bg-neutral-background-1', 64 + 'h-8 min-w-0', 65 + 'text-base-300 text-neutral-foreground-1', 66 + // enabled states 67 + 'group-not-disabled/input:hover:border-neutral-stroke-1-hover', 68 + 'group-not-disabled/input:active:border-neutral-stroke-1-active', 69 + 'group-not-disabled/input:has-focus-visible:outline-compound-brand-stroke', 70 + // disabled states 71 + 'group-disabled/input:border-neutral-stroke-disabled group-disabled/input:bg-transparent group-disabled/input:text-neutral-foreground-disabled', 72 + 73 + hasContentBefore && 'pl-2.5', 74 + hasContentAfter && 'pr-2.5', 75 + 76 + className, 77 + ]} 78 + > 79 + {contentBefore && ( 80 + <span class="box-border flex items-center text-neutral-foreground-3">{contentBefore}</span> 81 + )} 113 82 114 83 <input 115 84 id={inputId} ··· 126 95 required={required ?? fieldContext?.required} 127 96 aria-describedby={ariaDescribedBy} 128 97 aria-invalid={fieldContext?.validationStatus === 'error' ? true : undefined} 129 - class={input({ hasContentBefore, hasContentAfter })} 98 + // class={input({ hasContentBefore, hasContentAfter })} 99 + class={[ 100 + 'h-full grow', 101 + 'box-border', 102 + 'border-none outline-none', 103 + 'bg-transparent', 104 + 'px-2.5', 105 + 'min-w-0', 106 + 'text-current', 107 + 'placeholder:text-neutral-foreground-3 placeholder:opacity-100', 108 + 'group-disabled/input:placeholder:text-current', 109 + 110 + hasContentBefore && 'pl-2', 111 + hasContentAfter && 'pr-2', 112 + ]} 130 113 /> 131 114 132 - {contentAfter && <span class={content()}>{contentAfter}</span>} 115 + {contentAfter && ( 116 + <span class="box-border flex items-center text-neutral-foreground-3">{contentAfter}</span> 117 + )} 133 118 </span> 134 119 </fieldset> 135 120 );
+2 -12
packages/danaus/src/web/primitives/label.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useFieldContext } from './utils/field-context.tsx'; 6 4 7 - const root = cva({ 8 - base: 'text-base-300 font-medium text-neutral-foreground-1', 9 - }); 10 - 11 - const requiredIndicator = cva({ 12 - base: 'pl-1 text-status-danger-foreground-1', 13 - }); 14 - 15 5 export interface LabelProps { 16 6 for?: string; 17 7 required?: boolean; ··· 26 16 const htmlFor = forProp ?? fieldContext?.inputId; 27 17 28 18 return ( 29 - <label for={htmlFor} class={root({ className })}> 19 + <label for={htmlFor} class={['text-base-300 font-medium text-neutral-foreground-1', className]}> 30 20 {children} 31 21 32 22 {required && ( 33 23 <> 34 - <span class={requiredIndicator()} aria-hidden="true"> 24 + <span class="pl-1 text-status-danger-foreground-1" aria-hidden="true"> 35 25 * 36 26 </span> 37 27 <span class="sr-only">(required)</span>
+3 -7
packages/danaus/src/web/primitives/menu/divider.tsx
··· 1 - import { cva } from 'cva'; 2 - 3 - const root = cva({ 4 - base: ['-mx-1.25 my-1 w-auto border-b border-neutral-stroke-2'], 5 - }); 6 - 7 1 export interface MenuDividerProps { 8 2 class?: string; 9 3 } ··· 14 8 const MenuDivider = (props: MenuDividerProps) => { 15 9 const { class: className } = props; 16 10 17 - return <div role="separator" class={root({ className })} />; 11 + return ( 12 + <div role="separator" class={['-mx-1.25 my-1 w-auto border-b border-neutral-stroke-2', className]} /> 13 + ); 18 14 }; 19 15 20 16 export default MenuDivider;
+15 -23
packages/danaus/src/web/primitives/menu/item.tsx
··· 1 - import type { JSXNode } from '@oomfware/jsx'; 2 - 3 - import { cva } from 'cva'; 1 + import type { ClassValue, JSXNode } from '@oomfware/jsx'; 4 2 5 3 import type { InvokerCommand } from '../utils/types.ts'; 6 - 7 - const root = cva({ 8 - base: [ 9 - 'flex items-center gap-1 rounded-md px-2 py-1.5 text-left select-none', 10 - 'text-base-300 text-neutral-foreground-2', 11 - 'outline-2 -outline-offset-2 outline-transparent', 12 - 'transition', 13 - 'hover:bg-neutral-background-1-hover hover:text-neutral-foreground-2-hover', 14 - 'focus-visible:outline-stroke-focus-2', 15 - 'active:bg-neutral-background-1-active', 16 - ], 17 - }); 18 4 19 5 export interface MenuItemProps { 20 6 type?: 'submit' | 'button'; ··· 34 20 const MenuItem = (props: MenuItemProps) => { 35 21 const { type = 'button', href, disabled, commandfor, command, class: className, children } = props; 36 22 23 + const cn: ClassValue = [ 24 + 'flex items-center gap-1 rounded-md px-2 py-1.5 text-left select-none', 25 + 'text-base-300 text-neutral-foreground-2', 26 + 'outline-2 -outline-offset-2 outline-transparent', 27 + 'transition', 28 + 'hover:bg-neutral-background-1-hover hover:text-neutral-foreground-2-hover', 29 + 'focus-visible:outline-stroke-focus-2', 30 + 'active:bg-neutral-background-1-active', 31 + 32 + className, 33 + ]; 34 + 37 35 if (href !== undefined) { 38 36 return ( 39 - <a href={href} class={root({ className })}> 37 + <a href={href} class={cn}> 40 38 {children} 41 39 </a> 42 40 ); 43 41 } 44 42 45 43 return ( 46 - <button 47 - type={type} 48 - disabled={disabled} 49 - commandfor={commandfor} 50 - command={command} 51 - class={root({ className })} 52 - > 44 + <button type={type} disabled={disabled} commandfor={commandfor} command={command} class={cn}> 53 45 {children} 54 46 </button> 55 47 );
+1 -7
packages/danaus/src/web/primitives/menu/list.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: ['flex flex-col gap-0.5'], 7 - }); 8 - 9 3 export interface MenuListProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 17 11 const MenuList = (props: MenuListProps) => { 18 12 const { class: className, children } = props; 19 13 20 - return <div class={root({ className })}>{children}</div>; 14 + return <div class={['flex flex-col gap-0.5', className]}>{children}</div>; 21 15 }; 22 16 23 17 export default MenuList;
+12 -12
packages/danaus/src/web/primitives/menu/popover.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useMenuContext } from './utils/context.tsx'; 6 - 7 - const root = cva({ 8 - base: [ 9 - 'm-0 box-border w-max max-w-75 min-w-35 overflow-x-hidden rounded-md border border-transparent bg-neutral-background-1 p-1 text-neutral-foreground-1 shadow-16', 10 - 'anchored anchored-bottom-span-left try-flip-y', 11 - // entry/exit animations (slides down from anchor) 12 - 'popover-animate popover-slide-down', 13 - ], 14 - }); 15 4 16 5 export interface MenuPopoverProps { 17 6 class?: string; ··· 26 15 const { menuId } = useMenuContext(); 27 16 28 17 return ( 29 - <div id={menuId} popover="auto" class={root({ className })}> 18 + <div 19 + id={menuId} 20 + popover="auto" 21 + class={[ 22 + 'm-0 box-border w-max max-w-75 min-w-35 overflow-x-hidden rounded-md border border-transparent bg-neutral-background-1 p-1 text-neutral-foreground-1 shadow-16', 23 + 'anchored anchored-bottom-span-left try-flip-y', 24 + // entry/exit animations (slides down from anchor) 25 + 'popover-animate popover-slide-down', 26 + 27 + className, 28 + ]} 29 + > 30 30 {children} 31 31 </div> 32 32 );
+11 -13
packages/danaus/src/web/primitives/message-bar/actions.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useMessageBarContext } from './utils/context.tsx'; 6 - 7 - const root = cva({ 8 - base: ['flex items-center gap-3 pr-3', '[grid-area:secondaryActions]'], 9 - variants: { 10 - layout: { 11 - singleline: [], 12 - multiline: ['mt-2 mb-1.5 justify-end'], 13 - }, 14 - }, 15 - }); 16 4 17 5 export interface MessageBarActionsProps { 18 6 class?: string; ··· 27 15 const { class: className, children } = props; 28 16 const { layout } = useMessageBarContext(); 29 17 30 - return <div class={root({ layout, className })}>{children}</div>; 18 + return ( 19 + <div 20 + class={[ 21 + 'flex items-center gap-3 pr-3', 22 + '[grid-area:secondaryActions]', 23 + layout === 'multiline' && 'mt-2 mb-1.5 justify-end', 24 + ]} 25 + > 26 + {children} 27 + </div> 28 + ); 31 29 }; 32 30 33 31 export default MessageBarActions;
+1 -7
packages/danaus/src/web/primitives/message-bar/body.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: ['pr-3', 'text-base-300'], 7 - }); 8 - 9 3 export interface MessageBarBodyProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 18 12 const MessageBarBody = (props: MessageBarBodyProps) => { 19 13 const { class: className, children } = props; 20 14 21 - return <span class={root({ className })}>{children}</span>; 15 + return <span class={['pr-3', 'text-base-300', className]}>{children}</span>; 22 16 }; 23 17 24 18 export default MessageBarBody;
+47 -48
packages/danaus/src/web/primitives/message-bar/root.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import CheckCircle2Solid from '../../icons/central/check-circle-2-solid.tsx'; 6 4 import CircleInfoSolid from '../../icons/central/circle-info-solid.tsx'; 7 5 import CircleXSolid from '../../icons/central/circle-x-solid.tsx'; 8 6 import ExclamationTriangleSolid from '../../icons/central/exclamation-triangle-solid.tsx'; 9 7 10 - import { 11 - MessageBarContext, 12 - type MessageBarContextValue, 13 - type MessageBarIntent, 14 - type MessageBarLayout, 15 - } from './utils/context.tsx'; 8 + import { MessageBarContext, type MessageBarIntent, type MessageBarLayout } from './utils/context.tsx'; 16 9 17 10 const getIntentIcon = (intent: MessageBarIntent): JSXNode => { 18 11 switch (intent) { ··· 27 20 } 28 21 }; 29 22 30 - const root = cva({ 31 - base: ['grid', 'min-h-9', 'rounded-md border pl-3'], 32 - variants: { 33 - intent: { 34 - info: 'border-neutral-stroke-1 bg-neutral-background-3', 35 - success: 'border-status-success-border-1 bg-status-success-background-1', 36 - warning: 'border-status-warning-border-1 bg-status-warning-background-1', 37 - error: 'border-status-danger-border-1 bg-status-danger-background-1', 38 - }, 39 - layout: { 40 - singleline: [ 41 - 'items-center', 42 - 'grid-cols-[auto_1fr_auto_auto]', 43 - '[grid-template-areas:"icon_body_secondaryActions_actions"]', 44 - ], 45 - multiline: [ 46 - 'items-start py-2', 47 - 'grid-cols-[auto_1fr_auto]', 48 - '[grid-template-areas:"icon_body_actions"_"secondaryActions_secondaryActions_secondaryActions"]', 49 - ], 50 - }, 51 - }, 52 - }); 53 - 54 - const iconStyle = cva({ 55 - base: ['mr-2', 'flex items-center', 'text-base-500'], 56 - variants: { 57 - intent: { 58 - info: 'text-neutral-foreground-3', 59 - success: 'text-status-success-foreground-1', 60 - warning: 'text-status-warning-foreground-3', 61 - error: 'text-status-danger-foreground-1', 62 - }, 63 - }, 64 - }); 65 - 66 23 export interface MessageBarProps { 67 24 /** 68 25 * intent of the message bar ··· 87 44 const MessageBar = (props: MessageBarProps) => { 88 45 const { intent = 'info', layout, icon, class: className, children } = props; 89 46 90 - const contextValue: MessageBarContextValue = { intent, layout }; 91 47 const renderedIcon = icon ?? getIntentIcon(intent); 92 48 93 49 return ( 94 - <MessageBarContext.Provider value={contextValue}> 95 - <div role="group" aria-live="polite" class={root({ intent, layout, className })}> 96 - <span class={iconStyle({ intent })}>{renderedIcon}</span> 50 + <MessageBarContext.Provider value={{ intent, layout }}> 51 + <div 52 + role="group" 53 + aria-live="polite" 54 + class={[ 55 + 'grid', 56 + 'min-h-9', 57 + 'rounded-md border pl-3', 58 + 59 + intent === 'info' && 'border-neutral-stroke-1 bg-neutral-background-3', 60 + intent === 'success' && 'border-status-success-border-1 bg-status-success-background-1', 61 + intent === 'warning' && 'border-status-warning-border-1 bg-status-warning-background-1', 62 + intent === 'error' && 'border-status-danger-border-1 bg-status-danger-background-1', 63 + 64 + ...(layout === 'singleline' 65 + ? [ 66 + 'items-center', 67 + 'grid-cols-[auto_1fr_auto_auto]', 68 + '[grid-template-areas:"icon_body_secondaryActions_actions"]', 69 + ] 70 + : []), 71 + ...(layout === 'multiline' 72 + ? [ 73 + 'items-start py-2', 74 + 'grid-cols-[auto_1fr_auto]', 75 + '[grid-template-areas:"icon_body_actions"_"secondaryActions_secondaryActions_secondaryActions"]', 76 + ] 77 + : []), 78 + 79 + className, 80 + ]} 81 + > 82 + <span 83 + class={[ 84 + 'mr-2', 85 + 'flex items-center', 86 + 'text-base-500', 87 + 88 + intent === 'info' && 'text-neutral-foreground-3', 89 + intent === 'success' && 'text-status-success-foreground-1', 90 + intent === 'warning' && 'text-status-warning-foreground-3', 91 + intent === 'error' && 'text-status-danger-foreground-1', 92 + ]} 93 + > 94 + {renderedIcon} 95 + </span> 97 96 98 97 {children} 99 98 </div>
+1 -7
packages/danaus/src/web/primitives/message-bar/title.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 - const root = cva({ 6 - base: ['mr-1', 'text-base-300 font-semibold'], 7 - }); 8 - 9 3 export interface MessageBarTitleProps { 10 4 class?: string; 11 5 children?: JSXNode; ··· 18 12 const MessageBarTitle = (props: MessageBarTitleProps) => { 19 13 const { class: className, children } = props; 20 14 21 - return <span class={root({ className })}>{children}</span>; 15 + return <span class={['mr-1', 'text-base-300 font-semibold', className]}>{children}</span>; 22 16 }; 23 17 24 18 export default MessageBarTitle;
+50 -64
packages/danaus/src/web/primitives/radio.tsx
··· 1 1 import type { JSXNode } from '@oomfware/jsx'; 2 2 3 - import { cva } from 'cva'; 4 - 5 3 import { useId } from '../components/id.tsx'; 6 4 7 5 import { useRadioGroupContext } from './radio-group.tsx'; 8 6 9 - const root = cva({ 10 - base: [ 11 - 'group/radio relative inline-flex select-none', 12 - 'has-focus-visible:rounded-md has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-stroke-focus-2', 13 - ], 14 - }); 15 - 16 - const input = cva({ 17 - base: 'peer absolute top-0 left-0 m-0 h-full w-8 cursor-pointer opacity-0 disabled:cursor-default', 18 - }); 19 - 20 - const indicator = cva({ 21 - base: [ 22 - 'relative flex shrink-0 items-center justify-center', 23 - 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-full border', 24 - ], 25 - variants: { 26 - variant: { 27 - unchecked: [ 28 - 'peer-checked:hidden', 29 - 'border-neutral-stroke-accessible', 30 - 'group-hover/radio:border-neutral-stroke-accessible-hover', 31 - 'group-active/radio:border-neutral-stroke-accessible-active', 32 - // disabled 33 - 'peer-disabled:border-neutral-stroke-disabled', 34 - ], 35 - checked: [ 36 - 'hidden peer-checked:flex', 37 - 'border-compound-brand-stroke text-compound-brand-foreground-1', 38 - 'group-hover/radio:border-compound-brand-stroke-hover group-hover/radio:text-compound-brand-foreground-1-hover', 39 - 'group-active/radio:border-compound-brand-stroke-active group-active/radio:text-compound-brand-foreground-1-active', 40 - // disabled 41 - 'peer-disabled:border-neutral-stroke-disabled peer-disabled:text-neutral-foreground-disabled', 42 - ], 43 - }, 44 - }, 45 - }); 46 - 47 - const dot = cva({ 48 - base: 'h-2.5 w-2.5 rounded-full bg-current', 49 - }); 50 - 51 - const label = cva({ 52 - base: [ 53 - '-my-0.5 self-center p-2 pl-1 text-base-300', 54 - // unchecked 55 - 'cursor-pointer text-neutral-foreground-3', 56 - 'group-hover/radio:text-neutral-foreground-2', 57 - 'group-active/radio:text-neutral-foreground-1', 58 - // checked 59 - 'peer-checked:text-neutral-foreground-1', 60 - // disabled 61 - 'peer-disabled:cursor-default peer-disabled:text-neutral-foreground-disabled', 62 - ], 63 - }); 64 - 65 7 export interface RadioProps { 66 8 value: string; 67 9 disabled?: boolean; ··· 80 22 const shouldAutofocus = context.consumeAutofocus(); 81 23 82 24 return ( 83 - <span class={root({ className })}> 25 + <span 26 + class={[ 27 + 'group/radio relative inline-flex select-none', 28 + 'has-focus-visible:rounded-md has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-stroke-focus-2', 29 + 30 + className, 31 + ]} 32 + > 84 33 <input 85 34 type="radio" 86 35 id={inputId} ··· 89 38 checked={isChecked} 90 39 disabled={isDisabled} 91 40 autofocus={shouldAutofocus} 92 - class={input()} 41 + class="peer absolute top-0 left-0 m-0 h-full w-8 cursor-pointer opacity-0 disabled:cursor-default" 93 42 /> 94 43 95 - <span class={indicator({ variant: 'unchecked' })} /> 96 - <span class={indicator({ variant: 'checked' })}> 97 - <span class={dot()} /> 44 + <span 45 + class={[ 46 + 'relative flex shrink-0 items-center justify-center', 47 + 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-full border', 48 + 49 + 'peer-checked:hidden', 50 + 'border-neutral-stroke-accessible', 51 + 'group-hover/radio:border-neutral-stroke-accessible-hover', 52 + 'group-active/radio:border-neutral-stroke-accessible-active', 53 + // disabled 54 + 'peer-disabled:border-neutral-stroke-disabled', 55 + ]} 56 + /> 57 + <span 58 + class={[ 59 + 'relative flex shrink-0 items-center justify-center', 60 + 'pointer-events-none m-2 h-4 w-4 overflow-hidden rounded-full border', 61 + 62 + 'hidden peer-checked:flex', 63 + 'border-compound-brand-stroke text-compound-brand-foreground-1', 64 + 'group-hover/radio:border-compound-brand-stroke-hover group-hover/radio:text-compound-brand-foreground-1-hover', 65 + 'group-active/radio:border-compound-brand-stroke-active group-active/radio:text-compound-brand-foreground-1-active', 66 + // disabled 67 + 'peer-disabled:border-neutral-stroke-disabled peer-disabled:text-neutral-foreground-disabled', 68 + ]} 69 + > 70 + <span class="h-2.5 w-2.5 rounded-full bg-current" /> 98 71 </span> 99 72 100 73 {children && ( 101 - <label for={inputId} class={label()}> 74 + <label 75 + for={inputId} 76 + class={[ 77 + '-my-0.5 self-center p-2 pl-1 text-base-300', 78 + // unchecked 79 + 'cursor-pointer text-neutral-foreground-3', 80 + 'group-hover/radio:text-neutral-foreground-2', 81 + 'group-active/radio:text-neutral-foreground-1', 82 + // checked 83 + 'peer-checked:text-neutral-foreground-1', 84 + // disabled 85 + 'peer-disabled:cursor-default peer-disabled:text-neutral-foreground-disabled', 86 + ]} 87 + > 102 88 {children} 103 89 </label> 104 90 )}
+40 -48
packages/danaus/src/web/primitives/select.tsx
··· 1 - import { cva } from 'cva'; 2 - 3 1 import ChevronDownMediumOutlined from '../icons/central/chevron-down-medium-outlined.tsx'; 4 2 5 3 import { useFieldContext } from './utils/field-context.tsx'; 6 4 7 - const root = cva({ 8 - base: [ 9 - 'relative inline-flex flex-nowrap items-center overflow-hidden', 10 - 'transition duration-100', 11 - 'box-border', 12 - 'outline-2 -outline-offset-2 outline-transparent', 13 - 'border border-neutral-stroke-1', 14 - 'rounded-md', 15 - 'bg-neutral-background-1', 16 - 'h-8 min-w-0', 17 - 'text-base-300 text-neutral-foreground-1', 18 - // enabled states 19 - 'group-not-disabled/select:hover:border-neutral-stroke-1-hover', 20 - 'group-not-disabled/select:active:border-neutral-stroke-1-active', 21 - 'group-not-disabled/select:has-focus-visible:outline-compound-brand-stroke', 22 - // disabled states 23 - 'group-disabled/select:border-neutral-stroke-disabled group-disabled/select:bg-transparent group-disabled/select:text-neutral-foreground-disabled', 24 - ], 25 - }); 26 - 27 - const select = cva({ 28 - base: [ 29 - 'appearance-none', 30 - 'h-full grow', 31 - 'box-border', 32 - 'border-none outline-none', 33 - 'bg-neutral-background-1', 34 - 'pr-8 pl-2.5', 35 - 'min-w-0', 36 - 'text-neutral-foreground-1', 37 - 'group-disabled/select:cursor-not-allowed group-disabled/select:bg-transparent', 38 - ], 39 - }); 40 - 41 - const icon = cva({ 42 - base: [ 43 - 'absolute right-2.5', 44 - 'pointer-events-none', 45 - 'text-neutral-stroke-accessible', 46 - 'group-disabled/select:text-neutral-foreground-disabled', 47 - ], 48 - }); 49 - 50 5 export interface SelectOption<T extends string = string> { 51 6 value: T; 52 7 label: string; ··· 74 29 75 30 return ( 76 31 <fieldset disabled={disabled} class="group/select contents"> 77 - <span class={root({ className })}> 32 + <span 33 + class={[ 34 + 'relative inline-flex flex-nowrap items-center overflow-hidden', 35 + 'transition duration-100', 36 + 'box-border', 37 + 'outline-2 -outline-offset-2 outline-transparent', 38 + 'border border-neutral-stroke-1', 39 + 'rounded-md', 40 + 'bg-neutral-background-1', 41 + 'h-8 min-w-0', 42 + 'text-base-300 text-neutral-foreground-1', 43 + // enabled states 44 + 'group-not-disabled/select:hover:border-neutral-stroke-1-hover', 45 + 'group-not-disabled/select:active:border-neutral-stroke-1-active', 46 + 'group-not-disabled/select:has-focus-visible:outline-compound-brand-stroke', 47 + // disabled states 48 + 'group-disabled/select:border-neutral-stroke-disabled group-disabled/select:bg-transparent group-disabled/select:text-neutral-foreground-disabled', 49 + 50 + className, 51 + ]} 52 + > 78 53 <select 79 54 id={selectId} 80 55 name={name} ··· 82 57 required={required ?? fieldContext?.required} 83 58 aria-describedby={ariaDescribedBy} 84 59 aria-invalid={fieldContext?.validationStatus === 'error' ? true : undefined} 85 - class={select()} 60 + class={[ 61 + 'appearance-none', 62 + 'h-full grow', 63 + 'box-border', 64 + 'border-none outline-none', 65 + 'bg-neutral-background-1', 66 + 'pr-8 pl-2.5', 67 + 'min-w-0', 68 + 'text-neutral-foreground-1', 69 + 'group-disabled/select:cursor-not-allowed group-disabled/select:bg-transparent', 70 + ]} 86 71 > 87 72 {options.map((opt) => ( 88 73 <option value={opt.value} disabled={opt.disabled}> ··· 91 76 ))} 92 77 </select> 93 78 94 - <span class={icon()}> 79 + <span 80 + class={[ 81 + 'absolute right-2.5', 82 + 'pointer-events-none', 83 + 'text-neutral-stroke-accessible', 84 + 'group-disabled/select:text-neutral-foreground-disabled', 85 + ]} 86 + > 95 87 <ChevronDownMediumOutlined size={16} /> 96 88 </span> 97 89 </span>
+1 -1
packages/dev-env/package.json
··· 25 25 }, 26 26 "devDependencies": { 27 27 "@poppinss/ts-exec": "^1.4.1", 28 - "@types/node": "^22.19.3" 28 + "@types/node": "^22.19.7" 29 29 } 30 30 }
+422 -456
pnpm-lock.yaml
··· 15 15 devDependencies: 16 16 '@ianvs/prettier-plugin-sort-imports': 17 17 specifier: ^4.7.0 18 - version: 4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.7.4) 18 + version: 4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.8.0) 19 19 '@prettier/plugin-oxc': 20 20 specifier: ^0.1.3 21 21 version: 0.1.3 22 22 oxlint: 23 - specifier: ^1.38.0 24 - version: 1.38.0 23 + specifier: ^1.41.0 24 + version: 1.41.0 25 25 prettier: 26 - specifier: ^3.7.4 27 - version: 3.7.4 26 + specifier: ^3.8.0 27 + version: 3.8.0 28 28 prettier-plugin-tailwindcss: 29 29 specifier: ^0.7.2 30 - version: 0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.7.4))(@prettier/plugin-oxc@0.1.3)(prettier@3.7.4) 30 + version: 0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.8.0))(@prettier/plugin-oxc@0.1.3)(prettier@3.8.0) 31 31 typescript: 32 32 specifier: ^5.9.3 33 33 version: 5.9.3 ··· 38 38 specifier: ^3.1.10 39 39 version: 3.1.10 40 40 '@atcute/bluesky': 41 - specifier: ^3.2.14 42 - version: 3.2.14 41 + specifier: ^3.2.15 42 + version: 3.2.15 43 43 '@atcute/car': 44 - specifier: ^5.0.0 45 - version: 5.0.0 44 + specifier: ^5.1.0 45 + version: 5.1.0 46 46 '@atcute/cbor': 47 - specifier: ^2.2.8 48 - version: 2.2.8 49 - '@atcute/cid': 50 47 specifier: ^2.3.0 51 48 version: 2.3.0 49 + '@atcute/cid': 50 + specifier: ^2.4.0 51 + version: 2.4.0 52 52 '@atcute/client': 53 53 specifier: ^4.2.1 54 54 version: 4.2.1 ··· 71 71 specifier: ^1.2.6 72 72 version: 1.2.6 73 73 '@atcute/mst': 74 - specifier: ^0.1.1 75 - version: 0.1.1 74 + specifier: ^0.1.2 75 + version: 0.1.2 76 76 '@atcute/multibase': 77 77 specifier: ^1.1.6 78 78 version: 1.1.6 ··· 98 98 specifier: workspace:* 99 99 version: link:../lexicons 100 100 '@logtape/logtape': 101 - specifier: ^2.0.0 102 - version: 2.0.0 101 + specifier: ^2.0.1 102 + version: 2.0.1 103 103 '@oomfware/fetch-router': 104 104 specifier: ^0.2.1 105 105 version: 0.2.1 ··· 107 107 specifier: ^0.3.0 108 108 version: 0.3.0(@oomfware/fetch-router@0.2.1) 109 109 '@oomfware/jsx': 110 - specifier: ^0.1.5 111 - version: 0.1.5 110 + specifier: ^0.1.8 111 + version: 0.1.8 112 112 '@simplewebauthn/server': 113 113 specifier: ^13.2.2 114 114 version: 13.2.2 ··· 117 117 version: 1.0.0-beta.4(typescript@5.9.3) 118 118 drizzle-orm: 119 119 specifier: 1.0.0-beta.6-4414a19 120 - version: 1.0.0-beta.6-4414a19(@types/mssql@9.1.8)(bun-types@1.3.5)(mssql@11.0.1)(pg@8.16.3) 120 + version: 1.0.0-beta.6-4414a19(@types/mssql@9.1.8)(bun-types@1.3.6)(mssql@11.0.1)(pg@8.17.1) 121 121 get-port: 122 122 specifier: ^7.1.0 123 123 version: 7.1.0 ··· 150 150 specifier: ^4.1.18 151 151 version: 4.1.18 152 152 '@types/bun': 153 - specifier: ^1.3.5 154 - version: 1.3.5 153 + specifier: ^1.3.6 154 + version: 1.3.6 155 155 '@types/qrcode': 156 156 specifier: ^1.5.6 157 157 version: 1.5.6 ··· 205 205 specifier: ^1.4.1 206 206 version: 1.4.1 207 207 '@types/node': 208 - specifier: ^22.19.3 209 - version: 22.19.3 208 + specifier: ^22.19.7 209 + version: 22.19.7 210 210 211 211 packages/lexicons: 212 212 dependencies: ··· 232 232 '@atcute/atproto@3.1.10': 233 233 resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==} 234 234 235 - '@atcute/bluesky@3.2.14': 236 - resolution: {integrity: sha512-XlVuF55AYIyplmKvlGLlj+cUvk9ggxNRPczkTPIY991xJ4qDxDHpBJ39ekAV4dWcuBoRo2o9JynzpafPu2ljDA==} 235 + '@atcute/bluesky@3.2.15': 236 + resolution: {integrity: sha512-H4RW3WffjfdKvOZ9issEUQnuSR4KfuAwwJnYu0fclA9VDa99JTJ+pa8tTl9lFeBV9DINtWJAx7rdIbICoVCstQ==} 237 237 238 - '@atcute/car@5.0.0': 239 - resolution: {integrity: sha512-OIY2xTXv8lSpZsDSn/UYQtJSMvDw5Hi4Q+uyvmiqSM+fht08QRAEq/nxa5YFciPZ3nfDFnZ3//EgJw7QhkSXLQ==} 238 + '@atcute/car@5.1.0': 239 + resolution: {integrity: sha512-W9axHVrwIkZJaeN/VQ1LyyU3b95wHBjQnrREouxygvmvWd1lmjFvF8Si8b0AG0VkWJ6h7h6qhOeUATynBzBFIg==} 240 240 241 - '@atcute/cbor@2.2.8': 242 - resolution: {integrity: sha512-UzOAN9BuN6JCXgn0ryV8qZuRJUDrNqrbLd6EFM8jc6RYssjRyGRxNy6RZ1NU/07Hd8Tq/0pz8+nQiMu5Zai5uw==} 241 + '@atcute/cbor@2.3.0': 242 + resolution: {integrity: sha512-7G2AndkfYzIXMBOBqUPUWP6oIJJm77KY5nYzS4Mr5NNxnmnrBrXEQqp+seCE3X5TV8FUSWQK5YRTU87uPjafMQ==} 243 243 244 - '@atcute/cid@2.3.0': 245 - resolution: {integrity: sha512-1SRdkTuMs/l5arQ+7Ag0F7JAueZqtzYE0d2gmbkuzi8EPweNU1kYlQs0CE4dSd81YF8PMDTOQty0K2ATq9CW9g==} 244 + '@atcute/cid@2.4.0': 245 + resolution: {integrity: sha512-6+5u9MpUrgSRQ94z7vaIX4BYk8fYr2KXUBS+rrr2NhlPy8xam8nbTlmd3hvBbtpSwShbhRAE4tA5Ab7eYUp2Yw==} 246 246 247 247 '@atcute/client@4.2.1': 248 248 resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==} ··· 283 283 '@atcute/lexicons@1.2.6': 284 284 resolution: {integrity: sha512-s76UQd8D+XmHIzrjD9CJ9SOOeeLPHc+sMmcj7UFakAW/dDFXc579fcRdRfuUKvXBL5v1Gs2VgDdlh/IvvQZAwA==} 285 285 286 - '@atcute/mst@0.1.1': 287 - resolution: {integrity: sha512-NZ/lZ68GOjmAgBSeGf6WHyKM5wo1Hhc7PNt9uwsViswGPMNEEKNj9cw+0YGziXee/Qbnvc+CKqbRSPwruhXFQg==} 286 + '@atcute/mst@0.1.2': 287 + resolution: {integrity: sha512-Oz5CZTjqauEJLT9B+zkoy/mjl216DrjCxJFrguRV3N+1NkIbCfAcSRf3UDSNjfzDzBkJvC1WjA/3oQkm83duPg==} 288 288 289 289 '@atcute/multibase@1.1.6': 290 290 resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==} ··· 295 295 '@atcute/tid@1.1.1': 296 296 resolution: {integrity: sha512-djJ8UGhLkTU5V51yCnBEruMg35qETjWzWy5sJG/2gEOl2Gd7rQWHSaf+yrO6vMS5EFA38U2xOWE3EDUPzvc2ZQ==} 297 297 298 - '@atcute/time-ms@1.0.0': 299 - resolution: {integrity: sha512-iWEOlMBcO3ktB+zQPC2kXka9H/798we+IWq2sjhb+hQJNNfcJrwejzvNi/68Q3jKo/hdfwZjRU9iF8U6D32/2Q==} 298 + '@atcute/time-ms@1.2.0': 299 + resolution: {integrity: sha512-dtNKebVIbr1+yu3a6vgtL4sfkNgxkL3aA+ohHsjtW83WWMjjGvX8GVTVmYCJ2dYSxIoxK0q1yWs11PmlqzmQ/A==} 300 300 301 301 '@atcute/uint8array@1.0.6': 302 302 resolution: {integrity: sha512-ucfRBQc7BFT8n9eCyGOzDHEMKF/nZwhS2pPao4Xtab1ML3HdFYcX2DM1tadCzas85QTGxHe5urnUAAcNKGRi9A==} ··· 331 331 '@atproto-labs/xrpc-utils@0.0.24': 332 332 resolution: {integrity: sha512-wWXd2Ht47UsL/UbDCr3twMFSZrh0xSI56u4O3kz0DTU4G+530mCG71mMVE6eeYcR+j6FEjp7o2Ld6c7wFklYGw==} 333 333 334 - '@atproto/api@0.18.10': 335 - resolution: {integrity: sha512-q23wreAGhktrMLepulvljZWHsUOrTIDwhU3gr/uSX3R1TZIZ3i4SxQZVlMqaQHpNJ/5Xj8J1hozkwVpaOX37eA==} 334 + '@atproto/api@0.18.16': 335 + resolution: {integrity: sha512-tRGKSWr83pP5CQpSboePU21pE+GqLDYy1XHae4HH4hjaT0pr5V8wNgu70kbKB0B02GVUumeDRpJnlHKD+eMzLg==} 336 336 337 337 '@atproto/bsky@0.0.203': 338 338 resolution: {integrity: sha512-IMtQhxTBeNO0gGA7Tf9ASQFurQZlK+JxLnuwKrxX6HS+khMOftEolHB4SsGwZEWPEuF7PyuvB/zkaubwJzN3BA==} 339 339 engines: {node: '>=18.7.0'} 340 340 341 - '@atproto/common-web@0.4.10': 342 - resolution: {integrity: sha512-TLDZSgSKzT8ZgOrBrTGK87J1CXve9TEuY6NVVUBRkOMzRRtQzpFb9/ih5WVS/hnaWVvE30CfuyaetRoma+WKNw==} 341 + '@atproto/common-web@0.4.12': 342 + resolution: {integrity: sha512-3aCJemqM/fkHQrVPbTCHCdiVstKFI+2LkFLvUhO6XZP0EqUZa/rg/CIZBKTFUWu9I5iYiaEiXL9VwcDRpEevSw==} 343 343 344 344 '@atproto/common@0.1.0': 345 345 resolution: {integrity: sha512-OB5tWE2R19jwiMIs2IjQieH5KTUuMb98XGCn9h3xuu6NanwjlmbCYMv08fMYwIp3UQ6jcq//84cDT3Bu6fJD+A==} ··· 347 347 '@atproto/common@0.1.1': 348 348 resolution: {integrity: sha512-GYwot5wF/z8iYGSPjrLHuratLc0CVgovmwfJss7+BUOB6y2/Vw8+1Vw0n9DDI0gb5vmx3UI8z0uJgC8aa8yuJg==} 349 349 350 - '@atproto/common@0.5.6': 351 - resolution: {integrity: sha512-rbWoZwHQNP8jcwjCREVecchw8aaoM5A1NCONyb9PVDWOJLRLCzojYMeIS8IbFqXo6NyIByOGddupADkkLeVBGQ==} 350 + '@atproto/common@0.5.8': 351 + resolution: {integrity: sha512-6BS6OJ/eiN/w8cu3xG1NA/waq9jBsYXZ6pfV85WUDegbfZaGS/IVtpJtjdE7LemE8cJys3AqGFDVJzeXDBQgbw==} 352 352 engines: {node: '>=18.7.0'} 353 353 354 354 '@atproto/crypto@0.1.0': ··· 365 365 resolution: {integrity: sha512-nQbzDLXOhM8p/wo0cTh5DfMSOSHzj6jizpodX37LJ4S1TZzumSxAjHEZa5Rev3JaoD5uSWMVE0MmKEGWkPPvfQ==} 366 366 engines: {node: '>=18.7.0'} 367 367 368 - '@atproto/lex-cbor@0.0.6': 369 - resolution: {integrity: sha512-lee2T00owDy3I1plRHuURT6f98NIpYZZr2wXa5pJZz5JzefZ+nv8gJ2V70C2f+jmSG+5S9NTIy4uJw94vaHf4A==} 368 + '@atproto/lex-cbor@0.0.8': 369 + resolution: {integrity: sha512-WFUkNTLUMunPaA+NkD2INwfhrgo5fAMz7zSk2ncoqbK2AS78X2ith8TJSevY0ynPukbFmaJ9BdauzCpWQ4ZIqQ==} 370 370 371 - '@atproto/lex-data@0.0.6': 372 - resolution: {integrity: sha512-MBNB4ghRJQzuXK1zlUPljpPbQcF1LZ5dzxy274KqPt4p3uPuRw0mHjgcCoWzRUNBQC685WMQR4IN9DHtsnG57A==} 371 + '@atproto/lex-data@0.0.8': 372 + resolution: {integrity: sha512-1Y5tz7BkS7380QuLNXaE8GW8Xba+mRWugt8BKM4BUFYjjUZdmirU8lr72iM4XlEBrzRu8Cfvj+MbsbYaZv+IgA==} 373 373 374 - '@atproto/lex-json@0.0.6': 375 - resolution: {integrity: sha512-EILnN5cditPvf+PCNjXt7reMuzjugxAL1fpSzmzJbEMGMUwxOf5pPWxRsaA/M3Boip4NQZ+6DVrPOGUMlnqceg==} 374 + '@atproto/lex-json@0.0.8': 375 + resolution: {integrity: sha512-w1Qmkae1QhmNz+i1Zm3xr3jp0UPPRENmdlpU0qIrdxWDo9W4Mzkeyc3eSoa+Zs+zN8xkRSQw7RLZte/B7Ipdwg==} 376 376 377 377 '@atproto/lexicon@0.6.0': 378 378 resolution: {integrity: sha512-5veb8aD+J5M0qszLJ+73KSFsFrJBgAY/nM1TSAJvGY7fNc9ZAT+PSUlmIyrdye9YznAZ07yktalls/TwNV7cHQ==} ··· 392 392 resolution: {integrity: sha512-dox1XIymuC7/ZRhUqKezIGgooZS45C6vHCfu0PnWjfvsLCK2kAlnvX4IBkA/WpcoijDhQ9ejChnFbo/sLmgvAg==} 393 393 engines: {node: '>=18.7.0'} 394 394 395 - '@atproto/xrpc-server@0.10.7': 396 - resolution: {integrity: sha512-7SWUeNeRIKGpg35b2OU4bkTr8CpgOHfEvyEfU3wuzfgeDgC3lxIhHB49O+8OxDipDSlVbHePziyoyHs3mFHnRA==} 395 + '@atproto/xrpc-server@0.10.9': 396 + resolution: {integrity: sha512-6PVlkbvGitKAAqR9Lt8KzLp/2c8RHjpJdJ3OBM5baHUwpej7nKESyXvO5bk/GZHTvIcp0Vg0b45spn3/F9tsWg==} 397 397 engines: {node: '>=18.7.0'} 398 398 399 399 '@atproto/xrpc@0.7.7': ··· 455 455 resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} 456 456 engines: {node: '>=20.0.0'} 457 457 458 - '@azure/msal-browser@4.27.0': 459 - resolution: {integrity: sha512-bZ8Pta6YAbdd0o0PEaL1/geBsPrLEnyY/RDWqvF1PP9RUH8EMLvUMGoZFYS6jSlUan6KZ9IMTLCnwpWWpQRK/w==} 458 + '@azure/msal-browser@4.28.1': 459 + resolution: {integrity: sha512-al2u2fTchbClq3L4C1NlqLm+vwKfhYCPtZN2LR/9xJVaQ4Mnrwf5vANvuyPSJHcGvw50UBmhuVmYUAhTEetTpA==} 460 460 engines: {node: '>=0.8.0'} 461 461 462 - '@azure/msal-common@15.13.3': 463 - resolution: {integrity: sha512-shSDU7Ioecya+Aob5xliW9IGq1Ui8y4EVSdWGyI1Gbm4Vg61WpP95LuzcY214/wEjSn6w4PZYD4/iVldErHayQ==} 462 + '@azure/msal-common@15.14.1': 463 + resolution: {integrity: sha512-IkzF7Pywt6QKTS0kwdCv/XV8x8JXknZDvSjj/IccooxnP373T5jaadO3FnOrbWo3S0UqkfIDyZNTaQ/oAgRdXw==} 464 464 engines: {node: '>=0.8.0'} 465 465 466 - '@azure/msal-node@3.8.4': 467 - resolution: {integrity: sha512-lvuAwsDpPDE/jSuVQOBMpLbXuVuLsPNRwWCyK3/6bPlBk0fGWegqoZ0qjZclMWyQ2JNvIY3vHY7hoFmFmFQcOw==} 466 + '@azure/msal-node@3.8.6': 467 + resolution: {integrity: sha512-XTmhdItcBckcVVTy65Xp+42xG4LX5GK+9AqAsXPXk4IqUNv+LyQo5TMwNjuFYBfAB2GTG9iSQGk+QLc03vhf3w==} 468 468 engines: {node: '>=16'} 469 469 470 - '@babel/code-frame@7.27.1': 471 - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 470 + '@babel/code-frame@7.28.6': 471 + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} 472 472 engines: {node: '>=6.9.0'} 473 473 474 - '@babel/generator@7.28.5': 475 - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 474 + '@babel/generator@7.28.6': 475 + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} 476 476 engines: {node: '>=6.9.0'} 477 477 478 478 '@babel/helper-globals@7.28.0': ··· 487 487 resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 488 488 engines: {node: '>=6.9.0'} 489 489 490 - '@babel/parser@7.28.5': 491 - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 490 + '@babel/parser@7.28.6': 491 + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} 492 492 engines: {node: '>=6.0.0'} 493 493 hasBin: true 494 494 495 - '@babel/template@7.27.2': 496 - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 495 + '@babel/template@7.28.6': 496 + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} 497 497 engines: {node: '>=6.9.0'} 498 498 499 - '@babel/traverse@7.28.5': 500 - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} 499 + '@babel/traverse@7.28.6': 500 + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} 501 501 engines: {node: '>=6.9.0'} 502 502 503 - '@babel/types@7.28.5': 504 - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 503 + '@babel/types@7.28.6': 504 + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} 505 505 engines: {node: '>=6.9.0'} 506 506 507 507 '@badrap/valita@0.4.6': ··· 894 894 '@levischuck/tiny-cbor@0.2.11': 895 895 resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} 896 896 897 - '@logtape/logtape@2.0.0': 898 - resolution: {integrity: sha512-z9Hp44mIRXAzgxSyQfFQiRuJ78EMnZa6g43UCxyGOO3RgHjn/7q+5OhdbhypkeHjiJRPxv6RmRsyF0S+OOYWnA==} 897 + '@logtape/logtape@2.0.1': 898 + resolution: {integrity: sha512-NcxVG7HsG8+ykDmzHunp2bGvI45OvSCFp1MXr9hJFUNzOF02tEYpSjO5i9ghRfygiITmIPh+59uPVQSZmj5Rmg==} 899 899 900 900 '@napi-rs/wasm-runtime@1.1.1': 901 901 resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} ··· 922 922 peerDependencies: 923 923 '@oomfware/fetch-router': ^0.2.1 924 924 925 - '@oomfware/jsx@0.1.5': 926 - resolution: {integrity: sha512-Hq0f74iarKWsEpfCTV3zWdH2Bh169Y6gOh84Lsp0uSRls6IksVXZfv6ZtkZGAr9pMvrHf06n3vnoNJ8xcqsCtw==} 925 + '@oomfware/jsx@0.1.8': 926 + resolution: {integrity: sha512-5NRutcLX4P2LwPkRcN7bZA16vv74GRLwPhRvj3lEClhRF0T0K2Zi/+lrbxUDck4qNXOK66A+B2kjhVdb2oBW8A==} 927 927 928 928 '@optique/core@0.6.11': 929 929 resolution: {integrity: sha512-GVLFihzBA1j78NFlkU5N1Lu0jRqET0k6Z66WK8VQKG/a3cxmCInVGSKMIdQG8i6pgC8wD5OizF6Y3QMztmhAxg==} ··· 1028 1028 '@oxc-project/types@0.99.0': 1029 1029 resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} 1030 1030 1031 - '@oxc-resolver/binding-android-arm-eabi@11.16.2': 1032 - resolution: {integrity: sha512-lVJbvydLQIDZHKUb6Zs9Rq80QVTQ9xdCQE30eC9/cjg4wsMoEOg65QZPymUAIVJotpUAWJD0XYcwE7ugfxx5kQ==} 1031 + '@oxc-resolver/binding-android-arm-eabi@11.16.3': 1032 + resolution: {integrity: sha512-CVyWHu6ACDqDcJxR4nmGiG8vDF4TISJHqRNzac5z/gPQycs/QrP/1pDsJBy0MD7jSw8nVq2E5WqeHQKabBG/Jg==} 1033 1033 cpu: [arm] 1034 1034 os: [android] 1035 1035 1036 - '@oxc-resolver/binding-android-arm64@11.16.2': 1037 - resolution: {integrity: sha512-fEk+g/g2rJ6LnBVPqeLcx+/alWZ/Db1UlXG+ZVivip0NdrnOzRL48PAmnxTMGOrLwsH1UDJkwY3wOjrrQltCqg==} 1036 + '@oxc-resolver/binding-android-arm64@11.16.3': 1037 + resolution: {integrity: sha512-tTIoB7plLeh2o6Ay7NnV5CJb6QUXdxI7Shnsp2ECrLSV81k+oVE3WXYrQSh4ltWL75i0OgU5Bj3bsuyg5SMepw==} 1038 1038 cpu: [arm64] 1039 1039 os: [android] 1040 1040 1041 - '@oxc-resolver/binding-darwin-arm64@11.16.2': 1042 - resolution: {integrity: sha512-Pkbp1qi7kdUX6k3Fk1PvAg6p7ruwaWKg1AhOlDgrg2vLXjtv9ZHo7IAQN6kLj0W771dPJZWqNxoqTPacp2oYWA==} 1041 + '@oxc-resolver/binding-darwin-arm64@11.16.3': 1042 + resolution: {integrity: sha512-OXKVH7uwYd3Rbw1s2yJZd6/w+6b01iaokZubYhDAq4tOYArr+YCS+lr81q1hsTPPRZeIsWE+rJLulmf1qHdYZA==} 1043 1043 cpu: [arm64] 1044 1044 os: [darwin] 1045 1045 1046 - '@oxc-resolver/binding-darwin-x64@11.16.2': 1047 - resolution: {integrity: sha512-FYCGcU1iSoPkADGLfQbuj0HWzS+0ItjDCt9PKtu2Hzy6T0dxO4Y1enKeCOxCweOlmLEkSxUlW5UPT4wvT3LnAg==} 1046 + '@oxc-resolver/binding-darwin-x64@11.16.3': 1047 + resolution: {integrity: sha512-WwjQ4WdnCxVYZYd3e3oY5XbV3JeLy9pPMK+eQQ2m8DtqUtbxnvPpAYC2Knv/2bS6q5JiktqOVJ2Hfia3OSo0/A==} 1048 1048 cpu: [x64] 1049 1049 os: [darwin] 1050 1050 1051 - '@oxc-resolver/binding-freebsd-x64@11.16.2': 1052 - resolution: {integrity: sha512-1zHCoK6fMcBjE54P2EG/z70rTjcRxvyKfvk4E/QVrWLxNahuGDFZIxoEoo4kGnnEcmPj41F0c2PkrQbqlpja5g==} 1051 + '@oxc-resolver/binding-freebsd-x64@11.16.3': 1052 + resolution: {integrity: sha512-4OHKFGJBBfOnuJnelbCS4eBorI6cj54FUxcZJwEXPeoLc8yzORBoJ2w+fQbwjlQcUUZLEg92uGhKCRiUoqznjg==} 1053 1053 cpu: [x64] 1054 1054 os: [freebsd] 1055 1055 1056 - '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.2': 1057 - resolution: {integrity: sha512-+ucLYz8EO5FDp6kZ4o1uDmhoP+M98ysqiUW4hI3NmfiOJQWLrAzQjqaTdPfIOzlCXBU9IHp5Cgxu6wPjVb8dbA==} 1056 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.3': 1057 + resolution: {integrity: sha512-OM3W0NLt9u7uKwG/yZbeXABansZC0oZeDF1nKgvcZoRw4/Yak6/l4S0onBfDFeYMY94eYeAt2bl60e30lgsb5A==} 1058 1058 cpu: [arm] 1059 1059 os: [linux] 1060 1060 1061 - '@oxc-resolver/binding-linux-arm-musleabihf@11.16.2': 1062 - resolution: {integrity: sha512-qq+TpNXyw1odDgoONRpMLzH4hzhwnEw55398dL8rhKGvvYbio71WrJ00jE+hGlEi7H1Gkl11KoPJRaPlRAVGPw==} 1061 + '@oxc-resolver/binding-linux-arm-musleabihf@11.16.3': 1062 + resolution: {integrity: sha512-MRs7D7i1t7ACsAdTuP81gLZES918EpBmiUyEl8fu302yQB+4L7L7z0Ui8BWnthUTQd3nAU9dXvENLK/SqRVH8A==} 1063 1063 cpu: [arm] 1064 1064 os: [linux] 1065 1065 1066 - '@oxc-resolver/binding-linux-arm64-gnu@11.16.2': 1067 - resolution: {integrity: sha512-xlMh4gNtplNQEwuF5icm69udC7un0WyzT5ywOeHrPMEsghKnLjXok2wZgAA7ocTm9+JsI+nVXIQa5XO1x+HPQg==} 1066 + '@oxc-resolver/binding-linux-arm64-gnu@11.16.3': 1067 + resolution: {integrity: sha512-0eVYZxSceNqGADzhlV4ZRqkHF0fjWxRXQOB7Qwl5y1gN/XYUDvMfip+ngtzj4dM7zQT4U97hUhJ7PUKSy/JIGQ==} 1068 1068 cpu: [arm64] 1069 1069 os: [linux] 1070 1070 1071 - '@oxc-resolver/binding-linux-arm64-musl@11.16.2': 1072 - resolution: {integrity: sha512-OZs33QTMi0xmHv/4P0+RAKXJTBk7UcMH5tpTaCytWRXls/DGaJ48jOHmriQGK2YwUqXl+oneuNyPOUO0obJ+Hg==} 1071 + '@oxc-resolver/binding-linux-arm64-musl@11.16.3': 1072 + resolution: {integrity: sha512-B1BvLeZbgDdVN0FvU40l5Q7lej8310WlabCBaouk8jY7H7xbI8phtomTtk3Efmevgfy5hImaQJu6++OmcFb2NQ==} 1073 1073 cpu: [arm64] 1074 1074 os: [linux] 1075 1075 1076 - '@oxc-resolver/binding-linux-ppc64-gnu@11.16.2': 1077 - resolution: {integrity: sha512-UVyuhaV32dJGtF6fDofOcBstg9JwB2Jfnjfb8jGlu3xcG+TsubHRhuTwQ6JZ1sColNT1nMxBiu7zdKUEZi1kwg==} 1076 + '@oxc-resolver/binding-linux-ppc64-gnu@11.16.3': 1077 + resolution: {integrity: sha512-q7khglic3Jqak7uDgA3MFnjDeI7krQT595GDZpvFq785fmFYSx8rlTkoHzmhQtUisYtl4XG7WUscwsoidFUI4w==} 1078 1078 cpu: [ppc64] 1079 1079 os: [linux] 1080 1080 1081 - '@oxc-resolver/binding-linux-riscv64-gnu@11.16.2': 1082 - resolution: {integrity: sha512-YZZS0yv2q5nE1uL/Fk4Y7m9018DSEmDNSG8oJzy1TJjA1jx5HL52hEPxi98XhU6OYhSO/vC1jdkJeE8TIHugug==} 1081 + '@oxc-resolver/binding-linux-riscv64-gnu@11.16.3': 1082 + resolution: {integrity: sha512-aFRNmQNPzDgQEbw2s3c8yJYRimacSDI+u9df8rn5nSKzTVitHmbEpZqfxpwNLCKIuLSNmozHR1z1OT+oZVeYqg==} 1083 1083 cpu: [riscv64] 1084 1084 os: [linux] 1085 1085 1086 - '@oxc-resolver/binding-linux-riscv64-musl@11.16.2': 1087 - resolution: {integrity: sha512-9VYuypwtx4kt1lUcwJAH4dPmgJySh4/KxtAPdRoX2BTaZxVm/yEXHq0mnl/8SEarjzMvXKbf7Cm6UBgptm3DZw==} 1086 + '@oxc-resolver/binding-linux-riscv64-musl@11.16.3': 1087 + resolution: {integrity: sha512-vZI85SvSMADcEL9G1TIrV0Rlkc1fY5Mup0DdlVC5EHPysZB4hXXHpr+h09pjlK5y+5om5foIzDRxE1baUCaWOA==} 1088 1088 cpu: [riscv64] 1089 1089 os: [linux] 1090 1090 1091 - '@oxc-resolver/binding-linux-s390x-gnu@11.16.2': 1092 - resolution: {integrity: sha512-3gbwQ+xlL5gpyzgSDdC8B4qIM4mZaPDLaFOi3c/GV7CqIdVJc5EZXW4V3T6xwtPBOpXPXfqQLbhTnUD4SqwJtA==} 1091 + '@oxc-resolver/binding-linux-s390x-gnu@11.16.3': 1092 + resolution: {integrity: sha512-xiLBnaUlddFEzRHiHiSGEMbkg8EwZY6VD8F+3GfnFsiK3xg/4boaUV2bwXd+nUzl3UDQOMW1QcZJ4jJSb0qiJA==} 1093 1093 cpu: [s390x] 1094 1094 os: [linux] 1095 1095 1096 - '@oxc-resolver/binding-linux-x64-gnu@11.16.2': 1097 - resolution: {integrity: sha512-m0WcK0j54tSwWa+hQaJMScZdWneqE7xixp/vpFqlkbhuKW9dRHykPAFvSYg1YJ3MJgu9ZzVNpYHhPKJiEQq57Q==} 1096 + '@oxc-resolver/binding-linux-x64-gnu@11.16.3': 1097 + resolution: {integrity: sha512-6y0b05wIazJJgwu7yU/AYGFswzQQudYJBOb/otDhiDacp1+6ye8egoxx63iVo9lSpDbipL++54AJQFlcOHCB+g==} 1098 1098 cpu: [x64] 1099 1099 os: [linux] 1100 1100 1101 - '@oxc-resolver/binding-linux-x64-musl@11.16.2': 1102 - resolution: {integrity: sha512-ZjUm3w96P2t47nWywGwj1A2mAVBI/8IoS7XHhcogWCfXnEI3M6NPIRQPYAZW4s5/u3u6w1uPtgOwffj2XIOb/g==} 1101 + '@oxc-resolver/binding-linux-x64-musl@11.16.3': 1102 + resolution: {integrity: sha512-RmMgwuMa42c9logS7Pjprf5KCp8J1a1bFiuBFtG9/+yMu0BhY2t+0VR/um7pwtkNFvIQqAVh6gDOg/PnoKRcdQ==} 1103 1103 cpu: [x64] 1104 1104 os: [linux] 1105 1105 1106 - '@oxc-resolver/binding-openharmony-arm64@11.16.2': 1107 - resolution: {integrity: sha512-OFVQ2x3VenTp13nIl6HcQ/7dmhFmM9dg2EjKfHcOtYfrVLQdNR6THFU7GkMdmc8DdY1zLUeilHwBIsyxv5hkwQ==} 1106 + '@oxc-resolver/binding-openharmony-arm64@11.16.3': 1107 + resolution: {integrity: sha512-/7AYRkjjW7xu1nrHgWUFy99Duj4/ydOBVaHtODie9/M6fFngo+8uQDFFnzmr4q//sd/cchIerISp/8CQ5TsqIA==} 1108 1108 cpu: [arm64] 1109 1109 os: [openharmony] 1110 1110 1111 - '@oxc-resolver/binding-wasm32-wasi@11.16.2': 1112 - resolution: {integrity: sha512-+O1sY3RrGyA2AqDnd3yaDCsqZqCblSTEpY7TbbaOaw0X7iIbGjjRLdrQk9StG3QSiZuBy9FdFwotIiSXtwvbAQ==} 1111 + '@oxc-resolver/binding-wasm32-wasi@11.16.3': 1112 + resolution: {integrity: sha512-urM6aIPbi5di4BSlnpd/TWtDJgG6RD06HvLBuNM+qOYuFtY1/xPbzQ2LanBI2ycpqIoIZwsChyplALwAMdyfCQ==} 1113 1113 engines: {node: '>=14.0.0'} 1114 1114 cpu: [wasm32] 1115 1115 1116 - '@oxc-resolver/binding-win32-arm64-msvc@11.16.2': 1117 - resolution: {integrity: sha512-jMrMJL+fkx6xoSMFPOeyQ1ctTFjavWPOSZEKUY5PebDwQmC9cqEr4LhdTnGsOtFrWYLXlEU4xWeMdBoc/XKkOA==} 1116 + '@oxc-resolver/binding-win32-arm64-msvc@11.16.3': 1117 + resolution: {integrity: sha512-QuvLqGKf7frxWHQ5TnrcY0C/hJpANsaez99Q4dAk1hen7lDTD4FBPtBzPnntLFXeaVG3PnSmnVjlv0vMILwU7Q==} 1118 1118 cpu: [arm64] 1119 1119 os: [win32] 1120 1120 1121 - '@oxc-resolver/binding-win32-ia32-msvc@11.16.2': 1122 - resolution: {integrity: sha512-tl0xDA5dcQplG2yg2ZhgVT578dhRFafaCfyqMEAXq8KNpor85nJ53C3PLpfxD2NKzPioFgWEexNsjqRi+kW2Mg==} 1121 + '@oxc-resolver/binding-win32-ia32-msvc@11.16.3': 1122 + resolution: {integrity: sha512-QR/witXK6BmYTlEP8CCjC5fxeG5U9A6a50pNpC1nLnhAcJjtzFG8KcQ5etVy/XvCLiDc7fReaAWRNWtCaIhM8Q==} 1123 1123 cpu: [ia32] 1124 1124 os: [win32] 1125 1125 1126 - '@oxc-resolver/binding-win32-x64-msvc@11.16.2': 1127 - resolution: {integrity: sha512-M7z0xjYQq1HdJk2DxTSLMvRMyBSI4wn4FXGcVQBsbAihgXevAReqwMdb593nmCK/OiFwSNcOaGIzUvzyzQ+95w==} 1126 + '@oxc-resolver/binding-win32-x64-msvc@11.16.3': 1127 + resolution: {integrity: sha512-bFuJRKOscsDAEZ/a8BezcTMAe2BQ/OBRfuMLFUuINfTR5qGVcm4a3xBIrQVepBaPxFj16SJdRjGe05vDiwZmFw==} 1128 1128 cpu: [x64] 1129 1129 os: [win32] 1130 1130 1131 - '@oxlint/darwin-arm64@1.38.0': 1132 - resolution: {integrity: sha512-9rN3047QTyA4i73FKikDUBdczRcLtOsIwZ5TsEx5Q7jr5nBjolhYQOFQf9QdhBLdInxw1iX4+lgdMCf1g74zjg==} 1131 + '@oxlint/darwin-arm64@1.41.0': 1132 + resolution: {integrity: sha512-K0Bs0cNW11oWdSrKmrollKF44HMM2HKr4QidZQHMlhJcSX8pozxv0V5FLdqB4sddzCY0J9Wuuw+oRAfR8sdRwA==} 1133 1133 cpu: [arm64] 1134 1134 os: [darwin] 1135 1135 1136 - '@oxlint/darwin-x64@1.38.0': 1137 - resolution: {integrity: sha512-Y1UHW4KOlg5NvyrSn/bVBQP8/LRuid7Pnu+BWGbAVVsFcK0b565YgMSO3Eu9nU3w8ke91dr7NFpUmS+bVkdkbw==} 1136 + '@oxlint/darwin-x64@1.41.0': 1137 + resolution: {integrity: sha512-1LCCXCe9nN8LbrJ1QOGari2HqnxrZrveYKysWDIg8gFsQglIg00XF/8lRbA0kWHMdLgt4X0wfNYhhFz+c3XXLQ==} 1138 1138 cpu: [x64] 1139 1139 os: [darwin] 1140 1140 1141 - '@oxlint/linux-arm64-gnu@1.38.0': 1142 - resolution: {integrity: sha512-ZiVxPZizlXSnAMdkEFWX/mAj7U3bNiku8p6I9UgLrXzgGSSAhFobx8CaFGwVoKyWOd+gQgZ/ogCrunvx2k0CFg==} 1141 + '@oxlint/linux-arm64-gnu@1.41.0': 1142 + resolution: {integrity: sha512-Fow7H84Bs8XxuaK1yfSEWBC8HI7rfEQB9eR2A0J61un1WgCas7jNrt1HbT6+p6KmUH2bhR+r/RDu/6JFAvvj4g==} 1143 1143 cpu: [arm64] 1144 1144 os: [linux] 1145 1145 1146 - '@oxlint/linux-arm64-musl@1.38.0': 1147 - resolution: {integrity: sha512-ELtlCIGZ72A65ATZZHFxHMFrkRtY+DYDCKiNKg6v7u5PdeOFey+OlqRXgXtXlxWjCL+g7nivwI2FPVsWqf05Qw==} 1146 + '@oxlint/linux-arm64-musl@1.41.0': 1147 + resolution: {integrity: sha512-WoRRDNwgP5W3rjRh42Zdx8ferYnqpKoYCv2QQLenmdrLjRGYwAd52uywfkcS45mKEWHeY1RPwPkYCSROXiGb2w==} 1148 1148 cpu: [arm64] 1149 1149 os: [linux] 1150 1150 1151 - '@oxlint/linux-x64-gnu@1.38.0': 1152 - resolution: {integrity: sha512-E1OcDh30qyng1m0EIlsOuapYkqk5QB6o6IMBjvDKqIoo6IrjlVAasoJfS/CmSH998gXRL3BcAJa6Qg9IxPFZnQ==} 1151 + '@oxlint/linux-x64-gnu@1.41.0': 1152 + resolution: {integrity: sha512-75k3CKj3fOc/a/2aSgO81s3HsTZOFROthPJ+UI2Oatic1LhvH6eKjKfx3jDDyVpzeDS2qekPlc/y3N33iZz5Og==} 1153 1153 cpu: [x64] 1154 1154 os: [linux] 1155 1155 1156 - '@oxlint/linux-x64-musl@1.38.0': 1157 - resolution: {integrity: sha512-4AfpbM/4sQnr6S1dMijEPfsq4stQbN5vJ2jsahSy/QTcvIVbFkgY+RIhrA5UWlC6eb0rD5CdaPQoKGMJGeXpYw==} 1156 + '@oxlint/linux-x64-musl@1.41.0': 1157 + resolution: {integrity: sha512-8r82eBwGPoAPn67ZvdxTlX/Z3gVb+ZtN6nbkyFzwwHWAh8yGutX+VBcVkyrePSl6XgBP4QAaddPnHmkvJjqY0g==} 1158 1158 cpu: [x64] 1159 1159 os: [linux] 1160 1160 1161 - '@oxlint/win32-arm64@1.38.0': 1162 - resolution: {integrity: sha512-OvUVYdI68OwXh3d1RjH9N/okCxb6PrOGtEtzXyqGA7Gk+IxyZcX0/QCTBwV8FNbSSzDePSSEHOKpoIB+VXdtvg==} 1161 + '@oxlint/win32-arm64@1.41.0': 1162 + resolution: {integrity: sha512-aK+DAcckQsNCOXKruatyYuY/ROjNiRejQB1PeJtkZwM21+8rV9ODYbvKNvt0pW+YCws7svftBSFMCpl3ke2unw==} 1163 1163 cpu: [arm64] 1164 1164 os: [win32] 1165 1165 1166 - '@oxlint/win32-x64@1.38.0': 1167 - resolution: {integrity: sha512-7IuZMYiZiOcgg5zHvpJY6jRlEwh8EB/uq7GsoQJO9hANq96TIjyntGByhIjFSsL4asyZmhTEki+MO/u5Fb/WQA==} 1166 + '@oxlint/win32-x64@1.41.0': 1167 + resolution: {integrity: sha512-dVBXkZ6MGLd3owV7jvuqJsZwiF3qw7kEkDVsYVpS/O96eEvlHcxVbaPjJjrTBgikXqyC22vg3dxBU7MW0utGfw==} 1168 1168 cpu: [x64] 1169 1169 os: [win32] 1170 1170 1171 - '@parcel/watcher-android-arm64@2.5.1': 1172 - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} 1171 + '@parcel/watcher-android-arm64@2.5.4': 1172 + resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} 1173 1173 engines: {node: '>= 10.0.0'} 1174 1174 cpu: [arm64] 1175 1175 os: [android] 1176 1176 1177 - '@parcel/watcher-darwin-arm64@2.5.1': 1178 - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} 1177 + '@parcel/watcher-darwin-arm64@2.5.4': 1178 + resolution: {integrity: sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==} 1179 1179 engines: {node: '>= 10.0.0'} 1180 1180 cpu: [arm64] 1181 1181 os: [darwin] 1182 1182 1183 - '@parcel/watcher-darwin-x64@2.5.1': 1184 - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} 1183 + '@parcel/watcher-darwin-x64@2.5.4': 1184 + resolution: {integrity: sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==} 1185 1185 engines: {node: '>= 10.0.0'} 1186 1186 cpu: [x64] 1187 1187 os: [darwin] 1188 1188 1189 - '@parcel/watcher-freebsd-x64@2.5.1': 1190 - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} 1189 + '@parcel/watcher-freebsd-x64@2.5.4': 1190 + resolution: {integrity: sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==} 1191 1191 engines: {node: '>= 10.0.0'} 1192 1192 cpu: [x64] 1193 1193 os: [freebsd] 1194 1194 1195 - '@parcel/watcher-linux-arm-glibc@2.5.1': 1196 - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} 1195 + '@parcel/watcher-linux-arm-glibc@2.5.4': 1196 + resolution: {integrity: sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==} 1197 1197 engines: {node: '>= 10.0.0'} 1198 1198 cpu: [arm] 1199 1199 os: [linux] 1200 1200 1201 - '@parcel/watcher-linux-arm-musl@2.5.1': 1202 - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} 1201 + '@parcel/watcher-linux-arm-musl@2.5.4': 1202 + resolution: {integrity: sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==} 1203 1203 engines: {node: '>= 10.0.0'} 1204 1204 cpu: [arm] 1205 1205 os: [linux] 1206 1206 1207 - '@parcel/watcher-linux-arm64-glibc@2.5.1': 1208 - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} 1207 + '@parcel/watcher-linux-arm64-glibc@2.5.4': 1208 + resolution: {integrity: sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==} 1209 1209 engines: {node: '>= 10.0.0'} 1210 1210 cpu: [arm64] 1211 1211 os: [linux] 1212 1212 1213 - '@parcel/watcher-linux-arm64-musl@2.5.1': 1214 - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} 1213 + '@parcel/watcher-linux-arm64-musl@2.5.4': 1214 + resolution: {integrity: sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==} 1215 1215 engines: {node: '>= 10.0.0'} 1216 1216 cpu: [arm64] 1217 1217 os: [linux] 1218 1218 1219 - '@parcel/watcher-linux-x64-glibc@2.5.1': 1220 - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} 1219 + '@parcel/watcher-linux-x64-glibc@2.5.4': 1220 + resolution: {integrity: sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==} 1221 1221 engines: {node: '>= 10.0.0'} 1222 1222 cpu: [x64] 1223 1223 os: [linux] 1224 1224 1225 - '@parcel/watcher-linux-x64-musl@2.5.1': 1226 - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} 1225 + '@parcel/watcher-linux-x64-musl@2.5.4': 1226 + resolution: {integrity: sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==} 1227 1227 engines: {node: '>= 10.0.0'} 1228 1228 cpu: [x64] 1229 1229 os: [linux] 1230 1230 1231 - '@parcel/watcher-win32-arm64@2.5.1': 1232 - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} 1231 + '@parcel/watcher-win32-arm64@2.5.4': 1232 + resolution: {integrity: sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==} 1233 1233 engines: {node: '>= 10.0.0'} 1234 1234 cpu: [arm64] 1235 1235 os: [win32] 1236 1236 1237 - '@parcel/watcher-win32-ia32@2.5.1': 1238 - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} 1237 + '@parcel/watcher-win32-ia32@2.5.4': 1238 + resolution: {integrity: sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==} 1239 1239 engines: {node: '>= 10.0.0'} 1240 1240 cpu: [ia32] 1241 1241 os: [win32] 1242 1242 1243 - '@parcel/watcher-win32-x64@2.5.1': 1244 - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} 1243 + '@parcel/watcher-win32-x64@2.5.4': 1244 + resolution: {integrity: sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==} 1245 1245 engines: {node: '>= 10.0.0'} 1246 1246 cpu: [x64] 1247 1247 os: [win32] 1248 1248 1249 - '@parcel/watcher@2.5.1': 1250 - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} 1249 + '@parcel/watcher@2.5.4': 1250 + resolution: {integrity: sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==} 1251 1251 engines: {node: '>= 10.0.0'} 1252 1252 1253 1253 '@peculiar/asn1-android@2.6.0': ··· 1691 1691 '@types/bn.js@5.2.0': 1692 1692 resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} 1693 1693 1694 - '@types/bun@1.3.5': 1695 - resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==} 1694 + '@types/bun@1.3.6': 1695 + resolution: {integrity: sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA==} 1696 1696 1697 1697 '@types/elliptic@6.4.18': 1698 1698 resolution: {integrity: sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==} ··· 1703 1703 '@types/mssql@9.1.8': 1704 1704 resolution: {integrity: sha512-mt9h5jWj+DYE5jxnKaWSV/GqDf9FV52XYVk6T3XZF69noEe+JJV6MKirii48l81+cjmAkSq+qeKX+k61fHkYrQ==} 1705 1705 1706 - '@types/node@22.19.3': 1707 - resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} 1706 + '@types/node@22.19.7': 1707 + resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} 1708 + 1709 + '@types/node@25.0.9': 1710 + resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} 1708 1711 1709 1712 '@types/qrcode@1.5.6': 1710 1713 resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} ··· 1794 1797 resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} 1795 1798 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1796 1799 1797 - braces@3.0.3: 1798 - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1799 - engines: {node: '>=8'} 1800 - 1801 1800 brorand@1.1.0: 1802 1801 resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} 1803 1802 ··· 1810 1809 buffer@6.0.3: 1811 1810 resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1812 1811 1813 - bun-types@1.3.5: 1814 - resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==} 1812 + bun-types@1.3.6: 1813 + resolution: {integrity: sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ==} 1815 1814 1816 1815 bundle-name@4.1.0: 1817 1816 resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} ··· 1921 1920 resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 1922 1921 engines: {node: '>= 0.10'} 1923 1922 1923 + csstype@3.2.3: 1924 + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 1925 + 1924 1926 cva@1.0.0-beta.4: 1925 1927 resolution: {integrity: sha512-F/JS9hScapq4DBVQXcK85l9U91M6ePeXoBMSp7vypzShoefUBxjQTo3g3935PUHgQd+IW77DjbPRIxugy4/GCQ==} 1926 1928 peerDependencies: ··· 1982 1984 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1983 1985 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1984 1986 1985 - detect-libc@1.0.3: 1986 - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1987 - engines: {node: '>=0.10'} 1988 - hasBin: true 1989 - 1990 1987 detect-libc@2.1.2: 1991 1988 resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 1992 1989 engines: {node: '>=8'} ··· 1994 1991 dijkstrajs@1.0.3: 1995 1992 resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} 1996 1993 1997 - disposable-email-domains-js@1.20.0: 1998 - resolution: {integrity: sha512-Dfj1ZM13ZbifEi39zHXQyoFLBfMjlF1TIspdz4BDxhoiZTYckQkGBVGQM5NyGAGio0ty0MZlZgI7AFjPCmEfVg==} 1994 + disposable-email-domains-js@1.21.0: 1995 + resolution: {integrity: sha512-PKRzcII8n40uiMUYMVjFTlubk8VwWHdbJth1bBtWswjwiI88j1Uw8FVrfXQvHnj56Z8P9nCkcCn/i5VF4u47Cw==} 1999 1996 2000 1997 drizzle-kit@1.0.0-beta.6-4414a19: 2001 1998 resolution: {integrity: sha512-tecGaCXKWVLIkE9f+rucGPovx8ALRFS0lvgUKWoXXLFTLpkmgc/iuN0cpJAalFiJK7bdQemMMRjF9hsCEcmphA==} ··· 2183 2180 eventemitter3@4.0.7: 2184 2181 resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 2185 2182 2186 - eventemitter3@5.0.1: 2187 - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 2183 + eventemitter3@5.0.4: 2184 + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} 2188 2185 2189 2186 events@3.3.0: 2190 2187 resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} ··· 2215 2212 peerDependenciesMeta: 2216 2213 picomatch: 2217 2214 optional: true 2218 - 2219 - fill-range@7.1.1: 2220 - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 2221 - engines: {node: '>=8'} 2222 2215 2223 2216 finalhandler@1.3.2: 2224 2217 resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} ··· 2337 2330 inherits@2.0.4: 2338 2331 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2339 2332 2340 - ioredis@5.9.0: 2341 - resolution: {integrity: sha512-T3VieIilNumOJCXI9SDgo4NnF6sZkd6XcmPi6qWtw4xqbt8nNz/ZVNiIH1L9puMTSHZh1mUWA4xKa2nWPF4NwQ==} 2333 + ioredis@5.9.2: 2334 + resolution: {integrity: sha512-tAAg/72/VxOUW7RQSX1pIxJVucYKcjFjfvj60L57jrZpYCHC3XN0WCQ3sNYL4Gmvv+7GPvTAjc+KSdeNuE8oWQ==} 2342 2335 engines: {node: '>=12.22.0'} 2343 2336 2344 2337 ip3country@5.0.0: ··· 2377 2370 engines: {node: '>=14.16'} 2378 2371 hasBin: true 2379 2372 2380 - is-number@7.0.0: 2381 - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2382 - engines: {node: '>=0.12.0'} 2383 - 2384 2373 is-wsl@3.1.0: 2385 2374 resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 2386 2375 engines: {node: '>=16'} ··· 2433 2422 resolution: {integrity: sha512-TH+b56pVXQq0tsyooYLeNfV11j6ih7D50dyN8tkM0e7ndiUH28Nziojiog3qRFlmEj9XePYdZUrNJ2079Qjdow==} 2434 2423 engines: {node: '>=14.0.0'} 2435 2424 2436 - leo-profanity@1.8.0: 2437 - resolution: {integrity: sha512-TATupbZhT3oFCtsiEXzgXcLvW6cDPhDtN+0yQAibjwBdSw3WJFLKM0DZ18eEW8KeFTT10x8gCP+DDZz0cI4Bfg==} 2425 + leo-profanity@1.9.0: 2426 + resolution: {integrity: sha512-vMrrrjsbT+fA5I/1rlBEVT5YjJsw1ASIVF8/xBEdZ6ylsg5AEIBrEvHxwe5XAmfVuTBi7aw2KcO2L3s9ddpKzw==} 2427 + engines: {node: '>=18'} 2438 2428 2439 2429 lightningcss-android-arm64@1.30.2: 2440 2430 resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} ··· 2561 2551 resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 2562 2552 engines: {node: '>= 0.6'} 2563 2553 2564 - micromatch@4.0.8: 2565 - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 2566 - engines: {node: '>=8.6'} 2567 - 2568 2554 mime-db@1.52.0: 2569 2555 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2570 2556 engines: {node: '>= 0.6'} ··· 2677 2663 resolution: {integrity: sha512-MpS1lbd2vR0NZn1v0drpgu7RUFu3x9Rd0kxExObZc2+F+DIrV0BOMval/RO3BYGwssIOerII6iS8EbbpCCZQpQ==} 2678 2664 engines: {node: ^20.19.0 || >=22.12.0} 2679 2665 2680 - oxc-resolver@11.16.2: 2681 - resolution: {integrity: sha512-Uy76u47vwhhF7VAmVY61Srn+ouiOobf45MU9vGct9GD2ARy6hKoqEElyHDB0L+4JOM6VLuZ431KiLwyjI/A21g==} 2666 + oxc-resolver@11.16.3: 2667 + resolution: {integrity: sha512-goLOJH3x69VouGWGp5CgCIHyksmOZzXr36lsRmQz1APg3SPFORrvV2q7nsUHMzLVa6ZJgNwkgUSJFsbCpAWkCA==} 2682 2668 2683 - oxlint@1.38.0: 2684 - resolution: {integrity: sha512-XT7tBinQS+hVLxtfJOnokJ9qVBiQvZqng40tDgR6qEJMRMnpVq/JwYfbYyGntSq8MO+Y+N9M1NG4bAMFUtCJiw==} 2669 + oxlint@1.41.0: 2670 + resolution: {integrity: sha512-Dyaoup82uhgAgp5xLNt4dPdvl5eSJTIzqzL7DcKbkooUE4PDViWURIPlSUF8hu5a+sCnNIp/LlQMDsKoyaLTBA==} 2685 2671 engines: {node: ^20.19.0 || >=22.12.0} 2686 2672 hasBin: true 2687 2673 peerDependencies: 2688 - oxlint-tsgolint: '>=0.10.0' 2674 + oxlint-tsgolint: '>=0.11.1' 2689 2675 peerDependenciesMeta: 2690 2676 oxlint-tsgolint: 2691 2677 optional: true ··· 2737 2723 path-to-regexp@0.1.12: 2738 2724 resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} 2739 2725 2740 - pg-cloudflare@1.2.7: 2741 - resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} 2726 + pg-cloudflare@1.3.0: 2727 + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} 2742 2728 2743 - pg-connection-string@2.9.1: 2744 - resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} 2729 + pg-connection-string@2.10.0: 2730 + resolution: {integrity: sha512-ur/eoPKzDx2IjPaYyXS6Y8NSblxM7X64deV2ObV57vhjsWiwLvUD6meukAzogiOsu60GO8m/3Cb6FdJsWNjwXg==} 2745 2731 2746 2732 pg-int8@1.0.1: 2747 2733 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 2748 2734 engines: {node: '>=4.0.0'} 2749 2735 2750 - pg-pool@3.10.1: 2751 - resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} 2736 + pg-pool@3.11.0: 2737 + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} 2752 2738 peerDependencies: 2753 2739 pg: '>=8.0' 2754 2740 2755 - pg-protocol@1.10.3: 2756 - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} 2741 + pg-protocol@1.11.0: 2742 + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} 2757 2743 2758 2744 pg-types@2.2.0: 2759 2745 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 2760 2746 engines: {node: '>=4'} 2761 2747 2762 - pg@8.16.3: 2763 - resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} 2748 + pg@8.17.1: 2749 + resolution: {integrity: sha512-EIR+jXdYNSMOrpRp7g6WgQr7SaZNZfS7IzZIO0oTNEeibq956JxeD15t3Jk3zZH0KH8DmOIx38qJfQenoE8bXQ==} 2764 2750 engines: {node: '>= 16.0.0'} 2765 2751 peerDependencies: 2766 2752 pg-native: '>=3.0.1' ··· 2774 2760 picocolors@1.1.1: 2775 2761 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2776 2762 2777 - picomatch@2.3.1: 2778 - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2779 - engines: {node: '>=8.6'} 2780 - 2781 2763 picomatch@4.0.3: 2782 2764 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 2783 2765 engines: {node: '>=12'} ··· 2878 2860 prettier-plugin-svelte: 2879 2861 optional: true 2880 2862 2881 - prettier@3.7.4: 2882 - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} 2863 + prettier@3.8.0: 2864 + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} 2883 2865 engines: {node: '>=14'} 2884 2866 hasBin: true 2885 2867 ··· 2967 2949 rfdc@1.4.1: 2968 2950 resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 2969 2951 2970 - roarr@7.21.2: 2971 - resolution: {integrity: sha512-RyXI+aNxwVyfF71a9cqz/jhXWbycnVh7GXnnJUniIBXKTOJQF3rmpNexStXt8TUcKyiXCwyfYzboZLMYUllPDA==} 2952 + roarr@7.21.4: 2953 + resolution: {integrity: sha512-qvfUKCrpPzhWmQ4NxRYnuwhkI5lwmObhBU06BCK/lpj6PID9nL4Hk6XDwek2foKI+TMaV+Yw//XZshGF2Lox/Q==} 2972 2954 engines: {node: '>=18.0'} 2973 2955 2974 2956 rolldown@1.0.0-beta.60: ··· 3130 3112 resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} 3131 3113 hasBin: true 3132 3114 3133 - to-regex-range@5.0.1: 3134 - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3135 - engines: {node: '>=8.0'} 3136 - 3137 3115 toidentifier@1.0.1: 3138 3116 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 3139 3117 engines: {node: '>=0.6'} ··· 3180 3158 3181 3159 undici-types@6.21.0: 3182 3160 resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 3161 + 3162 + undici-types@7.16.0: 3163 + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 3183 3164 3184 3165 undici@5.29.0: 3185 3166 resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} ··· 3291 3272 dependencies: 3292 3273 '@atcute/lexicons': 1.2.6 3293 3274 3294 - '@atcute/bluesky@3.2.14': 3275 + '@atcute/bluesky@3.2.15': 3295 3276 dependencies: 3296 3277 '@atcute/atproto': 3.1.10 3297 3278 '@atcute/lexicons': 1.2.6 3298 3279 3299 - '@atcute/car@5.0.0': 3280 + '@atcute/car@5.1.0': 3300 3281 dependencies: 3301 - '@atcute/cbor': 2.2.8 3302 - '@atcute/cid': 2.3.0 3282 + '@atcute/cbor': 2.3.0 3283 + '@atcute/cid': 2.4.0 3303 3284 '@atcute/uint8array': 1.0.6 3304 3285 '@atcute/varint': 1.0.3 3305 3286 3306 - '@atcute/cbor@2.2.8': 3287 + '@atcute/cbor@2.3.0': 3307 3288 dependencies: 3308 - '@atcute/cid': 2.3.0 3289 + '@atcute/cid': 2.4.0 3309 3290 '@atcute/multibase': 1.1.6 3310 3291 '@atcute/uint8array': 1.0.6 3311 3292 3312 - '@atcute/cid@2.3.0': 3293 + '@atcute/cid@2.4.0': 3313 3294 dependencies: 3314 3295 '@atcute/multibase': 1.1.6 3315 3296 '@atcute/uint8array': 1.0.6 ··· 3327 3308 3328 3309 '@atcute/did-plc@0.3.1': 3329 3310 dependencies: 3330 - '@atcute/cbor': 2.2.8 3331 - '@atcute/cid': 2.3.0 3311 + '@atcute/cbor': 2.3.0 3312 + '@atcute/cid': 2.4.0 3332 3313 '@atcute/crypto': 2.3.0 3333 3314 '@atcute/identity': 1.1.3 3334 3315 '@atcute/lexicons': 1.2.6 ··· 3366 3347 '@optique/core': 0.6.11 3367 3348 '@optique/run': 0.6.11 3368 3349 picocolors: 1.1.1 3369 - prettier: 3.7.4 3350 + prettier: 3.8.0 3370 3351 3371 3352 '@atcute/lexicon-doc@2.0.6': 3372 3353 dependencies: ··· 3394 3375 '@standard-schema/spec': 1.1.0 3395 3376 esm-env: 1.2.2 3396 3377 3397 - '@atcute/mst@0.1.1': 3378 + '@atcute/mst@0.1.2': 3398 3379 dependencies: 3399 - '@atcute/cbor': 2.2.8 3400 - '@atcute/cid': 2.3.0 3380 + '@atcute/cbor': 2.3.0 3381 + '@atcute/cid': 2.4.0 3401 3382 '@atcute/uint8array': 1.0.6 3402 3383 3403 3384 '@atcute/multibase@1.1.6': ··· 3406 3387 3407 3388 '@atcute/repo@0.1.1': 3408 3389 dependencies: 3409 - '@atcute/car': 5.0.0 3410 - '@atcute/cbor': 2.2.8 3411 - '@atcute/cid': 2.3.0 3390 + '@atcute/car': 5.1.0 3391 + '@atcute/cbor': 2.3.0 3392 + '@atcute/cid': 2.4.0 3412 3393 '@atcute/crypto': 2.3.0 3413 3394 '@atcute/lexicons': 1.2.6 3414 - '@atcute/mst': 0.1.1 3395 + '@atcute/mst': 0.1.2 3415 3396 '@atcute/uint8array': 1.0.6 3416 3397 3417 3398 '@atcute/tid@1.1.1': 3418 3399 dependencies: 3419 - '@atcute/time-ms': 1.0.0 3400 + '@atcute/time-ms': 1.2.0 3420 3401 3421 - '@atcute/time-ms@1.0.0': 3402 + '@atcute/time-ms@1.2.0': 3422 3403 dependencies: 3423 - '@types/node': 22.19.3 3404 + '@types/bun': 1.3.6 3424 3405 node-gyp-build: 4.8.4 3425 3406 3426 3407 '@atcute/uint8array@1.0.6': {} ··· 3441 3422 3442 3423 '@atcute/xrpc-server@0.1.8': 3443 3424 dependencies: 3444 - '@atcute/cbor': 2.2.8 3425 + '@atcute/cbor': 2.3.0 3445 3426 '@atcute/crypto': 2.3.0 3446 3427 '@atcute/identity': 1.1.3 3447 3428 '@atcute/identity-resolver': 1.2.2(@atcute/identity@1.1.3) ··· 3467 3448 '@atproto-labs/xrpc-utils@0.0.24': 3468 3449 dependencies: 3469 3450 '@atproto/xrpc': 0.7.7 3470 - '@atproto/xrpc-server': 0.10.7 3451 + '@atproto/xrpc-server': 0.10.9 3471 3452 transitivePeerDependencies: 3472 3453 - bufferutil 3473 3454 - supports-color 3474 3455 - utf-8-validate 3475 3456 3476 - '@atproto/api@0.18.10': 3457 + '@atproto/api@0.18.16': 3477 3458 dependencies: 3478 - '@atproto/common-web': 0.4.10 3459 + '@atproto/common-web': 0.4.12 3479 3460 '@atproto/lexicon': 0.6.0 3480 3461 '@atproto/syntax': 0.4.2 3481 3462 '@atproto/xrpc': 0.7.7 ··· 3488 3469 dependencies: 3489 3470 '@atproto-labs/fetch-node': 0.2.0 3490 3471 '@atproto-labs/xrpc-utils': 0.0.24 3491 - '@atproto/api': 0.18.10 3492 - '@atproto/common': 0.5.6 3472 + '@atproto/api': 0.18.16 3473 + '@atproto/common': 0.5.8 3493 3474 '@atproto/crypto': 0.4.5 3494 3475 '@atproto/did': 0.2.4 3495 3476 '@atproto/identity': 0.4.10 ··· 3497 3478 '@atproto/repo': 0.8.12 3498 3479 '@atproto/sync': 0.1.39 3499 3480 '@atproto/syntax': 0.4.2 3500 - '@atproto/xrpc-server': 0.10.7 3481 + '@atproto/xrpc-server': 0.10.9 3501 3482 '@bufbuild/protobuf': 1.10.1 3502 3483 '@connectrpc/connect': 1.7.0(@bufbuild/protobuf@1.10.1) 3503 3484 '@connectrpc/connect-express': 1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)))(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)) ··· 3507 3488 '@types/http-errors': 2.0.5 3508 3489 compression: 1.8.1 3509 3490 cors: 2.8.5 3510 - disposable-email-domains-js: 1.20.0 3491 + disposable-email-domains-js: 1.21.0 3511 3492 etcd3: 1.1.2 3512 3493 express: 4.22.1 3513 3494 http-errors: 2.0.1 3514 3495 http-terminator: 3.2.0 3515 - ioredis: 5.9.0 3496 + ioredis: 5.9.2 3516 3497 jose: 5.10.0 3517 3498 key-encoder: 2.0.3 3518 3499 kysely: 0.22.0 3519 - leo-profanity: 1.8.0 3500 + leo-profanity: 1.9.0 3520 3501 multiformats: 9.9.0 3521 3502 murmurhash: 2.0.1 3522 3503 p-queue: 6.6.2 3523 - pg: 8.16.3 3504 + pg: 8.17.1 3524 3505 pino: 8.21.0 3525 3506 pino-http: 8.6.1 3526 3507 sharp: 0.33.5 ··· 3538 3519 - supports-color 3539 3520 - utf-8-validate 3540 3521 3541 - '@atproto/common-web@0.4.10': 3522 + '@atproto/common-web@0.4.12': 3542 3523 dependencies: 3543 - '@atproto/lex-data': 0.0.6 3544 - '@atproto/lex-json': 0.0.6 3524 + '@atproto/lex-data': 0.0.8 3525 + '@atproto/lex-json': 0.0.8 3545 3526 zod: 3.25.76 3546 3527 3547 3528 '@atproto/common@0.1.0': ··· 3558 3539 pino: 8.21.0 3559 3540 zod: 3.25.76 3560 3541 3561 - '@atproto/common@0.5.6': 3542 + '@atproto/common@0.5.8': 3562 3543 dependencies: 3563 - '@atproto/common-web': 0.4.10 3564 - '@atproto/lex-cbor': 0.0.6 3565 - '@atproto/lex-data': 0.0.6 3544 + '@atproto/common-web': 0.4.12 3545 + '@atproto/lex-cbor': 0.0.8 3546 + '@atproto/lex-data': 0.0.8 3566 3547 iso-datestring-validator: 2.2.2 3567 3548 multiformats: 9.9.0 3568 3549 pino: 8.21.0 ··· 3587 3568 3588 3569 '@atproto/identity@0.4.10': 3589 3570 dependencies: 3590 - '@atproto/common-web': 0.4.10 3571 + '@atproto/common-web': 0.4.12 3591 3572 '@atproto/crypto': 0.4.5 3592 3573 3593 - '@atproto/lex-cbor@0.0.6': 3574 + '@atproto/lex-cbor@0.0.8': 3594 3575 dependencies: 3595 - '@atproto/lex-data': 0.0.6 3596 - multiformats: 9.9.0 3576 + '@atproto/lex-data': 0.0.8 3597 3577 tslib: 2.8.1 3598 3578 3599 - '@atproto/lex-data@0.0.6': 3579 + '@atproto/lex-data@0.0.8': 3600 3580 dependencies: 3601 3581 '@atproto/syntax': 0.4.2 3602 3582 multiformats: 9.9.0 ··· 3604 3584 uint8arrays: 3.0.0 3605 3585 unicode-segmenter: 0.14.5 3606 3586 3607 - '@atproto/lex-json@0.0.6': 3587 + '@atproto/lex-json@0.0.8': 3608 3588 dependencies: 3609 - '@atproto/lex-data': 0.0.6 3589 + '@atproto/lex-data': 0.0.8 3610 3590 tslib: 2.8.1 3611 3591 3612 3592 '@atproto/lexicon@0.6.0': 3613 3593 dependencies: 3614 - '@atproto/common-web': 0.4.10 3594 + '@atproto/common-web': 0.4.12 3615 3595 '@atproto/syntax': 0.4.2 3616 3596 iso-datestring-validator: 2.2.2 3617 3597 multiformats: 9.9.0 ··· 3619 3599 3620 3600 '@atproto/repo@0.8.12': 3621 3601 dependencies: 3622 - '@atproto/common': 0.5.6 3623 - '@atproto/common-web': 0.4.10 3602 + '@atproto/common': 0.5.8 3603 + '@atproto/common-web': 0.4.12 3624 3604 '@atproto/crypto': 0.4.5 3625 3605 '@atproto/lexicon': 0.6.0 3626 3606 '@ipld/dag-cbor': 7.0.3 ··· 3631 3611 3632 3612 '@atproto/sync@0.1.39': 3633 3613 dependencies: 3634 - '@atproto/common': 0.5.6 3614 + '@atproto/common': 0.5.8 3635 3615 '@atproto/identity': 0.4.10 3636 3616 '@atproto/lexicon': 0.6.0 3637 3617 '@atproto/repo': 0.8.12 3638 3618 '@atproto/syntax': 0.4.2 3639 - '@atproto/xrpc-server': 0.10.7 3619 + '@atproto/xrpc-server': 0.10.9 3640 3620 multiformats: 9.9.0 3641 3621 p-queue: 6.6.2 3642 3622 ws: 8.19.0 ··· 3649 3629 3650 3630 '@atproto/ws-client@0.0.4': 3651 3631 dependencies: 3652 - '@atproto/common': 0.5.6 3632 + '@atproto/common': 0.5.8 3653 3633 ws: 8.19.0 3654 3634 transitivePeerDependencies: 3655 3635 - bufferutil 3656 3636 - utf-8-validate 3657 3637 3658 - '@atproto/xrpc-server@0.10.7': 3638 + '@atproto/xrpc-server@0.10.9': 3659 3639 dependencies: 3660 - '@atproto/common': 0.5.6 3640 + '@atproto/common': 0.5.8 3661 3641 '@atproto/crypto': 0.4.5 3662 - '@atproto/lex-cbor': 0.0.6 3663 - '@atproto/lex-data': 0.0.6 3642 + '@atproto/lex-cbor': 0.0.8 3643 + '@atproto/lex-data': 0.0.8 3664 3644 '@atproto/lexicon': 0.6.0 3665 3645 '@atproto/ws-client': 0.0.4 3666 3646 '@atproto/xrpc': 0.7.7 ··· 3769 3749 '@azure/core-tracing': 1.3.1 3770 3750 '@azure/core-util': 1.13.1 3771 3751 '@azure/logger': 1.3.0 3772 - '@azure/msal-browser': 4.27.0 3773 - '@azure/msal-node': 3.8.4 3752 + '@azure/msal-browser': 4.28.1 3753 + '@azure/msal-node': 3.8.6 3774 3754 open: 10.2.0 3775 3755 tslib: 2.8.1 3776 3756 transitivePeerDependencies: ··· 3813 3793 transitivePeerDependencies: 3814 3794 - supports-color 3815 3795 3816 - '@azure/msal-browser@4.27.0': 3796 + '@azure/msal-browser@4.28.1': 3817 3797 dependencies: 3818 - '@azure/msal-common': 15.13.3 3798 + '@azure/msal-common': 15.14.1 3819 3799 3820 - '@azure/msal-common@15.13.3': {} 3800 + '@azure/msal-common@15.14.1': {} 3821 3801 3822 - '@azure/msal-node@3.8.4': 3802 + '@azure/msal-node@3.8.6': 3823 3803 dependencies: 3824 - '@azure/msal-common': 15.13.3 3804 + '@azure/msal-common': 15.14.1 3825 3805 jsonwebtoken: 9.0.3 3826 3806 uuid: 8.3.2 3827 3807 3828 - '@babel/code-frame@7.27.1': 3808 + '@babel/code-frame@7.28.6': 3829 3809 dependencies: 3830 3810 '@babel/helper-validator-identifier': 7.28.5 3831 3811 js-tokens: 4.0.0 3832 3812 picocolors: 1.1.1 3833 3813 3834 - '@babel/generator@7.28.5': 3814 + '@babel/generator@7.28.6': 3835 3815 dependencies: 3836 - '@babel/parser': 7.28.5 3837 - '@babel/types': 7.28.5 3816 + '@babel/parser': 7.28.6 3817 + '@babel/types': 7.28.6 3838 3818 '@jridgewell/gen-mapping': 0.3.13 3839 3819 '@jridgewell/trace-mapping': 0.3.31 3840 3820 jsesc: 3.1.0 ··· 3845 3825 3846 3826 '@babel/helper-validator-identifier@7.28.5': {} 3847 3827 3848 - '@babel/parser@7.28.5': 3828 + '@babel/parser@7.28.6': 3849 3829 dependencies: 3850 - '@babel/types': 7.28.5 3830 + '@babel/types': 7.28.6 3851 3831 3852 - '@babel/template@7.27.2': 3832 + '@babel/template@7.28.6': 3853 3833 dependencies: 3854 - '@babel/code-frame': 7.27.1 3855 - '@babel/parser': 7.28.5 3856 - '@babel/types': 7.28.5 3834 + '@babel/code-frame': 7.28.6 3835 + '@babel/parser': 7.28.6 3836 + '@babel/types': 7.28.6 3857 3837 3858 - '@babel/traverse@7.28.5': 3838 + '@babel/traverse@7.28.6': 3859 3839 dependencies: 3860 - '@babel/code-frame': 7.27.1 3861 - '@babel/generator': 7.28.5 3840 + '@babel/code-frame': 7.28.6 3841 + '@babel/generator': 7.28.6 3862 3842 '@babel/helper-globals': 7.28.0 3863 - '@babel/parser': 7.28.5 3864 - '@babel/template': 7.27.2 3865 - '@babel/types': 7.28.5 3843 + '@babel/parser': 7.28.6 3844 + '@babel/template': 7.28.6 3845 + '@babel/types': 7.28.6 3866 3846 debug: 4.4.3 3867 3847 transitivePeerDependencies: 3868 3848 - supports-color 3869 3849 3870 - '@babel/types@7.28.5': 3850 + '@babel/types@7.28.6': 3871 3851 dependencies: 3872 3852 '@babel/helper-string-parser': 7.27.1 3873 3853 '@babel/helper-validator-identifier': 7.28.5 ··· 3928 3908 http-terminator: 3.2.0 3929 3909 kysely: 0.23.5 3930 3910 multiformats: 9.9.0 3931 - pg: 8.16.3 3911 + pg: 8.17.1 3932 3912 pino: 8.21.0 3933 3913 pino-http: 8.6.1 3934 3914 transitivePeerDependencies: ··· 4061 4041 4062 4042 '@hexagon/base64@1.1.28': {} 4063 4043 4064 - '@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.7.4)': 4044 + '@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.8.0)': 4065 4045 dependencies: 4066 - '@babel/generator': 7.28.5 4067 - '@babel/parser': 7.28.5 4068 - '@babel/traverse': 7.28.5 4069 - '@babel/types': 7.28.5 4070 - prettier: 3.7.4 4046 + '@babel/generator': 7.28.6 4047 + '@babel/parser': 7.28.6 4048 + '@babel/traverse': 7.28.6 4049 + '@babel/types': 7.28.6 4050 + prettier: 3.8.0 4071 4051 semver: 7.7.3 4072 4052 optionalDependencies: 4073 4053 '@prettier/plugin-oxc': 0.1.3 ··· 4186 4166 4187 4167 '@levischuck/tiny-cbor@0.2.11': {} 4188 4168 4189 - '@logtape/logtape@2.0.0': {} 4169 + '@logtape/logtape@2.0.1': {} 4190 4170 4191 4171 '@napi-rs/wasm-runtime@1.1.1': 4192 4172 dependencies: ··· 4214 4194 '@oomfware/fetch-router': 0.2.1 4215 4195 '@standard-schema/spec': 1.1.0 4216 4196 4217 - '@oomfware/jsx@0.1.5': 4197 + '@oomfware/jsx@0.1.8': 4218 4198 dependencies: 4219 4199 '@atcute/uint8array': 1.0.6 4200 + csstype: 3.2.3 4220 4201 4221 4202 '@optique/core@0.6.11': {} 4222 4203 ··· 4275 4256 4276 4257 '@oxc-project/types@0.99.0': {} 4277 4258 4278 - '@oxc-resolver/binding-android-arm-eabi@11.16.2': 4259 + '@oxc-resolver/binding-android-arm-eabi@11.16.3': 4279 4260 optional: true 4280 4261 4281 - '@oxc-resolver/binding-android-arm64@11.16.2': 4262 + '@oxc-resolver/binding-android-arm64@11.16.3': 4282 4263 optional: true 4283 4264 4284 - '@oxc-resolver/binding-darwin-arm64@11.16.2': 4265 + '@oxc-resolver/binding-darwin-arm64@11.16.3': 4285 4266 optional: true 4286 4267 4287 - '@oxc-resolver/binding-darwin-x64@11.16.2': 4268 + '@oxc-resolver/binding-darwin-x64@11.16.3': 4288 4269 optional: true 4289 4270 4290 - '@oxc-resolver/binding-freebsd-x64@11.16.2': 4271 + '@oxc-resolver/binding-freebsd-x64@11.16.3': 4291 4272 optional: true 4292 4273 4293 - '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.2': 4274 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.3': 4294 4275 optional: true 4295 4276 4296 - '@oxc-resolver/binding-linux-arm-musleabihf@11.16.2': 4277 + '@oxc-resolver/binding-linux-arm-musleabihf@11.16.3': 4297 4278 optional: true 4298 4279 4299 - '@oxc-resolver/binding-linux-arm64-gnu@11.16.2': 4280 + '@oxc-resolver/binding-linux-arm64-gnu@11.16.3': 4300 4281 optional: true 4301 4282 4302 - '@oxc-resolver/binding-linux-arm64-musl@11.16.2': 4283 + '@oxc-resolver/binding-linux-arm64-musl@11.16.3': 4303 4284 optional: true 4304 4285 4305 - '@oxc-resolver/binding-linux-ppc64-gnu@11.16.2': 4286 + '@oxc-resolver/binding-linux-ppc64-gnu@11.16.3': 4306 4287 optional: true 4307 4288 4308 - '@oxc-resolver/binding-linux-riscv64-gnu@11.16.2': 4289 + '@oxc-resolver/binding-linux-riscv64-gnu@11.16.3': 4309 4290 optional: true 4310 4291 4311 - '@oxc-resolver/binding-linux-riscv64-musl@11.16.2': 4292 + '@oxc-resolver/binding-linux-riscv64-musl@11.16.3': 4312 4293 optional: true 4313 4294 4314 - '@oxc-resolver/binding-linux-s390x-gnu@11.16.2': 4295 + '@oxc-resolver/binding-linux-s390x-gnu@11.16.3': 4315 4296 optional: true 4316 4297 4317 - '@oxc-resolver/binding-linux-x64-gnu@11.16.2': 4298 + '@oxc-resolver/binding-linux-x64-gnu@11.16.3': 4318 4299 optional: true 4319 4300 4320 - '@oxc-resolver/binding-linux-x64-musl@11.16.2': 4301 + '@oxc-resolver/binding-linux-x64-musl@11.16.3': 4321 4302 optional: true 4322 4303 4323 - '@oxc-resolver/binding-openharmony-arm64@11.16.2': 4304 + '@oxc-resolver/binding-openharmony-arm64@11.16.3': 4324 4305 optional: true 4325 4306 4326 - '@oxc-resolver/binding-wasm32-wasi@11.16.2': 4307 + '@oxc-resolver/binding-wasm32-wasi@11.16.3': 4327 4308 dependencies: 4328 4309 '@napi-rs/wasm-runtime': 1.1.1 4329 4310 optional: true 4330 4311 4331 - '@oxc-resolver/binding-win32-arm64-msvc@11.16.2': 4312 + '@oxc-resolver/binding-win32-arm64-msvc@11.16.3': 4332 4313 optional: true 4333 4314 4334 - '@oxc-resolver/binding-win32-ia32-msvc@11.16.2': 4315 + '@oxc-resolver/binding-win32-ia32-msvc@11.16.3': 4335 4316 optional: true 4336 4317 4337 - '@oxc-resolver/binding-win32-x64-msvc@11.16.2': 4318 + '@oxc-resolver/binding-win32-x64-msvc@11.16.3': 4338 4319 optional: true 4339 4320 4340 - '@oxlint/darwin-arm64@1.38.0': 4321 + '@oxlint/darwin-arm64@1.41.0': 4341 4322 optional: true 4342 4323 4343 - '@oxlint/darwin-x64@1.38.0': 4324 + '@oxlint/darwin-x64@1.41.0': 4344 4325 optional: true 4345 4326 4346 - '@oxlint/linux-arm64-gnu@1.38.0': 4327 + '@oxlint/linux-arm64-gnu@1.41.0': 4347 4328 optional: true 4348 4329 4349 - '@oxlint/linux-arm64-musl@1.38.0': 4330 + '@oxlint/linux-arm64-musl@1.41.0': 4350 4331 optional: true 4351 4332 4352 - '@oxlint/linux-x64-gnu@1.38.0': 4333 + '@oxlint/linux-x64-gnu@1.41.0': 4353 4334 optional: true 4354 4335 4355 - '@oxlint/linux-x64-musl@1.38.0': 4336 + '@oxlint/linux-x64-musl@1.41.0': 4356 4337 optional: true 4357 4338 4358 - '@oxlint/win32-arm64@1.38.0': 4339 + '@oxlint/win32-arm64@1.41.0': 4359 4340 optional: true 4360 4341 4361 - '@oxlint/win32-x64@1.38.0': 4342 + '@oxlint/win32-x64@1.41.0': 4362 4343 optional: true 4363 4344 4364 - '@parcel/watcher-android-arm64@2.5.1': 4345 + '@parcel/watcher-android-arm64@2.5.4': 4365 4346 optional: true 4366 4347 4367 - '@parcel/watcher-darwin-arm64@2.5.1': 4348 + '@parcel/watcher-darwin-arm64@2.5.4': 4368 4349 optional: true 4369 4350 4370 - '@parcel/watcher-darwin-x64@2.5.1': 4351 + '@parcel/watcher-darwin-x64@2.5.4': 4371 4352 optional: true 4372 4353 4373 - '@parcel/watcher-freebsd-x64@2.5.1': 4354 + '@parcel/watcher-freebsd-x64@2.5.4': 4374 4355 optional: true 4375 4356 4376 - '@parcel/watcher-linux-arm-glibc@2.5.1': 4357 + '@parcel/watcher-linux-arm-glibc@2.5.4': 4377 4358 optional: true 4378 4359 4379 - '@parcel/watcher-linux-arm-musl@2.5.1': 4360 + '@parcel/watcher-linux-arm-musl@2.5.4': 4380 4361 optional: true 4381 4362 4382 - '@parcel/watcher-linux-arm64-glibc@2.5.1': 4363 + '@parcel/watcher-linux-arm64-glibc@2.5.4': 4383 4364 optional: true 4384 4365 4385 - '@parcel/watcher-linux-arm64-musl@2.5.1': 4366 + '@parcel/watcher-linux-arm64-musl@2.5.4': 4386 4367 optional: true 4387 4368 4388 - '@parcel/watcher-linux-x64-glibc@2.5.1': 4369 + '@parcel/watcher-linux-x64-glibc@2.5.4': 4389 4370 optional: true 4390 4371 4391 - '@parcel/watcher-linux-x64-musl@2.5.1': 4372 + '@parcel/watcher-linux-x64-musl@2.5.4': 4392 4373 optional: true 4393 4374 4394 - '@parcel/watcher-win32-arm64@2.5.1': 4375 + '@parcel/watcher-win32-arm64@2.5.4': 4395 4376 optional: true 4396 4377 4397 - '@parcel/watcher-win32-ia32@2.5.1': 4378 + '@parcel/watcher-win32-ia32@2.5.4': 4398 4379 optional: true 4399 4380 4400 - '@parcel/watcher-win32-x64@2.5.1': 4381 + '@parcel/watcher-win32-x64@2.5.4': 4401 4382 optional: true 4402 4383 4403 - '@parcel/watcher@2.5.1': 4384 + '@parcel/watcher@2.5.4': 4404 4385 dependencies: 4405 - detect-libc: 1.0.3 4386 + detect-libc: 2.1.2 4406 4387 is-glob: 4.0.3 4407 - micromatch: 4.0.8 4408 4388 node-addon-api: 7.1.1 4389 + picomatch: 4.0.3 4409 4390 optionalDependencies: 4410 - '@parcel/watcher-android-arm64': 2.5.1 4411 - '@parcel/watcher-darwin-arm64': 2.5.1 4412 - '@parcel/watcher-darwin-x64': 2.5.1 4413 - '@parcel/watcher-freebsd-x64': 2.5.1 4414 - '@parcel/watcher-linux-arm-glibc': 2.5.1 4415 - '@parcel/watcher-linux-arm-musl': 2.5.1 4416 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 4417 - '@parcel/watcher-linux-arm64-musl': 2.5.1 4418 - '@parcel/watcher-linux-x64-glibc': 2.5.1 4419 - '@parcel/watcher-linux-x64-musl': 2.5.1 4420 - '@parcel/watcher-win32-arm64': 2.5.1 4421 - '@parcel/watcher-win32-ia32': 2.5.1 4422 - '@parcel/watcher-win32-x64': 2.5.1 4391 + '@parcel/watcher-android-arm64': 2.5.4 4392 + '@parcel/watcher-darwin-arm64': 2.5.4 4393 + '@parcel/watcher-darwin-x64': 2.5.4 4394 + '@parcel/watcher-freebsd-x64': 2.5.4 4395 + '@parcel/watcher-linux-arm-glibc': 2.5.4 4396 + '@parcel/watcher-linux-arm-musl': 2.5.4 4397 + '@parcel/watcher-linux-arm64-glibc': 2.5.4 4398 + '@parcel/watcher-linux-arm64-musl': 2.5.4 4399 + '@parcel/watcher-linux-x64-glibc': 2.5.4 4400 + '@parcel/watcher-linux-x64-musl': 2.5.4 4401 + '@parcel/watcher-win32-arm64': 2.5.4 4402 + '@parcel/watcher-win32-ia32': 2.5.4 4403 + '@parcel/watcher-win32-x64': 2.5.4 4423 4404 4424 4405 '@peculiar/asn1-android@2.6.0': 4425 4406 dependencies: ··· 4628 4609 '@swc/core': 1.15.8 4629 4610 colorette: 2.0.20 4630 4611 debug: 4.4.3 4631 - oxc-resolver: 11.16.2 4612 + oxc-resolver: 11.16.3 4632 4613 pirates: 4.0.7 4633 4614 tslib: 2.8.1 4634 4615 typescript: 5.9.3 ··· 4741 4722 4742 4723 '@tailwindcss/cli@4.1.18': 4743 4724 dependencies: 4744 - '@parcel/watcher': 2.5.1 4725 + '@parcel/watcher': 2.5.4 4745 4726 '@tailwindcss/node': 4.1.18 4746 4727 '@tailwindcss/oxide': 4.1.18 4747 4728 enhanced-resolve: 5.18.4 ··· 4819 4800 4820 4801 '@types/bn.js@5.2.0': 4821 4802 dependencies: 4822 - '@types/node': 22.19.3 4803 + '@types/node': 22.19.7 4823 4804 4824 - '@types/bun@1.3.5': 4805 + '@types/bun@1.3.6': 4825 4806 dependencies: 4826 - bun-types: 1.3.5 4807 + bun-types: 1.3.6 4827 4808 4828 4809 '@types/elliptic@6.4.18': 4829 4810 dependencies: ··· 4833 4814 4834 4815 '@types/mssql@9.1.8': 4835 4816 dependencies: 4836 - '@types/node': 22.19.3 4817 + '@types/node': 22.19.7 4837 4818 tarn: 3.0.2 4838 4819 tedious: 19.2.0 4839 4820 transitivePeerDependencies: 4840 4821 - supports-color 4841 4822 4842 - '@types/node@22.19.3': 4823 + '@types/node@22.19.7': 4843 4824 dependencies: 4844 4825 undici-types: 6.21.0 4845 4826 4827 + '@types/node@25.0.9': 4828 + dependencies: 4829 + undici-types: 7.16.0 4830 + 4846 4831 '@types/qrcode@1.5.6': 4847 4832 dependencies: 4848 - '@types/node': 22.19.3 4833 + '@types/node': 25.0.9 4849 4834 4850 4835 '@types/readable-stream@4.0.23': 4851 4836 dependencies: 4852 - '@types/node': 22.19.3 4837 + '@types/node': 22.19.7 4853 4838 4854 4839 '@typespec/ts-http-runtime@0.3.2': 4855 4840 dependencies: ··· 4861 4846 4862 4847 '@vue/compiler-core@3.5.26': 4863 4848 dependencies: 4864 - '@babel/parser': 7.28.5 4849 + '@babel/parser': 7.28.6 4865 4850 '@vue/shared': 3.5.26 4866 4851 entities: 7.0.0 4867 4852 estree-walker: 2.0.2 ··· 4876 4861 4877 4862 '@vue/compiler-sfc@3.5.26': 4878 4863 dependencies: 4879 - '@babel/parser': 7.28.5 4864 + '@babel/parser': 7.28.6 4880 4865 '@vue/compiler-core': 3.5.26 4881 4866 '@vue/compiler-dom': 3.5.26 4882 4867 '@vue/compiler-ssr': 3.5.26 ··· 4974 4959 transitivePeerDependencies: 4975 4960 - supports-color 4976 4961 4977 - braces@3.0.3: 4978 - dependencies: 4979 - fill-range: 7.1.1 4980 - 4981 4962 brorand@1.1.0: {} 4982 4963 4983 4964 buffer-equal-constant-time@1.0.1: {} ··· 4989 4970 base64-js: 1.5.1 4990 4971 ieee754: 1.2.1 4991 4972 4992 - bun-types@1.3.5: 4973 + bun-types@1.3.6: 4993 4974 dependencies: 4994 - '@types/node': 22.19.3 4975 + '@types/node': 25.0.9 4995 4976 4996 4977 bundle-name@4.1.0: 4997 4978 dependencies: ··· 5104 5085 object-assign: 4.1.1 5105 5086 vary: 1.1.2 5106 5087 5088 + csstype@3.2.3: {} 5089 + 5107 5090 cva@1.0.0-beta.4(typescript@5.9.3): 5108 5091 dependencies: 5109 5092 clsx: 2.1.1 ··· 5139 5122 5140 5123 destroy@1.2.0: {} 5141 5124 5142 - detect-libc@1.0.3: {} 5143 - 5144 5125 detect-libc@2.1.2: {} 5145 5126 5146 5127 dijkstrajs@1.0.3: {} 5147 5128 5148 - disposable-email-domains-js@1.20.0: {} 5129 + disposable-email-domains-js@1.21.0: {} 5149 5130 5150 5131 drizzle-kit@1.0.0-beta.6-4414a19: 5151 5132 dependencies: ··· 5156 5137 transitivePeerDependencies: 5157 5138 - supports-color 5158 5139 5159 - drizzle-orm@1.0.0-beta.6-4414a19(@types/mssql@9.1.8)(bun-types@1.3.5)(mssql@11.0.1)(pg@8.16.3): 5140 + drizzle-orm@1.0.0-beta.6-4414a19(@types/mssql@9.1.8)(bun-types@1.3.6)(mssql@11.0.1)(pg@8.17.1): 5160 5141 dependencies: 5161 5142 '@types/mssql': 9.1.8 5162 5143 mssql: 11.0.1 5163 5144 optionalDependencies: 5164 - bun-types: 1.3.5 5165 - pg: 8.16.3 5145 + bun-types: 1.3.6 5146 + pg: 8.17.1 5166 5147 5167 5148 dunder-proto@1.0.1: 5168 5149 dependencies: ··· 5271 5252 5272 5253 eventemitter3@4.0.7: {} 5273 5254 5274 - eventemitter3@5.0.1: {} 5255 + eventemitter3@5.0.4: {} 5275 5256 5276 5257 events@3.3.0: {} 5277 5258 ··· 5323 5304 optionalDependencies: 5324 5305 picomatch: 4.0.3 5325 5306 5326 - fill-range@7.1.1: 5327 - dependencies: 5328 - to-regex-range: 5.0.1 5329 - 5330 5307 finalhandler@1.3.2: 5331 5308 dependencies: 5332 5309 debug: 2.6.9 ··· 5435 5412 dependencies: 5436 5413 delay: 5.0.0 5437 5414 p-wait-for: 3.2.0 5438 - roarr: 7.21.2 5415 + roarr: 7.21.4 5439 5416 type-fest: 2.19.0 5440 5417 5441 5418 https-proxy-agent@7.0.6: ··· 5461 5438 5462 5439 inherits@2.0.4: {} 5463 5440 5464 - ioredis@5.9.0: 5441 + ioredis@5.9.2: 5465 5442 dependencies: 5466 5443 '@ioredis/commands': 1.5.0 5467 5444 cluster-key-slot: 1.1.2 ··· 5497 5474 dependencies: 5498 5475 is-docker: 3.0.0 5499 5476 5500 - is-number@7.0.0: {} 5501 - 5502 5477 is-wsl@3.1.0: 5503 5478 dependencies: 5504 5479 is-inside-container: 1.0.0 ··· 5554 5529 5555 5530 kysely@0.23.5: {} 5556 5531 5557 - leo-profanity@1.8.0: 5532 + leo-profanity@1.9.0: 5558 5533 optionalDependencies: 5559 5534 french-badwords-list: 1.0.7 5560 5535 russian-bad-words: 0.5.0 ··· 5646 5621 5647 5622 methods@1.1.2: {} 5648 5623 5649 - micromatch@4.0.8: 5650 - dependencies: 5651 - braces: 3.0.3 5652 - picomatch: 2.3.1 5653 - 5654 5624 mime-db@1.52.0: {} 5655 5625 5656 5626 mime-db@1.54.0: {} ··· 5746 5716 '@oxc-parser/binding-win32-arm64-msvc': 0.99.0 5747 5717 '@oxc-parser/binding-win32-x64-msvc': 0.99.0 5748 5718 5749 - oxc-resolver@11.16.2: 5719 + oxc-resolver@11.16.3: 5750 5720 optionalDependencies: 5751 - '@oxc-resolver/binding-android-arm-eabi': 11.16.2 5752 - '@oxc-resolver/binding-android-arm64': 11.16.2 5753 - '@oxc-resolver/binding-darwin-arm64': 11.16.2 5754 - '@oxc-resolver/binding-darwin-x64': 11.16.2 5755 - '@oxc-resolver/binding-freebsd-x64': 11.16.2 5756 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.16.2 5757 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.16.2 5758 - '@oxc-resolver/binding-linux-arm64-gnu': 11.16.2 5759 - '@oxc-resolver/binding-linux-arm64-musl': 11.16.2 5760 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.16.2 5761 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.16.2 5762 - '@oxc-resolver/binding-linux-riscv64-musl': 11.16.2 5763 - '@oxc-resolver/binding-linux-s390x-gnu': 11.16.2 5764 - '@oxc-resolver/binding-linux-x64-gnu': 11.16.2 5765 - '@oxc-resolver/binding-linux-x64-musl': 11.16.2 5766 - '@oxc-resolver/binding-openharmony-arm64': 11.16.2 5767 - '@oxc-resolver/binding-wasm32-wasi': 11.16.2 5768 - '@oxc-resolver/binding-win32-arm64-msvc': 11.16.2 5769 - '@oxc-resolver/binding-win32-ia32-msvc': 11.16.2 5770 - '@oxc-resolver/binding-win32-x64-msvc': 11.16.2 5721 + '@oxc-resolver/binding-android-arm-eabi': 11.16.3 5722 + '@oxc-resolver/binding-android-arm64': 11.16.3 5723 + '@oxc-resolver/binding-darwin-arm64': 11.16.3 5724 + '@oxc-resolver/binding-darwin-x64': 11.16.3 5725 + '@oxc-resolver/binding-freebsd-x64': 11.16.3 5726 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.16.3 5727 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.16.3 5728 + '@oxc-resolver/binding-linux-arm64-gnu': 11.16.3 5729 + '@oxc-resolver/binding-linux-arm64-musl': 11.16.3 5730 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.16.3 5731 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.16.3 5732 + '@oxc-resolver/binding-linux-riscv64-musl': 11.16.3 5733 + '@oxc-resolver/binding-linux-s390x-gnu': 11.16.3 5734 + '@oxc-resolver/binding-linux-x64-gnu': 11.16.3 5735 + '@oxc-resolver/binding-linux-x64-musl': 11.16.3 5736 + '@oxc-resolver/binding-openharmony-arm64': 11.16.3 5737 + '@oxc-resolver/binding-wasm32-wasi': 11.16.3 5738 + '@oxc-resolver/binding-win32-arm64-msvc': 11.16.3 5739 + '@oxc-resolver/binding-win32-ia32-msvc': 11.16.3 5740 + '@oxc-resolver/binding-win32-x64-msvc': 11.16.3 5771 5741 5772 - oxlint@1.38.0: 5742 + oxlint@1.41.0: 5773 5743 optionalDependencies: 5774 - '@oxlint/darwin-arm64': 1.38.0 5775 - '@oxlint/darwin-x64': 1.38.0 5776 - '@oxlint/linux-arm64-gnu': 1.38.0 5777 - '@oxlint/linux-arm64-musl': 1.38.0 5778 - '@oxlint/linux-x64-gnu': 1.38.0 5779 - '@oxlint/linux-x64-musl': 1.38.0 5780 - '@oxlint/win32-arm64': 1.38.0 5781 - '@oxlint/win32-x64': 1.38.0 5744 + '@oxlint/darwin-arm64': 1.41.0 5745 + '@oxlint/darwin-x64': 1.41.0 5746 + '@oxlint/linux-arm64-gnu': 1.41.0 5747 + '@oxlint/linux-arm64-musl': 1.41.0 5748 + '@oxlint/linux-x64-gnu': 1.41.0 5749 + '@oxlint/linux-x64-musl': 1.41.0 5750 + '@oxlint/win32-arm64': 1.41.0 5751 + '@oxlint/win32-x64': 1.41.0 5782 5752 5783 5753 p-finally@1.0.0: {} 5784 5754 ··· 5797 5767 5798 5768 p-queue@9.1.0: 5799 5769 dependencies: 5800 - eventemitter3: 5.0.1 5770 + eventemitter3: 5.0.4 5801 5771 p-timeout: 7.0.1 5802 5772 5803 5773 p-timeout@3.2.0: ··· 5818 5788 5819 5789 path-to-regexp@0.1.12: {} 5820 5790 5821 - pg-cloudflare@1.2.7: 5791 + pg-cloudflare@1.3.0: 5822 5792 optional: true 5823 5793 5824 - pg-connection-string@2.9.1: {} 5794 + pg-connection-string@2.10.0: {} 5825 5795 5826 5796 pg-int8@1.0.1: {} 5827 5797 5828 - pg-pool@3.10.1(pg@8.16.3): 5798 + pg-pool@3.11.0(pg@8.17.1): 5829 5799 dependencies: 5830 - pg: 8.16.3 5800 + pg: 8.17.1 5831 5801 5832 - pg-protocol@1.10.3: {} 5802 + pg-protocol@1.11.0: {} 5833 5803 5834 5804 pg-types@2.2.0: 5835 5805 dependencies: ··· 5839 5809 postgres-date: 1.0.7 5840 5810 postgres-interval: 1.2.0 5841 5811 5842 - pg@8.16.3: 5812 + pg@8.17.1: 5843 5813 dependencies: 5844 - pg-connection-string: 2.9.1 5845 - pg-pool: 3.10.1(pg@8.16.3) 5846 - pg-protocol: 1.10.3 5814 + pg-connection-string: 2.10.0 5815 + pg-pool: 3.11.0(pg@8.17.1) 5816 + pg-protocol: 1.11.0 5847 5817 pg-types: 2.2.0 5848 5818 pgpass: 1.0.5 5849 5819 optionalDependencies: 5850 - pg-cloudflare: 1.2.7 5820 + pg-cloudflare: 1.3.0 5851 5821 5852 5822 pgpass@1.0.5: 5853 5823 dependencies: 5854 5824 split2: 4.2.0 5855 5825 5856 5826 picocolors@1.1.1: {} 5857 - 5858 - picomatch@2.3.1: {} 5859 5827 5860 5828 picomatch@4.0.3: {} 5861 5829 ··· 5908 5876 dependencies: 5909 5877 xtend: 4.0.2 5910 5878 5911 - prettier-plugin-tailwindcss@0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.7.4))(@prettier/plugin-oxc@0.1.3)(prettier@3.7.4): 5879 + prettier-plugin-tailwindcss@0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.8.0))(@prettier/plugin-oxc@0.1.3)(prettier@3.8.0): 5912 5880 dependencies: 5913 - prettier: 3.7.4 5881 + prettier: 3.8.0 5914 5882 optionalDependencies: 5915 - '@ianvs/prettier-plugin-sort-imports': 4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.7.4) 5883 + '@ianvs/prettier-plugin-sort-imports': 4.7.0(@prettier/plugin-oxc@0.1.3)(@vue/compiler-sfc@3.5.26)(prettier@3.8.0) 5916 5884 '@prettier/plugin-oxc': 0.1.3 5917 5885 5918 - prettier@3.7.4: {} 5886 + prettier@3.8.0: {} 5919 5887 5920 5888 process-warning@3.0.0: {} 5921 5889 ··· 5933 5901 '@protobufjs/path': 1.1.2 5934 5902 '@protobufjs/pool': 1.1.0 5935 5903 '@protobufjs/utf8': 1.1.0 5936 - '@types/node': 22.19.3 5904 + '@types/node': 22.19.7 5937 5905 long: 5.3.2 5938 5906 5939 5907 proxy-addr@2.0.7: ··· 6000 5968 6001 5969 rfdc@1.4.1: {} 6002 5970 6003 - roarr@7.21.2: 5971 + roarr@7.21.4: 6004 5972 dependencies: 6005 5973 fast-printf: 1.6.10 6006 5974 safe-stable-stringify: 2.5.0 ··· 6201 6169 '@azure/identity': 4.13.0 6202 6170 '@azure/keyvault-keys': 4.10.0 6203 6171 '@js-joda/core': 5.6.5 6204 - '@types/node': 22.19.3 6172 + '@types/node': 22.19.7 6205 6173 bl: 6.1.6 6206 6174 iconv-lite: 0.6.3 6207 6175 js-md4: 0.3.2 ··· 6216 6184 '@azure/identity': 4.13.0 6217 6185 '@azure/keyvault-keys': 4.10.0 6218 6186 '@js-joda/core': 5.6.5 6219 - '@types/node': 22.19.3 6187 + '@types/node': 22.19.7 6220 6188 bl: 6.1.6 6221 6189 iconv-lite: 0.7.2 6222 6190 js-md4: 0.3.2 ··· 6236 6204 6237 6205 tlds@1.261.0: {} 6238 6206 6239 - to-regex-range@5.0.1: 6240 - dependencies: 6241 - is-number: 7.0.0 6242 - 6243 6207 toidentifier@1.0.1: {} 6244 6208 6245 6209 tr46@0.0.3: {} ··· 6274 6238 multiformats: 9.9.0 6275 6239 6276 6240 undici-types@6.21.0: {} 6241 + 6242 + undici-types@7.16.0: {} 6277 6243 6278 6244 undici@5.29.0: 6279 6245 dependencies: