[READ-ONLY] a fast, modern browser for the npm registry

chore(i18n): generate JSON Schema for locale files (#1249)

authored by philippeserhal.com and committed by

GitHub 91df60a9 2a474e97

+3317 -22
+5
.github/workflows/ci.yml
··· 235 235 236 236 - name: 🌐 Check for missing or dynamic i18n keys 237 237 run: pnpm i18n:report 238 + 239 + - name: 🌐 Check i18n schema is up to date 240 + run: | 241 + pnpm i18n:schema 242 + git diff --exit-code i18n/schema.json
+3 -1
i18n/locales/ar-EG.json
··· 1 - {} 1 + { 2 + "$schema": "../schema.json" 3 + }
+1
i18n/locales/ar.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - متصفح الحزم لسجل npm",
+1
i18n/locales/az-AZ.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npm Reyestri üçün Paket Brauzeri",
+1
i18n/locales/cs-CZ.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Prohlížeč balíčků pro registr npm",
+1
i18n/locales/de-DE.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Paket-Browser für die npm Registry",
+1
i18n/locales/en-GB.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "settings": { 3 4 "tagline": "customise your npmx experience", 4 5 "clear_accent": "Clear accent colour"
+3 -1
i18n/locales/en-US.json
··· 1 - {} 1 + { 2 + "$schema": "../schema.json" 3 + }
+1
i18n/locales/en.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Package Browser for the npm Registry",
+1
i18n/locales/es-419.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "built_at": "generado {0}", 3 4 "alt_logo": "logo de npmx", 4 5 "connector": {
+3 -1
i18n/locales/es-ES.json
··· 1 - {} 1 + { 2 + "$schema": "../schema.json" 3 + }
+1
i18n/locales/es.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Explorador de Paquetes para el Registro npm",
+1
i18n/locales/fr-FR.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Explorateur de paquets pour le registre npm",
+1
i18n/locales/hi-IN.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npm रजिस्ट्री के लिए पैकेज ब्राउज़र",
+1
i18n/locales/hu-HU.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Csomagböngésző az npm regiszterhez",
+1
i18n/locales/id-ID.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Penjelajah Paket untuk Registri npm",
+1
i18n/locales/it-IT.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Il browser dei pacchetti npm",
+1
i18n/locales/ja-JP.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npmレジストリのためのパッケージブラウザ",
+1
i18n/locales/mr-IN.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npm नोंदणीसाठी पॅकेज ब्राउझर",
+1
i18n/locales/ne-NP.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npm रजिस्ट्रीका लागि प्याकेज ब्राउजर",
+1
i18n/locales/no-NO.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Pakkeleser for npm-registeret",
+1
i18n/locales/pl-PL.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Przeglądarka pakietów dla rejestru npm",
+1
i18n/locales/pt-BR.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Navegador de Pacotes para o Registro npm",
+1
i18n/locales/ru-RU.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx — Браузер пакетов для реестра npm",
+1
i18n/locales/te-IN.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - npm రిజిస్ట్రీకి ప్యాకేజ్ బ్రౌజర్",
+1
i18n/locales/uk-UA.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - Браузер пакетів для реєстру npm",
+1
i18n/locales/zh-CN.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - 更好的 npm 仓库浏览工具",
+1
i18n/locales/zh-TW.json
··· 1 1 { 2 + "$schema": "../schema.json", 2 3 "seo": { 3 4 "home": { 4 5 "title": "npmx - 更好的 npm 套件註冊表瀏覽工具",
+3174
i18n/schema.json
··· 1 + { 2 + "$schema": "http://json-schema.org/draft-07/schema#", 3 + "title": "npmx i18n locale file", 4 + "description": "Schema for npmx i18n translation files. Generated from en.json — do not edit manually.", 5 + "type": "object", 6 + "properties": { 7 + "seo": { 8 + "type": "object", 9 + "properties": { 10 + "home": { 11 + "type": "object", 12 + "properties": { 13 + "title": { 14 + "type": "string" 15 + }, 16 + "description": { 17 + "type": "string" 18 + } 19 + }, 20 + "additionalProperties": false 21 + } 22 + }, 23 + "additionalProperties": false 24 + }, 25 + "built_at": { 26 + "type": "string" 27 + }, 28 + "alt_logo": { 29 + "type": "string" 30 + }, 31 + "tagline": { 32 + "type": "string" 33 + }, 34 + "non_affiliation_disclaimer": { 35 + "type": "string" 36 + }, 37 + "trademark_disclaimer": { 38 + "type": "string" 39 + }, 40 + "footer": { 41 + "type": "object", 42 + "properties": { 43 + "about": { 44 + "type": "string" 45 + }, 46 + "docs": { 47 + "type": "string" 48 + }, 49 + "source": { 50 + "type": "string" 51 + }, 52 + "social": { 53 + "type": "string" 54 + }, 55 + "chat": { 56 + "type": "string" 57 + }, 58 + "keyboard_shortcuts": { 59 + "type": "string" 60 + } 61 + }, 62 + "additionalProperties": false 63 + }, 64 + "shortcuts": { 65 + "type": "object", 66 + "properties": { 67 + "section": { 68 + "type": "object", 69 + "properties": { 70 + "global": { 71 + "type": "string" 72 + }, 73 + "search": { 74 + "type": "string" 75 + }, 76 + "package": { 77 + "type": "string" 78 + } 79 + }, 80 + "additionalProperties": false 81 + }, 82 + "focus_search": { 83 + "type": "string" 84 + }, 85 + "show_kbd_hints": { 86 + "type": "string" 87 + }, 88 + "settings": { 89 + "type": "string" 90 + }, 91 + "compare": { 92 + "type": "string" 93 + }, 94 + "compare_from_package": { 95 + "type": "string" 96 + }, 97 + "navigate_results": { 98 + "type": "string" 99 + }, 100 + "go_to_result": { 101 + "type": "string" 102 + }, 103 + "open_code_view": { 104 + "type": "string" 105 + }, 106 + "open_docs": { 107 + "type": "string" 108 + } 109 + }, 110 + "additionalProperties": false 111 + }, 112 + "search": { 113 + "type": "object", 114 + "properties": { 115 + "label": { 116 + "type": "string" 117 + }, 118 + "placeholder": { 119 + "type": "string" 120 + }, 121 + "button": { 122 + "type": "string" 123 + }, 124 + "searching": { 125 + "type": "string" 126 + }, 127 + "found_packages": { 128 + "type": "string" 129 + }, 130 + "found_packages_sorted": { 131 + "type": "string" 132 + }, 133 + "updating": { 134 + "type": "string" 135 + }, 136 + "no_results": { 137 + "type": "string" 138 + }, 139 + "rate_limited": { 140 + "type": "string" 141 + }, 142 + "title": { 143 + "type": "string" 144 + }, 145 + "title_search": { 146 + "type": "string" 147 + }, 148 + "title_packages": { 149 + "type": "string" 150 + }, 151 + "meta_description": { 152 + "type": "string" 153 + }, 154 + "meta_description_packages": { 155 + "type": "string" 156 + }, 157 + "not_taken": { 158 + "type": "string" 159 + }, 160 + "claim_prompt": { 161 + "type": "string" 162 + }, 163 + "claim_button": { 164 + "type": "string" 165 + }, 166 + "want_to_claim": { 167 + "type": "string" 168 + }, 169 + "start_typing": { 170 + "type": "string" 171 + }, 172 + "algolia_disclaimer": { 173 + "type": "string" 174 + }, 175 + "exact_match": { 176 + "type": "string" 177 + }, 178 + "suggestion": { 179 + "type": "object", 180 + "properties": { 181 + "user": { 182 + "type": "string" 183 + }, 184 + "org": { 185 + "type": "string" 186 + }, 187 + "view_user_packages": { 188 + "type": "string" 189 + }, 190 + "view_org_packages": { 191 + "type": "string" 192 + } 193 + }, 194 + "additionalProperties": false 195 + } 196 + }, 197 + "additionalProperties": false 198 + }, 199 + "nav": { 200 + "type": "object", 201 + "properties": { 202 + "main_navigation": { 203 + "type": "string" 204 + }, 205 + "popular_packages": { 206 + "type": "string" 207 + }, 208 + "settings": { 209 + "type": "string" 210 + }, 211 + "compare": { 212 + "type": "string" 213 + }, 214 + "back": { 215 + "type": "string" 216 + }, 217 + "menu": { 218 + "type": "string" 219 + }, 220 + "mobile_menu": { 221 + "type": "string" 222 + }, 223 + "open_menu": { 224 + "type": "string" 225 + }, 226 + "links": { 227 + "type": "string" 228 + }, 229 + "tap_to_search": { 230 + "type": "string" 231 + } 232 + }, 233 + "additionalProperties": false 234 + }, 235 + "settings": { 236 + "type": "object", 237 + "properties": { 238 + "title": { 239 + "type": "string" 240 + }, 241 + "tagline": { 242 + "type": "string" 243 + }, 244 + "meta_description": { 245 + "type": "string" 246 + }, 247 + "sections": { 248 + "type": "object", 249 + "properties": { 250 + "appearance": { 251 + "type": "string" 252 + }, 253 + "display": { 254 + "type": "string" 255 + }, 256 + "search": { 257 + "type": "string" 258 + }, 259 + "language": { 260 + "type": "string" 261 + } 262 + }, 263 + "additionalProperties": false 264 + }, 265 + "data_source": { 266 + "type": "object", 267 + "properties": { 268 + "label": { 269 + "type": "string" 270 + }, 271 + "description": { 272 + "type": "string" 273 + }, 274 + "npm": { 275 + "type": "string" 276 + }, 277 + "npm_description": { 278 + "type": "string" 279 + }, 280 + "algolia": { 281 + "type": "string" 282 + }, 283 + "algolia_description": { 284 + "type": "string" 285 + } 286 + }, 287 + "additionalProperties": false 288 + }, 289 + "relative_dates": { 290 + "type": "string" 291 + }, 292 + "include_types": { 293 + "type": "string" 294 + }, 295 + "include_types_description": { 296 + "type": "string" 297 + }, 298 + "hide_platform_packages": { 299 + "type": "string" 300 + }, 301 + "hide_platform_packages_description": { 302 + "type": "string" 303 + }, 304 + "theme": { 305 + "type": "string" 306 + }, 307 + "theme_light": { 308 + "type": "string" 309 + }, 310 + "theme_dark": { 311 + "type": "string" 312 + }, 313 + "theme_system": { 314 + "type": "string" 315 + }, 316 + "language": { 317 + "type": "string" 318 + }, 319 + "help_translate": { 320 + "type": "string" 321 + }, 322 + "accent_colors": { 323 + "type": "string" 324 + }, 325 + "clear_accent": { 326 + "type": "string" 327 + }, 328 + "translation_progress": { 329 + "type": "string" 330 + }, 331 + "background_themes": { 332 + "type": "string" 333 + } 334 + }, 335 + "additionalProperties": false 336 + }, 337 + "i18n": { 338 + "type": "object", 339 + "properties": { 340 + "missing_keys": { 341 + "type": "string" 342 + }, 343 + "copy_keys": { 344 + "type": "string" 345 + }, 346 + "show_more_keys": { 347 + "type": "string" 348 + }, 349 + "contribute_hint": { 350 + "type": "string" 351 + }, 352 + "edit_on_github": { 353 + "type": "string" 354 + }, 355 + "view_guide": { 356 + "type": "string" 357 + } 358 + }, 359 + "additionalProperties": false 360 + }, 361 + "common": { 362 + "type": "object", 363 + "properties": { 364 + "loading": { 365 + "type": "string" 366 + }, 367 + "loading_more": { 368 + "type": "string" 369 + }, 370 + "loading_packages": { 371 + "type": "string" 372 + }, 373 + "end_of_results": { 374 + "type": "string" 375 + }, 376 + "try_again": { 377 + "type": "string" 378 + }, 379 + "close": { 380 + "type": "string" 381 + }, 382 + "retry": { 383 + "type": "string" 384 + }, 385 + "copy": { 386 + "type": "string" 387 + }, 388 + "copied": { 389 + "type": "string" 390 + }, 391 + "skip_link": { 392 + "type": "string" 393 + }, 394 + "warnings": { 395 + "type": "string" 396 + }, 397 + "go_back_home": { 398 + "type": "string" 399 + }, 400 + "view_on_npm": { 401 + "type": "string" 402 + }, 403 + "per_week": { 404 + "type": "string" 405 + }, 406 + "vanity_downloads_hint": { 407 + "type": "string" 408 + }, 409 + "sort": { 410 + "type": "object", 411 + "properties": { 412 + "name": { 413 + "type": "string" 414 + }, 415 + "role": { 416 + "type": "string" 417 + }, 418 + "members": { 419 + "type": "string" 420 + } 421 + }, 422 + "additionalProperties": false 423 + }, 424 + "scroll_to_top": { 425 + "type": "string" 426 + } 427 + }, 428 + "additionalProperties": false 429 + }, 430 + "package": { 431 + "type": "object", 432 + "properties": { 433 + "not_found": { 434 + "type": "string" 435 + }, 436 + "not_found_message": { 437 + "type": "string" 438 + }, 439 + "no_description": { 440 + "type": "string" 441 + }, 442 + "not_latest": { 443 + "type": "string" 444 + }, 445 + "verified_provenance": { 446 + "type": "string" 447 + }, 448 + "view_permalink": { 449 + "type": "string" 450 + }, 451 + "navigation": { 452 + "type": "string" 453 + }, 454 + "copy_name": { 455 + "type": "string" 456 + }, 457 + "deprecation": { 458 + "type": "object", 459 + "properties": { 460 + "package": { 461 + "type": "string" 462 + }, 463 + "version": { 464 + "type": "string" 465 + }, 466 + "no_reason": { 467 + "type": "string" 468 + } 469 + }, 470 + "additionalProperties": false 471 + }, 472 + "replacement": { 473 + "type": "object", 474 + "properties": { 475 + "title": { 476 + "type": "string" 477 + }, 478 + "native": { 479 + "type": "string" 480 + }, 481 + "simple": { 482 + "type": "string" 483 + }, 484 + "documented": { 485 + "type": "string" 486 + }, 487 + "none": { 488 + "type": "string" 489 + }, 490 + "learn_more": { 491 + "type": "string" 492 + }, 493 + "learn_more_above": { 494 + "type": "string" 495 + }, 496 + "mdn": { 497 + "type": "string" 498 + }, 499 + "community": { 500 + "type": "string" 501 + }, 502 + "consider_no_dep": { 503 + "type": "string" 504 + } 505 + }, 506 + "additionalProperties": false 507 + }, 508 + "stats": { 509 + "type": "object", 510 + "properties": { 511 + "license": { 512 + "type": "string" 513 + }, 514 + "deps": { 515 + "type": "string" 516 + }, 517 + "install_size": { 518 + "type": "string" 519 + }, 520 + "vulns": { 521 + "type": "string" 522 + }, 523 + "published": { 524 + "type": "string" 525 + }, 526 + "published_tooltip": { 527 + "type": "string" 528 + }, 529 + "view_dependency_graph": { 530 + "type": "string" 531 + }, 532 + "inspect_dependency_tree": { 533 + "type": "string" 534 + }, 535 + "size_tooltip": { 536 + "type": "object", 537 + "properties": { 538 + "unpacked": { 539 + "type": "string" 540 + }, 541 + "total": { 542 + "type": "string" 543 + } 544 + }, 545 + "additionalProperties": false 546 + } 547 + }, 548 + "additionalProperties": false 549 + }, 550 + "skills": { 551 + "type": "object", 552 + "properties": { 553 + "title": { 554 + "type": "string" 555 + }, 556 + "skills_available": { 557 + "type": "string" 558 + }, 559 + "compatible_with": { 560 + "type": "string" 561 + }, 562 + "install": { 563 + "type": "string" 564 + }, 565 + "installation_method": { 566 + "type": "string" 567 + }, 568 + "learn_more": { 569 + "type": "string" 570 + }, 571 + "available_skills": { 572 + "type": "string" 573 + }, 574 + "click_to_expand": { 575 + "type": "string" 576 + }, 577 + "no_description": { 578 + "type": "string" 579 + }, 580 + "file_counts": { 581 + "type": "object", 582 + "properties": { 583 + "scripts": { 584 + "type": "string" 585 + }, 586 + "refs": { 587 + "type": "string" 588 + }, 589 + "assets": { 590 + "type": "string" 591 + } 592 + }, 593 + "additionalProperties": false 594 + }, 595 + "view_source": { 596 + "type": "string" 597 + } 598 + }, 599 + "additionalProperties": false 600 + }, 601 + "links": { 602 + "type": "object", 603 + "properties": { 604 + "repo": { 605 + "type": "string" 606 + }, 607 + "homepage": { 608 + "type": "string" 609 + }, 610 + "issues": { 611 + "type": "string" 612 + }, 613 + "jsr": { 614 + "type": "string" 615 + }, 616 + "code": { 617 + "type": "string" 618 + }, 619 + "docs": { 620 + "type": "string" 621 + }, 622 + "fund": { 623 + "type": "string" 624 + }, 625 + "compare": { 626 + "type": "string" 627 + } 628 + }, 629 + "additionalProperties": false 630 + }, 631 + "likes": { 632 + "type": "object", 633 + "properties": { 634 + "like": { 635 + "type": "string" 636 + }, 637 + "unlike": { 638 + "type": "string" 639 + } 640 + }, 641 + "additionalProperties": false 642 + }, 643 + "docs": { 644 + "type": "object", 645 + "properties": { 646 + "not_available": { 647 + "type": "string" 648 + }, 649 + "not_available_detail": { 650 + "type": "string" 651 + } 652 + }, 653 + "additionalProperties": false 654 + }, 655 + "get_started": { 656 + "type": "object", 657 + "properties": { 658 + "title": { 659 + "type": "string" 660 + }, 661 + "pm_label": { 662 + "type": "string" 663 + }, 664 + "copy_command": { 665 + "type": "string" 666 + }, 667 + "view_types": { 668 + "type": "string" 669 + } 670 + }, 671 + "additionalProperties": false 672 + }, 673 + "create": { 674 + "type": "object", 675 + "properties": { 676 + "title": { 677 + "type": "string" 678 + }, 679 + "copy_command": { 680 + "type": "string" 681 + }, 682 + "view": { 683 + "type": "string" 684 + } 685 + }, 686 + "additionalProperties": false 687 + }, 688 + "run": { 689 + "type": "object", 690 + "properties": { 691 + "title": { 692 + "type": "string" 693 + }, 694 + "locally": { 695 + "type": "string" 696 + } 697 + }, 698 + "additionalProperties": false 699 + }, 700 + "readme": { 701 + "type": "object", 702 + "properties": { 703 + "title": { 704 + "type": "string" 705 + }, 706 + "no_readme": { 707 + "type": "string" 708 + }, 709 + "view_on_github": { 710 + "type": "string" 711 + }, 712 + "toc_title": { 713 + "type": "string" 714 + }, 715 + "callout": { 716 + "type": "object", 717 + "properties": { 718 + "note": { 719 + "type": "string" 720 + }, 721 + "tip": { 722 + "type": "string" 723 + }, 724 + "important": { 725 + "type": "string" 726 + }, 727 + "warning": { 728 + "type": "string" 729 + }, 730 + "caution": { 731 + "type": "string" 732 + } 733 + }, 734 + "additionalProperties": false 735 + }, 736 + "copy_as_markdown": { 737 + "type": "string" 738 + } 739 + }, 740 + "additionalProperties": false 741 + }, 742 + "provenance_section": { 743 + "type": "object", 744 + "properties": { 745 + "title": { 746 + "type": "string" 747 + }, 748 + "built_and_signed_on": { 749 + "type": "string" 750 + }, 751 + "view_build_summary": { 752 + "type": "string" 753 + }, 754 + "source_commit": { 755 + "type": "string" 756 + }, 757 + "build_file": { 758 + "type": "string" 759 + }, 760 + "public_ledger": { 761 + "type": "string" 762 + }, 763 + "transparency_log_entry": { 764 + "type": "string" 765 + }, 766 + "view_more_details": { 767 + "type": "string" 768 + }, 769 + "error_loading": { 770 + "type": "string" 771 + } 772 + }, 773 + "additionalProperties": false 774 + }, 775 + "keywords_title": { 776 + "type": "string" 777 + }, 778 + "compatibility": { 779 + "type": "string" 780 + }, 781 + "card": { 782 + "type": "object", 783 + "properties": { 784 + "publisher": { 785 + "type": "string" 786 + }, 787 + "published": { 788 + "type": "string" 789 + }, 790 + "weekly_downloads": { 791 + "type": "string" 792 + }, 793 + "keywords": { 794 + "type": "string" 795 + }, 796 + "license": { 797 + "type": "string" 798 + } 799 + }, 800 + "additionalProperties": false 801 + }, 802 + "versions": { 803 + "type": "object", 804 + "properties": { 805 + "title": { 806 + "type": "string" 807 + }, 808 + "collapse": { 809 + "type": "string" 810 + }, 811 + "expand": { 812 + "type": "string" 813 + }, 814 + "collapse_other": { 815 + "type": "string" 816 + }, 817 + "expand_other": { 818 + "type": "string" 819 + }, 820 + "collapse_major": { 821 + "type": "string" 822 + }, 823 + "expand_major": { 824 + "type": "string" 825 + }, 826 + "other_versions": { 827 + "type": "string" 828 + }, 829 + "more_tagged": { 830 + "type": "string" 831 + }, 832 + "all_covered": { 833 + "type": "string" 834 + }, 835 + "deprecated_title": { 836 + "type": "string" 837 + }, 838 + "view_all": { 839 + "type": "string" 840 + } 841 + }, 842 + "additionalProperties": false 843 + }, 844 + "dependencies": { 845 + "type": "object", 846 + "properties": { 847 + "title": { 848 + "type": "string" 849 + }, 850 + "list_label": { 851 + "type": "string" 852 + }, 853 + "show_all": { 854 + "type": "string" 855 + }, 856 + "optional": { 857 + "type": "string" 858 + }, 859 + "view_vulnerabilities": { 860 + "type": "string" 861 + }, 862 + "outdated_major": { 863 + "type": "string" 864 + }, 865 + "outdated_minor": { 866 + "type": "string" 867 + }, 868 + "outdated_patch": { 869 + "type": "string" 870 + } 871 + }, 872 + "additionalProperties": false 873 + }, 874 + "peer_dependencies": { 875 + "type": "object", 876 + "properties": { 877 + "title": { 878 + "type": "string" 879 + }, 880 + "list_label": { 881 + "type": "string" 882 + }, 883 + "show_all": { 884 + "type": "string" 885 + } 886 + }, 887 + "additionalProperties": false 888 + }, 889 + "optional_dependencies": { 890 + "type": "object", 891 + "properties": { 892 + "title": { 893 + "type": "string" 894 + }, 895 + "list_label": { 896 + "type": "string" 897 + }, 898 + "show_all": { 899 + "type": "string" 900 + } 901 + }, 902 + "additionalProperties": false 903 + }, 904 + "maintainers": { 905 + "type": "object", 906 + "properties": { 907 + "title": { 908 + "type": "string" 909 + }, 910 + "list_label": { 911 + "type": "string" 912 + }, 913 + "you": { 914 + "type": "string" 915 + }, 916 + "via": { 917 + "type": "string" 918 + }, 919 + "remove_owner": { 920 + "type": "string" 921 + }, 922 + "username_to_add": { 923 + "type": "string" 924 + }, 925 + "username_placeholder": { 926 + "type": "string" 927 + }, 928 + "add_button": { 929 + "type": "string" 930 + }, 931 + "cancel_add": { 932 + "type": "string" 933 + }, 934 + "add_owner": { 935 + "type": "string" 936 + }, 937 + "show_more": { 938 + "type": "string" 939 + }, 940 + "show_less": { 941 + "type": "string" 942 + } 943 + }, 944 + "additionalProperties": false 945 + }, 946 + "trends": { 947 + "type": "object", 948 + "properties": { 949 + "granularity": { 950 + "type": "string" 951 + }, 952 + "granularity_daily": { 953 + "type": "string" 954 + }, 955 + "granularity_weekly": { 956 + "type": "string" 957 + }, 958 + "granularity_monthly": { 959 + "type": "string" 960 + }, 961 + "granularity_yearly": { 962 + "type": "string" 963 + }, 964 + "start_date": { 965 + "type": "string" 966 + }, 967 + "end_date": { 968 + "type": "string" 969 + }, 970 + "loading": { 971 + "type": "string" 972 + }, 973 + "date_range": { 974 + "type": "string" 975 + }, 976 + "date_range_multiline": { 977 + "type": "string" 978 + }, 979 + "download_file": { 980 + "type": "string" 981 + }, 982 + "toggle_annotator": { 983 + "type": "string" 984 + }, 985 + "legend_estimation": { 986 + "type": "string" 987 + }, 988 + "no_data": { 989 + "type": "string" 990 + }, 991 + "y_axis_label": { 992 + "type": "string" 993 + }, 994 + "items": { 995 + "type": "object", 996 + "properties": { 997 + "downloads": { 998 + "type": "string" 999 + } 1000 + }, 1001 + "additionalProperties": false 1002 + } 1003 + }, 1004 + "additionalProperties": false 1005 + }, 1006 + "downloads": { 1007 + "type": "object", 1008 + "properties": { 1009 + "title": { 1010 + "type": "string" 1011 + }, 1012 + "analyze": { 1013 + "type": "string" 1014 + }, 1015 + "community_distribution": { 1016 + "type": "string" 1017 + }, 1018 + "modal_title": { 1019 + "type": "string" 1020 + } 1021 + }, 1022 + "additionalProperties": false 1023 + }, 1024 + "install_scripts": { 1025 + "type": "object", 1026 + "properties": { 1027 + "title": { 1028 + "type": "string" 1029 + }, 1030 + "script_label": { 1031 + "type": "string" 1032 + }, 1033 + "npx_packages": { 1034 + "type": "string" 1035 + }, 1036 + "currently": { 1037 + "type": "string" 1038 + } 1039 + }, 1040 + "additionalProperties": false 1041 + }, 1042 + "playgrounds": { 1043 + "type": "object", 1044 + "properties": { 1045 + "title": { 1046 + "type": "string" 1047 + }, 1048 + "choose": { 1049 + "type": "string" 1050 + } 1051 + }, 1052 + "additionalProperties": false 1053 + }, 1054 + "metrics": { 1055 + "type": "object", 1056 + "properties": { 1057 + "esm": { 1058 + "type": "string" 1059 + }, 1060 + "cjs": { 1061 + "type": "string" 1062 + }, 1063 + "no_esm": { 1064 + "type": "string" 1065 + }, 1066 + "types_label": { 1067 + "type": "string" 1068 + }, 1069 + "types_included": { 1070 + "type": "string" 1071 + }, 1072 + "types_available": { 1073 + "type": "string" 1074 + }, 1075 + "no_types": { 1076 + "type": "string" 1077 + } 1078 + }, 1079 + "additionalProperties": false 1080 + }, 1081 + "license": { 1082 + "type": "object", 1083 + "properties": { 1084 + "view_spdx": { 1085 + "type": "string" 1086 + }, 1087 + "none": { 1088 + "type": "string" 1089 + } 1090 + }, 1091 + "additionalProperties": false 1092 + }, 1093 + "vulnerabilities": { 1094 + "type": "object", 1095 + "properties": { 1096 + "tree_found": { 1097 + "type": "string" 1098 + }, 1099 + "show_all_packages": { 1100 + "type": "string" 1101 + }, 1102 + "path": { 1103 + "type": "string" 1104 + }, 1105 + "more": { 1106 + "type": "string" 1107 + }, 1108 + "packages_failed": { 1109 + "type": "string" 1110 + }, 1111 + "scan_failed": { 1112 + "type": "string" 1113 + }, 1114 + "severity": { 1115 + "type": "object", 1116 + "properties": { 1117 + "critical": { 1118 + "type": "string" 1119 + }, 1120 + "high": { 1121 + "type": "string" 1122 + }, 1123 + "moderate": { 1124 + "type": "string" 1125 + }, 1126 + "low": { 1127 + "type": "string" 1128 + } 1129 + }, 1130 + "additionalProperties": false 1131 + } 1132 + }, 1133 + "additionalProperties": false 1134 + }, 1135 + "deprecated": { 1136 + "type": "object", 1137 + "properties": { 1138 + "label": { 1139 + "type": "string" 1140 + }, 1141 + "tree_found": { 1142 + "type": "string" 1143 + }, 1144 + "show_all": { 1145 + "type": "string" 1146 + } 1147 + }, 1148 + "additionalProperties": false 1149 + }, 1150 + "access": { 1151 + "type": "object", 1152 + "properties": { 1153 + "title": { 1154 + "type": "string" 1155 + }, 1156 + "refresh": { 1157 + "type": "string" 1158 + }, 1159 + "list_label": { 1160 + "type": "string" 1161 + }, 1162 + "owner": { 1163 + "type": "string" 1164 + }, 1165 + "rw": { 1166 + "type": "string" 1167 + }, 1168 + "ro": { 1169 + "type": "string" 1170 + }, 1171 + "revoke_access": { 1172 + "type": "string" 1173 + }, 1174 + "no_access": { 1175 + "type": "string" 1176 + }, 1177 + "select_team_label": { 1178 + "type": "string" 1179 + }, 1180 + "loading_teams": { 1181 + "type": "string" 1182 + }, 1183 + "select_team": { 1184 + "type": "string" 1185 + }, 1186 + "permission_label": { 1187 + "type": "string" 1188 + }, 1189 + "permission": { 1190 + "type": "object", 1191 + "properties": { 1192 + "read_only": { 1193 + "type": "string" 1194 + }, 1195 + "read_write": { 1196 + "type": "string" 1197 + } 1198 + }, 1199 + "additionalProperties": false 1200 + }, 1201 + "grant_button": { 1202 + "type": "string" 1203 + }, 1204 + "cancel_grant": { 1205 + "type": "string" 1206 + }, 1207 + "grant_access": { 1208 + "type": "string" 1209 + } 1210 + }, 1211 + "additionalProperties": false 1212 + }, 1213 + "list": { 1214 + "type": "object", 1215 + "properties": { 1216 + "filter_label": { 1217 + "type": "string" 1218 + }, 1219 + "filter_placeholder": { 1220 + "type": "string" 1221 + }, 1222 + "sort_label": { 1223 + "type": "string" 1224 + }, 1225 + "showing_count": { 1226 + "type": "string" 1227 + } 1228 + }, 1229 + "additionalProperties": false 1230 + }, 1231 + "skeleton": { 1232 + "type": "object", 1233 + "properties": { 1234 + "loading": { 1235 + "type": "string" 1236 + }, 1237 + "weekly": { 1238 + "type": "string" 1239 + }, 1240 + "maintainers": { 1241 + "type": "string" 1242 + }, 1243 + "keywords": { 1244 + "type": "string" 1245 + }, 1246 + "versions": { 1247 + "type": "string" 1248 + }, 1249 + "dependencies": { 1250 + "type": "string" 1251 + } 1252 + }, 1253 + "additionalProperties": false 1254 + }, 1255 + "sort": { 1256 + "type": "object", 1257 + "properties": { 1258 + "downloads": { 1259 + "type": "string" 1260 + }, 1261 + "published": { 1262 + "type": "string" 1263 + }, 1264 + "name_asc": { 1265 + "type": "string" 1266 + }, 1267 + "name_desc": { 1268 + "type": "string" 1269 + } 1270 + }, 1271 + "additionalProperties": false 1272 + }, 1273 + "size": { 1274 + "type": "object", 1275 + "properties": { 1276 + "b": { 1277 + "type": "string" 1278 + }, 1279 + "kb": { 1280 + "type": "string" 1281 + }, 1282 + "mb": { 1283 + "type": "string" 1284 + } 1285 + }, 1286 + "additionalProperties": false 1287 + } 1288 + }, 1289 + "additionalProperties": false 1290 + }, 1291 + "connector": { 1292 + "type": "object", 1293 + "properties": { 1294 + "modal": { 1295 + "type": "object", 1296 + "properties": { 1297 + "title": { 1298 + "type": "string" 1299 + }, 1300 + "contributor_badge": { 1301 + "type": "string" 1302 + }, 1303 + "contributor_notice": { 1304 + "type": "string" 1305 + }, 1306 + "contributor_link": { 1307 + "type": "string" 1308 + }, 1309 + "connected": { 1310 + "type": "string" 1311 + }, 1312 + "connected_as_user": { 1313 + "type": "string" 1314 + }, 1315 + "connected_hint": { 1316 + "type": "string" 1317 + }, 1318 + "disconnect": { 1319 + "type": "string" 1320 + }, 1321 + "run_hint": { 1322 + "type": "string" 1323 + }, 1324 + "copy_command": { 1325 + "type": "string" 1326 + }, 1327 + "copied": { 1328 + "type": "string" 1329 + }, 1330 + "paste_token": { 1331 + "type": "string" 1332 + }, 1333 + "token_label": { 1334 + "type": "string" 1335 + }, 1336 + "token_placeholder": { 1337 + "type": "string" 1338 + }, 1339 + "advanced": { 1340 + "type": "string" 1341 + }, 1342 + "port_label": { 1343 + "type": "string" 1344 + }, 1345 + "warning": { 1346 + "type": "string" 1347 + }, 1348 + "warning_text": { 1349 + "type": "string" 1350 + }, 1351 + "connect": { 1352 + "type": "string" 1353 + }, 1354 + "connecting": { 1355 + "type": "string" 1356 + } 1357 + }, 1358 + "additionalProperties": false 1359 + } 1360 + }, 1361 + "additionalProperties": false 1362 + }, 1363 + "operations": { 1364 + "type": "object", 1365 + "properties": { 1366 + "queue": { 1367 + "type": "object", 1368 + "properties": { 1369 + "title": { 1370 + "type": "string" 1371 + }, 1372 + "clear_all": { 1373 + "type": "string" 1374 + }, 1375 + "refresh": { 1376 + "type": "string" 1377 + }, 1378 + "empty": { 1379 + "type": "string" 1380 + }, 1381 + "empty_hint": { 1382 + "type": "string" 1383 + }, 1384 + "active_label": { 1385 + "type": "string" 1386 + }, 1387 + "otp_required": { 1388 + "type": "string" 1389 + }, 1390 + "otp_prompt": { 1391 + "type": "string" 1392 + }, 1393 + "otp_placeholder": { 1394 + "type": "string" 1395 + }, 1396 + "otp_label": { 1397 + "type": "string" 1398 + }, 1399 + "retry_otp": { 1400 + "type": "string" 1401 + }, 1402 + "retrying": { 1403 + "type": "string" 1404 + }, 1405 + "approve_operation": { 1406 + "type": "string" 1407 + }, 1408 + "remove_operation": { 1409 + "type": "string" 1410 + }, 1411 + "approve_all": { 1412 + "type": "string" 1413 + }, 1414 + "execute": { 1415 + "type": "string" 1416 + }, 1417 + "executing": { 1418 + "type": "string" 1419 + }, 1420 + "log": { 1421 + "type": "string" 1422 + }, 1423 + "log_label": { 1424 + "type": "string" 1425 + }, 1426 + "remove_from_log": { 1427 + "type": "string" 1428 + } 1429 + }, 1430 + "additionalProperties": false 1431 + } 1432 + }, 1433 + "additionalProperties": false 1434 + }, 1435 + "org": { 1436 + "type": "object", 1437 + "properties": { 1438 + "teams": { 1439 + "type": "object", 1440 + "properties": { 1441 + "title": { 1442 + "type": "string" 1443 + }, 1444 + "refresh": { 1445 + "type": "string" 1446 + }, 1447 + "filter_label": { 1448 + "type": "string" 1449 + }, 1450 + "filter_placeholder": { 1451 + "type": "string" 1452 + }, 1453 + "sort_by": { 1454 + "type": "string" 1455 + }, 1456 + "loading": { 1457 + "type": "string" 1458 + }, 1459 + "no_teams": { 1460 + "type": "string" 1461 + }, 1462 + "list_label": { 1463 + "type": "string" 1464 + }, 1465 + "delete_team": { 1466 + "type": "string" 1467 + }, 1468 + "member_count": { 1469 + "type": "string" 1470 + }, 1471 + "members_of": { 1472 + "type": "string" 1473 + }, 1474 + "no_members": { 1475 + "type": "string" 1476 + }, 1477 + "remove_user": { 1478 + "type": "string" 1479 + }, 1480 + "username_to_add": { 1481 + "type": "string" 1482 + }, 1483 + "username_placeholder": { 1484 + "type": "string" 1485 + }, 1486 + "add_button": { 1487 + "type": "string" 1488 + }, 1489 + "cancel_add_user": { 1490 + "type": "string" 1491 + }, 1492 + "add_member": { 1493 + "type": "string" 1494 + }, 1495 + "team_name_label": { 1496 + "type": "string" 1497 + }, 1498 + "team_name_placeholder": { 1499 + "type": "string" 1500 + }, 1501 + "create_button": { 1502 + "type": "string" 1503 + }, 1504 + "no_match": { 1505 + "type": "string" 1506 + }, 1507 + "cancel_create": { 1508 + "type": "string" 1509 + }, 1510 + "create_team": { 1511 + "type": "string" 1512 + } 1513 + }, 1514 + "additionalProperties": false 1515 + }, 1516 + "members": { 1517 + "type": "object", 1518 + "properties": { 1519 + "title": { 1520 + "type": "string" 1521 + }, 1522 + "refresh": { 1523 + "type": "string" 1524 + }, 1525 + "filter_label": { 1526 + "type": "string" 1527 + }, 1528 + "filter_placeholder": { 1529 + "type": "string" 1530 + }, 1531 + "filter_by_role": { 1532 + "type": "string" 1533 + }, 1534 + "filter_by_team": { 1535 + "type": "string" 1536 + }, 1537 + "all_teams": { 1538 + "type": "string" 1539 + }, 1540 + "sort_by": { 1541 + "type": "string" 1542 + }, 1543 + "loading": { 1544 + "type": "string" 1545 + }, 1546 + "no_members": { 1547 + "type": "string" 1548 + }, 1549 + "list_label": { 1550 + "type": "string" 1551 + }, 1552 + "change_role_for": { 1553 + "type": "string" 1554 + }, 1555 + "remove_from_org": { 1556 + "type": "string" 1557 + }, 1558 + "view_team": { 1559 + "type": "string" 1560 + }, 1561 + "no_match": { 1562 + "type": "string" 1563 + }, 1564 + "username_label": { 1565 + "type": "string" 1566 + }, 1567 + "username_placeholder": { 1568 + "type": "string" 1569 + }, 1570 + "role_label": { 1571 + "type": "string" 1572 + }, 1573 + "role": { 1574 + "type": "object", 1575 + "properties": { 1576 + "all": { 1577 + "type": "string" 1578 + }, 1579 + "developer": { 1580 + "type": "string" 1581 + }, 1582 + "admin": { 1583 + "type": "string" 1584 + }, 1585 + "owner": { 1586 + "type": "string" 1587 + } 1588 + }, 1589 + "additionalProperties": false 1590 + }, 1591 + "team_label": { 1592 + "type": "string" 1593 + }, 1594 + "no_team": { 1595 + "type": "string" 1596 + }, 1597 + "add_button": { 1598 + "type": "string" 1599 + }, 1600 + "cancel_add": { 1601 + "type": "string" 1602 + }, 1603 + "add_member": { 1604 + "type": "string" 1605 + } 1606 + }, 1607 + "additionalProperties": false 1608 + }, 1609 + "public_packages": { 1610 + "type": "string" 1611 + }, 1612 + "page": { 1613 + "type": "object", 1614 + "properties": { 1615 + "packages_title": { 1616 + "type": "string" 1617 + }, 1618 + "members_tab": { 1619 + "type": "string" 1620 + }, 1621 + "teams_tab": { 1622 + "type": "string" 1623 + }, 1624 + "no_packages": { 1625 + "type": "string" 1626 + }, 1627 + "no_packages_hint": { 1628 + "type": "string" 1629 + }, 1630 + "failed_to_load": { 1631 + "type": "string" 1632 + }, 1633 + "no_match": { 1634 + "type": "string" 1635 + }, 1636 + "not_found": { 1637 + "type": "string" 1638 + }, 1639 + "not_found_message": { 1640 + "type": "string" 1641 + } 1642 + }, 1643 + "additionalProperties": false 1644 + } 1645 + }, 1646 + "additionalProperties": false 1647 + }, 1648 + "user": { 1649 + "type": "object", 1650 + "properties": { 1651 + "combobox": { 1652 + "type": "object", 1653 + "properties": { 1654 + "add_to_org_hint": { 1655 + "type": "string" 1656 + }, 1657 + "press_enter_to_add": { 1658 + "type": "string" 1659 + }, 1660 + "default_placeholder": { 1661 + "type": "string" 1662 + }, 1663 + "suggestions_label": { 1664 + "type": "string" 1665 + } 1666 + }, 1667 + "additionalProperties": false 1668 + }, 1669 + "page": { 1670 + "type": "object", 1671 + "properties": { 1672 + "packages_title": { 1673 + "type": "string" 1674 + }, 1675 + "no_packages": { 1676 + "type": "string" 1677 + }, 1678 + "no_packages_hint": { 1679 + "type": "string" 1680 + }, 1681 + "failed_to_load": { 1682 + "type": "string" 1683 + }, 1684 + "no_match": { 1685 + "type": "string" 1686 + }, 1687 + "filter_placeholder": { 1688 + "type": "string" 1689 + } 1690 + }, 1691 + "additionalProperties": false 1692 + }, 1693 + "orgs_page": { 1694 + "type": "object", 1695 + "properties": { 1696 + "title": { 1697 + "type": "string" 1698 + }, 1699 + "back_to_profile": { 1700 + "type": "string" 1701 + }, 1702 + "connect_required": { 1703 + "type": "string" 1704 + }, 1705 + "connect_hint_prefix": { 1706 + "type": "string" 1707 + }, 1708 + "connect_hint_suffix": { 1709 + "type": "string" 1710 + }, 1711 + "own_orgs_only": { 1712 + "type": "string" 1713 + }, 1714 + "view_your_orgs": { 1715 + "type": "string" 1716 + }, 1717 + "loading": { 1718 + "type": "string" 1719 + }, 1720 + "empty": { 1721 + "type": "string" 1722 + }, 1723 + "empty_hint": { 1724 + "type": "string" 1725 + }, 1726 + "count": { 1727 + "type": "string" 1728 + }, 1729 + "packages_count": { 1730 + "type": "string" 1731 + } 1732 + }, 1733 + "additionalProperties": false 1734 + } 1735 + }, 1736 + "additionalProperties": false 1737 + }, 1738 + "claim": { 1739 + "type": "object", 1740 + "properties": { 1741 + "modal": { 1742 + "type": "object", 1743 + "properties": { 1744 + "title": { 1745 + "type": "string" 1746 + }, 1747 + "success": { 1748 + "type": "string" 1749 + }, 1750 + "success_detail": { 1751 + "type": "string" 1752 + }, 1753 + "success_hint": { 1754 + "type": "string" 1755 + }, 1756 + "view_package": { 1757 + "type": "string" 1758 + }, 1759 + "invalid_name": { 1760 + "type": "string" 1761 + }, 1762 + "available": { 1763 + "type": "string" 1764 + }, 1765 + "taken": { 1766 + "type": "string" 1767 + }, 1768 + "similar_warning": { 1769 + "type": "string" 1770 + }, 1771 + "related": { 1772 + "type": "string" 1773 + }, 1774 + "scope_warning_title": { 1775 + "type": "string" 1776 + }, 1777 + "scope_warning_text": { 1778 + "type": "string" 1779 + }, 1780 + "connect_required": { 1781 + "type": "string" 1782 + }, 1783 + "connect_button": { 1784 + "type": "string" 1785 + }, 1786 + "publish_hint": { 1787 + "type": "string" 1788 + }, 1789 + "preview_json": { 1790 + "type": "string" 1791 + }, 1792 + "claim_button": { 1793 + "type": "string" 1794 + }, 1795 + "publishing": { 1796 + "type": "string" 1797 + }, 1798 + "checking": { 1799 + "type": "string" 1800 + }, 1801 + "failed_to_check": { 1802 + "type": "string" 1803 + }, 1804 + "failed_to_claim": { 1805 + "type": "string" 1806 + } 1807 + }, 1808 + "additionalProperties": false 1809 + } 1810 + }, 1811 + "additionalProperties": false 1812 + }, 1813 + "code": { 1814 + "type": "object", 1815 + "properties": { 1816 + "files_label": { 1817 + "type": "string" 1818 + }, 1819 + "no_files": { 1820 + "type": "string" 1821 + }, 1822 + "root": { 1823 + "type": "string" 1824 + }, 1825 + "lines": { 1826 + "type": "string" 1827 + }, 1828 + "toggle_tree": { 1829 + "type": "string" 1830 + }, 1831 + "close_tree": { 1832 + "type": "string" 1833 + }, 1834 + "copy_link": { 1835 + "type": "string" 1836 + }, 1837 + "raw": { 1838 + "type": "string" 1839 + }, 1840 + "view_raw": { 1841 + "type": "string" 1842 + }, 1843 + "file_too_large": { 1844 + "type": "string" 1845 + }, 1846 + "file_size_warning": { 1847 + "type": "string" 1848 + }, 1849 + "failed_to_load": { 1850 + "type": "string" 1851 + }, 1852 + "unavailable_hint": { 1853 + "type": "string" 1854 + }, 1855 + "version_required": { 1856 + "type": "string" 1857 + }, 1858 + "go_to_package": { 1859 + "type": "string" 1860 + }, 1861 + "loading_tree": { 1862 + "type": "string" 1863 + }, 1864 + "failed_to_load_tree": { 1865 + "type": "string" 1866 + }, 1867 + "back_to_package": { 1868 + "type": "string" 1869 + }, 1870 + "table": { 1871 + "type": "object", 1872 + "properties": { 1873 + "name": { 1874 + "type": "string" 1875 + }, 1876 + "size": { 1877 + "type": "string" 1878 + } 1879 + }, 1880 + "additionalProperties": false 1881 + }, 1882 + "markdown_view_mode": { 1883 + "type": "object", 1884 + "properties": { 1885 + "preview": { 1886 + "type": "string" 1887 + }, 1888 + "code": { 1889 + "type": "string" 1890 + } 1891 + }, 1892 + "additionalProperties": false 1893 + }, 1894 + "file_path": { 1895 + "type": "string" 1896 + } 1897 + }, 1898 + "additionalProperties": false 1899 + }, 1900 + "badges": { 1901 + "type": "object", 1902 + "properties": { 1903 + "provenance": { 1904 + "type": "object", 1905 + "properties": { 1906 + "verified": { 1907 + "type": "string" 1908 + }, 1909 + "verified_title": { 1910 + "type": "string" 1911 + }, 1912 + "verified_via": { 1913 + "type": "string" 1914 + } 1915 + }, 1916 + "additionalProperties": false 1917 + }, 1918 + "jsr": { 1919 + "type": "object", 1920 + "properties": { 1921 + "title": { 1922 + "type": "string" 1923 + } 1924 + }, 1925 + "additionalProperties": false 1926 + } 1927 + }, 1928 + "additionalProperties": false 1929 + }, 1930 + "filters": { 1931 + "type": "object", 1932 + "properties": { 1933 + "title": { 1934 + "type": "string" 1935 + }, 1936 + "search": { 1937 + "type": "string" 1938 + }, 1939 + "search_scope": { 1940 + "type": "string" 1941 + }, 1942 + "search_placeholder_name": { 1943 + "type": "string" 1944 + }, 1945 + "search_placeholder_description": { 1946 + "type": "string" 1947 + }, 1948 + "search_placeholder_keywords": { 1949 + "type": "string" 1950 + }, 1951 + "search_placeholder_all": { 1952 + "type": "string" 1953 + }, 1954 + "scope_name": { 1955 + "type": "string" 1956 + }, 1957 + "scope_name_description": { 1958 + "type": "string" 1959 + }, 1960 + "scope_description": { 1961 + "type": "string" 1962 + }, 1963 + "scope_description_description": { 1964 + "type": "string" 1965 + }, 1966 + "scope_keywords": { 1967 + "type": "string" 1968 + }, 1969 + "scope_keywords_description": { 1970 + "type": "string" 1971 + }, 1972 + "scope_all": { 1973 + "type": "string" 1974 + }, 1975 + "scope_all_description": { 1976 + "type": "string" 1977 + }, 1978 + "weekly_downloads": { 1979 + "type": "string" 1980 + }, 1981 + "updated_within": { 1982 + "type": "string" 1983 + }, 1984 + "security": { 1985 + "type": "string" 1986 + }, 1987 + "keywords": { 1988 + "type": "string" 1989 + }, 1990 + "more_keywords": { 1991 + "type": "string" 1992 + }, 1993 + "clear_all": { 1994 + "type": "string" 1995 + }, 1996 + "remove_filter": { 1997 + "type": "string" 1998 + }, 1999 + "chips": { 2000 + "type": "object", 2001 + "properties": { 2002 + "search": { 2003 + "type": "string" 2004 + }, 2005 + "downloads": { 2006 + "type": "string" 2007 + }, 2008 + "keyword": { 2009 + "type": "string" 2010 + }, 2011 + "security": { 2012 + "type": "string" 2013 + }, 2014 + "updated": { 2015 + "type": "string" 2016 + } 2017 + }, 2018 + "additionalProperties": false 2019 + }, 2020 + "download_range": { 2021 + "type": "object", 2022 + "properties": { 2023 + "any": { 2024 + "type": "string" 2025 + }, 2026 + "lt100": { 2027 + "type": "string" 2028 + }, 2029 + "100_1k": { 2030 + "type": "string" 2031 + }, 2032 + "1k_10k": { 2033 + "type": "string" 2034 + }, 2035 + "10k_100k": { 2036 + "type": "string" 2037 + }, 2038 + "gt100k": { 2039 + "type": "string" 2040 + } 2041 + }, 2042 + "additionalProperties": false 2043 + }, 2044 + "updated": { 2045 + "type": "object", 2046 + "properties": { 2047 + "any": { 2048 + "type": "string" 2049 + }, 2050 + "week": { 2051 + "type": "string" 2052 + }, 2053 + "month": { 2054 + "type": "string" 2055 + }, 2056 + "quarter": { 2057 + "type": "string" 2058 + }, 2059 + "year": { 2060 + "type": "string" 2061 + } 2062 + }, 2063 + "additionalProperties": false 2064 + }, 2065 + "security_options": { 2066 + "type": "object", 2067 + "properties": { 2068 + "all": { 2069 + "type": "string" 2070 + }, 2071 + "secure": { 2072 + "type": "string" 2073 + }, 2074 + "insecure": { 2075 + "type": "string" 2076 + } 2077 + }, 2078 + "additionalProperties": false 2079 + }, 2080 + "sort": { 2081 + "type": "object", 2082 + "properties": { 2083 + "label": { 2084 + "type": "string" 2085 + }, 2086 + "toggle_direction": { 2087 + "type": "string" 2088 + }, 2089 + "ascending": { 2090 + "type": "string" 2091 + }, 2092 + "descending": { 2093 + "type": "string" 2094 + }, 2095 + "relevance": { 2096 + "type": "string" 2097 + }, 2098 + "downloads_week": { 2099 + "type": "string" 2100 + }, 2101 + "downloads_day": { 2102 + "type": "string" 2103 + }, 2104 + "downloads_month": { 2105 + "type": "string" 2106 + }, 2107 + "downloads_year": { 2108 + "type": "string" 2109 + }, 2110 + "published": { 2111 + "type": "string" 2112 + }, 2113 + "name": { 2114 + "type": "string" 2115 + }, 2116 + "quality": { 2117 + "type": "string" 2118 + }, 2119 + "popularity": { 2120 + "type": "string" 2121 + }, 2122 + "maintenance": { 2123 + "type": "string" 2124 + }, 2125 + "score": { 2126 + "type": "string" 2127 + } 2128 + }, 2129 + "additionalProperties": false 2130 + }, 2131 + "columns": { 2132 + "type": "object", 2133 + "properties": { 2134 + "title": { 2135 + "type": "string" 2136 + }, 2137 + "show": { 2138 + "type": "string" 2139 + }, 2140 + "reset": { 2141 + "type": "string" 2142 + }, 2143 + "coming_soon": { 2144 + "type": "string" 2145 + }, 2146 + "name": { 2147 + "type": "string" 2148 + }, 2149 + "version": { 2150 + "type": "string" 2151 + }, 2152 + "description": { 2153 + "type": "string" 2154 + }, 2155 + "downloads": { 2156 + "type": "string" 2157 + }, 2158 + "published": { 2159 + "type": "string" 2160 + }, 2161 + "maintainers": { 2162 + "type": "string" 2163 + }, 2164 + "keywords": { 2165 + "type": "string" 2166 + }, 2167 + "quality_score": { 2168 + "type": "string" 2169 + }, 2170 + "popularity_score": { 2171 + "type": "string" 2172 + }, 2173 + "maintenance_score": { 2174 + "type": "string" 2175 + }, 2176 + "combined_score": { 2177 + "type": "string" 2178 + }, 2179 + "security": { 2180 + "type": "string" 2181 + } 2182 + }, 2183 + "additionalProperties": false 2184 + }, 2185 + "view_mode": { 2186 + "type": "object", 2187 + "properties": { 2188 + "label": { 2189 + "type": "string" 2190 + }, 2191 + "cards": { 2192 + "type": "string" 2193 + }, 2194 + "table": { 2195 + "type": "string" 2196 + } 2197 + }, 2198 + "additionalProperties": false 2199 + }, 2200 + "pagination": { 2201 + "type": "object", 2202 + "properties": { 2203 + "mode_label": { 2204 + "type": "string" 2205 + }, 2206 + "infinite": { 2207 + "type": "string" 2208 + }, 2209 + "paginated": { 2210 + "type": "string" 2211 + }, 2212 + "items_per_page": { 2213 + "type": "string" 2214 + }, 2215 + "per_page": { 2216 + "type": "string" 2217 + }, 2218 + "all_yolo": { 2219 + "type": "string" 2220 + }, 2221 + "showing": { 2222 + "type": "string" 2223 + }, 2224 + "previous": { 2225 + "type": "string" 2226 + }, 2227 + "next": { 2228 + "type": "string" 2229 + }, 2230 + "nav_label": { 2231 + "type": "string" 2232 + } 2233 + }, 2234 + "additionalProperties": false 2235 + }, 2236 + "count": { 2237 + "type": "object", 2238 + "properties": { 2239 + "showing_filtered": { 2240 + "type": "string" 2241 + }, 2242 + "showing_all": { 2243 + "type": "string" 2244 + }, 2245 + "showing_paginated": { 2246 + "type": "string" 2247 + } 2248 + }, 2249 + "additionalProperties": false 2250 + }, 2251 + "table": { 2252 + "type": "object", 2253 + "properties": { 2254 + "security_warning": { 2255 + "type": "string" 2256 + }, 2257 + "secure": { 2258 + "type": "string" 2259 + }, 2260 + "no_packages": { 2261 + "type": "string" 2262 + } 2263 + }, 2264 + "additionalProperties": false 2265 + } 2266 + }, 2267 + "additionalProperties": false 2268 + }, 2269 + "about": { 2270 + "type": "object", 2271 + "properties": { 2272 + "title": { 2273 + "type": "string" 2274 + }, 2275 + "heading": { 2276 + "type": "string" 2277 + }, 2278 + "meta_description": { 2279 + "type": "string" 2280 + }, 2281 + "what_we_are": { 2282 + "type": "object", 2283 + "properties": { 2284 + "title": { 2285 + "type": "string" 2286 + }, 2287 + "better_ux_dx": { 2288 + "type": "string" 2289 + }, 2290 + "admin_ui": { 2291 + "type": "string" 2292 + }, 2293 + "description": { 2294 + "type": "string" 2295 + }, 2296 + "admin_description": { 2297 + "type": "string" 2298 + } 2299 + }, 2300 + "additionalProperties": false 2301 + }, 2302 + "what_we_are_not": { 2303 + "type": "object", 2304 + "properties": { 2305 + "title": { 2306 + "type": "string" 2307 + }, 2308 + "not_package_manager": { 2309 + "type": "string" 2310 + }, 2311 + "not_registry": { 2312 + "type": "string" 2313 + }, 2314 + "registry_description": { 2315 + "type": "string" 2316 + }, 2317 + "package_managers_exist": { 2318 + "type": "string" 2319 + }, 2320 + "words": { 2321 + "type": "object", 2322 + "properties": { 2323 + "already": { 2324 + "type": "string" 2325 + }, 2326 + "people": { 2327 + "type": "string" 2328 + }, 2329 + "building": { 2330 + "type": "string" 2331 + }, 2332 + "really": { 2333 + "type": "string" 2334 + }, 2335 + "cool": { 2336 + "type": "string" 2337 + }, 2338 + "package": { 2339 + "type": "string" 2340 + }, 2341 + "managers": { 2342 + "type": "string" 2343 + } 2344 + }, 2345 + "additionalProperties": false 2346 + } 2347 + }, 2348 + "additionalProperties": false 2349 + }, 2350 + "contributors": { 2351 + "type": "object", 2352 + "properties": { 2353 + "title": { 2354 + "type": "string" 2355 + }, 2356 + "description": { 2357 + "type": "string" 2358 + }, 2359 + "loading": { 2360 + "type": "string" 2361 + }, 2362 + "error": { 2363 + "type": "string" 2364 + }, 2365 + "view_profile": { 2366 + "type": "string" 2367 + } 2368 + }, 2369 + "additionalProperties": false 2370 + }, 2371 + "get_involved": { 2372 + "type": "object", 2373 + "properties": { 2374 + "title": { 2375 + "type": "string" 2376 + }, 2377 + "contribute": { 2378 + "type": "object", 2379 + "properties": { 2380 + "title": { 2381 + "type": "string" 2382 + }, 2383 + "description": { 2384 + "type": "string" 2385 + }, 2386 + "cta": { 2387 + "type": "string" 2388 + } 2389 + }, 2390 + "additionalProperties": false 2391 + }, 2392 + "community": { 2393 + "type": "object", 2394 + "properties": { 2395 + "title": { 2396 + "type": "string" 2397 + }, 2398 + "description": { 2399 + "type": "string" 2400 + }, 2401 + "cta": { 2402 + "type": "string" 2403 + } 2404 + }, 2405 + "additionalProperties": false 2406 + }, 2407 + "follow": { 2408 + "type": "object", 2409 + "properties": { 2410 + "title": { 2411 + "type": "string" 2412 + }, 2413 + "description": { 2414 + "type": "string" 2415 + }, 2416 + "cta": { 2417 + "type": "string" 2418 + } 2419 + }, 2420 + "additionalProperties": false 2421 + } 2422 + }, 2423 + "additionalProperties": false 2424 + } 2425 + }, 2426 + "additionalProperties": false 2427 + }, 2428 + "account_menu": { 2429 + "type": "object", 2430 + "properties": { 2431 + "connect": { 2432 + "type": "string" 2433 + }, 2434 + "account": { 2435 + "type": "string" 2436 + }, 2437 + "npm_cli": { 2438 + "type": "string" 2439 + }, 2440 + "atmosphere": { 2441 + "type": "string" 2442 + }, 2443 + "npm_cli_desc": { 2444 + "type": "string" 2445 + }, 2446 + "atmosphere_desc": { 2447 + "type": "string" 2448 + }, 2449 + "connect_npm_cli": { 2450 + "type": "string" 2451 + }, 2452 + "connect_atmosphere": { 2453 + "type": "string" 2454 + }, 2455 + "connecting": { 2456 + "type": "string" 2457 + }, 2458 + "ops": { 2459 + "type": "string" 2460 + } 2461 + }, 2462 + "additionalProperties": false 2463 + }, 2464 + "auth": { 2465 + "type": "object", 2466 + "properties": { 2467 + "modal": { 2468 + "type": "object", 2469 + "properties": { 2470 + "title": { 2471 + "type": "string" 2472 + }, 2473 + "connected_as": { 2474 + "type": "string" 2475 + }, 2476 + "disconnect": { 2477 + "type": "string" 2478 + }, 2479 + "connect_prompt": { 2480 + "type": "string" 2481 + }, 2482 + "handle_label": { 2483 + "type": "string" 2484 + }, 2485 + "handle_placeholder": { 2486 + "type": "string" 2487 + }, 2488 + "connect": { 2489 + "type": "string" 2490 + }, 2491 + "create_account": { 2492 + "type": "string" 2493 + }, 2494 + "connect_bluesky": { 2495 + "type": "string" 2496 + }, 2497 + "what_is_atmosphere": { 2498 + "type": "string" 2499 + }, 2500 + "atmosphere_explanation": { 2501 + "type": "string" 2502 + }, 2503 + "default_input_error": { 2504 + "type": "string" 2505 + } 2506 + }, 2507 + "additionalProperties": false 2508 + } 2509 + }, 2510 + "additionalProperties": false 2511 + }, 2512 + "header": { 2513 + "type": "object", 2514 + "properties": { 2515 + "home": { 2516 + "type": "string" 2517 + }, 2518 + "packages": { 2519 + "type": "string" 2520 + }, 2521 + "packages_dropdown": { 2522 + "type": "object", 2523 + "properties": { 2524 + "title": { 2525 + "type": "string" 2526 + }, 2527 + "loading": { 2528 + "type": "string" 2529 + }, 2530 + "error": { 2531 + "type": "string" 2532 + }, 2533 + "empty": { 2534 + "type": "string" 2535 + }, 2536 + "view_all": { 2537 + "type": "string" 2538 + } 2539 + }, 2540 + "additionalProperties": false 2541 + }, 2542 + "orgs": { 2543 + "type": "string" 2544 + }, 2545 + "orgs_dropdown": { 2546 + "type": "object", 2547 + "properties": { 2548 + "title": { 2549 + "type": "string" 2550 + }, 2551 + "loading": { 2552 + "type": "string" 2553 + }, 2554 + "error": { 2555 + "type": "string" 2556 + }, 2557 + "empty": { 2558 + "type": "string" 2559 + }, 2560 + "view_all": { 2561 + "type": "string" 2562 + } 2563 + }, 2564 + "additionalProperties": false 2565 + } 2566 + }, 2567 + "additionalProperties": false 2568 + }, 2569 + "compare": { 2570 + "type": "object", 2571 + "properties": { 2572 + "packages": { 2573 + "type": "object", 2574 + "properties": { 2575 + "title": { 2576 + "type": "string" 2577 + }, 2578 + "tagline": { 2579 + "type": "string" 2580 + }, 2581 + "meta_title": { 2582 + "type": "string" 2583 + }, 2584 + "meta_title_empty": { 2585 + "type": "string" 2586 + }, 2587 + "meta_description": { 2588 + "type": "string" 2589 + }, 2590 + "meta_description_empty": { 2591 + "type": "string" 2592 + }, 2593 + "section_packages": { 2594 + "type": "string" 2595 + }, 2596 + "section_facets": { 2597 + "type": "string" 2598 + }, 2599 + "section_comparison": { 2600 + "type": "string" 2601 + }, 2602 + "loading": { 2603 + "type": "string" 2604 + }, 2605 + "error": { 2606 + "type": "string" 2607 + }, 2608 + "empty_title": { 2609 + "type": "string" 2610 + }, 2611 + "empty_description": { 2612 + "type": "string" 2613 + } 2614 + }, 2615 + "additionalProperties": false 2616 + }, 2617 + "selector": { 2618 + "type": "object", 2619 + "properties": { 2620 + "search_label": { 2621 + "type": "string" 2622 + }, 2623 + "search_first": { 2624 + "type": "string" 2625 + }, 2626 + "search_add": { 2627 + "type": "string" 2628 + }, 2629 + "searching": { 2630 + "type": "string" 2631 + }, 2632 + "remove_package": { 2633 + "type": "string" 2634 + }, 2635 + "packages_selected": { 2636 + "type": "string" 2637 + }, 2638 + "add_hint": { 2639 + "type": "string" 2640 + } 2641 + }, 2642 + "additionalProperties": false 2643 + }, 2644 + "no_dependency": { 2645 + "type": "object", 2646 + "properties": { 2647 + "label": { 2648 + "type": "string" 2649 + }, 2650 + "typeahead_title": { 2651 + "type": "string" 2652 + }, 2653 + "typeahead_description": { 2654 + "type": "string" 2655 + }, 2656 + "tooltip_title": { 2657 + "type": "string" 2658 + }, 2659 + "tooltip_description": { 2660 + "type": "string" 2661 + }, 2662 + "e18e_community": { 2663 + "type": "string" 2664 + }, 2665 + "add_column": { 2666 + "type": "string" 2667 + } 2668 + }, 2669 + "additionalProperties": false 2670 + }, 2671 + "facets": { 2672 + "type": "object", 2673 + "properties": { 2674 + "group_label": { 2675 + "type": "string" 2676 + }, 2677 + "all": { 2678 + "type": "string" 2679 + }, 2680 + "none": { 2681 + "type": "string" 2682 + }, 2683 + "coming_soon": { 2684 + "type": "string" 2685 + }, 2686 + "select_all": { 2687 + "type": "string" 2688 + }, 2689 + "deselect_all": { 2690 + "type": "string" 2691 + }, 2692 + "select_category": { 2693 + "type": "string" 2694 + }, 2695 + "deselect_category": { 2696 + "type": "string" 2697 + }, 2698 + "binary_only_tooltip": { 2699 + "type": "string" 2700 + }, 2701 + "categories": { 2702 + "type": "object", 2703 + "properties": { 2704 + "performance": { 2705 + "type": "string" 2706 + }, 2707 + "health": { 2708 + "type": "string" 2709 + }, 2710 + "compatibility": { 2711 + "type": "string" 2712 + }, 2713 + "security": { 2714 + "type": "string" 2715 + } 2716 + }, 2717 + "additionalProperties": false 2718 + }, 2719 + "items": { 2720 + "type": "object", 2721 + "properties": { 2722 + "packageSize": { 2723 + "type": "object", 2724 + "properties": { 2725 + "label": { 2726 + "type": "string" 2727 + }, 2728 + "description": { 2729 + "type": "string" 2730 + } 2731 + }, 2732 + "additionalProperties": false 2733 + }, 2734 + "installSize": { 2735 + "type": "object", 2736 + "properties": { 2737 + "label": { 2738 + "type": "string" 2739 + }, 2740 + "description": { 2741 + "type": "string" 2742 + } 2743 + }, 2744 + "additionalProperties": false 2745 + }, 2746 + "dependencies": { 2747 + "type": "object", 2748 + "properties": { 2749 + "label": { 2750 + "type": "string" 2751 + }, 2752 + "description": { 2753 + "type": "string" 2754 + } 2755 + }, 2756 + "additionalProperties": false 2757 + }, 2758 + "totalDependencies": { 2759 + "type": "object", 2760 + "properties": { 2761 + "label": { 2762 + "type": "string" 2763 + }, 2764 + "description": { 2765 + "type": "string" 2766 + } 2767 + }, 2768 + "additionalProperties": false 2769 + }, 2770 + "downloads": { 2771 + "type": "object", 2772 + "properties": { 2773 + "label": { 2774 + "type": "string" 2775 + }, 2776 + "description": { 2777 + "type": "string" 2778 + } 2779 + }, 2780 + "additionalProperties": false 2781 + }, 2782 + "totalLikes": { 2783 + "type": "object", 2784 + "properties": { 2785 + "label": { 2786 + "type": "string" 2787 + }, 2788 + "description": { 2789 + "type": "string" 2790 + } 2791 + }, 2792 + "additionalProperties": false 2793 + }, 2794 + "lastUpdated": { 2795 + "type": "object", 2796 + "properties": { 2797 + "label": { 2798 + "type": "string" 2799 + }, 2800 + "description": { 2801 + "type": "string" 2802 + } 2803 + }, 2804 + "additionalProperties": false 2805 + }, 2806 + "deprecated": { 2807 + "type": "object", 2808 + "properties": { 2809 + "label": { 2810 + "type": "string" 2811 + }, 2812 + "description": { 2813 + "type": "string" 2814 + } 2815 + }, 2816 + "additionalProperties": false 2817 + }, 2818 + "engines": { 2819 + "type": "object", 2820 + "properties": { 2821 + "label": { 2822 + "type": "string" 2823 + }, 2824 + "description": { 2825 + "type": "string" 2826 + } 2827 + }, 2828 + "additionalProperties": false 2829 + }, 2830 + "types": { 2831 + "type": "object", 2832 + "properties": { 2833 + "label": { 2834 + "type": "string" 2835 + }, 2836 + "description": { 2837 + "type": "string" 2838 + } 2839 + }, 2840 + "additionalProperties": false 2841 + }, 2842 + "moduleFormat": { 2843 + "type": "object", 2844 + "properties": { 2845 + "label": { 2846 + "type": "string" 2847 + }, 2848 + "description": { 2849 + "type": "string" 2850 + } 2851 + }, 2852 + "additionalProperties": false 2853 + }, 2854 + "license": { 2855 + "type": "object", 2856 + "properties": { 2857 + "label": { 2858 + "type": "string" 2859 + }, 2860 + "description": { 2861 + "type": "string" 2862 + } 2863 + }, 2864 + "additionalProperties": false 2865 + }, 2866 + "vulnerabilities": { 2867 + "type": "object", 2868 + "properties": { 2869 + "label": { 2870 + "type": "string" 2871 + }, 2872 + "description": { 2873 + "type": "string" 2874 + } 2875 + }, 2876 + "additionalProperties": false 2877 + } 2878 + }, 2879 + "additionalProperties": false 2880 + }, 2881 + "values": { 2882 + "type": "object", 2883 + "properties": { 2884 + "any": { 2885 + "type": "string" 2886 + }, 2887 + "none": { 2888 + "type": "string" 2889 + }, 2890 + "unknown": { 2891 + "type": "string" 2892 + }, 2893 + "deprecated": { 2894 + "type": "string" 2895 + }, 2896 + "not_deprecated": { 2897 + "type": "string" 2898 + }, 2899 + "types_included": { 2900 + "type": "string" 2901 + }, 2902 + "types_none": { 2903 + "type": "string" 2904 + }, 2905 + "vulnerabilities_summary": { 2906 + "type": "string" 2907 + }, 2908 + "up_to_you": { 2909 + "type": "string" 2910 + } 2911 + }, 2912 + "additionalProperties": false 2913 + }, 2914 + "trends": { 2915 + "type": "object", 2916 + "properties": { 2917 + "title": { 2918 + "type": "string" 2919 + } 2920 + }, 2921 + "additionalProperties": false 2922 + } 2923 + }, 2924 + "additionalProperties": false 2925 + } 2926 + }, 2927 + "additionalProperties": false 2928 + }, 2929 + "privacy_policy": { 2930 + "type": "object", 2931 + "properties": { 2932 + "title": { 2933 + "type": "string" 2934 + }, 2935 + "last_updated": { 2936 + "type": "string" 2937 + }, 2938 + "welcome": { 2939 + "type": "string" 2940 + }, 2941 + "cookies": { 2942 + "type": "object", 2943 + "properties": { 2944 + "what_are": { 2945 + "type": "object", 2946 + "properties": { 2947 + "title": { 2948 + "type": "string" 2949 + }, 2950 + "p1": { 2951 + "type": "string" 2952 + } 2953 + }, 2954 + "additionalProperties": false 2955 + }, 2956 + "types": { 2957 + "type": "object", 2958 + "properties": { 2959 + "title": { 2960 + "type": "string" 2961 + }, 2962 + "p1": { 2963 + "type": "string" 2964 + }, 2965 + "bold": { 2966 + "type": "string" 2967 + }, 2968 + "li1": { 2969 + "type": "string" 2970 + }, 2971 + "li2": { 2972 + "type": "string" 2973 + }, 2974 + "separator": { 2975 + "type": "string" 2976 + }, 2977 + "cookie_vdpl": { 2978 + "type": "string" 2979 + }, 2980 + "cookie_vdpl_desc": { 2981 + "type": "string" 2982 + }, 2983 + "cookie_h3": { 2984 + "type": "string" 2985 + }, 2986 + "cookie_h3_desc": { 2987 + "type": "string" 2988 + } 2989 + }, 2990 + "additionalProperties": false 2991 + }, 2992 + "local_storage": { 2993 + "type": "object", 2994 + "properties": { 2995 + "title": { 2996 + "type": "string" 2997 + }, 2998 + "p1": { 2999 + "type": "string" 3000 + }, 3001 + "bold": { 3002 + "type": "string" 3003 + }, 3004 + "p2": { 3005 + "type": "string" 3006 + }, 3007 + "bold2": { 3008 + "type": "string" 3009 + }, 3010 + "settings": { 3011 + "type": "string" 3012 + } 3013 + }, 3014 + "additionalProperties": false 3015 + }, 3016 + "management": { 3017 + "type": "object", 3018 + "properties": { 3019 + "title": { 3020 + "type": "string" 3021 + }, 3022 + "p1": { 3023 + "type": "string" 3024 + }, 3025 + "bold": { 3026 + "type": "string" 3027 + }, 3028 + "p2": { 3029 + "type": "string" 3030 + }, 3031 + "chrome": { 3032 + "type": "string" 3033 + }, 3034 + "firefox": { 3035 + "type": "string" 3036 + }, 3037 + "edge": { 3038 + "type": "string" 3039 + } 3040 + }, 3041 + "additionalProperties": false 3042 + } 3043 + }, 3044 + "additionalProperties": false 3045 + }, 3046 + "analytics": { 3047 + "type": "object", 3048 + "properties": { 3049 + "title": { 3050 + "type": "string" 3051 + }, 3052 + "p1": { 3053 + "type": "string" 3054 + }, 3055 + "bold": { 3056 + "type": "string" 3057 + }, 3058 + "p2": { 3059 + "type": "string" 3060 + }, 3061 + "li1": { 3062 + "type": "string" 3063 + }, 3064 + "li2": { 3065 + "type": "string" 3066 + }, 3067 + "li3": { 3068 + "type": "string" 3069 + }, 3070 + "li4": { 3071 + "type": "string" 3072 + }, 3073 + "p3": { 3074 + "type": "string" 3075 + } 3076 + }, 3077 + "additionalProperties": false 3078 + }, 3079 + "authenticated": { 3080 + "type": "object", 3081 + "properties": { 3082 + "title": { 3083 + "type": "string" 3084 + }, 3085 + "p1": { 3086 + "type": "string" 3087 + }, 3088 + "bold": { 3089 + "type": "string" 3090 + }, 3091 + "p2": { 3092 + "type": "string" 3093 + }, 3094 + "settings": { 3095 + "type": "string" 3096 + } 3097 + }, 3098 + "additionalProperties": false 3099 + }, 3100 + "data_retention": { 3101 + "type": "object", 3102 + "properties": { 3103 + "title": { 3104 + "type": "string" 3105 + }, 3106 + "p1": { 3107 + "type": "string" 3108 + } 3109 + }, 3110 + "additionalProperties": false 3111 + }, 3112 + "your_rights": { 3113 + "type": "object", 3114 + "properties": { 3115 + "title": { 3116 + "type": "string" 3117 + }, 3118 + "p1": { 3119 + "type": "string" 3120 + }, 3121 + "li1": { 3122 + "type": "string" 3123 + }, 3124 + "li2": { 3125 + "type": "string" 3126 + }, 3127 + "li3": { 3128 + "type": "string" 3129 + }, 3130 + "li4": { 3131 + "type": "string" 3132 + }, 3133 + "p2": { 3134 + "type": "string" 3135 + } 3136 + }, 3137 + "additionalProperties": false 3138 + }, 3139 + "contact": { 3140 + "type": "object", 3141 + "properties": { 3142 + "title": { 3143 + "type": "string" 3144 + }, 3145 + "p1": { 3146 + "type": "string" 3147 + }, 3148 + "link": { 3149 + "type": "string" 3150 + } 3151 + }, 3152 + "additionalProperties": false 3153 + }, 3154 + "changes": { 3155 + "type": "object", 3156 + "properties": { 3157 + "title": { 3158 + "type": "string" 3159 + }, 3160 + "p1": { 3161 + "type": "string" 3162 + } 3163 + }, 3164 + "additionalProperties": false 3165 + } 3166 + }, 3167 + "additionalProperties": false 3168 + }, 3169 + "$schema": { 3170 + "type": "string" 3171 + } 3172 + }, 3173 + "additionalProperties": false 3174 + }
+11 -15
lunaria/prepare-json-files.ts
··· 39 39 40 40 type NestedObject = Record<string, unknown> 41 41 42 - export async function mergeLocaleObject( 43 - locale: LocaleObject, 44 - options: { copy?: boolean } = {}, 45 - ): Promise<NestedObject | undefined> { 46 - const { copy = false } = options 42 + export async function mergeLocaleObject(locale: LocaleObject): Promise<NestedObject | undefined> { 47 43 const files = locale.files ?? [] 48 44 if (locale.file || files.length === 1) { 49 45 const json = 50 46 (locale.file ? getFileName(locale.file) : undefined) ?? 51 47 (files[0] ? getFileName(files[0]) : undefined) 52 48 if (!json) return undefined 53 - if (copy) { 54 - await fs.cp(path.resolve(`${localesFolder}/${json}`), path.resolve(`${destFolder}/${json}`)) 55 - return undefined 56 - } 57 49 58 - return await loadJsonFile<NestedObject>(json) 50 + return await loadLocaleSourceJson<NestedObject>(json) 59 51 } 60 52 61 53 const firstFile = files[0] 62 54 if (!firstFile) return undefined 63 - const source = await loadJsonFile<NestedObject>(getFileName(firstFile)) 55 + const source = await loadLocaleSourceJson<NestedObject>(getFileName(firstFile)) 64 56 let currentSource: unknown 65 57 for (let i = 1; i < files.length; i++) { 66 58 const file = files[i] 67 59 if (!file) continue 68 - currentSource = await loadJsonFile(getFileName(file)) 60 + currentSource = await loadLocaleSourceJson(getFileName(file)) 69 61 deepCopy(currentSource, source) 70 62 } 71 63 72 64 return source 73 65 } 74 66 75 - async function loadJsonFile<T = unknown>(name: string): Promise<T> { 76 - return JSON.parse(await fs.readFile(path.resolve(`${localesFolder}/${name}`), 'utf8')) 67 + async function loadLocaleSourceJson<T = unknown>(name: string): Promise<T> { 68 + const rawJson = JSON.parse(await fs.readFile(path.resolve(`${localesFolder}/${name}`), 'utf8')) 69 + // Exclude $schema since it isn't useful in generated files and the relative path 70 + // would be wrong anyway 71 + const { $schema: _, ...rest } = rawJson 72 + return rest 77 73 } 78 74 79 75 function getFileName(file: string | { path: string }): string { ··· 81 77 } 82 78 83 79 async function mergeLocale(locale: LocaleObject): Promise<void> { 84 - const source = await mergeLocaleObject(locale, { copy: true }) 80 + const source = await mergeLocaleObject(locale) 85 81 if (!source) { 86 82 return 87 83 }
+6 -2
package.json
··· 19 19 "i18n:check:fix": "node scripts/compare-translations.ts --fix", 20 20 "i18n:report": "node scripts/find-invalid-translations.ts", 21 21 "i18n:report:fix": "node scripts/remove-unused-translations.ts", 22 + "i18n:schema": "node scripts/generate-i18n-schema.ts", 22 23 "knip": "knip", 23 24 "knip:fix": "knip --fix", 24 25 "lint": "oxlint && oxfmt --check", ··· 145 146 }, 146 147 "lint-staged": { 147 148 "i18n/locales/*": [ 148 - "pnpm build:lunaria", 149 + "node ./lunaria/lunaria.ts", 149 150 "pnpm oxfmt lunaria/files/", 150 - "git add lunaria/files/" 151 + "git add lunaria/files/", 152 + "node scripts/generate-i18n-schema.ts", 153 + "pnpm oxfmt i18n/schema.json", 154 + "git add i18n/schema.json" 151 155 ], 152 156 "*.{js,ts,mjs,cjs,vue}": [ 153 157 "pnpm oxlint --fix"
+9 -2
scripts/compare-translations.ts
··· 230 230 231 231 const targetContent = await loadJson(localeInfo) 232 232 233 + // $schema is a JSON Schema reference, not a translation key — preserve it but exclude from comparison 234 + const { $schema: targetSchema, ...targetWithoutSchema } = targetContent 235 + 233 236 const stats: SyncStats = { 234 237 missing: [], 235 238 extra: [], 236 239 referenceKeys: [], 237 240 } 238 241 239 - const newContent = syncLocaleData(referenceContent, targetContent, stats, fix) 242 + const newContent = syncLocaleData(referenceContent, targetWithoutSchema, stats, fix) 240 243 241 244 // Write if there are removals (always) or we are in fix mode 242 245 if (!localeInfo.mergeLocale && (stats.extra.length > 0 || fix)) { 243 - writeFileSync(filePath, JSON.stringify(newContent, null, 2) + '\n', 'utf-8') 246 + const output = targetSchema ? { $schema: targetSchema, ...newContent } : newContent 247 + writeFileSync(filePath, JSON.stringify(output, null, 2) + '\n', 'utf-8') 244 248 } 245 249 246 250 return stats ··· 380 384 locale: 'en', 381 385 lang: 'en', 382 386 }) 387 + 388 + // $schema is a JSON Schema reference, not a translation key 389 + delete referenceContent.$schema 383 390 384 391 const args = process.argv.slice(2) 385 392 const fix = args.includes('--fix')
+1
scripts/find-invalid-translations.ts
··· 42 42 const { missingKeys, unusedKeys, maybeDynamicKeys } = await createI18NReport({ 43 43 vueFiles: VUE_FILES_GLOB, 44 44 languageFiles: join(LOCALES_DIRECTORY, REFERENCE_FILE_NAME), 45 + exclude: ['$schema'], 45 46 }) 46 47 47 48 const hasMissingKeys = missingKeys.length > 0
+77
scripts/generate-i18n-schema.ts
··· 1 + /* oxlint-disable no-console */ 2 + import { readFile, writeFile } from 'node:fs/promises' 3 + import { join } from 'node:path' 4 + import { fileURLToPath } from 'node:url' 5 + import { colors } from './utils/colors.ts' 6 + 7 + const I18N_DIRECTORY = fileURLToPath(new URL('../i18n', import.meta.url)) 8 + const LOCALES_DIRECTORY = join(I18N_DIRECTORY, 'locales') 9 + const REFERENCE_FILE_NAME = 'en.json' 10 + const SCHEMA_FILE_NAME = 'schema.json' 11 + 12 + type Json = Record<string, unknown> 13 + type LocaleJson = Json & { $schema: string } 14 + 15 + interface JsonSchema { 16 + $schema?: string 17 + title?: string 18 + description?: string 19 + type: string 20 + properties?: Record<string, JsonSchema> 21 + additionalProperties?: boolean 22 + } 23 + 24 + const generateSubSchema = (obj: Json): JsonSchema => { 25 + const properties: Record<string, JsonSchema> = {} 26 + 27 + for (const [key, value] of Object.entries(obj)) { 28 + if (value !== null && typeof value === 'object' && !Array.isArray(value)) { 29 + properties[key] = generateSubSchema(value as Json) 30 + } else { 31 + properties[key] = { type: 'string' } 32 + } 33 + } 34 + 35 + return { 36 + type: 'object', 37 + properties, 38 + additionalProperties: false, 39 + } 40 + } 41 + 42 + const generateSchema = (obj: LocaleJson): JsonSchema => { 43 + const { $schema: _, ...rest } = obj // Exclude $schema from schema generation 44 + const baseSchema = generateSubSchema(rest) 45 + return { 46 + $schema: 'http://json-schema.org/draft-07/schema#', 47 + title: 'npmx i18n locale file', 48 + description: 49 + 'Schema for npmx i18n translation files. Generated from en.json — do not edit manually.', 50 + ...baseSchema, 51 + // Allow $schema property at root level 52 + properties: { 53 + ...baseSchema.properties, 54 + $schema: { type: 'string' }, 55 + }, 56 + } 57 + } 58 + 59 + /* 60 + * Generates a JSON Schema from the reference locale file (en.json) and writes it to 61 + * i18n/schema.json. All locale files include a $schema property that points to this file. 62 + * 63 + * This allows IDEs to provide validation, autocompletion, and other hints in translation files. 64 + */ 65 + const main = async (): Promise<void> => { 66 + const referenceFilePath = join(LOCALES_DIRECTORY, REFERENCE_FILE_NAME) 67 + const referenceContent = JSON.parse(await readFile(referenceFilePath, 'utf-8')) as LocaleJson 68 + 69 + const schema = generateSchema(referenceContent) 70 + 71 + const schemaFilePath = join(I18N_DIRECTORY, SCHEMA_FILE_NAME) 72 + await writeFile(schemaFilePath, JSON.stringify(schema, null, 2) + '\n', 'utf-8') 73 + 74 + console.log(colors.green(`✅ Generated schema at ${schemaFilePath}`)) 75 + } 76 + 77 + await main()
+1
scripts/remove-unused-translations.ts
··· 51 51 const { unusedKeys } = await createI18NReport({ 52 52 vueFiles: VUE_FILES_GLOB, 53 53 languageFiles: referenceFilePath, 54 + exclude: ['$schema'], 54 55 }) 55 56 56 57 if (unusedKeys.length === 0) {