prototypey.org - atproto lexicon typescript toolkit - mirror https://github.com/tylersayshi/prototypey

Compare changes

Choose any two refs to compare.

+1343 -893
+44
.github/workflows/sync-tangled.yml
··· 1 + name: sync-tangled 2 + 3 + on: 4 + push: 5 + branches: 6 + - main 7 + 8 + jobs: 9 + sync: 10 + runs-on: ubuntu-latest 11 + environment: tangled-sync 12 + steps: 13 + - uses: actions/checkout@v4.1.7 14 + with: 15 + fetch-depth: 0 16 + ref: ${{ github.event.pull_request.head.sha }} 17 + - name: sync tangled 18 + env: 19 + TANGLED_SSH_PRIVATE_KEY: ${{ secrets.TANGLED_SSH_PRIVATE_KEY }} 20 + run: | 21 + set -euo pipefail 22 + # Turn off strict SSH key checking 23 + mkdir -p ~/.ssh 24 + echo "Host * 25 + StrictHostKeyChecking no 26 + UserKnownHostsFile=/dev/null" > ~/.ssh/config 27 + 28 + # Write SSH key to disk 29 + echo "$TANGLED_SSH_PRIVATE_KEY" > ~/.ssh/tangled_key 30 + chmod 600 ~/.ssh/tangled_key 31 + 32 + # Configure SSH to use the key for tangled.sh 33 + echo "Host tangled.sh 34 + IdentityFile ~/.ssh/tangled_key" >> ~/.ssh/config 35 + 36 + chmod 600 ~/.ssh/config 37 + 38 + # Set git user 39 + git config --global user.name "Prototypey Bot" 40 + git config --global user.email "bot@prototypey.org" 41 + 42 + git remote add tangled git@tangled.sh:tylur.dev/prototypey 43 + git push -f --all tangled 44 + git push -f --tags tangled
+28
.github/workflows/update-dependencies.yml
··· 1 + name: Update Dependencies 2 + 3 + on: 4 + schedule: 5 + # Run every Monday at 9:00 AM UTC 6 + - cron: "0 9 * * 1" 7 + workflow_dispatch: # Allow manual trigger 8 + 9 + jobs: 10 + update_dependencies: 11 + name: Update Dependencies 12 + runs-on: ubuntu-latest 13 + environment: update 14 + permissions: 15 + contents: write 16 + pull-requests: write 17 + steps: 18 + - uses: actions/checkout@v4 19 + 20 + - uses: ./.github/actions/prepare 21 + 22 + - uses: tylersayshi/taze-update-action@v1 23 + with: 24 + taze-input: -rw --concurrency 1 25 + branch-prefix: update-deps 26 + pr-title: "update dependencies" 27 + pr-labels: dependencies 28 + github-token: ${{ secrets.PAT_TOKEN }}
+1 -1
.node-version
··· 1 - 24.10.0 1 + 25
+1 -1
knip.json
··· 15 15 } 16 16 }, 17 17 "ignore": ["**/*.d.ts", "**/dist/**", "**/lib/**", "**/node_modules/**"], 18 - "ignoreDependencies": [], 18 + "ignoreDependencies": ["tailwindcss"], 19 19 "ignoreExportsUsedInFile": true 20 20 }
+3 -3
package.json
··· 19 19 "tsc": "pnpm -r tsc" 20 20 }, 21 21 "devDependencies": { 22 - "@changesets/cli": "^2.29.7", 22 + "@changesets/cli": "^2.29.8", 23 23 "@eslint/js": "9.29.0", 24 24 "eslint": "9.29.0", 25 - "knip": "^5.66.2", 25 + "knip": "^5.83.1", 26 26 "prettier": "3.6.1", 27 27 "typescript-eslint": "8.35.0" 28 28 }, 29 - "packageManager": "pnpm@10.19.0", 29 + "packageManager": "pnpm@10.29.2", 30 30 "engines": { 31 31 "node": ">=20.19.0" 32 32 },
+42
packages/prototypey/CHANGELOG.md
··· 1 1 # prototypey 2 2 3 + ## 0.3.8 4 + 5 + ### Patch Changes 6 + 7 + - 7a19f90: releast changes from dep updates and #66 8 + 9 + ## 0.3.7 10 + 11 + ### Patch Changes 12 + 13 + - e75de54: update docs 14 + 15 + ## 0.3.6 16 + 17 + ### Patch Changes 18 + 19 + - 2b55317: fix exported type bug 20 + 21 + ## 0.3.5 22 + 23 + ### Patch Changes 24 + 25 + - abb4b31: updated docs 26 + 27 + ## 0.3.4 28 + 29 + ### Patch Changes 30 + 31 + - 3329654: fix for type of record key and description hint 32 + 33 + ## 0.3.3 34 + 35 + ### Patch Changes 36 + 37 + - e7a7497: documentation update 38 + 39 + ## 0.3.2 40 + 41 + ### Patch Changes 42 + 43 + - 6a6cae5: update deps 44 + 3 45 ## 0.3.1 4 46 5 47 ### Patch Changes
+14 -12
packages/prototypey/README.md
··· 2 2 3 3 A fully-featured sdk for developing lexicons with typescript. 4 4 5 + Below this is the docs and features of the library. If you'd like the story for why prototypey exists and what it's good for: [that's published here](https://notes.tylur.dev/3m5a3do4eus2w) 6 + 7 + ## Features 8 + 9 + - atproto spec lexicon authoring with in IDE docs & hints for each attribute (ts => json) 10 + - CLI to generate json from ts definitions 11 + - CLI to generate ts from json definitions 12 + - inference of usage type from full lexicon definition 13 + - the really cool part of this is that it fills in the refs from the defs all at the type level 14 + - `lx.lexicon(...).validate(data)` for validating data using `@atproto/lexicon` 15 + - `fromJSON()` helper for creating lexicons directly from JSON objects with full type inference 16 + 5 17 ## Installation 6 18 7 19 ```bash ··· 207 219 npm run lexicon:import 208 220 ``` 209 221 210 - ## State of the Project 211 - 212 - **Done:** 213 - 214 - - Full atproto spec lexicon authoring with in IDE docs & hints for each attribute (ts => json) 215 - - CLI generates json from ts definitions 216 - - CLI generates ts from json definitions 217 - - Inferrance of valid type from full lexicon definition 218 - - the really cool part of this is that it fills in the refs from the defs all at the type level 219 - - `lx.lexicon(...).validate(data)` for validating data using `@atproto/lexicon` and your lexicon definitions 220 - - `fromJSON()` helper for creating lexicons directly from JSON objects with full type inference 222 + --- 221 223 222 224 Please give any and all feedback. I've not really written many lexicons much myself yet, so this project is at a point of "well I think this makes sense". Both the [issues page](https://github.com/tylersayshi/prototypey/issues) and [discussions](https://github.com/tylersayshi/prototypey/discussions) are open and ready for y'all ๐Ÿ™‚. 223 225 224 226 **Call For Contribution:** 225 227 226 - - We need library art! Please reach out if you'd be willing to contribute some drawings or anything :) 228 + We need library art! Please reach out if you'd be willing to contribute some drawings or anything :)
+68 -49
packages/prototypey/core/lib.ts
··· 33 33 * Common options available for lexicon items. 34 34 * @see https://atproto.com/specs/lexicon#string-formats 35 35 */ 36 - interface LexiconItemCommonOptions { 36 + type LexiconItemCommonOptions = { 37 37 /** Indicates this field must be provided */ 38 38 required?: boolean; 39 39 /** Indicates this field can be explicitly set to null */ 40 40 nullable?: boolean; 41 - } 41 + /** Human-readable description */ 42 + description?: string; 43 + }; 42 44 43 45 /** 44 46 * Base interface for all lexicon items. 45 47 * @see https://atproto.com/specs/lexicon#overview-of-types 46 48 */ 47 - interface LexiconItem extends LexiconItemCommonOptions { 49 + type LexiconItem = LexiconItemCommonOptions & { 48 50 type: LexiconType; 49 - } 51 + }; 50 52 51 53 /** 52 54 * Definition in a lexicon namespace. 53 55 * @see https://atproto.com/specs/lexicon#lexicon-document 54 56 */ 55 - interface Def { 57 + type Def = { 56 58 type: LexiconType; 57 - } 59 + }; 58 60 59 61 /** 60 62 * Lexicon namespace document structure. 61 63 * @see https://atproto.com/specs/lexicon#lexicon-document 62 64 */ 63 - interface LexiconNamespace { 65 + type LexiconNamespace = { 64 66 /** Namespaced identifier (NSID) for this lexicon */ 65 67 id: string; 66 68 /** Named definitions within this namespace */ 67 69 defs: Record<string, Def>; 68 - } 70 + }; 69 71 70 72 /** 71 73 * String type options. 72 74 * @see https://atproto.com/specs/lexicon#string 73 75 */ 74 - interface StringOptions extends LexiconItemCommonOptions { 76 + type StringOptions = LexiconItemCommonOptions & { 75 77 /** 76 78 * Semantic string format constraint. 77 79 * @see https://atproto.com/specs/lexicon#string-formats ··· 104 106 default?: string; 105 107 /** Fixed, unchangeable value */ 106 108 const?: string; 107 - } 109 + }; 108 110 109 111 /** 110 112 * Boolean type options. 111 113 * @see https://atproto.com/specs/lexicon#boolean 112 114 */ 113 - interface BooleanOptions extends LexiconItemCommonOptions { 115 + type BooleanOptions = LexiconItemCommonOptions & { 114 116 /** Default value if not provided */ 115 117 default?: boolean; 116 118 /** Fixed, unchangeable value */ 117 119 const?: boolean; 118 - } 120 + }; 119 121 120 122 /** 121 123 * Integer type options. 122 124 * @see https://atproto.com/specs/lexicon#integer 123 125 */ 124 - interface IntegerOptions extends LexiconItemCommonOptions { 126 + type IntegerOptions = LexiconItemCommonOptions & { 125 127 /** Minimum allowed value (inclusive) */ 126 128 minimum?: number; 127 129 /** Maximum allowed value (inclusive) */ ··· 132 134 default?: number; 133 135 /** Fixed, unchangeable value */ 134 136 const?: number; 135 - } 137 + }; 136 138 137 139 /** 138 140 * Bytes type options for arbitrary byte arrays. 139 141 * @see https://atproto.com/specs/lexicon#bytes 140 142 */ 141 - interface BytesOptions extends LexiconItemCommonOptions { 143 + type BytesOptions = LexiconItemCommonOptions & { 142 144 /** Minimum byte array length */ 143 145 minLength?: number; 144 146 /** Maximum byte array length */ 145 147 maxLength?: number; 146 - } 148 + }; 147 149 148 150 /** 149 151 * Blob type options for binary data with MIME types. 150 152 * @see https://atproto.com/specs/lexicon#blob 151 153 */ 152 - interface BlobOptions extends LexiconItemCommonOptions { 154 + type BlobOptions = LexiconItemCommonOptions & { 153 155 /** Allowed MIME types (e.g., ["image/png", "image/jpeg"]) */ 154 156 accept?: string[]; 155 157 /** Maximum blob size in bytes */ 156 158 maxSize?: number; 157 - } 159 + }; 158 160 159 161 /** 160 162 * Array type options. 161 163 * @see https://atproto.com/specs/lexicon#array 162 164 */ 163 - interface ArrayOptions extends LexiconItemCommonOptions { 165 + type ArrayOptions = LexiconItemCommonOptions & { 164 166 /** Minimum array length */ 165 167 minLength?: number; 166 168 /** Maximum array length */ 167 169 maxLength?: number; 168 - } 170 + }; 169 171 170 172 /** 171 173 * Record type options for repository records. 172 174 * @see https://atproto.com/specs/lexicon#record 173 175 */ 174 - interface RecordOptions { 175 - /** Record key strategy: "self" for self-describing or "tid" for timestamp IDs */ 176 - key: "self" | "tid"; 176 + type RecordOptions = { 177 + /** 178 + * Record key strategy: "self" for self-describing or "tid" for timestamp IDs 179 + * @see https://atproto.com/specs/record-key 180 + */ 181 + key: string; 177 182 /** Object schema defining the record structure */ 178 183 record: { type: "object" }; 179 184 /** Human-readable description */ 180 185 description?: string; 181 - } 186 + }; 182 187 183 188 /** 184 189 * Union type options for multiple possible types. 185 190 * @see https://atproto.com/specs/lexicon#union 186 191 */ 187 - interface UnionOptions extends LexiconItemCommonOptions { 192 + type UnionOptions = LexiconItemCommonOptions & { 188 193 /** If true, only listed refs are allowed; if false, additional types may be added */ 189 194 closed?: boolean; 190 - } 195 + }; 191 196 192 197 /** 193 198 * Map of property names to their lexicon item definitions. ··· 200 205 } 201 206 >; 202 207 208 + /** 209 + * Object-level options (not property-level). 210 + * @see https://atproto.com/specs/lexicon#object 211 + */ 212 + type ObjectOptions = { 213 + /** Human-readable description of the object */ 214 + description?: string; 215 + }; 216 + 203 217 type RequiredKeys<T> = { 204 218 [K in keyof T]: T[K] extends { required: true } ? K : never; 205 219 }[keyof T]; ··· 212 226 * Resulting object schema with required and nullable fields extracted. 213 227 * @see https://atproto.com/specs/lexicon#object 214 228 */ 215 - type ObjectResult<T extends ObjectProperties> = { 229 + type ObjectResult<T extends ObjectProperties, O extends ObjectOptions = {}> = { 216 230 type: "object"; 217 231 /** Property definitions */ 218 232 properties: { ··· 225 239 : { required: UnionToTuple<RequiredKeys<T>> }) & 226 240 ([NullableKeys<T>] extends [never] 227 241 ? {} 228 - : { nullable: UnionToTuple<NullableKeys<T>> }); 242 + : { nullable: UnionToTuple<NullableKeys<T>> }) & 243 + O; 229 244 230 245 /** 231 246 * Map of parameter names to their lexicon item definitions. ··· 251 266 * HTTP request or response body schema. 252 267 * @see https://atproto.com/specs/lexicon#http-endpoints 253 268 */ 254 - interface BodySchema { 269 + type BodySchema = { 255 270 /** MIME type encoding (typically "application/json") */ 256 271 encoding: "application/json" | (string & {}); 257 272 /** Human-readable description */ 258 273 description?: string; 259 274 /** Object schema defining the body structure */ 260 275 schema?: ObjectResult<ObjectProperties>; 261 - } 276 + }; 262 277 263 278 /** 264 279 * Error definition for HTTP endpoints. 265 280 * @see https://atproto.com/specs/lexicon#http-endpoints 266 281 */ 267 - interface ErrorDef { 282 + type ErrorDef = { 268 283 /** Error name/code */ 269 284 name: string; 270 285 /** Human-readable error description */ 271 286 description?: string; 272 - } 287 + }; 273 288 274 289 /** 275 290 * Query endpoint options (HTTP GET). 276 291 * @see https://atproto.com/specs/lexicon#query 277 292 */ 278 - interface QueryOptions { 293 + type QueryOptions = { 279 294 /** Human-readable description */ 280 295 description?: string; 281 296 /** Query string parameters */ ··· 284 299 output?: BodySchema; 285 300 /** Possible error responses */ 286 301 errors?: ErrorDef[]; 287 - } 302 + }; 288 303 289 304 /** 290 305 * Procedure endpoint options (HTTP POST). 291 306 * @see https://atproto.com/specs/lexicon#procedure 292 307 */ 293 - interface ProcedureOptions { 308 + type ProcedureOptions = { 294 309 /** Human-readable description */ 295 310 description?: string; 296 311 /** Query string parameters */ ··· 301 316 output?: BodySchema; 302 317 /** Possible error responses */ 303 318 errors?: ErrorDef[]; 304 - } 319 + }; 305 320 306 321 /** 307 322 * WebSocket message schema for subscriptions. 308 323 * @see https://atproto.com/specs/lexicon#subscription 309 324 */ 310 - interface MessageSchema { 325 + type MessageSchema = { 311 326 /** Human-readable description */ 312 327 description?: string; 313 328 /** Union of possible message types */ 314 329 schema: { type: "union"; refs: readonly string[] }; 315 - } 330 + }; 316 331 317 332 /** 318 333 * Subscription endpoint options (WebSocket). 319 334 * @see https://atproto.com/specs/lexicon#subscription 320 335 */ 321 - interface SubscriptionOptions { 336 + type SubscriptionOptions = { 322 337 /** Human-readable description */ 323 338 description?: string; 324 339 /** Query string parameters */ ··· 327 342 message?: MessageSchema; 328 343 /** Possible error responses */ 329 344 errors?: ErrorDef[]; 330 - } 345 + }; 331 346 332 347 /** 333 348 * Public interface for Lexicon to avoid exposing private implementation details 334 349 */ 335 - export interface LexiconSchema<T extends LexiconNamespace> { 350 + export type LexiconSchema<T extends LexiconNamespace> = { 336 351 json: T; 337 352 "~infer": Infer<{ json: T }>; 338 353 validate( 339 354 data: unknown, 340 355 def?: keyof T["defs"], 341 356 ): ValidationResult<Infer<{ json: T }>>; 342 - } 357 + }; 343 358 344 359 class Lexicon<T extends LexiconNamespace> implements LexiconSchema<T> { 345 360 public json: T; ··· 524 539 * Creates an object type with defined properties. 525 540 * @see https://atproto.com/specs/lexicon#object 526 541 */ 527 - object<T extends ObjectProperties>(options: T): ObjectResult<T> { 528 - const required = Object.keys(options).filter( 529 - (key) => "required" in options[key] && options[key].required, 542 + object<T extends ObjectProperties, O extends ObjectOptions>( 543 + properties: T, 544 + options?: O, 545 + ): ObjectResult<T, O> { 546 + const required = Object.keys(properties).filter( 547 + (key) => "required" in properties[key] && properties[key].required, 530 548 ); 531 - const nullable = Object.keys(options).filter( 532 - (key) => "nullable" in options[key] && options[key].nullable, 549 + const nullable = Object.keys(properties).filter( 550 + (key) => "nullable" in properties[key] && properties[key].nullable, 533 551 ); 534 552 const result: Record<string, unknown> = { 535 553 type: "object", 536 - properties: options, 554 + properties, 555 + ...options, 537 556 }; 538 557 if (required.length > 0) { 539 558 result.required = required; ··· 541 560 if (nullable.length > 0) { 542 561 result.nullable = nullable; 543 562 } 544 - return result as ObjectResult<T>; 563 + return result as ObjectResult<T, O>; 545 564 }, 546 565 /** 547 566 * Creates a params type for query string parameters.
+1
packages/prototypey/core/main.ts
··· 1 1 export { lx, fromJSON } from "./lib.ts"; 2 2 export { type Infer } from "./infer.ts"; 3 + export type * from "@atproto/lexicon";
+1 -1
packages/prototypey/core/tests/from-json-infer.test.ts
··· 1220 1220 1221 1221 attest(lexicon["~infer"]).type.toString.snap(`{ 1222 1222 $type: "app.bsky.actor.profile" 1223 - displayName?: string | undefined 1224 1223 description?: string | undefined 1224 + displayName?: string | undefined 1225 1225 }`); 1226 1226 });
+8 -8
packages/prototypey/core/tests/infer.bench.ts
··· 10 10 }), 11 11 }); 12 12 return schema["~infer"]; 13 - }).types([748, "instantiations"]); 13 + }).types([685, "instantiations"]); 14 14 15 15 bench("infer with complex nested structure", () => { 16 16 const schema = lx.lexicon("test.complex", { ··· 33 33 }), 34 34 }); 35 35 return schema["~infer"]; 36 - }).types([1047, "instantiations"]); 36 + }).types([956, "instantiations"]); 37 37 38 38 bench("infer with circular reference", () => { 39 39 const ns = lx.lexicon("test", { ··· 50 50 }), 51 51 }); 52 52 return ns["~infer"]; 53 - }).types([699, "instantiations"]); 53 + }).types([634, "instantiations"]); 54 54 55 55 bench("infer with app.bsky.feed.defs lexicon", () => { 56 56 const schema = lx.lexicon("app.bsky.feed.defs", { ··· 117 117 interactionShare: lx.token("User shared the feed item"), 118 118 }); 119 119 return schema["~infer"]; 120 - }).types([1292, "instantiations"]); 120 + }).types([1237, "instantiations"]); 121 121 122 122 bench("fromJSON infer with simple object", () => { 123 123 const schema = fromJSON({ ··· 134 134 }, 135 135 }); 136 136 return schema["~infer"]; 137 - }).types([477, "instantiations"]); 137 + }).types([438, "instantiations"]); 138 138 139 139 bench("fromJSON infer with complex nested structure", () => { 140 140 const schema = fromJSON({ ··· 177 177 }, 178 178 }); 179 179 return schema["~infer"]; 180 - }).types([538, "instantiations"]); 180 + }).types([499, "instantiations"]); 181 181 182 182 bench("fromJSON infer with circular reference", () => { 183 183 const ns = fromJSON({ ··· 208 208 }, 209 209 }); 210 210 return ns["~infer"]; 211 - }).types([450, "instantiations"]); 211 + }).types([411, "instantiations"]); 212 212 213 213 bench("fromJSON infer with app.bsky.feed.defs lexicon", () => { 214 214 const schema = fromJSON({ ··· 325 325 }, 326 326 }); 327 327 return schema["~infer"]; 328 - }).types([552, "instantiations"]); 328 + }).types([513, "instantiations"]);
+73
packages/prototypey/core/tests/primitives.test.ts
··· 183 183 }); 184 184 }); 185 185 186 + test("lx.object() basic", () => { 187 + const result = lx.object({ 188 + name: lx.string(), 189 + }); 190 + expect(result).toEqual({ 191 + type: "object", 192 + properties: { 193 + name: { type: "string" }, 194 + }, 195 + }); 196 + }); 197 + 198 + test("lx.object() with description", () => { 199 + const result = lx.object( 200 + { 201 + enabled: lx.boolean({ 202 + default: true, 203 + description: "Whether this feature is enabled.", 204 + }), 205 + }, 206 + { 207 + description: "Configuration options for the feature.", 208 + }, 209 + ); 210 + expect(result).toEqual({ 211 + type: "object", 212 + description: "Configuration options for the feature.", 213 + properties: { 214 + enabled: { 215 + type: "boolean", 216 + default: true, 217 + description: "Whether this feature is enabled.", 218 + }, 219 + }, 220 + }); 221 + }); 222 + 223 + test("lx.object() with required and description", () => { 224 + const result = lx.object( 225 + { 226 + id: lx.string({ required: true }), 227 + name: lx.string(), 228 + }, 229 + { description: "User profile object" }, 230 + ); 231 + expect(result).toEqual({ 232 + type: "object", 233 + description: "User profile object", 234 + properties: { 235 + id: { type: "string", required: true }, 236 + name: { type: "string" }, 237 + }, 238 + required: ["id"], 239 + }); 240 + }); 241 + 242 + test("lx.object() with nullable and description", () => { 243 + const result = lx.object( 244 + { 245 + bio: lx.string({ nullable: true }), 246 + }, 247 + { description: "Optional profile fields" }, 248 + ); 249 + expect(result).toEqual({ 250 + type: "object", 251 + description: "Optional profile fields", 252 + properties: { 253 + bio: { type: "string", nullable: true }, 254 + }, 255 + nullable: ["bio"], 256 + }); 257 + }); 258 + 186 259 test("lx.token() with interaction event", () => { 187 260 const result = lx.token( 188 261 "Request that less content like the given feed item be shown in the feed",
+4 -4
packages/prototypey/package.json
··· 1 1 { 2 2 "name": "prototypey", 3 - "version": "0.3.1", 3 + "version": "0.3.8", 4 4 "description": "atproto lexicon typescript toolkit", 5 5 "repository": { 6 6 "type": "git", ··· 36 36 "tsc": "tsc" 37 37 }, 38 38 "dependencies": { 39 - "@atproto/lexicon": "^0.5.1", 39 + "@atproto/lexicon": "^0.5.2", 40 40 "sade": "^1.8.1", 41 41 "tinyglobby": "^0.2.15" 42 42 }, 43 43 "devDependencies": { 44 44 "@ark/attest": "^0.49.0", 45 45 "@types/node": "24.0.4", 46 - "tsdown": "0.12.7", 47 - "typescript": "5.8.3", 46 + "tsdown": "^0.15.12", 47 + "typescript": "5.9.3", 48 48 "vitest": "^3.2.4" 49 49 }, 50 50 "engines": {
+13 -11
packages/site/package.json
··· 11 11 "test": "vitest" 12 12 }, 13 13 "dependencies": { 14 - "@monaco-editor/react": "^4.6.0", 14 + "@monaco-editor/react": "^4.7.0", 15 15 "lz-string": "^1.5.0", 16 16 "monaco-editor": "0.52.0", 17 - "nuqs": "^2.7.2", 17 + "nuqs": "^2.8.8", 18 18 "prototypey": "workspace:*", 19 - "react": "^19.2.0", 20 - "react-dom": "^19.2.0" 19 + "react": "^19.2.4", 20 + "react-dom": "^19.2.4" 21 21 }, 22 22 "devDependencies": { 23 + "@tailwindcss/vite": "^4.1.18", 23 24 "@testing-library/jest-dom": "^6.9.1", 24 - "@testing-library/react": "^16.1.0", 25 - "@testing-library/user-event": "^14.5.2", 26 - "@types/react": "^19.2.2", 27 - "@types/react-dom": "^19.2.2", 28 - "@vitejs/plugin-react": "^5.0.4", 25 + "@testing-library/react": "^16.3.2", 26 + "@testing-library/user-event": "^14.6.1", 27 + "@types/react": "^19.2.13", 28 + "@types/react-dom": "^19.2.3", 29 + "@vitejs/plugin-react": "^5.1.3", 29 30 "babel-plugin-react-compiler": "^1.0.0", 30 31 "eslint-plugin-react-compiler": "19.1.0-rc.2", 31 32 "jsdom": "^25.0.1", 32 - "typescript": "5.8.3", 33 - "vite": "^6.0.5", 33 + "tailwindcss": "^4.1.18", 34 + "typescript": "5.9.3", 35 + "vite": "^6.4.1", 34 36 "vitest": "^3.2.4" 35 37 } 36 38 }
+2 -2
packages/site/src/App.tsx
··· 3 3 4 4 export function App() { 5 5 return ( 6 - <> 6 + <div className="flex flex-col min-h-screen w-full bg-white dark:bg-gray-900 text-gray-700 dark:text-gray-200"> 7 7 <Header /> 8 8 <Playground /> 9 - </> 9 + </div> 10 10 ); 11 11 }
+6 -31
packages/site/src/components/Editor.tsx
··· 83 83 84 84 if (!isReady) { 85 85 return ( 86 - <div style={{ flex: 1, display: "flex", flexDirection: "column" }}> 87 - <div 88 - style={{ 89 - padding: "0.75rem 1rem", 90 - backgroundColor: "var(--color-bg-secondary)", 91 - borderBottom: "1px solid var(--color-border)", 92 - fontSize: "0.875rem", 93 - fontWeight: "600", 94 - color: "var(--color-text-secondary)", 95 - }} 96 - > 86 + <div className="flex-1 flex flex-col"> 87 + <div className="py-3 px-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 text-sm font-semibold text-gray-500 dark:text-gray-400"> 97 88 Input 98 89 </div> 99 - <div 100 - style={{ 101 - flex: 1, 102 - display: "flex", 103 - alignItems: "center", 104 - justifyContent: "center", 105 - }} 106 - > 90 + <div className="flex-1 flex items-center justify-center"> 107 91 Loading... 108 92 </div> 109 93 </div> ··· 111 95 } 112 96 113 97 return ( 114 - <div style={{ flex: 1, display: "flex", flexDirection: "column" }}> 115 - <div 116 - style={{ 117 - padding: "0.75rem 1rem", 118 - backgroundColor: "var(--color-bg-secondary)", 119 - borderBottom: "1px solid var(--color-border)", 120 - fontSize: "0.875rem", 121 - fontWeight: "600", 122 - color: "var(--color-text-secondary)", 123 - }} 124 - > 98 + <div className="flex-1 flex flex-col"> 99 + <div className="py-3 px-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 text-sm font-semibold text-gray-500 dark:text-gray-400"> 125 100 Input 126 101 </div> 127 - <div style={{ flex: 1 }}> 102 + <div className="flex-1"> 128 103 <MonacoEditor 129 104 height="100%" 130 105 defaultLanguage="typescript"
+89 -137
packages/site/src/components/Header.tsx
··· 1 1 import { useState } from "react"; 2 2 3 + interface HeaderLinkProps { 4 + href: string; 5 + icon: React.ReactNode; 6 + label: string; 7 + } 8 + 9 + function HeaderLink({ href, icon, label }: HeaderLinkProps) { 10 + return ( 11 + <a 12 + href={href} 13 + target="_blank" 14 + rel="noopener noreferrer" 15 + className="text-gray-900 dark:text-gray-100 no-underline text-base font-semibold flex items-center gap-2 transition-opacity duration-200 hover:opacity-60" 16 + > 17 + {icon} 18 + {label} 19 + </a> 20 + ); 21 + } 22 + 3 23 export function Header() { 4 24 const [copied, setCopied] = useState(false); 5 25 ··· 16 36 }; 17 37 18 38 return ( 19 - <header 20 - style={{ 21 - padding: "2rem 2rem 1rem 2rem", 22 - borderBottom: "1px solid var(--color-border)", 23 - }} 24 - > 25 - <div style={{ maxWidth: "1400px", margin: "0 auto" }}> 26 - <div className="header-content"> 39 + <header className="py-8 px-8 pb-4 border-b border-gray-200 dark:border-gray-700"> 40 + <div className="max-w-[1400px] mx-auto"> 41 + <div className="flex justify-between items-start flex-col md:flex-row gap-4 md:gap-0"> 27 42 <div> 28 - <h1 29 - style={{ 30 - fontSize: "2.5rem", 31 - fontWeight: "700", 32 - marginBottom: "0.5rem", 33 - }} 34 - > 35 - <span style={{ color: "var(--color-text-secondary)" }}> 36 - at:// 37 - </span> 43 + <h1 className="text-4xl font-bold mb-2"> 44 + <span className="text-gray-500 dark:text-gray-400">at://</span> 38 45 prototypey 39 46 </h1> 40 - <p 41 - style={{ 42 - fontSize: "1.125rem", 43 - color: "var(--color-text-secondary)", 44 - marginTop: "0.5rem", 45 - }} 46 - > 47 + <p className="text-lg text-gray-500 dark:text-gray-400 mt-2"> 47 48 ATProto lexicon typescript toolkit 48 49 </p> 49 50 </div> 50 - <div 51 - className="link-container" 52 - style={{ 53 - display: "flex", 54 - flexDirection: "column", 55 - alignItems: "flex-end", 56 - gap: "1rem", 57 - }} 58 - > 59 - <div className="header-links"> 60 - <a 61 - href="https://github.com/tylersayshi/prototypey" 62 - target="_blank" 63 - rel="noopener noreferrer" 64 - style={{ 65 - color: "var(--color-text-heading)", 66 - textDecoration: "none", 67 - fontSize: "1rem", 68 - fontWeight: "600", 69 - display: "flex", 70 - alignItems: "center", 71 - gap: "0.5rem", 72 - transition: "opacity 0.2s", 73 - willChange: "opacity", 74 - }} 75 - onMouseEnter={(e) => (e.currentTarget.style.opacity = "0.6")} 76 - onMouseLeave={(e) => (e.currentTarget.style.opacity = "1")} 77 - > 78 - <svg 79 - width="20" 80 - height="20" 81 - viewBox="0 0 24 24" 82 - fill="currentColor" 83 - aria-hidden="true" 84 - style={{ flexShrink: 0 }} 85 - > 86 - <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" /> 87 - </svg> 88 - github 89 - </a> 90 - <a 51 + <div className="flex flex-col items-end gap-4 w-full md:w-auto"> 52 + <div className="flex gap-5 pt-2 md:pt-0 w-full md:w-auto justify-start"> 53 + <HeaderLink 54 + href="https://github.com/tylersayshi/prototypey?tab=readme-ov-file#prototypey" 55 + icon={ 56 + <svg 57 + width="20" 58 + height="20" 59 + viewBox="0 0 24 24" 60 + fill="currentColor" 61 + aria-hidden="true" 62 + className="shrink-0" 63 + > 64 + <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" /> 65 + </svg> 66 + } 67 + label="docs" 68 + /> 69 + <HeaderLink 91 70 href="https://www.npmjs.com/package/prototypey" 92 - target="_blank" 93 - rel="noopener noreferrer" 94 - style={{ 95 - color: "var(--color-text-heading)", 96 - textDecoration: "none", 97 - fontSize: "1rem", 98 - fontWeight: "600", 99 - display: "flex", 100 - alignItems: "center", 101 - gap: "0.5rem", 102 - transition: "opacity 0.2s", 103 - willChange: "opacity", 104 - }} 105 - onMouseEnter={(e) => (e.currentTarget.style.opacity = "0.6")} 106 - onMouseLeave={(e) => (e.currentTarget.style.opacity = "1")} 107 - > 108 - <svg 109 - width="20" 110 - height="20" 111 - viewBox="0 0 24 24" 112 - fill="none" 113 - stroke="currentColor" 114 - strokeWidth="2" 115 - strokeLinecap="round" 116 - strokeLinejoin="round" 117 - aria-hidden="true" 118 - style={{ flexShrink: 0 }} 119 - > 120 - <path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" /> 121 - <polyline points="3.27 6.96 12 12.01 20.73 6.96" /> 122 - <line x1="12" y1="22.08" x2="12" y2="12" /> 123 - </svg> 124 - npm 125 - </a> 71 + icon={ 72 + <svg 73 + width="20" 74 + height="20" 75 + viewBox="0 0 24 24" 76 + fill="none" 77 + stroke="currentColor" 78 + strokeWidth="2" 79 + strokeLinecap="round" 80 + strokeLinejoin="round" 81 + aria-hidden="true" 82 + className="shrink-0" 83 + > 84 + <path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" /> 85 + <polyline points="3.27 6.96 12 12.01 20.73 6.96" /> 86 + <line x1="12" y1="22.08" x2="12" y2="12" /> 87 + </svg> 88 + } 89 + label="npm" 90 + /> 91 + <HeaderLink 92 + href="https://notes.tylur.dev/3m5a3do4eus2w" 93 + icon={ 94 + <svg 95 + width="20" 96 + height="20" 97 + viewBox="0 0 24 24" 98 + fill="none" 99 + stroke="currentColor" 100 + strokeWidth="2" 101 + strokeLinecap="round" 102 + strokeLinejoin="round" 103 + aria-hidden="true" 104 + className="shrink-0" 105 + > 106 + <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" /> 107 + <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" /> 108 + </svg> 109 + } 110 + label="story" 111 + /> 126 112 </div> 127 113 <button 128 114 onClick={handleShare} 129 - style={{ 130 - color: "var(--color-text-heading)", 131 - fontSize: "0.875rem", 132 - fontWeight: "600", 133 - display: "flex", 134 - alignItems: "center", 135 - gap: "0.5rem", 136 - transition: "background-color 0.2s, border-color 0.2s", 137 - backgroundColor: "transparent", 138 - border: "1px solid var(--color-border)", 139 - borderRadius: "0.5rem", 140 - cursor: "pointer", 141 - padding: "0.5rem 1rem", 142 - boxShadow: "none", 143 - outline: "none", 144 - flexShrink: 0, 145 - whiteSpace: "nowrap", 146 - }} 147 - onMouseEnter={(e) => { 148 - const bgColor = getComputedStyle(document.documentElement) 149 - .getPropertyValue("--color-bg-secondary") 150 - .trim(); 151 - const borderColor = getComputedStyle(document.documentElement) 152 - .getPropertyValue("--color-text-heading") 153 - .trim(); 154 - e.currentTarget.style.backgroundColor = bgColor; 155 - e.currentTarget.style.borderColor = borderColor; 156 - }} 157 - onMouseLeave={(e) => { 158 - e.currentTarget.style.backgroundColor = "transparent"; 159 - const borderColor = getComputedStyle(document.documentElement) 160 - .getPropertyValue("--color-border") 161 - .trim(); 162 - e.currentTarget.style.borderColor = borderColor; 163 - }} 115 + className="text-gray-900 dark:text-gray-100 text-sm font-semibold flex items-center gap-2 transition-all duration-200 bg-transparent border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer py-2 px-4 shadow-none outline-none shrink-0 whitespace-nowrap hover:bg-gray-50 dark:hover:bg-gray-800 hover:border-gray-900 dark:hover:border-gray-100" 164 116 aria-label="share playground" 165 117 > 166 118 {copied ? ( ··· 175 127 strokeLinecap="round" 176 128 strokeLinejoin="round" 177 129 aria-hidden="true" 178 - style={{ flexShrink: 0 }} 130 + className="shrink-0" 179 131 > 180 132 <polyline points="20 6 9 17 4 12" /> 181 133 </svg> ··· 193 145 strokeLinecap="round" 194 146 strokeLinejoin="round" 195 147 aria-hidden="true" 196 - style={{ flexShrink: 0 }} 148 + className="shrink-0" 197 149 > 198 150 <circle cx="18" cy="5" r="3" /> 199 151 <circle cx="6" cy="12" r="3" />
+4 -21
packages/site/src/components/OutputPanel.tsx
··· 27 27 }, []); 28 28 29 29 return ( 30 - <div style={{ flex: 1, display: "flex", flexDirection: "column" }}> 31 - <div 32 - style={{ 33 - padding: "0.75rem 1rem", 34 - backgroundColor: "var(--color-bg-secondary)", 35 - borderBottom: "1px solid var(--color-border)", 36 - fontSize: "0.875rem", 37 - fontWeight: "600", 38 - color: "var(--color-text-secondary)", 39 - }} 40 - > 30 + <div className="flex-1 flex flex-col"> 31 + <div className="py-3 px-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 text-sm font-semibold text-gray-500 dark:text-gray-400"> 41 32 Output 42 33 </div> 43 - <div style={{ flex: 1 }}> 34 + <div className="flex-1"> 44 35 {output.error ? ( 45 - <div 46 - style={{ 47 - padding: "1rem", 48 - color: "var(--color-error)", 49 - backgroundColor: "var(--color-error-bg)", 50 - height: "100%", 51 - overflow: "auto", 52 - }} 53 - > 36 + <div className="p-4 text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950 h-full overflow-auto"> 54 37 <strong>Error:</strong> {output.error} 55 38 </div> 56 39 ) : (
+12 -80
packages/site/src/components/Playground.tsx
··· 112 112 return ( 113 113 <> 114 114 {/* Desktop playground */} 115 - <div 116 - className="desktop-only" 117 - style={{ 118 - flex: 1, 119 - overflow: "hidden", 120 - }} 121 - > 122 - <div 123 - style={{ 124 - flex: 1, 125 - display: "flex", 126 - borderRight: "1px solid var(--color-border)", 127 - }} 128 - > 115 + <div className="hidden md:flex flex-1 overflow-hidden"> 116 + <div className="flex-1 flex border-r border-gray-200 dark:border-gray-700"> 129 117 <Editor 130 118 value={code} 131 119 onChange={handleCodeChange} 132 120 onReady={handleEditorReady} 133 121 /> 134 122 </div> 135 - <div style={{ flex: 1, display: "flex" }}> 123 + <div className="flex-1 flex"> 136 124 <OutputPanel output={output} /> 137 125 </div> 138 126 </div> 139 127 140 128 {/* Mobile static demo */} 141 - <div 142 - className="mobile-only" 143 - style={{ 144 - flex: 1, 145 - flexDirection: "column", 146 - overflow: "auto", 147 - padding: "1rem", 148 - }} 149 - > 150 - <div 151 - style={{ 152 - backgroundColor: "var(--color-bg-secondary)", 153 - padding: "1rem", 154 - borderRadius: "0.5rem", 155 - marginBottom: "1rem", 156 - textAlign: "center", 157 - color: "var(--color-text-secondary)", 158 - fontSize: "0.875rem", 159 - }} 160 - > 129 + <div className="flex md:hidden flex-1 flex-col overflow-auto p-4"> 130 + <div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg mb-4 text-center text-gray-500 dark:text-gray-400 text-sm"> 161 131 Playground available on desktop 162 132 </div> 163 133 ··· 190 160 const jsonWrappedLines = estimateWrappedLines(json, 50); 191 161 192 162 return ( 193 - <div style={{ display: "flex", flexDirection: "column", gap: "1rem" }}> 163 + <div className="flex flex-col gap-4"> 194 164 {/* You write section */} 195 - <div style={{ display: "flex", flexDirection: "column" }}> 196 - <div 197 - style={{ 198 - padding: "0.75rem 1rem", 199 - backgroundColor: "var(--color-bg-secondary)", 200 - borderBottom: "1px solid var(--color-border)", 201 - fontSize: "0.875rem", 202 - fontWeight: "600", 203 - color: "var(--color-text-secondary)", 204 - borderTopLeftRadius: "0.5rem", 205 - borderTopRightRadius: "0.5rem", 206 - }} 207 - > 165 + <div className="flex flex-col"> 166 + <div className="py-3 px-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 text-sm font-semibold text-gray-500 dark:text-gray-400 rounded-t-lg"> 208 167 You write 209 168 </div> 210 - <div 211 - style={{ 212 - border: "1px solid var(--color-border)", 213 - borderTop: "none", 214 - borderBottomLeftRadius: "0.5rem", 215 - borderBottomRightRadius: "0.5rem", 216 - overflow: "hidden", 217 - }} 218 - > 169 + <div className="border border-gray-200 dark:border-gray-700 border-t-0 rounded-b-lg overflow-hidden"> 219 170 <MonacoEditor 220 171 height={`${String(codeWrappedLines * 18 + 32)}px`} 221 172 defaultLanguage="typescript" ··· 244 195 </div> 245 196 246 197 {/* JSON generated section */} 247 - <div style={{ display: "flex", flexDirection: "column" }}> 248 - <div 249 - style={{ 250 - padding: "0.75rem 1rem", 251 - backgroundColor: "var(--color-bg-secondary)", 252 - borderBottom: "1px solid var(--color-border)", 253 - fontSize: "0.875rem", 254 - fontWeight: "600", 255 - color: "var(--color-text-secondary)", 256 - borderTopLeftRadius: "0.5rem", 257 - borderTopRightRadius: "0.5rem", 258 - }} 259 - > 198 + <div className="flex flex-col"> 199 + <div className="py-3 px-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 text-sm font-semibold text-gray-500 dark:text-gray-400 rounded-t-lg"> 260 200 JSON generated 261 201 </div> 262 - <div 263 - style={{ 264 - border: "1px solid var(--color-border)", 265 - borderTop: "none", 266 - borderBottomLeftRadius: "0.5rem", 267 - borderBottomRightRadius: "0.5rem", 268 - overflow: "hidden", 269 - }} 270 - > 202 + <div className="border border-gray-200 dark:border-gray-700 border-t-0 rounded-b-lg overflow-hidden"> 271 203 <MonacoEditor 272 204 height={`${String(jsonWrappedLines * 18 + 32)}px`} 273 205 defaultLanguage="json"
+2 -129
packages/site/src/index.css
··· 1 - /* 2 - Josh's Custom CSS Reset 3 - https://www.joshwcomeau.com/css/custom-css-reset/ 4 - */ 5 - *, 6 - *::before, 7 - *::after { 8 - box-sizing: border-box; 9 - } 10 - 11 - * { 12 - margin: 0; 13 - } 14 - 15 - body { 16 - line-height: 1.5; 17 - -webkit-font-smoothing: antialiased; 18 - } 19 - 20 - img, 21 - picture, 22 - video, 23 - canvas, 24 - svg { 25 - display: block; 26 - max-width: 100%; 27 - } 28 - 29 - input, 30 - button, 31 - textarea, 32 - select { 33 - font: inherit; 34 - } 35 - 36 - p, 37 - h1, 38 - h2, 39 - h3, 40 - h4, 41 - h5, 42 - h6 { 43 - overflow-wrap: break-word; 44 - } 45 - 46 - #root { 47 - isolation: isolate; 48 - } 1 + @import "tailwindcss"; 49 2 50 3 :root { 51 4 font-family: 52 5 -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", 53 6 "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; 54 - line-height: 1.5; 55 - font-weight: 400; 56 7 font-synthesis: none; 57 8 text-rendering: optimizeLegibility; 58 9 -webkit-font-smoothing: antialiased; 59 10 -moz-osx-font-smoothing: grayscale; 60 - 61 - --color-text: #213547; 62 - --color-text-secondary: #6b7280; 63 - --color-text-heading: #111827; 64 - --color-bg: #ffffff; 65 - --color-bg-secondary: #f9fafb; 66 - --color-border: #e5e7eb; 67 - --color-error: #dc2626; 68 - --color-error-bg: #fef2f2; 69 - 70 - color: var(--color-text); 71 - background-color: var(--color-bg); 72 - } 73 - 74 - @media (prefers-color-scheme: dark) { 75 - :root { 76 - --color-text: #e5e7eb; 77 - --color-text-secondary: #9ca3af; 78 - --color-text-heading: #f9fafb; 79 - --color-bg: #111827; 80 - --color-bg-secondary: #1f2937; 81 - --color-border: #374151; 82 - --color-error: #f87171; 83 - --color-error-bg: #3f1f1f; 84 - } 85 11 } 86 12 87 13 body { 88 - display: flex; 89 14 min-width: 320px; 90 15 min-height: 100vh; 91 16 } 92 17 93 18 #root { 94 - width: 100%; 95 - display: flex; 96 - flex-direction: column; 97 - } 98 - 99 - /* Desktop layout - default */ 100 - .header-content { 101 - display: flex; 102 - justify-content: space-between; 103 - align-items: flex-start; 104 - } 105 - 106 - .header-links { 107 - display: flex; 108 - gap: 1.25rem; 109 - padding-top: 0.5rem; 110 - } 111 - 112 - .mobile-only { 113 - display: none; 114 - } 115 - 116 - .desktop-only { 117 - display: flex; 118 - } 119 - 120 - /* Mobile layout */ 121 - @media (max-width: 768px) { 122 - .header-content { 123 - flex-direction: column; 124 - gap: 1rem; 125 - } 126 - 127 - .header-links { 128 - padding-top: 0; 129 - width: 100%; 130 - justify-content: flex-start; 131 - } 132 - 133 - .mobile-only { 134 - display: flex !important; 135 - flex-direction: column; 136 - } 137 - 138 - .desktop-only { 139 - display: none !important; 140 - } 141 - 142 - .link-container { 143 - width: 100%; 144 - flex-direction: row !important; 145 - justify-content: space-between; 146 - } 19 + isolation: isolate; 147 20 }
+2
packages/site/vite.config.ts
··· 1 1 import { defineConfig } from "vite"; 2 2 import react from "@vitejs/plugin-react"; 3 + import tailwindcss from "@tailwindcss/vite"; 3 4 4 5 export default defineConfig({ 5 6 plugins: [ 7 + tailwindcss(), 6 8 react({ 7 9 babel: { 8 10 plugins: [["babel-plugin-react-compiler", {}]],
+925 -403
pnpm-lock.yaml
··· 12 12 .: 13 13 devDependencies: 14 14 '@changesets/cli': 15 - specifier: ^2.29.7 16 - version: 2.29.7(@types/node@24.0.4) 15 + specifier: ^2.29.8 16 + version: 2.29.8(@types/node@24.0.4) 17 17 '@eslint/js': 18 18 specifier: 9.29.0 19 19 version: 9.29.0 ··· 21 21 specifier: 9.29.0 22 22 version: 9.29.0(jiti@2.6.1) 23 23 knip: 24 - specifier: ^5.66.2 25 - version: 5.66.2(@types/node@24.0.4)(typescript@5.8.3) 24 + specifier: ^5.83.1 25 + version: 5.83.1(@types/node@24.0.4)(typescript@5.9.3) 26 26 prettier: 27 27 specifier: 3.6.1 28 28 version: 3.6.1 29 29 typescript-eslint: 30 30 specifier: 8.35.0 31 - version: 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 31 + version: 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 32 32 33 33 packages/prototypey: 34 34 dependencies: 35 35 '@atproto/lexicon': 36 - specifier: ^0.5.1 37 - version: 0.5.1 36 + specifier: ^0.5.2 37 + version: 0.5.2 38 38 sade: 39 39 specifier: ^1.8.1 40 40 version: 1.8.1 ··· 44 44 devDependencies: 45 45 '@ark/attest': 46 46 specifier: ^0.49.0 47 - version: 0.49.0(typescript@5.8.3) 47 + version: 0.49.0(typescript@5.9.3) 48 48 '@types/node': 49 49 specifier: 24.0.4 50 50 version: 24.0.4 51 51 tsdown: 52 - specifier: 0.12.7 53 - version: 0.12.7(oxc-resolver@11.11.1)(typescript@5.8.3) 52 + specifier: ^0.15.12 53 + version: 0.15.12(ms@2.1.3)(oxc-resolver@11.15.0)(typescript@5.9.3) 54 54 typescript: 55 - specifier: 5.8.3 56 - version: 5.8.3 55 + specifier: 5.9.3 56 + version: 5.9.3 57 57 vitest: 58 58 specifier: ^3.2.4 59 59 version: 3.2.4(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1)(jsdom@25.0.1) ··· 61 61 packages/site: 62 62 dependencies: 63 63 '@monaco-editor/react': 64 - specifier: ^4.6.0 65 - version: 4.7.0(monaco-editor@0.52.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 64 + specifier: ^4.7.0 65 + version: 4.7.0(monaco-editor@0.52.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 66 66 lz-string: 67 67 specifier: ^1.5.0 68 68 version: 1.5.0 ··· 70 70 specifier: 0.52.0 71 71 version: 0.52.0 72 72 nuqs: 73 - specifier: ^2.7.2 74 - version: 2.7.2(react@19.2.0) 73 + specifier: ^2.8.8 74 + version: 2.8.8(react@19.2.4) 75 75 prototypey: 76 76 specifier: workspace:* 77 77 version: link:../prototypey 78 78 react: 79 - specifier: ^19.2.0 80 - version: 19.2.0 79 + specifier: ^19.2.4 80 + version: 19.2.4 81 81 react-dom: 82 - specifier: ^19.2.0 83 - version: 19.2.0(react@19.2.0) 82 + specifier: ^19.2.4 83 + version: 19.2.4(react@19.2.4) 84 84 devDependencies: 85 + '@tailwindcss/vite': 86 + specifier: ^4.1.18 87 + version: 4.1.18(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1)) 85 88 '@testing-library/jest-dom': 86 89 specifier: ^6.9.1 87 90 version: 6.9.1 88 91 '@testing-library/react': 89 - specifier: ^16.1.0 90 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 92 + specifier: ^16.3.2 93 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 91 94 '@testing-library/user-event': 92 - specifier: ^14.5.2 95 + specifier: ^14.6.1 93 96 version: 14.6.1(@testing-library/dom@10.4.1) 94 97 '@types/react': 95 - specifier: ^19.2.2 96 - version: 19.2.2 98 + specifier: ^19.2.13 99 + version: 19.2.13 97 100 '@types/react-dom': 98 - specifier: ^19.2.2 99 - version: 19.2.2(@types/react@19.2.2) 101 + specifier: ^19.2.3 102 + version: 19.2.3(@types/react@19.2.13) 100 103 '@vitejs/plugin-react': 101 - specifier: ^5.0.4 102 - version: 5.0.4(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1)) 104 + specifier: ^5.1.3 105 + version: 5.1.3(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1)) 103 106 babel-plugin-react-compiler: 104 107 specifier: ^1.0.0 105 108 version: 1.0.0 ··· 109 112 jsdom: 110 113 specifier: ^25.0.1 111 114 version: 25.0.1 115 + tailwindcss: 116 + specifier: ^4.1.18 117 + version: 4.1.18 112 118 typescript: 113 - specifier: 5.8.3 114 - version: 5.8.3 119 + specifier: 5.9.3 120 + version: 5.9.3 115 121 vite: 116 122 specifier: npm:rolldown-vite@7.0.6 117 123 version: rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1) ··· 142 148 '@asamuzakjp/css-color@3.2.0': 143 149 resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} 144 150 145 - '@atproto/common-web@0.4.3': 146 - resolution: {integrity: sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==} 151 + '@atproto/common-web@0.4.5': 152 + resolution: {integrity: sha512-Tx0xUafLm3vRvOQpbBl5eb9V8xlC7TaRXs6dAulHRkDG3Kb+P9qn3pkDteq+aeMshbVXbVa1rm3Ok4vFyuoyYA==} 153 + 154 + '@atproto/lex-data@0.0.1': 155 + resolution: {integrity: sha512-DrS/8cQcQs3s5t9ELAFNtyDZ8/PdiCx47ALtFEP2GnX2uCBHZRkqWG7xmu6ehjc787nsFzZBvlnz3T/gov5fGA==} 156 + 157 + '@atproto/lex-json@0.0.1': 158 + resolution: {integrity: sha512-ivcF7+pDRuD/P97IEKQ/9TruunXj0w58Khvwk3M6psaI5eZT6LRsRZ4cWcKaXiFX4SHnjy+x43g0f7pPtIsERg==} 147 159 148 - '@atproto/lexicon@0.5.1': 149 - resolution: {integrity: sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A==} 160 + '@atproto/lexicon@0.5.2': 161 + resolution: {integrity: sha512-lRmJgMA8f5j7VB5Iu5cp188ald5FuI4FlmZ7nn6EBrk1dgOstWVrI5Ft6K3z2vjyLZRG6nzknlsw+tDP63p7bQ==} 150 162 151 163 '@atproto/syntax@0.4.1': 152 164 resolution: {integrity: sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==} ··· 155 167 resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 156 168 engines: {node: '>=6.9.0'} 157 169 170 + '@babel/code-frame@7.29.0': 171 + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} 172 + engines: {node: '>=6.9.0'} 173 + 158 174 '@babel/compat-data@7.28.4': 159 175 resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} 160 176 engines: {node: '>=6.9.0'} 161 177 178 + '@babel/compat-data@7.29.0': 179 + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} 180 + engines: {node: '>=6.9.0'} 181 + 162 182 '@babel/core@7.28.4': 163 183 resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} 184 + engines: {node: '>=6.9.0'} 185 + 186 + '@babel/core@7.29.0': 187 + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} 164 188 engines: {node: '>=6.9.0'} 165 189 166 190 '@babel/generator@7.28.3': 167 191 resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 168 192 engines: {node: '>=6.9.0'} 169 193 194 + '@babel/generator@7.28.5': 195 + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 196 + engines: {node: '>=6.9.0'} 197 + 198 + '@babel/generator@7.29.1': 199 + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} 200 + engines: {node: '>=6.9.0'} 201 + 170 202 '@babel/helper-annotate-as-pure@7.27.3': 171 203 resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} 172 204 engines: {node: '>=6.9.0'} ··· 175 207 resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 176 208 engines: {node: '>=6.9.0'} 177 209 210 + '@babel/helper-compilation-targets@7.28.6': 211 + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} 212 + engines: {node: '>=6.9.0'} 213 + 178 214 '@babel/helper-create-class-features-plugin@7.28.3': 179 215 resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} 180 216 engines: {node: '>=6.9.0'} ··· 193 229 resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 194 230 engines: {node: '>=6.9.0'} 195 231 232 + '@babel/helper-module-imports@7.28.6': 233 + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} 234 + engines: {node: '>=6.9.0'} 235 + 196 236 '@babel/helper-module-transforms@7.28.3': 197 237 resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 198 238 engines: {node: '>=6.9.0'} 199 239 peerDependencies: 200 240 '@babel/core': ^7.0.0 201 241 242 + '@babel/helper-module-transforms@7.28.6': 243 + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} 244 + engines: {node: '>=6.9.0'} 245 + peerDependencies: 246 + '@babel/core': ^7.0.0 247 + 202 248 '@babel/helper-optimise-call-expression@7.27.1': 203 249 resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} 204 250 engines: {node: '>=6.9.0'} ··· 225 271 resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 226 272 engines: {node: '>=6.9.0'} 227 273 274 + '@babel/helper-validator-identifier@7.28.5': 275 + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 276 + engines: {node: '>=6.9.0'} 277 + 228 278 '@babel/helper-validator-option@7.27.1': 229 279 resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 230 280 engines: {node: '>=6.9.0'} ··· 233 283 resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} 234 284 engines: {node: '>=6.9.0'} 235 285 286 + '@babel/helpers@7.28.6': 287 + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} 288 + engines: {node: '>=6.9.0'} 289 + 236 290 '@babel/parser@7.28.4': 237 291 resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} 238 292 engines: {node: '>=6.0.0'} 239 293 hasBin: true 240 294 295 + '@babel/parser@7.28.5': 296 + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 297 + engines: {node: '>=6.0.0'} 298 + hasBin: true 299 + 300 + '@babel/parser@7.29.0': 301 + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} 302 + engines: {node: '>=6.0.0'} 303 + hasBin: true 304 + 241 305 '@babel/plugin-proposal-private-methods@7.18.6': 242 306 resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} 243 307 engines: {node: '>=6.9.0'} ··· 265 329 resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 266 330 engines: {node: '>=6.9.0'} 267 331 332 + '@babel/template@7.28.6': 333 + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} 334 + engines: {node: '>=6.9.0'} 335 + 268 336 '@babel/traverse@7.28.4': 269 337 resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} 270 338 engines: {node: '>=6.9.0'} 271 339 340 + '@babel/traverse@7.29.0': 341 + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} 342 + engines: {node: '>=6.9.0'} 343 + 272 344 '@babel/types@7.28.4': 273 345 resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} 274 346 engines: {node: '>=6.9.0'} 275 347 276 - '@changesets/apply-release-plan@7.0.13': 277 - resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} 348 + '@babel/types@7.28.5': 349 + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 350 + engines: {node: '>=6.9.0'} 351 + 352 + '@babel/types@7.29.0': 353 + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} 354 + engines: {node: '>=6.9.0'} 355 + 356 + '@changesets/apply-release-plan@7.0.14': 357 + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} 278 358 279 359 '@changesets/assemble-release-plan@6.0.9': 280 360 resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} ··· 282 362 '@changesets/changelog-git@0.2.1': 283 363 resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} 284 364 285 - '@changesets/cli@2.29.7': 286 - resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} 365 + '@changesets/cli@2.29.8': 366 + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} 287 367 hasBin: true 288 368 289 - '@changesets/config@3.1.1': 290 - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} 369 + '@changesets/config@3.1.2': 370 + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} 291 371 292 372 '@changesets/errors@0.2.0': 293 373 resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} ··· 295 375 '@changesets/get-dependents-graph@2.1.3': 296 376 resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} 297 377 298 - '@changesets/get-release-plan@4.0.13': 299 - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} 378 + '@changesets/get-release-plan@4.0.14': 379 + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} 300 380 301 381 '@changesets/get-version-range-type@0.4.0': 302 382 resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} ··· 307 387 '@changesets/logger@0.1.1': 308 388 resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 309 389 310 - '@changesets/parse@0.4.1': 311 - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} 390 + '@changesets/parse@0.4.2': 391 + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} 312 392 313 393 '@changesets/pre@2.0.2': 314 394 resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 315 395 316 - '@changesets/read@0.6.5': 317 - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} 396 + '@changesets/read@0.6.6': 397 + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} 318 398 319 399 '@changesets/should-skip-package@0.1.2': 320 400 resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} ··· 359 439 '@emnapi/core@1.5.0': 360 440 resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} 361 441 442 + '@emnapi/core@1.7.1': 443 + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} 444 + 362 445 '@emnapi/runtime@1.5.0': 363 446 resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} 447 + 448 + '@emnapi/runtime@1.7.1': 449 + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} 364 450 365 451 '@emnapi/wasi-threads@1.1.0': 366 452 resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} ··· 626 712 '@napi-rs/wasm-runtime@1.0.7': 627 713 resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} 628 714 715 + '@napi-rs/wasm-runtime@1.1.0': 716 + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} 717 + 629 718 '@nodelib/fs.scandir@2.1.5': 630 719 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 631 720 engines: {node: '>= 8'} ··· 638 727 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 639 728 engines: {node: '>= 8'} 640 729 641 - '@oxc-project/runtime@0.72.2': 642 - resolution: {integrity: sha512-J2lsPDen2mFs3cOA1gIBd0wsHEhum2vTnuKIRwmj3HJJcIz/XgeNdzvgSOioIXOJgURIpcDaK05jwaDG1rhDwg==} 643 - engines: {node: '>=6.9.0'} 644 - 645 730 '@oxc-project/runtime@0.75.0': 646 731 resolution: {integrity: sha512-gzRmVI/vorsPmbDXt7GD4Uh2lD3rCOku/1xWPB4Yx48k0EP4TZmzQudWapjN4+7Vv+rgXr0RqCHQadeaMvdBuw==} 647 732 engines: {node: '>=6.9.0'} ··· 650 735 resolution: {integrity: sha512-UH07DRi7xXqAsJ/sFbJJg0liIXnapB6P5uADXIiF1s6WQjZzcTIkKHca0s522QVxmijPxVX5ijCYxSr7eSq5CQ==} 651 736 engines: {node: '>=6.9.0'} 652 737 653 - '@oxc-project/types@0.72.2': 654 - resolution: {integrity: sha512-il5RF8AP85XC0CMjHF4cnVT9nT/v/ocm6qlZQpSiAR9qBbQMGkFKloBZwm7PcnOdiUX97yHgsKM7uDCCWCu3tg==} 655 - 656 738 '@oxc-project/types@0.75.1': 657 739 resolution: {integrity: sha512-7ZJy+51qWpZRvynaQUezeYfjCtaSdiXIWFUZIlOuTSfDXpXqnSl/m1IUPLx6XrOy6s0SFv3CLE14vcZy63bz7g==} 658 740 659 - '@oxc-resolver/binding-android-arm-eabi@11.11.1': 660 - resolution: {integrity: sha512-v5rtczLD5d8lasBdP6GXoM7VQ1Av9pZyWGXF5afQawRZcWTVvncrIzu9nhKpvIhhmC4C6MYdXA3CNZc60LvUig==} 741 + '@oxc-project/types@0.95.0': 742 + resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} 743 + 744 + '@oxc-resolver/binding-android-arm-eabi@11.15.0': 745 + resolution: {integrity: sha512-Q+lWuFfq7whNelNJIP1dhXaVz4zO9Tu77GcQHyxDWh3MaCoO2Bisphgzmsh4ZoUe2zIchQh6OvQL99GlWHg9Tw==} 661 746 cpu: [arm] 662 747 os: [android] 663 748 664 - '@oxc-resolver/binding-android-arm64@11.11.1': 665 - resolution: {integrity: sha512-0QqKsM8/XRNDGZy1/rxys53U/aCLVBKV2jgGFr3msypTZtNH/d4qao7QULM++H4hcaXghfXaB4xVCPDg3tHCvQ==} 749 + '@oxc-resolver/binding-android-arm64@11.15.0': 750 + resolution: {integrity: sha512-vbdBttesHR0W1oJaxgWVTboyMUuu+VnPsHXJ6jrXf4czELzB6GIg5DrmlyhAmFBhjwov+yJH/DfTnHS+2sDgOw==} 666 751 cpu: [arm64] 667 752 os: [android] 668 753 669 - '@oxc-resolver/binding-darwin-arm64@11.11.1': 670 - resolution: {integrity: sha512-xdHj8Mn3WB+dTGWcMzC07pZiSvQfKxcCEIlmDGrwwLmS4MgyJcraDDykFg4NXwd8dJNKOLqEfV3RMLRYgE2f8w==} 754 + '@oxc-resolver/binding-darwin-arm64@11.15.0': 755 + resolution: {integrity: sha512-R67lsOe1UzNjqVBCwCZX1rlItTsj/cVtBw4Uy19CvTicqEWvwaTn8t34zLD75LQwDDPCY3C8n7NbD+LIdw+ZoA==} 671 756 cpu: [arm64] 672 757 os: [darwin] 673 758 674 - '@oxc-resolver/binding-darwin-x64@11.11.1': 675 - resolution: {integrity: sha512-t9ImHoJXhFimPx3u0UMbQzADUBq/xnQY1eGc3bfOu5l4h0k/3rlsO16Fe8dheG8Iuvc3j2lh8H8dFg/Los4WeQ==} 759 + '@oxc-resolver/binding-darwin-x64@11.15.0': 760 + resolution: {integrity: sha512-77mya5F8WV0EtCxI0MlVZcqkYlaQpfNwl/tZlfg4jRsoLpFbaTeWv75hFm6TE84WULVlJtSgvf7DhoWBxp9+ZQ==} 676 761 cpu: [x64] 677 762 os: [darwin] 678 763 679 - '@oxc-resolver/binding-freebsd-x64@11.11.1': 680 - resolution: {integrity: sha512-aK7b1Yr2VkC2efK0w63v7gZkCqYmhR4XTCCYgA5KbtpJVg1OwFXVRjO1vfWNn5osk9dNpaIdeo3C1IfWPhW68w==} 764 + '@oxc-resolver/binding-freebsd-x64@11.15.0': 765 + resolution: {integrity: sha512-X1Sz7m5PC+6D3KWIDXMUtux+0Imj6HfHGdBStSvgdI60OravzI1t83eyn6eN0LPTrynuPrUgjk7tOnOsBzSWHw==} 681 766 cpu: [x64] 682 767 os: [freebsd] 683 768 684 - '@oxc-resolver/binding-linux-arm-gnueabihf@11.11.1': 685 - resolution: {integrity: sha512-9wHEYo+1VLoCjX4iI29ZR2ExdcGbG8JlmSR0aRW/A/NuzKxFB+bfiPkwUrvdSv7syXS8CrixvLdqAkBoXgk/rQ==} 769 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': 770 + resolution: {integrity: sha512-L1x/wCaIRre+18I4cH/lTqSAymlV0k4HqfSYNNuI9oeL28Ks86lI6O5VfYL6sxxWYgjuWB98gNGo7tq7d4GarQ==} 686 771 cpu: [arm] 687 772 os: [linux] 688 773 689 - '@oxc-resolver/binding-linux-arm-musleabihf@11.11.1': 690 - resolution: {integrity: sha512-Mf8wZJEeGAQ1WAwp6nvtxucYAQDDtj9Qhv1BaQS8SbeR3na203RUFdEm6F5ptWzF8cuY+ye+FsGKr8lKG3pvWg==} 774 + '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': 775 + resolution: {integrity: sha512-abGXd/zMGa0tH8nKlAXdOnRy4G7jZmkU0J85kMKWns161bxIgGn/j7zxqh3DKEW98wAzzU9GofZMJ0P5YCVPVw==} 691 776 cpu: [arm] 692 777 os: [linux] 693 778 694 - '@oxc-resolver/binding-linux-arm64-gnu@11.11.1': 695 - resolution: {integrity: sha512-Fk8BrFBfKzUveCEAXZ6kDhyc5RLWIWOI0+UZGp1G3WQIFo9HDEqnYtsOtUbzLtjifbyMhtaTteElRSGNKTJ3nA==} 779 + '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': 780 + resolution: {integrity: sha512-SVjjjtMW66Mza76PBGJLqB0KKyFTBnxmtDXLJPbL6ZPGSctcXVmujz7/WAc0rb9m2oV0cHQTtVjnq6orQnI/jg==} 696 781 cpu: [arm64] 697 782 os: [linux] 783 + libc: [glibc] 698 784 699 - '@oxc-resolver/binding-linux-arm64-musl@11.11.1': 700 - resolution: {integrity: sha512-jbsO1/VTDRb5FAvWnxEIFOnFHA7dALBn5HPdxdoAbnuvjgjIPYMVvTFEBPNLz3BSFxWdounZasZDYYFhBhFzmQ==} 785 + '@oxc-resolver/binding-linux-arm64-musl@11.15.0': 786 + resolution: {integrity: sha512-JDv2/AycPF2qgzEiDeMJCcSzKNDm3KxNg0KKWipoKEMDFqfM7LxNwwSVyAOGmrYlE4l3dg290hOMsr9xG7jv9g==} 701 787 cpu: [arm64] 702 788 os: [linux] 789 + libc: [musl] 703 790 704 - '@oxc-resolver/binding-linux-ppc64-gnu@11.11.1': 705 - resolution: {integrity: sha512-+aY2AjUQkByiOtKUU0RyqB7VV7HIh3SMBh54/9nzUbHN5RiF0As5DApV/IwbQjB2oKc0VywQZzE+/Wj/Ijvd/Q==} 791 + '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': 792 + resolution: {integrity: sha512-zbu9FhvBLW4KJxo7ElFvZWbSt4vP685Qc/Gyk/Ns3g2gR9qh2qWXouH8PWySy+Ko/qJ42+HJCLg+ZNcxikERfg==} 706 793 cpu: [ppc64] 707 794 os: [linux] 795 + libc: [glibc] 708 796 709 - '@oxc-resolver/binding-linux-riscv64-gnu@11.11.1': 710 - resolution: {integrity: sha512-HqBogCmIl344en3EAhC9vSm/h52fb5BA0eFxsgsH9HgwYY6qH4th4msBqBAiMRCKcC6hVwjh0fmzHgST2rx4Cw==} 797 + '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': 798 + resolution: {integrity: sha512-Kfleehe6B09C2qCnyIU01xLFqFXCHI4ylzkicfX/89j+gNHh9xyNdpEvit88Kq6i5tTGdavVnM6DQfOE2qNtlg==} 711 799 cpu: [riscv64] 712 800 os: [linux] 801 + libc: [glibc] 713 802 714 - '@oxc-resolver/binding-linux-riscv64-musl@11.11.1': 715 - resolution: {integrity: sha512-9dXyIMQMrh76WyMtNDJhsRYqc6KDsQe3/ja9fAPBk28p7kltEvZvHpivq1Xa8Ca/JCa8QgTROgLInChNEF27bQ==} 803 + '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': 804 + resolution: {integrity: sha512-J7LPiEt27Tpm8P+qURDwNc8q45+n+mWgyys4/V6r5A8v5gDentHRGUx3iVk5NxdKhgoGulrzQocPTZVosq25Eg==} 716 805 cpu: [riscv64] 717 806 os: [linux] 807 + libc: [musl] 718 808 719 - '@oxc-resolver/binding-linux-s390x-gnu@11.11.1': 720 - resolution: {integrity: sha512-Ybp/bSJmnl0sr8zh+nIz0cpU077tDZDYRYDhZiWN+f7rcWF7D8Z/pKD9zPxRocvJieZGfzrIwmHiHf9eY47P9w==} 809 + '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': 810 + resolution: {integrity: sha512-+8/d2tAScPjVJNyqa7GPGnqleTB/XW9dZJQ2D/oIM3wpH3TG+DaFEXBbk4QFJ9K9AUGBhvQvWU2mQyhK/yYn3Q==} 721 811 cpu: [s390x] 722 812 os: [linux] 813 + libc: [glibc] 723 814 724 - '@oxc-resolver/binding-linux-x64-gnu@11.11.1': 725 - resolution: {integrity: sha512-uVWj/UI6+l5/CeV2d4XpjycJNDkk/JfxNzQLAFCsVl5ZbrIfWQ9TzEzAi7xsDgVZYLBuL7iSowQ7YYRp1LQZlA==} 815 + '@oxc-resolver/binding-linux-x64-gnu@11.15.0': 816 + resolution: {integrity: sha512-xtvSzH7Nr5MCZI2FKImmOdTl9kzuQ51RPyLh451tvD2qnkg3BaqI9Ox78bTk57YJhlXPuxWSOL5aZhKAc9J6qg==} 726 817 cpu: [x64] 727 818 os: [linux] 819 + libc: [glibc] 728 820 729 - '@oxc-resolver/binding-linux-x64-musl@11.11.1': 730 - resolution: {integrity: sha512-Q9kQmiZn4bNnCOqPHvdF4bHdKXBa7Ow6yfeKTWPNOHyoZXdyxIu5C+3jSjo+SJiFNhmnh0hEAN8om6GEuJEYCA==} 821 + '@oxc-resolver/binding-linux-x64-musl@11.15.0': 822 + resolution: {integrity: sha512-14YL1zuXj06+/tqsuUZuzL0T425WA/I4nSVN1kBXeC5WHxem6lQ+2HGvG+crjeJEqHgZUT62YIgj88W+8E7eyg==} 731 823 cpu: [x64] 732 824 os: [linux] 825 + libc: [musl] 733 826 734 - '@oxc-resolver/binding-wasm32-wasi@11.11.1': 735 - resolution: {integrity: sha512-skGIwjoRwEh2qFIaG/wwa74i5KcoWNTEy1ycB6qdRV+OOSlkosVFIzXPYzjcuwtIL1M6pC7+M+56TgQQEzOUmw==} 827 + '@oxc-resolver/binding-openharmony-arm64@11.15.0': 828 + resolution: {integrity: sha512-/7Qli+1Wk93coxnrQaU8ySlICYN8HsgyIrzqjgIkQEpI//9eUeaeIHZptNl2fMvBGeXa7k2QgLbRNaBRgpnvMw==} 829 + cpu: [arm64] 830 + os: [openharmony] 831 + 832 + '@oxc-resolver/binding-wasm32-wasi@11.15.0': 833 + resolution: {integrity: sha512-q5rn2eIMQLuc/AVGR2rQKb2EVlgreATGG8xXg8f4XbbYCVgpxaq+dgMbiPStyNywW1MH8VU2T09UEm30UtOQvg==} 736 834 engines: {node: '>=14.0.0'} 737 835 cpu: [wasm32] 738 836 739 - '@oxc-resolver/binding-win32-arm64-msvc@11.11.1': 740 - resolution: {integrity: sha512-5R2GVH44JXGoI+gVlR4+O3ql6KZICQlCmIB0ZbpiYbEHNxaB47v3aSMVxcCuwhYKndJUJZwRXnYzoCfMEu4o0g==} 837 + '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': 838 + resolution: {integrity: sha512-yCAh2RWjU/8wWTxQDgGPgzV9QBv0/Ojb5ej1c/58iOjyTuy/J1ZQtYi2SpULjKmwIxLJdTiCHpMilauWimE31w==} 741 839 cpu: [arm64] 742 840 os: [win32] 743 841 744 - '@oxc-resolver/binding-win32-ia32-msvc@11.11.1': 745 - resolution: {integrity: sha512-iB/ljDyPJCMIO7WPx2bj8fRCB1TxmHSv/t3oyUwOiz79Q0A33QbwZWhdx+ZXdazGPer71mYZfr3eb0hAnmlgrg==} 842 + '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': 843 + resolution: {integrity: sha512-lmXKb6lvA6M6QIbtYfgjd+AryJqExZVSY2bfECC18OPu7Lv1mHFF171Mai5l9hG3r4IhHPPIwT10EHoilSCYeA==} 746 844 cpu: [ia32] 747 845 os: [win32] 748 846 749 - '@oxc-resolver/binding-win32-x64-msvc@11.11.1': 750 - resolution: {integrity: sha512-OtUpzpStS5bgVGXV7eaBr7Spot9lXu/wyd0yWEyoG2tyzm/bwdRKCwJQzxWIhlecRxMDGA+qlLRRicTNOejkSQ==} 847 + '@oxc-resolver/binding-win32-x64-msvc@11.15.0': 848 + resolution: {integrity: sha512-HZsfne0s/tGOcJK9ZdTGxsNU2P/dH0Shf0jqrPvsC6wX0Wk+6AyhSpHFLQCnLOuFQiHHU0ePfM8iYsoJb5hHpQ==} 751 849 cpu: [x64] 752 850 os: [win32] 753 851 ··· 759 857 '@quansync/fs@0.1.5': 760 858 resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} 761 859 762 - '@rolldown/binding-darwin-arm64@1.0.0-beta.11-commit.f051675': 763 - resolution: {integrity: sha512-Hlt/h+lOJ+ksC2wED2M9Hku/9CA2Hr17ENK82gNMmi3OqwcZLdZFqJDpASTli65wIOeT4p9rIUMdkfshCoJpYA==} 860 + '@rolldown/binding-android-arm64@1.0.0-beta.45': 861 + resolution: {integrity: sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==} 862 + engines: {node: ^20.19.0 || >=22.12.0} 764 863 cpu: [arm64] 765 - os: [darwin] 864 + os: [android] 766 865 767 866 '@rolldown/binding-darwin-arm64@1.0.0-beta.24': 768 867 resolution: {integrity: sha512-gE4HGjIioZaMGZupq2zQQdqhlRV2b2qnjFHHkJEW50zVDmiVNWwdHjwvZDPx9JfW5y4GuHgp/zKDLZZbJlQ1/Q==} 769 868 cpu: [arm64] 770 869 os: [darwin] 771 870 772 - '@rolldown/binding-darwin-x64@1.0.0-beta.11-commit.f051675': 773 - resolution: {integrity: sha512-Bnst+HBwhW2YrNybEiNf9TJkI1myDgXmiPBVIOS0apzrLCmByzei6PilTClOpTpNFYB+UviL3Ox2gKUmcgUjGw==} 774 - cpu: [x64] 871 + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': 872 + resolution: {integrity: sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==} 873 + engines: {node: ^20.19.0 || >=22.12.0} 874 + cpu: [arm64] 775 875 os: [darwin] 776 876 777 877 '@rolldown/binding-darwin-x64@1.0.0-beta.24': ··· 779 879 cpu: [x64] 780 880 os: [darwin] 781 881 782 - '@rolldown/binding-freebsd-x64@1.0.0-beta.11-commit.f051675': 783 - resolution: {integrity: sha512-3jAxVmYDPc8vMZZOfZI1aokGB9cP6VNeU9XNCx0UJ6ShlSPK3qkAa0sWgueMhaQkgBVf8MOfGpjo47ohGd7QrA==} 882 + '@rolldown/binding-darwin-x64@1.0.0-beta.45': 883 + resolution: {integrity: sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==} 884 + engines: {node: ^20.19.0 || >=22.12.0} 784 885 cpu: [x64] 785 - os: [freebsd] 886 + os: [darwin] 786 887 787 888 '@rolldown/binding-freebsd-x64@1.0.0-beta.24': 788 889 resolution: {integrity: sha512-lx3Q2TU2bbY4yDCZ6e+Wiom3VMLFlZmQswx/1CyjFd+Vv3Q+99SZm6CSfNAIZBaWD246yQRRr1Vx+iIoWCdYzQ==} 789 890 cpu: [x64] 790 891 os: [freebsd] 791 892 792 - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.11-commit.f051675': 793 - resolution: {integrity: sha512-TpUltUdvcsAf2WvXXD8AVc3BozvhgazJ2gJLXp4DVV2V82m26QelI373Bzx8d/4hB167EEIg4wWW/7GXB/ltoQ==} 794 - cpu: [arm] 795 - os: [linux] 893 + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': 894 + resolution: {integrity: sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==} 895 + engines: {node: ^20.19.0 || >=22.12.0} 896 + cpu: [x64] 897 + os: [freebsd] 796 898 797 899 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.24': 798 900 resolution: {integrity: sha512-PLtsV6uf3uS1/cNF8Wu/kitTpXT2YpOZbN6VJm7oMi5A8o5oO0vh8STCB71O5k2kwQMVycsmxHWFk2ZyEa6aMw==} 799 901 cpu: [arm] 800 902 os: [linux] 801 903 802 - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.11-commit.f051675': 803 - resolution: {integrity: sha512-eGvHnYQSdbdhsTdjdp/+83LrN81/7X9HD6y3jg7mEmdsicxEMEIt6CsP7tvYS/jn4489jgO/6mLxW/7Vg+B8pw==} 804 - cpu: [arm64] 904 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': 905 + resolution: {integrity: sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==} 906 + engines: {node: ^20.19.0 || >=22.12.0} 907 + cpu: [arm] 805 908 os: [linux] 806 909 807 910 '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.24': 808 911 resolution: {integrity: sha512-UxGukDkWnv7uS5R+BPVeJ4FSuwA+lgC62LRsyPPSJhJhKMNGZ2W9sQPIpEtBRlww8t0qR6QBsiD5TGLW98ktGw==} 809 912 cpu: [arm64] 810 913 os: [linux] 914 + libc: [glibc] 811 915 812 - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.11-commit.f051675': 813 - resolution: {integrity: sha512-0NJZWXJls83FpBRzkTbGBsXXstaQLsfodnyeOghxbnNdsjn+B4dcNPpMK5V3QDsjC0pNjDLaDdzB2jWKlZbP/Q==} 916 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': 917 + resolution: {integrity: sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==} 918 + engines: {node: ^20.19.0 || >=22.12.0} 814 919 cpu: [arm64] 815 920 os: [linux] 921 + libc: [glibc] 816 922 817 923 '@rolldown/binding-linux-arm64-musl@1.0.0-beta.24': 818 924 resolution: {integrity: sha512-vB99yGYW9FOQe4lk3MNKa13+vRj+7waZFlRE3Ba/IpEy7RFxZ78ASkPLXkz4+kYYbUvMnRaOfk9RKX2fqYZRUg==} 819 925 cpu: [arm64] 820 926 os: [linux] 927 + libc: [musl] 821 928 822 - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.11-commit.f051675': 823 - resolution: {integrity: sha512-9vXnu27r4zgS/BHP6RCLBOrJoV2xxtLYHT68IVpSOdCkBHGpf1oOJt6blv1y5NRRJBEfAFCvj5NmwSMhETF96w==} 824 - cpu: [x64] 929 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': 930 + resolution: {integrity: sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==} 931 + engines: {node: ^20.19.0 || >=22.12.0} 932 + cpu: [arm64] 825 933 os: [linux] 934 + libc: [musl] 826 935 827 936 '@rolldown/binding-linux-x64-gnu@1.0.0-beta.24': 828 937 resolution: {integrity: sha512-fAMZBWutuKWHsyvHVsKjFYRXVgTbzBfNmomzPPpog8UtdkHk5Vnb0qVEeZP4hR4TsXnKfzD2EQ98NRqFej5QYA==} 829 938 cpu: [x64] 830 939 os: [linux] 940 + libc: [glibc] 831 941 832 - '@rolldown/binding-linux-x64-musl@1.0.0-beta.11-commit.f051675': 833 - resolution: {integrity: sha512-e6tvsZbtHt4kzl82oCajOUxwIN8uMfjhuQ0qxIVRzPekRRjKEzyH9agYPW6toN0cnHpkhPsu51tyZKJOdUl7jg==} 942 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': 943 + resolution: {integrity: sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==} 944 + engines: {node: ^20.19.0 || >=22.12.0} 834 945 cpu: [x64] 835 946 os: [linux] 947 + libc: [glibc] 836 948 837 949 '@rolldown/binding-linux-x64-musl@1.0.0-beta.24': 838 950 resolution: {integrity: sha512-0UY/Qo8fAlpolcWOg2ZU7SCUrsCJWifdRMliV9GXlZaBKbMoVNFw0pHGDm9cj/3TWhJu/iB0peZK00dm22LlNw==} 839 951 cpu: [x64] 840 952 os: [linux] 953 + libc: [musl] 841 954 842 - '@rolldown/binding-wasm32-wasi@1.0.0-beta.11-commit.f051675': 843 - resolution: {integrity: sha512-nBQVizPoUQiViANhWrOyihXNf2booP2iq3S396bI1tmHftdgUXWKa6yAoleJBgP0oF0idXpTPU82ciaROUcjpg==} 844 - engines: {node: '>=14.21.3'} 845 - cpu: [wasm32] 955 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': 956 + resolution: {integrity: sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==} 957 + engines: {node: ^20.19.0 || >=22.12.0} 958 + cpu: [x64] 959 + os: [linux] 960 + libc: [musl] 961 + 962 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': 963 + resolution: {integrity: sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==} 964 + engines: {node: ^20.19.0 || >=22.12.0} 965 + cpu: [arm64] 966 + os: [openharmony] 846 967 847 968 '@rolldown/binding-wasm32-wasi@1.0.0-beta.24': 848 969 resolution: {integrity: sha512-7ubbtKCo6FBuAM4q6LoT5dOea7f/zj9OYXgumbwSmA0fw18mN5h8SrFTUjl7h9MpPkOyhi2uY6ss4pb39KXkcw==} 849 970 engines: {node: '>=14.21.3'} 850 971 cpu: [wasm32] 851 972 852 - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.11-commit.f051675': 853 - resolution: {integrity: sha512-Rey/ECXKI/UEykrKfJX3oVAPXDH2k1p2BKzYGza0z3S2X5I3sTDOeBn2I0IQgyyf7U3+DCBhYjkDFnmSePrU/A==} 854 - cpu: [arm64] 855 - os: [win32] 973 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': 974 + resolution: {integrity: sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==} 975 + engines: {node: '>=14.0.0'} 976 + cpu: [wasm32] 856 977 857 978 '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.24': 858 979 resolution: {integrity: sha512-S5WKIabtRBJyzu31KnJRlbZRR6FMrTMzYRrNTnIY2hWWXfpcB1PNuHqbo+98ODLpH8knul4Vyf5sCL61okLTjA==} 859 980 cpu: [arm64] 860 981 os: [win32] 861 982 862 - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.11-commit.f051675': 863 - resolution: {integrity: sha512-LtuMKJe6iFH4iV55dy+gDwZ9v23Tfxx5cd7ZAxvhYFGoVNSvarxAgl844BvFGReERCnLTGRvo85FUR6fDHQX+A==} 864 - cpu: [ia32] 983 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': 984 + resolution: {integrity: sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==} 985 + engines: {node: ^20.19.0 || >=22.12.0} 986 + cpu: [arm64] 865 987 os: [win32] 866 988 867 989 '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.24': ··· 869 991 cpu: [ia32] 870 992 os: [win32] 871 993 872 - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.11-commit.f051675': 873 - resolution: {integrity: sha512-YY8UYfBm4dbWa4psgEPPD9T9X0nAvlYu0BOsQC5vDfCwzzU7IHT4jAfetvlQq+4+M6qWHSTr6v+/WX5EmlM1WA==} 874 - cpu: [x64] 994 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': 995 + resolution: {integrity: sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==} 996 + engines: {node: ^20.19.0 || >=22.12.0} 997 + cpu: [ia32] 875 998 os: [win32] 876 999 877 1000 '@rolldown/binding-win32-x64-msvc@1.0.0-beta.24': ··· 879 1002 cpu: [x64] 880 1003 os: [win32] 881 1004 882 - '@rolldown/pluginutils@1.0.0-beta.11-commit.f051675': 883 - resolution: {integrity: sha512-TAqMYehvpauLKz7v4TZOTUQNjxa5bUQWw2+51/+Zk3ItclBxgoSWhnZ31sXjdoX6le6OXdK2vZfV3KoyW/O/GA==} 1005 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': 1006 + resolution: {integrity: sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==} 1007 + engines: {node: ^20.19.0 || >=22.12.0} 1008 + cpu: [x64] 1009 + os: [win32] 884 1010 885 1011 '@rolldown/pluginutils@1.0.0-beta.24': 886 1012 resolution: {integrity: sha512-NMiim/enJlffMP16IanVj1ajFNEg8SaMEYyxyYfJoEyt5EiFT3HUH/T2GRdeStNWp+/kg5U8DiJqnQBgLQ8uCw==} 887 1013 888 - '@rolldown/pluginutils@1.0.0-beta.38': 889 - resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} 1014 + '@rolldown/pluginutils@1.0.0-beta.45': 1015 + resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} 1016 + 1017 + '@rolldown/pluginutils@1.0.0-rc.2': 1018 + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} 890 1019 891 1020 '@standard-schema/spec@1.0.0': 892 1021 resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} 893 1022 1023 + '@tailwindcss/node@4.1.18': 1024 + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} 1025 + 1026 + '@tailwindcss/oxide-android-arm64@4.1.18': 1027 + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} 1028 + engines: {node: '>= 10'} 1029 + cpu: [arm64] 1030 + os: [android] 1031 + 1032 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 1033 + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} 1034 + engines: {node: '>= 10'} 1035 + cpu: [arm64] 1036 + os: [darwin] 1037 + 1038 + '@tailwindcss/oxide-darwin-x64@4.1.18': 1039 + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} 1040 + engines: {node: '>= 10'} 1041 + cpu: [x64] 1042 + os: [darwin] 1043 + 1044 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 1045 + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} 1046 + engines: {node: '>= 10'} 1047 + cpu: [x64] 1048 + os: [freebsd] 1049 + 1050 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 1051 + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} 1052 + engines: {node: '>= 10'} 1053 + cpu: [arm] 1054 + os: [linux] 1055 + 1056 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 1057 + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} 1058 + engines: {node: '>= 10'} 1059 + cpu: [arm64] 1060 + os: [linux] 1061 + libc: [glibc] 1062 + 1063 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 1064 + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} 1065 + engines: {node: '>= 10'} 1066 + cpu: [arm64] 1067 + os: [linux] 1068 + libc: [musl] 1069 + 1070 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 1071 + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} 1072 + engines: {node: '>= 10'} 1073 + cpu: [x64] 1074 + os: [linux] 1075 + libc: [glibc] 1076 + 1077 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 1078 + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} 1079 + engines: {node: '>= 10'} 1080 + cpu: [x64] 1081 + os: [linux] 1082 + libc: [musl] 1083 + 1084 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 1085 + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} 1086 + engines: {node: '>=14.0.0'} 1087 + cpu: [wasm32] 1088 + bundledDependencies: 1089 + - '@napi-rs/wasm-runtime' 1090 + - '@emnapi/core' 1091 + - '@emnapi/runtime' 1092 + - '@tybys/wasm-util' 1093 + - '@emnapi/wasi-threads' 1094 + - tslib 1095 + 1096 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 1097 + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} 1098 + engines: {node: '>= 10'} 1099 + cpu: [arm64] 1100 + os: [win32] 1101 + 1102 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 1103 + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} 1104 + engines: {node: '>= 10'} 1105 + cpu: [x64] 1106 + os: [win32] 1107 + 1108 + '@tailwindcss/oxide@4.1.18': 1109 + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} 1110 + engines: {node: '>= 10'} 1111 + 1112 + '@tailwindcss/vite@4.1.18': 1113 + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} 1114 + peerDependencies: 1115 + vite: ^5.2.0 || ^6 || ^7 1116 + 894 1117 '@testing-library/dom@10.4.1': 895 1118 resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} 896 1119 engines: {node: '>=18'} ··· 899 1122 resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} 900 1123 engines: {node: '>=14', npm: '>=6', yarn: '>=1'} 901 1124 902 - '@testing-library/react@16.3.0': 903 - resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} 1125 + '@testing-library/react@16.3.2': 1126 + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} 904 1127 engines: {node: '>=18'} 905 1128 peerDependencies: 906 1129 '@testing-library/dom': ^10.0.0 ··· 956 1179 '@types/node@24.0.4': 957 1180 resolution: {integrity: sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA==} 958 1181 959 - '@types/react-dom@19.2.2': 960 - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} 1182 + '@types/react-dom@19.2.3': 1183 + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} 961 1184 peerDependencies: 962 1185 '@types/react': ^19.2.0 963 1186 964 - '@types/react@19.2.2': 965 - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} 1187 + '@types/react@19.2.13': 1188 + resolution: {integrity: sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==} 966 1189 967 1190 '@typescript-eslint/eslint-plugin@8.35.0': 968 1191 resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} ··· 1032 1255 peerDependencies: 1033 1256 typescript: '*' 1034 1257 1035 - '@vitejs/plugin-react@5.0.4': 1036 - resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} 1258 + '@vitejs/plugin-react@5.1.3': 1259 + resolution: {integrity: sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==} 1037 1260 engines: {node: ^20.19.0 || >=22.12.0} 1038 1261 peerDependencies: 1039 1262 vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 ··· 1124 1347 resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 1125 1348 engines: {node: '>=12'} 1126 1349 1127 - ast-kit@2.1.3: 1128 - resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} 1350 + ast-kit@2.2.0: 1351 + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} 1129 1352 engines: {node: '>=20.19.0'} 1130 1353 1131 1354 asynckit@0.4.0: ··· 1145 1368 resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 1146 1369 engines: {node: '>=4'} 1147 1370 1148 - birpc@2.6.1: 1149 - resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} 1371 + birpc@2.8.0: 1372 + resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} 1150 1373 1151 1374 brace-expansion@1.1.12: 1152 1375 resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} ··· 1232 1455 resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} 1233 1456 engines: {node: '>=18'} 1234 1457 1235 - csstype@3.1.3: 1236 - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1458 + csstype@3.2.3: 1459 + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 1237 1460 1238 1461 data-urls@5.0.0: 1239 1462 resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} ··· 1291 1514 dom-accessibility-api@0.6.3: 1292 1515 resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} 1293 1516 1294 - dts-resolver@2.1.2: 1295 - resolution: {integrity: sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==} 1296 - engines: {node: '>=20.18.0'} 1517 + dts-resolver@2.1.3: 1518 + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} 1519 + engines: {node: '>=20.19.0'} 1297 1520 peerDependencies: 1298 1521 oxc-resolver: '>=11.0.0' 1299 1522 peerDependenciesMeta: ··· 1310 1533 emoji-regex@8.0.0: 1311 1534 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1312 1535 1313 - empathic@1.1.0: 1314 - resolution: {integrity: sha512-rsPft6CK3eHtrlp9Y5ALBb+hfK+DWnA4WFebbazxjWyx8vSm3rZeoM3z9irsjcqO3PYRzlfv27XIB4tz2DV7RA==} 1536 + empathic@2.0.0: 1537 + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} 1315 1538 engines: {node: '>=14'} 1316 1539 1540 + enhanced-resolve@5.18.3: 1541 + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} 1542 + engines: {node: '>=10.13.0'} 1543 + 1317 1544 enquirer@2.4.1: 1318 1545 resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 1319 1546 engines: {node: '>=8.6'} ··· 1513 1740 resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1514 1741 engines: {node: '>= 0.4'} 1515 1742 1516 - get-tsconfig@4.12.0: 1517 - resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} 1743 + get-tsconfig@4.13.0: 1744 + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 1518 1745 1519 1746 glob-parent@5.1.2: 1520 1747 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} ··· 1665 1892 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1666 1893 hasBin: true 1667 1894 1895 + js-yaml@4.1.1: 1896 + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 1897 + hasBin: true 1898 + 1668 1899 jsdom@25.0.1: 1669 1900 resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} 1670 1901 engines: {node: '>=18'} ··· 1708 1939 keyv@4.5.4: 1709 1940 resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1710 1941 1711 - knip@5.66.2: 1712 - resolution: {integrity: sha512-5wvsdc17C5bMxjuGfN9KVS/tW5KIvzP1RClfpTMdLYm8IXIsfWsiHlFkTvZIca9skwoVDyTyXmbRq4w1Poim+A==} 1942 + knip@5.83.1: 1943 + resolution: {integrity: sha512-av3ZG/Nui6S/BNL8Tmj12yGxYfTnwWnslouW97m40him7o8MwiMjZBY9TPvlEWUci45aVId0/HbgTwSKIDGpMw==} 1713 1944 engines: {node: '>=18.18.0'} 1714 1945 hasBin: true 1715 1946 peerDependencies: ··· 1755 1986 engines: {node: '>= 12.0.0'} 1756 1987 cpu: [arm64] 1757 1988 os: [linux] 1989 + libc: [glibc] 1758 1990 1759 1991 lightningcss-linux-arm64-musl@1.30.2: 1760 1992 resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} 1761 1993 engines: {node: '>= 12.0.0'} 1762 1994 cpu: [arm64] 1763 1995 os: [linux] 1996 + libc: [musl] 1764 1997 1765 1998 lightningcss-linux-x64-gnu@1.30.2: 1766 1999 resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} 1767 2000 engines: {node: '>= 12.0.0'} 1768 2001 cpu: [x64] 1769 2002 os: [linux] 2003 + libc: [glibc] 1770 2004 1771 2005 lightningcss-linux-x64-musl@1.30.2: 1772 2006 resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} 1773 2007 engines: {node: '>= 12.0.0'} 1774 2008 cpu: [x64] 1775 2009 os: [linux] 2010 + libc: [musl] 1776 2011 1777 2012 lightningcss-win32-arm64-msvc@1.30.2: 1778 2013 resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} ··· 1819 2054 1820 2055 magic-string@0.30.19: 1821 2056 resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} 2057 + 2058 + magic-string@0.30.21: 2059 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 1822 2060 1823 2061 make-synchronized@0.4.2: 1824 2062 resolution: {integrity: sha512-EwEJSg8gSGLicKXp/VzNi1tvzhdmNBxOzslkkJSoNUCQFZKH/NIUIp7xlfN+noaHrz4BJDN73gne8IHnjl/F/A==} ··· 1881 2119 node-releases@2.0.25: 1882 2120 resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} 1883 2121 1884 - nuqs@2.7.2: 1885 - resolution: {integrity: sha512-wOPJoz5om7jMJQick9zU1S/Q+joL+B2DZTZxfCleHEcUzjUnPoujGod4+nAmUWb+G9TwZnyv+mfNqlyfEi8Zag==} 2122 + nuqs@2.8.8: 2123 + resolution: {integrity: sha512-LF5sw9nWpHyPWzMMu9oho3r9C5DvkpmBIg4LQN78sexIzGaeRx8DWr0uy3YiFx5i2QGZN1Qqcb+OAtEVRa2bnA==} 1886 2124 peerDependencies: 1887 2125 '@remix-run/react': '>=2' 1888 2126 '@tanstack/react-router': ^1 1889 2127 next: '>=14.2.0' 1890 2128 react: '>=18.2.0 || ^19.0.0-0' 1891 - react-router: ^6 || ^7 1892 - react-router-dom: ^6 || ^7 2129 + react-router: ^5 || ^6 || ^7 2130 + react-router-dom: ^5 || ^6 || ^7 1893 2131 peerDependenciesMeta: 1894 2132 '@remix-run/react': 1895 2133 optional: true ··· 1905 2143 nwsapi@2.2.22: 1906 2144 resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} 1907 2145 2146 + obug@1.0.0: 2147 + resolution: {integrity: sha512-WKcS43Yl6YPJekid7KiRdT6CHMSmYWVfJiSFbTaGxWQlC+cEBPxHa9jR1uS2cMiQmXd8Hsa2ipAKErQ/GLhSpg==} 2148 + peerDependencies: 2149 + ms: ^2.0.0 2150 + peerDependenciesMeta: 2151 + ms: 2152 + optional: true 2153 + 1908 2154 optionator@0.9.4: 1909 2155 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1910 2156 engines: {node: '>= 0.8.0'} ··· 1912 2158 outdent@0.5.0: 1913 2159 resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1914 2160 1915 - oxc-resolver@11.11.1: 1916 - resolution: {integrity: sha512-4Z86u4xQAxl2IC1OAAdHjk/S9GNbE2ewALQVOpBk9F8NkfqXlglY6R2ts+HEgY/Q3T9m/H8W0G4id71muw/Nng==} 2161 + oxc-resolver@11.15.0: 2162 + resolution: {integrity: sha512-Hk2J8QMYwmIO9XTCUiOH00+Xk2/+aBxRUnhrSlANDyCnLYc32R1WSIq1sU2yEdlqd53FfMpPEpnBYIKQMzliJw==} 1917 2163 1918 2164 p-filter@2.1.0: 1919 2165 resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} ··· 2024 2270 queue-microtask@1.2.3: 2025 2271 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2026 2272 2027 - react-dom@19.2.0: 2028 - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} 2273 + react-dom@19.2.4: 2274 + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} 2029 2275 peerDependencies: 2030 - react: ^19.2.0 2276 + react: ^19.2.4 2031 2277 2032 2278 react-is@17.0.2: 2033 2279 resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2034 2280 2035 - react-refresh@0.17.0: 2036 - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 2281 + react-refresh@0.18.0: 2282 + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} 2037 2283 engines: {node: '>=0.10.0'} 2038 2284 2039 - react@19.2.0: 2040 - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} 2285 + react@19.2.4: 2286 + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} 2041 2287 engines: {node: '>=0.10.0'} 2042 2288 2043 2289 read-yaml-file@1.1.0: ··· 2075 2321 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 2076 2322 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2077 2323 2078 - rolldown-plugin-dts@0.13.14: 2079 - resolution: {integrity: sha512-wjNhHZz9dlN6PTIXyizB6u/mAg1wEFMW9yw7imEVe3CxHSRnNHVyycIX0yDEOVJfDNISLPbkCIPEpFpizy5+PQ==} 2324 + rolldown-plugin-dts@0.17.7: 2325 + resolution: {integrity: sha512-ZGgXMhzCItmznNzbJlTcC/KdM6bIwcZoYUykJ2q14HOGvnMhnl2RXU+XrIrdjA2Hyzq3nWqDH7qWaM5a4uCVnw==} 2080 2326 engines: {node: '>=20.18.0'} 2081 2327 peerDependencies: 2328 + '@ts-macro/tsc': ^0.3.6 2082 2329 '@typescript/native-preview': '>=7.0.0-dev.20250601.1' 2083 - rolldown: ^1.0.0-beta.9 2330 + rolldown: ^1.0.0-beta.44 2084 2331 typescript: ^5.0.0 2085 - vue-tsc: ^2.2.0 || ^3.0.0 2332 + vue-tsc: ~3.1.0 2086 2333 peerDependenciesMeta: 2334 + '@ts-macro/tsc': 2335 + optional: true 2087 2336 '@typescript/native-preview': 2088 2337 optional: true 2089 2338 typescript: ··· 2131 2380 yaml: 2132 2381 optional: true 2133 2382 2134 - rolldown@1.0.0-beta.11-commit.f051675: 2135 - resolution: {integrity: sha512-g8MCVkvg2GnrrG+j+WplOTx1nAmjSwYOMSOQI0qfxf8D4NmYZqJuG3f85yWK64XXQv6pKcXZsfMkOPs9B6B52A==} 2136 - hasBin: true 2137 - 2138 2383 rolldown@1.0.0-beta.24: 2139 2384 resolution: {integrity: sha512-eDyipoOnoHQ5p6INkJ8g31eKGlqPSCAN9PapyOTw5HET4FYIWALZnSgpMZ67mdn+xT3jAsqGidNnBcIM6EAUhA==} 2140 2385 hasBin: true 2141 2386 2387 + rolldown@1.0.0-beta.45: 2388 + resolution: {integrity: sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==} 2389 + engines: {node: ^20.19.0 || >=22.12.0} 2390 + hasBin: true 2391 + 2142 2392 rrweb-cssom@0.7.1: 2143 2393 resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} 2144 2394 ··· 2193 2443 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2194 2444 engines: {node: '>=8'} 2195 2445 2196 - smol-toml@1.4.2: 2197 - resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} 2446 + smol-toml@1.5.2: 2447 + resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} 2198 2448 engines: {node: '>= 18'} 2199 2449 2200 2450 source-map-js@1.2.1: ··· 2242 2492 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2243 2493 engines: {node: '>=8'} 2244 2494 2245 - strip-json-comments@5.0.2: 2246 - resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==} 2495 + strip-json-comments@5.0.3: 2496 + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} 2247 2497 engines: {node: '>=14.16'} 2248 2498 2249 2499 strip-literal@3.1.0: ··· 2256 2506 symbol-tree@3.2.4: 2257 2507 resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2258 2508 2509 + tailwindcss@4.1.18: 2510 + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} 2511 + 2512 + tapable@2.3.0: 2513 + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} 2514 + engines: {node: '>=6'} 2515 + 2259 2516 term-size@2.2.1: 2260 2517 resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 2261 2518 engines: {node: '>=8'} ··· 2269 2526 tinyexec@0.3.2: 2270 2527 resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 2271 2528 2272 - tinyexec@1.0.1: 2273 - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} 2529 + tinyexec@1.0.2: 2530 + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 2531 + engines: {node: '>=18'} 2274 2532 2275 2533 tinyglobby@0.2.15: 2276 2534 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} ··· 2307 2565 resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} 2308 2566 engines: {node: '>=18'} 2309 2567 2568 + tree-kill@1.2.2: 2569 + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2570 + hasBin: true 2571 + 2310 2572 treeify@1.1.0: 2311 2573 resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} 2312 2574 engines: {node: '>=0.6'} ··· 2317 2579 peerDependencies: 2318 2580 typescript: '>=4.8.4' 2319 2581 2320 - tsdown@0.12.7: 2321 - resolution: {integrity: sha512-VJjVaqJfIQuQwtOoeuEJMOJUf3MPDrfX0X7OUNx3nq5pQeuIl3h58tmdbM1IZcu8Dn2j8NQjLh+5TXa0yPb9zg==} 2322 - engines: {node: '>=18.0.0'} 2582 + tsdown@0.15.12: 2583 + resolution: {integrity: sha512-c8VLlQm8/lFrOAg5VMVeN4NAbejZyVQkzd+ErjuaQgJFI/9MhR9ivr0H/CM7UlOF1+ELlF6YaI7sU/4itgGQ8w==} 2584 + engines: {node: '>=20.19.0'} 2323 2585 hasBin: true 2324 2586 peerDependencies: 2325 2587 '@arethetypeswrong/core': ^0.18.1 ··· 2327 2589 typescript: ^5.0.0 2328 2590 unplugin-lightningcss: ^0.4.0 2329 2591 unplugin-unused: ^0.5.0 2592 + unrun: ^0.2.1 2330 2593 peerDependenciesMeta: 2331 2594 '@arethetypeswrong/core': 2332 2595 optional: true ··· 2337 2600 unplugin-lightningcss: 2338 2601 optional: true 2339 2602 unplugin-unused: 2603 + optional: true 2604 + unrun: 2340 2605 optional: true 2341 2606 2342 2607 tslib@2.8.1: ··· 2353 2618 eslint: ^8.57.0 || ^9.0.0 2354 2619 typescript: '>=4.8.4 <5.9.0' 2355 2620 2356 - typescript@5.8.3: 2357 - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 2621 + typescript@5.9.3: 2622 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 2358 2623 engines: {node: '>=14.17'} 2359 2624 hasBin: true 2360 2625 2361 2626 uint8arrays@3.0.0: 2362 2627 resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 2363 2628 2364 - unconfig@7.3.3: 2365 - resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} 2629 + unconfig-core@7.4.1: 2630 + resolution: {integrity: sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==} 2631 + 2632 + unconfig@7.4.1: 2633 + resolution: {integrity: sha512-uyQ7LElcGizrOGZyIq9KU+xkuEjcRf9IpmDTkCSYv5mEeZzrXSj6rb51C0L+WTedsmAoVxW9WKrLWhSwebIM9Q==} 2366 2634 2367 2635 undici-types@7.8.0: 2368 2636 resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} 2637 + 2638 + unicode-segmenter@0.14.0: 2639 + resolution: {integrity: sha512-AH4lhPCJANUnSLEKnM4byboctePJzltF4xj8b+NbNiYeAkAXGh7px2K/4NANFp7dnr6+zB3e6HLu8Jj8SKyvYg==} 2369 2640 2370 2641 universalify@0.1.2: 2371 2642 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} ··· 2512 2783 2513 2784 '@adobe/css-tools@4.4.4': {} 2514 2785 2515 - '@ark/attest@0.49.0(typescript@5.8.3)': 2786 + '@ark/attest@0.49.0(typescript@5.9.3)': 2516 2787 dependencies: 2517 2788 '@ark/fs': 0.49.0 2518 2789 '@ark/util': 0.49.0 2519 2790 '@prettier/sync': 0.5.5(prettier@3.5.3) 2520 2791 '@typescript/analyze-trace': 0.10.1 2521 - '@typescript/vfs': 1.6.1(typescript@5.8.3) 2792 + '@typescript/vfs': 1.6.1(typescript@5.9.3) 2522 2793 arktype: 2.1.22 2523 2794 prettier: 3.5.3 2524 - typescript: 5.8.3 2795 + typescript: 5.9.3 2525 2796 transitivePeerDependencies: 2526 2797 - supports-color 2527 2798 ··· 2541 2812 '@csstools/css-tokenizer': 3.0.4 2542 2813 lru-cache: 10.4.3 2543 2814 2544 - '@atproto/common-web@0.4.3': 2815 + '@atproto/common-web@0.4.5': 2545 2816 dependencies: 2546 - graphemer: 1.4.0 2817 + '@atproto/lex-data': 0.0.1 2818 + '@atproto/lex-json': 0.0.1 2819 + zod: 3.25.76 2820 + 2821 + '@atproto/lex-data@0.0.1': 2822 + dependencies: 2823 + '@atproto/syntax': 0.4.1 2547 2824 multiformats: 9.9.0 2825 + tslib: 2.8.1 2548 2826 uint8arrays: 3.0.0 2549 - zod: 3.25.76 2827 + unicode-segmenter: 0.14.0 2828 + 2829 + '@atproto/lex-json@0.0.1': 2830 + dependencies: 2831 + '@atproto/lex-data': 0.0.1 2832 + tslib: 2.8.1 2550 2833 2551 - '@atproto/lexicon@0.5.1': 2834 + '@atproto/lexicon@0.5.2': 2552 2835 dependencies: 2553 - '@atproto/common-web': 0.4.3 2836 + '@atproto/common-web': 0.4.5 2554 2837 '@atproto/syntax': 0.4.1 2555 2838 iso-datestring-validator: 2.2.2 2556 2839 multiformats: 9.9.0 ··· 2561 2844 '@babel/code-frame@7.27.1': 2562 2845 dependencies: 2563 2846 '@babel/helper-validator-identifier': 7.27.1 2847 + js-tokens: 4.0.0 2848 + picocolors: 1.1.1 2849 + 2850 + '@babel/code-frame@7.29.0': 2851 + dependencies: 2852 + '@babel/helper-validator-identifier': 7.28.5 2564 2853 js-tokens: 4.0.0 2565 2854 picocolors: 1.1.1 2566 2855 2567 2856 '@babel/compat-data@7.28.4': {} 2568 2857 2858 + '@babel/compat-data@7.29.0': {} 2859 + 2569 2860 '@babel/core@7.28.4': 2570 2861 dependencies: 2571 2862 '@babel/code-frame': 7.27.1 ··· 2586 2877 transitivePeerDependencies: 2587 2878 - supports-color 2588 2879 2880 + '@babel/core@7.29.0': 2881 + dependencies: 2882 + '@babel/code-frame': 7.29.0 2883 + '@babel/generator': 7.29.1 2884 + '@babel/helper-compilation-targets': 7.28.6 2885 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) 2886 + '@babel/helpers': 7.28.6 2887 + '@babel/parser': 7.29.0 2888 + '@babel/template': 7.28.6 2889 + '@babel/traverse': 7.29.0 2890 + '@babel/types': 7.29.0 2891 + '@jridgewell/remapping': 2.3.5 2892 + convert-source-map: 2.0.0 2893 + debug: 4.4.3 2894 + gensync: 1.0.0-beta.2 2895 + json5: 2.2.3 2896 + semver: 6.3.1 2897 + transitivePeerDependencies: 2898 + - supports-color 2899 + 2589 2900 '@babel/generator@7.28.3': 2590 2901 dependencies: 2591 2902 '@babel/parser': 7.28.4 ··· 2594 2905 '@jridgewell/trace-mapping': 0.3.31 2595 2906 jsesc: 3.1.0 2596 2907 2908 + '@babel/generator@7.28.5': 2909 + dependencies: 2910 + '@babel/parser': 7.28.5 2911 + '@babel/types': 7.28.5 2912 + '@jridgewell/gen-mapping': 0.3.13 2913 + '@jridgewell/trace-mapping': 0.3.31 2914 + jsesc: 3.1.0 2915 + 2916 + '@babel/generator@7.29.1': 2917 + dependencies: 2918 + '@babel/parser': 7.29.0 2919 + '@babel/types': 7.29.0 2920 + '@jridgewell/gen-mapping': 0.3.13 2921 + '@jridgewell/trace-mapping': 0.3.31 2922 + jsesc: 3.1.0 2923 + 2597 2924 '@babel/helper-annotate-as-pure@7.27.3': 2598 2925 dependencies: 2599 2926 '@babel/types': 7.28.4 ··· 2606 2933 lru-cache: 5.1.1 2607 2934 semver: 6.3.1 2608 2935 2936 + '@babel/helper-compilation-targets@7.28.6': 2937 + dependencies: 2938 + '@babel/compat-data': 7.29.0 2939 + '@babel/helper-validator-option': 7.27.1 2940 + browserslist: 4.26.3 2941 + lru-cache: 5.1.1 2942 + semver: 6.3.1 2943 + 2609 2944 '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': 2610 2945 dependencies: 2611 2946 '@babel/core': 7.28.4 ··· 2635 2970 transitivePeerDependencies: 2636 2971 - supports-color 2637 2972 2973 + '@babel/helper-module-imports@7.28.6': 2974 + dependencies: 2975 + '@babel/traverse': 7.29.0 2976 + '@babel/types': 7.29.0 2977 + transitivePeerDependencies: 2978 + - supports-color 2979 + 2638 2980 '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': 2639 2981 dependencies: 2640 2982 '@babel/core': 7.28.4 2641 2983 '@babel/helper-module-imports': 7.27.1 2642 2984 '@babel/helper-validator-identifier': 7.27.1 2643 2985 '@babel/traverse': 7.28.4 2986 + transitivePeerDependencies: 2987 + - supports-color 2988 + 2989 + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': 2990 + dependencies: 2991 + '@babel/core': 7.29.0 2992 + '@babel/helper-module-imports': 7.28.6 2993 + '@babel/helper-validator-identifier': 7.28.5 2994 + '@babel/traverse': 7.29.0 2644 2995 transitivePeerDependencies: 2645 2996 - supports-color 2646 2997 ··· 2670 3021 2671 3022 '@babel/helper-validator-identifier@7.27.1': {} 2672 3023 3024 + '@babel/helper-validator-identifier@7.28.5': {} 3025 + 2673 3026 '@babel/helper-validator-option@7.27.1': {} 2674 3027 2675 3028 '@babel/helpers@7.28.4': ··· 2677 3030 '@babel/template': 7.27.2 2678 3031 '@babel/types': 7.28.4 2679 3032 3033 + '@babel/helpers@7.28.6': 3034 + dependencies: 3035 + '@babel/template': 7.28.6 3036 + '@babel/types': 7.29.0 3037 + 2680 3038 '@babel/parser@7.28.4': 2681 3039 dependencies: 2682 3040 '@babel/types': 7.28.4 2683 3041 3042 + '@babel/parser@7.28.5': 3043 + dependencies: 3044 + '@babel/types': 7.28.5 3045 + 3046 + '@babel/parser@7.29.0': 3047 + dependencies: 3048 + '@babel/types': 7.29.0 3049 + 2684 3050 '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.4)': 2685 3051 dependencies: 2686 3052 '@babel/core': 7.28.4 ··· 2689 3055 transitivePeerDependencies: 2690 3056 - supports-color 2691 3057 2692 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': 3058 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': 2693 3059 dependencies: 2694 - '@babel/core': 7.28.4 3060 + '@babel/core': 7.29.0 2695 3061 '@babel/helper-plugin-utils': 7.27.1 2696 3062 2697 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': 3063 + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': 2698 3064 dependencies: 2699 - '@babel/core': 7.28.4 3065 + '@babel/core': 7.29.0 2700 3066 '@babel/helper-plugin-utils': 7.27.1 2701 3067 2702 3068 '@babel/runtime@7.28.4': {} ··· 2707 3073 '@babel/parser': 7.28.4 2708 3074 '@babel/types': 7.28.4 2709 3075 3076 + '@babel/template@7.28.6': 3077 + dependencies: 3078 + '@babel/code-frame': 7.29.0 3079 + '@babel/parser': 7.29.0 3080 + '@babel/types': 7.29.0 3081 + 2710 3082 '@babel/traverse@7.28.4': 2711 3083 dependencies: 2712 3084 '@babel/code-frame': 7.27.1 ··· 2719 3091 transitivePeerDependencies: 2720 3092 - supports-color 2721 3093 3094 + '@babel/traverse@7.29.0': 3095 + dependencies: 3096 + '@babel/code-frame': 7.29.0 3097 + '@babel/generator': 7.29.1 3098 + '@babel/helper-globals': 7.28.0 3099 + '@babel/parser': 7.29.0 3100 + '@babel/template': 7.28.6 3101 + '@babel/types': 7.29.0 3102 + debug: 4.4.3 3103 + transitivePeerDependencies: 3104 + - supports-color 3105 + 2722 3106 '@babel/types@7.28.4': 2723 3107 dependencies: 2724 3108 '@babel/helper-string-parser': 7.27.1 2725 3109 '@babel/helper-validator-identifier': 7.27.1 2726 3110 2727 - '@changesets/apply-release-plan@7.0.13': 3111 + '@babel/types@7.28.5': 3112 + dependencies: 3113 + '@babel/helper-string-parser': 7.27.1 3114 + '@babel/helper-validator-identifier': 7.28.5 3115 + 3116 + '@babel/types@7.29.0': 3117 + dependencies: 3118 + '@babel/helper-string-parser': 7.27.1 3119 + '@babel/helper-validator-identifier': 7.28.5 3120 + 3121 + '@changesets/apply-release-plan@7.0.14': 2728 3122 dependencies: 2729 - '@changesets/config': 3.1.1 3123 + '@changesets/config': 3.1.2 2730 3124 '@changesets/get-version-range-type': 0.4.0 2731 3125 '@changesets/git': 3.0.4 2732 3126 '@changesets/should-skip-package': 0.1.2 ··· 2753 3147 dependencies: 2754 3148 '@changesets/types': 6.1.0 2755 3149 2756 - '@changesets/cli@2.29.7(@types/node@24.0.4)': 3150 + '@changesets/cli@2.29.8(@types/node@24.0.4)': 2757 3151 dependencies: 2758 - '@changesets/apply-release-plan': 7.0.13 3152 + '@changesets/apply-release-plan': 7.0.14 2759 3153 '@changesets/assemble-release-plan': 6.0.9 2760 3154 '@changesets/changelog-git': 0.2.1 2761 - '@changesets/config': 3.1.1 3155 + '@changesets/config': 3.1.2 2762 3156 '@changesets/errors': 0.2.0 2763 3157 '@changesets/get-dependents-graph': 2.1.3 2764 - '@changesets/get-release-plan': 4.0.13 3158 + '@changesets/get-release-plan': 4.0.14 2765 3159 '@changesets/git': 3.0.4 2766 3160 '@changesets/logger': 0.1.1 2767 3161 '@changesets/pre': 2.0.2 2768 - '@changesets/read': 0.6.5 3162 + '@changesets/read': 0.6.6 2769 3163 '@changesets/should-skip-package': 0.1.2 2770 3164 '@changesets/types': 6.1.0 2771 3165 '@changesets/write': 0.4.0 ··· 2786 3180 transitivePeerDependencies: 2787 3181 - '@types/node' 2788 3182 2789 - '@changesets/config@3.1.1': 3183 + '@changesets/config@3.1.2': 2790 3184 dependencies: 2791 3185 '@changesets/errors': 0.2.0 2792 3186 '@changesets/get-dependents-graph': 2.1.3 ··· 2807 3201 picocolors: 1.1.1 2808 3202 semver: 7.7.3 2809 3203 2810 - '@changesets/get-release-plan@4.0.13': 3204 + '@changesets/get-release-plan@4.0.14': 2811 3205 dependencies: 2812 3206 '@changesets/assemble-release-plan': 6.0.9 2813 - '@changesets/config': 3.1.1 3207 + '@changesets/config': 3.1.2 2814 3208 '@changesets/pre': 2.0.2 2815 - '@changesets/read': 0.6.5 3209 + '@changesets/read': 0.6.6 2816 3210 '@changesets/types': 6.1.0 2817 3211 '@manypkg/get-packages': 1.1.3 2818 3212 ··· 2830 3224 dependencies: 2831 3225 picocolors: 1.1.1 2832 3226 2833 - '@changesets/parse@0.4.1': 3227 + '@changesets/parse@0.4.2': 2834 3228 dependencies: 2835 3229 '@changesets/types': 6.1.0 2836 - js-yaml: 3.14.1 3230 + js-yaml: 4.1.1 2837 3231 2838 3232 '@changesets/pre@2.0.2': 2839 3233 dependencies: ··· 2842 3236 '@manypkg/get-packages': 1.1.3 2843 3237 fs-extra: 7.0.1 2844 3238 2845 - '@changesets/read@0.6.5': 3239 + '@changesets/read@0.6.6': 2846 3240 dependencies: 2847 3241 '@changesets/git': 3.0.4 2848 3242 '@changesets/logger': 0.1.1 2849 - '@changesets/parse': 0.4.1 3243 + '@changesets/parse': 0.4.2 2850 3244 '@changesets/types': 6.1.0 2851 3245 fs-extra: 7.0.1 2852 3246 p-filter: 2.1.0 ··· 2894 3288 tslib: 2.8.1 2895 3289 optional: true 2896 3290 3291 + '@emnapi/core@1.7.1': 3292 + dependencies: 3293 + '@emnapi/wasi-threads': 1.1.0 3294 + tslib: 2.8.1 3295 + optional: true 3296 + 2897 3297 '@emnapi/runtime@1.5.0': 3298 + dependencies: 3299 + tslib: 2.8.1 3300 + optional: true 3301 + 3302 + '@emnapi/runtime@1.7.1': 2898 3303 dependencies: 2899 3304 tslib: 2.8.1 2900 3305 optional: true ··· 3087 3492 dependencies: 3088 3493 state-local: 1.0.7 3089 3494 3090 - '@monaco-editor/react@4.7.0(monaco-editor@0.52.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 3495 + '@monaco-editor/react@4.7.0(monaco-editor@0.52.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': 3091 3496 dependencies: 3092 3497 '@monaco-editor/loader': 1.6.1 3093 3498 monaco-editor: 0.52.0 3094 - react: 19.2.0 3095 - react-dom: 19.2.0(react@19.2.0) 3499 + react: 19.2.4 3500 + react-dom: 19.2.4(react@19.2.4) 3096 3501 3097 3502 '@napi-rs/wasm-runtime@0.2.12': 3098 3503 dependencies: ··· 3108 3513 '@tybys/wasm-util': 0.10.1 3109 3514 optional: true 3110 3515 3516 + '@napi-rs/wasm-runtime@1.1.0': 3517 + dependencies: 3518 + '@emnapi/core': 1.7.1 3519 + '@emnapi/runtime': 1.7.1 3520 + '@tybys/wasm-util': 0.10.1 3521 + optional: true 3522 + 3111 3523 '@nodelib/fs.scandir@2.1.5': 3112 3524 dependencies: 3113 3525 '@nodelib/fs.stat': 2.0.5 ··· 3120 3532 '@nodelib/fs.scandir': 2.1.5 3121 3533 fastq: 1.19.1 3122 3534 3123 - '@oxc-project/runtime@0.72.2': {} 3124 - 3125 3535 '@oxc-project/runtime@0.75.0': {} 3126 3536 3127 3537 '@oxc-project/runtime@0.75.1': {} 3128 3538 3129 - '@oxc-project/types@0.72.2': {} 3539 + '@oxc-project/types@0.75.1': {} 3130 3540 3131 - '@oxc-project/types@0.75.1': {} 3541 + '@oxc-project/types@0.95.0': {} 3132 3542 3133 - '@oxc-resolver/binding-android-arm-eabi@11.11.1': 3543 + '@oxc-resolver/binding-android-arm-eabi@11.15.0': 3134 3544 optional: true 3135 3545 3136 - '@oxc-resolver/binding-android-arm64@11.11.1': 3546 + '@oxc-resolver/binding-android-arm64@11.15.0': 3137 3547 optional: true 3138 3548 3139 - '@oxc-resolver/binding-darwin-arm64@11.11.1': 3549 + '@oxc-resolver/binding-darwin-arm64@11.15.0': 3140 3550 optional: true 3141 3551 3142 - '@oxc-resolver/binding-darwin-x64@11.11.1': 3552 + '@oxc-resolver/binding-darwin-x64@11.15.0': 3143 3553 optional: true 3144 3554 3145 - '@oxc-resolver/binding-freebsd-x64@11.11.1': 3555 + '@oxc-resolver/binding-freebsd-x64@11.15.0': 3146 3556 optional: true 3147 3557 3148 - '@oxc-resolver/binding-linux-arm-gnueabihf@11.11.1': 3558 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': 3149 3559 optional: true 3150 3560 3151 - '@oxc-resolver/binding-linux-arm-musleabihf@11.11.1': 3561 + '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': 3152 3562 optional: true 3153 3563 3154 - '@oxc-resolver/binding-linux-arm64-gnu@11.11.1': 3564 + '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': 3155 3565 optional: true 3156 3566 3157 - '@oxc-resolver/binding-linux-arm64-musl@11.11.1': 3567 + '@oxc-resolver/binding-linux-arm64-musl@11.15.0': 3158 3568 optional: true 3159 3569 3160 - '@oxc-resolver/binding-linux-ppc64-gnu@11.11.1': 3570 + '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': 3161 3571 optional: true 3162 3572 3163 - '@oxc-resolver/binding-linux-riscv64-gnu@11.11.1': 3573 + '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': 3164 3574 optional: true 3165 3575 3166 - '@oxc-resolver/binding-linux-riscv64-musl@11.11.1': 3576 + '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': 3167 3577 optional: true 3168 3578 3169 - '@oxc-resolver/binding-linux-s390x-gnu@11.11.1': 3579 + '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': 3580 + optional: true 3581 + 3582 + '@oxc-resolver/binding-linux-x64-gnu@11.15.0': 3170 3583 optional: true 3171 3584 3172 - '@oxc-resolver/binding-linux-x64-gnu@11.11.1': 3585 + '@oxc-resolver/binding-linux-x64-musl@11.15.0': 3173 3586 optional: true 3174 3587 3175 - '@oxc-resolver/binding-linux-x64-musl@11.11.1': 3588 + '@oxc-resolver/binding-openharmony-arm64@11.15.0': 3176 3589 optional: true 3177 3590 3178 - '@oxc-resolver/binding-wasm32-wasi@11.11.1': 3591 + '@oxc-resolver/binding-wasm32-wasi@11.15.0': 3179 3592 dependencies: 3180 - '@napi-rs/wasm-runtime': 1.0.7 3593 + '@napi-rs/wasm-runtime': 1.1.0 3181 3594 optional: true 3182 3595 3183 - '@oxc-resolver/binding-win32-arm64-msvc@11.11.1': 3596 + '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': 3184 3597 optional: true 3185 3598 3186 - '@oxc-resolver/binding-win32-ia32-msvc@11.11.1': 3599 + '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': 3187 3600 optional: true 3188 3601 3189 - '@oxc-resolver/binding-win32-x64-msvc@11.11.1': 3602 + '@oxc-resolver/binding-win32-x64-msvc@11.15.0': 3190 3603 optional: true 3191 3604 3192 3605 '@prettier/sync@0.5.5(prettier@3.5.3)': ··· 3198 3611 dependencies: 3199 3612 quansync: 0.2.11 3200 3613 3201 - '@rolldown/binding-darwin-arm64@1.0.0-beta.11-commit.f051675': 3614 + '@rolldown/binding-android-arm64@1.0.0-beta.45': 3202 3615 optional: true 3203 3616 3204 3617 '@rolldown/binding-darwin-arm64@1.0.0-beta.24': 3205 3618 optional: true 3206 3619 3207 - '@rolldown/binding-darwin-x64@1.0.0-beta.11-commit.f051675': 3620 + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': 3208 3621 optional: true 3209 3622 3210 3623 '@rolldown/binding-darwin-x64@1.0.0-beta.24': 3211 3624 optional: true 3212 3625 3213 - '@rolldown/binding-freebsd-x64@1.0.0-beta.11-commit.f051675': 3626 + '@rolldown/binding-darwin-x64@1.0.0-beta.45': 3214 3627 optional: true 3215 3628 3216 3629 '@rolldown/binding-freebsd-x64@1.0.0-beta.24': 3217 3630 optional: true 3218 3631 3219 - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.11-commit.f051675': 3632 + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': 3220 3633 optional: true 3221 3634 3222 3635 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.24': 3223 3636 optional: true 3224 3637 3225 - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.11-commit.f051675': 3638 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': 3226 3639 optional: true 3227 3640 3228 3641 '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.24': 3229 3642 optional: true 3230 3643 3231 - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.11-commit.f051675': 3644 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': 3232 3645 optional: true 3233 3646 3234 3647 '@rolldown/binding-linux-arm64-musl@1.0.0-beta.24': 3235 3648 optional: true 3236 3649 3237 - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.11-commit.f051675': 3650 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': 3238 3651 optional: true 3239 3652 3240 3653 '@rolldown/binding-linux-x64-gnu@1.0.0-beta.24': 3241 3654 optional: true 3242 3655 3243 - '@rolldown/binding-linux-x64-musl@1.0.0-beta.11-commit.f051675': 3656 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': 3244 3657 optional: true 3245 3658 3246 3659 '@rolldown/binding-linux-x64-musl@1.0.0-beta.24': 3247 3660 optional: true 3248 3661 3249 - '@rolldown/binding-wasm32-wasi@1.0.0-beta.11-commit.f051675': 3250 - dependencies: 3251 - '@napi-rs/wasm-runtime': 0.2.12 3662 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': 3663 + optional: true 3664 + 3665 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': 3252 3666 optional: true 3253 3667 3254 3668 '@rolldown/binding-wasm32-wasi@1.0.0-beta.24': ··· 3256 3670 '@napi-rs/wasm-runtime': 0.2.12 3257 3671 optional: true 3258 3672 3259 - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.11-commit.f051675': 3673 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': 3674 + dependencies: 3675 + '@napi-rs/wasm-runtime': 1.0.7 3260 3676 optional: true 3261 3677 3262 3678 '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.24': 3263 3679 optional: true 3264 3680 3265 - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.11-commit.f051675': 3681 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': 3266 3682 optional: true 3267 3683 3268 3684 '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.24': 3269 3685 optional: true 3270 3686 3271 - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.11-commit.f051675': 3687 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': 3272 3688 optional: true 3273 3689 3274 3690 '@rolldown/binding-win32-x64-msvc@1.0.0-beta.24': 3275 3691 optional: true 3276 3692 3277 - '@rolldown/pluginutils@1.0.0-beta.11-commit.f051675': {} 3693 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': 3694 + optional: true 3278 3695 3279 3696 '@rolldown/pluginutils@1.0.0-beta.24': {} 3280 3697 3281 - '@rolldown/pluginutils@1.0.0-beta.38': {} 3698 + '@rolldown/pluginutils@1.0.0-beta.45': {} 3699 + 3700 + '@rolldown/pluginutils@1.0.0-rc.2': {} 3282 3701 3283 3702 '@standard-schema/spec@1.0.0': {} 3284 3703 3704 + '@tailwindcss/node@4.1.18': 3705 + dependencies: 3706 + '@jridgewell/remapping': 2.3.5 3707 + enhanced-resolve: 5.18.3 3708 + jiti: 2.6.1 3709 + lightningcss: 1.30.2 3710 + magic-string: 0.30.21 3711 + source-map-js: 1.2.1 3712 + tailwindcss: 4.1.18 3713 + 3714 + '@tailwindcss/oxide-android-arm64@4.1.18': 3715 + optional: true 3716 + 3717 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 3718 + optional: true 3719 + 3720 + '@tailwindcss/oxide-darwin-x64@4.1.18': 3721 + optional: true 3722 + 3723 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 3724 + optional: true 3725 + 3726 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 3727 + optional: true 3728 + 3729 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 3730 + optional: true 3731 + 3732 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 3733 + optional: true 3734 + 3735 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 3736 + optional: true 3737 + 3738 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 3739 + optional: true 3740 + 3741 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 3742 + optional: true 3743 + 3744 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 3745 + optional: true 3746 + 3747 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 3748 + optional: true 3749 + 3750 + '@tailwindcss/oxide@4.1.18': 3751 + optionalDependencies: 3752 + '@tailwindcss/oxide-android-arm64': 4.1.18 3753 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 3754 + '@tailwindcss/oxide-darwin-x64': 4.1.18 3755 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 3756 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 3757 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 3758 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 3759 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 3760 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 3761 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 3762 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 3763 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 3764 + 3765 + '@tailwindcss/vite@4.1.18(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1))': 3766 + dependencies: 3767 + '@tailwindcss/node': 4.1.18 3768 + '@tailwindcss/oxide': 4.1.18 3769 + tailwindcss: 4.1.18 3770 + vite: rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1) 3771 + 3285 3772 '@testing-library/dom@10.4.1': 3286 3773 dependencies: 3287 3774 '@babel/code-frame': 7.27.1 ··· 3302 3789 picocolors: 1.1.1 3303 3790 redent: 3.0.0 3304 3791 3305 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 3792 + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': 3306 3793 dependencies: 3307 3794 '@babel/runtime': 7.28.4 3308 3795 '@testing-library/dom': 10.4.1 3309 - react: 19.2.0 3310 - react-dom: 19.2.0(react@19.2.0) 3796 + react: 19.2.4 3797 + react-dom: 19.2.4(react@19.2.4) 3311 3798 optionalDependencies: 3312 - '@types/react': 19.2.2 3313 - '@types/react-dom': 19.2.2(@types/react@19.2.2) 3799 + '@types/react': 19.2.13 3800 + '@types/react-dom': 19.2.3(@types/react@19.2.13) 3314 3801 3315 3802 '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': 3316 3803 dependencies: ··· 3325 3812 3326 3813 '@types/babel__core@7.20.5': 3327 3814 dependencies: 3328 - '@babel/parser': 7.28.4 3329 - '@babel/types': 7.28.4 3815 + '@babel/parser': 7.28.5 3816 + '@babel/types': 7.28.5 3330 3817 '@types/babel__generator': 7.27.0 3331 3818 '@types/babel__template': 7.4.4 3332 3819 '@types/babel__traverse': 7.28.0 3333 3820 3334 3821 '@types/babel__generator@7.27.0': 3335 3822 dependencies: 3336 - '@babel/types': 7.28.4 3823 + '@babel/types': 7.28.5 3337 3824 3338 3825 '@types/babel__template@7.4.4': 3339 3826 dependencies: 3340 - '@babel/parser': 7.28.4 3341 - '@babel/types': 7.28.4 3827 + '@babel/parser': 7.28.5 3828 + '@babel/types': 7.28.5 3342 3829 3343 3830 '@types/babel__traverse@7.28.0': 3344 3831 dependencies: 3345 - '@babel/types': 7.28.4 3832 + '@babel/types': 7.28.5 3346 3833 3347 3834 '@types/chai@5.2.2': 3348 3835 dependencies: ··· 3360 3847 dependencies: 3361 3848 undici-types: 7.8.0 3362 3849 3363 - '@types/react-dom@19.2.2(@types/react@19.2.2)': 3850 + '@types/react-dom@19.2.3(@types/react@19.2.13)': 3364 3851 dependencies: 3365 - '@types/react': 19.2.2 3852 + '@types/react': 19.2.13 3366 3853 3367 - '@types/react@19.2.2': 3854 + '@types/react@19.2.13': 3368 3855 dependencies: 3369 - csstype: 3.1.3 3856 + csstype: 3.2.3 3370 3857 3371 - '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3)': 3858 + '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3)': 3372 3859 dependencies: 3373 3860 '@eslint-community/regexpp': 4.12.1 3374 - '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 3861 + '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 3375 3862 '@typescript-eslint/scope-manager': 8.35.0 3376 - '@typescript-eslint/type-utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 3377 - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 3863 + '@typescript-eslint/type-utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 3864 + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 3378 3865 '@typescript-eslint/visitor-keys': 8.35.0 3379 3866 eslint: 9.29.0(jiti@2.6.1) 3380 3867 graphemer: 1.4.0 3381 3868 ignore: 7.0.5 3382 3869 natural-compare: 1.4.0 3383 - ts-api-utils: 2.1.0(typescript@5.8.3) 3384 - typescript: 5.8.3 3870 + ts-api-utils: 2.1.0(typescript@5.9.3) 3871 + typescript: 5.9.3 3385 3872 transitivePeerDependencies: 3386 3873 - supports-color 3387 3874 3388 - '@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3)': 3875 + '@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3)': 3389 3876 dependencies: 3390 3877 '@typescript-eslint/scope-manager': 8.35.0 3391 3878 '@typescript-eslint/types': 8.35.0 3392 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) 3879 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.9.3) 3393 3880 '@typescript-eslint/visitor-keys': 8.35.0 3394 3881 debug: 4.4.3 3395 3882 eslint: 9.29.0(jiti@2.6.1) 3396 - typescript: 5.8.3 3883 + typescript: 5.9.3 3397 3884 transitivePeerDependencies: 3398 3885 - supports-color 3399 3886 3400 - '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': 3887 + '@typescript-eslint/project-service@8.35.0(typescript@5.9.3)': 3401 3888 dependencies: 3402 - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) 3889 + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.9.3) 3403 3890 '@typescript-eslint/types': 8.35.0 3404 3891 debug: 4.4.3 3405 - typescript: 5.8.3 3892 + typescript: 5.9.3 3406 3893 transitivePeerDependencies: 3407 3894 - supports-color 3408 3895 ··· 3411 3898 '@typescript-eslint/types': 8.35.0 3412 3899 '@typescript-eslint/visitor-keys': 8.35.0 3413 3900 3414 - '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': 3901 + '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.9.3)': 3415 3902 dependencies: 3416 - typescript: 5.8.3 3903 + typescript: 5.9.3 3417 3904 3418 - '@typescript-eslint/type-utils@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3)': 3905 + '@typescript-eslint/type-utils@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3)': 3419 3906 dependencies: 3420 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) 3421 - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 3907 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.9.3) 3908 + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 3422 3909 debug: 4.4.3 3423 3910 eslint: 9.29.0(jiti@2.6.1) 3424 - ts-api-utils: 2.1.0(typescript@5.8.3) 3425 - typescript: 5.8.3 3911 + ts-api-utils: 2.1.0(typescript@5.9.3) 3912 + typescript: 5.9.3 3426 3913 transitivePeerDependencies: 3427 3914 - supports-color 3428 3915 3429 3916 '@typescript-eslint/types@8.35.0': {} 3430 3917 3431 - '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': 3918 + '@typescript-eslint/typescript-estree@8.35.0(typescript@5.9.3)': 3432 3919 dependencies: 3433 - '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) 3434 - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) 3920 + '@typescript-eslint/project-service': 8.35.0(typescript@5.9.3) 3921 + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.9.3) 3435 3922 '@typescript-eslint/types': 8.35.0 3436 3923 '@typescript-eslint/visitor-keys': 8.35.0 3437 3924 debug: 4.4.3 ··· 3439 3926 is-glob: 4.0.3 3440 3927 minimatch: 9.0.5 3441 3928 semver: 7.7.3 3442 - ts-api-utils: 2.1.0(typescript@5.8.3) 3443 - typescript: 5.8.3 3929 + ts-api-utils: 2.1.0(typescript@5.9.3) 3930 + typescript: 5.9.3 3444 3931 transitivePeerDependencies: 3445 3932 - supports-color 3446 3933 3447 - '@typescript-eslint/utils@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3)': 3934 + '@typescript-eslint/utils@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3)': 3448 3935 dependencies: 3449 3936 '@eslint-community/eslint-utils': 4.9.0(eslint@9.29.0(jiti@2.6.1)) 3450 3937 '@typescript-eslint/scope-manager': 8.35.0 3451 3938 '@typescript-eslint/types': 8.35.0 3452 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) 3939 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.9.3) 3453 3940 eslint: 9.29.0(jiti@2.6.1) 3454 - typescript: 5.8.3 3941 + typescript: 5.9.3 3455 3942 transitivePeerDependencies: 3456 3943 - supports-color 3457 3944 ··· 3471 3958 treeify: 1.1.0 3472 3959 yargs: 16.2.0 3473 3960 3474 - '@typescript/vfs@1.6.1(typescript@5.8.3)': 3961 + '@typescript/vfs@1.6.1(typescript@5.9.3)': 3475 3962 dependencies: 3476 3963 debug: 4.4.3 3477 - typescript: 5.8.3 3964 + typescript: 5.9.3 3478 3965 transitivePeerDependencies: 3479 3966 - supports-color 3480 3967 3481 - '@vitejs/plugin-react@5.0.4(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1))': 3968 + '@vitejs/plugin-react@5.1.3(rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1))': 3482 3969 dependencies: 3483 - '@babel/core': 7.28.4 3484 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) 3485 - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) 3486 - '@rolldown/pluginutils': 1.0.0-beta.38 3970 + '@babel/core': 7.29.0 3971 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) 3972 + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) 3973 + '@rolldown/pluginutils': 1.0.0-rc.2 3487 3974 '@types/babel__core': 7.20.5 3488 - react-refresh: 0.17.0 3975 + react-refresh: 0.18.0 3489 3976 vite: rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1) 3490 3977 transitivePeerDependencies: 3491 3978 - supports-color ··· 3578 4065 3579 4066 assertion-error@2.0.1: {} 3580 4067 3581 - ast-kit@2.1.3: 4068 + ast-kit@2.2.0: 3582 4069 dependencies: 3583 - '@babel/parser': 7.28.4 4070 + '@babel/parser': 7.28.5 3584 4071 pathe: 2.0.3 3585 4072 3586 4073 asynckit@0.4.0: {} ··· 3597 4084 dependencies: 3598 4085 is-windows: 1.0.2 3599 4086 3600 - birpc@2.6.1: {} 4087 + birpc@2.8.0: {} 3601 4088 3602 4089 brace-expansion@1.1.12: 3603 4090 dependencies: ··· 3687 4174 '@asamuzakjp/css-color': 3.2.0 3688 4175 rrweb-cssom: 0.8.0 3689 4176 3690 - csstype@3.1.3: {} 4177 + csstype@3.2.3: {} 3691 4178 3692 4179 data-urls@5.0.0: 3693 4180 dependencies: ··· 3724 4211 3725 4212 dom-accessibility-api@0.6.3: {} 3726 4213 3727 - dts-resolver@2.1.2(oxc-resolver@11.11.1): 4214 + dts-resolver@2.1.3(oxc-resolver@11.15.0): 3728 4215 optionalDependencies: 3729 - oxc-resolver: 11.11.1 4216 + oxc-resolver: 11.15.0 3730 4217 3731 4218 dunder-proto@1.0.1: 3732 4219 dependencies: ··· 3738 4225 3739 4226 emoji-regex@8.0.0: {} 3740 4227 3741 - empathic@1.1.0: {} 4228 + empathic@2.0.0: {} 4229 + 4230 + enhanced-resolve@5.18.3: 4231 + dependencies: 4232 + graceful-fs: 4.2.11 4233 + tapable: 2.3.0 3742 4234 3743 4235 enquirer@2.4.1: 3744 4236 dependencies: ··· 3993 4485 dunder-proto: 1.0.1 3994 4486 es-object-atoms: 1.1.1 3995 4487 3996 - get-tsconfig@4.12.0: 4488 + get-tsconfig@4.13.0: 3997 4489 dependencies: 3998 4490 resolve-pkg-maps: 1.0.0 3999 4491 ··· 4122 4614 dependencies: 4123 4615 argparse: 2.0.1 4124 4616 4617 + js-yaml@4.1.1: 4618 + dependencies: 4619 + argparse: 2.0.1 4620 + 4125 4621 jsdom@25.0.1: 4126 4622 dependencies: 4127 4623 cssstyle: 4.6.0 ··· 4175 4671 dependencies: 4176 4672 json-buffer: 3.0.1 4177 4673 4178 - knip@5.66.2(@types/node@24.0.4)(typescript@5.8.3): 4674 + knip@5.83.1(@types/node@24.0.4)(typescript@5.9.3): 4179 4675 dependencies: 4180 4676 '@nodelib/fs.walk': 1.2.8 4181 4677 '@types/node': 24.0.4 4182 4678 fast-glob: 3.3.3 4183 4679 formatly: 0.3.0 4184 4680 jiti: 2.6.1 4185 - js-yaml: 4.1.0 4681 + js-yaml: 4.1.1 4186 4682 minimist: 1.2.8 4187 - oxc-resolver: 11.11.1 4683 + oxc-resolver: 11.15.0 4188 4684 picocolors: 1.1.1 4189 4685 picomatch: 4.0.3 4190 - smol-toml: 1.4.2 4191 - strip-json-comments: 5.0.2 4192 - typescript: 5.8.3 4686 + smol-toml: 1.5.2 4687 + strip-json-comments: 5.0.3 4688 + typescript: 5.9.3 4193 4689 zod: 4.1.12 4194 4690 4195 4691 levn@0.4.1: ··· 4272 4768 dependencies: 4273 4769 '@jridgewell/sourcemap-codec': 1.5.5 4274 4770 4771 + magic-string@0.30.21: 4772 + dependencies: 4773 + '@jridgewell/sourcemap-codec': 1.5.5 4774 + 4275 4775 make-synchronized@0.4.2: {} 4276 4776 4277 4777 math-intrinsics@1.1.0: {} ··· 4315 4815 4316 4816 node-releases@2.0.25: {} 4317 4817 4318 - nuqs@2.7.2(react@19.2.0): 4818 + nuqs@2.8.8(react@19.2.4): 4319 4819 dependencies: 4320 4820 '@standard-schema/spec': 1.0.0 4321 - react: 19.2.0 4821 + react: 19.2.4 4322 4822 4323 4823 nwsapi@2.2.22: {} 4824 + 4825 + obug@1.0.0(ms@2.1.3): 4826 + optionalDependencies: 4827 + ms: 2.1.3 4324 4828 4325 4829 optionator@0.9.4: 4326 4830 dependencies: ··· 4333 4837 4334 4838 outdent@0.5.0: {} 4335 4839 4336 - oxc-resolver@11.11.1: 4840 + oxc-resolver@11.15.0: 4337 4841 optionalDependencies: 4338 - '@oxc-resolver/binding-android-arm-eabi': 11.11.1 4339 - '@oxc-resolver/binding-android-arm64': 11.11.1 4340 - '@oxc-resolver/binding-darwin-arm64': 11.11.1 4341 - '@oxc-resolver/binding-darwin-x64': 11.11.1 4342 - '@oxc-resolver/binding-freebsd-x64': 11.11.1 4343 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.11.1 4344 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.11.1 4345 - '@oxc-resolver/binding-linux-arm64-gnu': 11.11.1 4346 - '@oxc-resolver/binding-linux-arm64-musl': 11.11.1 4347 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.11.1 4348 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.11.1 4349 - '@oxc-resolver/binding-linux-riscv64-musl': 11.11.1 4350 - '@oxc-resolver/binding-linux-s390x-gnu': 11.11.1 4351 - '@oxc-resolver/binding-linux-x64-gnu': 11.11.1 4352 - '@oxc-resolver/binding-linux-x64-musl': 11.11.1 4353 - '@oxc-resolver/binding-wasm32-wasi': 11.11.1 4354 - '@oxc-resolver/binding-win32-arm64-msvc': 11.11.1 4355 - '@oxc-resolver/binding-win32-ia32-msvc': 11.11.1 4356 - '@oxc-resolver/binding-win32-x64-msvc': 11.11.1 4842 + '@oxc-resolver/binding-android-arm-eabi': 11.15.0 4843 + '@oxc-resolver/binding-android-arm64': 11.15.0 4844 + '@oxc-resolver/binding-darwin-arm64': 11.15.0 4845 + '@oxc-resolver/binding-darwin-x64': 11.15.0 4846 + '@oxc-resolver/binding-freebsd-x64': 11.15.0 4847 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.15.0 4848 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.15.0 4849 + '@oxc-resolver/binding-linux-arm64-gnu': 11.15.0 4850 + '@oxc-resolver/binding-linux-arm64-musl': 11.15.0 4851 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.15.0 4852 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.15.0 4853 + '@oxc-resolver/binding-linux-riscv64-musl': 11.15.0 4854 + '@oxc-resolver/binding-linux-s390x-gnu': 11.15.0 4855 + '@oxc-resolver/binding-linux-x64-gnu': 11.15.0 4856 + '@oxc-resolver/binding-linux-x64-musl': 11.15.0 4857 + '@oxc-resolver/binding-openharmony-arm64': 11.15.0 4858 + '@oxc-resolver/binding-wasm32-wasi': 11.15.0 4859 + '@oxc-resolver/binding-win32-arm64-msvc': 11.15.0 4860 + '@oxc-resolver/binding-win32-ia32-msvc': 11.15.0 4861 + '@oxc-resolver/binding-win32-x64-msvc': 11.15.0 4357 4862 4358 4863 p-filter@2.1.0: 4359 4864 dependencies: ··· 4435 4940 4436 4941 queue-microtask@1.2.3: {} 4437 4942 4438 - react-dom@19.2.0(react@19.2.0): 4943 + react-dom@19.2.4(react@19.2.4): 4439 4944 dependencies: 4440 - react: 19.2.0 4945 + react: 19.2.4 4441 4946 scheduler: 0.27.0 4442 4947 4443 4948 react-is@17.0.2: {} 4444 4949 4445 - react-refresh@0.17.0: {} 4950 + react-refresh@0.18.0: {} 4446 4951 4447 - react@19.2.0: {} 4952 + react@19.2.4: {} 4448 4953 4449 4954 read-yaml-file@1.1.0: 4450 4955 dependencies: ··· 4476 4981 4477 4982 reusify@1.1.0: {} 4478 4983 4479 - rolldown-plugin-dts@0.13.14(oxc-resolver@11.11.1)(rolldown@1.0.0-beta.11-commit.f051675)(typescript@5.8.3): 4984 + rolldown-plugin-dts@0.17.7(ms@2.1.3)(oxc-resolver@11.15.0)(rolldown@1.0.0-beta.45)(typescript@5.9.3): 4480 4985 dependencies: 4481 - '@babel/generator': 7.28.3 4482 - '@babel/parser': 7.28.4 4483 - '@babel/types': 7.28.4 4484 - ast-kit: 2.1.3 4485 - birpc: 2.6.1 4486 - debug: 4.4.3 4487 - dts-resolver: 2.1.2(oxc-resolver@11.11.1) 4488 - get-tsconfig: 4.12.0 4489 - rolldown: 1.0.0-beta.11-commit.f051675 4986 + '@babel/generator': 7.28.5 4987 + '@babel/parser': 7.28.5 4988 + '@babel/types': 7.28.5 4989 + ast-kit: 2.2.0 4990 + birpc: 2.8.0 4991 + dts-resolver: 2.1.3(oxc-resolver@11.15.0) 4992 + get-tsconfig: 4.13.0 4993 + magic-string: 0.30.21 4994 + obug: 1.0.0(ms@2.1.3) 4995 + rolldown: 1.0.0-beta.45 4490 4996 optionalDependencies: 4491 - typescript: 5.8.3 4997 + typescript: 5.9.3 4492 4998 transitivePeerDependencies: 4999 + - ms 4493 5000 - oxc-resolver 4494 - - supports-color 4495 5001 4496 5002 rolldown-vite@7.0.6(@types/node@24.0.4)(esbuild@0.25.10)(jiti@2.6.1): 4497 5003 dependencies: ··· 4508 5014 fsevents: 2.3.3 4509 5015 jiti: 2.6.1 4510 5016 4511 - rolldown@1.0.0-beta.11-commit.f051675: 4512 - dependencies: 4513 - '@oxc-project/runtime': 0.72.2 4514 - '@oxc-project/types': 0.72.2 4515 - '@rolldown/pluginutils': 1.0.0-beta.11-commit.f051675 4516 - ansis: 4.2.0 4517 - optionalDependencies: 4518 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.11-commit.f051675 4519 - '@rolldown/binding-darwin-x64': 1.0.0-beta.11-commit.f051675 4520 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.11-commit.f051675 4521 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.11-commit.f051675 4522 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.11-commit.f051675 4523 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.11-commit.f051675 4524 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.11-commit.f051675 4525 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.11-commit.f051675 4526 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.11-commit.f051675 4527 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.11-commit.f051675 4528 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.11-commit.f051675 4529 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.11-commit.f051675 4530 - 4531 5017 rolldown@1.0.0-beta.24: 4532 5018 dependencies: 4533 5019 '@oxc-project/runtime': 0.75.1 ··· 4548 5034 '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.24 4549 5035 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.24 4550 5036 5037 + rolldown@1.0.0-beta.45: 5038 + dependencies: 5039 + '@oxc-project/types': 0.95.0 5040 + '@rolldown/pluginutils': 1.0.0-beta.45 5041 + optionalDependencies: 5042 + '@rolldown/binding-android-arm64': 1.0.0-beta.45 5043 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.45 5044 + '@rolldown/binding-darwin-x64': 1.0.0-beta.45 5045 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.45 5046 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.45 5047 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.45 5048 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.45 5049 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.45 5050 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.45 5051 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.45 5052 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.45 5053 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.45 5054 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.45 5055 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.45 5056 + 4551 5057 rrweb-cssom@0.7.1: {} 4552 5058 4553 5059 rrweb-cssom@0.8.0: {} ··· 4586 5092 4587 5093 slash@3.0.0: {} 4588 5094 4589 - smol-toml@1.4.2: {} 5095 + smol-toml@1.5.2: {} 4590 5096 4591 5097 source-map-js@1.2.1: {} 4592 5098 ··· 4629 5135 4630 5136 strip-json-comments@3.1.1: {} 4631 5137 4632 - strip-json-comments@5.0.2: {} 5138 + strip-json-comments@5.0.3: {} 4633 5139 4634 5140 strip-literal@3.1.0: 4635 5141 dependencies: ··· 4641 5147 4642 5148 symbol-tree@3.2.4: {} 4643 5149 5150 + tailwindcss@4.1.18: {} 5151 + 5152 + tapable@2.3.0: {} 5153 + 4644 5154 term-size@2.2.1: {} 4645 5155 4646 5156 through2@4.0.2: ··· 4651 5161 4652 5162 tinyexec@0.3.2: {} 4653 5163 4654 - tinyexec@1.0.1: {} 5164 + tinyexec@1.0.2: {} 4655 5165 4656 5166 tinyglobby@0.2.15: 4657 5167 dependencies: ··· 4682 5192 dependencies: 4683 5193 punycode: 2.3.1 4684 5194 5195 + tree-kill@1.2.2: {} 5196 + 4685 5197 treeify@1.1.0: {} 4686 5198 4687 - ts-api-utils@2.1.0(typescript@5.8.3): 5199 + ts-api-utils@2.1.0(typescript@5.9.3): 4688 5200 dependencies: 4689 - typescript: 5.8.3 5201 + typescript: 5.9.3 4690 5202 4691 - tsdown@0.12.7(oxc-resolver@11.11.1)(typescript@5.8.3): 5203 + tsdown@0.15.12(ms@2.1.3)(oxc-resolver@11.15.0)(typescript@5.9.3): 4692 5204 dependencies: 4693 5205 ansis: 4.2.0 4694 5206 cac: 6.7.14 4695 5207 chokidar: 4.0.3 4696 5208 debug: 4.4.3 4697 5209 diff: 8.0.2 4698 - empathic: 1.1.0 5210 + empathic: 2.0.0 4699 5211 hookable: 5.5.3 4700 - rolldown: 1.0.0-beta.11-commit.f051675 4701 - rolldown-plugin-dts: 0.13.14(oxc-resolver@11.11.1)(rolldown@1.0.0-beta.11-commit.f051675)(typescript@5.8.3) 5212 + rolldown: 1.0.0-beta.45 5213 + rolldown-plugin-dts: 0.17.7(ms@2.1.3)(oxc-resolver@11.15.0)(rolldown@1.0.0-beta.45)(typescript@5.9.3) 4702 5214 semver: 7.7.3 4703 - tinyexec: 1.0.1 5215 + tinyexec: 1.0.2 4704 5216 tinyglobby: 0.2.15 4705 - unconfig: 7.3.3 5217 + tree-kill: 1.2.2 5218 + unconfig: 7.4.1 4706 5219 optionalDependencies: 4707 - typescript: 5.8.3 5220 + typescript: 5.9.3 4708 5221 transitivePeerDependencies: 5222 + - '@ts-macro/tsc' 4709 5223 - '@typescript/native-preview' 5224 + - ms 4710 5225 - oxc-resolver 4711 5226 - supports-color 4712 5227 - vue-tsc 4713 5228 4714 - tslib@2.8.1: 4715 - optional: true 5229 + tslib@2.8.1: {} 4716 5230 4717 5231 type-check@0.4.0: 4718 5232 dependencies: 4719 5233 prelude-ls: 1.2.1 4720 5234 4721 - typescript-eslint@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3): 5235 + typescript-eslint@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3): 4722 5236 dependencies: 4723 - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 4724 - '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 4725 - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.8.3) 5237 + '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 5238 + '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 5239 + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@5.9.3) 4726 5240 eslint: 9.29.0(jiti@2.6.1) 4727 - typescript: 5.8.3 5241 + typescript: 5.9.3 4728 5242 transitivePeerDependencies: 4729 5243 - supports-color 4730 5244 4731 - typescript@5.8.3: {} 5245 + typescript@5.9.3: {} 4732 5246 4733 5247 uint8arrays@3.0.0: 4734 5248 dependencies: 4735 5249 multiformats: 9.9.0 4736 5250 4737 - unconfig@7.3.3: 5251 + unconfig-core@7.4.1: 5252 + dependencies: 5253 + '@quansync/fs': 0.1.5 5254 + quansync: 0.2.11 5255 + 5256 + unconfig@7.4.1: 4738 5257 dependencies: 4739 5258 '@quansync/fs': 0.1.5 4740 5259 defu: 6.1.4 4741 5260 jiti: 2.6.1 4742 5261 quansync: 0.2.11 5262 + unconfig-core: 7.4.1 4743 5263 4744 5264 undici-types@7.8.0: {} 5265 + 5266 + unicode-segmenter@0.14.0: {} 4745 5267 4746 5268 universalify@0.1.2: {} 4747 5269