├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .github └── FUNDING.yml ├── .gitignore ├── .npmrc ├── LICENSE.md ├── README.md ├── compat ├── compat-quickexplorer.ts └── compatlayer.ts ├── docs └── assets │ ├── command-palette-screenshot.png │ ├── installation-screenshot.png │ ├── settings-screenshot.png │ └── sidebar-screenshot.png ├── esbuild.config.mjs ├── main.ts ├── manifest.json ├── package-lock.json ├── package.json ├── tsconfig.json ├── version-bump.mjs └── versions.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | insert_final_newline = true 8 | indent_style = space 9 | indent_size = 2 10 | tab_width = 2 11 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | fixtures 5 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "env": { 5 | "node": true 6 | }, 7 | "plugins": [ 8 | "@typescript-eslint" 9 | ], 10 | "extends": [ 11 | "eslint:recommended", 12 | "plugin:@typescript-eslint/eslint-recommended", 13 | "plugin:@typescript-eslint/recommended" 14 | ], 15 | "parserOptions": { 16 | "sourceType": "module" 17 | }, 18 | "rules": { 19 | "no-unused-vars": "off", 20 | "@typescript-eslint/no-unused-vars": [ 21 | "error", 22 | { 23 | "args": "none" 24 | } 25 | ], 26 | "@typescript-eslint/ban-ts-comment": "off", 27 | "no-prototype-builtins": "off", 28 | "@typescript-eslint/no-empty-function": "off", 29 | "semi": [ 30 | "error", 31 | "always" 32 | ], 33 | "comma-dangle": [ 34 | "error", 35 | "always-multiline" 36 | ], 37 | "quotes": [ 38 | "error", 39 | "double", 40 | {"avoidEscape": true} 41 | ] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | buy_me_a_coffee: jonasdoesthings 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # vscode 2 | .vscode 3 | 4 | # Intellij 5 | *.iml 6 | .idea 7 | 8 | # npm 9 | node_modules 10 | 11 | # Don't include the compiled main.js file in the repo. 12 | # They should be uploaded to GitHub releases instead. 13 | main.js 14 | dist 15 | 16 | # Exclude sourcemaps 17 | *.map 18 | 19 | # obsidian 20 | data.json 21 | fixtures/obsidian-hide-folders-test-vault/ 22 | 23 | # Exclude macOS Finder (System Explorer) View States 24 | .DS_Store 25 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | tag-version-prefix="" -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright © 2022-* Jonas Lorenz 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # obsidian-hide-folders 2 | 3 | A simple plugin for [obsidian.md](https://obsidian.md) that hides configured folders, with the ability to toggle their visibility. 4 | This can be used for hiding attachments folders when you don't need them. 5 | 6 | Buy Me A Coffee 7 | 8 | ## Installation 9 | Search in the community plugins menu of Obsidian for "Hide Folders" look for the right plugin ("by JonasDoesThings"), there you can install the latest stable version. 10 | 11 | ![Screenshot of the Plugin Installation Menu](./docs/assets/installation-screenshot.png) 12 | 13 | ## Configuration 14 | Enter the list of folder names to hide in the settings menu, **one folder per line**. 15 | You can match folders using three ways: 16 | * Exact folder-names (for example `attachments`) 17 | * All folders **starting with** a specific string (for example `startsWith::_` to filter out all folders whose name starting with a `_`) 18 | * All folders **ending with** a specific string (for example `endsWith::_trash` to filter out all folders whose name is ending with `_trash`) 19 | 20 | ![Screenshot of the Plugin Settings Screen in Obsidian.md](./docs/assets/settings-screenshot.png) 21 | 22 | You can then also use a sidebar button to quickly toggle the visibility without having to enter the settings menu: 23 | 24 | ![Screenshot of the Plugin's Sidebar Button in Obsidian.md](docs/assets/sidebar-screenshot.png) 25 | 26 | Using the command palette is also supported: 27 | 28 | ![Screenshot of the Plugin's Command Palette Action in Obsidian..md](docs/assets/command-palette-screenshot.png) 29 | 30 | ## Development 31 | ### Setup 32 | - Clone this repo. 33 | - `npm i` or `yarn` to install dependencies 34 | - `npm run dev` to start compilation in watch mode. 35 | 36 | ### Building 37 | - `npm run build` to do a one-off build of the project, which produces the files needed for manually installing the plugin. 38 | 39 | ### Manually installing the plugin 40 | - Copy over the outputted `main.js`, `manifest.json` from the `dist/` folder to your vault `VaultFolder/.obsidian/plugins/obsidian-hide-folders/`. 41 | -> Watch Out! You cannot copy-over the raw *main.**ts***. You need to run a build first and then copy over the produced *main.**js***. 42 | 43 | ## Support my work 44 | I am maintaining free open source tools like this in my free-time. 45 | If I helped you, and you want to give back, you can [buy me a coffee (green tea)](https://www.buymeacoffee.com/jonasdoesthings). 46 | 47 | ## License 48 | MIT License, see [LICENSE.md](./LICENSE.md) 49 | -------------------------------------------------------------------------------- /compat/compat-quickexplorer.ts: -------------------------------------------------------------------------------- 1 | import {DocumentSelectorCompatLayer} from "./compatlayer"; 2 | import {getFolderNameWithoutPrefix, HideFoldersPluginSettings} from "../main"; 3 | 4 | /** 5 | * Compatibility for https://github.com/pjeby/quick-explorer/ 6 | */ 7 | export const CompatQuickExplorer: DocumentSelectorCompatLayer = { 8 | getAdditionalDocumentSelectorStringForFolder: function (folderName: string, pluginSettings: HideFoldersPluginSettings): string { 9 | if(folderName.toLowerCase().startsWith("endswith::")) { 10 | return `.is-qe-folder[data-file-path$="${getFolderNameWithoutPrefix(folderName)}"${pluginSettings.matchCaseInsensitive ? " i" : ""}]`; 11 | } else if(folderName.toLowerCase().startsWith("startswith::")) { 12 | return `.is-qe-folder[data-file-path^="${getFolderNameWithoutPrefix(folderName)}"${pluginSettings.matchCaseInsensitive ? " i" : ""}], .is-qe-folder[data-file-path*="/${getFolderNameWithoutPrefix(folderName)}"${pluginSettings.matchCaseInsensitive ? " i" : ""}]`; 13 | } else { 14 | return `.is-qe-folder[data-file-path$="/${folderName.trim()}"${pluginSettings.matchCaseInsensitive ? " i" : ""}], .is-qe-folder[data-file-path="${folderName.trim()}"${pluginSettings.matchCaseInsensitive ? " i" : ""}]`; 15 | } 16 | }, 17 | 18 | shouldMutationRecordTriggerFolderReProcessing: (record) => { 19 | for (const addedNode of record.addedNodes) { 20 | // @ts-ignore 21 | if (!addedNode.tagName) continue; // not an element 22 | // @ts-ignore 23 | if(addedNode.classList.contains("qe-popup-menu")) { 24 | // only changing the position of the most top-level menu is enough 25 | const firstQePopUpMenu = document.getElementsByClassName("qe-popup-menu")[0] as HTMLElement; 26 | 27 | if(!firstQePopUpMenu) return true; 28 | firstQePopUpMenu.style.top = ""; 29 | firstQePopUpMenu.style.bottom = "1.7rem"; 30 | 31 | return true; 32 | } 33 | } 34 | 35 | if(record.target?.parentElement?.classList.contains("is-qe-folder")) { 36 | return true; 37 | } 38 | 39 | return false; 40 | }, 41 | }; 42 | -------------------------------------------------------------------------------- /compat/compatlayer.ts: -------------------------------------------------------------------------------- 1 | import {HideFoldersPluginSettings} from "../main"; 2 | 3 | export interface DocumentSelectorCompatLayer { 4 | getAdditionalDocumentSelectorStringForFolder?: (folderName: string, pluginSettings: HideFoldersPluginSettings) => string 5 | shouldMutationRecordTriggerFolderReProcessing?: (mutationRecord: MutationRecord) => boolean; 6 | } 7 | -------------------------------------------------------------------------------- /docs/assets/command-palette-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JonasDoesThings/obsidian-hide-folders/35e5a6083c2127becd6a11098516ef301c109d1b/docs/assets/command-palette-screenshot.png -------------------------------------------------------------------------------- /docs/assets/installation-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JonasDoesThings/obsidian-hide-folders/35e5a6083c2127becd6a11098516ef301c109d1b/docs/assets/installation-screenshot.png -------------------------------------------------------------------------------- /docs/assets/settings-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JonasDoesThings/obsidian-hide-folders/35e5a6083c2127becd6a11098516ef301c109d1b/docs/assets/settings-screenshot.png -------------------------------------------------------------------------------- /docs/assets/sidebar-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JonasDoesThings/obsidian-hide-folders/35e5a6083c2127becd6a11098516ef301c109d1b/docs/assets/sidebar-screenshot.png -------------------------------------------------------------------------------- /esbuild.config.mjs: -------------------------------------------------------------------------------- 1 | import esbuild from "esbuild"; 2 | import process from "process"; 3 | import builtins from 'builtin-modules'; 4 | 5 | const banner = 6 | `/* 7 | THIS IS A GENERATED/BUNDLED FILE BY ESBUILD 8 | if you want to view the source, please visit the github repository of this plugin 9 | */ 10 | `; 11 | 12 | const prod = (process.argv[2] === 'production'); 13 | 14 | const context = await esbuild.context({ 15 | banner: { 16 | js: banner, 17 | }, 18 | entryPoints: ['main.ts'], 19 | bundle: true, 20 | external: [ 21 | 'obsidian', 22 | 'electron', 23 | '@codemirror/autocomplete', 24 | '@codemirror/collab', 25 | '@codemirror/commands', 26 | '@codemirror/language', 27 | '@codemirror/lint', 28 | '@codemirror/search', 29 | '@codemirror/state', 30 | '@codemirror/view', 31 | '@lezer/common', 32 | '@lezer/highlight', 33 | '@lezer/lr', 34 | ...builtins], 35 | format: 'cjs', 36 | target: 'es2018', 37 | logLevel: 'info', 38 | sourcemap: prod ? false : 'inline', 39 | treeShaking: true, 40 | outfile: 'main.js', 41 | }); 42 | 43 | if (prod) { 44 | await context.rebuild(); 45 | process.exit(0); 46 | } else { 47 | await context.watch(); 48 | } 49 | -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import {App, Plugin, PluginSettingTab, setIcon, Setting, debounce} from "obsidian"; 2 | import {CompatQuickExplorer} from "./compat/compat-quickexplorer"; 3 | 4 | export interface HideFoldersPluginSettings { 5 | areFoldersHidden: boolean; 6 | matchCaseInsensitive: boolean; 7 | addHiddenFoldersToObsidianIgnoreList: boolean; 8 | hideBottomStatusBarIndicatorText: boolean; 9 | enableCompatQuickExplorer: boolean; 10 | attachmentFolderNames: string[]; 11 | } 12 | 13 | const DEFAULT_SETTINGS: HideFoldersPluginSettings = { 14 | areFoldersHidden: true, 15 | matchCaseInsensitive: true, 16 | addHiddenFoldersToObsidianIgnoreList: false, 17 | hideBottomStatusBarIndicatorText: false, 18 | enableCompatQuickExplorer: false, 19 | attachmentFolderNames: ["attachments"], 20 | }; 21 | 22 | export default class HideFoldersPlugin extends Plugin { 23 | settings: HideFoldersPluginSettings; 24 | ribbonIconButton: HTMLElement; 25 | statusBarItem?: HTMLElement; 26 | mutationObserver: MutationObserver; 27 | 28 | private processFolders = debounce(async (recheckPreviouslyHiddenFolders?: boolean) => { 29 | if(this.settings.attachmentFolderNames.length === 0) return; 30 | 31 | if(recheckPreviouslyHiddenFolders) { 32 | document.querySelectorAll(".obsidian-hide-folders--hidden").forEach((folder) => { 33 | folder.style.height = ""; 34 | folder.style.overflow = ""; 35 | folder.removeClass("obsidian-hide-folders--hidden"); 36 | }); 37 | } 38 | 39 | this.settings.attachmentFolderNames.forEach(folderName => { 40 | if(getFolderNameWithoutPrefix(folderName) === "") return; 41 | 42 | const folderElements = document.querySelectorAll([ 43 | this.getQuerySelectorStringForFolderName(folderName), 44 | this.settings.enableCompatQuickExplorer ? CompatQuickExplorer.getAdditionalDocumentSelectorStringForFolder?.(folderName, this.settings) : null, 45 | ].filter((o) => o != null).join(", ")); 46 | 47 | folderElements.forEach((folder) => { 48 | if (!folder) { 49 | return; 50 | } 51 | 52 | folder.addClass("obsidian-hide-folders--hidden"); 53 | folder.style.height = this.settings.areFoldersHidden ? "0" : ""; 54 | folder.style.display = this.settings.areFoldersHidden ? "none" : ""; 55 | folder.style.overflow = this.settings.areFoldersHidden ? "hidden" : ""; 56 | }); 57 | }); 58 | }, 10, false); 59 | 60 | getQuerySelectorStringForFolderName(folderName: string) { 61 | if(folderName.toLowerCase().startsWith("endswith::")) { 62 | return `*:has(> [data-path$="${getFolderNameWithoutPrefix(folderName)}"${this.settings.matchCaseInsensitive ? " i" : ""}])`; 63 | } else if(folderName.toLowerCase().startsWith("startswith::")) { 64 | return `*:has(> .nav-folder-title[data-path^="${getFolderNameWithoutPrefix(folderName)}"${this.settings.matchCaseInsensitive ? " i" : ""}]), *:has(> .nav-folder-title[data-path*="/${getFolderNameWithoutPrefix(folderName)}"${this.settings.matchCaseInsensitive ? " i" : ""}])`; 65 | } else { 66 | return `*:has(> [data-path$="/${folderName.trim()}"${this.settings.matchCaseInsensitive ? " i" : ""}]), *:has(> [data-path="${folderName.trim()}"${this.settings.matchCaseInsensitive ? " i" : ""}])`; 67 | } 68 | } 69 | 70 | async toggleFunctionality() { 71 | this.settings.areFoldersHidden = !this.settings.areFoldersHidden; 72 | this.ribbonIconButton.ariaLabel = this.settings.areFoldersHidden ? "Show hidden folders" : "Hide hidden folders again"; 73 | setIcon(this.ribbonIconButton, this.settings.areFoldersHidden ? "eye" : "eye-off"); 74 | if(this.statusBarItem) { 75 | this.statusBarItem.innerHTML = this.settings.areFoldersHidden ? "Configured folders are hidden" : ""; 76 | } 77 | await this.processFolders(); 78 | await this.saveSettings(); 79 | await this.updateObsidianIgnoreList(); 80 | } 81 | 82 | createIgnoreListRegExpForFolderName(rawFolderName: string) { 83 | const folderName = this.settings.matchCaseInsensitive 84 | ? getFolderNameWithoutPrefix(rawFolderName).split("").map(c => c.toLowerCase() != c.toUpperCase() ? `[${c.toLowerCase()}${c.toUpperCase()}]` : c).join("") 85 | : getFolderNameWithoutPrefix(rawFolderName); 86 | 87 | if(rawFolderName.toLowerCase().startsWith("endswith::")) { 88 | return `/(${folderName}$)|(${folderName}/)/`; 89 | } else if(rawFolderName.toLowerCase().startsWith("startswith::")) { 90 | return `/(^${folderName})|(/${folderName})/`; 91 | } else { 92 | return `/${folderName}/`; 93 | } 94 | } 95 | 96 | async updateObsidianIgnoreList(processFeatureDisabling?: boolean) { 97 | if(!this.settings.addHiddenFoldersToObsidianIgnoreList && !processFeatureDisabling) return; 98 | 99 | // @ts-ignore 100 | let ignoreList = (this.app.vault.getConfig("userIgnoreFilters") ?? []) as string[]; 101 | 102 | if (this.settings.areFoldersHidden && !processFeatureDisabling) { 103 | this.settings.attachmentFolderNames.forEach(folderName => { 104 | if(getFolderNameWithoutPrefix(folderName).trim() === "") return; 105 | if(ignoreList.contains(this.createIgnoreListRegExpForFolderName(folderName))) return; 106 | ignoreList.push(this.createIgnoreListRegExpForFolderName(folderName)); 107 | }); 108 | } else { 109 | const folderNameRegexes = this.settings.attachmentFolderNames.map(folderName => this.createIgnoreListRegExpForFolderName(folderName)); 110 | ignoreList = ignoreList.filter((s) => !folderNameRegexes.includes(s)); 111 | } 112 | 113 | // @ts-ignore 114 | this.app.vault.setConfig("userIgnoreFilters", ignoreList); 115 | } 116 | 117 | async removeSpecificFoldersFromObsidianIgnoreList(folderNames: string[]) { 118 | folderNames.forEach(folderName => { 119 | // @ts-ignore 120 | this.app.vault.config.userIgnoreFilters?.remove(this.createIgnoreListRegExpForFolderName(folderName)); 121 | this.app.vault.trigger("config-changed"); 122 | }); 123 | } 124 | 125 | createBottomStatusBarIndicatorTextItem() { 126 | if(this.statusBarItem) return; // prevent multiple instantiations 127 | 128 | // This adds a status bar item to the bottom of the app. 129 | this.statusBarItem = this.addStatusBarItem(); 130 | this.statusBarItem.setText(this.settings.areFoldersHidden ? "Configured folders are hidden" : ""); 131 | } 132 | 133 | async onload() { 134 | console.log("loading plugin hide-folders"); 135 | 136 | await this.loadSettings(); 137 | 138 | // This creates an icon in the left ribbon. 139 | this.ribbonIconButton = this.addRibbonIcon(this.settings.areFoldersHidden ? "eye" : "eye-off", this.settings.areFoldersHidden ? "Show hidden folders" : "Hide hidden folders again", (evt: MouseEvent) => { 140 | this.toggleFunctionality(); 141 | }); 142 | 143 | if(!this.settings.hideBottomStatusBarIndicatorText) { 144 | this.createBottomStatusBarIndicatorTextItem(); 145 | } 146 | 147 | // This adds a simple command that can be triggered anywhere 148 | this.addCommand({ 149 | id: "toggle-attachment-folders", 150 | name: "Toggle visibility of hidden folders", 151 | callback: () => { 152 | this.toggleFunctionality(); 153 | }, 154 | }); 155 | 156 | // This adds a settings tab so the user can configure various aspects of the plugin 157 | this.addSettingTab(new HideFoldersPluginSettingTab(this.app, this)); 158 | 159 | // used for re-processing folders when a folder is expanded in the file-navigator 160 | this.mutationObserver = new MutationObserver((mutationRecord) => { 161 | const feClasses = [ 162 | "nav-folder", 163 | "nav-files-container", 164 | ]; 165 | 166 | // check if any of the mutationRecords fulfills the conditions for us to call processFolders 167 | const shouldTriggerProcessFolders = mutationRecord.some((record) => { 168 | if(feClasses.some(c => record.target?.parentElement?.classList.contains(c))) return true; 169 | if(this.settings.enableCompatQuickExplorer && CompatQuickExplorer.shouldMutationRecordTriggerFolderReProcessing?.(record)) return true; 170 | 171 | return false; 172 | }); 173 | 174 | if(!shouldTriggerProcessFolders) return; 175 | this.processFolders(); 176 | }); 177 | this.mutationObserver.observe(window.document, {childList: true, subtree: true}); 178 | 179 | // used for re-processing folders when a folder is newly created or renamed 180 | this.registerEvent(this.app.vault.on("rename", () => { 181 | // small delay is needed, otherwise the new folder won't get picked-up yet when calling processFolders 182 | window.setTimeout(() => { 183 | this.processFolders(); 184 | }, 10); 185 | })); 186 | 187 | this.app.workspace.onLayoutReady(() => { 188 | if(!this.settings.areFoldersHidden) return; 189 | window.setTimeout(() => { 190 | this.processFolders(); 191 | }, 1000); 192 | }); 193 | } 194 | 195 | onunload() { 196 | this.mutationObserver.disconnect(); 197 | } 198 | 199 | async loadSettings() { 200 | this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); 201 | } 202 | 203 | async saveSettings() { 204 | await this.saveData(this.settings); 205 | await this.processFolders(true); 206 | } 207 | } 208 | 209 | class HideFoldersPluginSettingTab extends PluginSettingTab { 210 | plugin: HideFoldersPlugin; 211 | 212 | constructor(app: App, plugin: HideFoldersPlugin) { 213 | super(app, plugin); 214 | this.plugin = plugin; 215 | } 216 | 217 | display(): void { 218 | const {containerEl} = this; 219 | containerEl.empty(); 220 | 221 | const experimentalSettingsContainerEl = document.createElement("details"); 222 | const experimentalSettingsTitleEl = document.createElement("summary"); 223 | experimentalSettingsTitleEl.innerText = "Experimental & Unstable Settings"; 224 | experimentalSettingsContainerEl.appendChild(experimentalSettingsTitleEl); 225 | 226 | new Setting(containerEl) 227 | .setName("Folders to hide") 228 | .setDesc("The names of the folders to hide, one per line. Either exact folder-names, startsWith::FOLDERPREFIX, or endsWith::FOLDERSUFFIX") 229 | .addTextArea(text => text 230 | .setPlaceholder("attachments\nendsWith::_attachments") 231 | .setValue(this.plugin.settings.attachmentFolderNames.join("\n")) 232 | .onChange(async (value) => { 233 | const newSettingsValue = value.split("\n"); 234 | // remove removed folders from exclude list too 235 | await this.plugin.removeSpecificFoldersFromObsidianIgnoreList(this.plugin.settings.attachmentFolderNames.filter(e => !newSettingsValue.includes(e))); 236 | this.plugin.settings.attachmentFolderNames = newSettingsValue; 237 | await this.plugin.saveSettings(); 238 | await this.plugin.updateObsidianIgnoreList(); 239 | })); 240 | 241 | new Setting(containerEl) 242 | .setName("Ignore Upper/lowercase") 243 | .setDesc("If enabled, 'SOMEFOLDER', 'someFolder', or 'sOmeFoldEr' will all be treated the same and matched.") 244 | .addToggle(toggle => toggle 245 | .setValue(this.plugin.settings.matchCaseInsensitive) 246 | .onChange(async (value) => { 247 | // remove all folders and re-add them later in the update function 248 | await this.plugin.removeSpecificFoldersFromObsidianIgnoreList(this.plugin.settings.attachmentFolderNames); 249 | this.plugin.settings.matchCaseInsensitive = value; 250 | await this.plugin.saveSettings(); 251 | await this.plugin.updateObsidianIgnoreList(); 252 | })); 253 | 254 | new Setting(containerEl) 255 | .setName("Hide folders") 256 | .setDesc("If the configured folders should be hidden or not") 257 | .addToggle(toggle => toggle 258 | .setValue(this.plugin.settings.areFoldersHidden) 259 | .onChange(async (value) => { 260 | this.plugin.settings.areFoldersHidden = value; 261 | await this.plugin.saveSettings(); 262 | await this.plugin.updateObsidianIgnoreList(); 263 | })); 264 | 265 | new Setting(containerEl) 266 | .setName("Add Hidden Folders to Obsidian Exclusion-List") 267 | .setDesc("Excluded files will be hidden in Search, Graph View, and Unlinked Mentions, less noticeable in Quick Switcher and link suggestions.") 268 | .addToggle(toggle => toggle 269 | .setValue(this.plugin.settings.addHiddenFoldersToObsidianIgnoreList) 270 | .onChange(async (value) => { 271 | this.plugin.settings.addHiddenFoldersToObsidianIgnoreList = value; 272 | await this.plugin.saveSettings(); 273 | await this.plugin.updateObsidianIgnoreList(!value); 274 | })); 275 | 276 | new Setting(containerEl) 277 | .setName("Hide bottom status-bar \"Folders are Hidden\" indicator") 278 | .setDesc("If enable there will be no bottom-bar indicator-text telling you if this plugin is active.") 279 | .addToggle(toggle => toggle 280 | .setValue(this.plugin.settings.hideBottomStatusBarIndicatorText) 281 | .onChange(async (value) => { 282 | this.plugin.settings.hideBottomStatusBarIndicatorText = value; 283 | if(value) { 284 | this.plugin.statusBarItem?.remove(); 285 | this.plugin.statusBarItem = undefined; 286 | } else { 287 | this.plugin.createBottomStatusBarIndicatorTextItem(); 288 | } 289 | await this.plugin.saveSettings(); 290 | })); 291 | 292 | new Setting(experimentalSettingsContainerEl) 293 | .setName("[EXPERIMENTAL] Compatibility: quick-explorer by pjeby") 294 | .setDesc("[WARNING: UNSTABLE] Also hide hidden folders in the https://github.com/pjeby/quick-explorer plugin. Not affiliated with quick-explorer's author.") 295 | .addToggle(toggle => toggle 296 | .setValue(this.plugin.settings.enableCompatQuickExplorer) 297 | .onChange(async (value) => { 298 | this.plugin.settings.enableCompatQuickExplorer = value; 299 | await this.plugin.saveSettings(); 300 | })); 301 | 302 | containerEl.appendChild(document.createElement("br")); 303 | 304 | new Setting(containerEl) 305 | .setName("GitHub") 306 | .setDesc("Report Issues or Ideas, see the Source Code and Contribute.") 307 | .addButton(button => button 308 | .buttonEl.innerHTML = 'obsidian-hide-folders' 309 | ); 310 | 311 | new Setting(containerEl) 312 | .setName("Donate") 313 | .setDesc("If you like this open-source plugin, consider a small tip to support my unpaid work.") 314 | .addButton((button) => button 315 | .buttonEl.outerHTML = "Buy Me A Coffee" 316 | ); 317 | 318 | containerEl.appendChild(document.createElement("br")); 319 | containerEl.appendChild(experimentalSettingsContainerEl); 320 | } 321 | } 322 | 323 | export function getFolderNameWithoutPrefix(folderName: string) { 324 | if (folderName.toLowerCase().startsWith("endswith::")) { 325 | return folderName.substring("endsWith::".length).trim(); 326 | } else if (folderName.toLowerCase().startsWith("startswith::")) { 327 | return folderName.substring("startsWith::".length).trim(); 328 | } else { 329 | return folderName; 330 | } 331 | } 332 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "hide-folders", 3 | "name": "Hide Folders", 4 | "version": "1.5.1", 5 | "minAppVersion": "0.15.0", 6 | "description": "Hides & Toggles configured folders (e.g. attachments folders).", 7 | "author": "JonasDoesThings", 8 | "authorUrl": "https://jonasdoesthings.com/", 9 | "fundingUrl": "https://www.buymeacoffee.com/jonasdoesthings", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-hide-folders", 3 | "version": "1.5.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "obsidian-hide-folders", 9 | "version": "1.5.1", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@types/node": "^20.14.9", 13 | "@typescript-eslint/eslint-plugin": "7.14.1", 14 | "@typescript-eslint/parser": "7.14.1", 15 | "builtin-modules": "4.0.0", 16 | "esbuild": "0.21.5", 17 | "obsidian": "latest", 18 | "tslib": "2.6.3", 19 | "typescript": "5.5.2" 20 | } 21 | }, 22 | "node_modules/@codemirror/state": { 23 | "version": "6.1.4", 24 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", 25 | "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", 26 | "dev": true, 27 | "peer": true 28 | }, 29 | "node_modules/@codemirror/view": { 30 | "version": "6.5.1", 31 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.5.1.tgz", 32 | "integrity": "sha512-xBKP8N3AXOs06VcKvIuvIQoUlGs7Hb78ftJWahLaRX909jKPMgGxR5XjvrawzTTZMSTU3DzdjDNPwG6fPM/ypQ==", 33 | "dev": true, 34 | "peer": true, 35 | "dependencies": { 36 | "@codemirror/state": "^6.1.4", 37 | "style-mod": "^4.0.0", 38 | "w3c-keyname": "^2.2.4" 39 | } 40 | }, 41 | "node_modules/@esbuild/aix-ppc64": { 42 | "version": "0.21.5", 43 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 44 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 45 | "cpu": [ 46 | "ppc64" 47 | ], 48 | "dev": true, 49 | "optional": true, 50 | "os": [ 51 | "aix" 52 | ], 53 | "engines": { 54 | "node": ">=12" 55 | } 56 | }, 57 | "node_modules/@esbuild/android-arm": { 58 | "version": "0.21.5", 59 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 60 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 61 | "cpu": [ 62 | "arm" 63 | ], 64 | "dev": true, 65 | "optional": true, 66 | "os": [ 67 | "android" 68 | ], 69 | "engines": { 70 | "node": ">=12" 71 | } 72 | }, 73 | "node_modules/@esbuild/android-arm64": { 74 | "version": "0.21.5", 75 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 76 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 77 | "cpu": [ 78 | "arm64" 79 | ], 80 | "dev": true, 81 | "optional": true, 82 | "os": [ 83 | "android" 84 | ], 85 | "engines": { 86 | "node": ">=12" 87 | } 88 | }, 89 | "node_modules/@esbuild/android-x64": { 90 | "version": "0.21.5", 91 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 92 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 93 | "cpu": [ 94 | "x64" 95 | ], 96 | "dev": true, 97 | "optional": true, 98 | "os": [ 99 | "android" 100 | ], 101 | "engines": { 102 | "node": ">=12" 103 | } 104 | }, 105 | "node_modules/@esbuild/darwin-arm64": { 106 | "version": "0.21.5", 107 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 108 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 109 | "cpu": [ 110 | "arm64" 111 | ], 112 | "dev": true, 113 | "optional": true, 114 | "os": [ 115 | "darwin" 116 | ], 117 | "engines": { 118 | "node": ">=12" 119 | } 120 | }, 121 | "node_modules/@esbuild/darwin-x64": { 122 | "version": "0.21.5", 123 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 124 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 125 | "cpu": [ 126 | "x64" 127 | ], 128 | "dev": true, 129 | "optional": true, 130 | "os": [ 131 | "darwin" 132 | ], 133 | "engines": { 134 | "node": ">=12" 135 | } 136 | }, 137 | "node_modules/@esbuild/freebsd-arm64": { 138 | "version": "0.21.5", 139 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 140 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 141 | "cpu": [ 142 | "arm64" 143 | ], 144 | "dev": true, 145 | "optional": true, 146 | "os": [ 147 | "freebsd" 148 | ], 149 | "engines": { 150 | "node": ">=12" 151 | } 152 | }, 153 | "node_modules/@esbuild/freebsd-x64": { 154 | "version": "0.21.5", 155 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 156 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 157 | "cpu": [ 158 | "x64" 159 | ], 160 | "dev": true, 161 | "optional": true, 162 | "os": [ 163 | "freebsd" 164 | ], 165 | "engines": { 166 | "node": ">=12" 167 | } 168 | }, 169 | "node_modules/@esbuild/linux-arm": { 170 | "version": "0.21.5", 171 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 172 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 173 | "cpu": [ 174 | "arm" 175 | ], 176 | "dev": true, 177 | "optional": true, 178 | "os": [ 179 | "linux" 180 | ], 181 | "engines": { 182 | "node": ">=12" 183 | } 184 | }, 185 | "node_modules/@esbuild/linux-arm64": { 186 | "version": "0.21.5", 187 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 188 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 189 | "cpu": [ 190 | "arm64" 191 | ], 192 | "dev": true, 193 | "optional": true, 194 | "os": [ 195 | "linux" 196 | ], 197 | "engines": { 198 | "node": ">=12" 199 | } 200 | }, 201 | "node_modules/@esbuild/linux-ia32": { 202 | "version": "0.21.5", 203 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 204 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 205 | "cpu": [ 206 | "ia32" 207 | ], 208 | "dev": true, 209 | "optional": true, 210 | "os": [ 211 | "linux" 212 | ], 213 | "engines": { 214 | "node": ">=12" 215 | } 216 | }, 217 | "node_modules/@esbuild/linux-loong64": { 218 | "version": "0.21.5", 219 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 220 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 221 | "cpu": [ 222 | "loong64" 223 | ], 224 | "dev": true, 225 | "optional": true, 226 | "os": [ 227 | "linux" 228 | ], 229 | "engines": { 230 | "node": ">=12" 231 | } 232 | }, 233 | "node_modules/@esbuild/linux-mips64el": { 234 | "version": "0.21.5", 235 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 236 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 237 | "cpu": [ 238 | "mips64el" 239 | ], 240 | "dev": true, 241 | "optional": true, 242 | "os": [ 243 | "linux" 244 | ], 245 | "engines": { 246 | "node": ">=12" 247 | } 248 | }, 249 | "node_modules/@esbuild/linux-ppc64": { 250 | "version": "0.21.5", 251 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 252 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 253 | "cpu": [ 254 | "ppc64" 255 | ], 256 | "dev": true, 257 | "optional": true, 258 | "os": [ 259 | "linux" 260 | ], 261 | "engines": { 262 | "node": ">=12" 263 | } 264 | }, 265 | "node_modules/@esbuild/linux-riscv64": { 266 | "version": "0.21.5", 267 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 268 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 269 | "cpu": [ 270 | "riscv64" 271 | ], 272 | "dev": true, 273 | "optional": true, 274 | "os": [ 275 | "linux" 276 | ], 277 | "engines": { 278 | "node": ">=12" 279 | } 280 | }, 281 | "node_modules/@esbuild/linux-s390x": { 282 | "version": "0.21.5", 283 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 284 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 285 | "cpu": [ 286 | "s390x" 287 | ], 288 | "dev": true, 289 | "optional": true, 290 | "os": [ 291 | "linux" 292 | ], 293 | "engines": { 294 | "node": ">=12" 295 | } 296 | }, 297 | "node_modules/@esbuild/linux-x64": { 298 | "version": "0.21.5", 299 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 300 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 301 | "cpu": [ 302 | "x64" 303 | ], 304 | "dev": true, 305 | "optional": true, 306 | "os": [ 307 | "linux" 308 | ], 309 | "engines": { 310 | "node": ">=12" 311 | } 312 | }, 313 | "node_modules/@esbuild/netbsd-x64": { 314 | "version": "0.21.5", 315 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 316 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 317 | "cpu": [ 318 | "x64" 319 | ], 320 | "dev": true, 321 | "optional": true, 322 | "os": [ 323 | "netbsd" 324 | ], 325 | "engines": { 326 | "node": ">=12" 327 | } 328 | }, 329 | "node_modules/@esbuild/openbsd-x64": { 330 | "version": "0.21.5", 331 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 332 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 333 | "cpu": [ 334 | "x64" 335 | ], 336 | "dev": true, 337 | "optional": true, 338 | "os": [ 339 | "openbsd" 340 | ], 341 | "engines": { 342 | "node": ">=12" 343 | } 344 | }, 345 | "node_modules/@esbuild/sunos-x64": { 346 | "version": "0.21.5", 347 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 348 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 349 | "cpu": [ 350 | "x64" 351 | ], 352 | "dev": true, 353 | "optional": true, 354 | "os": [ 355 | "sunos" 356 | ], 357 | "engines": { 358 | "node": ">=12" 359 | } 360 | }, 361 | "node_modules/@esbuild/win32-arm64": { 362 | "version": "0.21.5", 363 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 364 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 365 | "cpu": [ 366 | "arm64" 367 | ], 368 | "dev": true, 369 | "optional": true, 370 | "os": [ 371 | "win32" 372 | ], 373 | "engines": { 374 | "node": ">=12" 375 | } 376 | }, 377 | "node_modules/@esbuild/win32-ia32": { 378 | "version": "0.21.5", 379 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 380 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 381 | "cpu": [ 382 | "ia32" 383 | ], 384 | "dev": true, 385 | "optional": true, 386 | "os": [ 387 | "win32" 388 | ], 389 | "engines": { 390 | "node": ">=12" 391 | } 392 | }, 393 | "node_modules/@esbuild/win32-x64": { 394 | "version": "0.21.5", 395 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 396 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 397 | "cpu": [ 398 | "x64" 399 | ], 400 | "dev": true, 401 | "optional": true, 402 | "os": [ 403 | "win32" 404 | ], 405 | "engines": { 406 | "node": ">=12" 407 | } 408 | }, 409 | "node_modules/@eslint-community/eslint-utils": { 410 | "version": "4.4.0", 411 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 412 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 413 | "dev": true, 414 | "dependencies": { 415 | "eslint-visitor-keys": "^3.3.0" 416 | }, 417 | "engines": { 418 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 419 | }, 420 | "peerDependencies": { 421 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 422 | } 423 | }, 424 | "node_modules/@eslint-community/regexpp": { 425 | "version": "4.11.0", 426 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", 427 | "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", 428 | "dev": true, 429 | "engines": { 430 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 431 | } 432 | }, 433 | "node_modules/@eslint/eslintrc": { 434 | "version": "2.1.4", 435 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 436 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 437 | "dev": true, 438 | "peer": true, 439 | "dependencies": { 440 | "ajv": "^6.12.4", 441 | "debug": "^4.3.2", 442 | "espree": "^9.6.0", 443 | "globals": "^13.19.0", 444 | "ignore": "^5.2.0", 445 | "import-fresh": "^3.2.1", 446 | "js-yaml": "^4.1.0", 447 | "minimatch": "^3.1.2", 448 | "strip-json-comments": "^3.1.1" 449 | }, 450 | "engines": { 451 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 452 | }, 453 | "funding": { 454 | "url": "https://opencollective.com/eslint" 455 | } 456 | }, 457 | "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { 458 | "version": "1.1.11", 459 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 460 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 461 | "dev": true, 462 | "peer": true, 463 | "dependencies": { 464 | "balanced-match": "^1.0.0", 465 | "concat-map": "0.0.1" 466 | } 467 | }, 468 | "node_modules/@eslint/eslintrc/node_modules/minimatch": { 469 | "version": "3.1.2", 470 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 471 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 472 | "dev": true, 473 | "peer": true, 474 | "dependencies": { 475 | "brace-expansion": "^1.1.7" 476 | }, 477 | "engines": { 478 | "node": "*" 479 | } 480 | }, 481 | "node_modules/@eslint/js": { 482 | "version": "8.57.0", 483 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 484 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 485 | "dev": true, 486 | "peer": true, 487 | "engines": { 488 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 489 | } 490 | }, 491 | "node_modules/@humanwhocodes/config-array": { 492 | "version": "0.11.14", 493 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 494 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 495 | "deprecated": "Use @eslint/config-array instead", 496 | "dev": true, 497 | "peer": true, 498 | "dependencies": { 499 | "@humanwhocodes/object-schema": "^2.0.2", 500 | "debug": "^4.3.1", 501 | "minimatch": "^3.0.5" 502 | }, 503 | "engines": { 504 | "node": ">=10.10.0" 505 | } 506 | }, 507 | "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { 508 | "version": "1.1.11", 509 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 510 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 511 | "dev": true, 512 | "peer": true, 513 | "dependencies": { 514 | "balanced-match": "^1.0.0", 515 | "concat-map": "0.0.1" 516 | } 517 | }, 518 | "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { 519 | "version": "3.1.2", 520 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 521 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 522 | "dev": true, 523 | "peer": true, 524 | "dependencies": { 525 | "brace-expansion": "^1.1.7" 526 | }, 527 | "engines": { 528 | "node": "*" 529 | } 530 | }, 531 | "node_modules/@humanwhocodes/module-importer": { 532 | "version": "1.0.1", 533 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 534 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 535 | "dev": true, 536 | "peer": true, 537 | "engines": { 538 | "node": ">=12.22" 539 | }, 540 | "funding": { 541 | "type": "github", 542 | "url": "https://github.com/sponsors/nzakas" 543 | } 544 | }, 545 | "node_modules/@humanwhocodes/object-schema": { 546 | "version": "2.0.3", 547 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 548 | "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 549 | "deprecated": "Use @eslint/object-schema instead", 550 | "dev": true, 551 | "peer": true 552 | }, 553 | "node_modules/@nodelib/fs.scandir": { 554 | "version": "2.1.5", 555 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 556 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 557 | "dev": true, 558 | "dependencies": { 559 | "@nodelib/fs.stat": "2.0.5", 560 | "run-parallel": "^1.1.9" 561 | }, 562 | "engines": { 563 | "node": ">= 8" 564 | } 565 | }, 566 | "node_modules/@nodelib/fs.stat": { 567 | "version": "2.0.5", 568 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 569 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 570 | "dev": true, 571 | "engines": { 572 | "node": ">= 8" 573 | } 574 | }, 575 | "node_modules/@nodelib/fs.walk": { 576 | "version": "1.2.8", 577 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 578 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 579 | "dev": true, 580 | "dependencies": { 581 | "@nodelib/fs.scandir": "2.1.5", 582 | "fastq": "^1.6.0" 583 | }, 584 | "engines": { 585 | "node": ">= 8" 586 | } 587 | }, 588 | "node_modules/@types/codemirror": { 589 | "version": "0.0.108", 590 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 591 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 592 | "dev": true, 593 | "dependencies": { 594 | "@types/tern": "*" 595 | } 596 | }, 597 | "node_modules/@types/estree": { 598 | "version": "1.0.0", 599 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 600 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 601 | "dev": true 602 | }, 603 | "node_modules/@types/node": { 604 | "version": "20.14.9", 605 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", 606 | "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", 607 | "dev": true, 608 | "dependencies": { 609 | "undici-types": "~5.26.4" 610 | } 611 | }, 612 | "node_modules/@types/tern": { 613 | "version": "0.23.4", 614 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 615 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 616 | "dev": true, 617 | "dependencies": { 618 | "@types/estree": "*" 619 | } 620 | }, 621 | "node_modules/@typescript-eslint/eslint-plugin": { 622 | "version": "7.14.1", 623 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", 624 | "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", 625 | "dev": true, 626 | "dependencies": { 627 | "@eslint-community/regexpp": "^4.10.0", 628 | "@typescript-eslint/scope-manager": "7.14.1", 629 | "@typescript-eslint/type-utils": "7.14.1", 630 | "@typescript-eslint/utils": "7.14.1", 631 | "@typescript-eslint/visitor-keys": "7.14.1", 632 | "graphemer": "^1.4.0", 633 | "ignore": "^5.3.1", 634 | "natural-compare": "^1.4.0", 635 | "ts-api-utils": "^1.3.0" 636 | }, 637 | "engines": { 638 | "node": "^18.18.0 || >=20.0.0" 639 | }, 640 | "funding": { 641 | "type": "opencollective", 642 | "url": "https://opencollective.com/typescript-eslint" 643 | }, 644 | "peerDependencies": { 645 | "@typescript-eslint/parser": "^7.0.0", 646 | "eslint": "^8.56.0" 647 | }, 648 | "peerDependenciesMeta": { 649 | "typescript": { 650 | "optional": true 651 | } 652 | } 653 | }, 654 | "node_modules/@typescript-eslint/parser": { 655 | "version": "7.14.1", 656 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", 657 | "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", 658 | "dev": true, 659 | "dependencies": { 660 | "@typescript-eslint/scope-manager": "7.14.1", 661 | "@typescript-eslint/types": "7.14.1", 662 | "@typescript-eslint/typescript-estree": "7.14.1", 663 | "@typescript-eslint/visitor-keys": "7.14.1", 664 | "debug": "^4.3.4" 665 | }, 666 | "engines": { 667 | "node": "^18.18.0 || >=20.0.0" 668 | }, 669 | "funding": { 670 | "type": "opencollective", 671 | "url": "https://opencollective.com/typescript-eslint" 672 | }, 673 | "peerDependencies": { 674 | "eslint": "^8.56.0" 675 | }, 676 | "peerDependenciesMeta": { 677 | "typescript": { 678 | "optional": true 679 | } 680 | } 681 | }, 682 | "node_modules/@typescript-eslint/scope-manager": { 683 | "version": "7.14.1", 684 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", 685 | "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", 686 | "dev": true, 687 | "dependencies": { 688 | "@typescript-eslint/types": "7.14.1", 689 | "@typescript-eslint/visitor-keys": "7.14.1" 690 | }, 691 | "engines": { 692 | "node": "^18.18.0 || >=20.0.0" 693 | }, 694 | "funding": { 695 | "type": "opencollective", 696 | "url": "https://opencollective.com/typescript-eslint" 697 | } 698 | }, 699 | "node_modules/@typescript-eslint/type-utils": { 700 | "version": "7.14.1", 701 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", 702 | "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", 703 | "dev": true, 704 | "dependencies": { 705 | "@typescript-eslint/typescript-estree": "7.14.1", 706 | "@typescript-eslint/utils": "7.14.1", 707 | "debug": "^4.3.4", 708 | "ts-api-utils": "^1.3.0" 709 | }, 710 | "engines": { 711 | "node": "^18.18.0 || >=20.0.0" 712 | }, 713 | "funding": { 714 | "type": "opencollective", 715 | "url": "https://opencollective.com/typescript-eslint" 716 | }, 717 | "peerDependencies": { 718 | "eslint": "^8.56.0" 719 | }, 720 | "peerDependenciesMeta": { 721 | "typescript": { 722 | "optional": true 723 | } 724 | } 725 | }, 726 | "node_modules/@typescript-eslint/types": { 727 | "version": "7.14.1", 728 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", 729 | "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", 730 | "dev": true, 731 | "engines": { 732 | "node": "^18.18.0 || >=20.0.0" 733 | }, 734 | "funding": { 735 | "type": "opencollective", 736 | "url": "https://opencollective.com/typescript-eslint" 737 | } 738 | }, 739 | "node_modules/@typescript-eslint/typescript-estree": { 740 | "version": "7.14.1", 741 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", 742 | "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", 743 | "dev": true, 744 | "dependencies": { 745 | "@typescript-eslint/types": "7.14.1", 746 | "@typescript-eslint/visitor-keys": "7.14.1", 747 | "debug": "^4.3.4", 748 | "globby": "^11.1.0", 749 | "is-glob": "^4.0.3", 750 | "minimatch": "^9.0.4", 751 | "semver": "^7.6.0", 752 | "ts-api-utils": "^1.3.0" 753 | }, 754 | "engines": { 755 | "node": "^18.18.0 || >=20.0.0" 756 | }, 757 | "funding": { 758 | "type": "opencollective", 759 | "url": "https://opencollective.com/typescript-eslint" 760 | }, 761 | "peerDependenciesMeta": { 762 | "typescript": { 763 | "optional": true 764 | } 765 | } 766 | }, 767 | "node_modules/@typescript-eslint/utils": { 768 | "version": "7.14.1", 769 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", 770 | "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", 771 | "dev": true, 772 | "dependencies": { 773 | "@eslint-community/eslint-utils": "^4.4.0", 774 | "@typescript-eslint/scope-manager": "7.14.1", 775 | "@typescript-eslint/types": "7.14.1", 776 | "@typescript-eslint/typescript-estree": "7.14.1" 777 | }, 778 | "engines": { 779 | "node": "^18.18.0 || >=20.0.0" 780 | }, 781 | "funding": { 782 | "type": "opencollective", 783 | "url": "https://opencollective.com/typescript-eslint" 784 | }, 785 | "peerDependencies": { 786 | "eslint": "^8.56.0" 787 | } 788 | }, 789 | "node_modules/@typescript-eslint/visitor-keys": { 790 | "version": "7.14.1", 791 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", 792 | "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", 793 | "dev": true, 794 | "dependencies": { 795 | "@typescript-eslint/types": "7.14.1", 796 | "eslint-visitor-keys": "^3.4.3" 797 | }, 798 | "engines": { 799 | "node": "^18.18.0 || >=20.0.0" 800 | }, 801 | "funding": { 802 | "type": "opencollective", 803 | "url": "https://opencollective.com/typescript-eslint" 804 | } 805 | }, 806 | "node_modules/@ungap/structured-clone": { 807 | "version": "1.2.0", 808 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 809 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 810 | "dev": true, 811 | "peer": true 812 | }, 813 | "node_modules/acorn": { 814 | "version": "8.12.0", 815 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", 816 | "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", 817 | "dev": true, 818 | "peer": true, 819 | "bin": { 820 | "acorn": "bin/acorn" 821 | }, 822 | "engines": { 823 | "node": ">=0.4.0" 824 | } 825 | }, 826 | "node_modules/acorn-jsx": { 827 | "version": "5.3.2", 828 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 829 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 830 | "dev": true, 831 | "peer": true, 832 | "peerDependencies": { 833 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 834 | } 835 | }, 836 | "node_modules/ajv": { 837 | "version": "6.12.6", 838 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 839 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 840 | "dev": true, 841 | "peer": true, 842 | "dependencies": { 843 | "fast-deep-equal": "^3.1.1", 844 | "fast-json-stable-stringify": "^2.0.0", 845 | "json-schema-traverse": "^0.4.1", 846 | "uri-js": "^4.2.2" 847 | }, 848 | "funding": { 849 | "type": "github", 850 | "url": "https://github.com/sponsors/epoberezkin" 851 | } 852 | }, 853 | "node_modules/ansi-regex": { 854 | "version": "5.0.1", 855 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 856 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 857 | "dev": true, 858 | "peer": true, 859 | "engines": { 860 | "node": ">=8" 861 | } 862 | }, 863 | "node_modules/ansi-styles": { 864 | "version": "4.3.0", 865 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 866 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 867 | "dev": true, 868 | "peer": true, 869 | "dependencies": { 870 | "color-convert": "^2.0.1" 871 | }, 872 | "engines": { 873 | "node": ">=8" 874 | }, 875 | "funding": { 876 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 877 | } 878 | }, 879 | "node_modules/argparse": { 880 | "version": "2.0.1", 881 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 882 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 883 | "dev": true, 884 | "peer": true 885 | }, 886 | "node_modules/array-union": { 887 | "version": "2.1.0", 888 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 889 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 890 | "dev": true, 891 | "engines": { 892 | "node": ">=8" 893 | } 894 | }, 895 | "node_modules/balanced-match": { 896 | "version": "1.0.2", 897 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 898 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 899 | "dev": true 900 | }, 901 | "node_modules/brace-expansion": { 902 | "version": "2.0.1", 903 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 904 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 905 | "dev": true, 906 | "dependencies": { 907 | "balanced-match": "^1.0.0" 908 | } 909 | }, 910 | "node_modules/braces": { 911 | "version": "3.0.3", 912 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 913 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 914 | "dev": true, 915 | "dependencies": { 916 | "fill-range": "^7.1.1" 917 | }, 918 | "engines": { 919 | "node": ">=8" 920 | } 921 | }, 922 | "node_modules/builtin-modules": { 923 | "version": "4.0.0", 924 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", 925 | "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", 926 | "dev": true, 927 | "engines": { 928 | "node": ">=18.20" 929 | }, 930 | "funding": { 931 | "url": "https://github.com/sponsors/sindresorhus" 932 | } 933 | }, 934 | "node_modules/callsites": { 935 | "version": "3.1.0", 936 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 937 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 938 | "dev": true, 939 | "peer": true, 940 | "engines": { 941 | "node": ">=6" 942 | } 943 | }, 944 | "node_modules/chalk": { 945 | "version": "4.1.2", 946 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 947 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 948 | "dev": true, 949 | "peer": true, 950 | "dependencies": { 951 | "ansi-styles": "^4.1.0", 952 | "supports-color": "^7.1.0" 953 | }, 954 | "engines": { 955 | "node": ">=10" 956 | }, 957 | "funding": { 958 | "url": "https://github.com/chalk/chalk?sponsor=1" 959 | } 960 | }, 961 | "node_modules/color-convert": { 962 | "version": "2.0.1", 963 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 964 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 965 | "dev": true, 966 | "peer": true, 967 | "dependencies": { 968 | "color-name": "~1.1.4" 969 | }, 970 | "engines": { 971 | "node": ">=7.0.0" 972 | } 973 | }, 974 | "node_modules/color-name": { 975 | "version": "1.1.4", 976 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 977 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 978 | "dev": true, 979 | "peer": true 980 | }, 981 | "node_modules/concat-map": { 982 | "version": "0.0.1", 983 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 984 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 985 | "dev": true, 986 | "peer": true 987 | }, 988 | "node_modules/cross-spawn": { 989 | "version": "7.0.3", 990 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 991 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 992 | "dev": true, 993 | "peer": true, 994 | "dependencies": { 995 | "path-key": "^3.1.0", 996 | "shebang-command": "^2.0.0", 997 | "which": "^2.0.1" 998 | }, 999 | "engines": { 1000 | "node": ">= 8" 1001 | } 1002 | }, 1003 | "node_modules/debug": { 1004 | "version": "4.3.5", 1005 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 1006 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 1007 | "dev": true, 1008 | "dependencies": { 1009 | "ms": "2.1.2" 1010 | }, 1011 | "engines": { 1012 | "node": ">=6.0" 1013 | }, 1014 | "peerDependenciesMeta": { 1015 | "supports-color": { 1016 | "optional": true 1017 | } 1018 | } 1019 | }, 1020 | "node_modules/deep-is": { 1021 | "version": "0.1.4", 1022 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1023 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1024 | "dev": true, 1025 | "peer": true 1026 | }, 1027 | "node_modules/dir-glob": { 1028 | "version": "3.0.1", 1029 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1030 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1031 | "dev": true, 1032 | "dependencies": { 1033 | "path-type": "^4.0.0" 1034 | }, 1035 | "engines": { 1036 | "node": ">=8" 1037 | } 1038 | }, 1039 | "node_modules/doctrine": { 1040 | "version": "3.0.0", 1041 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1042 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1043 | "dev": true, 1044 | "peer": true, 1045 | "dependencies": { 1046 | "esutils": "^2.0.2" 1047 | }, 1048 | "engines": { 1049 | "node": ">=6.0.0" 1050 | } 1051 | }, 1052 | "node_modules/esbuild": { 1053 | "version": "0.21.5", 1054 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 1055 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 1056 | "dev": true, 1057 | "hasInstallScript": true, 1058 | "bin": { 1059 | "esbuild": "bin/esbuild" 1060 | }, 1061 | "engines": { 1062 | "node": ">=12" 1063 | }, 1064 | "optionalDependencies": { 1065 | "@esbuild/aix-ppc64": "0.21.5", 1066 | "@esbuild/android-arm": "0.21.5", 1067 | "@esbuild/android-arm64": "0.21.5", 1068 | "@esbuild/android-x64": "0.21.5", 1069 | "@esbuild/darwin-arm64": "0.21.5", 1070 | "@esbuild/darwin-x64": "0.21.5", 1071 | "@esbuild/freebsd-arm64": "0.21.5", 1072 | "@esbuild/freebsd-x64": "0.21.5", 1073 | "@esbuild/linux-arm": "0.21.5", 1074 | "@esbuild/linux-arm64": "0.21.5", 1075 | "@esbuild/linux-ia32": "0.21.5", 1076 | "@esbuild/linux-loong64": "0.21.5", 1077 | "@esbuild/linux-mips64el": "0.21.5", 1078 | "@esbuild/linux-ppc64": "0.21.5", 1079 | "@esbuild/linux-riscv64": "0.21.5", 1080 | "@esbuild/linux-s390x": "0.21.5", 1081 | "@esbuild/linux-x64": "0.21.5", 1082 | "@esbuild/netbsd-x64": "0.21.5", 1083 | "@esbuild/openbsd-x64": "0.21.5", 1084 | "@esbuild/sunos-x64": "0.21.5", 1085 | "@esbuild/win32-arm64": "0.21.5", 1086 | "@esbuild/win32-ia32": "0.21.5", 1087 | "@esbuild/win32-x64": "0.21.5" 1088 | } 1089 | }, 1090 | "node_modules/escape-string-regexp": { 1091 | "version": "4.0.0", 1092 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1093 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1094 | "dev": true, 1095 | "peer": true, 1096 | "engines": { 1097 | "node": ">=10" 1098 | }, 1099 | "funding": { 1100 | "url": "https://github.com/sponsors/sindresorhus" 1101 | } 1102 | }, 1103 | "node_modules/eslint": { 1104 | "version": "8.57.0", 1105 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 1106 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 1107 | "dev": true, 1108 | "peer": true, 1109 | "dependencies": { 1110 | "@eslint-community/eslint-utils": "^4.2.0", 1111 | "@eslint-community/regexpp": "^4.6.1", 1112 | "@eslint/eslintrc": "^2.1.4", 1113 | "@eslint/js": "8.57.0", 1114 | "@humanwhocodes/config-array": "^0.11.14", 1115 | "@humanwhocodes/module-importer": "^1.0.1", 1116 | "@nodelib/fs.walk": "^1.2.8", 1117 | "@ungap/structured-clone": "^1.2.0", 1118 | "ajv": "^6.12.4", 1119 | "chalk": "^4.0.0", 1120 | "cross-spawn": "^7.0.2", 1121 | "debug": "^4.3.2", 1122 | "doctrine": "^3.0.0", 1123 | "escape-string-regexp": "^4.0.0", 1124 | "eslint-scope": "^7.2.2", 1125 | "eslint-visitor-keys": "^3.4.3", 1126 | "espree": "^9.6.1", 1127 | "esquery": "^1.4.2", 1128 | "esutils": "^2.0.2", 1129 | "fast-deep-equal": "^3.1.3", 1130 | "file-entry-cache": "^6.0.1", 1131 | "find-up": "^5.0.0", 1132 | "glob-parent": "^6.0.2", 1133 | "globals": "^13.19.0", 1134 | "graphemer": "^1.4.0", 1135 | "ignore": "^5.2.0", 1136 | "imurmurhash": "^0.1.4", 1137 | "is-glob": "^4.0.0", 1138 | "is-path-inside": "^3.0.3", 1139 | "js-yaml": "^4.1.0", 1140 | "json-stable-stringify-without-jsonify": "^1.0.1", 1141 | "levn": "^0.4.1", 1142 | "lodash.merge": "^4.6.2", 1143 | "minimatch": "^3.1.2", 1144 | "natural-compare": "^1.4.0", 1145 | "optionator": "^0.9.3", 1146 | "strip-ansi": "^6.0.1", 1147 | "text-table": "^0.2.0" 1148 | }, 1149 | "bin": { 1150 | "eslint": "bin/eslint.js" 1151 | }, 1152 | "engines": { 1153 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1154 | }, 1155 | "funding": { 1156 | "url": "https://opencollective.com/eslint" 1157 | } 1158 | }, 1159 | "node_modules/eslint-scope": { 1160 | "version": "7.2.2", 1161 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 1162 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 1163 | "dev": true, 1164 | "peer": true, 1165 | "dependencies": { 1166 | "esrecurse": "^4.3.0", 1167 | "estraverse": "^5.2.0" 1168 | }, 1169 | "engines": { 1170 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1171 | }, 1172 | "funding": { 1173 | "url": "https://opencollective.com/eslint" 1174 | } 1175 | }, 1176 | "node_modules/eslint-visitor-keys": { 1177 | "version": "3.4.3", 1178 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1179 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1180 | "dev": true, 1181 | "engines": { 1182 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1183 | }, 1184 | "funding": { 1185 | "url": "https://opencollective.com/eslint" 1186 | } 1187 | }, 1188 | "node_modules/eslint/node_modules/brace-expansion": { 1189 | "version": "1.1.11", 1190 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1191 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1192 | "dev": true, 1193 | "peer": true, 1194 | "dependencies": { 1195 | "balanced-match": "^1.0.0", 1196 | "concat-map": "0.0.1" 1197 | } 1198 | }, 1199 | "node_modules/eslint/node_modules/minimatch": { 1200 | "version": "3.1.2", 1201 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1202 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1203 | "dev": true, 1204 | "peer": true, 1205 | "dependencies": { 1206 | "brace-expansion": "^1.1.7" 1207 | }, 1208 | "engines": { 1209 | "node": "*" 1210 | } 1211 | }, 1212 | "node_modules/espree": { 1213 | "version": "9.6.1", 1214 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1215 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1216 | "dev": true, 1217 | "peer": true, 1218 | "dependencies": { 1219 | "acorn": "^8.9.0", 1220 | "acorn-jsx": "^5.3.2", 1221 | "eslint-visitor-keys": "^3.4.1" 1222 | }, 1223 | "engines": { 1224 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1225 | }, 1226 | "funding": { 1227 | "url": "https://opencollective.com/eslint" 1228 | } 1229 | }, 1230 | "node_modules/esquery": { 1231 | "version": "1.5.0", 1232 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1233 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1234 | "dev": true, 1235 | "peer": true, 1236 | "dependencies": { 1237 | "estraverse": "^5.1.0" 1238 | }, 1239 | "engines": { 1240 | "node": ">=0.10" 1241 | } 1242 | }, 1243 | "node_modules/esrecurse": { 1244 | "version": "4.3.0", 1245 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1246 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1247 | "dev": true, 1248 | "peer": true, 1249 | "dependencies": { 1250 | "estraverse": "^5.2.0" 1251 | }, 1252 | "engines": { 1253 | "node": ">=4.0" 1254 | } 1255 | }, 1256 | "node_modules/estraverse": { 1257 | "version": "5.3.0", 1258 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1259 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1260 | "dev": true, 1261 | "peer": true, 1262 | "engines": { 1263 | "node": ">=4.0" 1264 | } 1265 | }, 1266 | "node_modules/esutils": { 1267 | "version": "2.0.3", 1268 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1269 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1270 | "dev": true, 1271 | "peer": true, 1272 | "engines": { 1273 | "node": ">=0.10.0" 1274 | } 1275 | }, 1276 | "node_modules/fast-deep-equal": { 1277 | "version": "3.1.3", 1278 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1279 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1280 | "dev": true, 1281 | "peer": true 1282 | }, 1283 | "node_modules/fast-glob": { 1284 | "version": "3.3.2", 1285 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1286 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1287 | "dev": true, 1288 | "dependencies": { 1289 | "@nodelib/fs.stat": "^2.0.2", 1290 | "@nodelib/fs.walk": "^1.2.3", 1291 | "glob-parent": "^5.1.2", 1292 | "merge2": "^1.3.0", 1293 | "micromatch": "^4.0.4" 1294 | }, 1295 | "engines": { 1296 | "node": ">=8.6.0" 1297 | } 1298 | }, 1299 | "node_modules/fast-glob/node_modules/glob-parent": { 1300 | "version": "5.1.2", 1301 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1302 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1303 | "dev": true, 1304 | "dependencies": { 1305 | "is-glob": "^4.0.1" 1306 | }, 1307 | "engines": { 1308 | "node": ">= 6" 1309 | } 1310 | }, 1311 | "node_modules/fast-json-stable-stringify": { 1312 | "version": "2.1.0", 1313 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1314 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1315 | "dev": true, 1316 | "peer": true 1317 | }, 1318 | "node_modules/fast-levenshtein": { 1319 | "version": "2.0.6", 1320 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1321 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1322 | "dev": true, 1323 | "peer": true 1324 | }, 1325 | "node_modules/fastq": { 1326 | "version": "1.17.1", 1327 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1328 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1329 | "dev": true, 1330 | "dependencies": { 1331 | "reusify": "^1.0.4" 1332 | } 1333 | }, 1334 | "node_modules/file-entry-cache": { 1335 | "version": "6.0.1", 1336 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1337 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1338 | "dev": true, 1339 | "peer": true, 1340 | "dependencies": { 1341 | "flat-cache": "^3.0.4" 1342 | }, 1343 | "engines": { 1344 | "node": "^10.12.0 || >=12.0.0" 1345 | } 1346 | }, 1347 | "node_modules/fill-range": { 1348 | "version": "7.1.1", 1349 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1350 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1351 | "dev": true, 1352 | "dependencies": { 1353 | "to-regex-range": "^5.0.1" 1354 | }, 1355 | "engines": { 1356 | "node": ">=8" 1357 | } 1358 | }, 1359 | "node_modules/find-up": { 1360 | "version": "5.0.0", 1361 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1362 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1363 | "dev": true, 1364 | "peer": true, 1365 | "dependencies": { 1366 | "locate-path": "^6.0.0", 1367 | "path-exists": "^4.0.0" 1368 | }, 1369 | "engines": { 1370 | "node": ">=10" 1371 | }, 1372 | "funding": { 1373 | "url": "https://github.com/sponsors/sindresorhus" 1374 | } 1375 | }, 1376 | "node_modules/flat-cache": { 1377 | "version": "3.2.0", 1378 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1379 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1380 | "dev": true, 1381 | "peer": true, 1382 | "dependencies": { 1383 | "flatted": "^3.2.9", 1384 | "keyv": "^4.5.3", 1385 | "rimraf": "^3.0.2" 1386 | }, 1387 | "engines": { 1388 | "node": "^10.12.0 || >=12.0.0" 1389 | } 1390 | }, 1391 | "node_modules/flatted": { 1392 | "version": "3.3.1", 1393 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 1394 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 1395 | "dev": true, 1396 | "peer": true 1397 | }, 1398 | "node_modules/fs.realpath": { 1399 | "version": "1.0.0", 1400 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1401 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1402 | "dev": true, 1403 | "peer": true 1404 | }, 1405 | "node_modules/glob": { 1406 | "version": "7.2.3", 1407 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1408 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1409 | "deprecated": "Glob versions prior to v9 are no longer supported", 1410 | "dev": true, 1411 | "peer": true, 1412 | "dependencies": { 1413 | "fs.realpath": "^1.0.0", 1414 | "inflight": "^1.0.4", 1415 | "inherits": "2", 1416 | "minimatch": "^3.1.1", 1417 | "once": "^1.3.0", 1418 | "path-is-absolute": "^1.0.0" 1419 | }, 1420 | "engines": { 1421 | "node": "*" 1422 | }, 1423 | "funding": { 1424 | "url": "https://github.com/sponsors/isaacs" 1425 | } 1426 | }, 1427 | "node_modules/glob-parent": { 1428 | "version": "6.0.2", 1429 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1430 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1431 | "dev": true, 1432 | "peer": true, 1433 | "dependencies": { 1434 | "is-glob": "^4.0.3" 1435 | }, 1436 | "engines": { 1437 | "node": ">=10.13.0" 1438 | } 1439 | }, 1440 | "node_modules/glob/node_modules/brace-expansion": { 1441 | "version": "1.1.11", 1442 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1443 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1444 | "dev": true, 1445 | "peer": true, 1446 | "dependencies": { 1447 | "balanced-match": "^1.0.0", 1448 | "concat-map": "0.0.1" 1449 | } 1450 | }, 1451 | "node_modules/glob/node_modules/minimatch": { 1452 | "version": "3.1.2", 1453 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1454 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1455 | "dev": true, 1456 | "peer": true, 1457 | "dependencies": { 1458 | "brace-expansion": "^1.1.7" 1459 | }, 1460 | "engines": { 1461 | "node": "*" 1462 | } 1463 | }, 1464 | "node_modules/globals": { 1465 | "version": "13.24.0", 1466 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1467 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1468 | "dev": true, 1469 | "peer": true, 1470 | "dependencies": { 1471 | "type-fest": "^0.20.2" 1472 | }, 1473 | "engines": { 1474 | "node": ">=8" 1475 | }, 1476 | "funding": { 1477 | "url": "https://github.com/sponsors/sindresorhus" 1478 | } 1479 | }, 1480 | "node_modules/globby": { 1481 | "version": "11.1.0", 1482 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1483 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1484 | "dev": true, 1485 | "dependencies": { 1486 | "array-union": "^2.1.0", 1487 | "dir-glob": "^3.0.1", 1488 | "fast-glob": "^3.2.9", 1489 | "ignore": "^5.2.0", 1490 | "merge2": "^1.4.1", 1491 | "slash": "^3.0.0" 1492 | }, 1493 | "engines": { 1494 | "node": ">=10" 1495 | }, 1496 | "funding": { 1497 | "url": "https://github.com/sponsors/sindresorhus" 1498 | } 1499 | }, 1500 | "node_modules/graphemer": { 1501 | "version": "1.4.0", 1502 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1503 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1504 | "dev": true 1505 | }, 1506 | "node_modules/has-flag": { 1507 | "version": "4.0.0", 1508 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1509 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1510 | "dev": true, 1511 | "peer": true, 1512 | "engines": { 1513 | "node": ">=8" 1514 | } 1515 | }, 1516 | "node_modules/ignore": { 1517 | "version": "5.3.1", 1518 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1519 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1520 | "dev": true, 1521 | "engines": { 1522 | "node": ">= 4" 1523 | } 1524 | }, 1525 | "node_modules/import-fresh": { 1526 | "version": "3.3.0", 1527 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1528 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1529 | "dev": true, 1530 | "peer": true, 1531 | "dependencies": { 1532 | "parent-module": "^1.0.0", 1533 | "resolve-from": "^4.0.0" 1534 | }, 1535 | "engines": { 1536 | "node": ">=6" 1537 | }, 1538 | "funding": { 1539 | "url": "https://github.com/sponsors/sindresorhus" 1540 | } 1541 | }, 1542 | "node_modules/imurmurhash": { 1543 | "version": "0.1.4", 1544 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1545 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1546 | "dev": true, 1547 | "peer": true, 1548 | "engines": { 1549 | "node": ">=0.8.19" 1550 | } 1551 | }, 1552 | "node_modules/inflight": { 1553 | "version": "1.0.6", 1554 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1555 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1556 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 1557 | "dev": true, 1558 | "peer": true, 1559 | "dependencies": { 1560 | "once": "^1.3.0", 1561 | "wrappy": "1" 1562 | } 1563 | }, 1564 | "node_modules/inherits": { 1565 | "version": "2.0.4", 1566 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1567 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1568 | "dev": true, 1569 | "peer": true 1570 | }, 1571 | "node_modules/is-extglob": { 1572 | "version": "2.1.1", 1573 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1574 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1575 | "dev": true, 1576 | "engines": { 1577 | "node": ">=0.10.0" 1578 | } 1579 | }, 1580 | "node_modules/is-glob": { 1581 | "version": "4.0.3", 1582 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1583 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1584 | "dev": true, 1585 | "dependencies": { 1586 | "is-extglob": "^2.1.1" 1587 | }, 1588 | "engines": { 1589 | "node": ">=0.10.0" 1590 | } 1591 | }, 1592 | "node_modules/is-number": { 1593 | "version": "7.0.0", 1594 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1595 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1596 | "dev": true, 1597 | "engines": { 1598 | "node": ">=0.12.0" 1599 | } 1600 | }, 1601 | "node_modules/is-path-inside": { 1602 | "version": "3.0.3", 1603 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1604 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1605 | "dev": true, 1606 | "peer": true, 1607 | "engines": { 1608 | "node": ">=8" 1609 | } 1610 | }, 1611 | "node_modules/isexe": { 1612 | "version": "2.0.0", 1613 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1614 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1615 | "dev": true, 1616 | "peer": true 1617 | }, 1618 | "node_modules/js-yaml": { 1619 | "version": "4.1.0", 1620 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1621 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1622 | "dev": true, 1623 | "peer": true, 1624 | "dependencies": { 1625 | "argparse": "^2.0.1" 1626 | }, 1627 | "bin": { 1628 | "js-yaml": "bin/js-yaml.js" 1629 | } 1630 | }, 1631 | "node_modules/json-buffer": { 1632 | "version": "3.0.1", 1633 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1634 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1635 | "dev": true, 1636 | "peer": true 1637 | }, 1638 | "node_modules/json-schema-traverse": { 1639 | "version": "0.4.1", 1640 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1641 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1642 | "dev": true, 1643 | "peer": true 1644 | }, 1645 | "node_modules/json-stable-stringify-without-jsonify": { 1646 | "version": "1.0.1", 1647 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1648 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1649 | "dev": true, 1650 | "peer": true 1651 | }, 1652 | "node_modules/keyv": { 1653 | "version": "4.5.4", 1654 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1655 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1656 | "dev": true, 1657 | "peer": true, 1658 | "dependencies": { 1659 | "json-buffer": "3.0.1" 1660 | } 1661 | }, 1662 | "node_modules/levn": { 1663 | "version": "0.4.1", 1664 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1665 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1666 | "dev": true, 1667 | "peer": true, 1668 | "dependencies": { 1669 | "prelude-ls": "^1.2.1", 1670 | "type-check": "~0.4.0" 1671 | }, 1672 | "engines": { 1673 | "node": ">= 0.8.0" 1674 | } 1675 | }, 1676 | "node_modules/locate-path": { 1677 | "version": "6.0.0", 1678 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1679 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1680 | "dev": true, 1681 | "peer": true, 1682 | "dependencies": { 1683 | "p-locate": "^5.0.0" 1684 | }, 1685 | "engines": { 1686 | "node": ">=10" 1687 | }, 1688 | "funding": { 1689 | "url": "https://github.com/sponsors/sindresorhus" 1690 | } 1691 | }, 1692 | "node_modules/lodash.merge": { 1693 | "version": "4.6.2", 1694 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1695 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1696 | "dev": true, 1697 | "peer": true 1698 | }, 1699 | "node_modules/merge2": { 1700 | "version": "1.4.1", 1701 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1702 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1703 | "dev": true, 1704 | "engines": { 1705 | "node": ">= 8" 1706 | } 1707 | }, 1708 | "node_modules/micromatch": { 1709 | "version": "4.0.7", 1710 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 1711 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1712 | "dev": true, 1713 | "dependencies": { 1714 | "braces": "^3.0.3", 1715 | "picomatch": "^2.3.1" 1716 | }, 1717 | "engines": { 1718 | "node": ">=8.6" 1719 | } 1720 | }, 1721 | "node_modules/minimatch": { 1722 | "version": "9.0.5", 1723 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1724 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1725 | "dev": true, 1726 | "dependencies": { 1727 | "brace-expansion": "^2.0.1" 1728 | }, 1729 | "engines": { 1730 | "node": ">=16 || 14 >=14.17" 1731 | }, 1732 | "funding": { 1733 | "url": "https://github.com/sponsors/isaacs" 1734 | } 1735 | }, 1736 | "node_modules/moment": { 1737 | "version": "2.29.4", 1738 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 1739 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", 1740 | "dev": true, 1741 | "engines": { 1742 | "node": "*" 1743 | } 1744 | }, 1745 | "node_modules/ms": { 1746 | "version": "2.1.2", 1747 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1748 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1749 | "dev": true 1750 | }, 1751 | "node_modules/natural-compare": { 1752 | "version": "1.4.0", 1753 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1754 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1755 | "dev": true 1756 | }, 1757 | "node_modules/obsidian": { 1758 | "version": "0.16.3", 1759 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.16.3.tgz", 1760 | "integrity": "sha512-hal9qk1A0GMhHSeLr2/+o3OpLmImiP+Y+sx2ewP13ds76KXsziG96n+IPFT0mSkup1zSwhEu+DeRhmbcyCCXWw==", 1761 | "dev": true, 1762 | "dependencies": { 1763 | "@types/codemirror": "0.0.108", 1764 | "moment": "2.29.4" 1765 | }, 1766 | "peerDependencies": { 1767 | "@codemirror/state": "^6.0.0", 1768 | "@codemirror/view": "^6.0.0" 1769 | } 1770 | }, 1771 | "node_modules/once": { 1772 | "version": "1.4.0", 1773 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1774 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1775 | "dev": true, 1776 | "peer": true, 1777 | "dependencies": { 1778 | "wrappy": "1" 1779 | } 1780 | }, 1781 | "node_modules/optionator": { 1782 | "version": "0.9.4", 1783 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 1784 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 1785 | "dev": true, 1786 | "peer": true, 1787 | "dependencies": { 1788 | "deep-is": "^0.1.3", 1789 | "fast-levenshtein": "^2.0.6", 1790 | "levn": "^0.4.1", 1791 | "prelude-ls": "^1.2.1", 1792 | "type-check": "^0.4.0", 1793 | "word-wrap": "^1.2.5" 1794 | }, 1795 | "engines": { 1796 | "node": ">= 0.8.0" 1797 | } 1798 | }, 1799 | "node_modules/p-limit": { 1800 | "version": "3.1.0", 1801 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1802 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1803 | "dev": true, 1804 | "peer": true, 1805 | "dependencies": { 1806 | "yocto-queue": "^0.1.0" 1807 | }, 1808 | "engines": { 1809 | "node": ">=10" 1810 | }, 1811 | "funding": { 1812 | "url": "https://github.com/sponsors/sindresorhus" 1813 | } 1814 | }, 1815 | "node_modules/p-locate": { 1816 | "version": "5.0.0", 1817 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1818 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1819 | "dev": true, 1820 | "peer": true, 1821 | "dependencies": { 1822 | "p-limit": "^3.0.2" 1823 | }, 1824 | "engines": { 1825 | "node": ">=10" 1826 | }, 1827 | "funding": { 1828 | "url": "https://github.com/sponsors/sindresorhus" 1829 | } 1830 | }, 1831 | "node_modules/parent-module": { 1832 | "version": "1.0.1", 1833 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1834 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1835 | "dev": true, 1836 | "peer": true, 1837 | "dependencies": { 1838 | "callsites": "^3.0.0" 1839 | }, 1840 | "engines": { 1841 | "node": ">=6" 1842 | } 1843 | }, 1844 | "node_modules/path-exists": { 1845 | "version": "4.0.0", 1846 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1847 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1848 | "dev": true, 1849 | "peer": true, 1850 | "engines": { 1851 | "node": ">=8" 1852 | } 1853 | }, 1854 | "node_modules/path-is-absolute": { 1855 | "version": "1.0.1", 1856 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1857 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1858 | "dev": true, 1859 | "peer": true, 1860 | "engines": { 1861 | "node": ">=0.10.0" 1862 | } 1863 | }, 1864 | "node_modules/path-key": { 1865 | "version": "3.1.1", 1866 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1867 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1868 | "dev": true, 1869 | "peer": true, 1870 | "engines": { 1871 | "node": ">=8" 1872 | } 1873 | }, 1874 | "node_modules/path-type": { 1875 | "version": "4.0.0", 1876 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1877 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1878 | "dev": true, 1879 | "engines": { 1880 | "node": ">=8" 1881 | } 1882 | }, 1883 | "node_modules/picomatch": { 1884 | "version": "2.3.1", 1885 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1886 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1887 | "dev": true, 1888 | "engines": { 1889 | "node": ">=8.6" 1890 | }, 1891 | "funding": { 1892 | "url": "https://github.com/sponsors/jonschlinkert" 1893 | } 1894 | }, 1895 | "node_modules/prelude-ls": { 1896 | "version": "1.2.1", 1897 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1898 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1899 | "dev": true, 1900 | "peer": true, 1901 | "engines": { 1902 | "node": ">= 0.8.0" 1903 | } 1904 | }, 1905 | "node_modules/punycode": { 1906 | "version": "2.3.1", 1907 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1908 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1909 | "dev": true, 1910 | "peer": true, 1911 | "engines": { 1912 | "node": ">=6" 1913 | } 1914 | }, 1915 | "node_modules/queue-microtask": { 1916 | "version": "1.2.3", 1917 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1918 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1919 | "dev": true, 1920 | "funding": [ 1921 | { 1922 | "type": "github", 1923 | "url": "https://github.com/sponsors/feross" 1924 | }, 1925 | { 1926 | "type": "patreon", 1927 | "url": "https://www.patreon.com/feross" 1928 | }, 1929 | { 1930 | "type": "consulting", 1931 | "url": "https://feross.org/support" 1932 | } 1933 | ] 1934 | }, 1935 | "node_modules/resolve-from": { 1936 | "version": "4.0.0", 1937 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1938 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1939 | "dev": true, 1940 | "peer": true, 1941 | "engines": { 1942 | "node": ">=4" 1943 | } 1944 | }, 1945 | "node_modules/reusify": { 1946 | "version": "1.0.4", 1947 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1948 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1949 | "dev": true, 1950 | "engines": { 1951 | "iojs": ">=1.0.0", 1952 | "node": ">=0.10.0" 1953 | } 1954 | }, 1955 | "node_modules/rimraf": { 1956 | "version": "3.0.2", 1957 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1958 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1959 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 1960 | "dev": true, 1961 | "peer": true, 1962 | "dependencies": { 1963 | "glob": "^7.1.3" 1964 | }, 1965 | "bin": { 1966 | "rimraf": "bin.js" 1967 | }, 1968 | "funding": { 1969 | "url": "https://github.com/sponsors/isaacs" 1970 | } 1971 | }, 1972 | "node_modules/run-parallel": { 1973 | "version": "1.2.0", 1974 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1975 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1976 | "dev": true, 1977 | "funding": [ 1978 | { 1979 | "type": "github", 1980 | "url": "https://github.com/sponsors/feross" 1981 | }, 1982 | { 1983 | "type": "patreon", 1984 | "url": "https://www.patreon.com/feross" 1985 | }, 1986 | { 1987 | "type": "consulting", 1988 | "url": "https://feross.org/support" 1989 | } 1990 | ], 1991 | "dependencies": { 1992 | "queue-microtask": "^1.2.2" 1993 | } 1994 | }, 1995 | "node_modules/semver": { 1996 | "version": "7.6.2", 1997 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", 1998 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", 1999 | "dev": true, 2000 | "bin": { 2001 | "semver": "bin/semver.js" 2002 | }, 2003 | "engines": { 2004 | "node": ">=10" 2005 | } 2006 | }, 2007 | "node_modules/shebang-command": { 2008 | "version": "2.0.0", 2009 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2010 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2011 | "dev": true, 2012 | "peer": true, 2013 | "dependencies": { 2014 | "shebang-regex": "^3.0.0" 2015 | }, 2016 | "engines": { 2017 | "node": ">=8" 2018 | } 2019 | }, 2020 | "node_modules/shebang-regex": { 2021 | "version": "3.0.0", 2022 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2023 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2024 | "dev": true, 2025 | "peer": true, 2026 | "engines": { 2027 | "node": ">=8" 2028 | } 2029 | }, 2030 | "node_modules/slash": { 2031 | "version": "3.0.0", 2032 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2033 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2034 | "dev": true, 2035 | "engines": { 2036 | "node": ">=8" 2037 | } 2038 | }, 2039 | "node_modules/strip-ansi": { 2040 | "version": "6.0.1", 2041 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2042 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2043 | "dev": true, 2044 | "peer": true, 2045 | "dependencies": { 2046 | "ansi-regex": "^5.0.1" 2047 | }, 2048 | "engines": { 2049 | "node": ">=8" 2050 | } 2051 | }, 2052 | "node_modules/strip-json-comments": { 2053 | "version": "3.1.1", 2054 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2055 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2056 | "dev": true, 2057 | "peer": true, 2058 | "engines": { 2059 | "node": ">=8" 2060 | }, 2061 | "funding": { 2062 | "url": "https://github.com/sponsors/sindresorhus" 2063 | } 2064 | }, 2065 | "node_modules/style-mod": { 2066 | "version": "4.0.0", 2067 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", 2068 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", 2069 | "dev": true, 2070 | "peer": true 2071 | }, 2072 | "node_modules/supports-color": { 2073 | "version": "7.2.0", 2074 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2075 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2076 | "dev": true, 2077 | "peer": true, 2078 | "dependencies": { 2079 | "has-flag": "^4.0.0" 2080 | }, 2081 | "engines": { 2082 | "node": ">=8" 2083 | } 2084 | }, 2085 | "node_modules/text-table": { 2086 | "version": "0.2.0", 2087 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2088 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2089 | "dev": true, 2090 | "peer": true 2091 | }, 2092 | "node_modules/to-regex-range": { 2093 | "version": "5.0.1", 2094 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2095 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2096 | "dev": true, 2097 | "dependencies": { 2098 | "is-number": "^7.0.0" 2099 | }, 2100 | "engines": { 2101 | "node": ">=8.0" 2102 | } 2103 | }, 2104 | "node_modules/ts-api-utils": { 2105 | "version": "1.3.0", 2106 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 2107 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 2108 | "dev": true, 2109 | "engines": { 2110 | "node": ">=16" 2111 | }, 2112 | "peerDependencies": { 2113 | "typescript": ">=4.2.0" 2114 | } 2115 | }, 2116 | "node_modules/tslib": { 2117 | "version": "2.6.3", 2118 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", 2119 | "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", 2120 | "dev": true 2121 | }, 2122 | "node_modules/type-check": { 2123 | "version": "0.4.0", 2124 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2125 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2126 | "dev": true, 2127 | "peer": true, 2128 | "dependencies": { 2129 | "prelude-ls": "^1.2.1" 2130 | }, 2131 | "engines": { 2132 | "node": ">= 0.8.0" 2133 | } 2134 | }, 2135 | "node_modules/type-fest": { 2136 | "version": "0.20.2", 2137 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2138 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2139 | "dev": true, 2140 | "peer": true, 2141 | "engines": { 2142 | "node": ">=10" 2143 | }, 2144 | "funding": { 2145 | "url": "https://github.com/sponsors/sindresorhus" 2146 | } 2147 | }, 2148 | "node_modules/typescript": { 2149 | "version": "5.5.2", 2150 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", 2151 | "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", 2152 | "dev": true, 2153 | "bin": { 2154 | "tsc": "bin/tsc", 2155 | "tsserver": "bin/tsserver" 2156 | }, 2157 | "engines": { 2158 | "node": ">=14.17" 2159 | } 2160 | }, 2161 | "node_modules/undici-types": { 2162 | "version": "5.26.5", 2163 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2164 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2165 | "dev": true 2166 | }, 2167 | "node_modules/uri-js": { 2168 | "version": "4.4.1", 2169 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2170 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2171 | "dev": true, 2172 | "peer": true, 2173 | "dependencies": { 2174 | "punycode": "^2.1.0" 2175 | } 2176 | }, 2177 | "node_modules/w3c-keyname": { 2178 | "version": "2.2.6", 2179 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", 2180 | "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", 2181 | "dev": true, 2182 | "peer": true 2183 | }, 2184 | "node_modules/which": { 2185 | "version": "2.0.2", 2186 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2187 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2188 | "dev": true, 2189 | "peer": true, 2190 | "dependencies": { 2191 | "isexe": "^2.0.0" 2192 | }, 2193 | "bin": { 2194 | "node-which": "bin/node-which" 2195 | }, 2196 | "engines": { 2197 | "node": ">= 8" 2198 | } 2199 | }, 2200 | "node_modules/word-wrap": { 2201 | "version": "1.2.5", 2202 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 2203 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 2204 | "dev": true, 2205 | "peer": true, 2206 | "engines": { 2207 | "node": ">=0.10.0" 2208 | } 2209 | }, 2210 | "node_modules/wrappy": { 2211 | "version": "1.0.2", 2212 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2213 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2214 | "dev": true, 2215 | "peer": true 2216 | }, 2217 | "node_modules/yocto-queue": { 2218 | "version": "0.1.0", 2219 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2220 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2221 | "dev": true, 2222 | "peer": true, 2223 | "engines": { 2224 | "node": ">=10" 2225 | }, 2226 | "funding": { 2227 | "url": "https://github.com/sponsors/sindresorhus" 2228 | } 2229 | } 2230 | }, 2231 | "dependencies": { 2232 | "@codemirror/state": { 2233 | "version": "6.1.4", 2234 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", 2235 | "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", 2236 | "dev": true, 2237 | "peer": true 2238 | }, 2239 | "@codemirror/view": { 2240 | "version": "6.5.1", 2241 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.5.1.tgz", 2242 | "integrity": "sha512-xBKP8N3AXOs06VcKvIuvIQoUlGs7Hb78ftJWahLaRX909jKPMgGxR5XjvrawzTTZMSTU3DzdjDNPwG6fPM/ypQ==", 2243 | "dev": true, 2244 | "peer": true, 2245 | "requires": { 2246 | "@codemirror/state": "^6.1.4", 2247 | "style-mod": "^4.0.0", 2248 | "w3c-keyname": "^2.2.4" 2249 | } 2250 | }, 2251 | "@esbuild/aix-ppc64": { 2252 | "version": "0.21.5", 2253 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 2254 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 2255 | "dev": true, 2256 | "optional": true 2257 | }, 2258 | "@esbuild/android-arm": { 2259 | "version": "0.21.5", 2260 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 2261 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 2262 | "dev": true, 2263 | "optional": true 2264 | }, 2265 | "@esbuild/android-arm64": { 2266 | "version": "0.21.5", 2267 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 2268 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 2269 | "dev": true, 2270 | "optional": true 2271 | }, 2272 | "@esbuild/android-x64": { 2273 | "version": "0.21.5", 2274 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 2275 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 2276 | "dev": true, 2277 | "optional": true 2278 | }, 2279 | "@esbuild/darwin-arm64": { 2280 | "version": "0.21.5", 2281 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 2282 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 2283 | "dev": true, 2284 | "optional": true 2285 | }, 2286 | "@esbuild/darwin-x64": { 2287 | "version": "0.21.5", 2288 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 2289 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 2290 | "dev": true, 2291 | "optional": true 2292 | }, 2293 | "@esbuild/freebsd-arm64": { 2294 | "version": "0.21.5", 2295 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 2296 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 2297 | "dev": true, 2298 | "optional": true 2299 | }, 2300 | "@esbuild/freebsd-x64": { 2301 | "version": "0.21.5", 2302 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 2303 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 2304 | "dev": true, 2305 | "optional": true 2306 | }, 2307 | "@esbuild/linux-arm": { 2308 | "version": "0.21.5", 2309 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 2310 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 2311 | "dev": true, 2312 | "optional": true 2313 | }, 2314 | "@esbuild/linux-arm64": { 2315 | "version": "0.21.5", 2316 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 2317 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 2318 | "dev": true, 2319 | "optional": true 2320 | }, 2321 | "@esbuild/linux-ia32": { 2322 | "version": "0.21.5", 2323 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 2324 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 2325 | "dev": true, 2326 | "optional": true 2327 | }, 2328 | "@esbuild/linux-loong64": { 2329 | "version": "0.21.5", 2330 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 2331 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 2332 | "dev": true, 2333 | "optional": true 2334 | }, 2335 | "@esbuild/linux-mips64el": { 2336 | "version": "0.21.5", 2337 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 2338 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 2339 | "dev": true, 2340 | "optional": true 2341 | }, 2342 | "@esbuild/linux-ppc64": { 2343 | "version": "0.21.5", 2344 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 2345 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 2346 | "dev": true, 2347 | "optional": true 2348 | }, 2349 | "@esbuild/linux-riscv64": { 2350 | "version": "0.21.5", 2351 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 2352 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 2353 | "dev": true, 2354 | "optional": true 2355 | }, 2356 | "@esbuild/linux-s390x": { 2357 | "version": "0.21.5", 2358 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 2359 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 2360 | "dev": true, 2361 | "optional": true 2362 | }, 2363 | "@esbuild/linux-x64": { 2364 | "version": "0.21.5", 2365 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 2366 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 2367 | "dev": true, 2368 | "optional": true 2369 | }, 2370 | "@esbuild/netbsd-x64": { 2371 | "version": "0.21.5", 2372 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 2373 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 2374 | "dev": true, 2375 | "optional": true 2376 | }, 2377 | "@esbuild/openbsd-x64": { 2378 | "version": "0.21.5", 2379 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 2380 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 2381 | "dev": true, 2382 | "optional": true 2383 | }, 2384 | "@esbuild/sunos-x64": { 2385 | "version": "0.21.5", 2386 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 2387 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 2388 | "dev": true, 2389 | "optional": true 2390 | }, 2391 | "@esbuild/win32-arm64": { 2392 | "version": "0.21.5", 2393 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 2394 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 2395 | "dev": true, 2396 | "optional": true 2397 | }, 2398 | "@esbuild/win32-ia32": { 2399 | "version": "0.21.5", 2400 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 2401 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 2402 | "dev": true, 2403 | "optional": true 2404 | }, 2405 | "@esbuild/win32-x64": { 2406 | "version": "0.21.5", 2407 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 2408 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 2409 | "dev": true, 2410 | "optional": true 2411 | }, 2412 | "@eslint-community/eslint-utils": { 2413 | "version": "4.4.0", 2414 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 2415 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 2416 | "dev": true, 2417 | "requires": { 2418 | "eslint-visitor-keys": "^3.3.0" 2419 | } 2420 | }, 2421 | "@eslint-community/regexpp": { 2422 | "version": "4.11.0", 2423 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", 2424 | "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", 2425 | "dev": true 2426 | }, 2427 | "@eslint/eslintrc": { 2428 | "version": "2.1.4", 2429 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 2430 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 2431 | "dev": true, 2432 | "peer": true, 2433 | "requires": { 2434 | "ajv": "^6.12.4", 2435 | "debug": "^4.3.2", 2436 | "espree": "^9.6.0", 2437 | "globals": "^13.19.0", 2438 | "ignore": "^5.2.0", 2439 | "import-fresh": "^3.2.1", 2440 | "js-yaml": "^4.1.0", 2441 | "minimatch": "^3.1.2", 2442 | "strip-json-comments": "^3.1.1" 2443 | }, 2444 | "dependencies": { 2445 | "brace-expansion": { 2446 | "version": "1.1.11", 2447 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2448 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2449 | "dev": true, 2450 | "peer": true, 2451 | "requires": { 2452 | "balanced-match": "^1.0.0", 2453 | "concat-map": "0.0.1" 2454 | } 2455 | }, 2456 | "minimatch": { 2457 | "version": "3.1.2", 2458 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2459 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2460 | "dev": true, 2461 | "peer": true, 2462 | "requires": { 2463 | "brace-expansion": "^1.1.7" 2464 | } 2465 | } 2466 | } 2467 | }, 2468 | "@eslint/js": { 2469 | "version": "8.57.0", 2470 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 2471 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 2472 | "dev": true, 2473 | "peer": true 2474 | }, 2475 | "@humanwhocodes/config-array": { 2476 | "version": "0.11.14", 2477 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 2478 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 2479 | "dev": true, 2480 | "peer": true, 2481 | "requires": { 2482 | "@humanwhocodes/object-schema": "^2.0.2", 2483 | "debug": "^4.3.1", 2484 | "minimatch": "^3.0.5" 2485 | }, 2486 | "dependencies": { 2487 | "brace-expansion": { 2488 | "version": "1.1.11", 2489 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2490 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2491 | "dev": true, 2492 | "peer": true, 2493 | "requires": { 2494 | "balanced-match": "^1.0.0", 2495 | "concat-map": "0.0.1" 2496 | } 2497 | }, 2498 | "minimatch": { 2499 | "version": "3.1.2", 2500 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2501 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2502 | "dev": true, 2503 | "peer": true, 2504 | "requires": { 2505 | "brace-expansion": "^1.1.7" 2506 | } 2507 | } 2508 | } 2509 | }, 2510 | "@humanwhocodes/module-importer": { 2511 | "version": "1.0.1", 2512 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 2513 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 2514 | "dev": true, 2515 | "peer": true 2516 | }, 2517 | "@humanwhocodes/object-schema": { 2518 | "version": "2.0.3", 2519 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 2520 | "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 2521 | "dev": true, 2522 | "peer": true 2523 | }, 2524 | "@nodelib/fs.scandir": { 2525 | "version": "2.1.5", 2526 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 2527 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 2528 | "dev": true, 2529 | "requires": { 2530 | "@nodelib/fs.stat": "2.0.5", 2531 | "run-parallel": "^1.1.9" 2532 | } 2533 | }, 2534 | "@nodelib/fs.stat": { 2535 | "version": "2.0.5", 2536 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 2537 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 2538 | "dev": true 2539 | }, 2540 | "@nodelib/fs.walk": { 2541 | "version": "1.2.8", 2542 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 2543 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 2544 | "dev": true, 2545 | "requires": { 2546 | "@nodelib/fs.scandir": "2.1.5", 2547 | "fastq": "^1.6.0" 2548 | } 2549 | }, 2550 | "@types/codemirror": { 2551 | "version": "0.0.108", 2552 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 2553 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 2554 | "dev": true, 2555 | "requires": { 2556 | "@types/tern": "*" 2557 | } 2558 | }, 2559 | "@types/estree": { 2560 | "version": "1.0.0", 2561 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 2562 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 2563 | "dev": true 2564 | }, 2565 | "@types/node": { 2566 | "version": "20.14.9", 2567 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", 2568 | "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", 2569 | "dev": true, 2570 | "requires": { 2571 | "undici-types": "~5.26.4" 2572 | } 2573 | }, 2574 | "@types/tern": { 2575 | "version": "0.23.4", 2576 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 2577 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 2578 | "dev": true, 2579 | "requires": { 2580 | "@types/estree": "*" 2581 | } 2582 | }, 2583 | "@typescript-eslint/eslint-plugin": { 2584 | "version": "7.14.1", 2585 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", 2586 | "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", 2587 | "dev": true, 2588 | "requires": { 2589 | "@eslint-community/regexpp": "^4.10.0", 2590 | "@typescript-eslint/scope-manager": "7.14.1", 2591 | "@typescript-eslint/type-utils": "7.14.1", 2592 | "@typescript-eslint/utils": "7.14.1", 2593 | "@typescript-eslint/visitor-keys": "7.14.1", 2594 | "graphemer": "^1.4.0", 2595 | "ignore": "^5.3.1", 2596 | "natural-compare": "^1.4.0", 2597 | "ts-api-utils": "^1.3.0" 2598 | } 2599 | }, 2600 | "@typescript-eslint/parser": { 2601 | "version": "7.14.1", 2602 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", 2603 | "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", 2604 | "dev": true, 2605 | "requires": { 2606 | "@typescript-eslint/scope-manager": "7.14.1", 2607 | "@typescript-eslint/types": "7.14.1", 2608 | "@typescript-eslint/typescript-estree": "7.14.1", 2609 | "@typescript-eslint/visitor-keys": "7.14.1", 2610 | "debug": "^4.3.4" 2611 | } 2612 | }, 2613 | "@typescript-eslint/scope-manager": { 2614 | "version": "7.14.1", 2615 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", 2616 | "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", 2617 | "dev": true, 2618 | "requires": { 2619 | "@typescript-eslint/types": "7.14.1", 2620 | "@typescript-eslint/visitor-keys": "7.14.1" 2621 | } 2622 | }, 2623 | "@typescript-eslint/type-utils": { 2624 | "version": "7.14.1", 2625 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", 2626 | "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", 2627 | "dev": true, 2628 | "requires": { 2629 | "@typescript-eslint/typescript-estree": "7.14.1", 2630 | "@typescript-eslint/utils": "7.14.1", 2631 | "debug": "^4.3.4", 2632 | "ts-api-utils": "^1.3.0" 2633 | } 2634 | }, 2635 | "@typescript-eslint/types": { 2636 | "version": "7.14.1", 2637 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", 2638 | "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", 2639 | "dev": true 2640 | }, 2641 | "@typescript-eslint/typescript-estree": { 2642 | "version": "7.14.1", 2643 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", 2644 | "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", 2645 | "dev": true, 2646 | "requires": { 2647 | "@typescript-eslint/types": "7.14.1", 2648 | "@typescript-eslint/visitor-keys": "7.14.1", 2649 | "debug": "^4.3.4", 2650 | "globby": "^11.1.0", 2651 | "is-glob": "^4.0.3", 2652 | "minimatch": "^9.0.4", 2653 | "semver": "^7.6.0", 2654 | "ts-api-utils": "^1.3.0" 2655 | } 2656 | }, 2657 | "@typescript-eslint/utils": { 2658 | "version": "7.14.1", 2659 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", 2660 | "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", 2661 | "dev": true, 2662 | "requires": { 2663 | "@eslint-community/eslint-utils": "^4.4.0", 2664 | "@typescript-eslint/scope-manager": "7.14.1", 2665 | "@typescript-eslint/types": "7.14.1", 2666 | "@typescript-eslint/typescript-estree": "7.14.1" 2667 | } 2668 | }, 2669 | "@typescript-eslint/visitor-keys": { 2670 | "version": "7.14.1", 2671 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", 2672 | "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", 2673 | "dev": true, 2674 | "requires": { 2675 | "@typescript-eslint/types": "7.14.1", 2676 | "eslint-visitor-keys": "^3.4.3" 2677 | } 2678 | }, 2679 | "@ungap/structured-clone": { 2680 | "version": "1.2.0", 2681 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 2682 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 2683 | "dev": true, 2684 | "peer": true 2685 | }, 2686 | "acorn": { 2687 | "version": "8.12.0", 2688 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", 2689 | "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", 2690 | "dev": true, 2691 | "peer": true 2692 | }, 2693 | "acorn-jsx": { 2694 | "version": "5.3.2", 2695 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2696 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2697 | "dev": true, 2698 | "peer": true, 2699 | "requires": {} 2700 | }, 2701 | "ajv": { 2702 | "version": "6.12.6", 2703 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2704 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2705 | "dev": true, 2706 | "peer": true, 2707 | "requires": { 2708 | "fast-deep-equal": "^3.1.1", 2709 | "fast-json-stable-stringify": "^2.0.0", 2710 | "json-schema-traverse": "^0.4.1", 2711 | "uri-js": "^4.2.2" 2712 | } 2713 | }, 2714 | "ansi-regex": { 2715 | "version": "5.0.1", 2716 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2717 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2718 | "dev": true, 2719 | "peer": true 2720 | }, 2721 | "ansi-styles": { 2722 | "version": "4.3.0", 2723 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2724 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2725 | "dev": true, 2726 | "peer": true, 2727 | "requires": { 2728 | "color-convert": "^2.0.1" 2729 | } 2730 | }, 2731 | "argparse": { 2732 | "version": "2.0.1", 2733 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2734 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2735 | "dev": true, 2736 | "peer": true 2737 | }, 2738 | "array-union": { 2739 | "version": "2.1.0", 2740 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 2741 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 2742 | "dev": true 2743 | }, 2744 | "balanced-match": { 2745 | "version": "1.0.2", 2746 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2747 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2748 | "dev": true 2749 | }, 2750 | "brace-expansion": { 2751 | "version": "2.0.1", 2752 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2753 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2754 | "dev": true, 2755 | "requires": { 2756 | "balanced-match": "^1.0.0" 2757 | } 2758 | }, 2759 | "braces": { 2760 | "version": "3.0.3", 2761 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 2762 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 2763 | "dev": true, 2764 | "requires": { 2765 | "fill-range": "^7.1.1" 2766 | } 2767 | }, 2768 | "builtin-modules": { 2769 | "version": "4.0.0", 2770 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", 2771 | "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", 2772 | "dev": true 2773 | }, 2774 | "callsites": { 2775 | "version": "3.1.0", 2776 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2777 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2778 | "dev": true, 2779 | "peer": true 2780 | }, 2781 | "chalk": { 2782 | "version": "4.1.2", 2783 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2784 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2785 | "dev": true, 2786 | "peer": true, 2787 | "requires": { 2788 | "ansi-styles": "^4.1.0", 2789 | "supports-color": "^7.1.0" 2790 | } 2791 | }, 2792 | "color-convert": { 2793 | "version": "2.0.1", 2794 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2795 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2796 | "dev": true, 2797 | "peer": true, 2798 | "requires": { 2799 | "color-name": "~1.1.4" 2800 | } 2801 | }, 2802 | "color-name": { 2803 | "version": "1.1.4", 2804 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2805 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2806 | "dev": true, 2807 | "peer": true 2808 | }, 2809 | "concat-map": { 2810 | "version": "0.0.1", 2811 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2812 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2813 | "dev": true, 2814 | "peer": true 2815 | }, 2816 | "cross-spawn": { 2817 | "version": "7.0.3", 2818 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2819 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2820 | "dev": true, 2821 | "peer": true, 2822 | "requires": { 2823 | "path-key": "^3.1.0", 2824 | "shebang-command": "^2.0.0", 2825 | "which": "^2.0.1" 2826 | } 2827 | }, 2828 | "debug": { 2829 | "version": "4.3.5", 2830 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 2831 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 2832 | "dev": true, 2833 | "requires": { 2834 | "ms": "2.1.2" 2835 | } 2836 | }, 2837 | "deep-is": { 2838 | "version": "0.1.4", 2839 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 2840 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 2841 | "dev": true, 2842 | "peer": true 2843 | }, 2844 | "dir-glob": { 2845 | "version": "3.0.1", 2846 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 2847 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 2848 | "dev": true, 2849 | "requires": { 2850 | "path-type": "^4.0.0" 2851 | } 2852 | }, 2853 | "doctrine": { 2854 | "version": "3.0.0", 2855 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2856 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2857 | "dev": true, 2858 | "peer": true, 2859 | "requires": { 2860 | "esutils": "^2.0.2" 2861 | } 2862 | }, 2863 | "esbuild": { 2864 | "version": "0.21.5", 2865 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 2866 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 2867 | "dev": true, 2868 | "requires": { 2869 | "@esbuild/aix-ppc64": "0.21.5", 2870 | "@esbuild/android-arm": "0.21.5", 2871 | "@esbuild/android-arm64": "0.21.5", 2872 | "@esbuild/android-x64": "0.21.5", 2873 | "@esbuild/darwin-arm64": "0.21.5", 2874 | "@esbuild/darwin-x64": "0.21.5", 2875 | "@esbuild/freebsd-arm64": "0.21.5", 2876 | "@esbuild/freebsd-x64": "0.21.5", 2877 | "@esbuild/linux-arm": "0.21.5", 2878 | "@esbuild/linux-arm64": "0.21.5", 2879 | "@esbuild/linux-ia32": "0.21.5", 2880 | "@esbuild/linux-loong64": "0.21.5", 2881 | "@esbuild/linux-mips64el": "0.21.5", 2882 | "@esbuild/linux-ppc64": "0.21.5", 2883 | "@esbuild/linux-riscv64": "0.21.5", 2884 | "@esbuild/linux-s390x": "0.21.5", 2885 | "@esbuild/linux-x64": "0.21.5", 2886 | "@esbuild/netbsd-x64": "0.21.5", 2887 | "@esbuild/openbsd-x64": "0.21.5", 2888 | "@esbuild/sunos-x64": "0.21.5", 2889 | "@esbuild/win32-arm64": "0.21.5", 2890 | "@esbuild/win32-ia32": "0.21.5", 2891 | "@esbuild/win32-x64": "0.21.5" 2892 | } 2893 | }, 2894 | "escape-string-regexp": { 2895 | "version": "4.0.0", 2896 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2897 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2898 | "dev": true, 2899 | "peer": true 2900 | }, 2901 | "eslint": { 2902 | "version": "8.57.0", 2903 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 2904 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 2905 | "dev": true, 2906 | "peer": true, 2907 | "requires": { 2908 | "@eslint-community/eslint-utils": "^4.2.0", 2909 | "@eslint-community/regexpp": "^4.6.1", 2910 | "@eslint/eslintrc": "^2.1.4", 2911 | "@eslint/js": "8.57.0", 2912 | "@humanwhocodes/config-array": "^0.11.14", 2913 | "@humanwhocodes/module-importer": "^1.0.1", 2914 | "@nodelib/fs.walk": "^1.2.8", 2915 | "@ungap/structured-clone": "^1.2.0", 2916 | "ajv": "^6.12.4", 2917 | "chalk": "^4.0.0", 2918 | "cross-spawn": "^7.0.2", 2919 | "debug": "^4.3.2", 2920 | "doctrine": "^3.0.0", 2921 | "escape-string-regexp": "^4.0.0", 2922 | "eslint-scope": "^7.2.2", 2923 | "eslint-visitor-keys": "^3.4.3", 2924 | "espree": "^9.6.1", 2925 | "esquery": "^1.4.2", 2926 | "esutils": "^2.0.2", 2927 | "fast-deep-equal": "^3.1.3", 2928 | "file-entry-cache": "^6.0.1", 2929 | "find-up": "^5.0.0", 2930 | "glob-parent": "^6.0.2", 2931 | "globals": "^13.19.0", 2932 | "graphemer": "^1.4.0", 2933 | "ignore": "^5.2.0", 2934 | "imurmurhash": "^0.1.4", 2935 | "is-glob": "^4.0.0", 2936 | "is-path-inside": "^3.0.3", 2937 | "js-yaml": "^4.1.0", 2938 | "json-stable-stringify-without-jsonify": "^1.0.1", 2939 | "levn": "^0.4.1", 2940 | "lodash.merge": "^4.6.2", 2941 | "minimatch": "^3.1.2", 2942 | "natural-compare": "^1.4.0", 2943 | "optionator": "^0.9.3", 2944 | "strip-ansi": "^6.0.1", 2945 | "text-table": "^0.2.0" 2946 | }, 2947 | "dependencies": { 2948 | "brace-expansion": { 2949 | "version": "1.1.11", 2950 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2951 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2952 | "dev": true, 2953 | "peer": true, 2954 | "requires": { 2955 | "balanced-match": "^1.0.0", 2956 | "concat-map": "0.0.1" 2957 | } 2958 | }, 2959 | "minimatch": { 2960 | "version": "3.1.2", 2961 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2962 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2963 | "dev": true, 2964 | "peer": true, 2965 | "requires": { 2966 | "brace-expansion": "^1.1.7" 2967 | } 2968 | } 2969 | } 2970 | }, 2971 | "eslint-scope": { 2972 | "version": "7.2.2", 2973 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 2974 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 2975 | "dev": true, 2976 | "peer": true, 2977 | "requires": { 2978 | "esrecurse": "^4.3.0", 2979 | "estraverse": "^5.2.0" 2980 | } 2981 | }, 2982 | "eslint-visitor-keys": { 2983 | "version": "3.4.3", 2984 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 2985 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 2986 | "dev": true 2987 | }, 2988 | "espree": { 2989 | "version": "9.6.1", 2990 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 2991 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 2992 | "dev": true, 2993 | "peer": true, 2994 | "requires": { 2995 | "acorn": "^8.9.0", 2996 | "acorn-jsx": "^5.3.2", 2997 | "eslint-visitor-keys": "^3.4.1" 2998 | } 2999 | }, 3000 | "esquery": { 3001 | "version": "1.5.0", 3002 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 3003 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 3004 | "dev": true, 3005 | "peer": true, 3006 | "requires": { 3007 | "estraverse": "^5.1.0" 3008 | } 3009 | }, 3010 | "esrecurse": { 3011 | "version": "4.3.0", 3012 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 3013 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 3014 | "dev": true, 3015 | "peer": true, 3016 | "requires": { 3017 | "estraverse": "^5.2.0" 3018 | } 3019 | }, 3020 | "estraverse": { 3021 | "version": "5.3.0", 3022 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 3023 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 3024 | "dev": true, 3025 | "peer": true 3026 | }, 3027 | "esutils": { 3028 | "version": "2.0.3", 3029 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 3030 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 3031 | "dev": true, 3032 | "peer": true 3033 | }, 3034 | "fast-deep-equal": { 3035 | "version": "3.1.3", 3036 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 3037 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 3038 | "dev": true, 3039 | "peer": true 3040 | }, 3041 | "fast-glob": { 3042 | "version": "3.3.2", 3043 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 3044 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 3045 | "dev": true, 3046 | "requires": { 3047 | "@nodelib/fs.stat": "^2.0.2", 3048 | "@nodelib/fs.walk": "^1.2.3", 3049 | "glob-parent": "^5.1.2", 3050 | "merge2": "^1.3.0", 3051 | "micromatch": "^4.0.4" 3052 | }, 3053 | "dependencies": { 3054 | "glob-parent": { 3055 | "version": "5.1.2", 3056 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 3057 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 3058 | "dev": true, 3059 | "requires": { 3060 | "is-glob": "^4.0.1" 3061 | } 3062 | } 3063 | } 3064 | }, 3065 | "fast-json-stable-stringify": { 3066 | "version": "2.1.0", 3067 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 3068 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 3069 | "dev": true, 3070 | "peer": true 3071 | }, 3072 | "fast-levenshtein": { 3073 | "version": "2.0.6", 3074 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 3075 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 3076 | "dev": true, 3077 | "peer": true 3078 | }, 3079 | "fastq": { 3080 | "version": "1.17.1", 3081 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 3082 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 3083 | "dev": true, 3084 | "requires": { 3085 | "reusify": "^1.0.4" 3086 | } 3087 | }, 3088 | "file-entry-cache": { 3089 | "version": "6.0.1", 3090 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 3091 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 3092 | "dev": true, 3093 | "peer": true, 3094 | "requires": { 3095 | "flat-cache": "^3.0.4" 3096 | } 3097 | }, 3098 | "fill-range": { 3099 | "version": "7.1.1", 3100 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 3101 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 3102 | "dev": true, 3103 | "requires": { 3104 | "to-regex-range": "^5.0.1" 3105 | } 3106 | }, 3107 | "find-up": { 3108 | "version": "5.0.0", 3109 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 3110 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 3111 | "dev": true, 3112 | "peer": true, 3113 | "requires": { 3114 | "locate-path": "^6.0.0", 3115 | "path-exists": "^4.0.0" 3116 | } 3117 | }, 3118 | "flat-cache": { 3119 | "version": "3.2.0", 3120 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 3121 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 3122 | "dev": true, 3123 | "peer": true, 3124 | "requires": { 3125 | "flatted": "^3.2.9", 3126 | "keyv": "^4.5.3", 3127 | "rimraf": "^3.0.2" 3128 | } 3129 | }, 3130 | "flatted": { 3131 | "version": "3.3.1", 3132 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 3133 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 3134 | "dev": true, 3135 | "peer": true 3136 | }, 3137 | "fs.realpath": { 3138 | "version": "1.0.0", 3139 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 3140 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 3141 | "dev": true, 3142 | "peer": true 3143 | }, 3144 | "glob": { 3145 | "version": "7.2.3", 3146 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 3147 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 3148 | "dev": true, 3149 | "peer": true, 3150 | "requires": { 3151 | "fs.realpath": "^1.0.0", 3152 | "inflight": "^1.0.4", 3153 | "inherits": "2", 3154 | "minimatch": "^3.1.1", 3155 | "once": "^1.3.0", 3156 | "path-is-absolute": "^1.0.0" 3157 | }, 3158 | "dependencies": { 3159 | "brace-expansion": { 3160 | "version": "1.1.11", 3161 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 3162 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 3163 | "dev": true, 3164 | "peer": true, 3165 | "requires": { 3166 | "balanced-match": "^1.0.0", 3167 | "concat-map": "0.0.1" 3168 | } 3169 | }, 3170 | "minimatch": { 3171 | "version": "3.1.2", 3172 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3173 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3174 | "dev": true, 3175 | "peer": true, 3176 | "requires": { 3177 | "brace-expansion": "^1.1.7" 3178 | } 3179 | } 3180 | } 3181 | }, 3182 | "glob-parent": { 3183 | "version": "6.0.2", 3184 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 3185 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 3186 | "dev": true, 3187 | "peer": true, 3188 | "requires": { 3189 | "is-glob": "^4.0.3" 3190 | } 3191 | }, 3192 | "globals": { 3193 | "version": "13.24.0", 3194 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 3195 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 3196 | "dev": true, 3197 | "peer": true, 3198 | "requires": { 3199 | "type-fest": "^0.20.2" 3200 | } 3201 | }, 3202 | "globby": { 3203 | "version": "11.1.0", 3204 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 3205 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 3206 | "dev": true, 3207 | "requires": { 3208 | "array-union": "^2.1.0", 3209 | "dir-glob": "^3.0.1", 3210 | "fast-glob": "^3.2.9", 3211 | "ignore": "^5.2.0", 3212 | "merge2": "^1.4.1", 3213 | "slash": "^3.0.0" 3214 | } 3215 | }, 3216 | "graphemer": { 3217 | "version": "1.4.0", 3218 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 3219 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 3220 | "dev": true 3221 | }, 3222 | "has-flag": { 3223 | "version": "4.0.0", 3224 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3225 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3226 | "dev": true, 3227 | "peer": true 3228 | }, 3229 | "ignore": { 3230 | "version": "5.3.1", 3231 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 3232 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 3233 | "dev": true 3234 | }, 3235 | "import-fresh": { 3236 | "version": "3.3.0", 3237 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 3238 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 3239 | "dev": true, 3240 | "peer": true, 3241 | "requires": { 3242 | "parent-module": "^1.0.0", 3243 | "resolve-from": "^4.0.0" 3244 | } 3245 | }, 3246 | "imurmurhash": { 3247 | "version": "0.1.4", 3248 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3249 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 3250 | "dev": true, 3251 | "peer": true 3252 | }, 3253 | "inflight": { 3254 | "version": "1.0.6", 3255 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3256 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 3257 | "dev": true, 3258 | "peer": true, 3259 | "requires": { 3260 | "once": "^1.3.0", 3261 | "wrappy": "1" 3262 | } 3263 | }, 3264 | "inherits": { 3265 | "version": "2.0.4", 3266 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3267 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3268 | "dev": true, 3269 | "peer": true 3270 | }, 3271 | "is-extglob": { 3272 | "version": "2.1.1", 3273 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3274 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3275 | "dev": true 3276 | }, 3277 | "is-glob": { 3278 | "version": "4.0.3", 3279 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3280 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3281 | "dev": true, 3282 | "requires": { 3283 | "is-extglob": "^2.1.1" 3284 | } 3285 | }, 3286 | "is-number": { 3287 | "version": "7.0.0", 3288 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3289 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3290 | "dev": true 3291 | }, 3292 | "is-path-inside": { 3293 | "version": "3.0.3", 3294 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 3295 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 3296 | "dev": true, 3297 | "peer": true 3298 | }, 3299 | "isexe": { 3300 | "version": "2.0.0", 3301 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3302 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3303 | "dev": true, 3304 | "peer": true 3305 | }, 3306 | "js-yaml": { 3307 | "version": "4.1.0", 3308 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3309 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3310 | "dev": true, 3311 | "peer": true, 3312 | "requires": { 3313 | "argparse": "^2.0.1" 3314 | } 3315 | }, 3316 | "json-buffer": { 3317 | "version": "3.0.1", 3318 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 3319 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3320 | "dev": true, 3321 | "peer": true 3322 | }, 3323 | "json-schema-traverse": { 3324 | "version": "0.4.1", 3325 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3326 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3327 | "dev": true, 3328 | "peer": true 3329 | }, 3330 | "json-stable-stringify-without-jsonify": { 3331 | "version": "1.0.1", 3332 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3333 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 3334 | "dev": true, 3335 | "peer": true 3336 | }, 3337 | "keyv": { 3338 | "version": "4.5.4", 3339 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 3340 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 3341 | "dev": true, 3342 | "peer": true, 3343 | "requires": { 3344 | "json-buffer": "3.0.1" 3345 | } 3346 | }, 3347 | "levn": { 3348 | "version": "0.4.1", 3349 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3350 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3351 | "dev": true, 3352 | "peer": true, 3353 | "requires": { 3354 | "prelude-ls": "^1.2.1", 3355 | "type-check": "~0.4.0" 3356 | } 3357 | }, 3358 | "locate-path": { 3359 | "version": "6.0.0", 3360 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3361 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3362 | "dev": true, 3363 | "peer": true, 3364 | "requires": { 3365 | "p-locate": "^5.0.0" 3366 | } 3367 | }, 3368 | "lodash.merge": { 3369 | "version": "4.6.2", 3370 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 3371 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 3372 | "dev": true, 3373 | "peer": true 3374 | }, 3375 | "merge2": { 3376 | "version": "1.4.1", 3377 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3378 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3379 | "dev": true 3380 | }, 3381 | "micromatch": { 3382 | "version": "4.0.7", 3383 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 3384 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 3385 | "dev": true, 3386 | "requires": { 3387 | "braces": "^3.0.3", 3388 | "picomatch": "^2.3.1" 3389 | } 3390 | }, 3391 | "minimatch": { 3392 | "version": "9.0.5", 3393 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 3394 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 3395 | "dev": true, 3396 | "requires": { 3397 | "brace-expansion": "^2.0.1" 3398 | } 3399 | }, 3400 | "moment": { 3401 | "version": "2.29.4", 3402 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 3403 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", 3404 | "dev": true 3405 | }, 3406 | "ms": { 3407 | "version": "2.1.2", 3408 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3409 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3410 | "dev": true 3411 | }, 3412 | "natural-compare": { 3413 | "version": "1.4.0", 3414 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3415 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3416 | "dev": true 3417 | }, 3418 | "obsidian": { 3419 | "version": "0.16.3", 3420 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.16.3.tgz", 3421 | "integrity": "sha512-hal9qk1A0GMhHSeLr2/+o3OpLmImiP+Y+sx2ewP13ds76KXsziG96n+IPFT0mSkup1zSwhEu+DeRhmbcyCCXWw==", 3422 | "dev": true, 3423 | "requires": { 3424 | "@types/codemirror": "0.0.108", 3425 | "moment": "2.29.4" 3426 | } 3427 | }, 3428 | "once": { 3429 | "version": "1.4.0", 3430 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3431 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3432 | "dev": true, 3433 | "peer": true, 3434 | "requires": { 3435 | "wrappy": "1" 3436 | } 3437 | }, 3438 | "optionator": { 3439 | "version": "0.9.4", 3440 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 3441 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 3442 | "dev": true, 3443 | "peer": true, 3444 | "requires": { 3445 | "deep-is": "^0.1.3", 3446 | "fast-levenshtein": "^2.0.6", 3447 | "levn": "^0.4.1", 3448 | "prelude-ls": "^1.2.1", 3449 | "type-check": "^0.4.0", 3450 | "word-wrap": "^1.2.5" 3451 | } 3452 | }, 3453 | "p-limit": { 3454 | "version": "3.1.0", 3455 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3456 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3457 | "dev": true, 3458 | "peer": true, 3459 | "requires": { 3460 | "yocto-queue": "^0.1.0" 3461 | } 3462 | }, 3463 | "p-locate": { 3464 | "version": "5.0.0", 3465 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3466 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3467 | "dev": true, 3468 | "peer": true, 3469 | "requires": { 3470 | "p-limit": "^3.0.2" 3471 | } 3472 | }, 3473 | "parent-module": { 3474 | "version": "1.0.1", 3475 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3476 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3477 | "dev": true, 3478 | "peer": true, 3479 | "requires": { 3480 | "callsites": "^3.0.0" 3481 | } 3482 | }, 3483 | "path-exists": { 3484 | "version": "4.0.0", 3485 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3486 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3487 | "dev": true, 3488 | "peer": true 3489 | }, 3490 | "path-is-absolute": { 3491 | "version": "1.0.1", 3492 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3493 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3494 | "dev": true, 3495 | "peer": true 3496 | }, 3497 | "path-key": { 3498 | "version": "3.1.1", 3499 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3500 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3501 | "dev": true, 3502 | "peer": true 3503 | }, 3504 | "path-type": { 3505 | "version": "4.0.0", 3506 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3507 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 3508 | "dev": true 3509 | }, 3510 | "picomatch": { 3511 | "version": "2.3.1", 3512 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3513 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3514 | "dev": true 3515 | }, 3516 | "prelude-ls": { 3517 | "version": "1.2.1", 3518 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3519 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3520 | "dev": true, 3521 | "peer": true 3522 | }, 3523 | "punycode": { 3524 | "version": "2.3.1", 3525 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3526 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3527 | "dev": true, 3528 | "peer": true 3529 | }, 3530 | "queue-microtask": { 3531 | "version": "1.2.3", 3532 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3533 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3534 | "dev": true 3535 | }, 3536 | "resolve-from": { 3537 | "version": "4.0.0", 3538 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3539 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3540 | "dev": true, 3541 | "peer": true 3542 | }, 3543 | "reusify": { 3544 | "version": "1.0.4", 3545 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3546 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3547 | "dev": true 3548 | }, 3549 | "rimraf": { 3550 | "version": "3.0.2", 3551 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3552 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3553 | "dev": true, 3554 | "peer": true, 3555 | "requires": { 3556 | "glob": "^7.1.3" 3557 | } 3558 | }, 3559 | "run-parallel": { 3560 | "version": "1.2.0", 3561 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3562 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3563 | "dev": true, 3564 | "requires": { 3565 | "queue-microtask": "^1.2.2" 3566 | } 3567 | }, 3568 | "semver": { 3569 | "version": "7.6.2", 3570 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", 3571 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", 3572 | "dev": true 3573 | }, 3574 | "shebang-command": { 3575 | "version": "2.0.0", 3576 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3577 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3578 | "dev": true, 3579 | "peer": true, 3580 | "requires": { 3581 | "shebang-regex": "^3.0.0" 3582 | } 3583 | }, 3584 | "shebang-regex": { 3585 | "version": "3.0.0", 3586 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3587 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3588 | "dev": true, 3589 | "peer": true 3590 | }, 3591 | "slash": { 3592 | "version": "3.0.0", 3593 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3594 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3595 | "dev": true 3596 | }, 3597 | "strip-ansi": { 3598 | "version": "6.0.1", 3599 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3600 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3601 | "dev": true, 3602 | "peer": true, 3603 | "requires": { 3604 | "ansi-regex": "^5.0.1" 3605 | } 3606 | }, 3607 | "strip-json-comments": { 3608 | "version": "3.1.1", 3609 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3610 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3611 | "dev": true, 3612 | "peer": true 3613 | }, 3614 | "style-mod": { 3615 | "version": "4.0.0", 3616 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", 3617 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", 3618 | "dev": true, 3619 | "peer": true 3620 | }, 3621 | "supports-color": { 3622 | "version": "7.2.0", 3623 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3624 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3625 | "dev": true, 3626 | "peer": true, 3627 | "requires": { 3628 | "has-flag": "^4.0.0" 3629 | } 3630 | }, 3631 | "text-table": { 3632 | "version": "0.2.0", 3633 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3634 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 3635 | "dev": true, 3636 | "peer": true 3637 | }, 3638 | "to-regex-range": { 3639 | "version": "5.0.1", 3640 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3641 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3642 | "dev": true, 3643 | "requires": { 3644 | "is-number": "^7.0.0" 3645 | } 3646 | }, 3647 | "ts-api-utils": { 3648 | "version": "1.3.0", 3649 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 3650 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 3651 | "dev": true, 3652 | "requires": {} 3653 | }, 3654 | "tslib": { 3655 | "version": "2.6.3", 3656 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", 3657 | "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", 3658 | "dev": true 3659 | }, 3660 | "type-check": { 3661 | "version": "0.4.0", 3662 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3663 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3664 | "dev": true, 3665 | "peer": true, 3666 | "requires": { 3667 | "prelude-ls": "^1.2.1" 3668 | } 3669 | }, 3670 | "type-fest": { 3671 | "version": "0.20.2", 3672 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3673 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 3674 | "dev": true, 3675 | "peer": true 3676 | }, 3677 | "typescript": { 3678 | "version": "5.5.2", 3679 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", 3680 | "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", 3681 | "dev": true 3682 | }, 3683 | "undici-types": { 3684 | "version": "5.26.5", 3685 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 3686 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 3687 | "dev": true 3688 | }, 3689 | "uri-js": { 3690 | "version": "4.4.1", 3691 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3692 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3693 | "dev": true, 3694 | "peer": true, 3695 | "requires": { 3696 | "punycode": "^2.1.0" 3697 | } 3698 | }, 3699 | "w3c-keyname": { 3700 | "version": "2.2.6", 3701 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", 3702 | "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", 3703 | "dev": true, 3704 | "peer": true 3705 | }, 3706 | "which": { 3707 | "version": "2.0.2", 3708 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3709 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3710 | "dev": true, 3711 | "peer": true, 3712 | "requires": { 3713 | "isexe": "^2.0.0" 3714 | } 3715 | }, 3716 | "word-wrap": { 3717 | "version": "1.2.5", 3718 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3719 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3720 | "dev": true, 3721 | "peer": true 3722 | }, 3723 | "wrappy": { 3724 | "version": "1.0.2", 3725 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3726 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3727 | "dev": true, 3728 | "peer": true 3729 | }, 3730 | "yocto-queue": { 3731 | "version": "0.1.0", 3732 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3733 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3734 | "dev": true, 3735 | "peer": true 3736 | } 3737 | } 3738 | } 3739 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-hide-folders", 3 | "version": "1.5.1", 4 | "description": "ObsidianMD plugin that hides & toggles configured folders (e.g. attachments folders).", 5 | "main": "main.js", 6 | "scripts": { 7 | "dev": "node esbuild.config.mjs", 8 | "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production && cp manifest.json dist", 9 | "build:testvault": "yarn build && mkdir -p fixtures/obsidian-hide-folders-test-vault/.obsidian/plugins/obsidian-hide-folders && cp -r dist/* fixtures/obsidian-hide-folders-test-vault/.obsidian/plugins/obsidian-hide-folders", 10 | "version": "node version-bump.mjs && git add manifest.json versions.json", 11 | "lint": "eslint ." 12 | }, 13 | "keywords": [], 14 | "author": "jonasdoesthings.com", 15 | "repository": "https://github.com/JonasDoesThings/obsidian-hide-folders.git", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/JonasDoesThings/obsidian-hide-folders/issues" 19 | }, 20 | "devDependencies": { 21 | "@types/node": "^20.14.9", 22 | "@typescript-eslint/eslint-plugin": "7.14.1", 23 | "@typescript-eslint/parser": "7.14.1", 24 | "builtin-modules": "4.0.0", 25 | "esbuild": "0.21.5", 26 | "obsidian": "latest", 27 | "tslib": "2.6.3", 28 | "typescript": "5.5.2" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "inlineSourceMap": true, 5 | "inlineSources": true, 6 | "module": "ESNext", 7 | "target": "ES6", 8 | "allowJs": true, 9 | "noImplicitAny": true, 10 | "moduleResolution": "node", 11 | "importHelpers": true, 12 | "isolatedModules": true, 13 | "strictNullChecks": true, 14 | "lib": [ 15 | "DOM", 16 | "ES5", 17 | "ES6", 18 | "ES7", 19 | "dom.iterable" 20 | ] 21 | }, 22 | "include": [ 23 | "**/*.ts" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /version-bump.mjs: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from "fs"; 2 | 3 | const targetVersion = process.env.npm_package_version; 4 | 5 | // read minAppVersion from manifest.json and bump version to target version 6 | let manifest = JSON.parse(readFileSync("manifest.json", "utf8")); 7 | const { minAppVersion } = manifest; 8 | manifest.version = targetVersion; 9 | writeFileSync("manifest.json", JSON.stringify(manifest, null, "\t")); 10 | 11 | // update versions.json with target version and minAppVersion from manifest.json 12 | let versions = JSON.parse(readFileSync("versions.json", "utf8")); 13 | versions[targetVersion] = minAppVersion; 14 | writeFileSync("versions.json", JSON.stringify(versions, null, "\t")); 15 | -------------------------------------------------------------------------------- /versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "1.0.0": "0.15.0", 3 | "1.0.1": "0.15.0", 4 | "1.0.2": "0.15.0", 5 | "1.0.3": "0.15.0", 6 | "1.1.0": "0.15.0", 7 | "1.1.1": "0.15.0", 8 | "1.2.0": "0.15.0", 9 | "1.2.1": "0.15.0", 10 | "1.3.0": "0.15.0", 11 | "1.4.0": "0.15.0", 12 | "1.4.1": "0.15.0", 13 | "1.4.2": "0.15.0", 14 | "1.5.0": "0.15.0", 15 | "1.5.1": "0.15.0" 16 | } 17 | --------------------------------------------------------------------------------