├── .discourse-compatibility ├── .github └── workflows │ └── discourse-theme.yml ├── .gitignore ├── .npmrc ├── .prettierrc.cjs ├── .rubocop.yml ├── .streerc ├── .template-lintrc.cjs ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── about.json ├── common └── common.scss ├── eslint.config.mjs ├── javascripts └── discourse │ ├── components │ └── custom-header-links.gjs │ └── initializers │ └── discourse-custom-header-links.js ├── locales ├── ar.yml ├── be.yml ├── bg.yml ├── bs_BA.yml ├── ca.yml ├── cs.yml ├── da.yml ├── de.yml ├── el.yml ├── en.yml ├── en_GB.yml ├── es.yml ├── et.yml ├── fa_IR.yml ├── fi.yml ├── fr.yml ├── gl.yml ├── he.yml ├── hr.yml ├── hu.yml ├── hy.yml ├── id.yml ├── it.yml ├── ja.yml ├── ko.yml ├── lt.yml ├── lv.yml ├── nb_NO.yml ├── nl.yml ├── pl_PL.yml ├── pt.yml ├── pt_BR.yml ├── ro.yml ├── ru.yml ├── sk.yml ├── sl.yml ├── sq.yml ├── sr.yml ├── sv.yml ├── sw.yml ├── te.yml ├── th.yml ├── tr_TR.yml ├── ug.yml ├── uk.yml ├── ur.yml ├── vi.yml ├── zh_CN.yml └── zh_TW.yml ├── migrations └── settings │ ├── 0001-rename-settings.js │ └── 0002-migrate-custom-header-links.js ├── package.json ├── pnpm-lock.yaml ├── settings.yml ├── spec └── system │ ├── core_features_spec.rb │ ├── page_objects │ └── components │ │ └── custom_header_link.rb │ └── viewing_custom_header_links_spec.rb ├── stylelint.config.mjs ├── test └── unit │ └── migrations │ └── settings │ ├── 0001-rename-settings-test.js │ └── 0002-migrate-custom-header-links-test.js └── translator.yml /.discourse-compatibility: -------------------------------------------------------------------------------- 1 | < 3.5.0.beta5-dev: 76ecc5abb19aad9f7d817a83812fc10ef3a441d7 2 | < 3.5.0.beta1-dev: 95c48fafe4241c063f815711e1f9b1d1610f23d9 3 | < 3.4.0.beta1-dev: 5addd017de59124d749611010d34f7605226f668 4 | < 3.3.0.beta2-dev: 0a837d7c044798417b1a7389cc37a67859c25dbe 5 | < 3.3.0.beta1-dev: 50061254831a658eba821238a8a1ae0b7029ab09 6 | < 3.2.0.beta2: 061adfe5ae20abbb82be711d373894c30987ec75 7 | < 3.2.0.beta1-dev: c344d0f519bbb3660e306c50c0d1aa1a776c5e13 8 | 3.1.999: bd0594108a1cfd6c11cb8af218dba9b211b44015 9 | -------------------------------------------------------------------------------- /.github/workflows/discourse-theme.yml: -------------------------------------------------------------------------------- 1 | name: Discourse Theme 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | ci: 11 | uses: discourse/.github/.github/workflows/discourse-theme.yml@v1 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .discourse-site 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict = true 2 | auto-install-peers = false 3 | -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = require("@discourse/lint-configs/prettier"); 2 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_gem: 2 | rubocop-discourse: stree-compat.yml 3 | -------------------------------------------------------------------------------- /.streerc: -------------------------------------------------------------------------------- 1 | --print-width=100 2 | --plugins=plugin/trailing_comma,plugin/disable_auto_ternary 3 | -------------------------------------------------------------------------------- /.template-lintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = require("@discourse/lint-configs/template-lint"); 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | group :development do 6 | gem "rubocop-discourse" 7 | gem "syntax_tree" 8 | end 9 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (8.0.2) 5 | base64 6 | benchmark (>= 0.3) 7 | bigdecimal 8 | concurrent-ruby (~> 1.0, >= 1.3.1) 9 | connection_pool (>= 2.2.5) 10 | drb 11 | i18n (>= 1.6, < 2) 12 | logger (>= 1.4.2) 13 | minitest (>= 5.1) 14 | securerandom (>= 0.3) 15 | tzinfo (~> 2.0, >= 2.0.5) 16 | uri (>= 0.13.1) 17 | ast (2.4.3) 18 | base64 (0.3.0) 19 | benchmark (0.4.1) 20 | bigdecimal (3.2.1) 21 | concurrent-ruby (1.3.5) 22 | connection_pool (2.5.3) 23 | drb (2.2.3) 24 | i18n (1.14.7) 25 | concurrent-ruby (~> 1.0) 26 | json (2.12.2) 27 | language_server-protocol (3.17.0.5) 28 | lint_roller (1.1.0) 29 | logger (1.7.0) 30 | minitest (5.25.5) 31 | parallel (1.27.0) 32 | parser (3.3.8.0) 33 | ast (~> 2.4.1) 34 | racc 35 | prettier_print (1.2.1) 36 | prism (1.4.0) 37 | racc (1.8.1) 38 | rack (3.1.15) 39 | rainbow (3.1.1) 40 | regexp_parser (2.10.0) 41 | rubocop (1.76.0) 42 | json (~> 2.3) 43 | language_server-protocol (~> 3.17.0.2) 44 | lint_roller (~> 1.1.0) 45 | parallel (~> 1.10) 46 | parser (>= 3.3.0.2) 47 | rainbow (>= 2.2.2, < 4.0) 48 | regexp_parser (>= 2.9.3, < 3.0) 49 | rubocop-ast (>= 1.45.0, < 2.0) 50 | ruby-progressbar (~> 1.7) 51 | unicode-display_width (>= 2.4.0, < 4.0) 52 | rubocop-ast (1.45.0) 53 | parser (>= 3.3.7.2) 54 | prism (~> 1.4) 55 | rubocop-capybara (2.22.1) 56 | lint_roller (~> 1.1) 57 | rubocop (~> 1.72, >= 1.72.1) 58 | rubocop-discourse (3.12.1) 59 | activesupport (>= 6.1) 60 | lint_roller (>= 1.1.0) 61 | rubocop (>= 1.73.2) 62 | rubocop-capybara (>= 2.22.0) 63 | rubocop-factory_bot (>= 2.27.0) 64 | rubocop-rails (>= 2.30.3) 65 | rubocop-rspec (>= 3.0.1) 66 | rubocop-rspec_rails (>= 2.31.0) 67 | rubocop-factory_bot (2.27.1) 68 | lint_roller (~> 1.1) 69 | rubocop (~> 1.72, >= 1.72.1) 70 | rubocop-rails (2.32.0) 71 | activesupport (>= 4.2.0) 72 | lint_roller (~> 1.1) 73 | rack (>= 1.1) 74 | rubocop (>= 1.75.0, < 2.0) 75 | rubocop-ast (>= 1.44.0, < 2.0) 76 | rubocop-rspec (3.6.0) 77 | lint_roller (~> 1.1) 78 | rubocop (~> 1.72, >= 1.72.1) 79 | rubocop-rspec_rails (2.31.0) 80 | lint_roller (~> 1.1) 81 | rubocop (~> 1.72, >= 1.72.1) 82 | rubocop-rspec (~> 3.5) 83 | ruby-progressbar (1.13.0) 84 | securerandom (0.4.1) 85 | syntax_tree (6.2.0) 86 | prettier_print (>= 1.2.0) 87 | tzinfo (2.0.6) 88 | concurrent-ruby (~> 1.0) 89 | unicode-display_width (3.1.4) 90 | unicode-emoji (~> 4.0, >= 4.0.4) 91 | unicode-emoji (4.0.4) 92 | uri (1.0.3) 93 | 94 | PLATFORMS 95 | arm64-darwin-23 96 | ruby 97 | 98 | DEPENDENCIES 99 | rubocop-discourse 100 | syntax_tree 101 | 102 | BUNDLED WITH 103 | 2.6.9 104 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Civilized Discourse Construction Kit, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # discourse-custom-header-links 2 | 3 | See: https://meta.discourse.org/t/custom-header-links/90588 4 | -------------------------------------------------------------------------------- /about.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Custom Header Links", 3 | "component": true, 4 | "about_url": "https://meta.discourse.org/t/custom-header-links/90588", 5 | "license_url": "https://github.com/discourse/discourse-custom-header-links/blob/main/LICENSE" 6 | } 7 | -------------------------------------------------------------------------------- /common/common.scss: -------------------------------------------------------------------------------- 1 | .before-header-panel-outlet { 2 | display: flex; 3 | } 4 | 5 | @if $links_position == "right" { 6 | .before-header-panel-outlet { 7 | margin-left: auto; 8 | 9 | + .panel { 10 | margin-left: 0; 11 | } 12 | } 13 | } 14 | 15 | .custom-header-links { 16 | display: inline-flex; 17 | align-items: center; 18 | margin-left: auto; 19 | 20 | @if $links_position == "left" { 21 | margin-left: 1em; 22 | 23 | &--hide-links { 24 | display: none; 25 | } 26 | } 27 | 28 | .headerLink { 29 | list-style: none; 30 | 31 | a { 32 | padding: 0.35em 0.6em; 33 | color: var(--header_primary); 34 | font-size: var(--font-up-1); 35 | } 36 | } 37 | 38 | &--hide-links { 39 | .headerLink:not(.headerLink--keep) { 40 | display: none; 41 | } 42 | } 43 | } 44 | 45 | .desktop-view .headerLink--vmo, 46 | .mobile-view .headerLink--vdo { 47 | display: none; 48 | } 49 | 50 | // for compatibility with the discourse-header-search component 51 | .floating-search-input-wrapper { 52 | flex: 1 1 auto; 53 | margin: 0 1em; 54 | 55 | @if $links_position == "left" { 56 | order: 2; 57 | } 58 | 59 | .floating-search-input { 60 | width: 100%; 61 | margin: 0; 62 | } 63 | 64 | .search-menu { 65 | width: 100% !important; // overrides very specific selector 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import DiscourseRecommendedTheme from "@discourse/lint-configs/eslint-theme"; 2 | 3 | export default [...DiscourseRecommendedTheme]; 4 | -------------------------------------------------------------------------------- /javascripts/discourse/components/custom-header-links.gjs: -------------------------------------------------------------------------------- 1 | import Component from "@glimmer/component"; 2 | import { dasherize } from "@ember/string"; 3 | import concatClass from "discourse/helpers/concat-class"; 4 | 5 | function normalizeLocale(locale) { 6 | return locale?.trim().toLowerCase().replace(/[-_]/g, "_"); 7 | } 8 | 9 | export default class CustomHeaderLinks extends Component { 10 | get shouldShow() { 11 | return settings.custom_header_links?.length > 0; 12 | } 13 | 14 | get links() { 15 | return settings.custom_header_links.reduce((result, link) => { 16 | const linkText = link.text; 17 | const linkTitle = link.title; 18 | const linkHref = link.url; 19 | const target = link.target; 20 | const hideOnScroll = link.hide_on_scroll; 21 | const locale = link.locale; 22 | const device = link.view; 23 | 24 | const currentLocale = normalizeLocale(document.documentElement.lang); 25 | 26 | if (!linkText || (locale && normalizeLocale(locale) !== currentLocale)) { 27 | return result; 28 | } 29 | 30 | const linkClass = `${dasherize(linkText)}-custom-header-links`; // legacy name 31 | 32 | const anchorAttributes = { 33 | title: linkTitle, 34 | href: linkHref, 35 | target: target === "self" ? "" : "_blank", 36 | }; 37 | 38 | result.push({ 39 | device: `headerLink--${device}`, 40 | hideOnScroll: `headerLink--${hideOnScroll}`, 41 | locale: locale ? `headerLink--${locale}` : null, 42 | linkClass, 43 | anchorAttributes, 44 | linkText, 45 | }); 46 | 47 | return result; 48 | }, []); 49 | } 50 | 51 | 79 | } 80 | -------------------------------------------------------------------------------- /javascripts/discourse/initializers/discourse-custom-header-links.js: -------------------------------------------------------------------------------- 1 | import { apiInitializer } from "discourse/lib/api"; 2 | import CustomHeaderLinks from "../components/custom-header-links"; 3 | 4 | export default apiInitializer("1.14.0", (api) => { 5 | api.renderInOutlet("before-header-panel", CustomHeaderLinks); 6 | }); 7 | -------------------------------------------------------------------------------- /locales/ar.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ar: 8 | theme_metadata: 9 | settings: 10 | links_position: "لاحظ أنه عند عرض الروابط على اليمين، يتم إخفاؤها تلقائيًا أثناء التمرير داخل الموضوعات لإفساح المجال للعنوان" 11 | custom_header_links: 12 | description: روابط مخصَّصة لعرضها في الرأس 13 | schema: 14 | properties: 15 | text: 16 | label: النص 17 | description: نص الرابط 18 | title: 19 | label: العنوان 20 | description: سمة العنوان للرابط 21 | url: 22 | label: عنوان URL 23 | description: عنوان URL للرابط 24 | view: 25 | label: العرض 26 | description: | 27 | vdm = سطح المكتب والجوَّال 28 | vdo = سطح المكتب فقط 29 | vmo = الجوَّال فقط 30 | target: 31 | label: الهدف 32 | description: | 33 | blank = يفتح في علامة تبويب جديدة 34 | self = يفتح في علامة التبويب نفسها 35 | hide_on_scroll: 36 | label: الإخفاء عند التمرير 37 | description: | 38 | remove = إخفاء الرابط عند توسيع العنوان على صفحات الموضوع 39 | keep = إبقاء الرابط مرئيًا حتى عندما يكون العنوان مرئيًا على صفحات الموضوع 40 | locale: 41 | label: اللغة 42 | description: اللغة التي ينبغي عرض الرابط بها. سيظهر الرابط في جميع إصدارات اللغات إذا تم ترك هذا الإعداد فارغًا. 43 | -------------------------------------------------------------------------------- /locales/be.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | be: 8 | -------------------------------------------------------------------------------- /locales/bg.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | bg: 8 | -------------------------------------------------------------------------------- /locales/bs_BA.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | bs_BA: 8 | -------------------------------------------------------------------------------- /locales/ca.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ca: 8 | -------------------------------------------------------------------------------- /locales/cs.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | cs: 8 | -------------------------------------------------------------------------------- /locales/da.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | da: 8 | -------------------------------------------------------------------------------- /locales/de.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | de: 8 | theme_metadata: 9 | settings: 10 | links_position: "Wenn Links auf der linken Seite angezeigt werden, werden sie beim Scrollen innerhalb der Themen automatisch ausgeblendet, um Platz für den Titel zu schaffen" 11 | custom_header_links: 12 | description: Benutzerdefinierte Links, die in der Kopfzeile angezeigt werden 13 | schema: 14 | properties: 15 | text: 16 | label: Text 17 | description: Der Text für den Link 18 | title: 19 | label: Titel 20 | description: Das Titel-Attribut für den Link 21 | url: 22 | label: URL 23 | description: Die URL für den Link 24 | view: 25 | label: Ansicht 26 | description: | 27 | vdm = Desktop und Mobilgerät 28 | vdo = nur Desktop 29 | vmo = nur Mobilgerät 30 | target: 31 | label: Target 32 | description: | 33 | blank = öffnet in einem neuen Tab 34 | self = öffnet im selben Tab 35 | hide_on_scroll: 36 | label: Beim Scrollen ausblenden 37 | description: | 38 | remove = verbirgt den Link, wenn der Titel auf Themenseiten erweitert wird 39 | keep = lässt den Link sichtbar, auch wenn der Titel auf Themenseiten sichtbar ist 40 | locale: 41 | label: Sprache 42 | description: Die Sprache, für die der Link angezeigt werden soll. Der Link wird in allen Sprachversionen angezeigt, wenn dies leer gelassen wird. 43 | -------------------------------------------------------------------------------- /locales/el.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | el: 8 | -------------------------------------------------------------------------------- /locales/en.yml: -------------------------------------------------------------------------------- 1 | en: 2 | theme_metadata: 3 | settings: 4 | links_position: "Note that when links are displayed on the left, they're automatically hidden while scrolling within topics to make room for the title" 5 | custom_header_links: 6 | description: Custom links to be displayed in the header 7 | schema: 8 | properties: 9 | text: 10 | label: Text 11 | description: The text for the link 12 | title: 13 | label: Title 14 | description: The title attribute for the link 15 | url: 16 | label: URL 17 | description: The URL for the link 18 | view: 19 | label: View 20 | description: | 21 | vdm = desktop and mobile 22 | vdo = desktop only 23 | vmo = mobile only 24 | target: 25 | label: Target 26 | description: | 27 | blank = opens in a new tab 28 | self = opens in the same tab 29 | hide_on_scroll: 30 | label: Hide on scroll 31 | description: | 32 | remove = hides the link when the title is expanded on topic pages 33 | keep = keeps the link visible even when the title is visible on topic pages 34 | locale: 35 | label: Locale 36 | description: The locale in which the link should be displayed on. The link will be displayed on all locales if left blank. 37 | -------------------------------------------------------------------------------- /locales/en_GB.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | en_GB: 8 | -------------------------------------------------------------------------------- /locales/es.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | es: 8 | theme_metadata: 9 | settings: 10 | links_position: "Ten en cuenta que cuando los enlaces se muestran a la izquierda, se ocultan automáticamente al desplazarse dentro de los temas para dejar espacio al título" 11 | custom_header_links: 12 | description: Enlaces personalizados para mostrar en el encabezado 13 | schema: 14 | properties: 15 | text: 16 | label: Texto 17 | description: El texto para el enlace 18 | title: 19 | label: Título 20 | description: El atributo de título para el enlace 21 | url: 22 | label: URL 23 | description: La URL del enlace 24 | view: 25 | label: Vista 26 | description: | 27 | vdm = escritorio y dispositivos móviles 28 | vdo = solo escritorio 29 | vmo = solo dispositivos móviles 30 | target: 31 | label: Destino 32 | description: | 33 | blank = se abre en una pestaña nueva 34 | self = se abre en la misma pestaña 35 | hide_on_scroll: 36 | label: Ocultar al desplazarse 37 | description: | 38 | remove = oculta el enlace cuando el título se expande en las páginas de temas 39 | keep = mantiene el enlace visible incluso cuando el título está visible en las páginas de temas 40 | locale: 41 | label: Configuración regional 42 | description: La configuración regional en la que se debe mostrar el enlace. El enlace se mostrará en todas las configuraciones regionales si se deja en blanco. 43 | -------------------------------------------------------------------------------- /locales/et.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | et: 8 | -------------------------------------------------------------------------------- /locales/fa_IR.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | fa_IR: 8 | -------------------------------------------------------------------------------- /locales/fi.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | fi: 8 | theme_metadata: 9 | settings: 10 | links_position: "Huomaa, että kun linkit näytetään vasemmalla, ne piilotetaan automaattisesti vieritettäessä ketjuissa; tämä tekee tilaa otsikolle" 11 | custom_header_links: 12 | description: Yläpalkissa näytettävät mukautetut linkit 13 | schema: 14 | properties: 15 | text: 16 | label: Teksti 17 | description: Linkin teksti 18 | title: 19 | label: Otsikko 20 | description: Linkin otsikkomäärite 21 | url: 22 | label: URL 23 | description: Linkin URL 24 | view: 25 | label: Näkymä 26 | description: "vdm = työpöytälaite ja mobiili\nvdo = vain työpöytälaite \nvmo = vain mobiili\n" 27 | target: 28 | label: Kohde 29 | description: | 30 | blank = avautuu uuteen välilehteen 31 | self = avautuu samaan välilehteen 32 | hide_on_scroll: 33 | label: Piilota vieritettäessä 34 | description: | 35 | remove = piilottaa linkin, kun otsikkoa laajennetaan ketjusivuilla 36 | keep = pitää linkin näkyvissä, vaikka otsikko on näkyvissä ketjusivuilla 37 | locale: 38 | label: Kielialue 39 | description: Kielialue, jolla linkki näytetään. Linkki näkyy kaikilla kielialueilla, jos tämä jätetään tyhjäksi. 40 | -------------------------------------------------------------------------------- /locales/fr.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | fr: 8 | theme_metadata: 9 | settings: 10 | links_position: "Notez que lorsque les liens sont affichés sur la gauche, ils sont automatiquement masqués lorsque vous faites défiler les sujets pour faire de la place pour le titre" 11 | custom_header_links: 12 | description: Liens personnalisés à afficher dans l'en-tête 13 | schema: 14 | properties: 15 | text: 16 | label: Texte 17 | description: Le texte du lien 18 | title: 19 | label: Titre 20 | description: L'attribut titre du lien 21 | url: 22 | label: URL 23 | description: L'URL du lien 24 | view: 25 | label: Voir 26 | description: | 27 | vdm = ordinateur de bureau et mobile 28 | vdo = ordinateur de bureau uniquement 29 | vmo = mobile uniquement 30 | target: 31 | label: Cible 32 | description: | 33 | vide = s'ouvre dans un nouvel onglet 34 | self = s'ouvre dans le même onglet 35 | hide_on_scroll: 36 | label: Masquer lors du défilement 37 | description: | 38 | remove = masque le lien lorsque le titre est développé sur les pages de sujets 39 | keep = garde le lien visible même lorsque le titre est visible sur les pages de sujets 40 | locale: 41 | label: Langue 42 | description: Les paramètres régionaux dans lesquels le lien doit être affiché. Le lien sera affiché dans tous les pays s'il est laissé vide. 43 | -------------------------------------------------------------------------------- /locales/gl.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | gl: 8 | -------------------------------------------------------------------------------- /locales/he.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | he: 8 | theme_metadata: 9 | settings: 10 | links_position: "נא לשים לב שכשקישורים מופיעים מימין, הם מוסתרים אוומטית בעת גלילה בתוך נושאים כדי לפנות מקום לכותרת" 11 | custom_header_links: 12 | description: קישורים מותאמים אישית שיוצגו בכותרת 13 | schema: 14 | properties: 15 | text: 16 | label: טקסט 17 | description: הטקסט לקישור 18 | title: 19 | label: כותרת 20 | description: מאפיין הכותרת לקישור 21 | url: 22 | label: כתובת 23 | description: כתובת הקישור 24 | view: 25 | label: הצגה 26 | description: | 27 | vdm = מחשב ונייד 28 | vdo = מחשב בלבד 29 | vmo = נייד בלבד 30 | target: 31 | label: יעד 32 | description: | 33 | blank = נפתח בלשונית חדשה 34 | self = נפתח באותה הלשונית 35 | hide_on_scroll: 36 | label: הסתרה בגלילה 37 | description: | 38 | remove = הסתרת הקישור כשהכותרת מורחבת על עמודי נושאים 39 | keep = השארת הקישור גלוי אפילו כאשר הכותרת גלויה בעמודי נושאים 40 | locale: 41 | label: שפה 42 | description: השפה להצגת הקישור. הקישור יוצג בכל השפות אם הערך הזה יישאר ריק. 43 | -------------------------------------------------------------------------------- /locales/hr.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | hr: 8 | -------------------------------------------------------------------------------- /locales/hu.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | hu: 8 | -------------------------------------------------------------------------------- /locales/hy.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | hy: 8 | -------------------------------------------------------------------------------- /locales/id.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | id: 8 | -------------------------------------------------------------------------------- /locales/it.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | it: 8 | theme_metadata: 9 | settings: 10 | links_position: "Tieni presente che quando i link vengono visualizzati a sinistra, sono automaticamente nascosti durante lo scorrimento all'interno degli argomenti per fare spazio al titolo" 11 | custom_header_links: 12 | description: Link personalizzati da visualizzare nell'intestazione 13 | schema: 14 | properties: 15 | text: 16 | label: Testo 17 | description: Il testo del link 18 | title: 19 | label: Titolo 20 | description: L'attributo titolo per il link 21 | url: 22 | label: URL 23 | description: L'URL del link 24 | view: 25 | label: Visualizzazione 26 | description: | 27 | vdm = desktop e mobile 28 | vdo = solo desktop 29 | vmo = solo mobile 30 | target: 31 | label: Destinazione 32 | description: | 33 | blank = si apre in una nuova scheda 34 | self = si apre nella stessa scheda 35 | hide_on_scroll: 36 | label: Nascondi durante lo scorrimento 37 | description: | 38 | remove = nasconde il link quando il titolo è espanso nelle pagine degli argomenti 39 | keep = mantiene il link visibile anche quando il titolo è visibile nelle pagine degli argomenti 40 | locale: 41 | label: Impostazione locale 42 | description: Le impostazioni locali in cui il link deve essere visualizzato. Il link verrà visualizzato in tutte le impostazioni locali se lasciato vuoto. 43 | -------------------------------------------------------------------------------- /locales/ja.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ja: 8 | theme_metadata: 9 | settings: 10 | links_position: "左側にリンクが表示されている場合は、トピック内をスクロールする際にタイトルのスペースを確保するためにリンクが自動的に非表示になることに注意してください。" 11 | custom_header_links: 12 | description: ヘッダーに表示されるカスタムリンク 13 | schema: 14 | properties: 15 | text: 16 | label: テキスト 17 | description: リンクのテキスト 18 | title: 19 | label: タイトル 20 | description: リンクのタイトル属性 21 | url: 22 | label: URL 23 | description: リンクの URL 24 | view: 25 | label: 表示 26 | description: | 27 | vdm = デスクトップとモバイル 28 | vdo = デスクトップのみ 29 | vmo = モバイルのみ 30 | target: 31 | label: ターゲット 32 | description: | 33 | blank = 新しいタブで開く 34 | self = 同じタブで開く 35 | hide_on_scroll: 36 | label: スクロール時に非表示 37 | description: | 38 | remove = トピックページでタイトルが展開されている場合にリンクを非表示にします 39 | keep = トピックページでタイトルが表示されているときでもリンクを表示したままにします 40 | locale: 41 | label: ロケール 42 | description: リンクが表示されるロケール。空白のままにすると、リンクはすべてのロケールで表示されます。 43 | -------------------------------------------------------------------------------- /locales/ko.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ko: 8 | -------------------------------------------------------------------------------- /locales/lt.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | lt: 8 | -------------------------------------------------------------------------------- /locales/lv.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | lv: 8 | -------------------------------------------------------------------------------- /locales/nb_NO.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | nb_NO: 8 | -------------------------------------------------------------------------------- /locales/nl.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | nl: 8 | theme_metadata: 9 | settings: 10 | links_position: "Houd er rekening mee dat als links worden weergegeven aan de linkerkant, deze automatisch worden verborgen tijdens het scrollen binnen topics om ruimte te maken voor de titel." 11 | custom_header_links: 12 | description: Aangepaste links om weer te geven in de kop 13 | schema: 14 | properties: 15 | text: 16 | label: Tekst 17 | description: De tekst voor de link 18 | title: 19 | label: Titel 20 | description: Het 'title'-attribuut voor de link 21 | url: 22 | label: URL 23 | description: De URL voor de link 24 | view: 25 | label: Weergave 26 | description: | 27 | vdm = desktop en mobiel 28 | vdo = alleen desktop 29 | vmo = alleen mobiel 30 | target: 31 | label: Doel 32 | description: | 33 | blank = opent in een nieuw tabblad 34 | self = opent in hetzelfde tabblad 35 | hide_on_scroll: 36 | label: Verbergen bij scrollen 37 | description: | 38 | remove = verbergt de link wanneer de titel wordt uitgebreid op topicpagina's 39 | keep = houdt de link zichtbaar, ook als de titel zichtbaar is op topicpagina's 40 | locale: 41 | label: Taal 42 | description: De taal waarin de link moet worden weergegeven. De link wordt weergegeven in alle talen als dit leeg wordt gelaten. 43 | -------------------------------------------------------------------------------- /locales/pl_PL.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | pl_PL: 8 | -------------------------------------------------------------------------------- /locales/pt.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | pt: 8 | -------------------------------------------------------------------------------- /locales/pt_BR.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | pt_BR: 8 | theme_metadata: 9 | settings: 10 | links_position: "Observação: quando os links forem exibidos à esquerda, serão ocultados automaticamente quando o(a) usuário(a) rolar a tela no tópico, de modo a liberar espaço para o título" 11 | custom_header_links: 12 | description: Links personalizados a serem exibidos no cabeçalho 13 | schema: 14 | properties: 15 | text: 16 | label: Texto 17 | description: Texto do link 18 | title: 19 | label: Título 20 | description: O atributo do título para o link 21 | url: 22 | label: URL 23 | description: A URL do link 24 | view: 25 | label: Visualização 26 | description: | 27 | vdm = desktop e dispositivo móvel 28 | vdo = apenas desktop 29 | vmo = apenas dispositivo móvel 30 | target: 31 | label: Destino 32 | description: | 33 | blank = abre numa nova aba 34 | self = abre na mesma aba 35 | hide_on_scroll: 36 | label: Ocultar durante rolagem 37 | description: | 38 | remove = oculta o link quando o título for expandido nas páginas do tópico 39 | keep = mantém o link visível mesmo quando o título estiver visível nas páginas do tópico 40 | locale: 41 | label: Local 42 | description: O local onde o link deve ser exibido. Será exibido em todos os locais se esta opção estiver em branco. 43 | -------------------------------------------------------------------------------- /locales/ro.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ro: 8 | -------------------------------------------------------------------------------- /locales/ru.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ru: 8 | theme_metadata: 9 | settings: 10 | links_position: "Обратите внимание: если ссылки показываются слева, они автоматически скрываются при прокрутке тем, чтобы освободить место для заголовка." 11 | custom_header_links: 12 | description: Пользовательские ссылки, которые будут отображаться в заголовке 13 | schema: 14 | properties: 15 | text: 16 | label: Текст 17 | description: Текст ссылки 18 | title: 19 | label: Заголовок 20 | description: Атрибут заголовка для ссылки 21 | url: 22 | label: URL 23 | description: URL-адрес ссылки 24 | view: 25 | label: Просмотр 26 | description: | 27 | vdm = настольные и мобильные устройства 28 | vdo = только настольные устройства 29 | vmo = только мобильные устройства 30 | target: 31 | label: Target 32 | description: | 33 | blank = открывается в новой вкладке 34 | self = открывается в той же вкладке 35 | hide_on_scroll: 36 | label: Скрывать при прокрутке 37 | description: | 38 | remove = скрыть ссылку, когда заголовок раскрывается на страницах тем 39 | keep = сохранить ссылку видимой, даже когда заголовок раскрывается на страницах тем 40 | locale: 41 | label: Локаль 42 | description: Локаль, в которой должна отображаться ссылка. Если оставить этот параметр пустым, ссылка будет отображаться во всех локалях. 43 | -------------------------------------------------------------------------------- /locales/sk.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sk: 8 | -------------------------------------------------------------------------------- /locales/sl.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sl: 8 | -------------------------------------------------------------------------------- /locales/sq.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sq: 8 | -------------------------------------------------------------------------------- /locales/sr.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sr: 8 | -------------------------------------------------------------------------------- /locales/sv.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sv: 8 | -------------------------------------------------------------------------------- /locales/sw.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | sw: 8 | -------------------------------------------------------------------------------- /locales/te.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | te: 8 | -------------------------------------------------------------------------------- /locales/th.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | th: 8 | -------------------------------------------------------------------------------- /locales/tr_TR.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | tr_TR: 8 | theme_metadata: 9 | settings: 10 | links_position: "Bağlantılar solda görüntülendiğinde başlığa yer açmak için konular içinde kaydırılırken otomatik olarak gizlendiklerini unutmayın." 11 | custom_header_links: 12 | description: Başlıkta gösterilecek özel bağlantılar 13 | schema: 14 | properties: 15 | text: 16 | label: Metin 17 | description: Bağlantı metni 18 | title: 19 | label: Başlık 20 | description: Bağlantı için başlık niteliği 21 | url: 22 | label: URL 23 | description: Bağlantının URL'si 24 | view: 25 | label: Görüntüle 26 | description: | 27 | vdm = masaüstü ve mobil 28 | vdo = yalnızca masaüstü 29 | vmo = yalnızca mobil 30 | target: 31 | label: Hedef 32 | description: | 33 | boş = yeni bir sekmede açılır 34 | self = aynı sekmede açılır 35 | hide_on_scroll: 36 | label: Kaydırırken gizle 37 | description: | 38 | kaldır = başlık konu sayfalarında genişletildiğinde bağlantıyı gizler 39 | tut = başlık konu sayfalarında görünür olsa bile bağlantıyı görünür tutar 40 | locale: 41 | label: Yerel Ayarlar 42 | description: Bağlantının gösterileceği yerel ayarlar. Boş bırakılırsa bağlantı tüm yerel ayarlarda gösterilir. 43 | -------------------------------------------------------------------------------- /locales/ug.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ug: 8 | -------------------------------------------------------------------------------- /locales/uk.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | uk: 8 | -------------------------------------------------------------------------------- /locales/ur.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | ur: 8 | -------------------------------------------------------------------------------- /locales/vi.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | vi: 8 | -------------------------------------------------------------------------------- /locales/zh_CN.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | zh_CN: 8 | theme_metadata: 9 | settings: 10 | links_position: "请注意,当链接显示在左侧时,在话题内滚动时它们会自动隐藏,以便为标题留出空间" 11 | custom_header_links: 12 | description: 要显示在标题中的自定义链接 13 | schema: 14 | properties: 15 | text: 16 | label: 文本 17 | description: 链接的文本 18 | title: 19 | label: 标题 20 | description: 链接的标题属性 21 | url: 22 | label: URL 23 | description: 链接的 URL 24 | view: 25 | label: 查看 26 | description: | 27 | vdm = 桌面和移动 28 | vdo = 仅桌面 29 | vmo = 仅移动 30 | target: 31 | label: 目标 32 | description: | 33 | blank = 在新标签页中打开 34 | self = 在同一标签页中打开 35 | hide_on_scroll: 36 | label: 滚动时隐藏 37 | description: | 38 | remove = 当标题在话题页面上展开时隐藏链接 39 | keep = 即使标题在话题页面上可见,也保持链接可见 40 | locale: 41 | label: 区域设置 42 | description: 链接应当显示的区域设置。如果留空,则链接将在所有区域设置显示。 43 | -------------------------------------------------------------------------------- /locales/zh_TW.yml: -------------------------------------------------------------------------------- 1 | # WARNING: Never edit this file. 2 | # It will be overwritten when translations are pulled from Crowdin. 3 | # 4 | # To work with us on translations, join this project: 5 | # https://translate.discourse.org/ 6 | 7 | zh_TW: 8 | -------------------------------------------------------------------------------- /migrations/settings/0001-rename-settings.js: -------------------------------------------------------------------------------- 1 | export default function migrate(settings) { 2 | if (settings.has("Custom_header_links")) { 3 | settings.set("custom_header_links", settings.get("Custom_header_links")); 4 | settings.delete("Custom_header_links"); 5 | } 6 | 7 | return settings; 8 | } 9 | -------------------------------------------------------------------------------- /migrations/settings/0002-migrate-custom-header-links.js: -------------------------------------------------------------------------------- 1 | export default function migrate(settings) { 2 | const oldSetting = settings.get("custom_header_links"); 3 | 4 | // Do nothing if setting is already an array which means user has saved the setting in the new format 5 | // This is required because there was a bug in core where this migration would fail but the theme was still updated 6 | // allowing the users to save the setting in the new format. 7 | if (Array.isArray(oldSetting)) { 8 | return settings; 9 | } 10 | 11 | if (typeof oldSetting === "string") { 12 | const newLinks = []; 13 | 14 | oldSetting.split("|").forEach((link) => { 15 | const [text, title, url, view, target, hideOnScroll, locale] = link 16 | .split(",") 17 | .map((s) => s.trim()); 18 | 19 | if (text && url) { 20 | const newLink = { 21 | text, 22 | url, 23 | }; 24 | 25 | if (title) { 26 | newLink.title = title; 27 | } 28 | 29 | if (["vdm", "vdo", "vmo"].includes(view)) { 30 | newLink.view = view; 31 | } else { 32 | newLink.view = "vdm"; 33 | } 34 | 35 | if (["blank", "self"].includes(target)) { 36 | newLink.target = target; 37 | } else { 38 | newLink.target = "blank"; 39 | } 40 | 41 | if (["remove", "keep"].includes(hideOnScroll)) { 42 | newLink.hide_on_scroll = hideOnScroll; 43 | } else { 44 | newLink.hide_on_scroll = "keep"; 45 | } 46 | 47 | if (locale) { 48 | newLink.locale = locale; 49 | } 50 | 51 | newLinks.push(newLink); 52 | } 53 | }); 54 | 55 | settings.set("custom_header_links", newLinks); 56 | } 57 | 58 | return settings; 59 | } 60 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "devDependencies": { 4 | "@discourse/lint-configs": "2.25.0", 5 | "ember-template-lint": "7.8.1", 6 | "eslint": "9.28.0", 7 | "prettier": "3.5.3", 8 | "stylelint": "16.20.0" 9 | }, 10 | "engines": { 11 | "node": ">= 22", 12 | "npm": "please-use-pnpm", 13 | "yarn": "please-use-pnpm", 14 | "pnpm": "9.x" 15 | }, 16 | "packageManager": "pnpm@9.15.5" 17 | } 18 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: false 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@discourse/lint-configs': 12 | specifier: 2.25.0 13 | version: 2.25.0(ember-template-lint@7.8.1)(eslint@9.28.0)(postcss@8.5.4)(prettier@3.5.3)(stylelint@16.20.0(typescript@5.8.3)) 14 | ember-template-lint: 15 | specifier: 7.8.1 16 | version: 7.8.1 17 | eslint: 18 | specifier: 9.28.0 19 | version: 9.28.0 20 | prettier: 21 | specifier: 3.5.3 22 | version: 3.5.3 23 | stylelint: 24 | specifier: 16.20.0 25 | version: 16.20.0(typescript@5.8.3) 26 | 27 | packages: 28 | 29 | '@ampproject/remapping@2.3.0': 30 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 31 | engines: {node: '>=6.0.0'} 32 | 33 | '@babel/code-frame@7.27.1': 34 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 35 | engines: {node: '>=6.9.0'} 36 | 37 | '@babel/compat-data@7.27.5': 38 | resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} 39 | engines: {node: '>=6.9.0'} 40 | 41 | '@babel/core@7.27.4': 42 | resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} 43 | engines: {node: '>=6.9.0'} 44 | 45 | '@babel/eslint-parser@7.27.5': 46 | resolution: {integrity: sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q==} 47 | engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} 48 | peerDependencies: 49 | '@babel/core': ^7.11.0 50 | eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 51 | 52 | '@babel/generator@7.27.5': 53 | resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} 54 | engines: {node: '>=6.9.0'} 55 | 56 | '@babel/helper-annotate-as-pure@7.27.3': 57 | resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} 58 | engines: {node: '>=6.9.0'} 59 | 60 | '@babel/helper-compilation-targets@7.27.2': 61 | resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 62 | engines: {node: '>=6.9.0'} 63 | 64 | '@babel/helper-create-class-features-plugin@7.27.1': 65 | resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} 66 | engines: {node: '>=6.9.0'} 67 | peerDependencies: 68 | '@babel/core': ^7.0.0 69 | 70 | '@babel/helper-member-expression-to-functions@7.27.1': 71 | resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} 72 | engines: {node: '>=6.9.0'} 73 | 74 | '@babel/helper-module-imports@7.27.1': 75 | resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 76 | engines: {node: '>=6.9.0'} 77 | 78 | '@babel/helper-module-transforms@7.27.3': 79 | resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} 80 | engines: {node: '>=6.9.0'} 81 | peerDependencies: 82 | '@babel/core': ^7.0.0 83 | 84 | '@babel/helper-optimise-call-expression@7.27.1': 85 | resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} 86 | engines: {node: '>=6.9.0'} 87 | 88 | '@babel/helper-plugin-utils@7.27.1': 89 | resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 90 | engines: {node: '>=6.9.0'} 91 | 92 | '@babel/helper-replace-supers@7.27.1': 93 | resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} 94 | engines: {node: '>=6.9.0'} 95 | peerDependencies: 96 | '@babel/core': ^7.0.0 97 | 98 | '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 99 | resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} 100 | engines: {node: '>=6.9.0'} 101 | 102 | '@babel/helper-string-parser@7.27.1': 103 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 104 | engines: {node: '>=6.9.0'} 105 | 106 | '@babel/helper-validator-identifier@7.27.1': 107 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 108 | engines: {node: '>=6.9.0'} 109 | 110 | '@babel/helper-validator-option@7.27.1': 111 | resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 112 | engines: {node: '>=6.9.0'} 113 | 114 | '@babel/helpers@7.27.4': 115 | resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==} 116 | engines: {node: '>=6.9.0'} 117 | 118 | '@babel/parser@7.27.5': 119 | resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} 120 | engines: {node: '>=6.0.0'} 121 | hasBin: true 122 | 123 | '@babel/plugin-proposal-decorators@7.27.1': 124 | resolution: {integrity: sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==} 125 | engines: {node: '>=6.9.0'} 126 | peerDependencies: 127 | '@babel/core': ^7.0.0-0 128 | 129 | '@babel/plugin-syntax-decorators@7.27.1': 130 | resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} 131 | engines: {node: '>=6.9.0'} 132 | peerDependencies: 133 | '@babel/core': ^7.0.0-0 134 | 135 | '@babel/template@7.27.2': 136 | resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 137 | engines: {node: '>=6.9.0'} 138 | 139 | '@babel/traverse@7.27.4': 140 | resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} 141 | engines: {node: '>=6.9.0'} 142 | 143 | '@babel/types@7.27.3': 144 | resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} 145 | engines: {node: '>=6.9.0'} 146 | 147 | '@csstools/css-parser-algorithms@3.0.5': 148 | resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} 149 | engines: {node: '>=18'} 150 | peerDependencies: 151 | '@csstools/css-tokenizer': ^3.0.4 152 | 153 | '@csstools/css-tokenizer@3.0.4': 154 | resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} 155 | engines: {node: '>=18'} 156 | 157 | '@csstools/media-query-list-parser@4.0.3': 158 | resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} 159 | engines: {node: '>=18'} 160 | peerDependencies: 161 | '@csstools/css-parser-algorithms': ^3.0.5 162 | '@csstools/css-tokenizer': ^3.0.4 163 | 164 | '@csstools/selector-specificity@5.0.0': 165 | resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} 166 | engines: {node: '>=18'} 167 | peerDependencies: 168 | postcss-selector-parser: ^7.0.0 169 | 170 | '@discourse/lint-configs@2.25.0': 171 | resolution: {integrity: sha512-59T4kzyWNCUun9JaiakjnV2e5KuX2BmZ2Lk8Toc1krYxbE7d+mVwYNB3OQABCw9SfNX9QwY+YM/Sk+A6uCdt3g==} 172 | peerDependencies: 173 | ember-template-lint: 7.8.1 174 | eslint: 9.28.0 175 | prettier: 3.5.3 176 | stylelint: 16.20.0 177 | 178 | '@dual-bundle/import-meta-resolve@4.1.0': 179 | resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} 180 | 181 | '@ember-data/rfc395-data@0.0.4': 182 | resolution: {integrity: sha512-tGRdvgC9/QMQSuSuJV45xoyhI0Pzjm7A9o/MVVA3HakXIImJbbzx/k/6dO9CUEQXIyS2y0fW6C1XaYOG7rY0FQ==} 183 | 184 | '@eslint-community/eslint-utils@4.7.0': 185 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 186 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 187 | peerDependencies: 188 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 189 | 190 | '@eslint-community/regexpp@4.12.1': 191 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 192 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 193 | 194 | '@eslint/config-array@0.20.0': 195 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 196 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 197 | 198 | '@eslint/config-helpers@0.2.2': 199 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 200 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 201 | 202 | '@eslint/core@0.14.0': 203 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} 204 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 205 | 206 | '@eslint/eslintrc@3.3.1': 207 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 208 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 209 | 210 | '@eslint/js@9.28.0': 211 | resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} 212 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 213 | 214 | '@eslint/object-schema@2.1.6': 215 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 216 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 217 | 218 | '@eslint/plugin-kit@0.3.1': 219 | resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} 220 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 221 | 222 | '@glimmer/env@0.1.7': 223 | resolution: {integrity: sha512-JKF/a9I9jw6fGoz8kA7LEQslrwJ5jms5CXhu/aqkBWk+PmZ6pTl8mlb/eJ/5ujBGTiQzBhy5AIWF712iA+4/mw==} 224 | 225 | '@glimmer/interfaces@0.92.3': 226 | resolution: {integrity: sha512-QwQeA01N+0h+TAi/J7iUnZtRuJy+093hNyagxDQBA6b1wCBw+q+al9+O6gmbWlkWE7EifzmNE1nnrgcecJBlJQ==} 227 | 228 | '@glimmer/syntax@0.92.3': 229 | resolution: {integrity: sha512-7wPKQmULyXCYf0KvbPmfrs/skPISH2QGR9atCnmDWnHyLv5SSZVLm1P0Ctrpta6+Ci3uGQb7hGk0IjsLEavcYQ==} 230 | 231 | '@glimmer/util@0.92.3': 232 | resolution: {integrity: sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==} 233 | 234 | '@glimmer/wire-format@0.92.3': 235 | resolution: {integrity: sha512-gFz81Q9+V7Xs0X8mSq6y8qacHm0dPaGJo2/Bfcsdow1hLOKNgTCLr4XeDBhRML8f6I6Gk9ugH4QDxyIOXOpC4w==} 236 | 237 | '@handlebars/parser@2.0.0': 238 | resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==} 239 | 240 | '@humanfs/core@0.19.1': 241 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 242 | engines: {node: '>=18.18.0'} 243 | 244 | '@humanfs/node@0.16.6': 245 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 246 | engines: {node: '>=18.18.0'} 247 | 248 | '@humanwhocodes/module-importer@1.0.1': 249 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 250 | engines: {node: '>=12.22'} 251 | 252 | '@humanwhocodes/retry@0.3.1': 253 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 254 | engines: {node: '>=18.18'} 255 | 256 | '@humanwhocodes/retry@0.4.3': 257 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 258 | engines: {node: '>=18.18'} 259 | 260 | '@jridgewell/gen-mapping@0.3.8': 261 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 262 | engines: {node: '>=6.0.0'} 263 | 264 | '@jridgewell/resolve-uri@3.1.2': 265 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 266 | engines: {node: '>=6.0.0'} 267 | 268 | '@jridgewell/set-array@1.2.1': 269 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 270 | engines: {node: '>=6.0.0'} 271 | 272 | '@jridgewell/sourcemap-codec@1.5.0': 273 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 274 | 275 | '@jridgewell/trace-mapping@0.3.25': 276 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 277 | 278 | '@keyv/serialize@1.0.3': 279 | resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} 280 | 281 | '@lint-todo/utils@13.1.1': 282 | resolution: {integrity: sha512-F5z53uvRIF4dYfFfJP3a2Cqg+4P1dgJchJsFnsZE0eZp0LK8X7g2J0CsJHRgns+skpXOlM7n5vFGwkWCWj8qJg==} 283 | engines: {node: 12.* || >= 14} 284 | 285 | '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': 286 | resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} 287 | 288 | '@nodelib/fs.scandir@2.1.5': 289 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 290 | engines: {node: '>= 8'} 291 | 292 | '@nodelib/fs.stat@2.0.5': 293 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 294 | engines: {node: '>= 8'} 295 | 296 | '@nodelib/fs.walk@1.2.8': 297 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 298 | engines: {node: '>= 8'} 299 | 300 | '@rtsao/scc@1.1.0': 301 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 302 | 303 | '@simple-dom/interface@1.4.0': 304 | resolution: {integrity: sha512-l5qumKFWU0S+4ZzMaLXFU8tQZsicHEMEyAxI5kDFGhJsRqDwe0a7/iPA/GdxlGyDKseQQAgIz5kzU7eXTrlSpA==} 305 | 306 | '@types/eslint@8.56.12': 307 | resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} 308 | 309 | '@types/estree@1.0.7': 310 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 311 | 312 | '@types/json-schema@7.0.15': 313 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 314 | 315 | '@types/json5@0.0.29': 316 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 317 | 318 | acorn-jsx@5.3.2: 319 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 320 | peerDependencies: 321 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 322 | 323 | acorn@8.14.1: 324 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 325 | engines: {node: '>=0.4.0'} 326 | hasBin: true 327 | 328 | ajv@6.12.6: 329 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 330 | 331 | ajv@8.17.1: 332 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 333 | 334 | ansi-regex@5.0.1: 335 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 336 | engines: {node: '>=8'} 337 | 338 | ansi-styles@4.3.0: 339 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 340 | engines: {node: '>=8'} 341 | 342 | argparse@2.0.1: 343 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 344 | 345 | array-buffer-byte-length@1.0.2: 346 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 347 | engines: {node: '>= 0.4'} 348 | 349 | array-includes@3.1.9: 350 | resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} 351 | engines: {node: '>= 0.4'} 352 | 353 | array-union@2.1.0: 354 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 355 | engines: {node: '>=8'} 356 | 357 | array.prototype.findlastindex@1.2.6: 358 | resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} 359 | engines: {node: '>= 0.4'} 360 | 361 | array.prototype.flat@1.3.3: 362 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 363 | engines: {node: '>= 0.4'} 364 | 365 | array.prototype.flatmap@1.3.3: 366 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} 367 | engines: {node: '>= 0.4'} 368 | 369 | arraybuffer.prototype.slice@1.0.4: 370 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 371 | engines: {node: '>= 0.4'} 372 | 373 | astral-regex@2.0.0: 374 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 375 | engines: {node: '>=8'} 376 | 377 | async-function@1.0.0: 378 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 379 | engines: {node: '>= 0.4'} 380 | 381 | at-least-node@1.0.0: 382 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} 383 | engines: {node: '>= 4.0.0'} 384 | 385 | available-typed-arrays@1.0.7: 386 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 387 | engines: {node: '>= 0.4'} 388 | 389 | balanced-match@1.0.2: 390 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 391 | 392 | balanced-match@2.0.0: 393 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} 394 | 395 | base64-js@1.5.1: 396 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 397 | 398 | brace-expansion@1.1.11: 399 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 400 | 401 | braces@3.0.3: 402 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 403 | engines: {node: '>=8'} 404 | 405 | browserslist@4.25.0: 406 | resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} 407 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 408 | hasBin: true 409 | 410 | buffer@6.0.3: 411 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 412 | 413 | cacheable@1.9.0: 414 | resolution: {integrity: sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==} 415 | 416 | call-bind-apply-helpers@1.0.2: 417 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 418 | engines: {node: '>= 0.4'} 419 | 420 | call-bind@1.0.8: 421 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 422 | engines: {node: '>= 0.4'} 423 | 424 | call-bound@1.0.4: 425 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 426 | engines: {node: '>= 0.4'} 427 | 428 | callsites@3.1.0: 429 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 430 | engines: {node: '>=6'} 431 | 432 | caniuse-lite@1.0.30001721: 433 | resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} 434 | 435 | chalk@4.1.2: 436 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 437 | engines: {node: '>=10'} 438 | 439 | color-convert@2.0.1: 440 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 441 | engines: {node: '>=7.0.0'} 442 | 443 | color-name@1.1.4: 444 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 445 | 446 | colord@2.9.3: 447 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 448 | 449 | concat-map@0.0.1: 450 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 451 | 452 | content-tag@2.0.3: 453 | resolution: {integrity: sha512-htLIdtfhhKW2fHlFLnZH7GFzHSdSpHhDLrWVswkNiiPMZ5uXq5JfrGboQKFhNQuAAFF8VNB2EYUj3MsdJrKKpg==} 454 | 455 | content-tag@3.1.3: 456 | resolution: {integrity: sha512-4Kiv9mEroxuMXfWUNUHcljVJgxThCNk7eEswdHMXdzJnkBBaYDqDwzHkoh3F74JJhfU3taJOsgpR6oEGIDg17g==} 457 | 458 | convert-source-map@2.0.0: 459 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 460 | 461 | cosmiconfig@9.0.0: 462 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} 463 | engines: {node: '>=14'} 464 | peerDependencies: 465 | typescript: '>=4.9.5' 466 | peerDependenciesMeta: 467 | typescript: 468 | optional: true 469 | 470 | cross-spawn@7.0.6: 471 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 472 | engines: {node: '>= 8'} 473 | 474 | css-functions-list@3.2.3: 475 | resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} 476 | engines: {node: '>=12 || >=16'} 477 | 478 | css-tree@3.1.0: 479 | resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 480 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 481 | 482 | cssesc@3.0.0: 483 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 484 | engines: {node: '>=4'} 485 | hasBin: true 486 | 487 | data-view-buffer@1.0.2: 488 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 489 | engines: {node: '>= 0.4'} 490 | 491 | data-view-byte-length@1.0.2: 492 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 493 | engines: {node: '>= 0.4'} 494 | 495 | data-view-byte-offset@1.0.1: 496 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 497 | engines: {node: '>= 0.4'} 498 | 499 | debug@3.2.7: 500 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 501 | peerDependencies: 502 | supports-color: '*' 503 | peerDependenciesMeta: 504 | supports-color: 505 | optional: true 506 | 507 | debug@4.4.1: 508 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 509 | engines: {node: '>=6.0'} 510 | peerDependencies: 511 | supports-color: '*' 512 | peerDependenciesMeta: 513 | supports-color: 514 | optional: true 515 | 516 | deep-is@0.1.4: 517 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 518 | 519 | define-data-property@1.1.4: 520 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 521 | engines: {node: '>= 0.4'} 522 | 523 | define-properties@1.2.1: 524 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 525 | engines: {node: '>= 0.4'} 526 | 527 | dir-glob@3.0.1: 528 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 529 | engines: {node: '>=8'} 530 | 531 | doctrine@2.1.0: 532 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 533 | engines: {node: '>=0.10.0'} 534 | 535 | dot-case@3.0.4: 536 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} 537 | 538 | dunder-proto@1.0.1: 539 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 540 | engines: {node: '>= 0.4'} 541 | 542 | electron-to-chromium@1.5.164: 543 | resolution: {integrity: sha512-TXBrF2aZenRjY3wbj5Yc0mZn43lMiSHNkzwPkIxx+vWUB35Kf8Gm/uOYmOJFNQ7SUwWAinbfxX73ANIud65wSA==} 544 | 545 | ember-eslint-parser@0.5.9: 546 | resolution: {integrity: sha512-IW4/3cEiFp49M2LiKyzi7VcT1egogOe8UxQ9eUKTooenC7Q4qNhzTD6rOZ8j51m8iJC+8hCzjbNCa3K4CN0Hhg==} 547 | engines: {node: '>=16.0.0'} 548 | peerDependencies: 549 | '@babel/core': ^7.23.6 550 | '@typescript-eslint/parser': '*' 551 | peerDependenciesMeta: 552 | '@typescript-eslint/parser': 553 | optional: true 554 | 555 | ember-rfc176-data@0.3.18: 556 | resolution: {integrity: sha512-JtuLoYGSjay1W3MQAxt3eINWXNYYQliK90tLwtb8aeCuQK8zKGCRbBodVIrkcTqshULMnRuTOS6t1P7oQk3g6Q==} 557 | 558 | ember-template-lint@7.8.1: 559 | resolution: {integrity: sha512-SFVTR6YdxvldbBL3ArphAbDhYOXyD8Tt9rTKEWKYpQTilq7Hl9mTrKP59q3GOcnDaR/rNk0cg4rJHYAg6/SCGw==} 560 | engines: {node: ^18.18.0 || >= 20.9.0} 561 | hasBin: true 562 | 563 | emoji-regex@8.0.0: 564 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 565 | 566 | env-paths@2.2.1: 567 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 568 | engines: {node: '>=6'} 569 | 570 | error-ex@1.3.2: 571 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 572 | 573 | es-abstract@1.24.0: 574 | resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} 575 | engines: {node: '>= 0.4'} 576 | 577 | es-define-property@1.0.1: 578 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 579 | engines: {node: '>= 0.4'} 580 | 581 | es-errors@1.3.0: 582 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 583 | engines: {node: '>= 0.4'} 584 | 585 | es-object-atoms@1.1.1: 586 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 587 | engines: {node: '>= 0.4'} 588 | 589 | es-set-tostringtag@2.1.0: 590 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 591 | engines: {node: '>= 0.4'} 592 | 593 | es-shim-unscopables@1.1.0: 594 | resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} 595 | engines: {node: '>= 0.4'} 596 | 597 | es-to-primitive@1.3.0: 598 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 599 | engines: {node: '>= 0.4'} 600 | 601 | escalade@3.2.0: 602 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 603 | engines: {node: '>=6'} 604 | 605 | escape-string-regexp@4.0.0: 606 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 607 | engines: {node: '>=10'} 608 | 609 | eslint-import-resolver-node@0.3.9: 610 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 611 | 612 | eslint-module-utils@2.12.0: 613 | resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} 614 | engines: {node: '>=4'} 615 | peerDependencies: 616 | '@typescript-eslint/parser': '*' 617 | eslint: '*' 618 | eslint-import-resolver-node: '*' 619 | eslint-import-resolver-typescript: '*' 620 | eslint-import-resolver-webpack: '*' 621 | peerDependenciesMeta: 622 | '@typescript-eslint/parser': 623 | optional: true 624 | eslint: 625 | optional: true 626 | eslint-import-resolver-node: 627 | optional: true 628 | eslint-import-resolver-typescript: 629 | optional: true 630 | eslint-import-resolver-webpack: 631 | optional: true 632 | 633 | eslint-plugin-decorator-position@6.0.0: 634 | resolution: {integrity: sha512-AUbZbt3JXnmP7Typfba4BIEFkSCc2rA6BkutsYiywIcEoX/yRL7jzqAp4UMpSDNhCMUUAfGt48k3141PhKC07w==} 635 | engines: {node: '>=14'} 636 | peerDependencies: 637 | '@babel/eslint-parser': ^7.18.2 638 | eslint: ^7.31.0 || ^8.0.0 || ^9.0.0 639 | peerDependenciesMeta: 640 | '@babel/eslint-parser': 641 | optional: true 642 | 643 | eslint-plugin-ember@12.5.0: 644 | resolution: {integrity: sha512-DBUzsaKWDVXsujAZPpRir0O7owdlCoVzZmtaJm7g7iQeSrNtcRWI7AItsTqKSsws1XeAySH0sPsQItMdDCb9Fg==} 645 | engines: {node: 18.* || 20.* || >= 21} 646 | peerDependencies: 647 | '@typescript-eslint/parser': '*' 648 | eslint: '>= 8' 649 | peerDependenciesMeta: 650 | '@typescript-eslint/parser': 651 | optional: true 652 | 653 | eslint-plugin-import@2.31.0: 654 | resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} 655 | engines: {node: '>=4'} 656 | peerDependencies: 657 | '@typescript-eslint/parser': '*' 658 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 659 | peerDependenciesMeta: 660 | '@typescript-eslint/parser': 661 | optional: true 662 | 663 | eslint-plugin-qunit@8.1.2: 664 | resolution: {integrity: sha512-2gDQdHlQW8GVXD7YYkO8vbm9Ldc60JeGMuQN5QlD48OeZ8znBvvoHWZZMeXjvoDPReGaLEvyuWrDtrI8bDbcqw==} 665 | engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} 666 | 667 | eslint-plugin-simple-import-sort@12.1.1: 668 | resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} 669 | peerDependencies: 670 | eslint: '>=5.0.0' 671 | 672 | eslint-plugin-sort-class-members@1.21.0: 673 | resolution: {integrity: sha512-QKV4jvGMu/ge1l4s1TUBC6rqqV/fbABWY7q2EeNpV3FRikoX6KuLhiNvS8UuMi+EERe0hKGrNU9e6ukFDxNnZQ==} 674 | engines: {node: '>=4.0.0'} 675 | peerDependencies: 676 | eslint: '>=0.8.0' 677 | 678 | eslint-scope@5.1.1: 679 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 680 | engines: {node: '>=8.0.0'} 681 | 682 | eslint-scope@7.2.2: 683 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 684 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 685 | 686 | eslint-scope@8.3.0: 687 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 688 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 689 | 690 | eslint-utils@3.0.0: 691 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 692 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 693 | peerDependencies: 694 | eslint: '>=5' 695 | 696 | eslint-visitor-keys@2.1.0: 697 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 698 | engines: {node: '>=10'} 699 | 700 | eslint-visitor-keys@3.4.3: 701 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 702 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 703 | 704 | eslint-visitor-keys@4.2.0: 705 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 706 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 707 | 708 | eslint@9.28.0: 709 | resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} 710 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 711 | hasBin: true 712 | peerDependencies: 713 | jiti: '*' 714 | peerDependenciesMeta: 715 | jiti: 716 | optional: true 717 | 718 | espree@10.3.0: 719 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 720 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 721 | 722 | esquery@1.6.0: 723 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 724 | engines: {node: '>=0.10'} 725 | 726 | esrecurse@4.3.0: 727 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 728 | engines: {node: '>=4.0'} 729 | 730 | estraverse@4.3.0: 731 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 732 | engines: {node: '>=4.0'} 733 | 734 | estraverse@5.3.0: 735 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 736 | engines: {node: '>=4.0'} 737 | 738 | esutils@2.0.3: 739 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 740 | engines: {node: '>=0.10.0'} 741 | 742 | fast-deep-equal@3.1.3: 743 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 744 | 745 | fast-glob@3.3.3: 746 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 747 | engines: {node: '>=8.6.0'} 748 | 749 | fast-json-stable-stringify@2.1.0: 750 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 751 | 752 | fast-levenshtein@2.0.6: 753 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 754 | 755 | fast-uri@3.0.6: 756 | resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} 757 | 758 | fastest-levenshtein@1.0.16: 759 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 760 | engines: {node: '>= 4.9.1'} 761 | 762 | fastq@1.19.1: 763 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 764 | 765 | file-entry-cache@10.1.0: 766 | resolution: {integrity: sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==} 767 | 768 | file-entry-cache@8.0.0: 769 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 770 | engines: {node: '>=16.0.0'} 771 | 772 | fill-range@7.1.1: 773 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 774 | engines: {node: '>=8'} 775 | 776 | find-up@5.0.0: 777 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 778 | engines: {node: '>=10'} 779 | 780 | flat-cache@4.0.1: 781 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 782 | engines: {node: '>=16'} 783 | 784 | flat-cache@6.1.9: 785 | resolution: {integrity: sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==} 786 | 787 | flatted@3.3.3: 788 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 789 | 790 | for-each@0.3.5: 791 | resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 792 | engines: {node: '>= 0.4'} 793 | 794 | fs-extra@9.1.0: 795 | resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} 796 | engines: {node: '>=10'} 797 | 798 | function-bind@1.1.2: 799 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 800 | 801 | function.prototype.name@1.1.8: 802 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 803 | engines: {node: '>= 0.4'} 804 | 805 | functions-have-names@1.2.3: 806 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 807 | 808 | gensync@1.0.0-beta.2: 809 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 810 | engines: {node: '>=6.9.0'} 811 | 812 | get-intrinsic@1.3.0: 813 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 814 | engines: {node: '>= 0.4'} 815 | 816 | get-proto@1.0.1: 817 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 818 | engines: {node: '>= 0.4'} 819 | 820 | get-symbol-description@1.1.0: 821 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 822 | engines: {node: '>= 0.4'} 823 | 824 | glob-parent@5.1.2: 825 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 826 | engines: {node: '>= 6'} 827 | 828 | glob-parent@6.0.2: 829 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 830 | engines: {node: '>=10.13.0'} 831 | 832 | global-modules@2.0.0: 833 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} 834 | engines: {node: '>=6'} 835 | 836 | global-prefix@3.0.0: 837 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} 838 | engines: {node: '>=6'} 839 | 840 | globals@11.12.0: 841 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 842 | engines: {node: '>=4'} 843 | 844 | globals@14.0.0: 845 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 846 | engines: {node: '>=18'} 847 | 848 | globals@16.2.0: 849 | resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} 850 | engines: {node: '>=18'} 851 | 852 | globalthis@1.0.4: 853 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 854 | engines: {node: '>= 0.4'} 855 | 856 | globby@11.1.0: 857 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 858 | engines: {node: '>=10'} 859 | 860 | globjoin@0.1.4: 861 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} 862 | 863 | gopd@1.2.0: 864 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 865 | engines: {node: '>= 0.4'} 866 | 867 | graceful-fs@4.2.11: 868 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 869 | 870 | has-bigints@1.1.0: 871 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 872 | engines: {node: '>= 0.4'} 873 | 874 | has-flag@4.0.0: 875 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 876 | engines: {node: '>=8'} 877 | 878 | has-property-descriptors@1.0.2: 879 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 880 | 881 | has-proto@1.2.0: 882 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 883 | engines: {node: '>= 0.4'} 884 | 885 | has-symbols@1.1.0: 886 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 887 | engines: {node: '>= 0.4'} 888 | 889 | has-tostringtag@1.0.2: 890 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 891 | engines: {node: '>= 0.4'} 892 | 893 | hasown@2.0.2: 894 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 895 | engines: {node: '>= 0.4'} 896 | 897 | hookified@1.9.1: 898 | resolution: {integrity: sha512-u3pxtGhKjcSXnGm1CX6aXS9xew535j3lkOCegbA6jdyh0BaAjTbXI4aslKstCr6zUNtoCxFGFKwjbSHdGrMB8g==} 899 | 900 | html-tags@3.3.1: 901 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} 902 | engines: {node: '>=8'} 903 | 904 | ieee754@1.2.1: 905 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 906 | 907 | ignore@5.3.2: 908 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 909 | engines: {node: '>= 4'} 910 | 911 | ignore@7.0.5: 912 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 913 | engines: {node: '>= 4'} 914 | 915 | import-fresh@3.3.1: 916 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 917 | engines: {node: '>=6'} 918 | 919 | imurmurhash@0.1.4: 920 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 921 | engines: {node: '>=0.8.19'} 922 | 923 | ini@1.3.8: 924 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 925 | 926 | internal-slot@1.1.0: 927 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 928 | engines: {node: '>= 0.4'} 929 | 930 | is-array-buffer@3.0.5: 931 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 932 | engines: {node: '>= 0.4'} 933 | 934 | is-arrayish@0.2.1: 935 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 936 | 937 | is-async-function@2.1.1: 938 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 939 | engines: {node: '>= 0.4'} 940 | 941 | is-bigint@1.1.0: 942 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 943 | engines: {node: '>= 0.4'} 944 | 945 | is-boolean-object@1.2.2: 946 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} 947 | engines: {node: '>= 0.4'} 948 | 949 | is-callable@1.2.7: 950 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 951 | engines: {node: '>= 0.4'} 952 | 953 | is-core-module@2.16.1: 954 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 955 | engines: {node: '>= 0.4'} 956 | 957 | is-data-view@1.0.2: 958 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 959 | engines: {node: '>= 0.4'} 960 | 961 | is-date-object@1.1.0: 962 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 963 | engines: {node: '>= 0.4'} 964 | 965 | is-extglob@2.1.1: 966 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 967 | engines: {node: '>=0.10.0'} 968 | 969 | is-finalizationregistry@1.1.1: 970 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 971 | engines: {node: '>= 0.4'} 972 | 973 | is-fullwidth-code-point@3.0.0: 974 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 975 | engines: {node: '>=8'} 976 | 977 | is-generator-function@1.1.0: 978 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} 979 | engines: {node: '>= 0.4'} 980 | 981 | is-glob@4.0.3: 982 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 983 | engines: {node: '>=0.10.0'} 984 | 985 | is-map@2.0.3: 986 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 987 | engines: {node: '>= 0.4'} 988 | 989 | is-negative-zero@2.0.3: 990 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 991 | engines: {node: '>= 0.4'} 992 | 993 | is-number-object@1.1.1: 994 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 995 | engines: {node: '>= 0.4'} 996 | 997 | is-number@7.0.0: 998 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 999 | engines: {node: '>=0.12.0'} 1000 | 1001 | is-plain-object@5.0.0: 1002 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 1003 | engines: {node: '>=0.10.0'} 1004 | 1005 | is-regex@1.2.1: 1006 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 1007 | engines: {node: '>= 0.4'} 1008 | 1009 | is-set@2.0.3: 1010 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 1011 | engines: {node: '>= 0.4'} 1012 | 1013 | is-shared-array-buffer@1.0.4: 1014 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 1015 | engines: {node: '>= 0.4'} 1016 | 1017 | is-string@1.1.1: 1018 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 1019 | engines: {node: '>= 0.4'} 1020 | 1021 | is-symbol@1.1.1: 1022 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 1023 | engines: {node: '>= 0.4'} 1024 | 1025 | is-typed-array@1.1.15: 1026 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 1027 | engines: {node: '>= 0.4'} 1028 | 1029 | is-weakmap@2.0.2: 1030 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 1031 | engines: {node: '>= 0.4'} 1032 | 1033 | is-weakref@1.1.1: 1034 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} 1035 | engines: {node: '>= 0.4'} 1036 | 1037 | is-weakset@2.0.4: 1038 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 1039 | engines: {node: '>= 0.4'} 1040 | 1041 | isarray@2.0.5: 1042 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1043 | 1044 | isexe@2.0.0: 1045 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1046 | 1047 | js-tokens@4.0.0: 1048 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1049 | 1050 | js-yaml@4.1.0: 1051 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1052 | hasBin: true 1053 | 1054 | jsesc@3.1.0: 1055 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1056 | engines: {node: '>=6'} 1057 | hasBin: true 1058 | 1059 | json-buffer@3.0.1: 1060 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1061 | 1062 | json-parse-even-better-errors@2.3.1: 1063 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1064 | 1065 | json-schema-traverse@0.4.1: 1066 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1067 | 1068 | json-schema-traverse@1.0.0: 1069 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1070 | 1071 | json-stable-stringify-without-jsonify@1.0.1: 1072 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1073 | 1074 | json5@1.0.2: 1075 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1076 | hasBin: true 1077 | 1078 | json5@2.2.3: 1079 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1080 | engines: {node: '>=6'} 1081 | hasBin: true 1082 | 1083 | jsonfile@6.1.0: 1084 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1085 | 1086 | keyv@4.5.4: 1087 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1088 | 1089 | keyv@5.3.3: 1090 | resolution: {integrity: sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==} 1091 | 1092 | kind-of@6.0.3: 1093 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1094 | engines: {node: '>=0.10.0'} 1095 | 1096 | known-css-properties@0.36.0: 1097 | resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} 1098 | 1099 | levn@0.4.1: 1100 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1101 | engines: {node: '>= 0.8.0'} 1102 | 1103 | lines-and-columns@1.2.4: 1104 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1105 | 1106 | locate-path@6.0.0: 1107 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1108 | engines: {node: '>=10'} 1109 | 1110 | lodash.camelcase@4.3.0: 1111 | resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 1112 | 1113 | lodash.kebabcase@4.1.1: 1114 | resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} 1115 | 1116 | lodash.merge@4.6.2: 1117 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1118 | 1119 | lodash.truncate@4.4.2: 1120 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} 1121 | 1122 | lower-case@2.0.2: 1123 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1124 | 1125 | lru-cache@5.1.1: 1126 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1127 | 1128 | math-intrinsics@1.1.0: 1129 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1130 | engines: {node: '>= 0.4'} 1131 | 1132 | mathml-tag-names@2.1.3: 1133 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} 1134 | 1135 | mdn-data@2.12.2: 1136 | resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 1137 | 1138 | mdn-data@2.21.0: 1139 | resolution: {integrity: sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ==} 1140 | 1141 | meow@13.2.0: 1142 | resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} 1143 | engines: {node: '>=18'} 1144 | 1145 | merge2@1.4.1: 1146 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1147 | engines: {node: '>= 8'} 1148 | 1149 | micromatch@4.0.8: 1150 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1151 | engines: {node: '>=8.6'} 1152 | 1153 | minimatch@3.1.2: 1154 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1155 | 1156 | minimist@1.2.8: 1157 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1158 | 1159 | ms@2.1.3: 1160 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1161 | 1162 | nanoid@3.3.11: 1163 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1164 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1165 | hasBin: true 1166 | 1167 | natural-compare@1.4.0: 1168 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1169 | 1170 | no-case@3.0.4: 1171 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1172 | 1173 | node-releases@2.0.19: 1174 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1175 | 1176 | normalize-path@3.0.0: 1177 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1178 | engines: {node: '>=0.10.0'} 1179 | 1180 | object-inspect@1.13.4: 1181 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1182 | engines: {node: '>= 0.4'} 1183 | 1184 | object-keys@1.1.1: 1185 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1186 | engines: {node: '>= 0.4'} 1187 | 1188 | object.assign@4.1.7: 1189 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 1190 | engines: {node: '>= 0.4'} 1191 | 1192 | object.fromentries@2.0.8: 1193 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 1194 | engines: {node: '>= 0.4'} 1195 | 1196 | object.groupby@1.0.3: 1197 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 1198 | engines: {node: '>= 0.4'} 1199 | 1200 | object.values@1.2.1: 1201 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} 1202 | engines: {node: '>= 0.4'} 1203 | 1204 | optionator@0.9.4: 1205 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1206 | engines: {node: '>= 0.8.0'} 1207 | 1208 | own-keys@1.0.1: 1209 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 1210 | engines: {node: '>= 0.4'} 1211 | 1212 | p-limit@3.1.0: 1213 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1214 | engines: {node: '>=10'} 1215 | 1216 | p-locate@5.0.0: 1217 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1218 | engines: {node: '>=10'} 1219 | 1220 | parent-module@1.0.1: 1221 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1222 | engines: {node: '>=6'} 1223 | 1224 | parse-json@5.2.0: 1225 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1226 | engines: {node: '>=8'} 1227 | 1228 | path-exists@4.0.0: 1229 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1230 | engines: {node: '>=8'} 1231 | 1232 | path-key@3.1.1: 1233 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1234 | engines: {node: '>=8'} 1235 | 1236 | path-parse@1.0.7: 1237 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1238 | 1239 | path-type@4.0.0: 1240 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1241 | engines: {node: '>=8'} 1242 | 1243 | picocolors@1.1.1: 1244 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1245 | 1246 | picomatch@2.3.1: 1247 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1248 | engines: {node: '>=8.6'} 1249 | 1250 | possible-typed-array-names@1.1.0: 1251 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} 1252 | engines: {node: '>= 0.4'} 1253 | 1254 | postcss-media-query-parser@0.2.3: 1255 | resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} 1256 | 1257 | postcss-resolve-nested-selector@0.1.6: 1258 | resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} 1259 | 1260 | postcss-safe-parser@7.0.1: 1261 | resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} 1262 | engines: {node: '>=18.0'} 1263 | peerDependencies: 1264 | postcss: ^8.4.31 1265 | 1266 | postcss-scss@4.0.9: 1267 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1268 | engines: {node: '>=12.0'} 1269 | peerDependencies: 1270 | postcss: ^8.4.29 1271 | 1272 | postcss-selector-parser@7.1.0: 1273 | resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 1274 | engines: {node: '>=4'} 1275 | 1276 | postcss-value-parser@4.2.0: 1277 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1278 | 1279 | postcss@8.5.4: 1280 | resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} 1281 | engines: {node: ^10 || ^12 || >=14} 1282 | 1283 | prelude-ls@1.2.1: 1284 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1285 | engines: {node: '>= 0.8.0'} 1286 | 1287 | prettier-plugin-ember-template-tag@2.0.5: 1288 | resolution: {integrity: sha512-G9lbK3wmryIBSzqBKKoy254v7hIjqzqYpqWxi9NvOxcxNtwLyrC1u9NLJJFm+x9blzqHQOzKGOseVnbLtEwEbg==} 1289 | engines: {node: 18.* || >= 20} 1290 | peerDependencies: 1291 | prettier: '>= 3.0.0' 1292 | 1293 | prettier@3.5.3: 1294 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 1295 | engines: {node: '>=14'} 1296 | hasBin: true 1297 | 1298 | proper-lockfile@4.1.2: 1299 | resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} 1300 | 1301 | punycode@2.3.1: 1302 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1303 | engines: {node: '>=6'} 1304 | 1305 | queue-microtask@1.2.3: 1306 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1307 | 1308 | reflect.getprototypeof@1.0.10: 1309 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 1310 | engines: {node: '>= 0.4'} 1311 | 1312 | regexp.prototype.flags@1.5.4: 1313 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 1314 | engines: {node: '>= 0.4'} 1315 | 1316 | require-from-string@2.0.2: 1317 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1318 | engines: {node: '>=0.10.0'} 1319 | 1320 | requireindex@1.2.0: 1321 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 1322 | engines: {node: '>=0.10.5'} 1323 | 1324 | resolve-from@4.0.0: 1325 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1326 | engines: {node: '>=4'} 1327 | 1328 | resolve-from@5.0.0: 1329 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1330 | engines: {node: '>=8'} 1331 | 1332 | resolve@1.22.10: 1333 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1334 | engines: {node: '>= 0.4'} 1335 | hasBin: true 1336 | 1337 | retry@0.12.0: 1338 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 1339 | engines: {node: '>= 4'} 1340 | 1341 | reusify@1.1.0: 1342 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1343 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1344 | 1345 | run-parallel@1.2.0: 1346 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1347 | 1348 | safe-array-concat@1.1.3: 1349 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1350 | engines: {node: '>=0.4'} 1351 | 1352 | safe-push-apply@1.0.0: 1353 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 1354 | engines: {node: '>= 0.4'} 1355 | 1356 | safe-regex-test@1.1.0: 1357 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1358 | engines: {node: '>= 0.4'} 1359 | 1360 | semver@6.3.1: 1361 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1362 | hasBin: true 1363 | 1364 | set-function-length@1.2.2: 1365 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1366 | engines: {node: '>= 0.4'} 1367 | 1368 | set-function-name@2.0.2: 1369 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1370 | engines: {node: '>= 0.4'} 1371 | 1372 | set-proto@1.0.0: 1373 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 1374 | engines: {node: '>= 0.4'} 1375 | 1376 | shebang-command@2.0.0: 1377 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1378 | engines: {node: '>=8'} 1379 | 1380 | shebang-regex@3.0.0: 1381 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1382 | engines: {node: '>=8'} 1383 | 1384 | side-channel-list@1.0.0: 1385 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1386 | engines: {node: '>= 0.4'} 1387 | 1388 | side-channel-map@1.0.1: 1389 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1390 | engines: {node: '>= 0.4'} 1391 | 1392 | side-channel-weakmap@1.0.2: 1393 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1394 | engines: {node: '>= 0.4'} 1395 | 1396 | side-channel@1.1.0: 1397 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1398 | engines: {node: '>= 0.4'} 1399 | 1400 | signal-exit@3.0.7: 1401 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1402 | 1403 | signal-exit@4.1.0: 1404 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1405 | engines: {node: '>=14'} 1406 | 1407 | simple-html-tokenizer@0.5.11: 1408 | resolution: {integrity: sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==} 1409 | 1410 | slash@3.0.0: 1411 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1412 | engines: {node: '>=8'} 1413 | 1414 | slice-ansi@4.0.0: 1415 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 1416 | engines: {node: '>=10'} 1417 | 1418 | snake-case@3.0.4: 1419 | resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} 1420 | 1421 | source-map-js@1.2.1: 1422 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1423 | engines: {node: '>=0.10.0'} 1424 | 1425 | stop-iteration-iterator@1.1.0: 1426 | resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} 1427 | engines: {node: '>= 0.4'} 1428 | 1429 | string-width@4.2.3: 1430 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1431 | engines: {node: '>=8'} 1432 | 1433 | string.prototype.trim@1.2.10: 1434 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1435 | engines: {node: '>= 0.4'} 1436 | 1437 | string.prototype.trimend@1.0.9: 1438 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1439 | engines: {node: '>= 0.4'} 1440 | 1441 | string.prototype.trimstart@1.0.8: 1442 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1443 | engines: {node: '>= 0.4'} 1444 | 1445 | strip-ansi@6.0.1: 1446 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1447 | engines: {node: '>=8'} 1448 | 1449 | strip-bom@3.0.0: 1450 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1451 | engines: {node: '>=4'} 1452 | 1453 | strip-json-comments@3.1.1: 1454 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1455 | engines: {node: '>=8'} 1456 | 1457 | stylelint-config-recommended-scss@15.0.1: 1458 | resolution: {integrity: sha512-V24bxkNkFGggqPVJlP9iXaBabwSGEG7QTz+PyxrRtjPkcF+/NsWtB3tKYvFYEmczRkWiIEfuFMhGpJFj9Fxe6Q==} 1459 | engines: {node: '>=20'} 1460 | peerDependencies: 1461 | postcss: ^8.3.3 1462 | stylelint: ^16.16.0 1463 | peerDependenciesMeta: 1464 | postcss: 1465 | optional: true 1466 | 1467 | stylelint-config-recommended@16.0.0: 1468 | resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} 1469 | engines: {node: '>=18.12.0'} 1470 | peerDependencies: 1471 | stylelint: ^16.16.0 1472 | 1473 | stylelint-config-standard-scss@15.0.1: 1474 | resolution: {integrity: sha512-8pmmfutrMlPHukLp+Th9asmk21tBXMVGxskZCzkRVWt1d8Z0SrXjUUQ3vn9KcBj1bJRd5msk6yfEFM0UYHBRdg==} 1475 | engines: {node: '>=20'} 1476 | peerDependencies: 1477 | postcss: ^8.3.3 1478 | stylelint: ^16.18.0 1479 | peerDependenciesMeta: 1480 | postcss: 1481 | optional: true 1482 | 1483 | stylelint-config-standard@38.0.0: 1484 | resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} 1485 | engines: {node: '>=18.12.0'} 1486 | peerDependencies: 1487 | stylelint: ^16.18.0 1488 | 1489 | stylelint-scss@6.12.0: 1490 | resolution: {integrity: sha512-U7CKhi1YNkM1pXUXl/GMUXi8xKdhl4Ayxdyceie1nZ1XNIdaUgMV6OArpooWcDzEggwgYD0HP/xIgVJo9a655w==} 1491 | engines: {node: '>=18.12.0'} 1492 | peerDependencies: 1493 | stylelint: ^16.0.2 1494 | 1495 | stylelint@16.20.0: 1496 | resolution: {integrity: sha512-B5Myu9WRxrgKuLs3YyUXLP2H0mrbejwNxPmyADlACWwFsrL8Bmor/nTSh4OMae5sHjOz6gkSeccQH34gM4/nAw==} 1497 | engines: {node: '>=18.12.0'} 1498 | hasBin: true 1499 | 1500 | supports-color@7.2.0: 1501 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1502 | engines: {node: '>=8'} 1503 | 1504 | supports-hyperlinks@3.2.0: 1505 | resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} 1506 | engines: {node: '>=14.18'} 1507 | 1508 | supports-preserve-symlinks-flag@1.0.0: 1509 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1510 | engines: {node: '>= 0.4'} 1511 | 1512 | svg-tags@1.0.0: 1513 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} 1514 | 1515 | table@6.9.0: 1516 | resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} 1517 | engines: {node: '>=10.0.0'} 1518 | 1519 | to-regex-range@5.0.1: 1520 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1521 | engines: {node: '>=8.0'} 1522 | 1523 | tsconfig-paths@3.15.0: 1524 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 1525 | 1526 | tslib@2.8.1: 1527 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1528 | 1529 | type-check@0.4.0: 1530 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1531 | engines: {node: '>= 0.8.0'} 1532 | 1533 | typed-array-buffer@1.0.3: 1534 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 1535 | engines: {node: '>= 0.4'} 1536 | 1537 | typed-array-byte-length@1.0.3: 1538 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 1539 | engines: {node: '>= 0.4'} 1540 | 1541 | typed-array-byte-offset@1.0.4: 1542 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 1543 | engines: {node: '>= 0.4'} 1544 | 1545 | typed-array-length@1.0.7: 1546 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1547 | engines: {node: '>= 0.4'} 1548 | 1549 | typescript@5.8.3: 1550 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1551 | engines: {node: '>=14.17'} 1552 | hasBin: true 1553 | 1554 | unbox-primitive@1.1.0: 1555 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 1556 | engines: {node: '>= 0.4'} 1557 | 1558 | universalify@2.0.1: 1559 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1560 | engines: {node: '>= 10.0.0'} 1561 | 1562 | upath@2.0.1: 1563 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} 1564 | engines: {node: '>=4'} 1565 | 1566 | update-browserslist-db@1.1.3: 1567 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1568 | hasBin: true 1569 | peerDependencies: 1570 | browserslist: '>= 4.21.0' 1571 | 1572 | uri-js@4.4.1: 1573 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1574 | 1575 | util-deprecate@1.0.2: 1576 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1577 | 1578 | which-boxed-primitive@1.1.1: 1579 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 1580 | engines: {node: '>= 0.4'} 1581 | 1582 | which-builtin-type@1.2.1: 1583 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 1584 | engines: {node: '>= 0.4'} 1585 | 1586 | which-collection@1.0.2: 1587 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 1588 | engines: {node: '>= 0.4'} 1589 | 1590 | which-typed-array@1.1.19: 1591 | resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} 1592 | engines: {node: '>= 0.4'} 1593 | 1594 | which@1.3.1: 1595 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1596 | hasBin: true 1597 | 1598 | which@2.0.2: 1599 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1600 | engines: {node: '>= 8'} 1601 | hasBin: true 1602 | 1603 | word-wrap@1.2.5: 1604 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1605 | engines: {node: '>=0.10.0'} 1606 | 1607 | write-file-atomic@5.0.1: 1608 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 1609 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1610 | 1611 | yallist@3.1.1: 1612 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1613 | 1614 | yocto-queue@0.1.0: 1615 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1616 | engines: {node: '>=10'} 1617 | 1618 | snapshots: 1619 | 1620 | '@ampproject/remapping@2.3.0': 1621 | dependencies: 1622 | '@jridgewell/gen-mapping': 0.3.8 1623 | '@jridgewell/trace-mapping': 0.3.25 1624 | 1625 | '@babel/code-frame@7.27.1': 1626 | dependencies: 1627 | '@babel/helper-validator-identifier': 7.27.1 1628 | js-tokens: 4.0.0 1629 | picocolors: 1.1.1 1630 | 1631 | '@babel/compat-data@7.27.5': {} 1632 | 1633 | '@babel/core@7.27.4': 1634 | dependencies: 1635 | '@ampproject/remapping': 2.3.0 1636 | '@babel/code-frame': 7.27.1 1637 | '@babel/generator': 7.27.5 1638 | '@babel/helper-compilation-targets': 7.27.2 1639 | '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) 1640 | '@babel/helpers': 7.27.4 1641 | '@babel/parser': 7.27.5 1642 | '@babel/template': 7.27.2 1643 | '@babel/traverse': 7.27.4 1644 | '@babel/types': 7.27.3 1645 | convert-source-map: 2.0.0 1646 | debug: 4.4.1 1647 | gensync: 1.0.0-beta.2 1648 | json5: 2.2.3 1649 | semver: 6.3.1 1650 | transitivePeerDependencies: 1651 | - supports-color 1652 | 1653 | '@babel/eslint-parser@7.27.5(@babel/core@7.27.4)(eslint@9.28.0)': 1654 | dependencies: 1655 | '@babel/core': 7.27.4 1656 | '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 1657 | eslint: 9.28.0 1658 | eslint-visitor-keys: 2.1.0 1659 | semver: 6.3.1 1660 | 1661 | '@babel/generator@7.27.5': 1662 | dependencies: 1663 | '@babel/parser': 7.27.5 1664 | '@babel/types': 7.27.3 1665 | '@jridgewell/gen-mapping': 0.3.8 1666 | '@jridgewell/trace-mapping': 0.3.25 1667 | jsesc: 3.1.0 1668 | 1669 | '@babel/helper-annotate-as-pure@7.27.3': 1670 | dependencies: 1671 | '@babel/types': 7.27.3 1672 | 1673 | '@babel/helper-compilation-targets@7.27.2': 1674 | dependencies: 1675 | '@babel/compat-data': 7.27.5 1676 | '@babel/helper-validator-option': 7.27.1 1677 | browserslist: 4.25.0 1678 | lru-cache: 5.1.1 1679 | semver: 6.3.1 1680 | 1681 | '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': 1682 | dependencies: 1683 | '@babel/core': 7.27.4 1684 | '@babel/helper-annotate-as-pure': 7.27.3 1685 | '@babel/helper-member-expression-to-functions': 7.27.1 1686 | '@babel/helper-optimise-call-expression': 7.27.1 1687 | '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) 1688 | '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 1689 | '@babel/traverse': 7.27.4 1690 | semver: 6.3.1 1691 | transitivePeerDependencies: 1692 | - supports-color 1693 | 1694 | '@babel/helper-member-expression-to-functions@7.27.1': 1695 | dependencies: 1696 | '@babel/traverse': 7.27.4 1697 | '@babel/types': 7.27.3 1698 | transitivePeerDependencies: 1699 | - supports-color 1700 | 1701 | '@babel/helper-module-imports@7.27.1': 1702 | dependencies: 1703 | '@babel/traverse': 7.27.4 1704 | '@babel/types': 7.27.3 1705 | transitivePeerDependencies: 1706 | - supports-color 1707 | 1708 | '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': 1709 | dependencies: 1710 | '@babel/core': 7.27.4 1711 | '@babel/helper-module-imports': 7.27.1 1712 | '@babel/helper-validator-identifier': 7.27.1 1713 | '@babel/traverse': 7.27.4 1714 | transitivePeerDependencies: 1715 | - supports-color 1716 | 1717 | '@babel/helper-optimise-call-expression@7.27.1': 1718 | dependencies: 1719 | '@babel/types': 7.27.3 1720 | 1721 | '@babel/helper-plugin-utils@7.27.1': {} 1722 | 1723 | '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': 1724 | dependencies: 1725 | '@babel/core': 7.27.4 1726 | '@babel/helper-member-expression-to-functions': 7.27.1 1727 | '@babel/helper-optimise-call-expression': 7.27.1 1728 | '@babel/traverse': 7.27.4 1729 | transitivePeerDependencies: 1730 | - supports-color 1731 | 1732 | '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 1733 | dependencies: 1734 | '@babel/traverse': 7.27.4 1735 | '@babel/types': 7.27.3 1736 | transitivePeerDependencies: 1737 | - supports-color 1738 | 1739 | '@babel/helper-string-parser@7.27.1': {} 1740 | 1741 | '@babel/helper-validator-identifier@7.27.1': {} 1742 | 1743 | '@babel/helper-validator-option@7.27.1': {} 1744 | 1745 | '@babel/helpers@7.27.4': 1746 | dependencies: 1747 | '@babel/template': 7.27.2 1748 | '@babel/types': 7.27.3 1749 | 1750 | '@babel/parser@7.27.5': 1751 | dependencies: 1752 | '@babel/types': 7.27.3 1753 | 1754 | '@babel/plugin-proposal-decorators@7.27.1(@babel/core@7.27.4)': 1755 | dependencies: 1756 | '@babel/core': 7.27.4 1757 | '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) 1758 | '@babel/helper-plugin-utils': 7.27.1 1759 | '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.4) 1760 | transitivePeerDependencies: 1761 | - supports-color 1762 | 1763 | '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.4)': 1764 | dependencies: 1765 | '@babel/core': 7.27.4 1766 | '@babel/helper-plugin-utils': 7.27.1 1767 | 1768 | '@babel/template@7.27.2': 1769 | dependencies: 1770 | '@babel/code-frame': 7.27.1 1771 | '@babel/parser': 7.27.5 1772 | '@babel/types': 7.27.3 1773 | 1774 | '@babel/traverse@7.27.4': 1775 | dependencies: 1776 | '@babel/code-frame': 7.27.1 1777 | '@babel/generator': 7.27.5 1778 | '@babel/parser': 7.27.5 1779 | '@babel/template': 7.27.2 1780 | '@babel/types': 7.27.3 1781 | debug: 4.4.1 1782 | globals: 11.12.0 1783 | transitivePeerDependencies: 1784 | - supports-color 1785 | 1786 | '@babel/types@7.27.3': 1787 | dependencies: 1788 | '@babel/helper-string-parser': 7.27.1 1789 | '@babel/helper-validator-identifier': 7.27.1 1790 | 1791 | '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': 1792 | dependencies: 1793 | '@csstools/css-tokenizer': 3.0.4 1794 | 1795 | '@csstools/css-tokenizer@3.0.4': {} 1796 | 1797 | '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 1798 | dependencies: 1799 | '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 1800 | '@csstools/css-tokenizer': 3.0.4 1801 | 1802 | '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': 1803 | dependencies: 1804 | postcss-selector-parser: 7.1.0 1805 | 1806 | '@discourse/lint-configs@2.25.0(ember-template-lint@7.8.1)(eslint@9.28.0)(postcss@8.5.4)(prettier@3.5.3)(stylelint@16.20.0(typescript@5.8.3))': 1807 | dependencies: 1808 | '@babel/core': 7.27.4 1809 | '@babel/eslint-parser': 7.27.5(@babel/core@7.27.4)(eslint@9.28.0) 1810 | '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) 1811 | ember-template-lint: 7.8.1 1812 | eslint: 9.28.0 1813 | eslint-plugin-decorator-position: 6.0.0(@babel/eslint-parser@7.27.5(@babel/core@7.27.4)(eslint@9.28.0))(eslint@9.28.0) 1814 | eslint-plugin-ember: 12.5.0(@babel/core@7.27.4)(eslint@9.28.0) 1815 | eslint-plugin-import: 2.31.0(eslint@9.28.0) 1816 | eslint-plugin-qunit: 8.1.2(eslint@9.28.0) 1817 | eslint-plugin-simple-import-sort: 12.1.1(eslint@9.28.0) 1818 | eslint-plugin-sort-class-members: 1.21.0(eslint@9.28.0) 1819 | globals: 16.2.0 1820 | prettier: 3.5.3 1821 | prettier-plugin-ember-template-tag: 2.0.5(prettier@3.5.3) 1822 | stylelint: 16.20.0(typescript@5.8.3) 1823 | stylelint-config-standard: 38.0.0(stylelint@16.20.0(typescript@5.8.3)) 1824 | stylelint-config-standard-scss: 15.0.1(postcss@8.5.4)(stylelint@16.20.0(typescript@5.8.3)) 1825 | stylelint-scss: 6.12.0(stylelint@16.20.0(typescript@5.8.3)) 1826 | typescript: 5.8.3 1827 | transitivePeerDependencies: 1828 | - '@typescript-eslint/parser' 1829 | - eslint-import-resolver-typescript 1830 | - eslint-import-resolver-webpack 1831 | - postcss 1832 | - supports-color 1833 | 1834 | '@dual-bundle/import-meta-resolve@4.1.0': {} 1835 | 1836 | '@ember-data/rfc395-data@0.0.4': {} 1837 | 1838 | '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': 1839 | dependencies: 1840 | eslint: 9.28.0 1841 | eslint-visitor-keys: 3.4.3 1842 | 1843 | '@eslint-community/regexpp@4.12.1': {} 1844 | 1845 | '@eslint/config-array@0.20.0': 1846 | dependencies: 1847 | '@eslint/object-schema': 2.1.6 1848 | debug: 4.4.1 1849 | minimatch: 3.1.2 1850 | transitivePeerDependencies: 1851 | - supports-color 1852 | 1853 | '@eslint/config-helpers@0.2.2': {} 1854 | 1855 | '@eslint/core@0.14.0': 1856 | dependencies: 1857 | '@types/json-schema': 7.0.15 1858 | 1859 | '@eslint/eslintrc@3.3.1': 1860 | dependencies: 1861 | ajv: 6.12.6 1862 | debug: 4.4.1 1863 | espree: 10.3.0 1864 | globals: 14.0.0 1865 | ignore: 5.3.2 1866 | import-fresh: 3.3.1 1867 | js-yaml: 4.1.0 1868 | minimatch: 3.1.2 1869 | strip-json-comments: 3.1.1 1870 | transitivePeerDependencies: 1871 | - supports-color 1872 | 1873 | '@eslint/js@9.28.0': {} 1874 | 1875 | '@eslint/object-schema@2.1.6': {} 1876 | 1877 | '@eslint/plugin-kit@0.3.1': 1878 | dependencies: 1879 | '@eslint/core': 0.14.0 1880 | levn: 0.4.1 1881 | 1882 | '@glimmer/env@0.1.7': {} 1883 | 1884 | '@glimmer/interfaces@0.92.3': 1885 | dependencies: 1886 | '@simple-dom/interface': 1.4.0 1887 | 1888 | '@glimmer/syntax@0.92.3': 1889 | dependencies: 1890 | '@glimmer/interfaces': 0.92.3 1891 | '@glimmer/util': 0.92.3 1892 | '@glimmer/wire-format': 0.92.3 1893 | '@handlebars/parser': 2.0.0 1894 | simple-html-tokenizer: 0.5.11 1895 | 1896 | '@glimmer/util@0.92.3': 1897 | dependencies: 1898 | '@glimmer/env': 0.1.7 1899 | '@glimmer/interfaces': 0.92.3 1900 | 1901 | '@glimmer/wire-format@0.92.3': 1902 | dependencies: 1903 | '@glimmer/interfaces': 0.92.3 1904 | '@glimmer/util': 0.92.3 1905 | 1906 | '@handlebars/parser@2.0.0': {} 1907 | 1908 | '@humanfs/core@0.19.1': {} 1909 | 1910 | '@humanfs/node@0.16.6': 1911 | dependencies: 1912 | '@humanfs/core': 0.19.1 1913 | '@humanwhocodes/retry': 0.3.1 1914 | 1915 | '@humanwhocodes/module-importer@1.0.1': {} 1916 | 1917 | '@humanwhocodes/retry@0.3.1': {} 1918 | 1919 | '@humanwhocodes/retry@0.4.3': {} 1920 | 1921 | '@jridgewell/gen-mapping@0.3.8': 1922 | dependencies: 1923 | '@jridgewell/set-array': 1.2.1 1924 | '@jridgewell/sourcemap-codec': 1.5.0 1925 | '@jridgewell/trace-mapping': 0.3.25 1926 | 1927 | '@jridgewell/resolve-uri@3.1.2': {} 1928 | 1929 | '@jridgewell/set-array@1.2.1': {} 1930 | 1931 | '@jridgewell/sourcemap-codec@1.5.0': {} 1932 | 1933 | '@jridgewell/trace-mapping@0.3.25': 1934 | dependencies: 1935 | '@jridgewell/resolve-uri': 3.1.2 1936 | '@jridgewell/sourcemap-codec': 1.5.0 1937 | 1938 | '@keyv/serialize@1.0.3': 1939 | dependencies: 1940 | buffer: 6.0.3 1941 | 1942 | '@lint-todo/utils@13.1.1': 1943 | dependencies: 1944 | '@types/eslint': 8.56.12 1945 | find-up: 5.0.0 1946 | fs-extra: 9.1.0 1947 | proper-lockfile: 4.1.2 1948 | slash: 3.0.0 1949 | tslib: 2.8.1 1950 | upath: 2.0.1 1951 | 1952 | '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': 1953 | dependencies: 1954 | eslint-scope: 5.1.1 1955 | 1956 | '@nodelib/fs.scandir@2.1.5': 1957 | dependencies: 1958 | '@nodelib/fs.stat': 2.0.5 1959 | run-parallel: 1.2.0 1960 | 1961 | '@nodelib/fs.stat@2.0.5': {} 1962 | 1963 | '@nodelib/fs.walk@1.2.8': 1964 | dependencies: 1965 | '@nodelib/fs.scandir': 2.1.5 1966 | fastq: 1.19.1 1967 | 1968 | '@rtsao/scc@1.1.0': {} 1969 | 1970 | '@simple-dom/interface@1.4.0': {} 1971 | 1972 | '@types/eslint@8.56.12': 1973 | dependencies: 1974 | '@types/estree': 1.0.7 1975 | '@types/json-schema': 7.0.15 1976 | 1977 | '@types/estree@1.0.7': {} 1978 | 1979 | '@types/json-schema@7.0.15': {} 1980 | 1981 | '@types/json5@0.0.29': {} 1982 | 1983 | acorn-jsx@5.3.2(acorn@8.14.1): 1984 | dependencies: 1985 | acorn: 8.14.1 1986 | 1987 | acorn@8.14.1: {} 1988 | 1989 | ajv@6.12.6: 1990 | dependencies: 1991 | fast-deep-equal: 3.1.3 1992 | fast-json-stable-stringify: 2.1.0 1993 | json-schema-traverse: 0.4.1 1994 | uri-js: 4.4.1 1995 | 1996 | ajv@8.17.1: 1997 | dependencies: 1998 | fast-deep-equal: 3.1.3 1999 | fast-uri: 3.0.6 2000 | json-schema-traverse: 1.0.0 2001 | require-from-string: 2.0.2 2002 | 2003 | ansi-regex@5.0.1: {} 2004 | 2005 | ansi-styles@4.3.0: 2006 | dependencies: 2007 | color-convert: 2.0.1 2008 | 2009 | argparse@2.0.1: {} 2010 | 2011 | array-buffer-byte-length@1.0.2: 2012 | dependencies: 2013 | call-bound: 1.0.4 2014 | is-array-buffer: 3.0.5 2015 | 2016 | array-includes@3.1.9: 2017 | dependencies: 2018 | call-bind: 1.0.8 2019 | call-bound: 1.0.4 2020 | define-properties: 1.2.1 2021 | es-abstract: 1.24.0 2022 | es-object-atoms: 1.1.1 2023 | get-intrinsic: 1.3.0 2024 | is-string: 1.1.1 2025 | math-intrinsics: 1.1.0 2026 | 2027 | array-union@2.1.0: {} 2028 | 2029 | array.prototype.findlastindex@1.2.6: 2030 | dependencies: 2031 | call-bind: 1.0.8 2032 | call-bound: 1.0.4 2033 | define-properties: 1.2.1 2034 | es-abstract: 1.24.0 2035 | es-errors: 1.3.0 2036 | es-object-atoms: 1.1.1 2037 | es-shim-unscopables: 1.1.0 2038 | 2039 | array.prototype.flat@1.3.3: 2040 | dependencies: 2041 | call-bind: 1.0.8 2042 | define-properties: 1.2.1 2043 | es-abstract: 1.24.0 2044 | es-shim-unscopables: 1.1.0 2045 | 2046 | array.prototype.flatmap@1.3.3: 2047 | dependencies: 2048 | call-bind: 1.0.8 2049 | define-properties: 1.2.1 2050 | es-abstract: 1.24.0 2051 | es-shim-unscopables: 1.1.0 2052 | 2053 | arraybuffer.prototype.slice@1.0.4: 2054 | dependencies: 2055 | array-buffer-byte-length: 1.0.2 2056 | call-bind: 1.0.8 2057 | define-properties: 1.2.1 2058 | es-abstract: 1.24.0 2059 | es-errors: 1.3.0 2060 | get-intrinsic: 1.3.0 2061 | is-array-buffer: 3.0.5 2062 | 2063 | astral-regex@2.0.0: {} 2064 | 2065 | async-function@1.0.0: {} 2066 | 2067 | at-least-node@1.0.0: {} 2068 | 2069 | available-typed-arrays@1.0.7: 2070 | dependencies: 2071 | possible-typed-array-names: 1.1.0 2072 | 2073 | balanced-match@1.0.2: {} 2074 | 2075 | balanced-match@2.0.0: {} 2076 | 2077 | base64-js@1.5.1: {} 2078 | 2079 | brace-expansion@1.1.11: 2080 | dependencies: 2081 | balanced-match: 1.0.2 2082 | concat-map: 0.0.1 2083 | 2084 | braces@3.0.3: 2085 | dependencies: 2086 | fill-range: 7.1.1 2087 | 2088 | browserslist@4.25.0: 2089 | dependencies: 2090 | caniuse-lite: 1.0.30001721 2091 | electron-to-chromium: 1.5.164 2092 | node-releases: 2.0.19 2093 | update-browserslist-db: 1.1.3(browserslist@4.25.0) 2094 | 2095 | buffer@6.0.3: 2096 | dependencies: 2097 | base64-js: 1.5.1 2098 | ieee754: 1.2.1 2099 | 2100 | cacheable@1.9.0: 2101 | dependencies: 2102 | hookified: 1.9.1 2103 | keyv: 5.3.3 2104 | 2105 | call-bind-apply-helpers@1.0.2: 2106 | dependencies: 2107 | es-errors: 1.3.0 2108 | function-bind: 1.1.2 2109 | 2110 | call-bind@1.0.8: 2111 | dependencies: 2112 | call-bind-apply-helpers: 1.0.2 2113 | es-define-property: 1.0.1 2114 | get-intrinsic: 1.3.0 2115 | set-function-length: 1.2.2 2116 | 2117 | call-bound@1.0.4: 2118 | dependencies: 2119 | call-bind-apply-helpers: 1.0.2 2120 | get-intrinsic: 1.3.0 2121 | 2122 | callsites@3.1.0: {} 2123 | 2124 | caniuse-lite@1.0.30001721: {} 2125 | 2126 | chalk@4.1.2: 2127 | dependencies: 2128 | ansi-styles: 4.3.0 2129 | supports-color: 7.2.0 2130 | 2131 | color-convert@2.0.1: 2132 | dependencies: 2133 | color-name: 1.1.4 2134 | 2135 | color-name@1.1.4: {} 2136 | 2137 | colord@2.9.3: {} 2138 | 2139 | concat-map@0.0.1: {} 2140 | 2141 | content-tag@2.0.3: {} 2142 | 2143 | content-tag@3.1.3: {} 2144 | 2145 | convert-source-map@2.0.0: {} 2146 | 2147 | cosmiconfig@9.0.0(typescript@5.8.3): 2148 | dependencies: 2149 | env-paths: 2.2.1 2150 | import-fresh: 3.3.1 2151 | js-yaml: 4.1.0 2152 | parse-json: 5.2.0 2153 | optionalDependencies: 2154 | typescript: 5.8.3 2155 | 2156 | cross-spawn@7.0.6: 2157 | dependencies: 2158 | path-key: 3.1.1 2159 | shebang-command: 2.0.0 2160 | which: 2.0.2 2161 | 2162 | css-functions-list@3.2.3: {} 2163 | 2164 | css-tree@3.1.0: 2165 | dependencies: 2166 | mdn-data: 2.12.2 2167 | source-map-js: 1.2.1 2168 | 2169 | cssesc@3.0.0: {} 2170 | 2171 | data-view-buffer@1.0.2: 2172 | dependencies: 2173 | call-bound: 1.0.4 2174 | es-errors: 1.3.0 2175 | is-data-view: 1.0.2 2176 | 2177 | data-view-byte-length@1.0.2: 2178 | dependencies: 2179 | call-bound: 1.0.4 2180 | es-errors: 1.3.0 2181 | is-data-view: 1.0.2 2182 | 2183 | data-view-byte-offset@1.0.1: 2184 | dependencies: 2185 | call-bound: 1.0.4 2186 | es-errors: 1.3.0 2187 | is-data-view: 1.0.2 2188 | 2189 | debug@3.2.7: 2190 | dependencies: 2191 | ms: 2.1.3 2192 | 2193 | debug@4.4.1: 2194 | dependencies: 2195 | ms: 2.1.3 2196 | 2197 | deep-is@0.1.4: {} 2198 | 2199 | define-data-property@1.1.4: 2200 | dependencies: 2201 | es-define-property: 1.0.1 2202 | es-errors: 1.3.0 2203 | gopd: 1.2.0 2204 | 2205 | define-properties@1.2.1: 2206 | dependencies: 2207 | define-data-property: 1.1.4 2208 | has-property-descriptors: 1.0.2 2209 | object-keys: 1.1.1 2210 | 2211 | dir-glob@3.0.1: 2212 | dependencies: 2213 | path-type: 4.0.0 2214 | 2215 | doctrine@2.1.0: 2216 | dependencies: 2217 | esutils: 2.0.3 2218 | 2219 | dot-case@3.0.4: 2220 | dependencies: 2221 | no-case: 3.0.4 2222 | tslib: 2.8.1 2223 | 2224 | dunder-proto@1.0.1: 2225 | dependencies: 2226 | call-bind-apply-helpers: 1.0.2 2227 | es-errors: 1.3.0 2228 | gopd: 1.2.0 2229 | 2230 | electron-to-chromium@1.5.164: {} 2231 | 2232 | ember-eslint-parser@0.5.9(@babel/core@7.27.4)(eslint@9.28.0): 2233 | dependencies: 2234 | '@babel/core': 7.27.4 2235 | '@babel/eslint-parser': 7.27.5(@babel/core@7.27.4)(eslint@9.28.0) 2236 | '@glimmer/syntax': 0.92.3 2237 | content-tag: 2.0.3 2238 | eslint-scope: 7.2.2 2239 | html-tags: 3.3.1 2240 | mathml-tag-names: 2.1.3 2241 | svg-tags: 1.0.0 2242 | transitivePeerDependencies: 2243 | - eslint 2244 | 2245 | ember-rfc176-data@0.3.18: {} 2246 | 2247 | ember-template-lint@7.8.1: 2248 | dependencies: 2249 | '@lint-todo/utils': 13.1.1 2250 | content-tag: 3.1.3 2251 | 2252 | emoji-regex@8.0.0: {} 2253 | 2254 | env-paths@2.2.1: {} 2255 | 2256 | error-ex@1.3.2: 2257 | dependencies: 2258 | is-arrayish: 0.2.1 2259 | 2260 | es-abstract@1.24.0: 2261 | dependencies: 2262 | array-buffer-byte-length: 1.0.2 2263 | arraybuffer.prototype.slice: 1.0.4 2264 | available-typed-arrays: 1.0.7 2265 | call-bind: 1.0.8 2266 | call-bound: 1.0.4 2267 | data-view-buffer: 1.0.2 2268 | data-view-byte-length: 1.0.2 2269 | data-view-byte-offset: 1.0.1 2270 | es-define-property: 1.0.1 2271 | es-errors: 1.3.0 2272 | es-object-atoms: 1.1.1 2273 | es-set-tostringtag: 2.1.0 2274 | es-to-primitive: 1.3.0 2275 | function.prototype.name: 1.1.8 2276 | get-intrinsic: 1.3.0 2277 | get-proto: 1.0.1 2278 | get-symbol-description: 1.1.0 2279 | globalthis: 1.0.4 2280 | gopd: 1.2.0 2281 | has-property-descriptors: 1.0.2 2282 | has-proto: 1.2.0 2283 | has-symbols: 1.1.0 2284 | hasown: 2.0.2 2285 | internal-slot: 1.1.0 2286 | is-array-buffer: 3.0.5 2287 | is-callable: 1.2.7 2288 | is-data-view: 1.0.2 2289 | is-negative-zero: 2.0.3 2290 | is-regex: 1.2.1 2291 | is-set: 2.0.3 2292 | is-shared-array-buffer: 1.0.4 2293 | is-string: 1.1.1 2294 | is-typed-array: 1.1.15 2295 | is-weakref: 1.1.1 2296 | math-intrinsics: 1.1.0 2297 | object-inspect: 1.13.4 2298 | object-keys: 1.1.1 2299 | object.assign: 4.1.7 2300 | own-keys: 1.0.1 2301 | regexp.prototype.flags: 1.5.4 2302 | safe-array-concat: 1.1.3 2303 | safe-push-apply: 1.0.0 2304 | safe-regex-test: 1.1.0 2305 | set-proto: 1.0.0 2306 | stop-iteration-iterator: 1.1.0 2307 | string.prototype.trim: 1.2.10 2308 | string.prototype.trimend: 1.0.9 2309 | string.prototype.trimstart: 1.0.8 2310 | typed-array-buffer: 1.0.3 2311 | typed-array-byte-length: 1.0.3 2312 | typed-array-byte-offset: 1.0.4 2313 | typed-array-length: 1.0.7 2314 | unbox-primitive: 1.1.0 2315 | which-typed-array: 1.1.19 2316 | 2317 | es-define-property@1.0.1: {} 2318 | 2319 | es-errors@1.3.0: {} 2320 | 2321 | es-object-atoms@1.1.1: 2322 | dependencies: 2323 | es-errors: 1.3.0 2324 | 2325 | es-set-tostringtag@2.1.0: 2326 | dependencies: 2327 | es-errors: 1.3.0 2328 | get-intrinsic: 1.3.0 2329 | has-tostringtag: 1.0.2 2330 | hasown: 2.0.2 2331 | 2332 | es-shim-unscopables@1.1.0: 2333 | dependencies: 2334 | hasown: 2.0.2 2335 | 2336 | es-to-primitive@1.3.0: 2337 | dependencies: 2338 | is-callable: 1.2.7 2339 | is-date-object: 1.1.0 2340 | is-symbol: 1.1.1 2341 | 2342 | escalade@3.2.0: {} 2343 | 2344 | escape-string-regexp@4.0.0: {} 2345 | 2346 | eslint-import-resolver-node@0.3.9: 2347 | dependencies: 2348 | debug: 3.2.7 2349 | is-core-module: 2.16.1 2350 | resolve: 1.22.10 2351 | transitivePeerDependencies: 2352 | - supports-color 2353 | 2354 | eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.28.0): 2355 | dependencies: 2356 | debug: 3.2.7 2357 | optionalDependencies: 2358 | eslint: 9.28.0 2359 | eslint-import-resolver-node: 0.3.9 2360 | transitivePeerDependencies: 2361 | - supports-color 2362 | 2363 | eslint-plugin-decorator-position@6.0.0(@babel/eslint-parser@7.27.5(@babel/core@7.27.4)(eslint@9.28.0))(eslint@9.28.0): 2364 | dependencies: 2365 | '@babel/core': 7.27.4 2366 | '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) 2367 | '@ember-data/rfc395-data': 0.0.4 2368 | ember-rfc176-data: 0.3.18 2369 | eslint: 9.28.0 2370 | snake-case: 3.0.4 2371 | optionalDependencies: 2372 | '@babel/eslint-parser': 7.27.5(@babel/core@7.27.4)(eslint@9.28.0) 2373 | transitivePeerDependencies: 2374 | - supports-color 2375 | 2376 | eslint-plugin-ember@12.5.0(@babel/core@7.27.4)(eslint@9.28.0): 2377 | dependencies: 2378 | '@ember-data/rfc395-data': 0.0.4 2379 | css-tree: 3.1.0 2380 | ember-eslint-parser: 0.5.9(@babel/core@7.27.4)(eslint@9.28.0) 2381 | ember-rfc176-data: 0.3.18 2382 | eslint: 9.28.0 2383 | eslint-utils: 3.0.0(eslint@9.28.0) 2384 | estraverse: 5.3.0 2385 | lodash.camelcase: 4.3.0 2386 | lodash.kebabcase: 4.1.1 2387 | requireindex: 1.2.0 2388 | snake-case: 3.0.4 2389 | transitivePeerDependencies: 2390 | - '@babel/core' 2391 | 2392 | eslint-plugin-import@2.31.0(eslint@9.28.0): 2393 | dependencies: 2394 | '@rtsao/scc': 1.1.0 2395 | array-includes: 3.1.9 2396 | array.prototype.findlastindex: 1.2.6 2397 | array.prototype.flat: 1.3.3 2398 | array.prototype.flatmap: 1.3.3 2399 | debug: 3.2.7 2400 | doctrine: 2.1.0 2401 | eslint: 9.28.0 2402 | eslint-import-resolver-node: 0.3.9 2403 | eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.28.0) 2404 | hasown: 2.0.2 2405 | is-core-module: 2.16.1 2406 | is-glob: 4.0.3 2407 | minimatch: 3.1.2 2408 | object.fromentries: 2.0.8 2409 | object.groupby: 1.0.3 2410 | object.values: 1.2.1 2411 | semver: 6.3.1 2412 | string.prototype.trimend: 1.0.9 2413 | tsconfig-paths: 3.15.0 2414 | transitivePeerDependencies: 2415 | - eslint-import-resolver-typescript 2416 | - eslint-import-resolver-webpack 2417 | - supports-color 2418 | 2419 | eslint-plugin-qunit@8.1.2(eslint@9.28.0): 2420 | dependencies: 2421 | eslint-utils: 3.0.0(eslint@9.28.0) 2422 | requireindex: 1.2.0 2423 | transitivePeerDependencies: 2424 | - eslint 2425 | 2426 | eslint-plugin-simple-import-sort@12.1.1(eslint@9.28.0): 2427 | dependencies: 2428 | eslint: 9.28.0 2429 | 2430 | eslint-plugin-sort-class-members@1.21.0(eslint@9.28.0): 2431 | dependencies: 2432 | eslint: 9.28.0 2433 | 2434 | eslint-scope@5.1.1: 2435 | dependencies: 2436 | esrecurse: 4.3.0 2437 | estraverse: 4.3.0 2438 | 2439 | eslint-scope@7.2.2: 2440 | dependencies: 2441 | esrecurse: 4.3.0 2442 | estraverse: 5.3.0 2443 | 2444 | eslint-scope@8.3.0: 2445 | dependencies: 2446 | esrecurse: 4.3.0 2447 | estraverse: 5.3.0 2448 | 2449 | eslint-utils@3.0.0(eslint@9.28.0): 2450 | dependencies: 2451 | eslint: 9.28.0 2452 | eslint-visitor-keys: 2.1.0 2453 | 2454 | eslint-visitor-keys@2.1.0: {} 2455 | 2456 | eslint-visitor-keys@3.4.3: {} 2457 | 2458 | eslint-visitor-keys@4.2.0: {} 2459 | 2460 | eslint@9.28.0: 2461 | dependencies: 2462 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) 2463 | '@eslint-community/regexpp': 4.12.1 2464 | '@eslint/config-array': 0.20.0 2465 | '@eslint/config-helpers': 0.2.2 2466 | '@eslint/core': 0.14.0 2467 | '@eslint/eslintrc': 3.3.1 2468 | '@eslint/js': 9.28.0 2469 | '@eslint/plugin-kit': 0.3.1 2470 | '@humanfs/node': 0.16.6 2471 | '@humanwhocodes/module-importer': 1.0.1 2472 | '@humanwhocodes/retry': 0.4.3 2473 | '@types/estree': 1.0.7 2474 | '@types/json-schema': 7.0.15 2475 | ajv: 6.12.6 2476 | chalk: 4.1.2 2477 | cross-spawn: 7.0.6 2478 | debug: 4.4.1 2479 | escape-string-regexp: 4.0.0 2480 | eslint-scope: 8.3.0 2481 | eslint-visitor-keys: 4.2.0 2482 | espree: 10.3.0 2483 | esquery: 1.6.0 2484 | esutils: 2.0.3 2485 | fast-deep-equal: 3.1.3 2486 | file-entry-cache: 8.0.0 2487 | find-up: 5.0.0 2488 | glob-parent: 6.0.2 2489 | ignore: 5.3.2 2490 | imurmurhash: 0.1.4 2491 | is-glob: 4.0.3 2492 | json-stable-stringify-without-jsonify: 1.0.1 2493 | lodash.merge: 4.6.2 2494 | minimatch: 3.1.2 2495 | natural-compare: 1.4.0 2496 | optionator: 0.9.4 2497 | transitivePeerDependencies: 2498 | - supports-color 2499 | 2500 | espree@10.3.0: 2501 | dependencies: 2502 | acorn: 8.14.1 2503 | acorn-jsx: 5.3.2(acorn@8.14.1) 2504 | eslint-visitor-keys: 4.2.0 2505 | 2506 | esquery@1.6.0: 2507 | dependencies: 2508 | estraverse: 5.3.0 2509 | 2510 | esrecurse@4.3.0: 2511 | dependencies: 2512 | estraverse: 5.3.0 2513 | 2514 | estraverse@4.3.0: {} 2515 | 2516 | estraverse@5.3.0: {} 2517 | 2518 | esutils@2.0.3: {} 2519 | 2520 | fast-deep-equal@3.1.3: {} 2521 | 2522 | fast-glob@3.3.3: 2523 | dependencies: 2524 | '@nodelib/fs.stat': 2.0.5 2525 | '@nodelib/fs.walk': 1.2.8 2526 | glob-parent: 5.1.2 2527 | merge2: 1.4.1 2528 | micromatch: 4.0.8 2529 | 2530 | fast-json-stable-stringify@2.1.0: {} 2531 | 2532 | fast-levenshtein@2.0.6: {} 2533 | 2534 | fast-uri@3.0.6: {} 2535 | 2536 | fastest-levenshtein@1.0.16: {} 2537 | 2538 | fastq@1.19.1: 2539 | dependencies: 2540 | reusify: 1.1.0 2541 | 2542 | file-entry-cache@10.1.0: 2543 | dependencies: 2544 | flat-cache: 6.1.9 2545 | 2546 | file-entry-cache@8.0.0: 2547 | dependencies: 2548 | flat-cache: 4.0.1 2549 | 2550 | fill-range@7.1.1: 2551 | dependencies: 2552 | to-regex-range: 5.0.1 2553 | 2554 | find-up@5.0.0: 2555 | dependencies: 2556 | locate-path: 6.0.0 2557 | path-exists: 4.0.0 2558 | 2559 | flat-cache@4.0.1: 2560 | dependencies: 2561 | flatted: 3.3.3 2562 | keyv: 4.5.4 2563 | 2564 | flat-cache@6.1.9: 2565 | dependencies: 2566 | cacheable: 1.9.0 2567 | flatted: 3.3.3 2568 | hookified: 1.9.1 2569 | 2570 | flatted@3.3.3: {} 2571 | 2572 | for-each@0.3.5: 2573 | dependencies: 2574 | is-callable: 1.2.7 2575 | 2576 | fs-extra@9.1.0: 2577 | dependencies: 2578 | at-least-node: 1.0.0 2579 | graceful-fs: 4.2.11 2580 | jsonfile: 6.1.0 2581 | universalify: 2.0.1 2582 | 2583 | function-bind@1.1.2: {} 2584 | 2585 | function.prototype.name@1.1.8: 2586 | dependencies: 2587 | call-bind: 1.0.8 2588 | call-bound: 1.0.4 2589 | define-properties: 1.2.1 2590 | functions-have-names: 1.2.3 2591 | hasown: 2.0.2 2592 | is-callable: 1.2.7 2593 | 2594 | functions-have-names@1.2.3: {} 2595 | 2596 | gensync@1.0.0-beta.2: {} 2597 | 2598 | get-intrinsic@1.3.0: 2599 | dependencies: 2600 | call-bind-apply-helpers: 1.0.2 2601 | es-define-property: 1.0.1 2602 | es-errors: 1.3.0 2603 | es-object-atoms: 1.1.1 2604 | function-bind: 1.1.2 2605 | get-proto: 1.0.1 2606 | gopd: 1.2.0 2607 | has-symbols: 1.1.0 2608 | hasown: 2.0.2 2609 | math-intrinsics: 1.1.0 2610 | 2611 | get-proto@1.0.1: 2612 | dependencies: 2613 | dunder-proto: 1.0.1 2614 | es-object-atoms: 1.1.1 2615 | 2616 | get-symbol-description@1.1.0: 2617 | dependencies: 2618 | call-bound: 1.0.4 2619 | es-errors: 1.3.0 2620 | get-intrinsic: 1.3.0 2621 | 2622 | glob-parent@5.1.2: 2623 | dependencies: 2624 | is-glob: 4.0.3 2625 | 2626 | glob-parent@6.0.2: 2627 | dependencies: 2628 | is-glob: 4.0.3 2629 | 2630 | global-modules@2.0.0: 2631 | dependencies: 2632 | global-prefix: 3.0.0 2633 | 2634 | global-prefix@3.0.0: 2635 | dependencies: 2636 | ini: 1.3.8 2637 | kind-of: 6.0.3 2638 | which: 1.3.1 2639 | 2640 | globals@11.12.0: {} 2641 | 2642 | globals@14.0.0: {} 2643 | 2644 | globals@16.2.0: {} 2645 | 2646 | globalthis@1.0.4: 2647 | dependencies: 2648 | define-properties: 1.2.1 2649 | gopd: 1.2.0 2650 | 2651 | globby@11.1.0: 2652 | dependencies: 2653 | array-union: 2.1.0 2654 | dir-glob: 3.0.1 2655 | fast-glob: 3.3.3 2656 | ignore: 5.3.2 2657 | merge2: 1.4.1 2658 | slash: 3.0.0 2659 | 2660 | globjoin@0.1.4: {} 2661 | 2662 | gopd@1.2.0: {} 2663 | 2664 | graceful-fs@4.2.11: {} 2665 | 2666 | has-bigints@1.1.0: {} 2667 | 2668 | has-flag@4.0.0: {} 2669 | 2670 | has-property-descriptors@1.0.2: 2671 | dependencies: 2672 | es-define-property: 1.0.1 2673 | 2674 | has-proto@1.2.0: 2675 | dependencies: 2676 | dunder-proto: 1.0.1 2677 | 2678 | has-symbols@1.1.0: {} 2679 | 2680 | has-tostringtag@1.0.2: 2681 | dependencies: 2682 | has-symbols: 1.1.0 2683 | 2684 | hasown@2.0.2: 2685 | dependencies: 2686 | function-bind: 1.1.2 2687 | 2688 | hookified@1.9.1: {} 2689 | 2690 | html-tags@3.3.1: {} 2691 | 2692 | ieee754@1.2.1: {} 2693 | 2694 | ignore@5.3.2: {} 2695 | 2696 | ignore@7.0.5: {} 2697 | 2698 | import-fresh@3.3.1: 2699 | dependencies: 2700 | parent-module: 1.0.1 2701 | resolve-from: 4.0.0 2702 | 2703 | imurmurhash@0.1.4: {} 2704 | 2705 | ini@1.3.8: {} 2706 | 2707 | internal-slot@1.1.0: 2708 | dependencies: 2709 | es-errors: 1.3.0 2710 | hasown: 2.0.2 2711 | side-channel: 1.1.0 2712 | 2713 | is-array-buffer@3.0.5: 2714 | dependencies: 2715 | call-bind: 1.0.8 2716 | call-bound: 1.0.4 2717 | get-intrinsic: 1.3.0 2718 | 2719 | is-arrayish@0.2.1: {} 2720 | 2721 | is-async-function@2.1.1: 2722 | dependencies: 2723 | async-function: 1.0.0 2724 | call-bound: 1.0.4 2725 | get-proto: 1.0.1 2726 | has-tostringtag: 1.0.2 2727 | safe-regex-test: 1.1.0 2728 | 2729 | is-bigint@1.1.0: 2730 | dependencies: 2731 | has-bigints: 1.1.0 2732 | 2733 | is-boolean-object@1.2.2: 2734 | dependencies: 2735 | call-bound: 1.0.4 2736 | has-tostringtag: 1.0.2 2737 | 2738 | is-callable@1.2.7: {} 2739 | 2740 | is-core-module@2.16.1: 2741 | dependencies: 2742 | hasown: 2.0.2 2743 | 2744 | is-data-view@1.0.2: 2745 | dependencies: 2746 | call-bound: 1.0.4 2747 | get-intrinsic: 1.3.0 2748 | is-typed-array: 1.1.15 2749 | 2750 | is-date-object@1.1.0: 2751 | dependencies: 2752 | call-bound: 1.0.4 2753 | has-tostringtag: 1.0.2 2754 | 2755 | is-extglob@2.1.1: {} 2756 | 2757 | is-finalizationregistry@1.1.1: 2758 | dependencies: 2759 | call-bound: 1.0.4 2760 | 2761 | is-fullwidth-code-point@3.0.0: {} 2762 | 2763 | is-generator-function@1.1.0: 2764 | dependencies: 2765 | call-bound: 1.0.4 2766 | get-proto: 1.0.1 2767 | has-tostringtag: 1.0.2 2768 | safe-regex-test: 1.1.0 2769 | 2770 | is-glob@4.0.3: 2771 | dependencies: 2772 | is-extglob: 2.1.1 2773 | 2774 | is-map@2.0.3: {} 2775 | 2776 | is-negative-zero@2.0.3: {} 2777 | 2778 | is-number-object@1.1.1: 2779 | dependencies: 2780 | call-bound: 1.0.4 2781 | has-tostringtag: 1.0.2 2782 | 2783 | is-number@7.0.0: {} 2784 | 2785 | is-plain-object@5.0.0: {} 2786 | 2787 | is-regex@1.2.1: 2788 | dependencies: 2789 | call-bound: 1.0.4 2790 | gopd: 1.2.0 2791 | has-tostringtag: 1.0.2 2792 | hasown: 2.0.2 2793 | 2794 | is-set@2.0.3: {} 2795 | 2796 | is-shared-array-buffer@1.0.4: 2797 | dependencies: 2798 | call-bound: 1.0.4 2799 | 2800 | is-string@1.1.1: 2801 | dependencies: 2802 | call-bound: 1.0.4 2803 | has-tostringtag: 1.0.2 2804 | 2805 | is-symbol@1.1.1: 2806 | dependencies: 2807 | call-bound: 1.0.4 2808 | has-symbols: 1.1.0 2809 | safe-regex-test: 1.1.0 2810 | 2811 | is-typed-array@1.1.15: 2812 | dependencies: 2813 | which-typed-array: 1.1.19 2814 | 2815 | is-weakmap@2.0.2: {} 2816 | 2817 | is-weakref@1.1.1: 2818 | dependencies: 2819 | call-bound: 1.0.4 2820 | 2821 | is-weakset@2.0.4: 2822 | dependencies: 2823 | call-bound: 1.0.4 2824 | get-intrinsic: 1.3.0 2825 | 2826 | isarray@2.0.5: {} 2827 | 2828 | isexe@2.0.0: {} 2829 | 2830 | js-tokens@4.0.0: {} 2831 | 2832 | js-yaml@4.1.0: 2833 | dependencies: 2834 | argparse: 2.0.1 2835 | 2836 | jsesc@3.1.0: {} 2837 | 2838 | json-buffer@3.0.1: {} 2839 | 2840 | json-parse-even-better-errors@2.3.1: {} 2841 | 2842 | json-schema-traverse@0.4.1: {} 2843 | 2844 | json-schema-traverse@1.0.0: {} 2845 | 2846 | json-stable-stringify-without-jsonify@1.0.1: {} 2847 | 2848 | json5@1.0.2: 2849 | dependencies: 2850 | minimist: 1.2.8 2851 | 2852 | json5@2.2.3: {} 2853 | 2854 | jsonfile@6.1.0: 2855 | dependencies: 2856 | universalify: 2.0.1 2857 | optionalDependencies: 2858 | graceful-fs: 4.2.11 2859 | 2860 | keyv@4.5.4: 2861 | dependencies: 2862 | json-buffer: 3.0.1 2863 | 2864 | keyv@5.3.3: 2865 | dependencies: 2866 | '@keyv/serialize': 1.0.3 2867 | 2868 | kind-of@6.0.3: {} 2869 | 2870 | known-css-properties@0.36.0: {} 2871 | 2872 | levn@0.4.1: 2873 | dependencies: 2874 | prelude-ls: 1.2.1 2875 | type-check: 0.4.0 2876 | 2877 | lines-and-columns@1.2.4: {} 2878 | 2879 | locate-path@6.0.0: 2880 | dependencies: 2881 | p-locate: 5.0.0 2882 | 2883 | lodash.camelcase@4.3.0: {} 2884 | 2885 | lodash.kebabcase@4.1.1: {} 2886 | 2887 | lodash.merge@4.6.2: {} 2888 | 2889 | lodash.truncate@4.4.2: {} 2890 | 2891 | lower-case@2.0.2: 2892 | dependencies: 2893 | tslib: 2.8.1 2894 | 2895 | lru-cache@5.1.1: 2896 | dependencies: 2897 | yallist: 3.1.1 2898 | 2899 | math-intrinsics@1.1.0: {} 2900 | 2901 | mathml-tag-names@2.1.3: {} 2902 | 2903 | mdn-data@2.12.2: {} 2904 | 2905 | mdn-data@2.21.0: {} 2906 | 2907 | meow@13.2.0: {} 2908 | 2909 | merge2@1.4.1: {} 2910 | 2911 | micromatch@4.0.8: 2912 | dependencies: 2913 | braces: 3.0.3 2914 | picomatch: 2.3.1 2915 | 2916 | minimatch@3.1.2: 2917 | dependencies: 2918 | brace-expansion: 1.1.11 2919 | 2920 | minimist@1.2.8: {} 2921 | 2922 | ms@2.1.3: {} 2923 | 2924 | nanoid@3.3.11: {} 2925 | 2926 | natural-compare@1.4.0: {} 2927 | 2928 | no-case@3.0.4: 2929 | dependencies: 2930 | lower-case: 2.0.2 2931 | tslib: 2.8.1 2932 | 2933 | node-releases@2.0.19: {} 2934 | 2935 | normalize-path@3.0.0: {} 2936 | 2937 | object-inspect@1.13.4: {} 2938 | 2939 | object-keys@1.1.1: {} 2940 | 2941 | object.assign@4.1.7: 2942 | dependencies: 2943 | call-bind: 1.0.8 2944 | call-bound: 1.0.4 2945 | define-properties: 1.2.1 2946 | es-object-atoms: 1.1.1 2947 | has-symbols: 1.1.0 2948 | object-keys: 1.1.1 2949 | 2950 | object.fromentries@2.0.8: 2951 | dependencies: 2952 | call-bind: 1.0.8 2953 | define-properties: 1.2.1 2954 | es-abstract: 1.24.0 2955 | es-object-atoms: 1.1.1 2956 | 2957 | object.groupby@1.0.3: 2958 | dependencies: 2959 | call-bind: 1.0.8 2960 | define-properties: 1.2.1 2961 | es-abstract: 1.24.0 2962 | 2963 | object.values@1.2.1: 2964 | dependencies: 2965 | call-bind: 1.0.8 2966 | call-bound: 1.0.4 2967 | define-properties: 1.2.1 2968 | es-object-atoms: 1.1.1 2969 | 2970 | optionator@0.9.4: 2971 | dependencies: 2972 | deep-is: 0.1.4 2973 | fast-levenshtein: 2.0.6 2974 | levn: 0.4.1 2975 | prelude-ls: 1.2.1 2976 | type-check: 0.4.0 2977 | word-wrap: 1.2.5 2978 | 2979 | own-keys@1.0.1: 2980 | dependencies: 2981 | get-intrinsic: 1.3.0 2982 | object-keys: 1.1.1 2983 | safe-push-apply: 1.0.0 2984 | 2985 | p-limit@3.1.0: 2986 | dependencies: 2987 | yocto-queue: 0.1.0 2988 | 2989 | p-locate@5.0.0: 2990 | dependencies: 2991 | p-limit: 3.1.0 2992 | 2993 | parent-module@1.0.1: 2994 | dependencies: 2995 | callsites: 3.1.0 2996 | 2997 | parse-json@5.2.0: 2998 | dependencies: 2999 | '@babel/code-frame': 7.27.1 3000 | error-ex: 1.3.2 3001 | json-parse-even-better-errors: 2.3.1 3002 | lines-and-columns: 1.2.4 3003 | 3004 | path-exists@4.0.0: {} 3005 | 3006 | path-key@3.1.1: {} 3007 | 3008 | path-parse@1.0.7: {} 3009 | 3010 | path-type@4.0.0: {} 3011 | 3012 | picocolors@1.1.1: {} 3013 | 3014 | picomatch@2.3.1: {} 3015 | 3016 | possible-typed-array-names@1.1.0: {} 3017 | 3018 | postcss-media-query-parser@0.2.3: {} 3019 | 3020 | postcss-resolve-nested-selector@0.1.6: {} 3021 | 3022 | postcss-safe-parser@7.0.1(postcss@8.5.4): 3023 | dependencies: 3024 | postcss: 8.5.4 3025 | 3026 | postcss-scss@4.0.9(postcss@8.5.4): 3027 | dependencies: 3028 | postcss: 8.5.4 3029 | 3030 | postcss-selector-parser@7.1.0: 3031 | dependencies: 3032 | cssesc: 3.0.0 3033 | util-deprecate: 1.0.2 3034 | 3035 | postcss-value-parser@4.2.0: {} 3036 | 3037 | postcss@8.5.4: 3038 | dependencies: 3039 | nanoid: 3.3.11 3040 | picocolors: 1.1.1 3041 | source-map-js: 1.2.1 3042 | 3043 | prelude-ls@1.2.1: {} 3044 | 3045 | prettier-plugin-ember-template-tag@2.0.5(prettier@3.5.3): 3046 | dependencies: 3047 | '@babel/core': 7.27.4 3048 | content-tag: 3.1.3 3049 | prettier: 3.5.3 3050 | transitivePeerDependencies: 3051 | - supports-color 3052 | 3053 | prettier@3.5.3: {} 3054 | 3055 | proper-lockfile@4.1.2: 3056 | dependencies: 3057 | graceful-fs: 4.2.11 3058 | retry: 0.12.0 3059 | signal-exit: 3.0.7 3060 | 3061 | punycode@2.3.1: {} 3062 | 3063 | queue-microtask@1.2.3: {} 3064 | 3065 | reflect.getprototypeof@1.0.10: 3066 | dependencies: 3067 | call-bind: 1.0.8 3068 | define-properties: 1.2.1 3069 | es-abstract: 1.24.0 3070 | es-errors: 1.3.0 3071 | es-object-atoms: 1.1.1 3072 | get-intrinsic: 1.3.0 3073 | get-proto: 1.0.1 3074 | which-builtin-type: 1.2.1 3075 | 3076 | regexp.prototype.flags@1.5.4: 3077 | dependencies: 3078 | call-bind: 1.0.8 3079 | define-properties: 1.2.1 3080 | es-errors: 1.3.0 3081 | get-proto: 1.0.1 3082 | gopd: 1.2.0 3083 | set-function-name: 2.0.2 3084 | 3085 | require-from-string@2.0.2: {} 3086 | 3087 | requireindex@1.2.0: {} 3088 | 3089 | resolve-from@4.0.0: {} 3090 | 3091 | resolve-from@5.0.0: {} 3092 | 3093 | resolve@1.22.10: 3094 | dependencies: 3095 | is-core-module: 2.16.1 3096 | path-parse: 1.0.7 3097 | supports-preserve-symlinks-flag: 1.0.0 3098 | 3099 | retry@0.12.0: {} 3100 | 3101 | reusify@1.1.0: {} 3102 | 3103 | run-parallel@1.2.0: 3104 | dependencies: 3105 | queue-microtask: 1.2.3 3106 | 3107 | safe-array-concat@1.1.3: 3108 | dependencies: 3109 | call-bind: 1.0.8 3110 | call-bound: 1.0.4 3111 | get-intrinsic: 1.3.0 3112 | has-symbols: 1.1.0 3113 | isarray: 2.0.5 3114 | 3115 | safe-push-apply@1.0.0: 3116 | dependencies: 3117 | es-errors: 1.3.0 3118 | isarray: 2.0.5 3119 | 3120 | safe-regex-test@1.1.0: 3121 | dependencies: 3122 | call-bound: 1.0.4 3123 | es-errors: 1.3.0 3124 | is-regex: 1.2.1 3125 | 3126 | semver@6.3.1: {} 3127 | 3128 | set-function-length@1.2.2: 3129 | dependencies: 3130 | define-data-property: 1.1.4 3131 | es-errors: 1.3.0 3132 | function-bind: 1.1.2 3133 | get-intrinsic: 1.3.0 3134 | gopd: 1.2.0 3135 | has-property-descriptors: 1.0.2 3136 | 3137 | set-function-name@2.0.2: 3138 | dependencies: 3139 | define-data-property: 1.1.4 3140 | es-errors: 1.3.0 3141 | functions-have-names: 1.2.3 3142 | has-property-descriptors: 1.0.2 3143 | 3144 | set-proto@1.0.0: 3145 | dependencies: 3146 | dunder-proto: 1.0.1 3147 | es-errors: 1.3.0 3148 | es-object-atoms: 1.1.1 3149 | 3150 | shebang-command@2.0.0: 3151 | dependencies: 3152 | shebang-regex: 3.0.0 3153 | 3154 | shebang-regex@3.0.0: {} 3155 | 3156 | side-channel-list@1.0.0: 3157 | dependencies: 3158 | es-errors: 1.3.0 3159 | object-inspect: 1.13.4 3160 | 3161 | side-channel-map@1.0.1: 3162 | dependencies: 3163 | call-bound: 1.0.4 3164 | es-errors: 1.3.0 3165 | get-intrinsic: 1.3.0 3166 | object-inspect: 1.13.4 3167 | 3168 | side-channel-weakmap@1.0.2: 3169 | dependencies: 3170 | call-bound: 1.0.4 3171 | es-errors: 1.3.0 3172 | get-intrinsic: 1.3.0 3173 | object-inspect: 1.13.4 3174 | side-channel-map: 1.0.1 3175 | 3176 | side-channel@1.1.0: 3177 | dependencies: 3178 | es-errors: 1.3.0 3179 | object-inspect: 1.13.4 3180 | side-channel-list: 1.0.0 3181 | side-channel-map: 1.0.1 3182 | side-channel-weakmap: 1.0.2 3183 | 3184 | signal-exit@3.0.7: {} 3185 | 3186 | signal-exit@4.1.0: {} 3187 | 3188 | simple-html-tokenizer@0.5.11: {} 3189 | 3190 | slash@3.0.0: {} 3191 | 3192 | slice-ansi@4.0.0: 3193 | dependencies: 3194 | ansi-styles: 4.3.0 3195 | astral-regex: 2.0.0 3196 | is-fullwidth-code-point: 3.0.0 3197 | 3198 | snake-case@3.0.4: 3199 | dependencies: 3200 | dot-case: 3.0.4 3201 | tslib: 2.8.1 3202 | 3203 | source-map-js@1.2.1: {} 3204 | 3205 | stop-iteration-iterator@1.1.0: 3206 | dependencies: 3207 | es-errors: 1.3.0 3208 | internal-slot: 1.1.0 3209 | 3210 | string-width@4.2.3: 3211 | dependencies: 3212 | emoji-regex: 8.0.0 3213 | is-fullwidth-code-point: 3.0.0 3214 | strip-ansi: 6.0.1 3215 | 3216 | string.prototype.trim@1.2.10: 3217 | dependencies: 3218 | call-bind: 1.0.8 3219 | call-bound: 1.0.4 3220 | define-data-property: 1.1.4 3221 | define-properties: 1.2.1 3222 | es-abstract: 1.24.0 3223 | es-object-atoms: 1.1.1 3224 | has-property-descriptors: 1.0.2 3225 | 3226 | string.prototype.trimend@1.0.9: 3227 | dependencies: 3228 | call-bind: 1.0.8 3229 | call-bound: 1.0.4 3230 | define-properties: 1.2.1 3231 | es-object-atoms: 1.1.1 3232 | 3233 | string.prototype.trimstart@1.0.8: 3234 | dependencies: 3235 | call-bind: 1.0.8 3236 | define-properties: 1.2.1 3237 | es-object-atoms: 1.1.1 3238 | 3239 | strip-ansi@6.0.1: 3240 | dependencies: 3241 | ansi-regex: 5.0.1 3242 | 3243 | strip-bom@3.0.0: {} 3244 | 3245 | strip-json-comments@3.1.1: {} 3246 | 3247 | stylelint-config-recommended-scss@15.0.1(postcss@8.5.4)(stylelint@16.20.0(typescript@5.8.3)): 3248 | dependencies: 3249 | postcss-scss: 4.0.9(postcss@8.5.4) 3250 | stylelint: 16.20.0(typescript@5.8.3) 3251 | stylelint-config-recommended: 16.0.0(stylelint@16.20.0(typescript@5.8.3)) 3252 | stylelint-scss: 6.12.0(stylelint@16.20.0(typescript@5.8.3)) 3253 | optionalDependencies: 3254 | postcss: 8.5.4 3255 | 3256 | stylelint-config-recommended@16.0.0(stylelint@16.20.0(typescript@5.8.3)): 3257 | dependencies: 3258 | stylelint: 16.20.0(typescript@5.8.3) 3259 | 3260 | stylelint-config-standard-scss@15.0.1(postcss@8.5.4)(stylelint@16.20.0(typescript@5.8.3)): 3261 | dependencies: 3262 | stylelint: 16.20.0(typescript@5.8.3) 3263 | stylelint-config-recommended-scss: 15.0.1(postcss@8.5.4)(stylelint@16.20.0(typescript@5.8.3)) 3264 | stylelint-config-standard: 38.0.0(stylelint@16.20.0(typescript@5.8.3)) 3265 | optionalDependencies: 3266 | postcss: 8.5.4 3267 | 3268 | stylelint-config-standard@38.0.0(stylelint@16.20.0(typescript@5.8.3)): 3269 | dependencies: 3270 | stylelint: 16.20.0(typescript@5.8.3) 3271 | stylelint-config-recommended: 16.0.0(stylelint@16.20.0(typescript@5.8.3)) 3272 | 3273 | stylelint-scss@6.12.0(stylelint@16.20.0(typescript@5.8.3)): 3274 | dependencies: 3275 | css-tree: 3.1.0 3276 | is-plain-object: 5.0.0 3277 | known-css-properties: 0.36.0 3278 | mdn-data: 2.21.0 3279 | postcss-media-query-parser: 0.2.3 3280 | postcss-resolve-nested-selector: 0.1.6 3281 | postcss-selector-parser: 7.1.0 3282 | postcss-value-parser: 4.2.0 3283 | stylelint: 16.20.0(typescript@5.8.3) 3284 | 3285 | stylelint@16.20.0(typescript@5.8.3): 3286 | dependencies: 3287 | '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 3288 | '@csstools/css-tokenizer': 3.0.4 3289 | '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 3290 | '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) 3291 | '@dual-bundle/import-meta-resolve': 4.1.0 3292 | balanced-match: 2.0.0 3293 | colord: 2.9.3 3294 | cosmiconfig: 9.0.0(typescript@5.8.3) 3295 | css-functions-list: 3.2.3 3296 | css-tree: 3.1.0 3297 | debug: 4.4.1 3298 | fast-glob: 3.3.3 3299 | fastest-levenshtein: 1.0.16 3300 | file-entry-cache: 10.1.0 3301 | global-modules: 2.0.0 3302 | globby: 11.1.0 3303 | globjoin: 0.1.4 3304 | html-tags: 3.3.1 3305 | ignore: 7.0.5 3306 | imurmurhash: 0.1.4 3307 | is-plain-object: 5.0.0 3308 | known-css-properties: 0.36.0 3309 | mathml-tag-names: 2.1.3 3310 | meow: 13.2.0 3311 | micromatch: 4.0.8 3312 | normalize-path: 3.0.0 3313 | picocolors: 1.1.1 3314 | postcss: 8.5.4 3315 | postcss-resolve-nested-selector: 0.1.6 3316 | postcss-safe-parser: 7.0.1(postcss@8.5.4) 3317 | postcss-selector-parser: 7.1.0 3318 | postcss-value-parser: 4.2.0 3319 | resolve-from: 5.0.0 3320 | string-width: 4.2.3 3321 | supports-hyperlinks: 3.2.0 3322 | svg-tags: 1.0.0 3323 | table: 6.9.0 3324 | write-file-atomic: 5.0.1 3325 | transitivePeerDependencies: 3326 | - supports-color 3327 | - typescript 3328 | 3329 | supports-color@7.2.0: 3330 | dependencies: 3331 | has-flag: 4.0.0 3332 | 3333 | supports-hyperlinks@3.2.0: 3334 | dependencies: 3335 | has-flag: 4.0.0 3336 | supports-color: 7.2.0 3337 | 3338 | supports-preserve-symlinks-flag@1.0.0: {} 3339 | 3340 | svg-tags@1.0.0: {} 3341 | 3342 | table@6.9.0: 3343 | dependencies: 3344 | ajv: 8.17.1 3345 | lodash.truncate: 4.4.2 3346 | slice-ansi: 4.0.0 3347 | string-width: 4.2.3 3348 | strip-ansi: 6.0.1 3349 | 3350 | to-regex-range@5.0.1: 3351 | dependencies: 3352 | is-number: 7.0.0 3353 | 3354 | tsconfig-paths@3.15.0: 3355 | dependencies: 3356 | '@types/json5': 0.0.29 3357 | json5: 1.0.2 3358 | minimist: 1.2.8 3359 | strip-bom: 3.0.0 3360 | 3361 | tslib@2.8.1: {} 3362 | 3363 | type-check@0.4.0: 3364 | dependencies: 3365 | prelude-ls: 1.2.1 3366 | 3367 | typed-array-buffer@1.0.3: 3368 | dependencies: 3369 | call-bound: 1.0.4 3370 | es-errors: 1.3.0 3371 | is-typed-array: 1.1.15 3372 | 3373 | typed-array-byte-length@1.0.3: 3374 | dependencies: 3375 | call-bind: 1.0.8 3376 | for-each: 0.3.5 3377 | gopd: 1.2.0 3378 | has-proto: 1.2.0 3379 | is-typed-array: 1.1.15 3380 | 3381 | typed-array-byte-offset@1.0.4: 3382 | dependencies: 3383 | available-typed-arrays: 1.0.7 3384 | call-bind: 1.0.8 3385 | for-each: 0.3.5 3386 | gopd: 1.2.0 3387 | has-proto: 1.2.0 3388 | is-typed-array: 1.1.15 3389 | reflect.getprototypeof: 1.0.10 3390 | 3391 | typed-array-length@1.0.7: 3392 | dependencies: 3393 | call-bind: 1.0.8 3394 | for-each: 0.3.5 3395 | gopd: 1.2.0 3396 | is-typed-array: 1.1.15 3397 | possible-typed-array-names: 1.1.0 3398 | reflect.getprototypeof: 1.0.10 3399 | 3400 | typescript@5.8.3: {} 3401 | 3402 | unbox-primitive@1.1.0: 3403 | dependencies: 3404 | call-bound: 1.0.4 3405 | has-bigints: 1.1.0 3406 | has-symbols: 1.1.0 3407 | which-boxed-primitive: 1.1.1 3408 | 3409 | universalify@2.0.1: {} 3410 | 3411 | upath@2.0.1: {} 3412 | 3413 | update-browserslist-db@1.1.3(browserslist@4.25.0): 3414 | dependencies: 3415 | browserslist: 4.25.0 3416 | escalade: 3.2.0 3417 | picocolors: 1.1.1 3418 | 3419 | uri-js@4.4.1: 3420 | dependencies: 3421 | punycode: 2.3.1 3422 | 3423 | util-deprecate@1.0.2: {} 3424 | 3425 | which-boxed-primitive@1.1.1: 3426 | dependencies: 3427 | is-bigint: 1.1.0 3428 | is-boolean-object: 1.2.2 3429 | is-number-object: 1.1.1 3430 | is-string: 1.1.1 3431 | is-symbol: 1.1.1 3432 | 3433 | which-builtin-type@1.2.1: 3434 | dependencies: 3435 | call-bound: 1.0.4 3436 | function.prototype.name: 1.1.8 3437 | has-tostringtag: 1.0.2 3438 | is-async-function: 2.1.1 3439 | is-date-object: 1.1.0 3440 | is-finalizationregistry: 1.1.1 3441 | is-generator-function: 1.1.0 3442 | is-regex: 1.2.1 3443 | is-weakref: 1.1.1 3444 | isarray: 2.0.5 3445 | which-boxed-primitive: 1.1.1 3446 | which-collection: 1.0.2 3447 | which-typed-array: 1.1.19 3448 | 3449 | which-collection@1.0.2: 3450 | dependencies: 3451 | is-map: 2.0.3 3452 | is-set: 2.0.3 3453 | is-weakmap: 2.0.2 3454 | is-weakset: 2.0.4 3455 | 3456 | which-typed-array@1.1.19: 3457 | dependencies: 3458 | available-typed-arrays: 1.0.7 3459 | call-bind: 1.0.8 3460 | call-bound: 1.0.4 3461 | for-each: 0.3.5 3462 | get-proto: 1.0.1 3463 | gopd: 1.2.0 3464 | has-tostringtag: 1.0.2 3465 | 3466 | which@1.3.1: 3467 | dependencies: 3468 | isexe: 2.0.0 3469 | 3470 | which@2.0.2: 3471 | dependencies: 3472 | isexe: 2.0.0 3473 | 3474 | word-wrap@1.2.5: {} 3475 | 3476 | write-file-atomic@5.0.1: 3477 | dependencies: 3478 | imurmurhash: 0.1.4 3479 | signal-exit: 4.1.0 3480 | 3481 | yallist@3.1.1: {} 3482 | 3483 | yocto-queue@0.1.0: {} 3484 | -------------------------------------------------------------------------------- /settings.yml: -------------------------------------------------------------------------------- 1 | custom_header_links: 2 | type: objects 3 | default: [] 4 | schema: 5 | name: "link" 6 | identifier: text 7 | properties: 8 | text: 9 | type: string 10 | required: true 11 | validations: 12 | min_length: 1 13 | max_length: 100 14 | title: 15 | type: string 16 | validations: 17 | min_length: 1 18 | max_length: 1000 19 | url: 20 | type: string 21 | required: true 22 | validations: 23 | min_length: 1 24 | max_length: 2048 25 | url: true 26 | view: 27 | type: enum 28 | choices: 29 | - vdm 30 | - vdo 31 | - vmo 32 | target: 33 | type: enum 34 | choices: 35 | - blank 36 | - self 37 | hide_on_scroll: 38 | type: enum 39 | choices: 40 | - remove 41 | - keep 42 | default: keep 43 | locale: 44 | type: string 45 | 46 | links_position: 47 | default: right 48 | type: enum 49 | choices: 50 | - right 51 | - left 52 | -------------------------------------------------------------------------------- /spec/system/core_features_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | RSpec.describe "Core features", type: :system do 4 | before { upload_theme_or_component } 5 | 6 | it_behaves_like "having working core features" 7 | end 8 | -------------------------------------------------------------------------------- /spec/system/page_objects/components/custom_header_link.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module PageObjects 4 | module Components 5 | class CustomHeaderLink < PageObjects::Components::Base 6 | CUSTOM_HEADER_LINKS_SELECTOR = ".before-header-panel-outlet .custom-header-links" 7 | 8 | def visible? 9 | has_css?(CUSTOM_HEADER_LINKS_SELECTOR) 10 | end 11 | 12 | def has_custom_header_link?(link_name, title:, href:) 13 | expect(find(CUSTOM_HEADER_LINKS_SELECTOR)).to have_link(link_name, href:, title:) 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/system/viewing_custom_header_links_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative "page_objects/components/custom_header_link" 4 | 5 | RSpec.describe "Viewing Custom Header Links", system: true do 6 | fab!(:theme) { upload_theme_component } 7 | let!(:custom_header_link) { PageObjects::Components::CustomHeaderLink.new } 8 | 9 | before do 10 | theme.update_setting( 11 | :custom_header_links, 12 | [ 13 | { 14 | text: "External link", 15 | title: "This link will open in a new tab", 16 | url: "https://meta.discourse.org", 17 | view: "vdo", 18 | target: "blank", 19 | hide_on_scroll: "remove", 20 | }, 21 | { 22 | text: "Most Liked", 23 | title: "Posts with the most amount of likes", 24 | url: "/latest/?order=op_likes", 25 | view: "vdo", 26 | target: "self", 27 | hide_on_scroll: "keep", 28 | }, 29 | { 30 | text: "Privacy", 31 | title: "Our Privacy Policy", 32 | url: "/privacy", 33 | view: "vdm", 34 | target: "self", 35 | hide_on_scroll: "keep", 36 | }, 37 | ], 38 | ) 39 | 40 | theme.save! 41 | end 42 | 43 | it "should display the custom header links" do 44 | visit("/") 45 | 46 | expect(custom_header_link).to be_visible 47 | 48 | expect(custom_header_link).to have_custom_header_link( 49 | "External link", 50 | href: "https://meta.discourse.org", 51 | title: "This link will open in a new tab", 52 | ) 53 | 54 | expect(custom_header_link).to have_custom_header_link( 55 | "Most Liked", 56 | href: "/latest/?order=op_likes", 57 | title: "Posts with the most amount of likes", 58 | ) 59 | 60 | expect(custom_header_link).to have_custom_header_link( 61 | "Privacy", 62 | href: "/privacy", 63 | title: "Our Privacy Policy", 64 | ) 65 | end 66 | end 67 | -------------------------------------------------------------------------------- /stylelint.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | extends: ["@discourse/lint-configs/stylelint"], 3 | }; 4 | -------------------------------------------------------------------------------- /test/unit/migrations/settings/0001-rename-settings-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from "qunit"; 2 | import migrate from "../../../../migrations/settings/0001-rename-settings"; 3 | 4 | module( 5 | "Custom Header Links | Unit | Migrations | Settings | 0001-rename-settings", 6 | function () { 7 | test("migrate", function (assert) { 8 | const settings = new Map( 9 | Object.entries({ 10 | Custom_header_links: "some,links", 11 | }) 12 | ); 13 | 14 | const result = migrate(settings); 15 | 16 | assert.deepEqual( 17 | Array.from(result), 18 | Array.from( 19 | new Map( 20 | Object.entries({ 21 | custom_header_links: "some,links", 22 | }) 23 | ) 24 | ) 25 | ); 26 | }); 27 | } 28 | ); 29 | -------------------------------------------------------------------------------- /test/unit/migrations/settings/0002-migrate-custom-header-links-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from "qunit"; 2 | import migrate from "../../../../migrations/settings/0002-migrate-custom-header-links"; 3 | 4 | module( 5 | "Custom Header Links | Migrations | Settings | 0002-migrate-custom-header-links", 6 | function () { 7 | test("migrate when value of setting is already an array", function (assert) { 8 | const settings = new Map( 9 | Object.entries({ 10 | custom_header_links: [ 11 | { 12 | text: "Some link", 13 | title: "Some link title", 14 | url: "https://some.url.com", 15 | view: "vdo", 16 | target: "blank", 17 | hide_on_scroll: "remove", 18 | }, 19 | ], 20 | }) 21 | ); 22 | 23 | const result = migrate(settings); 24 | 25 | const expectedResult = new Map( 26 | Object.entries({ 27 | custom_header_links: [ 28 | { 29 | text: "Some link", 30 | title: "Some link title", 31 | url: "https://some.url.com", 32 | view: "vdo", 33 | target: "blank", 34 | hide_on_scroll: "remove", 35 | }, 36 | ], 37 | }) 38 | ); 39 | 40 | assert.deepEqual( 41 | Object.fromEntries(result.entries()), 42 | Object.fromEntries(expectedResult.entries()) 43 | ); 44 | }); 45 | 46 | test("migrate when old setting value is an empty string", function (assert) { 47 | const settings = new Map(Object.entries({ custom_header_links: "" })); 48 | 49 | const result = migrate(settings); 50 | 51 | const expectedResult = new Map( 52 | Object.entries({ custom_header_links: [] }) 53 | ); 54 | 55 | assert.deepEqual( 56 | Object.fromEntries(result.entries()), 57 | Object.fromEntries(expectedResult.entries()) 58 | ); 59 | }); 60 | 61 | test("migrate when old setting value is invalid", function (assert) { 62 | const settings = new Map( 63 | Object.entries({ 64 | custom_header_links: 65 | "Invalid Link|Invalid Link 2, some title|Invalid Link 3, , ,", 66 | }) 67 | ); 68 | 69 | const result = migrate(settings); 70 | 71 | const expectedResult = new Map( 72 | Object.entries({ custom_header_links: [] }) 73 | ); 74 | 75 | assert.deepEqual( 76 | Object.fromEntries(result.entries()), 77 | Object.fromEntries(expectedResult.entries()) 78 | ); 79 | }); 80 | 81 | test("migrate when `hide_on_scroll` attribute is invalid", function (assert) { 82 | const settings = new Map( 83 | Object.entries({ 84 | custom_header_links: 85 | "External link, this link will open in a new tab, https://meta.discourse.org, vdo, blank, invalid", 86 | }) 87 | ); 88 | 89 | const result = migrate(settings); 90 | 91 | const expectedResult = new Map( 92 | Object.entries({ 93 | custom_header_links: [ 94 | { 95 | text: "External link", 96 | title: "this link will open in a new tab", 97 | url: "https://meta.discourse.org", 98 | view: "vdo", 99 | target: "blank", 100 | hide_on_scroll: "keep", 101 | }, 102 | ], 103 | }) 104 | ); 105 | 106 | assert.deepEqual( 107 | Object.fromEntries(result.entries()), 108 | Object.fromEntries(expectedResult.entries()) 109 | ); 110 | }); 111 | 112 | test("migrate when `target` attribute is invalid", function (assert) { 113 | const settings = new Map( 114 | Object.entries({ 115 | custom_header_links: 116 | "External link, this link will open in a new tab, https://meta.discourse.org, vdo, invalid, remove", 117 | }) 118 | ); 119 | 120 | const result = migrate(settings); 121 | 122 | const expectedResult = new Map( 123 | Object.entries({ 124 | custom_header_links: [ 125 | { 126 | text: "External link", 127 | title: "this link will open in a new tab", 128 | url: "https://meta.discourse.org", 129 | view: "vdo", 130 | target: "blank", 131 | hide_on_scroll: "remove", 132 | }, 133 | ], 134 | }) 135 | ); 136 | 137 | assert.deepEqual( 138 | Object.fromEntries(result.entries()), 139 | Object.fromEntries(expectedResult.entries()) 140 | ); 141 | }); 142 | 143 | test("migrate when `view` attribute is invalid", function (assert) { 144 | const settings = new Map( 145 | Object.entries({ 146 | custom_header_links: 147 | "External link, this link will open in a new tab, https://meta.discourse.org, invalid, blank, remove", 148 | }) 149 | ); 150 | 151 | const result = migrate(settings); 152 | 153 | const expectedResult = new Map( 154 | Object.entries({ 155 | custom_header_links: [ 156 | { 157 | text: "External link", 158 | title: "this link will open in a new tab", 159 | url: "https://meta.discourse.org", 160 | view: "vdm", 161 | target: "blank", 162 | hide_on_scroll: "remove", 163 | }, 164 | ], 165 | }) 166 | ); 167 | 168 | assert.deepEqual( 169 | Object.fromEntries(result.entries()), 170 | Object.fromEntries(expectedResult.entries()) 171 | ); 172 | }); 173 | 174 | test("migrate when title is not provided", function (assert) { 175 | const settings = new Map( 176 | Object.entries({ 177 | custom_header_links: "External link, , https://meta.discourse.org", 178 | }) 179 | ); 180 | 181 | const result = migrate(settings); 182 | 183 | const expectedResult = new Map( 184 | Object.entries({ 185 | custom_header_links: [ 186 | { 187 | text: "External link", 188 | url: "https://meta.discourse.org", 189 | view: "vdm", 190 | target: "blank", 191 | hide_on_scroll: "keep", 192 | }, 193 | ], 194 | }) 195 | ); 196 | 197 | assert.deepEqual( 198 | Object.fromEntries(result.entries()), 199 | Object.fromEntries(expectedResult.entries()) 200 | ); 201 | }); 202 | 203 | test("migrate", function (assert) { 204 | const settings = new Map( 205 | Object.entries({ 206 | custom_header_links: 207 | "External link, this link will open in a new tab, https://meta.discourse.org, vdo, blank, remove|Most Liked, Posts with the most amount of likes, /latest/?order=op_likes, vdo, self, keep|Privacy, Our Privacy Policy, /privacy, vdm, self, keep, en", 208 | }) 209 | ); 210 | 211 | const result = migrate(settings); 212 | 213 | const expectedResult = new Map( 214 | Object.entries({ 215 | custom_header_links: [ 216 | { 217 | text: "External link", 218 | title: "this link will open in a new tab", 219 | url: "https://meta.discourse.org", 220 | view: "vdo", 221 | target: "blank", 222 | hide_on_scroll: "remove", 223 | }, 224 | { 225 | text: "Most Liked", 226 | title: "Posts with the most amount of likes", 227 | url: "/latest/?order=op_likes", 228 | view: "vdo", 229 | target: "self", 230 | hide_on_scroll: "keep", 231 | }, 232 | { 233 | text: "Privacy", 234 | title: "Our Privacy Policy", 235 | url: "/privacy", 236 | view: "vdm", 237 | target: "self", 238 | hide_on_scroll: "keep", 239 | locale: "en", 240 | }, 241 | ], 242 | }) 243 | ); 244 | 245 | assert.deepEqual(Array.from(result), Array.from(expectedResult)); 246 | }); 247 | } 248 | ); 249 | -------------------------------------------------------------------------------- /translator.yml: -------------------------------------------------------------------------------- 1 | # Configuration file for discourse-translator-bot 2 | 3 | files: 4 | - source_path: locales/en.yml 5 | destination_path: translations.yml 6 | --------------------------------------------------------------------------------