diff --git a/cspell.json b/cspell.json index 2030779..31016e0 100644 --- a/cspell.json +++ b/cspell.json @@ -13,6 +13,7 @@ "mnaoumov", "Naumov", "obsidianmd", + "offref", "Promisable", "tsbuildinfo" ], diff --git a/package-lock.json b/package-lock.json index f9ea537..8160392 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@obsidian-typings/obsidian-public-latest": "^6.13.0", "@total-typescript/ts-reset": "^0.6.1", "@tsconfig/strictest": "^2.0.8", - "@types/node": "^25.9.1", + "@types/node": "^25.9.2", "@vitest/coverage-v8": "^4.1.8", "better-typescript-lib": "^2.12.0", "czg": "^1.13.1", @@ -26,9 +26,9 @@ "jsdom": "^29.1.1", "nano-staged": "^1.0.2", "obsidian": "^1.13.0", - "obsidian-dev-utils": "^69.2.4", - "obsidian-integration-testing": "^4.2.2", - "obsidian-test-mocks": "^3.0.0", + "obsidian-dev-utils": "^70.0.1", + "obsidian-integration-testing": "^4.2.3", + "obsidian-test-mocks": "^3.1.0", "type-fest": "^5.7.0", "typescript": "^6.0.3", "vitest": "^4.1.8" @@ -3670,9 +3670,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", + "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", "dev": true, "license": "MIT", "dependencies": { @@ -3708,9 +3708,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.16", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.16.tgz", - "integrity": "sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w==", + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", "dev": true, "license": "MIT", "dependencies": { @@ -3792,17 +3792,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.1.tgz", - "integrity": "sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz", + "integrity": "sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/type-utils": "8.60.1", - "@typescript-eslint/utils": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/type-utils": "8.61.0", + "@typescript-eslint/utils": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -3815,7 +3815,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.60.1", + "@typescript-eslint/parser": "^8.61.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -3831,16 +3831,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.1.tgz", - "integrity": "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.0.tgz", + "integrity": "sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3" }, "engines": { @@ -3856,14 +3856,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.1.tgz", - "integrity": "sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.0.tgz", + "integrity": "sha512-DV42F7MLJO6Rax7SK1yg43tcnEfGUrurSpSxKuVX+a3RCTzBlH3fuxprrOJXKCJGAaw82xXocikJ0uQaqwXgGA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.60.1", - "@typescript-eslint/types": "^8.60.1", + "@typescript-eslint/tsconfig-utils": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", "debug": "^4.4.3" }, "engines": { @@ -3878,14 +3878,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.1.tgz", - "integrity": "sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.0.tgz", + "integrity": "sha512-IWdXFHFSb6mlC3HPc7QsLDm5zYEbUla6trDEHf32D3/dnuUyXd87plScSNXSbm0/RxMvObpI17sv/EDTGrGZkA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1" + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3896,9 +3896,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.1.tgz", - "integrity": "sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.0.tgz", + "integrity": "sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ==", "dev": true, "license": "MIT", "engines": { @@ -3913,15 +3913,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.1.tgz", - "integrity": "sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.0.tgz", + "integrity": "sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1", - "@typescript-eslint/utils": "8.60.1", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -3938,9 +3938,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.1.tgz", - "integrity": "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.0.tgz", + "integrity": "sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==", "dev": true, "license": "MIT", "engines": { @@ -3952,16 +3952,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.1.tgz", - "integrity": "sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.0.tgz", + "integrity": "sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.60.1", - "@typescript-eslint/tsconfig-utils": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", + "@typescript-eslint/project-service": "8.61.0", + "@typescript-eslint/tsconfig-utils": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -3980,16 +3980,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.1.tgz", - "integrity": "sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.0.tgz", + "integrity": "sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1" + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4004,13 +4004,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.1.tgz", - "integrity": "sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.0.tgz", + "integrity": "sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.1", + "@typescript-eslint/types": "8.61.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -7120,9 +7120,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.22.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.2.tgz", - "integrity": "sha512-0rxICaFZ7NQho/sHely2bvOPRP0Eu2B0NZ9zM54YvRvWMn7jfz3DmnOZDR9LlXDdDcqntAVc6Hfy4gr/tdH/Ag==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz", + "integrity": "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==", "dev": true, "license": "MIT", "dependencies": { @@ -7858,9 +7858,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "63.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.1.tgz", - "integrity": "sha512-2uQ2ShksMXRUI4K96/CyNs5sYmXQHaSoRjn1cxL2RcRHF+9d+njIkT03cZS7/g/eI/fPJTRfjm/MgIlOezD+KQ==", + "version": "63.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.2.tgz", + "integrity": "sha512-0TchoK1uS4VxHSo3P4CyWQ31Lm+6zsT+xkHMC5KbFKwgOf8YrXPf1Bl8EP7kpgw1wfe/Ui5jz5mSX7ou8WAVuw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7875,7 +7875,7 @@ "html-entities": "^2.6.0", "object-deep-merge": "^2.0.1", "parse-imports-exports": "^0.2.4", - "semver": "^7.8.1", + "semver": "^7.8.2", "spdx-expression-parse": "^4.0.0", "to-valid-identifier": "^1.0.0" }, @@ -12777,9 +12777,9 @@ } }, "node_modules/obsidian-dev-utils": { - "version": "69.2.4", - "resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-69.2.4.tgz", - "integrity": "sha512-12EZTE2H9yTfu+ZMeSckLGhJBjMGRWkdEC07OlKxuioL+CIz5os8Z5zvoEPriLGBha6i9BNDPZP2BSv1ktSeQw==", + "version": "70.0.1", + "resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-70.0.1.tgz", + "integrity": "sha512-4sZT6KDBkQHZ4R4jtMwkhUxKWdlFIPjzIOh9oPr93r3m48m10iQZiL1cz2aSJpDFOK49d+nFVVPg9id6ESS2JQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12797,29 +12797,29 @@ "@types/doctrine": "^0.0.9", "@types/eslint": "^9.6.1", "@types/luxon": "^3.7.1", - "@types/node": "^25.9.1", + "@types/node": "^25.9.2", "@types/parsimmon": "^1.10.9", "@types/path-browserify": "^1.0.3", "@types/picomatch": "^4.0.3", "@types/pug": "^2.0.10", - "@types/react": "^19.2.16", + "@types/react": "^19.2.17", "@types/semver": "^7.7.1", "@types/shell-quote": "^1.7.5", - "@typescript-eslint/eslint-plugin": "^8.60.1", - "@typescript-eslint/parser": "^8.60.1", + "@typescript-eslint/eslint-plugin": "^8.61.0", + "@typescript-eslint/parser": "^8.61.0", "commander": "^15.0.0", "compare-versions": "^6.1.1", "cspell": "^10.0.1", "debug": "^4.4.3", "dprint": "^0.54.0", - "enhanced-resolve": "^5.22.2", + "enhanced-resolve": "^5.23.0", "esbuild": "^0.28.0", "esbuild-sass-plugin": "^3.7.0", "esbuild-svelte": "^0.9.5", "eslint": "^10.4.1", "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import-x": "^4.16.2", - "eslint-plugin-jsdoc": "^63.0.1", + "eslint-plugin-jsdoc": "^63.0.2", "eslint-plugin-no-unsanitized": "^4.1.5", "eslint-plugin-obsidianmd": "^0.3.0", "eslint-plugin-perfectionist": "^5.9.0", @@ -12844,13 +12844,13 @@ "remark-parse": "^11.0.0", "remark-wiki-link": "^2.0.1", "sass": "^1.100.0", - "semver": "^7.8.2", + "semver": "^7.8.3", "shell-quote": "^1.8.4", "svelte-check": "^4.6.0", "svelte-preprocess": "^6.0.5", "type-fest": "^5.7.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.60.1", + "typescript-eslint": "^8.61.0", "unist-util-visit": "^5.1.0" }, "engines": { @@ -12909,9 +12909,9 @@ } }, "node_modules/obsidian-integration-testing": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/obsidian-integration-testing/-/obsidian-integration-testing-4.2.2.tgz", - "integrity": "sha512-jl3gUrREqQOYQWw/9xU1CDIgLnLFPKID71KWjTcuTI6kHZIcxpx3GeXJGD/XokIR4fbEfwSYvf2NaZmVX3oUZQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/obsidian-integration-testing/-/obsidian-integration-testing-4.2.3.tgz", + "integrity": "sha512-TsKjz+YfRjh5QH8G8ymPnt8dlH/UlvAq0uW69U6VvUIf9jZaLjHY2aVsh5gi33I5BJMLDxkC+hKB6cYQXeWNag==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -12925,9 +12925,9 @@ } }, "node_modules/obsidian-test-mocks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/obsidian-test-mocks/-/obsidian-test-mocks-3.0.0.tgz", - "integrity": "sha512-uvupfNimjtze8m7gkm9XFRS2OMVlurRILxlhcl3EcsYz3nQmnpYjFb91A51Q7cJ9O/ybvY0yI3hXhG3+TS09kA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/obsidian-test-mocks/-/obsidian-test-mocks-3.1.0.tgz", + "integrity": "sha512-svWbUYnm/IPc3hECd/Qe9S+86JWJZnMEKnquN+p744r8DWIxjI2DcuYCkFwSgJzaaQn4s55jEm2jxXEc91NWGw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -14516,9 +14516,9 @@ } }, "node_modules/semver": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz", - "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.3.tgz", + "integrity": "sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==", "dev": true, "license": "ISC", "bin": { @@ -15837,16 +15837,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.60.1.tgz", - "integrity": "sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.0.tgz", + "integrity": "sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.60.1", - "@typescript-eslint/parser": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1", - "@typescript-eslint/utils": "8.60.1" + "@typescript-eslint/eslint-plugin": "8.61.0", + "@typescript-eslint/parser": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index af29bf2..ff3a098 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@obsidian-typings/obsidian-public-latest": "^6.13.0", "@total-typescript/ts-reset": "^0.6.1", "@tsconfig/strictest": "^2.0.8", - "@types/node": "^25.9.1", + "@types/node": "^25.9.2", "@vitest/coverage-v8": "^4.1.8", "better-typescript-lib": "^2.12.0", "czg": "^1.13.1", @@ -58,9 +58,9 @@ "jsdom": "^29.1.1", "nano-staged": "^1.0.2", "obsidian": "^1.13.0", - "obsidian-dev-utils": "^69.2.4", - "obsidian-integration-testing": "^4.2.2", - "obsidian-test-mocks": "^3.0.0", + "obsidian-dev-utils": "^70.0.1", + "obsidian-integration-testing": "^4.2.3", + "obsidian-test-mocks": "^3.1.0", "type-fest": "^5.7.0", "typescript": "^6.0.3", "vitest": "^4.1.8" diff --git a/src/long-stack-traces/long-stack-traces-desktop-component.test.ts b/src/long-stack-traces/long-stack-traces-desktop-component.test.ts index 4f0ad8e..bf3447d 100644 --- a/src/long-stack-traces/long-stack-traces-desktop-component.test.ts +++ b/src/long-stack-traces/long-stack-traces-desktop-component.test.ts @@ -43,7 +43,12 @@ function createDataHandler(): DataHandler { } function createPluginEventSource(): PluginEventSource { - return strictProxy({}); + return strictProxy({ + off: vi.fn(), + offref: vi.fn(), + on: vi.fn(() => castTo>({})), + once: vi.fn(() => castTo>({})) + }); } function createSettingsComponent(overrides: Partial = {}): PluginSettingsComponent { @@ -504,11 +509,15 @@ describe('LongStackTracesComponentDesktop', () => { component.unload(); }); - it('should save settings when stackTraceLimit is changed via setter', () => { + it('should save settings when stackTraceLimit is changed via setter', async () => { const { component, pluginSettingsComponent } = createComponent(); + // Load the settings component so the real editAndSave runs. + // 70.0.0's editAndSave calls ensureLoaded() first and throws on an unloaded component. + // The spy calls through to the real implementation, which invokes the editor callback. + await pluginSettingsComponent.loadWithPromises(); component.load(); - const editAndSaveSpy = vi.spyOn(pluginSettingsComponent, 'editAndSave').mockResolvedValue(undefined); + const editAndSaveSpy = vi.spyOn(pluginSettingsComponent, 'editAndSave'); const NEW_LIMIT = 42; window.Error.stackTraceLimit = NEW_LIMIT;