Live video on the AT Protocol
79
fork

Configure Feed

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

Merge pull request #212 from streamplace/natb/docs-openapi

docs: openapi gen with lexmd

authored by

Eli Mallon and committed by
GitHub
6771e253 53a41b05

+1177 -11
+7 -2
Makefile
··· 123 123 .PHONY: md-lexicons 124 124 md-lexicons: 125 125 pnpm exec lexmd \ 126 - lexicons/place/stream \ 127 - js/docs/src/content/docs/lex-reference \ 126 + ./lexicons \ 127 + .build/temp \ 128 + subprojects/atproto/lexicons \ 129 + js/docs/src/content/docs/lex-reference/openapi.json \ 130 + && ls -R .build/temp \ 131 + && cp -rf .build/temp/place/stream/* js/docs/src/content/docs/lex-reference/ \ 132 + && rm -rf .build/temp \ 128 133 && $(MAKE) fix 129 134 130 135 .PHONY: lexgen
+17
js/docs/astro.config.mjs
··· 1 1 // @ts-check 2 2 import { defineConfig } from "astro/config"; 3 3 import starlight from "@astrojs/starlight"; 4 + import starlightOpenAPI, { openAPISidebarGroups } from "starlight-openapi"; 4 5 5 6 // https://astro.build/config 6 7 export default defineConfig({ ··· 24 25 src: "/src/assets/cube.png", 25 26 alt: "Streamplace Logo", 26 27 }, 28 + plugins: [ 29 + starlightOpenAPI([ 30 + { 31 + base: "api", 32 + label: "Related XRPC API endpoints", 33 + schema: "./src/content/docs/lex-reference/openapi.json", // or your json generated from swagger 34 + sidebar: { 35 + operations: { 36 + badges: true, 37 + labels: "operationId", 38 + }, 39 + }, 40 + }, 41 + ]), 42 + ], 27 43 sidebar: [ 28 44 { 29 45 label: "Guides", ··· 46 62 label: "Lexicon Reference", 47 63 autogenerate: { directory: "lex-reference" }, 48 64 }, 65 + ...openAPISidebarGroups, 49 66 ], 50 67 }), 51 68 ],
+4 -1
js/docs/package.json
··· 14 14 "@fontsource/atkinson-hyperlegible-next": "^5.2.2", 15 15 "astro": "^5.6.1", 16 16 "sharp": "^0.32.5", 17 - "@streamplace/app": "workspace:*" 17 + "@streamplace/app": "workspace:*", 18 + "starlight-openapi": "^0.17.0", 19 + "starlight-openapi-rapidoc": "^0.8.1-beta", 20 + "streamplace": "workspace:*" 18 21 } 19 22 }
+934
js/docs/src/content/docs/lex-reference/openapi.json
··· 1 + { 2 + "openapi": "3.0.3", 3 + "info": { 4 + "title": "Generated Lexicon API schema", 5 + "version": "1.0.0", 6 + "description": "Autogenerated using lexmd" 7 + }, 8 + "paths": { 9 + "/xrpc/place.stream.live.getLiveUsers": { 10 + "get": { 11 + "summary": "Get a list of livestream segments for a user", 12 + "operationId": "place.stream.live.getLiveUsers", 13 + "tags": ["place.stream.live"], 14 + "responses": { 15 + "200": { 16 + "description": "Success", 17 + "content": { 18 + "application/json": { 19 + "schema": { 20 + "type": "object", 21 + "properties": { 22 + "streams": { 23 + "type": "array", 24 + "items": { 25 + "$ref": "#/components/schemas/place.stream.livestream_livestreamView" 26 + } 27 + } 28 + } 29 + } 30 + } 31 + } 32 + } 33 + }, 34 + "parameters": [ 35 + { 36 + "name": "limit", 37 + "in": "query", 38 + "required": false, 39 + "schema": { 40 + "type": "integer", 41 + "default": 50, 42 + "minimum": 1, 43 + "maximum": 100 44 + } 45 + }, 46 + { 47 + "name": "before", 48 + "in": "query", 49 + "required": false, 50 + "schema": { 51 + "type": "string", 52 + "format": "date-time" 53 + } 54 + } 55 + ] 56 + } 57 + }, 58 + "/xrpc/place.stream.live.getSegments": { 59 + "get": { 60 + "summary": "Get a list of livestream segments for a user", 61 + "operationId": "place.stream.live.getSegments", 62 + "tags": ["place.stream.live"], 63 + "responses": { 64 + "200": { 65 + "description": "Success", 66 + "content": { 67 + "application/json": { 68 + "schema": { 69 + "type": "object", 70 + "properties": { 71 + "segments": { 72 + "type": "array", 73 + "items": { 74 + "$ref": "#/components/schemas/place.stream.segment_segmentView" 75 + } 76 + } 77 + } 78 + } 79 + } 80 + } 81 + } 82 + }, 83 + "parameters": [ 84 + { 85 + "name": "userDID", 86 + "in": "query", 87 + "required": true, 88 + "description": "The DID of the potentially-following user", 89 + "schema": { 90 + "type": "string", 91 + "description": "The DID of the potentially-following user", 92 + "format": "did" 93 + } 94 + }, 95 + { 96 + "name": "limit", 97 + "in": "query", 98 + "required": false, 99 + "schema": { 100 + "type": "integer", 101 + "default": 50, 102 + "minimum": 1, 103 + "maximum": 100 104 + } 105 + }, 106 + { 107 + "name": "before", 108 + "in": "query", 109 + "required": false, 110 + "schema": { 111 + "type": "string", 112 + "format": "date-time" 113 + } 114 + } 115 + ] 116 + } 117 + }, 118 + "/xrpc/place.stream.graph.getFollowingUser": { 119 + "get": { 120 + "summary": "Get whether or not user A is following user B.", 121 + "operationId": "place.stream.graph.getFollowingUser", 122 + "tags": ["place.stream.graph"], 123 + "responses": { 124 + "200": { 125 + "description": "Success", 126 + "content": { 127 + "application/json": { 128 + "schema": { 129 + "type": "object", 130 + "properties": { 131 + "follow": { 132 + "$ref": "#/components/schemas/com.atproto.repo.strongRef" 133 + } 134 + } 135 + } 136 + } 137 + } 138 + } 139 + }, 140 + "parameters": [ 141 + { 142 + "name": "userDID", 143 + "in": "query", 144 + "required": true, 145 + "description": "The DID of the potentially-following user", 146 + "schema": { 147 + "type": "string", 148 + "description": "The DID of the potentially-following user", 149 + "format": "did" 150 + } 151 + }, 152 + { 153 + "name": "subjectDID", 154 + "in": "query", 155 + "required": true, 156 + "description": "The DID of the user potentially being followed", 157 + "schema": { 158 + "type": "string", 159 + "description": "The DID of the user potentially being followed", 160 + "format": "did" 161 + } 162 + } 163 + ] 164 + } 165 + }, 166 + "/xrpc/com.atproto.repo.uploadBlob": { 167 + "post": { 168 + "summary": "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.", 169 + "operationId": "com.atproto.repo.uploadBlob", 170 + "tags": ["com.atproto.repo"], 171 + "responses": { 172 + "200": { 173 + "description": "Success", 174 + "content": { 175 + "application/json": { 176 + "schema": { 177 + "type": "object", 178 + "properties": { 179 + "blob": { 180 + "type": "string", 181 + "format": "binary" 182 + } 183 + }, 184 + "required": ["blob"] 185 + } 186 + } 187 + } 188 + } 189 + }, 190 + "requestBody": { 191 + "required": true, 192 + "content": { 193 + "*/*": { 194 + "schema": {} 195 + } 196 + } 197 + } 198 + } 199 + }, 200 + "/xrpc/com.atproto.identity.resolveHandle": { 201 + "get": { 202 + "summary": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.", 203 + "operationId": "com.atproto.identity.resolveHandle", 204 + "tags": ["com.atproto.identity"], 205 + "responses": { 206 + "200": { 207 + "description": "Success", 208 + "content": { 209 + "application/json": { 210 + "schema": { 211 + "type": "object", 212 + "properties": { 213 + "did": { 214 + "type": "string", 215 + "format": "did" 216 + } 217 + }, 218 + "required": ["did"] 219 + } 220 + } 221 + } 222 + }, 223 + "400": { 224 + "description": "Bad Request", 225 + "content": { 226 + "application/json": { 227 + "schema": { 228 + "type": "object", 229 + "required": ["error", "message"], 230 + "properties": { 231 + "error": { 232 + "type": "string", 233 + "oneOf": [ 234 + { 235 + "const": "HandleNotFound" 236 + } 237 + ] 238 + }, 239 + "message": { 240 + "type": "string" 241 + } 242 + } 243 + } 244 + } 245 + } 246 + } 247 + }, 248 + "parameters": [ 249 + { 250 + "name": "handle", 251 + "in": "query", 252 + "required": true, 253 + "description": "The handle to resolve.", 254 + "schema": { 255 + "type": "string", 256 + "description": "The handle to resolve.", 257 + "format": "handle" 258 + } 259 + } 260 + ] 261 + } 262 + }, 263 + "/xrpc/app.bsky.feed.getFeedSkeleton": { 264 + "get": { 265 + "summary": "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.", 266 + "operationId": "app.bsky.feed.getFeedSkeleton", 267 + "tags": ["app.bsky.feed"], 268 + "responses": { 269 + "200": { 270 + "description": "Success", 271 + "content": { 272 + "application/json": { 273 + "schema": { 274 + "type": "object", 275 + "properties": { 276 + "cursor": { 277 + "type": "string" 278 + }, 279 + "feed": { 280 + "type": "array", 281 + "items": { 282 + "$ref": "#/components/schemas/app.bsky.feed.defs_skeletonFeedPost" 283 + } 284 + } 285 + }, 286 + "required": ["feed"] 287 + } 288 + } 289 + } 290 + }, 291 + "400": { 292 + "description": "Bad Request", 293 + "content": { 294 + "application/json": { 295 + "schema": { 296 + "type": "object", 297 + "required": ["error", "message"], 298 + "properties": { 299 + "error": { 300 + "type": "string", 301 + "oneOf": [ 302 + { 303 + "const": "UnknownFeed" 304 + } 305 + ] 306 + }, 307 + "message": { 308 + "type": "string" 309 + } 310 + } 311 + } 312 + } 313 + } 314 + } 315 + }, 316 + "parameters": [ 317 + { 318 + "name": "feed", 319 + "in": "query", 320 + "required": true, 321 + "description": "Reference to feed generator record describing the specific feed being requested.", 322 + "schema": { 323 + "type": "string", 324 + "description": "Reference to feed generator record describing the specific feed being requested.", 325 + "format": "uri" 326 + } 327 + }, 328 + { 329 + "name": "limit", 330 + "in": "query", 331 + "required": false, 332 + "schema": { 333 + "type": "integer", 334 + "default": 50, 335 + "minimum": 1, 336 + "maximum": 100 337 + } 338 + }, 339 + { 340 + "name": "cursor", 341 + "in": "query", 342 + "required": false, 343 + "schema": { 344 + "type": "string" 345 + } 346 + } 347 + ] 348 + } 349 + }, 350 + "/xrpc/app.bsky.actor.getProfile": { 351 + "get": { 352 + "summary": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.", 353 + "operationId": "app.bsky.actor.getProfile", 354 + "tags": ["app.bsky.actor"], 355 + "responses": { 356 + "200": { 357 + "description": "Success", 358 + "content": { 359 + "application/json": { 360 + "schema": { 361 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileViewDetailed" 362 + } 363 + } 364 + } 365 + } 366 + }, 367 + "parameters": [ 368 + { 369 + "name": "actor", 370 + "in": "query", 371 + "required": true, 372 + "description": "Handle or DID of account to fetch profile of.", 373 + "schema": { 374 + "type": "string", 375 + "description": "Handle or DID of account to fetch profile of.", 376 + "format": "at-identifier" 377 + } 378 + } 379 + ] 380 + } 381 + } 382 + }, 383 + "components": { 384 + "schemas": { 385 + "place.stream.livestream_livestreamView": { 386 + "type": "object", 387 + "properties": { 388 + "uri": { 389 + "type": "string", 390 + "format": "uri" 391 + }, 392 + "cid": { 393 + "type": "string", 394 + "format": "cid" 395 + }, 396 + "author": { 397 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileViewBasic" 398 + }, 399 + "record": {}, 400 + "indexedAt": { 401 + "type": "string", 402 + "format": "date-time" 403 + }, 404 + "viewerCount": { 405 + "$ref": "#/components/schemas/place.stream.livestream_viewerCount", 406 + "description": "The number of viewers watching this livestream. Use when you can't reasonably use #viewerCount directly." 407 + } 408 + }, 409 + "required": ["uri", "cid", "author", "record", "indexedAt"] 410 + }, 411 + "app.bsky.actor.defs_profileViewBasic": { 412 + "type": "object", 413 + "properties": { 414 + "did": { 415 + "type": "string", 416 + "format": "did" 417 + }, 418 + "handle": { 419 + "type": "string", 420 + "format": "handle" 421 + }, 422 + "displayName": { 423 + "type": "string", 424 + "maxLength": 640 425 + }, 426 + "avatar": { 427 + "type": "string", 428 + "format": "uri" 429 + }, 430 + "associated": { 431 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileAssociated" 432 + }, 433 + "viewer": { 434 + "$ref": "#/components/schemas/app.bsky.actor.defs_viewerState" 435 + }, 436 + "labels": { 437 + "type": "array", 438 + "items": { 439 + "$ref": "#/components/schemas/com.atproto.label.defs_label" 440 + } 441 + }, 442 + "createdAt": { 443 + "type": "string", 444 + "format": "date-time" 445 + }, 446 + "verification": { 447 + "$ref": "#/components/schemas/app.bsky.actor.defs_verificationState" 448 + }, 449 + "status": { 450 + "$ref": "#/components/schemas/app.bsky.actor.defs_statusView" 451 + } 452 + }, 453 + "required": ["did", "handle"] 454 + }, 455 + "app.bsky.actor.defs_profileAssociated": { 456 + "type": "object", 457 + "properties": { 458 + "lists": { 459 + "type": "integer" 460 + }, 461 + "feedgens": { 462 + "type": "integer" 463 + }, 464 + "starterPacks": { 465 + "type": "integer" 466 + }, 467 + "labeler": { 468 + "type": "boolean" 469 + }, 470 + "chat": { 471 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileAssociatedChat" 472 + } 473 + } 474 + }, 475 + "app.bsky.actor.defs_profileAssociatedChat": { 476 + "type": "object", 477 + "properties": { 478 + "allowIncoming": { 479 + "type": "string" 480 + } 481 + }, 482 + "required": ["allowIncoming"] 483 + }, 484 + "app.bsky.actor.defs_viewerState": { 485 + "type": "object", 486 + "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 487 + "properties": { 488 + "muted": { 489 + "type": "boolean" 490 + }, 491 + "mutedByList": { 492 + "$ref": "#/components/schemas/app.bsky.graph.defs_listViewBasic" 493 + }, 494 + "blockedBy": { 495 + "type": "boolean" 496 + }, 497 + "blocking": { 498 + "type": "string", 499 + "format": "uri" 500 + }, 501 + "blockingByList": { 502 + "$ref": "#/components/schemas/app.bsky.graph.defs_listViewBasic" 503 + }, 504 + "following": { 505 + "type": "string", 506 + "format": "uri" 507 + }, 508 + "followedBy": { 509 + "type": "string", 510 + "format": "uri" 511 + }, 512 + "knownFollowers": { 513 + "$ref": "#/components/schemas/app.bsky.actor.defs_knownFollowers" 514 + } 515 + } 516 + }, 517 + "app.bsky.graph.defs_listViewBasic": { 518 + "type": "object", 519 + "properties": { 520 + "uri": { 521 + "type": "string", 522 + "format": "uri" 523 + }, 524 + "cid": { 525 + "type": "string", 526 + "format": "cid" 527 + }, 528 + "name": { 529 + "type": "string", 530 + "minLength": 1, 531 + "maxLength": 64 532 + }, 533 + "purpose": { 534 + "$ref": "#/components/schemas/app.bsky.graph.defs_listPurpose" 535 + }, 536 + "avatar": { 537 + "type": "string", 538 + "format": "uri" 539 + }, 540 + "listItemCount": { 541 + "type": "integer", 542 + "minimum": 0 543 + }, 544 + "labels": { 545 + "type": "array", 546 + "items": { 547 + "$ref": "#/components/schemas/com.atproto.label.defs_label" 548 + } 549 + }, 550 + "viewer": { 551 + "$ref": "#/components/schemas/app.bsky.graph.defs_listViewerState" 552 + }, 553 + "indexedAt": { 554 + "type": "string", 555 + "format": "date-time" 556 + } 557 + }, 558 + "required": ["uri", "cid", "name", "purpose"] 559 + }, 560 + "app.bsky.graph.defs_listPurpose": { 561 + "type": "string" 562 + }, 563 + "com.atproto.label.defs_label": { 564 + "type": "object", 565 + "description": "Metadata tag on an atproto resource (eg, repo or record).", 566 + "properties": { 567 + "ver": { 568 + "type": "integer", 569 + "description": "The AT Protocol version of the label object." 570 + }, 571 + "src": { 572 + "type": "string", 573 + "description": "DID of the actor who created this label.", 574 + "format": "did" 575 + }, 576 + "uri": { 577 + "type": "string", 578 + "description": "AT URI of the record, repository (account), or other resource that this label applies to.", 579 + "format": "uri" 580 + }, 581 + "cid": { 582 + "type": "string", 583 + "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", 584 + "format": "cid" 585 + }, 586 + "val": { 587 + "type": "string", 588 + "description": "The short string name of the value or type of this label.", 589 + "maxLength": 128 590 + }, 591 + "neg": { 592 + "type": "boolean", 593 + "description": "If true, this is a negation label, overwriting a previous label." 594 + }, 595 + "cts": { 596 + "type": "string", 597 + "description": "Timestamp when this label was created.", 598 + "format": "date-time" 599 + }, 600 + "exp": { 601 + "type": "string", 602 + "description": "Timestamp at which this label expires (no longer applies).", 603 + "format": "date-time" 604 + }, 605 + "sig": { 606 + "type": "string", 607 + "format": "byte", 608 + "description": "Signature of dag-cbor encoded label." 609 + } 610 + }, 611 + "required": ["src", "uri", "val", "cts"] 612 + }, 613 + "app.bsky.graph.defs_listViewerState": { 614 + "type": "object", 615 + "properties": { 616 + "muted": { 617 + "type": "boolean" 618 + }, 619 + "blocked": { 620 + "type": "string", 621 + "format": "uri" 622 + } 623 + } 624 + }, 625 + "app.bsky.actor.defs_knownFollowers": { 626 + "type": "object", 627 + "description": "The subject's followers whom you also follow", 628 + "properties": { 629 + "count": { 630 + "type": "integer" 631 + }, 632 + "followers": { 633 + "type": "array", 634 + "items": { 635 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileViewBasic" 636 + }, 637 + "minItems": 0, 638 + "maxItems": 5 639 + } 640 + }, 641 + "required": ["count", "followers"] 642 + }, 643 + "app.bsky.actor.defs_verificationState": { 644 + "type": "object", 645 + "description": "Represents the verification information about the user this object is attached to.", 646 + "properties": { 647 + "verifications": { 648 + "type": "array", 649 + "description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.", 650 + "items": { 651 + "$ref": "#/components/schemas/app.bsky.actor.defs_verificationView" 652 + } 653 + }, 654 + "verifiedStatus": { 655 + "type": "string", 656 + "description": "The user's status as a verified account." 657 + }, 658 + "trustedVerifierStatus": { 659 + "type": "string", 660 + "description": "The user's status as a trusted verifier." 661 + } 662 + }, 663 + "required": ["verifications", "verifiedStatus", "trustedVerifierStatus"] 664 + }, 665 + "app.bsky.actor.defs_verificationView": { 666 + "type": "object", 667 + "description": "An individual verification for an associated subject.", 668 + "properties": { 669 + "issuer": { 670 + "type": "string", 671 + "description": "The user who issued this verification.", 672 + "format": "did" 673 + }, 674 + "uri": { 675 + "type": "string", 676 + "description": "The AT-URI of the verification record.", 677 + "format": "uri" 678 + }, 679 + "isValid": { 680 + "type": "boolean", 681 + "description": "True if the verification passes validation, otherwise false." 682 + }, 683 + "createdAt": { 684 + "type": "string", 685 + "description": "Timestamp when the verification was created.", 686 + "format": "date-time" 687 + } 688 + }, 689 + "required": ["issuer", "uri", "isValid", "createdAt"] 690 + }, 691 + "app.bsky.actor.defs_statusView": { 692 + "type": "object", 693 + "properties": { 694 + "status": { 695 + "type": "string", 696 + "description": "The status for the account." 697 + }, 698 + "record": {}, 699 + "embed": { 700 + "oneOf": [ 701 + { 702 + "$ref": "#/components/schemas/app.bsky.embed.external_view" 703 + } 704 + ], 705 + "description": "An optional embed associated with the status." 706 + }, 707 + "expiresAt": { 708 + "type": "string", 709 + "description": "The date when this status will expire. The application might choose to no longer return the status after expiration.", 710 + "format": "date-time" 711 + }, 712 + "isActive": { 713 + "type": "boolean", 714 + "description": "True if the status is not expired, false if it is expired. Only present if expiration was set." 715 + } 716 + }, 717 + "required": ["status", "record"] 718 + }, 719 + "app.bsky.embed.external_view": { 720 + "type": "object", 721 + "properties": { 722 + "external": { 723 + "$ref": "#/components/schemas/app.bsky.embed.external_viewExternal" 724 + } 725 + }, 726 + "required": ["external"] 727 + }, 728 + "app.bsky.embed.external_viewExternal": { 729 + "type": "object", 730 + "properties": { 731 + "uri": { 732 + "type": "string", 733 + "format": "uri" 734 + }, 735 + "title": { 736 + "type": "string" 737 + }, 738 + "description": { 739 + "type": "string" 740 + }, 741 + "thumb": { 742 + "type": "string", 743 + "format": "uri" 744 + } 745 + }, 746 + "required": ["uri", "title", "description"] 747 + }, 748 + "place.stream.livestream_viewerCount": { 749 + "type": "object", 750 + "properties": { 751 + "count": { 752 + "type": "integer" 753 + } 754 + }, 755 + "required": ["count"] 756 + }, 757 + "place.stream.segment_segmentView": { 758 + "type": "object", 759 + "properties": { 760 + "cid": { 761 + "type": "string", 762 + "format": "cid" 763 + }, 764 + "record": {} 765 + }, 766 + "required": ["cid", "record"] 767 + }, 768 + "com.atproto.repo.strongRef": { 769 + "type": "object", 770 + "properties": { 771 + "uri": { 772 + "type": "string", 773 + "format": "uri" 774 + }, 775 + "cid": { 776 + "type": "string", 777 + "format": "cid" 778 + } 779 + }, 780 + "required": ["uri", "cid"] 781 + }, 782 + "app.bsky.feed.defs_skeletonFeedPost": { 783 + "type": "object", 784 + "properties": { 785 + "post": { 786 + "type": "string", 787 + "format": "uri" 788 + }, 789 + "reason": { 790 + "oneOf": [ 791 + { 792 + "$ref": "#/components/schemas/app.bsky.feed.defs_skeletonReasonRepost" 793 + }, 794 + { 795 + "$ref": "#/components/schemas/app.bsky.feed.defs_skeletonReasonPin" 796 + } 797 + ] 798 + }, 799 + "feedContext": { 800 + "type": "string", 801 + "description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions.", 802 + "maxLength": 2000 803 + } 804 + }, 805 + "required": ["post"] 806 + }, 807 + "app.bsky.feed.defs_skeletonReasonRepost": { 808 + "type": "object", 809 + "properties": { 810 + "repost": { 811 + "type": "string", 812 + "format": "uri" 813 + } 814 + }, 815 + "required": ["repost"] 816 + }, 817 + "app.bsky.feed.defs_skeletonReasonPin": { 818 + "type": "object", 819 + "properties": {} 820 + }, 821 + "app.bsky.actor.defs_profileViewDetailed": { 822 + "type": "object", 823 + "properties": { 824 + "did": { 825 + "type": "string", 826 + "format": "did" 827 + }, 828 + "handle": { 829 + "type": "string", 830 + "format": "handle" 831 + }, 832 + "displayName": { 833 + "type": "string", 834 + "maxLength": 640 835 + }, 836 + "description": { 837 + "type": "string", 838 + "maxLength": 2560 839 + }, 840 + "avatar": { 841 + "type": "string", 842 + "format": "uri" 843 + }, 844 + "banner": { 845 + "type": "string", 846 + "format": "uri" 847 + }, 848 + "followersCount": { 849 + "type": "integer" 850 + }, 851 + "followsCount": { 852 + "type": "integer" 853 + }, 854 + "postsCount": { 855 + "type": "integer" 856 + }, 857 + "associated": { 858 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileAssociated" 859 + }, 860 + "joinedViaStarterPack": { 861 + "$ref": "#/components/schemas/app.bsky.graph.defs_starterPackViewBasic" 862 + }, 863 + "indexedAt": { 864 + "type": "string", 865 + "format": "date-time" 866 + }, 867 + "createdAt": { 868 + "type": "string", 869 + "format": "date-time" 870 + }, 871 + "viewer": { 872 + "$ref": "#/components/schemas/app.bsky.actor.defs_viewerState" 873 + }, 874 + "labels": { 875 + "type": "array", 876 + "items": { 877 + "$ref": "#/components/schemas/com.atproto.label.defs_label" 878 + } 879 + }, 880 + "pinnedPost": { 881 + "$ref": "#/components/schemas/com.atproto.repo.strongRef" 882 + }, 883 + "verification": { 884 + "$ref": "#/components/schemas/app.bsky.actor.defs_verificationState" 885 + }, 886 + "status": { 887 + "$ref": "#/components/schemas/app.bsky.actor.defs_statusView" 888 + } 889 + }, 890 + "required": ["did", "handle"] 891 + }, 892 + "app.bsky.graph.defs_starterPackViewBasic": { 893 + "type": "object", 894 + "properties": { 895 + "uri": { 896 + "type": "string", 897 + "format": "uri" 898 + }, 899 + "cid": { 900 + "type": "string", 901 + "format": "cid" 902 + }, 903 + "record": {}, 904 + "creator": { 905 + "$ref": "#/components/schemas/app.bsky.actor.defs_profileViewBasic" 906 + }, 907 + "listItemCount": { 908 + "type": "integer", 909 + "minimum": 0 910 + }, 911 + "joinedWeekCount": { 912 + "type": "integer", 913 + "minimum": 0 914 + }, 915 + "joinedAllTimeCount": { 916 + "type": "integer", 917 + "minimum": 0 918 + }, 919 + "labels": { 920 + "type": "array", 921 + "items": { 922 + "$ref": "#/components/schemas/com.atproto.label.defs_label" 923 + } 924 + }, 925 + "indexedAt": { 926 + "type": "string", 927 + "format": "date-time" 928 + } 929 + }, 930 + "required": ["uri", "cid", "record", "creator", "indexedAt"] 931 + } 932 + } 933 + } 934 + }
+1 -1
package.json
··· 37 37 ], 38 38 "dependencies": { 39 39 "firebase-admin": "^12.7.0", 40 - "lex-md": "^0.0.3" 40 + "lex-md": "^0.1.0" 41 41 }, 42 42 "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" 43 43 }
+214 -7
pnpm-lock.yaml
··· 12 12 specifier: ^12.7.0 13 13 version: 12.7.0(encoding@0.1.13) 14 14 lex-md: 15 - specifier: ^0.0.3 16 - version: 0.0.3 15 + specifier: ^0.1.0 16 + version: 0.1.0 17 17 devDependencies: 18 18 '@atproto/lex-cli': 19 19 specifier: ^0.5.6 ··· 499 499 sharp: 500 500 specifier: ^0.32.5 501 501 version: 0.32.6 502 + starlight-openapi: 503 + specifier: ^0.17.0 504 + version: 0.17.0(@astrojs/starlight@0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)))(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1))(openapi-types@12.1.3) 505 + starlight-openapi-rapidoc: 506 + specifier: ^0.8.1-beta 507 + version: 0.8.1-beta(@astrojs/starlight@0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)))(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1))(openapi-types@12.1.3) 508 + streamplace: 509 + specifier: workspace:* 510 + version: link:../streamplace 502 511 503 512 js/streamplace: 504 513 dependencies: ··· 540 549 resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 541 550 engines: {node: '>=6.0.0'} 542 551 552 + '@apidevtools/openapi-schemas@2.1.0': 553 + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} 554 + engines: {node: '>=10'} 555 + 556 + '@apidevtools/swagger-methods@3.0.2': 557 + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} 558 + 543 559 '@astrojs/compiler@2.12.0': 544 560 resolution: {integrity: sha512-7bCjW6tVDpUurQLeKBUN9tZ5kSv5qYrGmcn0sG0IwacL7isR2ZbyyA3AdZ4uxsuUFOS2SlgReTH7wkxO6zpqWA==} 545 561 ··· 570 586 '@astrojs/telemetry@3.2.1': 571 587 resolution: {integrity: sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg==} 572 588 engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} 589 + 590 + '@astropub/md@0.4.0': 591 + resolution: {integrity: sha512-f0kJIfywRKLcVqlizqUPModBBuJ7WwBEIWJEt1Eq/ksSYixtOl8HQWMZKJhv9Xtc9OKHhkQf0AQc56EV1xNUnw==} 592 + peerDependencies: 593 + '@astrojs/markdown-remark': ^4 573 594 574 595 '@atproto-labs/did-resolver@0.1.12': 575 596 resolution: {integrity: sha512-criWN7o21C5TFsauB+bGTlkqqerOU6gT2TbxdQVgZUWqNcfazUmUjT4gJAY02i+O4d3QmZa27fv9CcaRKWkSug==} ··· 2707 2728 resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 2708 2729 engines: {node: '>=12.22'} 2709 2730 2731 + '@humanwhocodes/momoa@2.0.4': 2732 + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} 2733 + engines: {node: '>=10.10.0'} 2734 + 2710 2735 '@humanwhocodes/retry@0.3.1': 2711 2736 resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 2712 2737 engines: {node: '>=18.18'} ··· 2896 2921 2897 2922 '@js-sdsl/ordered-map@4.4.2': 2898 2923 resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} 2924 + 2925 + '@jsdevtools/ono@7.1.3': 2926 + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} 2899 2927 2900 2928 '@leichtgewicht/ip-codec@2.0.5': 2901 2929 resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} ··· 3528 3556 '@react-navigation/routers@6.1.9': 3529 3557 resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} 3530 3558 3559 + '@readme/better-ajv-errors@1.6.0': 3560 + resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} 3561 + engines: {node: '>=14'} 3562 + peerDependencies: 3563 + ajv: 4.11.8 - 8 3564 + 3565 + '@readme/better-ajv-errors@2.3.2': 3566 + resolution: {integrity: sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==} 3567 + engines: {node: '>=18'} 3568 + peerDependencies: 3569 + ajv: 4.11.8 - 8 3570 + 3571 + '@readme/json-schema-ref-parser@1.2.0': 3572 + resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} 3573 + deprecated: This package is no longer maintained. Please use `@apidevtools/json-schema-ref-parser` instead. 3574 + 3575 + '@readme/openapi-parser@2.5.0': 3576 + resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} 3577 + engines: {node: '>=14'} 3578 + peerDependencies: 3579 + openapi-types: '>=7' 3580 + 3581 + '@readme/openapi-parser@2.7.0': 3582 + resolution: {integrity: sha512-P8WSr8WTOxilnT89tcCRKWYsG/II4sAwt1a/DIWub8xTtkrG9cCBBy/IUcvc5X8oGWN82MwcTA3uEkDrXZd/7A==} 3583 + engines: {node: '>=18'} 3584 + peerDependencies: 3585 + openapi-types: '>=7' 3586 + 3587 + '@readme/openapi-schemas@3.1.0': 3588 + resolution: {integrity: sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw==} 3589 + engines: {node: '>=18'} 3590 + 3531 3591 '@reduxjs/toolkit@2.3.0': 3532 3592 resolution: {integrity: sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==} 3533 3593 peerDependencies: ··· 5173 5233 resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 5174 5234 engines: {node: '>=8'} 5175 5235 5236 + ajv-draft-04@1.0.0: 5237 + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} 5238 + peerDependencies: 5239 + ajv: ^8.5.0 5240 + peerDependenciesMeta: 5241 + ajv: 5242 + optional: true 5243 + 5176 5244 ajv-formats@2.1.1: 5177 5245 resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 5178 5246 peerDependencies: ··· 5757 5825 resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 5758 5826 engines: {node: '>= 0.4'} 5759 5827 5828 + call-me-maybe@1.0.2: 5829 + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} 5830 + 5760 5831 caller-callsite@2.0.0: 5761 5832 resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} 5762 5833 engines: {node: '>=4'} ··· 5987 6058 5988 6059 code-block-writer@11.0.3: 5989 6060 resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} 6061 + 6062 + code-error-fragment@0.0.230: 6063 + resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} 6064 + engines: {node: '>= 4'} 5990 6065 5991 6066 collapse-white-space@2.1.0: 5992 6067 resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} ··· 7757 7832 graceful-fs@4.2.11: 7758 7833 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 7759 7834 7835 + grapheme-splitter@1.0.4: 7836 + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 7837 + 7760 7838 graphemer@1.4.0: 7761 7839 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 7762 7840 ··· 8609 8687 json-stringify-safe@5.0.1: 8610 8688 resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 8611 8689 8690 + json-to-ast@2.1.0: 8691 + resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} 8692 + engines: {node: '>= 4'} 8693 + 8612 8694 json5@1.0.2: 8613 8695 resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 8614 8696 hasBin: true ··· 8711 8793 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 8712 8794 engines: {node: '>= 0.8.0'} 8713 8795 8714 - lex-md@0.0.3: 8715 - resolution: {integrity: sha512-eEvTtWgetVJHeS9npghNPZLL/zJVC1whoGNbz7j9DE/IxNGVUuBPQl7kdl/zl/86/8stGB/dS8e+8dGvRjRo2A==} 8796 + lex-md@0.1.0: 8797 + resolution: {integrity: sha512-u9xnSBxwi/s8IFic2AgYkU7nvzrKYL7KswAEj9/Nifxc1KVuwLns2YFVWd12i/O0QRnYAca3bn9TZhOq97HmXQ==} 8716 8798 hasBin: true 8717 8799 8718 8800 libnpmaccess@8.0.6: ··· 9993 10075 open@8.4.2: 9994 10076 resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} 9995 10077 engines: {node: '>=12'} 10078 + 10079 + openapi-types@12.1.3: 10080 + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} 9996 10081 9997 10082 optionator@0.9.4: 9998 10083 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} ··· 11555 11640 resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} 11556 11641 engines: {node: '>=6'} 11557 11642 11643 + starlight-openapi-rapidoc@0.8.1-beta: 11644 + resolution: {integrity: sha512-CicjuydKZsO8jZvhrtzz+GGWyfHnOZCZY/ww562H58CP/zSnskWcmcgVnCuD7DkKfi0ofvqumyyee1KgfkVipQ==} 11645 + engines: {node: '>=18.14.1'} 11646 + peerDependencies: 11647 + '@astrojs/starlight': '>=0.19.0' 11648 + astro: '>=4.2.7' 11649 + 11650 + starlight-openapi@0.17.0: 11651 + resolution: {integrity: sha512-YpsCixhHppsB8KZpFfVwF/0YzS3tE2zHZJQaCPb3Vld0AvKZaFsETr7WzklTDmVPv94CgQt5quZrWnVX3TrWQw==} 11652 + engines: {node: '>=18.17.1'} 11653 + peerDependencies: 11654 + '@astrojs/markdown-remark': '>=6.0.1' 11655 + '@astrojs/starlight': '>=0.34.0' 11656 + astro: '>=5.5.0' 11657 + 11558 11658 statuses@1.5.0: 11559 11659 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} 11560 11660 engines: {node: '>= 0.6'} ··· 12359 12459 uri-js@4.4.1: 12360 12460 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 12361 12461 12462 + url-template@3.1.1: 12463 + resolution: {integrity: sha512-4oszoaEKE/mQOtAmdMWqIRHmkxWkUZMnXFnjQ5i01CuRSK3uluxcH1MRVVVWmhlnzT1SCDfKxxficm2G37qzCA==} 12464 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 12465 + 12362 12466 use-callback-ref@1.3.2: 12363 12467 resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} 12364 12468 engines: {node: '>=10'} ··· 12950 13054 '@jridgewell/gen-mapping': 0.3.5 12951 13055 '@jridgewell/trace-mapping': 0.3.25 12952 13056 13057 + '@apidevtools/openapi-schemas@2.1.0': {} 13058 + 13059 + '@apidevtools/swagger-methods@3.0.2': {} 13060 + 12953 13061 '@astrojs/compiler@2.12.0': {} 12954 13062 12955 13063 '@astrojs/internal-helpers@0.6.1': {} ··· 13053 13161 which-pm-runs: 1.1.0 13054 13162 transitivePeerDependencies: 13055 13163 - supports-color 13164 + 13165 + '@astropub/md@0.4.0': {} 13056 13166 13057 13167 '@atproto-labs/did-resolver@0.1.12': 13058 13168 dependencies: ··· 16383 16493 16384 16494 '@humanwhocodes/module-importer@1.0.1': {} 16385 16495 16496 + '@humanwhocodes/momoa@2.0.4': {} 16497 + 16386 16498 '@humanwhocodes/retry@0.3.1': {} 16387 16499 16388 16500 '@humanwhocodes/retry@0.4.0': {} ··· 16571 16683 16572 16684 '@js-sdsl/ordered-map@4.4.2': 16573 16685 optional: true 16686 + 16687 + '@jsdevtools/ono@7.1.3': {} 16574 16688 16575 16689 '@leichtgewicht/ip-codec@2.0.5': {} 16576 16690 ··· 17537 17651 dependencies: 17538 17652 nanoid: 3.3.11 17539 17653 17654 + '@readme/better-ajv-errors@1.6.0(ajv@8.16.0)': 17655 + dependencies: 17656 + '@babel/code-frame': 7.27.1 17657 + '@babel/runtime': 7.26.0 17658 + '@humanwhocodes/momoa': 2.0.4 17659 + ajv: 8.16.0 17660 + chalk: 4.1.2 17661 + json-to-ast: 2.1.0 17662 + jsonpointer: 5.0.1 17663 + leven: 3.1.0 17664 + 17665 + '@readme/better-ajv-errors@2.3.2(ajv@8.16.0)': 17666 + dependencies: 17667 + '@babel/code-frame': 7.27.1 17668 + '@babel/runtime': 7.26.0 17669 + '@humanwhocodes/momoa': 2.0.4 17670 + ajv: 8.16.0 17671 + jsonpointer: 5.0.1 17672 + leven: 3.1.0 17673 + picocolors: 1.1.1 17674 + 17675 + '@readme/json-schema-ref-parser@1.2.0': 17676 + dependencies: 17677 + '@jsdevtools/ono': 7.1.3 17678 + '@types/json-schema': 7.0.15 17679 + call-me-maybe: 1.0.2 17680 + js-yaml: 4.1.0 17681 + 17682 + '@readme/openapi-parser@2.5.0(openapi-types@12.1.3)': 17683 + dependencies: 17684 + '@apidevtools/openapi-schemas': 2.1.0 17685 + '@apidevtools/swagger-methods': 3.0.2 17686 + '@jsdevtools/ono': 7.1.3 17687 + '@readme/better-ajv-errors': 1.6.0(ajv@8.16.0) 17688 + '@readme/json-schema-ref-parser': 1.2.0 17689 + ajv: 8.16.0 17690 + ajv-draft-04: 1.0.0(ajv@8.16.0) 17691 + call-me-maybe: 1.0.2 17692 + openapi-types: 12.1.3 17693 + 17694 + '@readme/openapi-parser@2.7.0(openapi-types@12.1.3)': 17695 + dependencies: 17696 + '@apidevtools/swagger-methods': 3.0.2 17697 + '@jsdevtools/ono': 7.1.3 17698 + '@readme/better-ajv-errors': 2.3.2(ajv@8.16.0) 17699 + '@readme/json-schema-ref-parser': 1.2.0 17700 + '@readme/openapi-schemas': 3.1.0 17701 + ajv: 8.16.0 17702 + ajv-draft-04: 1.0.0(ajv@8.16.0) 17703 + call-me-maybe: 1.0.2 17704 + openapi-types: 12.1.3 17705 + 17706 + '@readme/openapi-schemas@3.1.0': {} 17707 + 17540 17708 '@reduxjs/toolkit@2.3.0(react-redux@9.1.2(@types/react@18.3.12)(react@18.3.1)(redux@5.0.1))(react@18.3.1)': 17541 17709 dependencies: 17542 17710 immer: 10.1.1 ··· 20377 20545 dependencies: 20378 20546 clean-stack: 2.2.0 20379 20547 indent-string: 4.0.0 20548 + 20549 + ajv-draft-04@1.0.0(ajv@8.16.0): 20550 + optionalDependencies: 20551 + ajv: 8.16.0 20380 20552 20381 20553 ajv-formats@2.1.1(ajv@8.16.0): 20382 20554 optionalDependencies: ··· 21167 21339 get-intrinsic: 1.2.4 21168 21340 set-function-length: 1.2.2 21169 21341 21342 + call-me-maybe@1.0.2: {} 21343 + 21170 21344 caller-callsite@2.0.0: 21171 21345 dependencies: 21172 21346 callsites: 2.0.0 ··· 21391 21565 cmd-shim@6.0.3: {} 21392 21566 21393 21567 code-block-writer@11.0.3: {} 21568 + 21569 + code-error-fragment@0.0.230: {} 21394 21570 21395 21571 collapse-white-space@2.1.0: {} 21396 21572 ··· 23656 23832 23657 23833 graceful-fs@4.2.11: {} 23658 23834 23835 + grapheme-splitter@1.0.4: {} 23836 + 23659 23837 graphemer@1.4.0: {} 23660 23838 23661 23839 gtoken@7.1.0(encoding@0.1.13): ··· 24660 24838 24661 24839 json-stringify-safe@5.0.1: {} 24662 24840 24841 + json-to-ast@2.1.0: 24842 + dependencies: 24843 + code-error-fragment: 0.0.230 24844 + grapheme-splitter: 1.0.4 24845 + 24663 24846 json5@1.0.2: 24664 24847 dependencies: 24665 24848 minimist: 1.2.8 ··· 24680 24863 24681 24864 jsonparse@1.3.1: {} 24682 24865 24683 - jsonpointer@5.0.1: 24684 - optional: true 24866 + jsonpointer@5.0.1: {} 24685 24867 24686 24868 jsonwebtoken@9.0.2: 24687 24869 dependencies: ··· 24863 25045 prelude-ls: 1.2.1 24864 25046 type-check: 0.4.0 24865 25047 24866 - lex-md@0.0.3: 25048 + lex-md@0.1.0: 24867 25049 dependencies: 24868 25050 '@atproto/syntax': 0.4.0 24869 25051 zod: 3.24.4 ··· 26756 26938 define-lazy-prop: 2.0.0 26757 26939 is-docker: 2.2.1 26758 26940 is-wsl: 2.2.0 26941 + 26942 + openapi-types@12.1.3: {} 26759 26943 26760 26944 optionator@0.9.4: 26761 26945 dependencies: ··· 28686 28870 dependencies: 28687 28871 type-fest: 0.7.1 28688 28872 28873 + starlight-openapi-rapidoc@0.8.1-beta(@astrojs/starlight@0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)))(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1))(openapi-types@12.1.3): 28874 + dependencies: 28875 + '@astrojs/starlight': 0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)) 28876 + '@astropub/md': 0.4.0 28877 + '@readme/openapi-parser': 2.5.0(openapi-types@12.1.3) 28878 + astro: 5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1) 28879 + github-slugger: 2.0.0 28880 + transitivePeerDependencies: 28881 + - '@astrojs/markdown-remark' 28882 + - openapi-types 28883 + 28884 + starlight-openapi@0.17.0(@astrojs/starlight@0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)))(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1))(openapi-types@12.1.3): 28885 + dependencies: 28886 + '@astrojs/starlight': 0.34.2(astro@5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1)) 28887 + '@readme/openapi-parser': 2.7.0(openapi-types@12.1.3) 28888 + astro: 5.7.10(@types/node@22.15.17)(encoding@0.1.13)(idb-keyval@6.2.1)(jiti@1.21.6)(lightningcss@1.29.1)(rollup@4.40.1)(terser@5.32.0)(typescript@5.8.3)(yaml@2.5.1) 28889 + github-slugger: 2.0.0 28890 + url-template: 3.1.1 28891 + transitivePeerDependencies: 28892 + - openapi-types 28893 + 28689 28894 statuses@1.5.0: {} 28690 28895 28691 28896 statuses@2.0.1: {} ··· 29576 29781 uri-js@4.4.1: 29577 29782 dependencies: 29578 29783 punycode: 2.3.1 29784 + 29785 + url-template@3.1.1: {} 29579 29786 29580 29787 use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): 29581 29788 dependencies: