diff --git a/package-lock.json b/package-lock.json index 255f6d7..e3717e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,13 +50,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -85,13 +85,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -101,9 +101,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, "license": "MIT", "engines": { @@ -111,9 +111,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -1366,20 +1366,30 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.78.0.tgz", - "integrity": "sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==", + "version": "0.79.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.79.0.tgz", + "integrity": "sha512-q/Nc241VsVRC5b1dgbsOI0fnWfrb1S9sdceFewpDHto4+4r2o6SSCpcY+Z+EdLdMPN6Nsj/PjlPcKag6WbU6XQ==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.46.4", + "@typescript-eslint/types": "^8.52.0", "comment-parser": "1.4.1", - "esquery": "^1.6.0", + "esquery": "^1.7.0", "jsdoc-type-pratt-parser": "~7.0.0" }, "engines": { - "node": ">=20.11.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@es-joy/jsdoccomment/node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" } }, "node_modules/@es-joy/resolve.exports": { @@ -1835,14 +1845,14 @@ } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.5.0.tgz", - "integrity": "sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.6.0.tgz", + "integrity": "sha512-2EX2bBQq1ez++xz2o9tEeEQkyvfieWgUFMH4rtJJri2q0Azvhja3hZGXsjPXs31R4fQkZDtWzNDDK2zQn5UE5g==", "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^4.0.0", - "ignore": "^5.2.4" + "ignore": "^7.0.5" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2035,6 +2045,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4271,16 +4291,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/parser": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", @@ -5846,9 +5856,9 @@ } }, "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.3.tgz", + "integrity": "sha512-qvEp8Hk/uxsIbBe2gnu87CrP2wSFLzG0fIgcxF27DiBlD12Nlyydt91T4KQNiRxfebMxU5QEoWQBNiha+A9I3A==", "dev": true, "license": "MIT", "engines": { @@ -6658,9 +6668,9 @@ } }, "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", "dev": true, "license": "ISC", "engines": { @@ -7194,9 +7204,9 @@ "optional": true }, "node_modules/devalue": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", - "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", "dev": true, "license": "MIT", "peer": true @@ -7386,9 +7396,9 @@ } }, "node_modules/electron/node_modules/@types/node": { - "version": "22.19.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.5.tgz", - "integrity": "sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==", + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", "dev": true, "license": "MIT", "dependencies": { @@ -8097,13 +8107,13 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "61.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.7.1.tgz", - "integrity": "sha512-36DpldF95MlTX//n3/naULFVt8d1cV4jmSkx7ZKrE9ikkKHAgMLesuWp1SmwpVwAs5ndIM6abKd6PeOYZUgdWg==", + "version": "62.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.0.0.tgz", + "integrity": "sha512-sNdIGLAvjFK3pB0SYFW74iXODZ4ifF8Ax13Wgq8jKepKnrCFzGo7+jRZfLf70h81SD7lPYnTE7MR2nhYSvaLTA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.78.0", + "@es-joy/jsdoccomment": "~0.79.0", "@es-joy/resolve.exports": "1.2.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", @@ -8119,12 +8129,22 @@ "to-valid-identifier": "^1.0.0" }, "engines": { - "node": ">=20.11.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-jsdoc/node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -8255,6 +8275,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-n/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/eslint-plugin-n/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -8816,6 +8846,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -9704,16 +9744,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/globby/node_modules/unicorn-magic": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", @@ -10041,9 +10071,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -12789,9 +12819,9 @@ } }, "node_modules/module-replacements": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/module-replacements/-/module-replacements-2.10.1.tgz", - "integrity": "sha512-qkKuLpMHDqRSM676OPL7HUpCiiP3NSxgf8NNR1ga2h/iJLNKTsOSjMEwrcT85DMSti2vmOqxknOVBGWj6H6etQ==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/module-replacements/-/module-replacements-2.11.0.tgz", + "integrity": "sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==", "dev": true, "license": "MIT" }, @@ -13131,90 +13161,90 @@ } }, "node_modules/obsidian-dev-utils": { - "version": "46.17.1", - "resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-46.17.1.tgz", - "integrity": "sha512-InXfow2n/Zj2pfiPcoUQE/CtG8hEacTMgBhFzwLlpXGZ2vEvdOzDfjpt74ueTgk4eMHDyYz9pSFL2FfCahPhFA==", + "version": "48.0.2", + "resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-48.0.2.tgz", + "integrity": "sha512-mFRxp/6gHbO2V/196UTCKfRHH1TtmiohsF+SQyTuDJC+oKC6Bd0HDU9XSBKRsPOdCKo9YI12oX6DqAR3FDyNpQ==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/state": "6.5.0", "@codemirror/view": "6.38.6", - "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", - "@eslint/js": "^9.39.2", - "@guardian/eslint-plugin-tsdoc-required": "^0.1.3", + "@eslint-community/eslint-plugin-eslint-comments": "latest", + "@eslint/js": "latest", + "@guardian/eslint-plugin-tsdoc-required": "latest", "@lezer/common": "1.2.3", - "@stylistic/eslint-plugin": "^5.6.1", - "@total-typescript/ts-reset": "^0.6.1", - "@tsconfig/strictest": "^2.0.8", - "@types/babel__core": "^7.20.5", - "@types/doctrine": "^0.0.9", - "@types/eslint": "^9.6.1", - "@types/luxon": "^3.7.1", + "@stylistic/eslint-plugin": "latest", + "@total-typescript/ts-reset": "latest", + "@tsconfig/strictest": "latest", + "@types/babel__core": "latest", + "@types/doctrine": "latest", + "@types/eslint": "latest", + "@types/luxon": "latest", "@types/node": "25.0.3", - "@types/parsimmon": "^1.10.9", - "@types/path-browserify": "^1.0.3", - "@types/picomatch": "^4.0.2", - "@types/pug": "^2.0.10", - "@types/react": "^19.2.7", - "@types/shell-quote": "^1.7.5", - "@typescript-eslint/eslint-plugin": "^8.52.0", - "@typescript-eslint/parser": "^8.52.0", - "better-typescript-lib": "^2.12.0", - "commander": "^14.0.2", - "compare-versions": "^6.1.1", - "cspell": "^9.4.0", - "debug": "^4.4.3", - "dprint": "^0.51.1", - "enhanced-resolve": "^5.18.4", - "esbuild": "^0.27.2", - "esbuild-sass-plugin": "^3.3.1", - "esbuild-svelte": "^0.9.4", - "eslint": "^9.39.2", - "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-import-x": "^4.16.1", - "eslint-plugin-jsdoc": "^61.5.0", - "eslint-plugin-modules-newlines": "^0.0.7", - "eslint-plugin-obsidianmd": "^0.1.9", - "eslint-plugin-perfectionist": "^5.3.0", - "eslint-plugin-tsdoc": "^0.5.0", - "globals": "^17.0.0", - "i18next": "^25.7.3", - "jiti": "^2.6.1", - "linkinator": "^7.5.3", - "localforage": "^1.10.0", - "lru-cache": "^11.2.4", - "markdownlint": "^0.40.0", - "markdownlint-cli2": "^0.20.0", - "markdownlint-rule-relative-links": "^4.2.0", - "monkey-around": "^3.0.0", - "npm-run-all2": "^8.0.4", + "@types/parsimmon": "latest", + "@types/path-browserify": "latest", + "@types/picomatch": "latest", + "@types/pug": "latest", + "@types/react": "latest", + "@types/shell-quote": "latest", + "@typescript-eslint/eslint-plugin": "latest", + "@typescript-eslint/parser": "latest", + "better-typescript-lib": "latest", + "commander": "latest", + "compare-versions": "latest", + "cspell": "latest", + "debug": "latest", + "dprint": "latest", + "enhanced-resolve": "latest", + "esbuild": "latest", + "esbuild-sass-plugin": "latest", + "esbuild-svelte": "latest", + "eslint": "latest", + "eslint-import-resolver-typescript": "latest", + "eslint-plugin-import-x": "latest", + "eslint-plugin-jsdoc": "latest", + "eslint-plugin-modules-newlines": "latest", + "eslint-plugin-obsidianmd": "latest", + "eslint-plugin-perfectionist": "latest", + "eslint-plugin-tsdoc": "latest", + "globals": "latest", + "i18next": "latest", + "jiti": "latest", + "linkinator": "latest", + "localforage": "latest", + "lru-cache": "latest", + "markdownlint": "latest", + "markdownlint-cli2": "latest", + "markdownlint-rule-relative-links": "latest", + "monkey-around": "latest", + "npm-run-all2": "latest", "obsidian": "latest", "obsidian-typings": "obsidian-public-latest", - "path-browserify": "^1.0.1", - "postcss": "^8.5.6", - "postcss-modules": "^6.0.1", - "preact": "^10.28.2", - "react": "^19.2.3", - "remark": "^15.0.1", - "remark-parse": "^11.0.0", - "remark-wiki-link": "^2.0.1", - "sass": "^1.97.2", - "shell-quote": "^1.8.3", - "svelte-check": "^4.3.5", - "svelte-preprocess": "^6.0.3", - "type-fest": "^5.3.1", - "typescript": "^5.9.3", - "typescript-eslint": "^8.52.0", - "unist-util-visit": "^5.0.0" + "path-browserify": "latest", + "postcss": "latest", + "postcss-modules": "latest", + "preact": "latest", + "react": "latest", + "remark": "latest", + "remark-parse": "latest", + "remark-wiki-link": "latest", + "sass": "latest", + "shell-quote": "latest", + "svelte-check": "latest", + "svelte-preprocess": "latest", + "type-fest": "latest", + "typescript": "latest", + "typescript-eslint": "latest", + "unist-util-visit": "latest" }, "bin": { "obsidian-dev-utils": "dist/bin/cli.cjs" } }, "node_modules/obsidian-typings": { - "version": "4.92.0", - "resolved": "https://registry.npmjs.org/obsidian-typings/-/obsidian-typings-4.92.0.tgz", - "integrity": "sha512-U4c2gv5t+wk6K4j1BcfvzNXxluk2SIQgSo/oraVpg2hp/woIfuN3VOd+iwsdJ3Sky/zChxyplHHzi2nA2+QYpQ==", + "version": "4.93.0", + "resolved": "https://registry.npmjs.org/obsidian-typings/-/obsidian-typings-4.93.0.tgz", + "integrity": "sha512-6Recx5UyqQiDeGbrqmHvvlr9E3H3O/QBwVpJiX63h9kJ2PBoaH+UMP5BTxvul0BUFYDYb+3peT2xMUcZa+zHhw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -15584,9 +15614,9 @@ } }, "node_modules/svelte": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.1.tgz", - "integrity": "sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==", + "version": "5.46.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.4.tgz", + "integrity": "sha512-VJwdXrmv9L8L7ZasJeWcCjoIuMRVbhuxbss0fpVnR8yorMmjNDwcjIH08vS6wmSzzzgAG5CADQ1JuXPS2nwt9w==", "dev": true, "license": "MIT", "peer": true, @@ -15599,7 +15629,7 @@ "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", - "devalue": "^5.5.0", + "devalue": "^5.6.2", "esm-env": "^1.2.1", "esrap": "^2.2.1", "is-reference": "^3.0.3", @@ -16019,9 +16049,9 @@ } }, "node_modules/type-fest": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.0.tgz", - "integrity": "sha512-wfkA6r0tBpVfGiyO+zbf9e10QkRQSlK9F2UvyfnjoCmrvH2bjHyhPzhugSBOuq1dog3P0+FKckqe+Xf6WKVjwg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.1.tgz", + "integrity": "sha512-xygQcmneDyzsEuKZrFbRMne5HDqMs++aFzefrJTgEIKjQ3rekM+RPfFCVq2Gp1VIDqddoYeppCj4Pcb+RZW0GQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -16158,9 +16188,9 @@ "license": "MIT" }, "node_modules/ufo": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.2.tgz", - "integrity": "sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "dev": true, "license": "MIT" }, @@ -16635,9 +16665,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/Commands/ToggleDevToolsButtonCommand.ts b/src/Commands/ToggleDevToolsButtonCommand.ts new file mode 100644 index 0000000..af29a5a --- /dev/null +++ b/src/Commands/ToggleDevToolsButtonCommand.ts @@ -0,0 +1,30 @@ +import { CommandInvocationBase } from 'obsidian-dev-utils/obsidian/Commands/CommandBase'; +import { NonEditorCommandBase } from 'obsidian-dev-utils/obsidian/Commands/NonEditorCommandBase'; + +import type { DevToolsComponent } from '../Components/DevToolsComponent.ts'; +import type { Plugin } from '../Plugin.ts'; + +class ToggleDevToolsButtonCommandInvocation extends CommandInvocationBase { + public constructor(plugin: Plugin, private readonly devToolsComponent: DevToolsComponent) { + super(plugin); + } + + public override async execute(): Promise { + this.devToolsComponent.toggleDevToolsButton(); + } +} + +export class ToggleDevToolsButtonCommand extends NonEditorCommandBase { + public constructor(plugin: Plugin, private readonly devToolsComponent: DevToolsComponent) { + super({ + icon: 'keyboard-toggle', + id: 'toggle-dev-tools-button', + name: 'Toggle dev tools button', + plugin + }); + } + + protected override createCommandInvocation(): CommandInvocationBase { + return new ToggleDevToolsButtonCommandInvocation(this.plugin, this.devToolsComponent); + } +} diff --git a/src/Components/DevToolsComponent.ts b/src/Components/DevToolsComponent.ts index 344129f..fd70095 100644 --- a/src/Components/DevToolsComponent.ts +++ b/src/Components/DevToolsComponent.ts @@ -7,6 +7,8 @@ import { throwExpression } from 'obsidian-dev-utils/Error'; import type { Plugin } from '../Plugin.ts'; +import { ToggleDevToolsButtonCommand } from '../Commands/ToggleDevToolsButtonCommand.ts'; + export class DevToolsComponent extends Component { private erudaButton?: HTMLDivElement; @@ -27,11 +29,7 @@ export class DevToolsComponent extends Component { this.erudaButton = erudaDiv.shadowRoot?.find('.eruda-entry-btn') as HTMLDivElement | undefined ?? throwExpression(new Error('Eruda button not found')); this.erudaButton.hide(); - this.plugin.addCommand({ - callback: this.toggleDevToolsButton.bind(this), - id: 'toggle-dev-tools-button', - name: 'Toggle dev tools button' - }); + new ToggleDevToolsButtonCommand(this.plugin, this).register(); this.register(() => { erudaDiv.remove(); @@ -39,6 +37,10 @@ export class DevToolsComponent extends Component { this.registerDomEvent(erudaDiv, 'focusin', this.onFocusIn.bind(this)); } + public toggleDevToolsButton(): void { + this.erudaButton?.toggle(!this.erudaButton.isShown()); + } + private isEnabled(): boolean { return Platform.isMobile; } @@ -46,8 +48,4 @@ export class DevToolsComponent extends Component { private onFocusIn(evt: FocusEvent): void { evt.stopPropagation(); } - - private toggleDevToolsButton(): void { - this.erudaButton?.toggle(!this.erudaButton.isShown()); - } }