├── .eslintrc.js ├── .gitignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs └── CollapseAll.gif ├── esbuild.config.mjs ├── main.ts ├── manifest.json ├── package-lock.json ├── package.json ├── src ├── constants.ts ├── interfaces.ts ├── plugin.ts ├── provider │ ├── base.ts │ ├── bookmarks.ts │ ├── file-explorer.ts │ ├── global.ts │ ├── index.ts │ ├── search.ts │ └── tag-pane.ts ├── settings.ts └── types.ts ├── tsconfig.json └── versions.json /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | es2021: true, 4 | node: true 5 | }, 6 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], 7 | overrides: [ 8 | { 9 | env: { 10 | node: true 11 | }, 12 | files: ['.eslintrc.{js,cjs}'], 13 | parserOptions: { 14 | sourceType: 'script' 15 | } 16 | } 17 | ], 18 | parser: '@typescript-eslint/parser', 19 | parserOptions: { 20 | ecmaVersion: 'latest', 21 | sourceType: 'module' 22 | }, 23 | plugins: ['@typescript-eslint'], 24 | rules: { 25 | '@typescript-eslint/no-unused-vars': [ 26 | 'error', 27 | { 28 | args: 'all', 29 | argsIgnorePattern: '^_', 30 | caughtErrors: 'all', 31 | caughtErrorsIgnorePattern: '^_', 32 | destructuredArrayIgnorePattern: '^_', 33 | varsIgnorePattern: '^_', 34 | ignoreRestSiblings: true 35 | } 36 | ] 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Intellij 2 | *.iml 3 | .idea 4 | 5 | # npm 6 | node_modules 7 | 8 | # build 9 | main.js 10 | *.js.map 11 | 12 | # obsidian 13 | data.json 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "arrowParens": "always", 4 | "semi": true, 5 | "trailingComma": "none" 6 | } 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 2.1.0 2 | 3 | ## Features 4 | 5 | - Bookmarks view supports all three command options 6 | 7 | ## Fixes 8 | 9 | - Restored functionality of all providers 10 | - Tag pane no longer supports collapse and expand commands, only toggle 11 | - This was a bug previously, the collapse and expand commands were not reliable. 12 | 13 | # 2.0.0 14 | 15 | ## Breaking Changes 16 | 17 | - The plugin has been largely re-written. It now uses Obsidian's internal collapse / expand logic. 18 | - Collapse / expand via file explorer context menu is removed. 19 | - Settings and hotkeys will likely need to be reset. 20 | 21 | ## Features 22 | 23 | - Each set of commands now includes a "toggle" command as well as the collapse and expand commands. 24 | - Support for search view 25 | - Support for bookmarks view 26 | 27 | ## Fixes 28 | 29 | - Commands will be added immediately when toggled on in settings. 30 | 31 | # 1.5.3 32 | 33 | ## Fixes 34 | 35 | - Collapse button alignment corrected for v0.16.0+ 36 | 37 | # 1.5.2 38 | 39 | ## Fixes 40 | 41 | - Tag pane provider fixed for v0.15.0+ 42 | 43 | # 1.5.1 44 | 45 | ## Fixes 46 | 47 | - Include the selected folder when collapsing or expanding a specific folder 48 | 49 | # 1.5.0 50 | 51 | ## Features 52 | 53 | - Attachment folders are not expanded by default. 54 | - New commands are added to the file explorer right click menu to collapse or expand an individual folder and its children. 55 | 56 | # 1.4.0 57 | 58 | ## Features 59 | 60 | - Added an option to split into two separate collapse and expand buttons 61 | - Added commands to collapse only the file explorers or only the tag panes. These commands can be enabled in settings. 62 | 63 | ## Fixes 64 | 65 | - Fixed inconsistent Obsidian app version requirements 66 | 67 | # 1.3.0 68 | 69 | ## Features 70 | 71 | - Expanded functionality to tag pane. (@ebullient) 72 | 73 | # 1.2.0 74 | 75 | ## Features 76 | 77 | - Enabled for mobile app. 78 | 79 | # 1.1.0 80 | 81 | ## Features 82 | 83 | - Added "expand all" functionality to compliment collapsing. 84 | 85 | ## Fixes 86 | 87 | - Collapse all button now uses sentence case rather than title case for its label to match the other buttons in the file explorer. 88 | 89 | # 1.0.0 90 | 91 | - Initial release. 92 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Nathan Smith 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Collapse All Plugin 2 | 3 | Extends Obsidian's collapse / expand all functions with bindable commands. 4 | 5 | ## Usage 6 | 7 | Commands can be toggled on or off in settings. Each set of commands has a collapse, expand, and toggle that can be called from the command palette or bound to a hotkey. 8 | 9 | ### Supported Views 10 | 11 | - File Explorer 12 | - Tag Pane 13 | - Search 14 | - Does not support collapse toggle, only expand and collapse 15 | - Bookmarks 16 | - Only supports toggle, may be a bit finnicky 17 | - Global (all supported views) 18 | 19 | ## Changelog 20 | 21 | See [Changelog](CHANGELOG.md). 22 | -------------------------------------------------------------------------------- /docs/CollapseAll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nathonius/obsidian-collapse-all/96ea525479b61dc7d7fe8c1fee92137d614c55db/docs/CollapseAll.gif -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import { CollapseAllPlugin } from './src/plugin'; 2 | 3 | export default CollapseAllPlugin; 4 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "obsidian-collapse-all-plugin", 3 | "name": "Collapse All", 4 | "version": "2.1.0", 5 | "minAppVersion": "1.5.11", 6 | "description": "Extends collapse/expand all with commands that can be bound to hotkeys.", 7 | "author": "Nathonius", 8 | "authorUrl": "https://nathan-smith.org/", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-collapse-all-plugin", 3 | "version": "2.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "obsidian-collapse-all-plugin", 9 | "version": "2.1.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@types/node": "^16.11.6", 13 | "@typescript-eslint/eslint-plugin": "^7.3.1", 14 | "@typescript-eslint/parser": "^7.3.1", 15 | "builtin-modules": "3.3.0", 16 | "esbuild": "0.17.3", 17 | "eslint": "^8.57.0", 18 | "obsidian": "latest", 19 | "tslib": "2.4.0", 20 | "typescript": "4.7.4" 21 | } 22 | }, 23 | "node_modules/@aashutoshrathi/word-wrap": { 24 | "version": "1.2.6", 25 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 26 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 27 | "dev": true, 28 | "engines": { 29 | "node": ">=0.10.0" 30 | } 31 | }, 32 | "node_modules/@esbuild/android-arm": { 33 | "version": "0.17.3", 34 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.3.tgz", 35 | "integrity": "sha512-1Mlz934GvbgdDmt26rTLmf03cAgLg5HyOgJN+ZGCeP3Q9ynYTNMn2/LQxIl7Uy+o4K6Rfi2OuLsr12JQQR8gNg==", 36 | "cpu": [ 37 | "arm" 38 | ], 39 | "dev": true, 40 | "optional": true, 41 | "os": [ 42 | "android" 43 | ], 44 | "engines": { 45 | "node": ">=12" 46 | } 47 | }, 48 | "node_modules/@esbuild/android-arm64": { 49 | "version": "0.17.3", 50 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.3.tgz", 51 | "integrity": "sha512-XvJsYo3dO3Pi4kpalkyMvfQsjxPWHYjoX4MDiB/FUM4YMfWcXa5l4VCwFWVYI1+92yxqjuqrhNg0CZg3gSouyQ==", 52 | "cpu": [ 53 | "arm64" 54 | ], 55 | "dev": true, 56 | "optional": true, 57 | "os": [ 58 | "android" 59 | ], 60 | "engines": { 61 | "node": ">=12" 62 | } 63 | }, 64 | "node_modules/@esbuild/android-x64": { 65 | "version": "0.17.3", 66 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.3.tgz", 67 | "integrity": "sha512-nuV2CmLS07Gqh5/GrZLuqkU9Bm6H6vcCspM+zjp9TdQlxJtIe+qqEXQChmfc7nWdyr/yz3h45Utk1tUn8Cz5+A==", 68 | "cpu": [ 69 | "x64" 70 | ], 71 | "dev": true, 72 | "optional": true, 73 | "os": [ 74 | "android" 75 | ], 76 | "engines": { 77 | "node": ">=12" 78 | } 79 | }, 80 | "node_modules/@esbuild/darwin-arm64": { 81 | "version": "0.17.3", 82 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.3.tgz", 83 | "integrity": "sha512-01Hxaaat6m0Xp9AXGM8mjFtqqwDjzlMP0eQq9zll9U85ttVALGCGDuEvra5Feu/NbP5AEP1MaopPwzsTcUq1cw==", 84 | "cpu": [ 85 | "arm64" 86 | ], 87 | "dev": true, 88 | "optional": true, 89 | "os": [ 90 | "darwin" 91 | ], 92 | "engines": { 93 | "node": ">=12" 94 | } 95 | }, 96 | "node_modules/@esbuild/darwin-x64": { 97 | "version": "0.17.3", 98 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.3.tgz", 99 | "integrity": "sha512-Eo2gq0Q/er2muf8Z83X21UFoB7EU6/m3GNKvrhACJkjVThd0uA+8RfKpfNhuMCl1bKRfBzKOk6xaYKQZ4lZqvA==", 100 | "cpu": [ 101 | "x64" 102 | ], 103 | "dev": true, 104 | "optional": true, 105 | "os": [ 106 | "darwin" 107 | ], 108 | "engines": { 109 | "node": ">=12" 110 | } 111 | }, 112 | "node_modules/@esbuild/freebsd-arm64": { 113 | "version": "0.17.3", 114 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.3.tgz", 115 | "integrity": "sha512-CN62ESxaquP61n1ZjQP/jZte8CE09M6kNn3baos2SeUfdVBkWN5n6vGp2iKyb/bm/x4JQzEvJgRHLGd5F5b81w==", 116 | "cpu": [ 117 | "arm64" 118 | ], 119 | "dev": true, 120 | "optional": true, 121 | "os": [ 122 | "freebsd" 123 | ], 124 | "engines": { 125 | "node": ">=12" 126 | } 127 | }, 128 | "node_modules/@esbuild/freebsd-x64": { 129 | "version": "0.17.3", 130 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.3.tgz", 131 | "integrity": "sha512-feq+K8TxIznZE+zhdVurF3WNJ/Sa35dQNYbaqM/wsCbWdzXr5lyq+AaTUSER2cUR+SXPnd/EY75EPRjf4s1SLg==", 132 | "cpu": [ 133 | "x64" 134 | ], 135 | "dev": true, 136 | "optional": true, 137 | "os": [ 138 | "freebsd" 139 | ], 140 | "engines": { 141 | "node": ">=12" 142 | } 143 | }, 144 | "node_modules/@esbuild/linux-arm": { 145 | "version": "0.17.3", 146 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.3.tgz", 147 | "integrity": "sha512-CLP3EgyNuPcg2cshbwkqYy5bbAgK+VhyfMU7oIYyn+x4Y67xb5C5ylxsNUjRmr8BX+MW3YhVNm6Lq6FKtRTWHQ==", 148 | "cpu": [ 149 | "arm" 150 | ], 151 | "dev": true, 152 | "optional": true, 153 | "os": [ 154 | "linux" 155 | ], 156 | "engines": { 157 | "node": ">=12" 158 | } 159 | }, 160 | "node_modules/@esbuild/linux-arm64": { 161 | "version": "0.17.3", 162 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.3.tgz", 163 | "integrity": "sha512-JHeZXD4auLYBnrKn6JYJ0o5nWJI9PhChA/Nt0G4MvLaMrvXuWnY93R3a7PiXeJQphpL1nYsaMcoV2QtuvRnF/g==", 164 | "cpu": [ 165 | "arm64" 166 | ], 167 | "dev": true, 168 | "optional": true, 169 | "os": [ 170 | "linux" 171 | ], 172 | "engines": { 173 | "node": ">=12" 174 | } 175 | }, 176 | "node_modules/@esbuild/linux-ia32": { 177 | "version": "0.17.3", 178 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.3.tgz", 179 | "integrity": "sha512-FyXlD2ZjZqTFh0sOQxFDiWG1uQUEOLbEh9gKN/7pFxck5Vw0qjWSDqbn6C10GAa1rXJpwsntHcmLqydY9ST9ZA==", 180 | "cpu": [ 181 | "ia32" 182 | ], 183 | "dev": true, 184 | "optional": true, 185 | "os": [ 186 | "linux" 187 | ], 188 | "engines": { 189 | "node": ">=12" 190 | } 191 | }, 192 | "node_modules/@esbuild/linux-loong64": { 193 | "version": "0.17.3", 194 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.3.tgz", 195 | "integrity": "sha512-OrDGMvDBI2g7s04J8dh8/I7eSO+/E7nMDT2Z5IruBfUO/RiigF1OF6xoH33Dn4W/OwAWSUf1s2nXamb28ZklTA==", 196 | "cpu": [ 197 | "loong64" 198 | ], 199 | "dev": true, 200 | "optional": true, 201 | "os": [ 202 | "linux" 203 | ], 204 | "engines": { 205 | "node": ">=12" 206 | } 207 | }, 208 | "node_modules/@esbuild/linux-mips64el": { 209 | "version": "0.17.3", 210 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.3.tgz", 211 | "integrity": "sha512-DcnUpXnVCJvmv0TzuLwKBC2nsQHle8EIiAJiJ+PipEVC16wHXaPEKP0EqN8WnBe0TPvMITOUlP2aiL5YMld+CQ==", 212 | "cpu": [ 213 | "mips64el" 214 | ], 215 | "dev": true, 216 | "optional": true, 217 | "os": [ 218 | "linux" 219 | ], 220 | "engines": { 221 | "node": ">=12" 222 | } 223 | }, 224 | "node_modules/@esbuild/linux-ppc64": { 225 | "version": "0.17.3", 226 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.3.tgz", 227 | "integrity": "sha512-BDYf/l1WVhWE+FHAW3FzZPtVlk9QsrwsxGzABmN4g8bTjmhazsId3h127pliDRRu5674k1Y2RWejbpN46N9ZhQ==", 228 | "cpu": [ 229 | "ppc64" 230 | ], 231 | "dev": true, 232 | "optional": true, 233 | "os": [ 234 | "linux" 235 | ], 236 | "engines": { 237 | "node": ">=12" 238 | } 239 | }, 240 | "node_modules/@esbuild/linux-riscv64": { 241 | "version": "0.17.3", 242 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.3.tgz", 243 | "integrity": "sha512-WViAxWYMRIi+prTJTyV1wnqd2mS2cPqJlN85oscVhXdb/ZTFJdrpaqm/uDsZPGKHtbg5TuRX/ymKdOSk41YZow==", 244 | "cpu": [ 245 | "riscv64" 246 | ], 247 | "dev": true, 248 | "optional": true, 249 | "os": [ 250 | "linux" 251 | ], 252 | "engines": { 253 | "node": ">=12" 254 | } 255 | }, 256 | "node_modules/@esbuild/linux-s390x": { 257 | "version": "0.17.3", 258 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.3.tgz", 259 | "integrity": "sha512-Iw8lkNHUC4oGP1O/KhumcVy77u2s6+KUjieUqzEU3XuWJqZ+AY7uVMrrCbAiwWTkpQHkr00BuXH5RpC6Sb/7Ug==", 260 | "cpu": [ 261 | "s390x" 262 | ], 263 | "dev": true, 264 | "optional": true, 265 | "os": [ 266 | "linux" 267 | ], 268 | "engines": { 269 | "node": ">=12" 270 | } 271 | }, 272 | "node_modules/@esbuild/linux-x64": { 273 | "version": "0.17.3", 274 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.3.tgz", 275 | "integrity": "sha512-0AGkWQMzeoeAtXQRNB3s4J1/T2XbigM2/Mn2yU1tQSmQRmHIZdkGbVq2A3aDdNslPyhb9/lH0S5GMTZ4xsjBqg==", 276 | "cpu": [ 277 | "x64" 278 | ], 279 | "dev": true, 280 | "optional": true, 281 | "os": [ 282 | "linux" 283 | ], 284 | "engines": { 285 | "node": ">=12" 286 | } 287 | }, 288 | "node_modules/@esbuild/netbsd-x64": { 289 | "version": "0.17.3", 290 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.3.tgz", 291 | "integrity": "sha512-4+rR/WHOxIVh53UIQIICryjdoKdHsFZFD4zLSonJ9RRw7bhKzVyXbnRPsWSfwybYqw9sB7ots/SYyufL1mBpEg==", 292 | "cpu": [ 293 | "x64" 294 | ], 295 | "dev": true, 296 | "optional": true, 297 | "os": [ 298 | "netbsd" 299 | ], 300 | "engines": { 301 | "node": ">=12" 302 | } 303 | }, 304 | "node_modules/@esbuild/openbsd-x64": { 305 | "version": "0.17.3", 306 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.3.tgz", 307 | "integrity": "sha512-cVpWnkx9IYg99EjGxa5Gc0XmqumtAwK3aoz7O4Dii2vko+qXbkHoujWA68cqXjhh6TsLaQelfDO4MVnyr+ODeA==", 308 | "cpu": [ 309 | "x64" 310 | ], 311 | "dev": true, 312 | "optional": true, 313 | "os": [ 314 | "openbsd" 315 | ], 316 | "engines": { 317 | "node": ">=12" 318 | } 319 | }, 320 | "node_modules/@esbuild/sunos-x64": { 321 | "version": "0.17.3", 322 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.3.tgz", 323 | "integrity": "sha512-RxmhKLbTCDAY2xOfrww6ieIZkZF+KBqG7S2Ako2SljKXRFi+0863PspK74QQ7JpmWwncChY25JTJSbVBYGQk2Q==", 324 | "cpu": [ 325 | "x64" 326 | ], 327 | "dev": true, 328 | "optional": true, 329 | "os": [ 330 | "sunos" 331 | ], 332 | "engines": { 333 | "node": ">=12" 334 | } 335 | }, 336 | "node_modules/@esbuild/win32-arm64": { 337 | "version": "0.17.3", 338 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.3.tgz", 339 | "integrity": "sha512-0r36VeEJ4efwmofxVJRXDjVRP2jTmv877zc+i+Pc7MNsIr38NfsjkQj23AfF7l0WbB+RQ7VUb+LDiqC/KY/M/A==", 340 | "cpu": [ 341 | "arm64" 342 | ], 343 | "dev": true, 344 | "optional": true, 345 | "os": [ 346 | "win32" 347 | ], 348 | "engines": { 349 | "node": ">=12" 350 | } 351 | }, 352 | "node_modules/@esbuild/win32-ia32": { 353 | "version": "0.17.3", 354 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.3.tgz", 355 | "integrity": "sha512-wgO6rc7uGStH22nur4aLFcq7Wh86bE9cOFmfTr/yxN3BXvDEdCSXyKkO+U5JIt53eTOgC47v9k/C1bITWL/Teg==", 356 | "cpu": [ 357 | "ia32" 358 | ], 359 | "dev": true, 360 | "optional": true, 361 | "os": [ 362 | "win32" 363 | ], 364 | "engines": { 365 | "node": ">=12" 366 | } 367 | }, 368 | "node_modules/@esbuild/win32-x64": { 369 | "version": "0.17.3", 370 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.3.tgz", 371 | "integrity": "sha512-FdVl64OIuiKjgXBjwZaJLKp0eaEckifbhn10dXWhysMJkWblg3OEEGKSIyhiD5RSgAya8WzP3DNkngtIg3Nt7g==", 372 | "cpu": [ 373 | "x64" 374 | ], 375 | "dev": true, 376 | "optional": true, 377 | "os": [ 378 | "win32" 379 | ], 380 | "engines": { 381 | "node": ">=12" 382 | } 383 | }, 384 | "node_modules/@eslint-community/eslint-utils": { 385 | "version": "4.4.0", 386 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 387 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 388 | "dev": true, 389 | "dependencies": { 390 | "eslint-visitor-keys": "^3.3.0" 391 | }, 392 | "engines": { 393 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 394 | }, 395 | "peerDependencies": { 396 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 397 | } 398 | }, 399 | "node_modules/@eslint-community/regexpp": { 400 | "version": "4.10.0", 401 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 402 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 403 | "dev": true, 404 | "engines": { 405 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 406 | } 407 | }, 408 | "node_modules/@eslint/eslintrc": { 409 | "version": "2.1.4", 410 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 411 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 412 | "dev": true, 413 | "dependencies": { 414 | "ajv": "^6.12.4", 415 | "debug": "^4.3.2", 416 | "espree": "^9.6.0", 417 | "globals": "^13.19.0", 418 | "ignore": "^5.2.0", 419 | "import-fresh": "^3.2.1", 420 | "js-yaml": "^4.1.0", 421 | "minimatch": "^3.1.2", 422 | "strip-json-comments": "^3.1.1" 423 | }, 424 | "engines": { 425 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 426 | }, 427 | "funding": { 428 | "url": "https://opencollective.com/eslint" 429 | } 430 | }, 431 | "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { 432 | "version": "1.1.11", 433 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 434 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 435 | "dev": true, 436 | "dependencies": { 437 | "balanced-match": "^1.0.0", 438 | "concat-map": "0.0.1" 439 | } 440 | }, 441 | "node_modules/@eslint/eslintrc/node_modules/minimatch": { 442 | "version": "3.1.2", 443 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 444 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 445 | "dev": true, 446 | "dependencies": { 447 | "brace-expansion": "^1.1.7" 448 | }, 449 | "engines": { 450 | "node": "*" 451 | } 452 | }, 453 | "node_modules/@eslint/js": { 454 | "version": "8.57.0", 455 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 456 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 457 | "dev": true, 458 | "engines": { 459 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 460 | } 461 | }, 462 | "node_modules/@humanwhocodes/config-array": { 463 | "version": "0.11.14", 464 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 465 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 466 | "dev": true, 467 | "dependencies": { 468 | "@humanwhocodes/object-schema": "^2.0.2", 469 | "debug": "^4.3.1", 470 | "minimatch": "^3.0.5" 471 | }, 472 | "engines": { 473 | "node": ">=10.10.0" 474 | } 475 | }, 476 | "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { 477 | "version": "1.1.11", 478 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 479 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 480 | "dev": true, 481 | "dependencies": { 482 | "balanced-match": "^1.0.0", 483 | "concat-map": "0.0.1" 484 | } 485 | }, 486 | "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { 487 | "version": "3.1.2", 488 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 489 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 490 | "dev": true, 491 | "dependencies": { 492 | "brace-expansion": "^1.1.7" 493 | }, 494 | "engines": { 495 | "node": "*" 496 | } 497 | }, 498 | "node_modules/@humanwhocodes/module-importer": { 499 | "version": "1.0.1", 500 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 501 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 502 | "dev": true, 503 | "engines": { 504 | "node": ">=12.22" 505 | }, 506 | "funding": { 507 | "type": "github", 508 | "url": "https://github.com/sponsors/nzakas" 509 | } 510 | }, 511 | "node_modules/@humanwhocodes/object-schema": { 512 | "version": "2.0.2", 513 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", 514 | "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", 515 | "dev": true 516 | }, 517 | "node_modules/@nodelib/fs.scandir": { 518 | "version": "2.1.5", 519 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 520 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 521 | "dev": true, 522 | "dependencies": { 523 | "@nodelib/fs.stat": "2.0.5", 524 | "run-parallel": "^1.1.9" 525 | }, 526 | "engines": { 527 | "node": ">= 8" 528 | } 529 | }, 530 | "node_modules/@nodelib/fs.stat": { 531 | "version": "2.0.5", 532 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 533 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 534 | "dev": true, 535 | "engines": { 536 | "node": ">= 8" 537 | } 538 | }, 539 | "node_modules/@nodelib/fs.walk": { 540 | "version": "1.2.8", 541 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 542 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 543 | "dev": true, 544 | "dependencies": { 545 | "@nodelib/fs.scandir": "2.1.5", 546 | "fastq": "^1.6.0" 547 | }, 548 | "engines": { 549 | "node": ">= 8" 550 | } 551 | }, 552 | "node_modules/@types/codemirror": { 553 | "version": "0.0.108", 554 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 555 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 556 | "dev": true, 557 | "dependencies": { 558 | "@types/tern": "*" 559 | } 560 | }, 561 | "node_modules/@types/estree": { 562 | "version": "0.0.39", 563 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 564 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 565 | "dev": true 566 | }, 567 | "node_modules/@types/json-schema": { 568 | "version": "7.0.15", 569 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 570 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 571 | "dev": true 572 | }, 573 | "node_modules/@types/node": { 574 | "version": "16.18.39", 575 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.39.tgz", 576 | "integrity": "sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==", 577 | "dev": true 578 | }, 579 | "node_modules/@types/semver": { 580 | "version": "7.5.8", 581 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 582 | "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 583 | "dev": true 584 | }, 585 | "node_modules/@types/tern": { 586 | "version": "0.23.4", 587 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 588 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 589 | "dev": true, 590 | "dependencies": { 591 | "@types/estree": "*" 592 | } 593 | }, 594 | "node_modules/@typescript-eslint/eslint-plugin": { 595 | "version": "7.3.1", 596 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", 597 | "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", 598 | "dev": true, 599 | "dependencies": { 600 | "@eslint-community/regexpp": "^4.5.1", 601 | "@typescript-eslint/scope-manager": "7.3.1", 602 | "@typescript-eslint/type-utils": "7.3.1", 603 | "@typescript-eslint/utils": "7.3.1", 604 | "@typescript-eslint/visitor-keys": "7.3.1", 605 | "debug": "^4.3.4", 606 | "graphemer": "^1.4.0", 607 | "ignore": "^5.2.4", 608 | "natural-compare": "^1.4.0", 609 | "semver": "^7.5.4", 610 | "ts-api-utils": "^1.0.1" 611 | }, 612 | "engines": { 613 | "node": "^18.18.0 || >=20.0.0" 614 | }, 615 | "funding": { 616 | "type": "opencollective", 617 | "url": "https://opencollective.com/typescript-eslint" 618 | }, 619 | "peerDependencies": { 620 | "@typescript-eslint/parser": "^7.0.0", 621 | "eslint": "^8.56.0" 622 | }, 623 | "peerDependenciesMeta": { 624 | "typescript": { 625 | "optional": true 626 | } 627 | } 628 | }, 629 | "node_modules/@typescript-eslint/parser": { 630 | "version": "7.3.1", 631 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", 632 | "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", 633 | "dev": true, 634 | "dependencies": { 635 | "@typescript-eslint/scope-manager": "7.3.1", 636 | "@typescript-eslint/types": "7.3.1", 637 | "@typescript-eslint/typescript-estree": "7.3.1", 638 | "@typescript-eslint/visitor-keys": "7.3.1", 639 | "debug": "^4.3.4" 640 | }, 641 | "engines": { 642 | "node": "^18.18.0 || >=20.0.0" 643 | }, 644 | "funding": { 645 | "type": "opencollective", 646 | "url": "https://opencollective.com/typescript-eslint" 647 | }, 648 | "peerDependencies": { 649 | "eslint": "^8.56.0" 650 | }, 651 | "peerDependenciesMeta": { 652 | "typescript": { 653 | "optional": true 654 | } 655 | } 656 | }, 657 | "node_modules/@typescript-eslint/scope-manager": { 658 | "version": "7.3.1", 659 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", 660 | "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", 661 | "dev": true, 662 | "dependencies": { 663 | "@typescript-eslint/types": "7.3.1", 664 | "@typescript-eslint/visitor-keys": "7.3.1" 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 | }, 674 | "node_modules/@typescript-eslint/type-utils": { 675 | "version": "7.3.1", 676 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", 677 | "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", 678 | "dev": true, 679 | "dependencies": { 680 | "@typescript-eslint/typescript-estree": "7.3.1", 681 | "@typescript-eslint/utils": "7.3.1", 682 | "debug": "^4.3.4", 683 | "ts-api-utils": "^1.0.1" 684 | }, 685 | "engines": { 686 | "node": "^18.18.0 || >=20.0.0" 687 | }, 688 | "funding": { 689 | "type": "opencollective", 690 | "url": "https://opencollective.com/typescript-eslint" 691 | }, 692 | "peerDependencies": { 693 | "eslint": "^8.56.0" 694 | }, 695 | "peerDependenciesMeta": { 696 | "typescript": { 697 | "optional": true 698 | } 699 | } 700 | }, 701 | "node_modules/@typescript-eslint/types": { 702 | "version": "7.3.1", 703 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", 704 | "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", 705 | "dev": true, 706 | "engines": { 707 | "node": "^18.18.0 || >=20.0.0" 708 | }, 709 | "funding": { 710 | "type": "opencollective", 711 | "url": "https://opencollective.com/typescript-eslint" 712 | } 713 | }, 714 | "node_modules/@typescript-eslint/typescript-estree": { 715 | "version": "7.3.1", 716 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", 717 | "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", 718 | "dev": true, 719 | "dependencies": { 720 | "@typescript-eslint/types": "7.3.1", 721 | "@typescript-eslint/visitor-keys": "7.3.1", 722 | "debug": "^4.3.4", 723 | "globby": "^11.1.0", 724 | "is-glob": "^4.0.3", 725 | "minimatch": "9.0.3", 726 | "semver": "^7.5.4", 727 | "ts-api-utils": "^1.0.1" 728 | }, 729 | "engines": { 730 | "node": "^18.18.0 || >=20.0.0" 731 | }, 732 | "funding": { 733 | "type": "opencollective", 734 | "url": "https://opencollective.com/typescript-eslint" 735 | }, 736 | "peerDependenciesMeta": { 737 | "typescript": { 738 | "optional": true 739 | } 740 | } 741 | }, 742 | "node_modules/@typescript-eslint/utils": { 743 | "version": "7.3.1", 744 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", 745 | "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", 746 | "dev": true, 747 | "dependencies": { 748 | "@eslint-community/eslint-utils": "^4.4.0", 749 | "@types/json-schema": "^7.0.12", 750 | "@types/semver": "^7.5.0", 751 | "@typescript-eslint/scope-manager": "7.3.1", 752 | "@typescript-eslint/types": "7.3.1", 753 | "@typescript-eslint/typescript-estree": "7.3.1", 754 | "semver": "^7.5.4" 755 | }, 756 | "engines": { 757 | "node": "^18.18.0 || >=20.0.0" 758 | }, 759 | "funding": { 760 | "type": "opencollective", 761 | "url": "https://opencollective.com/typescript-eslint" 762 | }, 763 | "peerDependencies": { 764 | "eslint": "^8.56.0" 765 | } 766 | }, 767 | "node_modules/@typescript-eslint/visitor-keys": { 768 | "version": "7.3.1", 769 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", 770 | "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", 771 | "dev": true, 772 | "dependencies": { 773 | "@typescript-eslint/types": "7.3.1", 774 | "eslint-visitor-keys": "^3.4.1" 775 | }, 776 | "engines": { 777 | "node": "^18.18.0 || >=20.0.0" 778 | }, 779 | "funding": { 780 | "type": "opencollective", 781 | "url": "https://opencollective.com/typescript-eslint" 782 | } 783 | }, 784 | "node_modules/@ungap/structured-clone": { 785 | "version": "1.2.0", 786 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 787 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 788 | "dev": true 789 | }, 790 | "node_modules/acorn": { 791 | "version": "8.11.3", 792 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 793 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 794 | "dev": true, 795 | "bin": { 796 | "acorn": "bin/acorn" 797 | }, 798 | "engines": { 799 | "node": ">=0.4.0" 800 | } 801 | }, 802 | "node_modules/acorn-jsx": { 803 | "version": "5.3.2", 804 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 805 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 806 | "dev": true, 807 | "peerDependencies": { 808 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 809 | } 810 | }, 811 | "node_modules/ajv": { 812 | "version": "6.12.6", 813 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 814 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 815 | "dev": true, 816 | "dependencies": { 817 | "fast-deep-equal": "^3.1.1", 818 | "fast-json-stable-stringify": "^2.0.0", 819 | "json-schema-traverse": "^0.4.1", 820 | "uri-js": "^4.2.2" 821 | }, 822 | "funding": { 823 | "type": "github", 824 | "url": "https://github.com/sponsors/epoberezkin" 825 | } 826 | }, 827 | "node_modules/ansi-regex": { 828 | "version": "5.0.1", 829 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 830 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 831 | "dev": true, 832 | "engines": { 833 | "node": ">=8" 834 | } 835 | }, 836 | "node_modules/ansi-styles": { 837 | "version": "4.3.0", 838 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 839 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 840 | "dev": true, 841 | "dependencies": { 842 | "color-convert": "^2.0.1" 843 | }, 844 | "engines": { 845 | "node": ">=8" 846 | }, 847 | "funding": { 848 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 849 | } 850 | }, 851 | "node_modules/argparse": { 852 | "version": "2.0.1", 853 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 854 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 855 | "dev": true 856 | }, 857 | "node_modules/array-union": { 858 | "version": "2.1.0", 859 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 860 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 861 | "dev": true, 862 | "engines": { 863 | "node": ">=8" 864 | } 865 | }, 866 | "node_modules/balanced-match": { 867 | "version": "1.0.2", 868 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 869 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 870 | "dev": true 871 | }, 872 | "node_modules/brace-expansion": { 873 | "version": "2.0.1", 874 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 875 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 876 | "dev": true, 877 | "dependencies": { 878 | "balanced-match": "^1.0.0" 879 | } 880 | }, 881 | "node_modules/braces": { 882 | "version": "3.0.2", 883 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 884 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 885 | "dev": true, 886 | "dependencies": { 887 | "fill-range": "^7.0.1" 888 | }, 889 | "engines": { 890 | "node": ">=8" 891 | } 892 | }, 893 | "node_modules/builtin-modules": { 894 | "version": "3.3.0", 895 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 896 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 897 | "dev": true, 898 | "engines": { 899 | "node": ">=6" 900 | }, 901 | "funding": { 902 | "url": "https://github.com/sponsors/sindresorhus" 903 | } 904 | }, 905 | "node_modules/callsites": { 906 | "version": "3.1.0", 907 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 908 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 909 | "dev": true, 910 | "engines": { 911 | "node": ">=6" 912 | } 913 | }, 914 | "node_modules/chalk": { 915 | "version": "4.1.2", 916 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 917 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 918 | "dev": true, 919 | "dependencies": { 920 | "ansi-styles": "^4.1.0", 921 | "supports-color": "^7.1.0" 922 | }, 923 | "engines": { 924 | "node": ">=10" 925 | }, 926 | "funding": { 927 | "url": "https://github.com/chalk/chalk?sponsor=1" 928 | } 929 | }, 930 | "node_modules/color-convert": { 931 | "version": "2.0.1", 932 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 933 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 934 | "dev": true, 935 | "dependencies": { 936 | "color-name": "~1.1.4" 937 | }, 938 | "engines": { 939 | "node": ">=7.0.0" 940 | } 941 | }, 942 | "node_modules/color-name": { 943 | "version": "1.1.4", 944 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 945 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 946 | "dev": true 947 | }, 948 | "node_modules/concat-map": { 949 | "version": "0.0.1", 950 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 951 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 952 | "dev": true 953 | }, 954 | "node_modules/cross-spawn": { 955 | "version": "7.0.3", 956 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 957 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 958 | "dev": true, 959 | "dependencies": { 960 | "path-key": "^3.1.0", 961 | "shebang-command": "^2.0.0", 962 | "which": "^2.0.1" 963 | }, 964 | "engines": { 965 | "node": ">= 8" 966 | } 967 | }, 968 | "node_modules/debug": { 969 | "version": "4.3.4", 970 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 971 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 972 | "dev": true, 973 | "dependencies": { 974 | "ms": "2.1.2" 975 | }, 976 | "engines": { 977 | "node": ">=6.0" 978 | }, 979 | "peerDependenciesMeta": { 980 | "supports-color": { 981 | "optional": true 982 | } 983 | } 984 | }, 985 | "node_modules/deep-is": { 986 | "version": "0.1.4", 987 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 988 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 989 | "dev": true 990 | }, 991 | "node_modules/dir-glob": { 992 | "version": "3.0.1", 993 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 994 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 995 | "dev": true, 996 | "dependencies": { 997 | "path-type": "^4.0.0" 998 | }, 999 | "engines": { 1000 | "node": ">=8" 1001 | } 1002 | }, 1003 | "node_modules/doctrine": { 1004 | "version": "3.0.0", 1005 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1006 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1007 | "dev": true, 1008 | "dependencies": { 1009 | "esutils": "^2.0.2" 1010 | }, 1011 | "engines": { 1012 | "node": ">=6.0.0" 1013 | } 1014 | }, 1015 | "node_modules/esbuild": { 1016 | "version": "0.17.3", 1017 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.3.tgz", 1018 | "integrity": "sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==", 1019 | "dev": true, 1020 | "hasInstallScript": true, 1021 | "bin": { 1022 | "esbuild": "bin/esbuild" 1023 | }, 1024 | "engines": { 1025 | "node": ">=12" 1026 | }, 1027 | "optionalDependencies": { 1028 | "@esbuild/android-arm": "0.17.3", 1029 | "@esbuild/android-arm64": "0.17.3", 1030 | "@esbuild/android-x64": "0.17.3", 1031 | "@esbuild/darwin-arm64": "0.17.3", 1032 | "@esbuild/darwin-x64": "0.17.3", 1033 | "@esbuild/freebsd-arm64": "0.17.3", 1034 | "@esbuild/freebsd-x64": "0.17.3", 1035 | "@esbuild/linux-arm": "0.17.3", 1036 | "@esbuild/linux-arm64": "0.17.3", 1037 | "@esbuild/linux-ia32": "0.17.3", 1038 | "@esbuild/linux-loong64": "0.17.3", 1039 | "@esbuild/linux-mips64el": "0.17.3", 1040 | "@esbuild/linux-ppc64": "0.17.3", 1041 | "@esbuild/linux-riscv64": "0.17.3", 1042 | "@esbuild/linux-s390x": "0.17.3", 1043 | "@esbuild/linux-x64": "0.17.3", 1044 | "@esbuild/netbsd-x64": "0.17.3", 1045 | "@esbuild/openbsd-x64": "0.17.3", 1046 | "@esbuild/sunos-x64": "0.17.3", 1047 | "@esbuild/win32-arm64": "0.17.3", 1048 | "@esbuild/win32-ia32": "0.17.3", 1049 | "@esbuild/win32-x64": "0.17.3" 1050 | } 1051 | }, 1052 | "node_modules/escape-string-regexp": { 1053 | "version": "4.0.0", 1054 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1055 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1056 | "dev": true, 1057 | "engines": { 1058 | "node": ">=10" 1059 | }, 1060 | "funding": { 1061 | "url": "https://github.com/sponsors/sindresorhus" 1062 | } 1063 | }, 1064 | "node_modules/eslint": { 1065 | "version": "8.57.0", 1066 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 1067 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 1068 | "dev": true, 1069 | "dependencies": { 1070 | "@eslint-community/eslint-utils": "^4.2.0", 1071 | "@eslint-community/regexpp": "^4.6.1", 1072 | "@eslint/eslintrc": "^2.1.4", 1073 | "@eslint/js": "8.57.0", 1074 | "@humanwhocodes/config-array": "^0.11.14", 1075 | "@humanwhocodes/module-importer": "^1.0.1", 1076 | "@nodelib/fs.walk": "^1.2.8", 1077 | "@ungap/structured-clone": "^1.2.0", 1078 | "ajv": "^6.12.4", 1079 | "chalk": "^4.0.0", 1080 | "cross-spawn": "^7.0.2", 1081 | "debug": "^4.3.2", 1082 | "doctrine": "^3.0.0", 1083 | "escape-string-regexp": "^4.0.0", 1084 | "eslint-scope": "^7.2.2", 1085 | "eslint-visitor-keys": "^3.4.3", 1086 | "espree": "^9.6.1", 1087 | "esquery": "^1.4.2", 1088 | "esutils": "^2.0.2", 1089 | "fast-deep-equal": "^3.1.3", 1090 | "file-entry-cache": "^6.0.1", 1091 | "find-up": "^5.0.0", 1092 | "glob-parent": "^6.0.2", 1093 | "globals": "^13.19.0", 1094 | "graphemer": "^1.4.0", 1095 | "ignore": "^5.2.0", 1096 | "imurmurhash": "^0.1.4", 1097 | "is-glob": "^4.0.0", 1098 | "is-path-inside": "^3.0.3", 1099 | "js-yaml": "^4.1.0", 1100 | "json-stable-stringify-without-jsonify": "^1.0.1", 1101 | "levn": "^0.4.1", 1102 | "lodash.merge": "^4.6.2", 1103 | "minimatch": "^3.1.2", 1104 | "natural-compare": "^1.4.0", 1105 | "optionator": "^0.9.3", 1106 | "strip-ansi": "^6.0.1", 1107 | "text-table": "^0.2.0" 1108 | }, 1109 | "bin": { 1110 | "eslint": "bin/eslint.js" 1111 | }, 1112 | "engines": { 1113 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1114 | }, 1115 | "funding": { 1116 | "url": "https://opencollective.com/eslint" 1117 | } 1118 | }, 1119 | "node_modules/eslint-scope": { 1120 | "version": "7.2.2", 1121 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 1122 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 1123 | "dev": true, 1124 | "dependencies": { 1125 | "esrecurse": "^4.3.0", 1126 | "estraverse": "^5.2.0" 1127 | }, 1128 | "engines": { 1129 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1130 | }, 1131 | "funding": { 1132 | "url": "https://opencollective.com/eslint" 1133 | } 1134 | }, 1135 | "node_modules/eslint-visitor-keys": { 1136 | "version": "3.4.3", 1137 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1138 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1139 | "dev": true, 1140 | "engines": { 1141 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1142 | }, 1143 | "funding": { 1144 | "url": "https://opencollective.com/eslint" 1145 | } 1146 | }, 1147 | "node_modules/eslint/node_modules/brace-expansion": { 1148 | "version": "1.1.11", 1149 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1150 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1151 | "dev": true, 1152 | "dependencies": { 1153 | "balanced-match": "^1.0.0", 1154 | "concat-map": "0.0.1" 1155 | } 1156 | }, 1157 | "node_modules/eslint/node_modules/minimatch": { 1158 | "version": "3.1.2", 1159 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1160 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1161 | "dev": true, 1162 | "dependencies": { 1163 | "brace-expansion": "^1.1.7" 1164 | }, 1165 | "engines": { 1166 | "node": "*" 1167 | } 1168 | }, 1169 | "node_modules/espree": { 1170 | "version": "9.6.1", 1171 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1172 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1173 | "dev": true, 1174 | "dependencies": { 1175 | "acorn": "^8.9.0", 1176 | "acorn-jsx": "^5.3.2", 1177 | "eslint-visitor-keys": "^3.4.1" 1178 | }, 1179 | "engines": { 1180 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1181 | }, 1182 | "funding": { 1183 | "url": "https://opencollective.com/eslint" 1184 | } 1185 | }, 1186 | "node_modules/esquery": { 1187 | "version": "1.5.0", 1188 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1189 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1190 | "dev": true, 1191 | "dependencies": { 1192 | "estraverse": "^5.1.0" 1193 | }, 1194 | "engines": { 1195 | "node": ">=0.10" 1196 | } 1197 | }, 1198 | "node_modules/esrecurse": { 1199 | "version": "4.3.0", 1200 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1201 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1202 | "dev": true, 1203 | "dependencies": { 1204 | "estraverse": "^5.2.0" 1205 | }, 1206 | "engines": { 1207 | "node": ">=4.0" 1208 | } 1209 | }, 1210 | "node_modules/estraverse": { 1211 | "version": "5.3.0", 1212 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1213 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1214 | "dev": true, 1215 | "engines": { 1216 | "node": ">=4.0" 1217 | } 1218 | }, 1219 | "node_modules/esutils": { 1220 | "version": "2.0.3", 1221 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1222 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1223 | "dev": true, 1224 | "engines": { 1225 | "node": ">=0.10.0" 1226 | } 1227 | }, 1228 | "node_modules/fast-deep-equal": { 1229 | "version": "3.1.3", 1230 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1231 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1232 | "dev": true 1233 | }, 1234 | "node_modules/fast-glob": { 1235 | "version": "3.3.2", 1236 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1237 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1238 | "dev": true, 1239 | "dependencies": { 1240 | "@nodelib/fs.stat": "^2.0.2", 1241 | "@nodelib/fs.walk": "^1.2.3", 1242 | "glob-parent": "^5.1.2", 1243 | "merge2": "^1.3.0", 1244 | "micromatch": "^4.0.4" 1245 | }, 1246 | "engines": { 1247 | "node": ">=8.6.0" 1248 | } 1249 | }, 1250 | "node_modules/fast-glob/node_modules/glob-parent": { 1251 | "version": "5.1.2", 1252 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1253 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1254 | "dev": true, 1255 | "dependencies": { 1256 | "is-glob": "^4.0.1" 1257 | }, 1258 | "engines": { 1259 | "node": ">= 6" 1260 | } 1261 | }, 1262 | "node_modules/fast-json-stable-stringify": { 1263 | "version": "2.1.0", 1264 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1265 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1266 | "dev": true 1267 | }, 1268 | "node_modules/fast-levenshtein": { 1269 | "version": "2.0.6", 1270 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1271 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1272 | "dev": true 1273 | }, 1274 | "node_modules/fastq": { 1275 | "version": "1.17.1", 1276 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1277 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1278 | "dev": true, 1279 | "dependencies": { 1280 | "reusify": "^1.0.4" 1281 | } 1282 | }, 1283 | "node_modules/file-entry-cache": { 1284 | "version": "6.0.1", 1285 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1286 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1287 | "dev": true, 1288 | "dependencies": { 1289 | "flat-cache": "^3.0.4" 1290 | }, 1291 | "engines": { 1292 | "node": "^10.12.0 || >=12.0.0" 1293 | } 1294 | }, 1295 | "node_modules/fill-range": { 1296 | "version": "7.0.1", 1297 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1298 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1299 | "dev": true, 1300 | "dependencies": { 1301 | "to-regex-range": "^5.0.1" 1302 | }, 1303 | "engines": { 1304 | "node": ">=8" 1305 | } 1306 | }, 1307 | "node_modules/find-up": { 1308 | "version": "5.0.0", 1309 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1310 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1311 | "dev": true, 1312 | "dependencies": { 1313 | "locate-path": "^6.0.0", 1314 | "path-exists": "^4.0.0" 1315 | }, 1316 | "engines": { 1317 | "node": ">=10" 1318 | }, 1319 | "funding": { 1320 | "url": "https://github.com/sponsors/sindresorhus" 1321 | } 1322 | }, 1323 | "node_modules/flat-cache": { 1324 | "version": "3.2.0", 1325 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1326 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1327 | "dev": true, 1328 | "dependencies": { 1329 | "flatted": "^3.2.9", 1330 | "keyv": "^4.5.3", 1331 | "rimraf": "^3.0.2" 1332 | }, 1333 | "engines": { 1334 | "node": "^10.12.0 || >=12.0.0" 1335 | } 1336 | }, 1337 | "node_modules/flatted": { 1338 | "version": "3.3.1", 1339 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 1340 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 1341 | "dev": true 1342 | }, 1343 | "node_modules/fs.realpath": { 1344 | "version": "1.0.0", 1345 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1346 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1347 | "dev": true 1348 | }, 1349 | "node_modules/glob": { 1350 | "version": "7.2.3", 1351 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1352 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1353 | "dev": true, 1354 | "dependencies": { 1355 | "fs.realpath": "^1.0.0", 1356 | "inflight": "^1.0.4", 1357 | "inherits": "2", 1358 | "minimatch": "^3.1.1", 1359 | "once": "^1.3.0", 1360 | "path-is-absolute": "^1.0.0" 1361 | }, 1362 | "engines": { 1363 | "node": "*" 1364 | }, 1365 | "funding": { 1366 | "url": "https://github.com/sponsors/isaacs" 1367 | } 1368 | }, 1369 | "node_modules/glob-parent": { 1370 | "version": "6.0.2", 1371 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1372 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "is-glob": "^4.0.3" 1376 | }, 1377 | "engines": { 1378 | "node": ">=10.13.0" 1379 | } 1380 | }, 1381 | "node_modules/glob/node_modules/brace-expansion": { 1382 | "version": "1.1.11", 1383 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1384 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1385 | "dev": true, 1386 | "dependencies": { 1387 | "balanced-match": "^1.0.0", 1388 | "concat-map": "0.0.1" 1389 | } 1390 | }, 1391 | "node_modules/glob/node_modules/minimatch": { 1392 | "version": "3.1.2", 1393 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1394 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1395 | "dev": true, 1396 | "dependencies": { 1397 | "brace-expansion": "^1.1.7" 1398 | }, 1399 | "engines": { 1400 | "node": "*" 1401 | } 1402 | }, 1403 | "node_modules/globals": { 1404 | "version": "13.24.0", 1405 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1406 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1407 | "dev": true, 1408 | "dependencies": { 1409 | "type-fest": "^0.20.2" 1410 | }, 1411 | "engines": { 1412 | "node": ">=8" 1413 | }, 1414 | "funding": { 1415 | "url": "https://github.com/sponsors/sindresorhus" 1416 | } 1417 | }, 1418 | "node_modules/globby": { 1419 | "version": "11.1.0", 1420 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1421 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1422 | "dev": true, 1423 | "dependencies": { 1424 | "array-union": "^2.1.0", 1425 | "dir-glob": "^3.0.1", 1426 | "fast-glob": "^3.2.9", 1427 | "ignore": "^5.2.0", 1428 | "merge2": "^1.4.1", 1429 | "slash": "^3.0.0" 1430 | }, 1431 | "engines": { 1432 | "node": ">=10" 1433 | }, 1434 | "funding": { 1435 | "url": "https://github.com/sponsors/sindresorhus" 1436 | } 1437 | }, 1438 | "node_modules/graphemer": { 1439 | "version": "1.4.0", 1440 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1441 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1442 | "dev": true 1443 | }, 1444 | "node_modules/has-flag": { 1445 | "version": "4.0.0", 1446 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1447 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1448 | "dev": true, 1449 | "engines": { 1450 | "node": ">=8" 1451 | } 1452 | }, 1453 | "node_modules/ignore": { 1454 | "version": "5.3.1", 1455 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1456 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1457 | "dev": true, 1458 | "engines": { 1459 | "node": ">= 4" 1460 | } 1461 | }, 1462 | "node_modules/import-fresh": { 1463 | "version": "3.3.0", 1464 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1465 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1466 | "dev": true, 1467 | "dependencies": { 1468 | "parent-module": "^1.0.0", 1469 | "resolve-from": "^4.0.0" 1470 | }, 1471 | "engines": { 1472 | "node": ">=6" 1473 | }, 1474 | "funding": { 1475 | "url": "https://github.com/sponsors/sindresorhus" 1476 | } 1477 | }, 1478 | "node_modules/imurmurhash": { 1479 | "version": "0.1.4", 1480 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1481 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1482 | "dev": true, 1483 | "engines": { 1484 | "node": ">=0.8.19" 1485 | } 1486 | }, 1487 | "node_modules/inflight": { 1488 | "version": "1.0.6", 1489 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1490 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1491 | "dev": true, 1492 | "dependencies": { 1493 | "once": "^1.3.0", 1494 | "wrappy": "1" 1495 | } 1496 | }, 1497 | "node_modules/inherits": { 1498 | "version": "2.0.4", 1499 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1500 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1501 | "dev": true 1502 | }, 1503 | "node_modules/is-extglob": { 1504 | "version": "2.1.1", 1505 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1506 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1507 | "dev": true, 1508 | "engines": { 1509 | "node": ">=0.10.0" 1510 | } 1511 | }, 1512 | "node_modules/is-glob": { 1513 | "version": "4.0.3", 1514 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1515 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1516 | "dev": true, 1517 | "dependencies": { 1518 | "is-extglob": "^2.1.1" 1519 | }, 1520 | "engines": { 1521 | "node": ">=0.10.0" 1522 | } 1523 | }, 1524 | "node_modules/is-number": { 1525 | "version": "7.0.0", 1526 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1527 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1528 | "dev": true, 1529 | "engines": { 1530 | "node": ">=0.12.0" 1531 | } 1532 | }, 1533 | "node_modules/is-path-inside": { 1534 | "version": "3.0.3", 1535 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1536 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1537 | "dev": true, 1538 | "engines": { 1539 | "node": ">=8" 1540 | } 1541 | }, 1542 | "node_modules/isexe": { 1543 | "version": "2.0.0", 1544 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1545 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1546 | "dev": true 1547 | }, 1548 | "node_modules/js-yaml": { 1549 | "version": "4.1.0", 1550 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1551 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1552 | "dev": true, 1553 | "dependencies": { 1554 | "argparse": "^2.0.1" 1555 | }, 1556 | "bin": { 1557 | "js-yaml": "bin/js-yaml.js" 1558 | } 1559 | }, 1560 | "node_modules/json-buffer": { 1561 | "version": "3.0.1", 1562 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1563 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1564 | "dev": true 1565 | }, 1566 | "node_modules/json-schema-traverse": { 1567 | "version": "0.4.1", 1568 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1569 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1570 | "dev": true 1571 | }, 1572 | "node_modules/json-stable-stringify-without-jsonify": { 1573 | "version": "1.0.1", 1574 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1575 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1576 | "dev": true 1577 | }, 1578 | "node_modules/keyv": { 1579 | "version": "4.5.4", 1580 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1581 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1582 | "dev": true, 1583 | "dependencies": { 1584 | "json-buffer": "3.0.1" 1585 | } 1586 | }, 1587 | "node_modules/levn": { 1588 | "version": "0.4.1", 1589 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1590 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1591 | "dev": true, 1592 | "dependencies": { 1593 | "prelude-ls": "^1.2.1", 1594 | "type-check": "~0.4.0" 1595 | }, 1596 | "engines": { 1597 | "node": ">= 0.8.0" 1598 | } 1599 | }, 1600 | "node_modules/locate-path": { 1601 | "version": "6.0.0", 1602 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1603 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1604 | "dev": true, 1605 | "dependencies": { 1606 | "p-locate": "^5.0.0" 1607 | }, 1608 | "engines": { 1609 | "node": ">=10" 1610 | }, 1611 | "funding": { 1612 | "url": "https://github.com/sponsors/sindresorhus" 1613 | } 1614 | }, 1615 | "node_modules/lodash.merge": { 1616 | "version": "4.6.2", 1617 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1618 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1619 | "dev": true 1620 | }, 1621 | "node_modules/lru-cache": { 1622 | "version": "6.0.0", 1623 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1624 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1625 | "dev": true, 1626 | "dependencies": { 1627 | "yallist": "^4.0.0" 1628 | }, 1629 | "engines": { 1630 | "node": ">=10" 1631 | } 1632 | }, 1633 | "node_modules/merge2": { 1634 | "version": "1.4.1", 1635 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1636 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1637 | "dev": true, 1638 | "engines": { 1639 | "node": ">= 8" 1640 | } 1641 | }, 1642 | "node_modules/micromatch": { 1643 | "version": "4.0.5", 1644 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1645 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1646 | "dev": true, 1647 | "dependencies": { 1648 | "braces": "^3.0.2", 1649 | "picomatch": "^2.3.1" 1650 | }, 1651 | "engines": { 1652 | "node": ">=8.6" 1653 | } 1654 | }, 1655 | "node_modules/minimatch": { 1656 | "version": "9.0.3", 1657 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1658 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1659 | "dev": true, 1660 | "dependencies": { 1661 | "brace-expansion": "^2.0.1" 1662 | }, 1663 | "engines": { 1664 | "node": ">=16 || 14 >=14.17" 1665 | }, 1666 | "funding": { 1667 | "url": "https://github.com/sponsors/isaacs" 1668 | } 1669 | }, 1670 | "node_modules/moment": { 1671 | "version": "2.29.1", 1672 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 1673 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 1674 | "dev": true, 1675 | "engines": { 1676 | "node": "*" 1677 | } 1678 | }, 1679 | "node_modules/ms": { 1680 | "version": "2.1.2", 1681 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1682 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1683 | "dev": true 1684 | }, 1685 | "node_modules/natural-compare": { 1686 | "version": "1.4.0", 1687 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1688 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1689 | "dev": true 1690 | }, 1691 | "node_modules/obsidian": { 1692 | "version": "0.12.17", 1693 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.12.17.tgz", 1694 | "integrity": "sha512-YvCAlRym9D8zNPXt6Ez8QubSTVGoChx6lb58zqI13Dcrz3l1lgUO+pcOGDiD5Qa67nzDZLXo3aV2rqkCCpTvGQ==", 1695 | "dev": true, 1696 | "dependencies": { 1697 | "@types/codemirror": "0.0.108", 1698 | "moment": "2.29.1" 1699 | } 1700 | }, 1701 | "node_modules/once": { 1702 | "version": "1.4.0", 1703 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1704 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1705 | "dev": true, 1706 | "dependencies": { 1707 | "wrappy": "1" 1708 | } 1709 | }, 1710 | "node_modules/optionator": { 1711 | "version": "0.9.3", 1712 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 1713 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 1714 | "dev": true, 1715 | "dependencies": { 1716 | "@aashutoshrathi/word-wrap": "^1.2.3", 1717 | "deep-is": "^0.1.3", 1718 | "fast-levenshtein": "^2.0.6", 1719 | "levn": "^0.4.1", 1720 | "prelude-ls": "^1.2.1", 1721 | "type-check": "^0.4.0" 1722 | }, 1723 | "engines": { 1724 | "node": ">= 0.8.0" 1725 | } 1726 | }, 1727 | "node_modules/p-limit": { 1728 | "version": "3.1.0", 1729 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1730 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1731 | "dev": true, 1732 | "dependencies": { 1733 | "yocto-queue": "^0.1.0" 1734 | }, 1735 | "engines": { 1736 | "node": ">=10" 1737 | }, 1738 | "funding": { 1739 | "url": "https://github.com/sponsors/sindresorhus" 1740 | } 1741 | }, 1742 | "node_modules/p-locate": { 1743 | "version": "5.0.0", 1744 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1745 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1746 | "dev": true, 1747 | "dependencies": { 1748 | "p-limit": "^3.0.2" 1749 | }, 1750 | "engines": { 1751 | "node": ">=10" 1752 | }, 1753 | "funding": { 1754 | "url": "https://github.com/sponsors/sindresorhus" 1755 | } 1756 | }, 1757 | "node_modules/parent-module": { 1758 | "version": "1.0.1", 1759 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1760 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1761 | "dev": true, 1762 | "dependencies": { 1763 | "callsites": "^3.0.0" 1764 | }, 1765 | "engines": { 1766 | "node": ">=6" 1767 | } 1768 | }, 1769 | "node_modules/path-exists": { 1770 | "version": "4.0.0", 1771 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1772 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1773 | "dev": true, 1774 | "engines": { 1775 | "node": ">=8" 1776 | } 1777 | }, 1778 | "node_modules/path-is-absolute": { 1779 | "version": "1.0.1", 1780 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1781 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1782 | "dev": true, 1783 | "engines": { 1784 | "node": ">=0.10.0" 1785 | } 1786 | }, 1787 | "node_modules/path-key": { 1788 | "version": "3.1.1", 1789 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1790 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1791 | "dev": true, 1792 | "engines": { 1793 | "node": ">=8" 1794 | } 1795 | }, 1796 | "node_modules/path-type": { 1797 | "version": "4.0.0", 1798 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1799 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1800 | "dev": true, 1801 | "engines": { 1802 | "node": ">=8" 1803 | } 1804 | }, 1805 | "node_modules/picomatch": { 1806 | "version": "2.3.1", 1807 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1808 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1809 | "dev": true, 1810 | "engines": { 1811 | "node": ">=8.6" 1812 | }, 1813 | "funding": { 1814 | "url": "https://github.com/sponsors/jonschlinkert" 1815 | } 1816 | }, 1817 | "node_modules/prelude-ls": { 1818 | "version": "1.2.1", 1819 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1820 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1821 | "dev": true, 1822 | "engines": { 1823 | "node": ">= 0.8.0" 1824 | } 1825 | }, 1826 | "node_modules/punycode": { 1827 | "version": "2.3.1", 1828 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1829 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1830 | "dev": true, 1831 | "engines": { 1832 | "node": ">=6" 1833 | } 1834 | }, 1835 | "node_modules/queue-microtask": { 1836 | "version": "1.2.3", 1837 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1838 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1839 | "dev": true, 1840 | "funding": [ 1841 | { 1842 | "type": "github", 1843 | "url": "https://github.com/sponsors/feross" 1844 | }, 1845 | { 1846 | "type": "patreon", 1847 | "url": "https://www.patreon.com/feross" 1848 | }, 1849 | { 1850 | "type": "consulting", 1851 | "url": "https://feross.org/support" 1852 | } 1853 | ] 1854 | }, 1855 | "node_modules/resolve-from": { 1856 | "version": "4.0.0", 1857 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1858 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1859 | "dev": true, 1860 | "engines": { 1861 | "node": ">=4" 1862 | } 1863 | }, 1864 | "node_modules/reusify": { 1865 | "version": "1.0.4", 1866 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1867 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1868 | "dev": true, 1869 | "engines": { 1870 | "iojs": ">=1.0.0", 1871 | "node": ">=0.10.0" 1872 | } 1873 | }, 1874 | "node_modules/rimraf": { 1875 | "version": "3.0.2", 1876 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1877 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1878 | "dev": true, 1879 | "dependencies": { 1880 | "glob": "^7.1.3" 1881 | }, 1882 | "bin": { 1883 | "rimraf": "bin.js" 1884 | }, 1885 | "funding": { 1886 | "url": "https://github.com/sponsors/isaacs" 1887 | } 1888 | }, 1889 | "node_modules/run-parallel": { 1890 | "version": "1.2.0", 1891 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1892 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1893 | "dev": true, 1894 | "funding": [ 1895 | { 1896 | "type": "github", 1897 | "url": "https://github.com/sponsors/feross" 1898 | }, 1899 | { 1900 | "type": "patreon", 1901 | "url": "https://www.patreon.com/feross" 1902 | }, 1903 | { 1904 | "type": "consulting", 1905 | "url": "https://feross.org/support" 1906 | } 1907 | ], 1908 | "dependencies": { 1909 | "queue-microtask": "^1.2.2" 1910 | } 1911 | }, 1912 | "node_modules/semver": { 1913 | "version": "7.6.0", 1914 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 1915 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 1916 | "dev": true, 1917 | "dependencies": { 1918 | "lru-cache": "^6.0.0" 1919 | }, 1920 | "bin": { 1921 | "semver": "bin/semver.js" 1922 | }, 1923 | "engines": { 1924 | "node": ">=10" 1925 | } 1926 | }, 1927 | "node_modules/shebang-command": { 1928 | "version": "2.0.0", 1929 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1930 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1931 | "dev": true, 1932 | "dependencies": { 1933 | "shebang-regex": "^3.0.0" 1934 | }, 1935 | "engines": { 1936 | "node": ">=8" 1937 | } 1938 | }, 1939 | "node_modules/shebang-regex": { 1940 | "version": "3.0.0", 1941 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1942 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1943 | "dev": true, 1944 | "engines": { 1945 | "node": ">=8" 1946 | } 1947 | }, 1948 | "node_modules/slash": { 1949 | "version": "3.0.0", 1950 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1951 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1952 | "dev": true, 1953 | "engines": { 1954 | "node": ">=8" 1955 | } 1956 | }, 1957 | "node_modules/strip-ansi": { 1958 | "version": "6.0.1", 1959 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1960 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1961 | "dev": true, 1962 | "dependencies": { 1963 | "ansi-regex": "^5.0.1" 1964 | }, 1965 | "engines": { 1966 | "node": ">=8" 1967 | } 1968 | }, 1969 | "node_modules/strip-json-comments": { 1970 | "version": "3.1.1", 1971 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1972 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1973 | "dev": true, 1974 | "engines": { 1975 | "node": ">=8" 1976 | }, 1977 | "funding": { 1978 | "url": "https://github.com/sponsors/sindresorhus" 1979 | } 1980 | }, 1981 | "node_modules/supports-color": { 1982 | "version": "7.2.0", 1983 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1984 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1985 | "dev": true, 1986 | "dependencies": { 1987 | "has-flag": "^4.0.0" 1988 | }, 1989 | "engines": { 1990 | "node": ">=8" 1991 | } 1992 | }, 1993 | "node_modules/text-table": { 1994 | "version": "0.2.0", 1995 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1996 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1997 | "dev": true 1998 | }, 1999 | "node_modules/to-regex-range": { 2000 | "version": "5.0.1", 2001 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2002 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2003 | "dev": true, 2004 | "dependencies": { 2005 | "is-number": "^7.0.0" 2006 | }, 2007 | "engines": { 2008 | "node": ">=8.0" 2009 | } 2010 | }, 2011 | "node_modules/ts-api-utils": { 2012 | "version": "1.3.0", 2013 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 2014 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 2015 | "dev": true, 2016 | "engines": { 2017 | "node": ">=16" 2018 | }, 2019 | "peerDependencies": { 2020 | "typescript": ">=4.2.0" 2021 | } 2022 | }, 2023 | "node_modules/tslib": { 2024 | "version": "2.4.0", 2025 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 2026 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 2027 | "dev": true 2028 | }, 2029 | "node_modules/type-check": { 2030 | "version": "0.4.0", 2031 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2032 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "prelude-ls": "^1.2.1" 2036 | }, 2037 | "engines": { 2038 | "node": ">= 0.8.0" 2039 | } 2040 | }, 2041 | "node_modules/type-fest": { 2042 | "version": "0.20.2", 2043 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2044 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2045 | "dev": true, 2046 | "engines": { 2047 | "node": ">=10" 2048 | }, 2049 | "funding": { 2050 | "url": "https://github.com/sponsors/sindresorhus" 2051 | } 2052 | }, 2053 | "node_modules/typescript": { 2054 | "version": "4.7.4", 2055 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 2056 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 2057 | "dev": true, 2058 | "bin": { 2059 | "tsc": "bin/tsc", 2060 | "tsserver": "bin/tsserver" 2061 | }, 2062 | "engines": { 2063 | "node": ">=4.2.0" 2064 | } 2065 | }, 2066 | "node_modules/uri-js": { 2067 | "version": "4.4.1", 2068 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2069 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2070 | "dev": true, 2071 | "dependencies": { 2072 | "punycode": "^2.1.0" 2073 | } 2074 | }, 2075 | "node_modules/which": { 2076 | "version": "2.0.2", 2077 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2078 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2079 | "dev": true, 2080 | "dependencies": { 2081 | "isexe": "^2.0.0" 2082 | }, 2083 | "bin": { 2084 | "node-which": "bin/node-which" 2085 | }, 2086 | "engines": { 2087 | "node": ">= 8" 2088 | } 2089 | }, 2090 | "node_modules/wrappy": { 2091 | "version": "1.0.2", 2092 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2093 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2094 | "dev": true 2095 | }, 2096 | "node_modules/yallist": { 2097 | "version": "4.0.0", 2098 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2099 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2100 | "dev": true 2101 | }, 2102 | "node_modules/yocto-queue": { 2103 | "version": "0.1.0", 2104 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2105 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2106 | "dev": true, 2107 | "engines": { 2108 | "node": ">=10" 2109 | }, 2110 | "funding": { 2111 | "url": "https://github.com/sponsors/sindresorhus" 2112 | } 2113 | } 2114 | }, 2115 | "dependencies": { 2116 | "@aashutoshrathi/word-wrap": { 2117 | "version": "1.2.6", 2118 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 2119 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 2120 | "dev": true 2121 | }, 2122 | "@esbuild/android-arm": { 2123 | "version": "0.17.3", 2124 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.3.tgz", 2125 | "integrity": "sha512-1Mlz934GvbgdDmt26rTLmf03cAgLg5HyOgJN+ZGCeP3Q9ynYTNMn2/LQxIl7Uy+o4K6Rfi2OuLsr12JQQR8gNg==", 2126 | "dev": true, 2127 | "optional": true 2128 | }, 2129 | "@esbuild/android-arm64": { 2130 | "version": "0.17.3", 2131 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.3.tgz", 2132 | "integrity": "sha512-XvJsYo3dO3Pi4kpalkyMvfQsjxPWHYjoX4MDiB/FUM4YMfWcXa5l4VCwFWVYI1+92yxqjuqrhNg0CZg3gSouyQ==", 2133 | "dev": true, 2134 | "optional": true 2135 | }, 2136 | "@esbuild/android-x64": { 2137 | "version": "0.17.3", 2138 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.3.tgz", 2139 | "integrity": "sha512-nuV2CmLS07Gqh5/GrZLuqkU9Bm6H6vcCspM+zjp9TdQlxJtIe+qqEXQChmfc7nWdyr/yz3h45Utk1tUn8Cz5+A==", 2140 | "dev": true, 2141 | "optional": true 2142 | }, 2143 | "@esbuild/darwin-arm64": { 2144 | "version": "0.17.3", 2145 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.3.tgz", 2146 | "integrity": "sha512-01Hxaaat6m0Xp9AXGM8mjFtqqwDjzlMP0eQq9zll9U85ttVALGCGDuEvra5Feu/NbP5AEP1MaopPwzsTcUq1cw==", 2147 | "dev": true, 2148 | "optional": true 2149 | }, 2150 | "@esbuild/darwin-x64": { 2151 | "version": "0.17.3", 2152 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.3.tgz", 2153 | "integrity": "sha512-Eo2gq0Q/er2muf8Z83X21UFoB7EU6/m3GNKvrhACJkjVThd0uA+8RfKpfNhuMCl1bKRfBzKOk6xaYKQZ4lZqvA==", 2154 | "dev": true, 2155 | "optional": true 2156 | }, 2157 | "@esbuild/freebsd-arm64": { 2158 | "version": "0.17.3", 2159 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.3.tgz", 2160 | "integrity": "sha512-CN62ESxaquP61n1ZjQP/jZte8CE09M6kNn3baos2SeUfdVBkWN5n6vGp2iKyb/bm/x4JQzEvJgRHLGd5F5b81w==", 2161 | "dev": true, 2162 | "optional": true 2163 | }, 2164 | "@esbuild/freebsd-x64": { 2165 | "version": "0.17.3", 2166 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.3.tgz", 2167 | "integrity": "sha512-feq+K8TxIznZE+zhdVurF3WNJ/Sa35dQNYbaqM/wsCbWdzXr5lyq+AaTUSER2cUR+SXPnd/EY75EPRjf4s1SLg==", 2168 | "dev": true, 2169 | "optional": true 2170 | }, 2171 | "@esbuild/linux-arm": { 2172 | "version": "0.17.3", 2173 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.3.tgz", 2174 | "integrity": "sha512-CLP3EgyNuPcg2cshbwkqYy5bbAgK+VhyfMU7oIYyn+x4Y67xb5C5ylxsNUjRmr8BX+MW3YhVNm6Lq6FKtRTWHQ==", 2175 | "dev": true, 2176 | "optional": true 2177 | }, 2178 | "@esbuild/linux-arm64": { 2179 | "version": "0.17.3", 2180 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.3.tgz", 2181 | "integrity": "sha512-JHeZXD4auLYBnrKn6JYJ0o5nWJI9PhChA/Nt0G4MvLaMrvXuWnY93R3a7PiXeJQphpL1nYsaMcoV2QtuvRnF/g==", 2182 | "dev": true, 2183 | "optional": true 2184 | }, 2185 | "@esbuild/linux-ia32": { 2186 | "version": "0.17.3", 2187 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.3.tgz", 2188 | "integrity": "sha512-FyXlD2ZjZqTFh0sOQxFDiWG1uQUEOLbEh9gKN/7pFxck5Vw0qjWSDqbn6C10GAa1rXJpwsntHcmLqydY9ST9ZA==", 2189 | "dev": true, 2190 | "optional": true 2191 | }, 2192 | "@esbuild/linux-loong64": { 2193 | "version": "0.17.3", 2194 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.3.tgz", 2195 | "integrity": "sha512-OrDGMvDBI2g7s04J8dh8/I7eSO+/E7nMDT2Z5IruBfUO/RiigF1OF6xoH33Dn4W/OwAWSUf1s2nXamb28ZklTA==", 2196 | "dev": true, 2197 | "optional": true 2198 | }, 2199 | "@esbuild/linux-mips64el": { 2200 | "version": "0.17.3", 2201 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.3.tgz", 2202 | "integrity": "sha512-DcnUpXnVCJvmv0TzuLwKBC2nsQHle8EIiAJiJ+PipEVC16wHXaPEKP0EqN8WnBe0TPvMITOUlP2aiL5YMld+CQ==", 2203 | "dev": true, 2204 | "optional": true 2205 | }, 2206 | "@esbuild/linux-ppc64": { 2207 | "version": "0.17.3", 2208 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.3.tgz", 2209 | "integrity": "sha512-BDYf/l1WVhWE+FHAW3FzZPtVlk9QsrwsxGzABmN4g8bTjmhazsId3h127pliDRRu5674k1Y2RWejbpN46N9ZhQ==", 2210 | "dev": true, 2211 | "optional": true 2212 | }, 2213 | "@esbuild/linux-riscv64": { 2214 | "version": "0.17.3", 2215 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.3.tgz", 2216 | "integrity": "sha512-WViAxWYMRIi+prTJTyV1wnqd2mS2cPqJlN85oscVhXdb/ZTFJdrpaqm/uDsZPGKHtbg5TuRX/ymKdOSk41YZow==", 2217 | "dev": true, 2218 | "optional": true 2219 | }, 2220 | "@esbuild/linux-s390x": { 2221 | "version": "0.17.3", 2222 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.3.tgz", 2223 | "integrity": "sha512-Iw8lkNHUC4oGP1O/KhumcVy77u2s6+KUjieUqzEU3XuWJqZ+AY7uVMrrCbAiwWTkpQHkr00BuXH5RpC6Sb/7Ug==", 2224 | "dev": true, 2225 | "optional": true 2226 | }, 2227 | "@esbuild/linux-x64": { 2228 | "version": "0.17.3", 2229 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.3.tgz", 2230 | "integrity": "sha512-0AGkWQMzeoeAtXQRNB3s4J1/T2XbigM2/Mn2yU1tQSmQRmHIZdkGbVq2A3aDdNslPyhb9/lH0S5GMTZ4xsjBqg==", 2231 | "dev": true, 2232 | "optional": true 2233 | }, 2234 | "@esbuild/netbsd-x64": { 2235 | "version": "0.17.3", 2236 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.3.tgz", 2237 | "integrity": "sha512-4+rR/WHOxIVh53UIQIICryjdoKdHsFZFD4zLSonJ9RRw7bhKzVyXbnRPsWSfwybYqw9sB7ots/SYyufL1mBpEg==", 2238 | "dev": true, 2239 | "optional": true 2240 | }, 2241 | "@esbuild/openbsd-x64": { 2242 | "version": "0.17.3", 2243 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.3.tgz", 2244 | "integrity": "sha512-cVpWnkx9IYg99EjGxa5Gc0XmqumtAwK3aoz7O4Dii2vko+qXbkHoujWA68cqXjhh6TsLaQelfDO4MVnyr+ODeA==", 2245 | "dev": true, 2246 | "optional": true 2247 | }, 2248 | "@esbuild/sunos-x64": { 2249 | "version": "0.17.3", 2250 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.3.tgz", 2251 | "integrity": "sha512-RxmhKLbTCDAY2xOfrww6ieIZkZF+KBqG7S2Ako2SljKXRFi+0863PspK74QQ7JpmWwncChY25JTJSbVBYGQk2Q==", 2252 | "dev": true, 2253 | "optional": true 2254 | }, 2255 | "@esbuild/win32-arm64": { 2256 | "version": "0.17.3", 2257 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.3.tgz", 2258 | "integrity": "sha512-0r36VeEJ4efwmofxVJRXDjVRP2jTmv877zc+i+Pc7MNsIr38NfsjkQj23AfF7l0WbB+RQ7VUb+LDiqC/KY/M/A==", 2259 | "dev": true, 2260 | "optional": true 2261 | }, 2262 | "@esbuild/win32-ia32": { 2263 | "version": "0.17.3", 2264 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.3.tgz", 2265 | "integrity": "sha512-wgO6rc7uGStH22nur4aLFcq7Wh86bE9cOFmfTr/yxN3BXvDEdCSXyKkO+U5JIt53eTOgC47v9k/C1bITWL/Teg==", 2266 | "dev": true, 2267 | "optional": true 2268 | }, 2269 | "@esbuild/win32-x64": { 2270 | "version": "0.17.3", 2271 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.3.tgz", 2272 | "integrity": "sha512-FdVl64OIuiKjgXBjwZaJLKp0eaEckifbhn10dXWhysMJkWblg3OEEGKSIyhiD5RSgAya8WzP3DNkngtIg3Nt7g==", 2273 | "dev": true, 2274 | "optional": true 2275 | }, 2276 | "@eslint-community/eslint-utils": { 2277 | "version": "4.4.0", 2278 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 2279 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 2280 | "dev": true, 2281 | "requires": { 2282 | "eslint-visitor-keys": "^3.3.0" 2283 | } 2284 | }, 2285 | "@eslint-community/regexpp": { 2286 | "version": "4.10.0", 2287 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 2288 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 2289 | "dev": true 2290 | }, 2291 | "@eslint/eslintrc": { 2292 | "version": "2.1.4", 2293 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 2294 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 2295 | "dev": true, 2296 | "requires": { 2297 | "ajv": "^6.12.4", 2298 | "debug": "^4.3.2", 2299 | "espree": "^9.6.0", 2300 | "globals": "^13.19.0", 2301 | "ignore": "^5.2.0", 2302 | "import-fresh": "^3.2.1", 2303 | "js-yaml": "^4.1.0", 2304 | "minimatch": "^3.1.2", 2305 | "strip-json-comments": "^3.1.1" 2306 | }, 2307 | "dependencies": { 2308 | "brace-expansion": { 2309 | "version": "1.1.11", 2310 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2311 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2312 | "dev": true, 2313 | "requires": { 2314 | "balanced-match": "^1.0.0", 2315 | "concat-map": "0.0.1" 2316 | } 2317 | }, 2318 | "minimatch": { 2319 | "version": "3.1.2", 2320 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2321 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2322 | "dev": true, 2323 | "requires": { 2324 | "brace-expansion": "^1.1.7" 2325 | } 2326 | } 2327 | } 2328 | }, 2329 | "@eslint/js": { 2330 | "version": "8.57.0", 2331 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 2332 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 2333 | "dev": true 2334 | }, 2335 | "@humanwhocodes/config-array": { 2336 | "version": "0.11.14", 2337 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 2338 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 2339 | "dev": true, 2340 | "requires": { 2341 | "@humanwhocodes/object-schema": "^2.0.2", 2342 | "debug": "^4.3.1", 2343 | "minimatch": "^3.0.5" 2344 | }, 2345 | "dependencies": { 2346 | "brace-expansion": { 2347 | "version": "1.1.11", 2348 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2349 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2350 | "dev": true, 2351 | "requires": { 2352 | "balanced-match": "^1.0.0", 2353 | "concat-map": "0.0.1" 2354 | } 2355 | }, 2356 | "minimatch": { 2357 | "version": "3.1.2", 2358 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2359 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2360 | "dev": true, 2361 | "requires": { 2362 | "brace-expansion": "^1.1.7" 2363 | } 2364 | } 2365 | } 2366 | }, 2367 | "@humanwhocodes/module-importer": { 2368 | "version": "1.0.1", 2369 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 2370 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 2371 | "dev": true 2372 | }, 2373 | "@humanwhocodes/object-schema": { 2374 | "version": "2.0.2", 2375 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", 2376 | "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", 2377 | "dev": true 2378 | }, 2379 | "@nodelib/fs.scandir": { 2380 | "version": "2.1.5", 2381 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 2382 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 2383 | "dev": true, 2384 | "requires": { 2385 | "@nodelib/fs.stat": "2.0.5", 2386 | "run-parallel": "^1.1.9" 2387 | } 2388 | }, 2389 | "@nodelib/fs.stat": { 2390 | "version": "2.0.5", 2391 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 2392 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 2393 | "dev": true 2394 | }, 2395 | "@nodelib/fs.walk": { 2396 | "version": "1.2.8", 2397 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 2398 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 2399 | "dev": true, 2400 | "requires": { 2401 | "@nodelib/fs.scandir": "2.1.5", 2402 | "fastq": "^1.6.0" 2403 | } 2404 | }, 2405 | "@types/codemirror": { 2406 | "version": "0.0.108", 2407 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 2408 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 2409 | "dev": true, 2410 | "requires": { 2411 | "@types/tern": "*" 2412 | } 2413 | }, 2414 | "@types/estree": { 2415 | "version": "0.0.39", 2416 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 2417 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 2418 | "dev": true 2419 | }, 2420 | "@types/json-schema": { 2421 | "version": "7.0.15", 2422 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 2423 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 2424 | "dev": true 2425 | }, 2426 | "@types/node": { 2427 | "version": "16.18.39", 2428 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.39.tgz", 2429 | "integrity": "sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==", 2430 | "dev": true 2431 | }, 2432 | "@types/semver": { 2433 | "version": "7.5.8", 2434 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 2435 | "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 2436 | "dev": true 2437 | }, 2438 | "@types/tern": { 2439 | "version": "0.23.4", 2440 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 2441 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 2442 | "dev": true, 2443 | "requires": { 2444 | "@types/estree": "*" 2445 | } 2446 | }, 2447 | "@typescript-eslint/eslint-plugin": { 2448 | "version": "7.3.1", 2449 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", 2450 | "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", 2451 | "dev": true, 2452 | "requires": { 2453 | "@eslint-community/regexpp": "^4.5.1", 2454 | "@typescript-eslint/scope-manager": "7.3.1", 2455 | "@typescript-eslint/type-utils": "7.3.1", 2456 | "@typescript-eslint/utils": "7.3.1", 2457 | "@typescript-eslint/visitor-keys": "7.3.1", 2458 | "debug": "^4.3.4", 2459 | "graphemer": "^1.4.0", 2460 | "ignore": "^5.2.4", 2461 | "natural-compare": "^1.4.0", 2462 | "semver": "^7.5.4", 2463 | "ts-api-utils": "^1.0.1" 2464 | } 2465 | }, 2466 | "@typescript-eslint/parser": { 2467 | "version": "7.3.1", 2468 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", 2469 | "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", 2470 | "dev": true, 2471 | "requires": { 2472 | "@typescript-eslint/scope-manager": "7.3.1", 2473 | "@typescript-eslint/types": "7.3.1", 2474 | "@typescript-eslint/typescript-estree": "7.3.1", 2475 | "@typescript-eslint/visitor-keys": "7.3.1", 2476 | "debug": "^4.3.4" 2477 | } 2478 | }, 2479 | "@typescript-eslint/scope-manager": { 2480 | "version": "7.3.1", 2481 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", 2482 | "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", 2483 | "dev": true, 2484 | "requires": { 2485 | "@typescript-eslint/types": "7.3.1", 2486 | "@typescript-eslint/visitor-keys": "7.3.1" 2487 | } 2488 | }, 2489 | "@typescript-eslint/type-utils": { 2490 | "version": "7.3.1", 2491 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", 2492 | "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", 2493 | "dev": true, 2494 | "requires": { 2495 | "@typescript-eslint/typescript-estree": "7.3.1", 2496 | "@typescript-eslint/utils": "7.3.1", 2497 | "debug": "^4.3.4", 2498 | "ts-api-utils": "^1.0.1" 2499 | } 2500 | }, 2501 | "@typescript-eslint/types": { 2502 | "version": "7.3.1", 2503 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", 2504 | "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", 2505 | "dev": true 2506 | }, 2507 | "@typescript-eslint/typescript-estree": { 2508 | "version": "7.3.1", 2509 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", 2510 | "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", 2511 | "dev": true, 2512 | "requires": { 2513 | "@typescript-eslint/types": "7.3.1", 2514 | "@typescript-eslint/visitor-keys": "7.3.1", 2515 | "debug": "^4.3.4", 2516 | "globby": "^11.1.0", 2517 | "is-glob": "^4.0.3", 2518 | "minimatch": "9.0.3", 2519 | "semver": "^7.5.4", 2520 | "ts-api-utils": "^1.0.1" 2521 | } 2522 | }, 2523 | "@typescript-eslint/utils": { 2524 | "version": "7.3.1", 2525 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", 2526 | "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", 2527 | "dev": true, 2528 | "requires": { 2529 | "@eslint-community/eslint-utils": "^4.4.0", 2530 | "@types/json-schema": "^7.0.12", 2531 | "@types/semver": "^7.5.0", 2532 | "@typescript-eslint/scope-manager": "7.3.1", 2533 | "@typescript-eslint/types": "7.3.1", 2534 | "@typescript-eslint/typescript-estree": "7.3.1", 2535 | "semver": "^7.5.4" 2536 | } 2537 | }, 2538 | "@typescript-eslint/visitor-keys": { 2539 | "version": "7.3.1", 2540 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", 2541 | "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", 2542 | "dev": true, 2543 | "requires": { 2544 | "@typescript-eslint/types": "7.3.1", 2545 | "eslint-visitor-keys": "^3.4.1" 2546 | } 2547 | }, 2548 | "@ungap/structured-clone": { 2549 | "version": "1.2.0", 2550 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 2551 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 2552 | "dev": true 2553 | }, 2554 | "acorn": { 2555 | "version": "8.11.3", 2556 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 2557 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 2558 | "dev": true 2559 | }, 2560 | "acorn-jsx": { 2561 | "version": "5.3.2", 2562 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2563 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2564 | "dev": true, 2565 | "requires": {} 2566 | }, 2567 | "ajv": { 2568 | "version": "6.12.6", 2569 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2570 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2571 | "dev": true, 2572 | "requires": { 2573 | "fast-deep-equal": "^3.1.1", 2574 | "fast-json-stable-stringify": "^2.0.0", 2575 | "json-schema-traverse": "^0.4.1", 2576 | "uri-js": "^4.2.2" 2577 | } 2578 | }, 2579 | "ansi-regex": { 2580 | "version": "5.0.1", 2581 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2582 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2583 | "dev": true 2584 | }, 2585 | "ansi-styles": { 2586 | "version": "4.3.0", 2587 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2588 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2589 | "dev": true, 2590 | "requires": { 2591 | "color-convert": "^2.0.1" 2592 | } 2593 | }, 2594 | "argparse": { 2595 | "version": "2.0.1", 2596 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2597 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2598 | "dev": true 2599 | }, 2600 | "array-union": { 2601 | "version": "2.1.0", 2602 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 2603 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 2604 | "dev": true 2605 | }, 2606 | "balanced-match": { 2607 | "version": "1.0.2", 2608 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2609 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2610 | "dev": true 2611 | }, 2612 | "brace-expansion": { 2613 | "version": "2.0.1", 2614 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2615 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2616 | "dev": true, 2617 | "requires": { 2618 | "balanced-match": "^1.0.0" 2619 | } 2620 | }, 2621 | "braces": { 2622 | "version": "3.0.2", 2623 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2624 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2625 | "dev": true, 2626 | "requires": { 2627 | "fill-range": "^7.0.1" 2628 | } 2629 | }, 2630 | "builtin-modules": { 2631 | "version": "3.3.0", 2632 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 2633 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 2634 | "dev": true 2635 | }, 2636 | "callsites": { 2637 | "version": "3.1.0", 2638 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2639 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2640 | "dev": true 2641 | }, 2642 | "chalk": { 2643 | "version": "4.1.2", 2644 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2645 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2646 | "dev": true, 2647 | "requires": { 2648 | "ansi-styles": "^4.1.0", 2649 | "supports-color": "^7.1.0" 2650 | } 2651 | }, 2652 | "color-convert": { 2653 | "version": "2.0.1", 2654 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2655 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2656 | "dev": true, 2657 | "requires": { 2658 | "color-name": "~1.1.4" 2659 | } 2660 | }, 2661 | "color-name": { 2662 | "version": "1.1.4", 2663 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2664 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2665 | "dev": true 2666 | }, 2667 | "concat-map": { 2668 | "version": "0.0.1", 2669 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2670 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2671 | "dev": true 2672 | }, 2673 | "cross-spawn": { 2674 | "version": "7.0.3", 2675 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2676 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2677 | "dev": true, 2678 | "requires": { 2679 | "path-key": "^3.1.0", 2680 | "shebang-command": "^2.0.0", 2681 | "which": "^2.0.1" 2682 | } 2683 | }, 2684 | "debug": { 2685 | "version": "4.3.4", 2686 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2687 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2688 | "dev": true, 2689 | "requires": { 2690 | "ms": "2.1.2" 2691 | } 2692 | }, 2693 | "deep-is": { 2694 | "version": "0.1.4", 2695 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 2696 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 2697 | "dev": true 2698 | }, 2699 | "dir-glob": { 2700 | "version": "3.0.1", 2701 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 2702 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 2703 | "dev": true, 2704 | "requires": { 2705 | "path-type": "^4.0.0" 2706 | } 2707 | }, 2708 | "doctrine": { 2709 | "version": "3.0.0", 2710 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2711 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2712 | "dev": true, 2713 | "requires": { 2714 | "esutils": "^2.0.2" 2715 | } 2716 | }, 2717 | "esbuild": { 2718 | "version": "0.17.3", 2719 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.3.tgz", 2720 | "integrity": "sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==", 2721 | "dev": true, 2722 | "requires": { 2723 | "@esbuild/android-arm": "0.17.3", 2724 | "@esbuild/android-arm64": "0.17.3", 2725 | "@esbuild/android-x64": "0.17.3", 2726 | "@esbuild/darwin-arm64": "0.17.3", 2727 | "@esbuild/darwin-x64": "0.17.3", 2728 | "@esbuild/freebsd-arm64": "0.17.3", 2729 | "@esbuild/freebsd-x64": "0.17.3", 2730 | "@esbuild/linux-arm": "0.17.3", 2731 | "@esbuild/linux-arm64": "0.17.3", 2732 | "@esbuild/linux-ia32": "0.17.3", 2733 | "@esbuild/linux-loong64": "0.17.3", 2734 | "@esbuild/linux-mips64el": "0.17.3", 2735 | "@esbuild/linux-ppc64": "0.17.3", 2736 | "@esbuild/linux-riscv64": "0.17.3", 2737 | "@esbuild/linux-s390x": "0.17.3", 2738 | "@esbuild/linux-x64": "0.17.3", 2739 | "@esbuild/netbsd-x64": "0.17.3", 2740 | "@esbuild/openbsd-x64": "0.17.3", 2741 | "@esbuild/sunos-x64": "0.17.3", 2742 | "@esbuild/win32-arm64": "0.17.3", 2743 | "@esbuild/win32-ia32": "0.17.3", 2744 | "@esbuild/win32-x64": "0.17.3" 2745 | } 2746 | }, 2747 | "escape-string-regexp": { 2748 | "version": "4.0.0", 2749 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2750 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2751 | "dev": true 2752 | }, 2753 | "eslint": { 2754 | "version": "8.57.0", 2755 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 2756 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 2757 | "dev": true, 2758 | "requires": { 2759 | "@eslint-community/eslint-utils": "^4.2.0", 2760 | "@eslint-community/regexpp": "^4.6.1", 2761 | "@eslint/eslintrc": "^2.1.4", 2762 | "@eslint/js": "8.57.0", 2763 | "@humanwhocodes/config-array": "^0.11.14", 2764 | "@humanwhocodes/module-importer": "^1.0.1", 2765 | "@nodelib/fs.walk": "^1.2.8", 2766 | "@ungap/structured-clone": "^1.2.0", 2767 | "ajv": "^6.12.4", 2768 | "chalk": "^4.0.0", 2769 | "cross-spawn": "^7.0.2", 2770 | "debug": "^4.3.2", 2771 | "doctrine": "^3.0.0", 2772 | "escape-string-regexp": "^4.0.0", 2773 | "eslint-scope": "^7.2.2", 2774 | "eslint-visitor-keys": "^3.4.3", 2775 | "espree": "^9.6.1", 2776 | "esquery": "^1.4.2", 2777 | "esutils": "^2.0.2", 2778 | "fast-deep-equal": "^3.1.3", 2779 | "file-entry-cache": "^6.0.1", 2780 | "find-up": "^5.0.0", 2781 | "glob-parent": "^6.0.2", 2782 | "globals": "^13.19.0", 2783 | "graphemer": "^1.4.0", 2784 | "ignore": "^5.2.0", 2785 | "imurmurhash": "^0.1.4", 2786 | "is-glob": "^4.0.0", 2787 | "is-path-inside": "^3.0.3", 2788 | "js-yaml": "^4.1.0", 2789 | "json-stable-stringify-without-jsonify": "^1.0.1", 2790 | "levn": "^0.4.1", 2791 | "lodash.merge": "^4.6.2", 2792 | "minimatch": "^3.1.2", 2793 | "natural-compare": "^1.4.0", 2794 | "optionator": "^0.9.3", 2795 | "strip-ansi": "^6.0.1", 2796 | "text-table": "^0.2.0" 2797 | }, 2798 | "dependencies": { 2799 | "brace-expansion": { 2800 | "version": "1.1.11", 2801 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2802 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2803 | "dev": true, 2804 | "requires": { 2805 | "balanced-match": "^1.0.0", 2806 | "concat-map": "0.0.1" 2807 | } 2808 | }, 2809 | "minimatch": { 2810 | "version": "3.1.2", 2811 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2812 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2813 | "dev": true, 2814 | "requires": { 2815 | "brace-expansion": "^1.1.7" 2816 | } 2817 | } 2818 | } 2819 | }, 2820 | "eslint-scope": { 2821 | "version": "7.2.2", 2822 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 2823 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 2824 | "dev": true, 2825 | "requires": { 2826 | "esrecurse": "^4.3.0", 2827 | "estraverse": "^5.2.0" 2828 | } 2829 | }, 2830 | "eslint-visitor-keys": { 2831 | "version": "3.4.3", 2832 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 2833 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 2834 | "dev": true 2835 | }, 2836 | "espree": { 2837 | "version": "9.6.1", 2838 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 2839 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 2840 | "dev": true, 2841 | "requires": { 2842 | "acorn": "^8.9.0", 2843 | "acorn-jsx": "^5.3.2", 2844 | "eslint-visitor-keys": "^3.4.1" 2845 | } 2846 | }, 2847 | "esquery": { 2848 | "version": "1.5.0", 2849 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 2850 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 2851 | "dev": true, 2852 | "requires": { 2853 | "estraverse": "^5.1.0" 2854 | } 2855 | }, 2856 | "esrecurse": { 2857 | "version": "4.3.0", 2858 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2859 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2860 | "dev": true, 2861 | "requires": { 2862 | "estraverse": "^5.2.0" 2863 | } 2864 | }, 2865 | "estraverse": { 2866 | "version": "5.3.0", 2867 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2868 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2869 | "dev": true 2870 | }, 2871 | "esutils": { 2872 | "version": "2.0.3", 2873 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2874 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2875 | "dev": true 2876 | }, 2877 | "fast-deep-equal": { 2878 | "version": "3.1.3", 2879 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2880 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2881 | "dev": true 2882 | }, 2883 | "fast-glob": { 2884 | "version": "3.3.2", 2885 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 2886 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 2887 | "dev": true, 2888 | "requires": { 2889 | "@nodelib/fs.stat": "^2.0.2", 2890 | "@nodelib/fs.walk": "^1.2.3", 2891 | "glob-parent": "^5.1.2", 2892 | "merge2": "^1.3.0", 2893 | "micromatch": "^4.0.4" 2894 | }, 2895 | "dependencies": { 2896 | "glob-parent": { 2897 | "version": "5.1.2", 2898 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2899 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2900 | "dev": true, 2901 | "requires": { 2902 | "is-glob": "^4.0.1" 2903 | } 2904 | } 2905 | } 2906 | }, 2907 | "fast-json-stable-stringify": { 2908 | "version": "2.1.0", 2909 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2910 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2911 | "dev": true 2912 | }, 2913 | "fast-levenshtein": { 2914 | "version": "2.0.6", 2915 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2916 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2917 | "dev": true 2918 | }, 2919 | "fastq": { 2920 | "version": "1.17.1", 2921 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 2922 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 2923 | "dev": true, 2924 | "requires": { 2925 | "reusify": "^1.0.4" 2926 | } 2927 | }, 2928 | "file-entry-cache": { 2929 | "version": "6.0.1", 2930 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 2931 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 2932 | "dev": true, 2933 | "requires": { 2934 | "flat-cache": "^3.0.4" 2935 | } 2936 | }, 2937 | "fill-range": { 2938 | "version": "7.0.1", 2939 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2940 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2941 | "dev": true, 2942 | "requires": { 2943 | "to-regex-range": "^5.0.1" 2944 | } 2945 | }, 2946 | "find-up": { 2947 | "version": "5.0.0", 2948 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2949 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2950 | "dev": true, 2951 | "requires": { 2952 | "locate-path": "^6.0.0", 2953 | "path-exists": "^4.0.0" 2954 | } 2955 | }, 2956 | "flat-cache": { 2957 | "version": "3.2.0", 2958 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 2959 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 2960 | "dev": true, 2961 | "requires": { 2962 | "flatted": "^3.2.9", 2963 | "keyv": "^4.5.3", 2964 | "rimraf": "^3.0.2" 2965 | } 2966 | }, 2967 | "flatted": { 2968 | "version": "3.3.1", 2969 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 2970 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 2971 | "dev": true 2972 | }, 2973 | "fs.realpath": { 2974 | "version": "1.0.0", 2975 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2976 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 2977 | "dev": true 2978 | }, 2979 | "glob": { 2980 | "version": "7.2.3", 2981 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2982 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2983 | "dev": true, 2984 | "requires": { 2985 | "fs.realpath": "^1.0.0", 2986 | "inflight": "^1.0.4", 2987 | "inherits": "2", 2988 | "minimatch": "^3.1.1", 2989 | "once": "^1.3.0", 2990 | "path-is-absolute": "^1.0.0" 2991 | }, 2992 | "dependencies": { 2993 | "brace-expansion": { 2994 | "version": "1.1.11", 2995 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2996 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2997 | "dev": true, 2998 | "requires": { 2999 | "balanced-match": "^1.0.0", 3000 | "concat-map": "0.0.1" 3001 | } 3002 | }, 3003 | "minimatch": { 3004 | "version": "3.1.2", 3005 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3006 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3007 | "dev": true, 3008 | "requires": { 3009 | "brace-expansion": "^1.1.7" 3010 | } 3011 | } 3012 | } 3013 | }, 3014 | "glob-parent": { 3015 | "version": "6.0.2", 3016 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 3017 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 3018 | "dev": true, 3019 | "requires": { 3020 | "is-glob": "^4.0.3" 3021 | } 3022 | }, 3023 | "globals": { 3024 | "version": "13.24.0", 3025 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 3026 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 3027 | "dev": true, 3028 | "requires": { 3029 | "type-fest": "^0.20.2" 3030 | } 3031 | }, 3032 | "globby": { 3033 | "version": "11.1.0", 3034 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 3035 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 3036 | "dev": true, 3037 | "requires": { 3038 | "array-union": "^2.1.0", 3039 | "dir-glob": "^3.0.1", 3040 | "fast-glob": "^3.2.9", 3041 | "ignore": "^5.2.0", 3042 | "merge2": "^1.4.1", 3043 | "slash": "^3.0.0" 3044 | } 3045 | }, 3046 | "graphemer": { 3047 | "version": "1.4.0", 3048 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 3049 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 3050 | "dev": true 3051 | }, 3052 | "has-flag": { 3053 | "version": "4.0.0", 3054 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3055 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3056 | "dev": true 3057 | }, 3058 | "ignore": { 3059 | "version": "5.3.1", 3060 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 3061 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 3062 | "dev": true 3063 | }, 3064 | "import-fresh": { 3065 | "version": "3.3.0", 3066 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 3067 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 3068 | "dev": true, 3069 | "requires": { 3070 | "parent-module": "^1.0.0", 3071 | "resolve-from": "^4.0.0" 3072 | } 3073 | }, 3074 | "imurmurhash": { 3075 | "version": "0.1.4", 3076 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3077 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 3078 | "dev": true 3079 | }, 3080 | "inflight": { 3081 | "version": "1.0.6", 3082 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3083 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 3084 | "dev": true, 3085 | "requires": { 3086 | "once": "^1.3.0", 3087 | "wrappy": "1" 3088 | } 3089 | }, 3090 | "inherits": { 3091 | "version": "2.0.4", 3092 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3093 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3094 | "dev": true 3095 | }, 3096 | "is-extglob": { 3097 | "version": "2.1.1", 3098 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3099 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3100 | "dev": true 3101 | }, 3102 | "is-glob": { 3103 | "version": "4.0.3", 3104 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3105 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3106 | "dev": true, 3107 | "requires": { 3108 | "is-extglob": "^2.1.1" 3109 | } 3110 | }, 3111 | "is-number": { 3112 | "version": "7.0.0", 3113 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3114 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3115 | "dev": true 3116 | }, 3117 | "is-path-inside": { 3118 | "version": "3.0.3", 3119 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 3120 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 3121 | "dev": true 3122 | }, 3123 | "isexe": { 3124 | "version": "2.0.0", 3125 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3126 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3127 | "dev": true 3128 | }, 3129 | "js-yaml": { 3130 | "version": "4.1.0", 3131 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3132 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3133 | "dev": true, 3134 | "requires": { 3135 | "argparse": "^2.0.1" 3136 | } 3137 | }, 3138 | "json-buffer": { 3139 | "version": "3.0.1", 3140 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 3141 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3142 | "dev": true 3143 | }, 3144 | "json-schema-traverse": { 3145 | "version": "0.4.1", 3146 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3147 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3148 | "dev": true 3149 | }, 3150 | "json-stable-stringify-without-jsonify": { 3151 | "version": "1.0.1", 3152 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3153 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 3154 | "dev": true 3155 | }, 3156 | "keyv": { 3157 | "version": "4.5.4", 3158 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 3159 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 3160 | "dev": true, 3161 | "requires": { 3162 | "json-buffer": "3.0.1" 3163 | } 3164 | }, 3165 | "levn": { 3166 | "version": "0.4.1", 3167 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3168 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3169 | "dev": true, 3170 | "requires": { 3171 | "prelude-ls": "^1.2.1", 3172 | "type-check": "~0.4.0" 3173 | } 3174 | }, 3175 | "locate-path": { 3176 | "version": "6.0.0", 3177 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3178 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3179 | "dev": true, 3180 | "requires": { 3181 | "p-locate": "^5.0.0" 3182 | } 3183 | }, 3184 | "lodash.merge": { 3185 | "version": "4.6.2", 3186 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 3187 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 3188 | "dev": true 3189 | }, 3190 | "lru-cache": { 3191 | "version": "6.0.0", 3192 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3193 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3194 | "dev": true, 3195 | "requires": { 3196 | "yallist": "^4.0.0" 3197 | } 3198 | }, 3199 | "merge2": { 3200 | "version": "1.4.1", 3201 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3202 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3203 | "dev": true 3204 | }, 3205 | "micromatch": { 3206 | "version": "4.0.5", 3207 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 3208 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 3209 | "dev": true, 3210 | "requires": { 3211 | "braces": "^3.0.2", 3212 | "picomatch": "^2.3.1" 3213 | } 3214 | }, 3215 | "minimatch": { 3216 | "version": "9.0.3", 3217 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 3218 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 3219 | "dev": true, 3220 | "requires": { 3221 | "brace-expansion": "^2.0.1" 3222 | } 3223 | }, 3224 | "moment": { 3225 | "version": "2.29.1", 3226 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 3227 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 3228 | "dev": true 3229 | }, 3230 | "ms": { 3231 | "version": "2.1.2", 3232 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3233 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3234 | "dev": true 3235 | }, 3236 | "natural-compare": { 3237 | "version": "1.4.0", 3238 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3239 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3240 | "dev": true 3241 | }, 3242 | "obsidian": { 3243 | "version": "0.12.17", 3244 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.12.17.tgz", 3245 | "integrity": "sha512-YvCAlRym9D8zNPXt6Ez8QubSTVGoChx6lb58zqI13Dcrz3l1lgUO+pcOGDiD5Qa67nzDZLXo3aV2rqkCCpTvGQ==", 3246 | "dev": true, 3247 | "requires": { 3248 | "@types/codemirror": "0.0.108", 3249 | "moment": "2.29.1" 3250 | } 3251 | }, 3252 | "once": { 3253 | "version": "1.4.0", 3254 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3255 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3256 | "dev": true, 3257 | "requires": { 3258 | "wrappy": "1" 3259 | } 3260 | }, 3261 | "optionator": { 3262 | "version": "0.9.3", 3263 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 3264 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 3265 | "dev": true, 3266 | "requires": { 3267 | "@aashutoshrathi/word-wrap": "^1.2.3", 3268 | "deep-is": "^0.1.3", 3269 | "fast-levenshtein": "^2.0.6", 3270 | "levn": "^0.4.1", 3271 | "prelude-ls": "^1.2.1", 3272 | "type-check": "^0.4.0" 3273 | } 3274 | }, 3275 | "p-limit": { 3276 | "version": "3.1.0", 3277 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3278 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3279 | "dev": true, 3280 | "requires": { 3281 | "yocto-queue": "^0.1.0" 3282 | } 3283 | }, 3284 | "p-locate": { 3285 | "version": "5.0.0", 3286 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3287 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3288 | "dev": true, 3289 | "requires": { 3290 | "p-limit": "^3.0.2" 3291 | } 3292 | }, 3293 | "parent-module": { 3294 | "version": "1.0.1", 3295 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3296 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3297 | "dev": true, 3298 | "requires": { 3299 | "callsites": "^3.0.0" 3300 | } 3301 | }, 3302 | "path-exists": { 3303 | "version": "4.0.0", 3304 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3305 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3306 | "dev": true 3307 | }, 3308 | "path-is-absolute": { 3309 | "version": "1.0.1", 3310 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3311 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3312 | "dev": true 3313 | }, 3314 | "path-key": { 3315 | "version": "3.1.1", 3316 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3317 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3318 | "dev": true 3319 | }, 3320 | "path-type": { 3321 | "version": "4.0.0", 3322 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3323 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 3324 | "dev": true 3325 | }, 3326 | "picomatch": { 3327 | "version": "2.3.1", 3328 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3329 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3330 | "dev": true 3331 | }, 3332 | "prelude-ls": { 3333 | "version": "1.2.1", 3334 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3335 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3336 | "dev": true 3337 | }, 3338 | "punycode": { 3339 | "version": "2.3.1", 3340 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3341 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3342 | "dev": true 3343 | }, 3344 | "queue-microtask": { 3345 | "version": "1.2.3", 3346 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3347 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3348 | "dev": true 3349 | }, 3350 | "resolve-from": { 3351 | "version": "4.0.0", 3352 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3353 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3354 | "dev": true 3355 | }, 3356 | "reusify": { 3357 | "version": "1.0.4", 3358 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3359 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3360 | "dev": true 3361 | }, 3362 | "rimraf": { 3363 | "version": "3.0.2", 3364 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3365 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3366 | "dev": true, 3367 | "requires": { 3368 | "glob": "^7.1.3" 3369 | } 3370 | }, 3371 | "run-parallel": { 3372 | "version": "1.2.0", 3373 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3374 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3375 | "dev": true, 3376 | "requires": { 3377 | "queue-microtask": "^1.2.2" 3378 | } 3379 | }, 3380 | "semver": { 3381 | "version": "7.6.0", 3382 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 3383 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 3384 | "dev": true, 3385 | "requires": { 3386 | "lru-cache": "^6.0.0" 3387 | } 3388 | }, 3389 | "shebang-command": { 3390 | "version": "2.0.0", 3391 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3392 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3393 | "dev": true, 3394 | "requires": { 3395 | "shebang-regex": "^3.0.0" 3396 | } 3397 | }, 3398 | "shebang-regex": { 3399 | "version": "3.0.0", 3400 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3401 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3402 | "dev": true 3403 | }, 3404 | "slash": { 3405 | "version": "3.0.0", 3406 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3407 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3408 | "dev": true 3409 | }, 3410 | "strip-ansi": { 3411 | "version": "6.0.1", 3412 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3413 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3414 | "dev": true, 3415 | "requires": { 3416 | "ansi-regex": "^5.0.1" 3417 | } 3418 | }, 3419 | "strip-json-comments": { 3420 | "version": "3.1.1", 3421 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3422 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3423 | "dev": true 3424 | }, 3425 | "supports-color": { 3426 | "version": "7.2.0", 3427 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3428 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3429 | "dev": true, 3430 | "requires": { 3431 | "has-flag": "^4.0.0" 3432 | } 3433 | }, 3434 | "text-table": { 3435 | "version": "0.2.0", 3436 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3437 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 3438 | "dev": true 3439 | }, 3440 | "to-regex-range": { 3441 | "version": "5.0.1", 3442 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3443 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3444 | "dev": true, 3445 | "requires": { 3446 | "is-number": "^7.0.0" 3447 | } 3448 | }, 3449 | "ts-api-utils": { 3450 | "version": "1.3.0", 3451 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 3452 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 3453 | "dev": true, 3454 | "requires": {} 3455 | }, 3456 | "tslib": { 3457 | "version": "2.4.0", 3458 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 3459 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 3460 | "dev": true 3461 | }, 3462 | "type-check": { 3463 | "version": "0.4.0", 3464 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3465 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3466 | "dev": true, 3467 | "requires": { 3468 | "prelude-ls": "^1.2.1" 3469 | } 3470 | }, 3471 | "type-fest": { 3472 | "version": "0.20.2", 3473 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3474 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 3475 | "dev": true 3476 | }, 3477 | "typescript": { 3478 | "version": "4.7.4", 3479 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 3480 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 3481 | "dev": true 3482 | }, 3483 | "uri-js": { 3484 | "version": "4.4.1", 3485 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3486 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3487 | "dev": true, 3488 | "requires": { 3489 | "punycode": "^2.1.0" 3490 | } 3491 | }, 3492 | "which": { 3493 | "version": "2.0.2", 3494 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3495 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3496 | "dev": true, 3497 | "requires": { 3498 | "isexe": "^2.0.0" 3499 | } 3500 | }, 3501 | "wrappy": { 3502 | "version": "1.0.2", 3503 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3504 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3505 | "dev": true 3506 | }, 3507 | "yallist": { 3508 | "version": "4.0.0", 3509 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3510 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3511 | "dev": true 3512 | }, 3513 | "yocto-queue": { 3514 | "version": "0.1.0", 3515 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3516 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3517 | "dev": true 3518 | } 3519 | } 3520 | } 3521 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-collapse-all-plugin", 3 | "version": "2.1.0", 4 | "description": "This plugin adds a button to collapse all folders in the file explorer.", 5 | "main": "main.js", 6 | "scripts": { 7 | "dev": "node esbuild.config.mjs", 8 | "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production" 9 | }, 10 | "keywords": [], 11 | "author": { 12 | "name": "Nathonius", 13 | "url": "https://nathan-smith.org/" 14 | }, 15 | "license": "MIT", 16 | "devDependencies": { 17 | "@types/node": "^16.11.6", 18 | "@typescript-eslint/eslint-plugin": "^7.3.1", 19 | "@typescript-eslint/parser": "^7.3.1", 20 | "builtin-modules": "3.3.0", 21 | "esbuild": "0.17.3", 22 | "eslint": "^8.57.0", 23 | "obsidian": "latest", 24 | "tslib": "2.4.0", 25 | "typescript": "4.7.4" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | import { Settings } from './interfaces'; 2 | 3 | export const DEFAULT_SETTINGS: Settings = { 4 | commands: { 5 | Global: false, 6 | FileExplorer: true, 7 | TagPane: true, 8 | Search: false, 9 | Bookmarks: false 10 | } 11 | }; 12 | 13 | export enum ProviderType { 14 | FileExplorer = 'FileExplorer', 15 | TagPane = 'TagPane', 16 | Global = 'Global', 17 | Search = 'Search', 18 | Bookmarks = 'Bookmarks' 19 | } 20 | -------------------------------------------------------------------------------- /src/interfaces.ts: -------------------------------------------------------------------------------- 1 | import { ProviderType } from './constants'; 2 | 3 | export interface Settings { 4 | commands: Record; 5 | } 6 | -------------------------------------------------------------------------------- /src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from 'obsidian'; 2 | import { DEFAULT_SETTINGS, ProviderType } from './constants'; 3 | import { Settings } from './interfaces'; 4 | import { 5 | BookmarksProvider, 6 | FileExplorerProvider, 7 | GlobalProvider, 8 | SearchProvider, 9 | TagPaneProvider 10 | } from './provider'; 11 | import { ProviderBase } from './provider/base'; 12 | import { CollapseAllPluginSettings } from './settings'; 13 | 14 | export class CollapseAllPlugin extends Plugin { 15 | settings: Settings = DEFAULT_SETTINGS; 16 | 17 | providers: Record = { 18 | [ProviderType.Global]: new GlobalProvider(this), 19 | [ProviderType.FileExplorer]: new FileExplorerProvider(this), 20 | [ProviderType.TagPane]: new TagPaneProvider(this), 21 | [ProviderType.Search]: new SearchProvider(this), 22 | [ProviderType.Bookmarks]: new BookmarksProvider(this) 23 | }; 24 | 25 | get allProviders(): ProviderBase[] { 26 | return Object.values(this.providers); 27 | } 28 | 29 | async onload(): Promise { 30 | // Load settings 31 | this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); 32 | 33 | // Add commands for each provider 34 | this.allProviders.forEach((provider) => { 35 | if (this.settings.commands[provider.providerType]) { 36 | provider.register(); 37 | } 38 | }); 39 | 40 | // Add settings tab 41 | this.addSettingTab(new CollapseAllPluginSettings(this.app, this)); 42 | } 43 | 44 | saveSettings(): Promise { 45 | return this.saveData(this.settings); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/provider/base.ts: -------------------------------------------------------------------------------- 1 | import { Command, WorkspaceLeaf } from 'obsidian'; 2 | import { ProviderType } from '../constants'; 3 | import { CollapseAllPlugin } from '../plugin'; 4 | 5 | export abstract class ProviderBase { 6 | /** 7 | * ProviderType, used for configuration 8 | */ 9 | abstract readonly providerType: ProviderType; 10 | 11 | /** 12 | * Used when adding UI 13 | */ 14 | abstract readonly displayName: string; 15 | 16 | /** 17 | * The leaf type for getLeavesOfType 18 | */ 19 | protected abstract readonly leafType: string; 20 | 21 | /** 22 | * Name for the toggle command 23 | */ 24 | protected abstract readonly toggleCommandName: string; 25 | 26 | /** 27 | * Name for the collapse command 28 | */ 29 | protected abstract readonly collapseCommandName: string; 30 | 31 | /** 32 | * Name for the expand command 33 | */ 34 | protected abstract readonly expandCommandName: string; 35 | 36 | private registered = false; 37 | 38 | constructor(protected plugin: CollapseAllPlugin) {} 39 | 40 | /** 41 | * Collapse command config 42 | */ 43 | protected get collapseCommand(): Command { 44 | return { 45 | id: `collapse-${this.leafType}`, 46 | name: this.collapseCommandName, 47 | icon: 'double-up-arrow-glyph', 48 | callback: () => { 49 | this.collapseAll(); 50 | } 51 | }; 52 | } 53 | 54 | /** 55 | * Expand command config 56 | */ 57 | protected get expandCommand(): Command { 58 | return { 59 | id: `expand-${this.leafType}`, 60 | name: this.expandCommandName, 61 | icon: 'double-down-arrow-glyph', 62 | callback: () => { 63 | this.expandAll(); 64 | } 65 | }; 66 | } 67 | 68 | /** 69 | * Toggle command config 70 | */ 71 | protected get toggleCommand(): Command { 72 | return { 73 | id: `toggle-${this.leafType}`, 74 | name: this.toggleCommandName, 75 | icon: 'double-down-arrow-glyph', 76 | callback: () => { 77 | this.toggleCollapse(); 78 | } 79 | }; 80 | } 81 | 82 | protected get commands(): Command[] { 83 | return [this.collapseCommand, this.expandCommand, this.toggleCommand]; 84 | } 85 | 86 | public register(): void { 87 | if (this.registered) { 88 | return; 89 | } 90 | for (const command of this.commands) { 91 | this.plugin.addCommand(command); 92 | } 93 | this.registered = true; 94 | } 95 | 96 | /** 97 | * Collapse or expand all items for the given leaf 98 | * @argument collapsed if not provided, will toggle the state 99 | */ 100 | protected collapseOrExpandAll( 101 | leaf: WorkspaceLeaf, 102 | collapsed?: boolean 103 | ): void { 104 | if (collapsed === undefined) { 105 | if (!leaf.view.tree?.toggleCollapseAll) { 106 | console.error( 107 | `No toggle collapse function found on ${this.leafType} view.` 108 | ); 109 | return; 110 | } 111 | leaf.view.tree?.toggleCollapseAll(); 112 | } else { 113 | if (!leaf.view.tree?.setCollapseAll) { 114 | console.error(`No collapse function found on ${this.leafType} view.`); 115 | return; 116 | } 117 | leaf.view.tree.setCollapseAll(collapsed); 118 | } 119 | } 120 | 121 | /** 122 | * Returns true if every item in the given leaf is collapsed 123 | */ 124 | public allCollapsed(singleLeaf: WorkspaceLeaf | null = null): boolean { 125 | const leaves = singleLeaf ? [singleLeaf] : this.leaves; 126 | let collapsed = true; 127 | for (const leaf of leaves) { 128 | if (leaf.view.tree?.isAllCollapsed === undefined) { 129 | console.error('No collapsed state found on view.'); 130 | collapsed = false; 131 | } 132 | } 133 | return collapsed; 134 | } 135 | 136 | public toggleCollapse(singleLeaf: WorkspaceLeaf | null = null): void { 137 | const leaves = singleLeaf ? [singleLeaf] : this.leaves; 138 | for (const leaf of leaves) { 139 | this.collapseOrExpandAll(leaf); 140 | } 141 | } 142 | 143 | /** 144 | * Collapse all open items in the given leaf or all leaves 145 | */ 146 | public collapseAll(singleLeaf: WorkspaceLeaf | null = null): void { 147 | const leaves = singleLeaf ? [singleLeaf] : this.leaves; 148 | for (const leaf of leaves) { 149 | this.collapseOrExpandAll(leaf, true); 150 | } 151 | } 152 | 153 | /** 154 | * Expand all collapsed items in the given leaf or all leaves 155 | */ 156 | public expandAll(singleLeaf: WorkspaceLeaf | null = null): void { 157 | const leaves = singleLeaf ? [singleLeaf] : this.leaves; 158 | for (const leaf of leaves) { 159 | this.collapseOrExpandAll(leaf, false); 160 | } 161 | } 162 | 163 | /** 164 | * Returns all loaded leaves of the class leafType 165 | */ 166 | protected get leaves(): WorkspaceLeaf[] { 167 | return this.plugin.app.workspace.getLeavesOfType(this.leafType); 168 | } 169 | } 170 | -------------------------------------------------------------------------------- /src/provider/bookmarks.ts: -------------------------------------------------------------------------------- 1 | import { ProviderType } from '../constants'; 2 | import { ProviderBase } from './base'; 3 | 4 | export class BookmarksProvider extends ProviderBase { 5 | public readonly providerType = ProviderType.Bookmarks; 6 | public readonly displayName = 'Bookmarks'; 7 | protected readonly leafType = 'bookmarks'; 8 | protected readonly toggleCommandName = 'Toggle collapse in bookmarks view'; 9 | protected readonly collapseCommandName = 'Collapse all in bookmarks view'; 10 | protected readonly expandCommandName = 'Expand all in bookmarks view'; 11 | } 12 | -------------------------------------------------------------------------------- /src/provider/file-explorer.ts: -------------------------------------------------------------------------------- 1 | import { ProviderType } from '../constants'; 2 | import { ProviderBase } from './base'; 3 | 4 | export class FileExplorerProvider extends ProviderBase { 5 | providerType: ProviderType = ProviderType.FileExplorer; 6 | displayName = 'File explorer'; 7 | protected leafType = 'file-explorer'; 8 | protected readonly collapseCommandName = 9 | 'Collapse open folders in all file explorers'; 10 | protected readonly expandCommandName = 11 | 'Expand closed folders in all file explorers'; 12 | protected readonly toggleCommandName = 13 | 'Toggle collapse in all file explorers'; 14 | } 15 | -------------------------------------------------------------------------------- /src/provider/global.ts: -------------------------------------------------------------------------------- 1 | import { WorkspaceLeaf } from 'obsidian'; 2 | import { ProviderType } from '../constants'; 3 | import { ProviderBase } from './base'; 4 | 5 | export class GlobalProvider extends ProviderBase { 6 | public readonly providerType: ProviderType = ProviderType.Global; 7 | public readonly displayName = 'All supported explorers (global)'; 8 | protected readonly leafType = ''; 9 | protected readonly toggleCommandName = 10 | 'Toggle collapse state in all supported explorers'; 11 | protected readonly collapseCommandName = 12 | 'Collapse open items in all supported explorers'; 13 | protected readonly expandCommandName = 14 | 'Expand closed items in all supported explorers'; 15 | 16 | private get providers() { 17 | return this.plugin.allProviders.filter( 18 | (p) => p.providerType !== ProviderType.Global 19 | ); 20 | } 21 | 22 | public override allCollapsed(): boolean { 23 | return this.providers.every((p) => p.allCollapsed()); 24 | } 25 | 26 | public override toggleCollapse(_: WorkspaceLeaf | null = null): void { 27 | for (const provider of this.providers) { 28 | provider.toggleCollapse(); 29 | } 30 | } 31 | 32 | public override collapseAll(_: WorkspaceLeaf | null = null): void { 33 | for (const provider of this.providers) { 34 | provider.collapseAll(); 35 | } 36 | } 37 | 38 | public override expandAll(_: WorkspaceLeaf | null = null): void { 39 | for (const provider of this.providers) { 40 | provider.expandAll(); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/provider/index.ts: -------------------------------------------------------------------------------- 1 | export { FileExplorerProvider } from './file-explorer'; 2 | export { TagPaneProvider } from './tag-pane'; 3 | export { GlobalProvider } from './global'; 4 | export { SearchProvider } from './search'; 5 | export { BookmarksProvider } from './bookmarks'; 6 | -------------------------------------------------------------------------------- /src/provider/search.ts: -------------------------------------------------------------------------------- 1 | import { Command, WorkspaceLeaf } from 'obsidian'; 2 | import { ProviderType } from '../constants'; 3 | import { ProviderBase } from './base'; 4 | 5 | export class SearchProvider extends ProviderBase { 6 | public readonly providerType = ProviderType.Search; 7 | public readonly displayName = 'Search'; 8 | protected readonly leafType = 'search'; 9 | protected readonly collapseCommandName = 'Collapse all in search views'; 10 | protected readonly expandCommandName = 'Expand all in search views'; 11 | protected readonly toggleCommandName = 'Not available'; 12 | 13 | protected override get commands(): Command[] { 14 | return [this.collapseCommand, this.expandCommand]; 15 | } 16 | 17 | public override toggleCollapse(): void { 18 | // Not available 19 | } 20 | 21 | /** 22 | * Collapse or expand all items for the given leaf 23 | * @argument collapsed if not provided, will toggle the state 24 | */ 25 | protected collapseOrExpandAll( 26 | leaf: WorkspaceLeaf, 27 | collapsed?: boolean 28 | ): void { 29 | if (collapsed === undefined) { 30 | // Not availabble 31 | } else { 32 | if (!leaf.view.setCollapseAll) { 33 | console.error(`No collapse function found on ${this.leafType} view.`); 34 | return; 35 | } 36 | leaf.view.setCollapseAll(collapsed); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/provider/tag-pane.ts: -------------------------------------------------------------------------------- 1 | import { Command, WorkspaceLeaf } from 'obsidian'; 2 | import { ProviderType } from '../constants'; 3 | import { ProviderBase } from './base'; 4 | 5 | export class TagPaneProvider extends ProviderBase { 6 | providerType: ProviderType = ProviderType.TagPane; 7 | displayName = 'Tag pane'; 8 | protected leafType = 'tag'; 9 | protected readonly collapseCommandName = 'Not available'; 10 | protected readonly expandCommandName = 'Not available'; 11 | protected readonly toggleCommandName = 'Toggle collapse in all tag explorers'; 12 | 13 | protected override get commands(): Command[] { 14 | return [this.toggleCommand]; 15 | } 16 | 17 | public override toggleCollapse(singleLeaf?: WorkspaceLeaf): void { 18 | const leaves = singleLeaf ? [singleLeaf] : this.leaves; 19 | for (const leaf of leaves) { 20 | if (!leaf.view.collapseOrExpandAllEl) { 21 | console.error(`No collapse element found on ${this.leafType} view.`); 22 | return; 23 | } 24 | leaf.view.collapseOrExpandAllEl.click(); 25 | } 26 | } 27 | 28 | public override collapseAll(_?: WorkspaceLeaf | null): void { 29 | // Not available 30 | } 31 | 32 | public override expandAll(_?: WorkspaceLeaf | null): void { 33 | // Not available 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/settings.ts: -------------------------------------------------------------------------------- 1 | import { App, PluginSettingTab, Setting } from 'obsidian'; 2 | import { CollapseAllPlugin } from './plugin'; 3 | 4 | export class CollapseAllPluginSettings extends PluginSettingTab { 5 | constructor(app: App, readonly plugin: CollapseAllPlugin) { 6 | super(app, plugin); 7 | } 8 | 9 | display() { 10 | this.containerEl.empty(); 11 | this.containerEl.createEl('h3', { text: 'Command settings' }); 12 | this.containerEl.createEl('p', { 13 | text: 'Each toggle controls whether commands should be added to collapse and expand that view, or global which operates on all available views.' 14 | }); 15 | 16 | // Add individual toggles 17 | this.plugin.allProviders.forEach((provider) => { 18 | new Setting(this.containerEl) 19 | .setName(provider.displayName) 20 | .addToggle((toggle) => { 21 | toggle 22 | .setTooltip(provider.displayName) 23 | .setValue(this.plugin.settings.commands[provider.providerType]) 24 | .onChange(async (value) => { 25 | this.plugin.settings.commands[provider.providerType] = value; 26 | if (value === true) { 27 | provider.register(); 28 | } 29 | await this.plugin.saveSettings(); 30 | }); 31 | }); 32 | }); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 2 | import type { View } from 'obsidian'; 3 | declare module 'obsidian' { 4 | interface View { 5 | tree?: { 6 | toggleCollapseAll?: () => void; 7 | setCollapseAll?: (collapse: boolean) => void; 8 | isAllCollapsed?: boolean; 9 | }; 10 | toggleCollapseAll?: () => void; 11 | setCollapseAll?: (collapse: boolean) => void; 12 | isAllCollapsed?: boolean; 13 | collapseOrExpandAllEl?: HTMLDivElement; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "inlineSourceMap": true, 5 | "inlineSources": true, 6 | "module": "ESNext", 7 | "target": "es6", 8 | "allowJs": false, 9 | "noImplicitAny": true, 10 | "strict": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "lib": ["dom", "es5", "scripthost", "es2015"] 14 | }, 15 | "include": ["**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "2.1.0": "1.5.11", 3 | "2.0.0": "1.0.0", 4 | "1.5.3": "0.12.11", 5 | "1.5.2": "0.12.11", 6 | "1.5.1": "0.12.11", 7 | "1.5.0": "0.12.11", 8 | "1.4.0": "0.12.11", 9 | "1.3.0": "0.12.11", 10 | "1.2.0": "0.12.10", 11 | "1.1.1": "0.9.12", 12 | "1.0.1": "0.9.12", 13 | "1.0.0": "0.9.7" 14 | } 15 | --------------------------------------------------------------------------------