chore: update obsidian-dev-utils to 85.0.0

Bump obsidian-dev-utils from ^83.0.0 to ^85.0.0 and fix all migration
fallout:

- Remove eslint-disable directives now banned by the stricter
  eslint-comments/no-restricted-disable rule (obsidianmd 0.3.0 -> 0.4.1)
  for @typescript-eslint/no-deprecated, obsidianmd/ui/sentence-case and
  obsidianmd/no-global-this, fixing the underlying code instead.
- Drop the obsolete window.app / app.obsidianDevUtilsState seeding
  (setup.ts and the settings-tab test): under 85 the shared state lives
  on globalThis.__obsidianDevUtils and is reset per test by the wired
  obsidian-dev-utils/vitest-setup.
- Render the debug-namespaces documentation link text via appendText so
  it stays lowercase without suppressing obsidianmd/ui/sentence-case.
- Add a src/**/*-desktop-component.ts override turning off the new
  obsidianmd/no-nodejs-modules warning for the deliberate desktop-only
  node built-in imports (the rule cannot be disabled inline).
This commit is contained in:
Michael Naumov 2026-07-10 23:03:27 -06:00
parent 1065f7c853
commit 5f1fa15d08
14 changed files with 232 additions and 286 deletions

View file

@ -52,7 +52,6 @@ Advanced Debug Mode is an Obsidian plugin that enhances the debugging experience
- `patches/file-system-adapter-queue-patch-component.ts` — patches `FileSystemAdapter.queue` to log timed-out task details
- `patches/file-system-adapter-things-happening-patch-component.ts` — patches `thingsHappening` to disable the long-running-task timeout
- `styles/``main.scss` (plugin styles) and `scss.d.ts` (SCSS module type declaration)
- `test-helpers/setup.ts` — unit-test setup
- **`main` field** points to `src/main.ts` (Obsidian plugin source entry; built artifact is `dist/build/main.js`, not published to npm).
## Known Issues

433
package-lock.json generated
View file

@ -26,7 +26,7 @@
"jsdom": "^29.1.1",
"nano-staged": "^1.0.2",
"obsidian": "^1.13.1",
"obsidian-dev-utils": "^83.0.0",
"obsidian-dev-utils": "^85.0.0",
"obsidian-integration-testing": "^5.1.1",
"obsidian-test-mocks": "^3.4.0",
"type-fest": "^5.7.0",
@ -1516,9 +1516,9 @@
}
},
"node_modules/@es-joy/jsdoccomment": {
"version": "0.87.0",
"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.87.0.tgz",
"integrity": "sha512-mFXZloZMzuJZXSHUmAFu/pXTk0ZJTJBluuAkrvbzidpTN8W6F2bpRFuedSH+85kbdlRLJqc+gfN+kD3JOLJK5g==",
"version": "0.88.0",
"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.88.0.tgz",
"integrity": "sha512-GK/HL/claLLNo5KG705auIlZMwEtmn88ofSGuLsmVZwKBqMPJhW9DiznYNq07QEqz9BPtA3LBfYImtZmhVvRAw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -2516,9 +2516,9 @@
}
},
"node_modules/@obsidian-typings/obsidian-public-1.12.7": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-1.12.7/-/obsidian-public-1.12.7-6.21.0.tgz",
"integrity": "sha512-nTz7E9tZMkNaoAjC60GQ75u/CKM89j2F4fEfQq+vRZspe5WPihe79S5nhhyBmjuZTRS060MUYWxijXI2iaP71w==",
"version": "6.24.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-1.12.7/-/obsidian-public-1.12.7-6.24.0.tgz",
"integrity": "sha512-Ktlvsen9jVDhDgupZp2UYjs14eJw0ESZCu28+iZZ1lVN7KBnsGM7xnq/3bPNrVE3FO1UniFRkDwMFcyrH44M2g==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@ -2526,13 +2526,13 @@
}
},
"node_modules/@obsidian-typings/obsidian-public-latest": {
"version": "6.19.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.19.0.tgz",
"integrity": "sha512-5tdOB0Wh0Altmp8fzWzYeHNHdNewVTZnkfxDMIFb80FkkEJBEgkh5hHYbpRPkPCx+qxlbLZWvS+pgkb9y35GOg==",
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.22.0.tgz",
"integrity": "sha512-n9Bfwu3e+j8iMsTrF3EXs3W5KwnnIkmLZldohd2DCKg6NbZP9UmQeCi56aVX+7UgJRDPa3erd1XopWLANhoHyw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@obsidian-typings/obsidian-public-1.12.7": "^6.21.0"
"@obsidian-typings/obsidian-public-1.12.7": "^6.24.0"
}
},
"node_modules/@oxc-project/types": {
@ -3721,17 +3721,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.62.0.tgz",
"integrity": "sha512-o+mpz7EYiMzXoySXiKmzlabIvTVqUuK5yLrAedRPRDA0IpPFMUV1IXt6OqljIxX/kumN6EjUYp41Hqelh6p/Dw==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.63.0.tgz",
"integrity": "sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
"@typescript-eslint/scope-manager": "8.62.0",
"@typescript-eslint/type-utils": "8.62.0",
"@typescript-eslint/utils": "8.62.0",
"@typescript-eslint/visitor-keys": "8.62.0",
"@typescript-eslint/scope-manager": "8.63.0",
"@typescript-eslint/type-utils": "8.63.0",
"@typescript-eslint/utils": "8.63.0",
"@typescript-eslint/visitor-keys": "8.63.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@ -3744,15 +3744,15 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^8.62.0",
"@typescript-eslint/parser": "^8.63.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.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==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
"integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@ -3760,16 +3760,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.62.0.tgz",
"integrity": "sha512-dzHeT2gySzZtLDsuqxU9AkYgIsQoHAHtRBpOqM+Ofzx1Bwrd2RcCjQJ+6iQbsHOIR6NS33bF2W1k3blN1zLDrA==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.63.0.tgz",
"integrity": "sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/scope-manager": "8.62.0",
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/typescript-estree": "8.62.0",
"@typescript-eslint/visitor-keys": "8.62.0",
"@typescript-eslint/scope-manager": "8.63.0",
"@typescript-eslint/types": "8.63.0",
"@typescript-eslint/typescript-estree": "8.63.0",
"@typescript-eslint/visitor-keys": "8.63.0",
"debug": "^4.4.3"
},
"engines": {
@ -3785,14 +3785,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.62.0.tgz",
"integrity": "sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.63.0.tgz",
"integrity": "sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.62.0",
"@typescript-eslint/types": "^8.62.0",
"@typescript-eslint/tsconfig-utils": "^8.63.0",
"@typescript-eslint/types": "^8.63.0",
"debug": "^4.4.3"
},
"engines": {
@ -3807,14 +3807,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.62.0.tgz",
"integrity": "sha512-1lX38kNxXIRb8mEc3lbq5mdHq1Pf2+U0nFU65KfT18mtPxxl0fvjuEE92mHuXPuCtElJhOrddOpyMlM3Z0umEA==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.63.0.tgz",
"integrity": "sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/visitor-keys": "8.62.0"
"@typescript-eslint/types": "8.63.0",
"@typescript-eslint/visitor-keys": "8.63.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3825,9 +3825,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.0.tgz",
"integrity": "sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.63.0.tgz",
"integrity": "sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==",
"dev": true,
"license": "MIT",
"engines": {
@ -3842,15 +3842,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.62.0.tgz",
"integrity": "sha512-+g5O3j0w2ldzC86Pv6fvbO/xhAonbJFIdf/MKQ1d30gndlsVzUOE83ldfSE15Qrl9fhFjK6AovHs5Wpp6vx86w==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.63.0.tgz",
"integrity": "sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/typescript-estree": "8.62.0",
"@typescript-eslint/utils": "8.62.0",
"@typescript-eslint/types": "8.63.0",
"@typescript-eslint/typescript-estree": "8.63.0",
"@typescript-eslint/utils": "8.63.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@ -3867,9 +3867,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.62.0.tgz",
"integrity": "sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.63.0.tgz",
"integrity": "sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==",
"dev": true,
"license": "MIT",
"engines": {
@ -3881,16 +3881,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.0.tgz",
"integrity": "sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.63.0.tgz",
"integrity": "sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.62.0",
"@typescript-eslint/tsconfig-utils": "8.62.0",
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/visitor-keys": "8.62.0",
"@typescript-eslint/project-service": "8.63.0",
"@typescript-eslint/tsconfig-utils": "8.63.0",
"@typescript-eslint/types": "8.63.0",
"@typescript-eslint/visitor-keys": "8.63.0",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@ -3909,16 +3909,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.62.0.tgz",
"integrity": "sha512-82r66fi9zYwZ+mTq3vKgwjbZ1PVk/DJzrXFLpG6RnBbdvH8TEGVHIs9H4d2drhkOzf0syZuD/OZvvlu6GDbP4g==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.63.0.tgz",
"integrity": "sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
"@typescript-eslint/scope-manager": "8.62.0",
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/typescript-estree": "8.62.0"
"@typescript-eslint/scope-manager": "8.63.0",
"@typescript-eslint/types": "8.63.0",
"@typescript-eslint/typescript-estree": "8.63.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3933,13 +3933,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.0.tgz",
"integrity": "sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.63.0.tgz",
"integrity": "sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.62.0",
"@typescript-eslint/types": "8.63.0",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@ -7022,9 +7022,9 @@
}
},
"node_modules/enhanced-resolve": {
"version": "5.24.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz",
"integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==",
"version": "5.24.2",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz",
"integrity": "sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -7165,9 +7165,9 @@
}
},
"node_modules/es-iterator-helpers": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz",
"integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz",
"integrity": "sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -7762,13 +7762,13 @@
}
},
"node_modules/eslint-plugin-jsdoc": {
"version": "63.0.10",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.10.tgz",
"integrity": "sha512-A9UIWsCquaKnit7rasXxYf12hhGIdDRjv65/RUE3AxbT6rdKBvr3MjH37g3gP+g4ipQMXuMn9slFKjO+vqNfkg==",
"version": "63.0.13",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.13.tgz",
"integrity": "sha512-ahG1kWA8jYNwaQJtzJlnF+v4Gb9w5r+WL98gp+L8qjLN9ErpL5sevGuemN+fCYsU3Np27F36KmDc8UPi1ml/dg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@es-joy/jsdoccomment": "~0.87.0",
"@es-joy/jsdoccomment": "~0.88.0",
"@es-joy/resolve.exports": "1.2.0",
"are-docs-informative": "^0.0.2",
"comment-parser": "1.4.7",
@ -7779,7 +7779,7 @@
"html-entities": "^2.6.0",
"object-deep-merge": "^2.0.1",
"parse-imports-exports": "^0.2.4",
"semver": "^7.8.2",
"semver": "^7.8.5",
"spdx-expression-parse": "^4.0.0",
"to-valid-identifier": "^1.0.0"
},
@ -7827,9 +7827,9 @@
"license": "MIT"
},
"node_modules/eslint-plugin-json-schema-validator/node_modules/brace-expansion": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
"integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -7886,9 +7886,9 @@
"license": "MIT"
},
"node_modules/eslint-plugin-n/node_modules/brace-expansion": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
"integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -7935,12 +7935,13 @@
}
},
"node_modules/eslint-plugin-obsidianmd": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-obsidianmd/-/eslint-plugin-obsidianmd-0.3.0.tgz",
"integrity": "sha512-QvGDI6B2nxJBrsZKGTg31da2A/fEJNlnwN+fRZkaoPIu1QL3fYXUdpP7ThyMdr/0iTYQxifb9lt2X9cpydQx1w==",
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-obsidianmd/-/eslint-plugin-obsidianmd-0.4.1.tgz",
"integrity": "sha512-Nv3593kVsFOS8kir/HWaJ5CR3xcyiPWEPyXst5Pib8mxRYYuLYPpJS2ALMoZXHulHyiGwoYW8AaxvLRc4rhrRg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
"@eslint/config-helpers": "^0.4.2",
"@eslint/js": "^9.30.1",
"@eslint/json": "0.14.0",
@ -7949,7 +7950,7 @@
"@types/node": "20.12.12",
"@typescript-eslint/types": "^8.33.1",
"@typescript-eslint/utils": "^8.33.1",
"eslint": ">=9.0.0",
"eslint": ">=9.19.0",
"eslint-plugin-depend": "1.3.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-json-schema-validator": "5.1.0",
@ -7970,7 +7971,7 @@
"peerDependencies": {
"@eslint/js": "^9.30.1",
"@eslint/json": "0.14.0",
"eslint": ">=9.0.0",
"eslint": ">=9.19.0",
"obsidian": "1.8.7",
"typescript-eslint": "^8.35.1"
}
@ -8002,9 +8003,9 @@
}
},
"node_modules/eslint-plugin-obsidianmd/node_modules/@eslint/js": {
"version": "9.39.4",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz",
"integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==",
"version": "9.39.5",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz",
"integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==",
"dev": true,
"license": "MIT",
"engines": {
@ -8060,13 +8061,13 @@
"license": "MIT"
},
"node_modules/eslint-plugin-perfectionist": {
"version": "5.9.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-5.9.1.tgz",
"integrity": "sha512-30mHLNfEhzwaq5cquyWgnzrNXvT8AzwIwyeH5aj4U5ajhHSF2uiO6i09xpMDLv7koaZVTjLsvYF4m3gK/15tyA==",
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-5.10.0.tgz",
"integrity": "sha512-HiqpDrUDbGrMC6iHQbemgDyHJ0366Vyz/qRWmxQcSAkmG25cXr8BdRgx8yAhOKhEfBXn8Rnf/mTCsV4EqUJSxg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/utils": "^8.61.0",
"@typescript-eslint/utils": "^8.62.1",
"natural-orderby": "^5.0.0"
},
"engines": {
@ -8117,9 +8118,9 @@
"license": "MIT"
},
"node_modules/eslint-plugin-react/node_modules/brace-expansion": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
"integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"version": "1.1.16",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
"integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -9279,9 +9280,9 @@
}
},
"node_modules/globby/node_modules/ignore": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
"integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
"integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@ -9518,9 +9519,9 @@
}
},
"node_modules/i18next": {
"version": "26.3.3",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.3.tgz",
"integrity": "sha512-aYVegyBdXSO93CMMihvr47jI7GHSOcIahMpJX+qzUXDzW4xDJf2uenIA+45vDU+YhiVdcfsql70AC9RVdMNrHg==",
"version": "26.3.6",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.6.tgz",
"integrity": "sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==",
"dev": true,
"funding": [
{
@ -9538,7 +9539,7 @@
],
"license": "MIT",
"peerDependencies": {
"typescript": "^5 || ^6"
"typescript": "^5 || ^6 || ^7"
},
"peerDependenciesMeta": {
"typescript": {
@ -11057,9 +11058,9 @@
"license": "MIT"
},
"node_modules/linkify-it": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz",
"integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz",
"integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==",
"dev": true,
"funding": [
{
@ -11259,9 +11260,9 @@
}
},
"node_modules/lru-cache": {
"version": "11.5.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz",
"integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==",
"version": "11.5.2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
"integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
@ -11307,9 +11308,9 @@
}
},
"node_modules/markdown-it": {
"version": "14.2.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz",
"integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==",
"version": "14.3.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz",
"integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==",
"dev": true,
"funding": [
{
@ -11324,8 +11325,8 @@
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
"linkify-it": "^5.0.1",
"entities": "^4.5.0",
"linkify-it": "^5.0.2",
"mdurl": "^2.0.0",
"punycode.js": "^2.3.1",
"uc.micro": "^2.1.0"
@ -11348,9 +11349,9 @@
}
},
"node_modules/markdownlint": {
"version": "0.40.0",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz",
"integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==",
"version": "0.41.0",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.0.tgz",
"integrity": "sha512-xMUI3ChBuRuxuLF4ENvCZyS8z/+Jly1coUcZwErKLIB3sDj7ojpaTBa1e9YVPhSN4jGEIjYGQCldbTJS/hqS+A==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -11362,37 +11363,37 @@
"micromark-extension-gfm-table": "2.1.1",
"micromark-extension-math": "3.1.0",
"micromark-util-types": "2.0.2",
"string-width": "8.1.0"
"string-width": "8.2.1"
},
"engines": {
"node": ">=20"
"node": ">=22"
},
"funding": {
"url": "https://github.com/sponsors/DavidAnson"
}
},
"node_modules/markdownlint-cli2": {
"version": "0.22.1",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.22.1.tgz",
"integrity": "sha512-X14ZbytybDCXAViDmtN4DKLt9ZTrRn+oOrxTYlg3a65jS6QcYYbAkGPh/En2L/GDNbFYJ6lKaQSUNrrbN1bPrw==",
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.0.tgz",
"integrity": "sha512-1nmgQmU/ZTMRVwYCDs7i1HI3zfBISnT2NNRv+9V01oOLZbAtqL+a7tldpPhBWBVBten3FqhMCGV6EUh9McqutQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"globby": "16.2.0",
"js-yaml": "4.1.1",
"js-yaml": "5.2.0",
"jsonc-parser": "3.3.1",
"jsonpointer": "5.0.1",
"markdown-it": "14.1.1",
"markdownlint": "0.40.0",
"markdown-it": "14.2.0",
"markdownlint": "0.41.0",
"markdownlint-cli2-formatter-default": "0.0.6",
"micromatch": "4.0.8",
"smol-toml": "1.6.1"
"smol-toml": "1.7.0"
},
"bin": {
"markdownlint-cli2": "markdownlint-cli2-bin.mjs"
},
"engines": {
"node": ">=20"
"node": ">=22"
},
"funding": {
"url": "https://github.com/sponsors/DavidAnson"
@ -11412,13 +11413,13 @@
}
},
"node_modules/markdownlint-rule-relative-links": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/markdownlint-rule-relative-links/-/markdownlint-rule-relative-links-5.1.0.tgz",
"integrity": "sha512-0jZ3NlTXvAdV7XqWlVQ5guSee2W67acLrH102KOHk3t2nG5mzsoqGCBYUwNyeNBBpzc1hbj4bgi5maexB25V+A==",
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/markdownlint-rule-relative-links/-/markdownlint-rule-relative-links-5.1.1.tgz",
"integrity": "sha512-XgpNzADiFLxbDE6vbGRoauRgbE34YXAesFzTuWSxMxsdJwmcKCNnlkzjZITcb3/sP0SHx3t57Vq9/Q/WK9sU4w==",
"dev": true,
"license": "MIT",
"dependencies": {
"markdown-it": "14.1.1",
"markdown-it": "14.2.0",
"mime": "4.1.0"
},
"engines": {
@ -11426,14 +11427,14 @@
}
},
"node_modules/markdownlint/node_modules/string-width": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz",
"integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
"integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-east-asian-width": "^1.3.0",
"strip-ansi": "^7.1.0"
"get-east-asian-width": "^1.5.0",
"strip-ansi": "^7.1.2"
},
"engines": {
"node": ">=20"
@ -12742,9 +12743,9 @@
}
},
"node_modules/obsidian-dev-utils": {
"version": "83.0.0",
"resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-83.0.0.tgz",
"integrity": "sha512-Zi4c5hvaYIK41ygcknMfeheyH8zUo+oVbQolAj7YNoi+dY6DHUOa0CX18GR0er6Hyto4q5eQshpGZj6BsSQmgQ==",
"version": "85.0.0",
"resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-85.0.0.tgz",
"integrity": "sha512-3WVgYwJDMbIF+SurUyu0JQeLrL2mXFHRuWv8U3vIdl2nL9koNi3+mjtUYrrMCmD5OJAXOzDFUwhrf2BZpP+vtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -12755,14 +12756,14 @@
"@eslint/config-helpers": "^0.6.0",
"@eslint/js": "^10.0.1",
"@lezer/common": "1.2.3",
"@obsidian-typings/obsidian-public-latest": "^6.19.0",
"@obsidian-typings/obsidian-public-latest": "^6.22.0",
"@stylistic/eslint-plugin": "^5.10.0",
"@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.2",
"@types/node": "^26.0.1",
"@types/node": "^26.1.1",
"@types/parsimmon": "^1.10.9",
"@types/path-browserify": "^1.0.3",
"@types/picomatch": "^4.0.3",
@ -12770,40 +12771,40 @@
"@types/react": "^19.2.17",
"@types/semver": "^7.7.1",
"@types/shell-quote": "^1.7.5",
"@typescript-eslint/eslint-plugin": "^8.62.0",
"@typescript-eslint/parser": "^8.62.0",
"@typescript-eslint/eslint-plugin": "^8.63.0",
"@typescript-eslint/parser": "^8.63.0",
"commander": "^15.0.0",
"compare-versions": "^6.1.1",
"cspell": "^10.0.1",
"debug": "^4.4.3",
"dprint": "^0.55.1",
"enhanced-resolve": "^5.24.1",
"enhanced-resolve": "^5.24.2",
"esbuild": "^0.28.1",
"esbuild-sass-plugin": "^3.7.0",
"esbuild-svelte": "^0.9.5",
"eslint": "^10.6.0",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jsdoc": "^63.0.10",
"eslint-plugin-jsdoc": "^63.0.13",
"eslint-plugin-no-unsanitized": "^4.1.5",
"eslint-plugin-obsidianmd": "^0.3.0",
"eslint-plugin-perfectionist": "^5.9.1",
"eslint-plugin-obsidianmd": "^0.4.1",
"eslint-plugin-perfectionist": "^5.10.0",
"eslint-plugin-tsdoc": "^0.5.2",
"globals": "^17.7.0",
"i18next": "^26.3.3",
"i18next": "^26.3.6",
"jiti": "^2.7.0",
"linkinator": "^7.6.1",
"localforage": "^1.10.0",
"lru-cache": "^11.5.1",
"lru-cache": "^11.5.2",
"markdownlint": "^0.41.0",
"markdownlint-cli2": "^0.22.1",
"markdownlint-rule-relative-links": "^5.1.0",
"markdownlint-cli2": "^0.23.0",
"markdownlint-rule-relative-links": "^5.1.1",
"monkey-around": "^3.0.0",
"obsidian": "^1.13.1",
"path-browserify": "^1.0.1",
"postcss": "^8.5.16",
"postcss-modules": "^6.0.1",
"preact": "^10.29.3",
"postcss-modules": "^9.0.1",
"preact": "^10.29.7",
"react": "^19.2.7",
"remark": "^15.0.1",
"remark-parse": "^11.0.0",
@ -12811,17 +12812,27 @@
"sass": "^1.101.0",
"semver": "^7.8.5",
"shell-quote": "^1.9.0",
"svelte-check": "^4.7.1",
"svelte-check": "^4.7.2",
"svelte-preprocess": "^6.0.5",
"type-fest": "^5.7.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.62.0",
"type-fest": "^5.8.0",
"typescript": "6.0.3",
"typescript-eslint": "^8.63.0",
"unist-util-visit": "^5.1.0"
},
"engines": {
"node": ">=22.0.0"
}
},
"node_modules/obsidian-dev-utils/node_modules/@types/node": {
"version": "26.1.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
"integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~8.3.0"
}
},
"node_modules/obsidian-dev-utils/node_modules/chokidar": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
@ -12838,30 +12849,6 @@
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/obsidian-dev-utils/node_modules/markdownlint": {
"version": "0.41.0",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.0.tgz",
"integrity": "sha512-xMUI3ChBuRuxuLF4ENvCZyS8z/+Jly1coUcZwErKLIB3sDj7ojpaTBa1e9YVPhSN4jGEIjYGQCldbTJS/hqS+A==",
"dev": true,
"license": "MIT",
"dependencies": {
"micromark": "4.0.2",
"micromark-core-commonmark": "2.0.3",
"micromark-extension-directive": "4.0.0",
"micromark-extension-gfm-autolink-literal": "2.1.0",
"micromark-extension-gfm-footnote": "2.1.0",
"micromark-extension-gfm-table": "2.1.1",
"micromark-extension-math": "3.1.0",
"micromark-util-types": "2.0.2",
"string-width": "8.2.1"
},
"engines": {
"node": ">=22"
},
"funding": {
"url": "https://github.com/sponsors/DavidAnson"
}
},
"node_modules/obsidian-dev-utils/node_modules/postcss": {
"version": "8.5.16",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
@ -12926,23 +12913,6 @@
"@parcel/watcher": "^2.4.1"
}
},
"node_modules/obsidian-dev-utils/node_modules/string-width": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
"integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-east-asian-width": "^1.5.0",
"strip-ansi": "^7.1.2"
},
"engines": {
"node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/obsidian-integration-testing": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/obsidian-integration-testing/-/obsidian-integration-testing-5.1.1.tgz",
@ -13351,9 +13321,9 @@
}
},
"node_modules/postcss-modules": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.1.tgz",
"integrity": "sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==",
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-9.0.1.tgz",
"integrity": "sha512-BrSXxWSls23TzqMuplpeMRL5VHnDOLh2H9EiHNTMIdLBFumJcurDIi47TBuvkn9GsoTLAoPjv2wLzAt1wdQ2aQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -13361,11 +13331,14 @@
"icss-utils": "^5.1.0",
"lodash.camelcase": "^4.3.0",
"postcss-modules-extract-imports": "^3.1.0",
"postcss-modules-local-by-default": "^4.0.5",
"postcss-modules-scope": "^3.2.0",
"postcss-modules-local-by-default": "^4.2.0",
"postcss-modules-scope": "^3.2.1",
"postcss-modules-values": "^4.0.0",
"string-hash": "^1.1.3"
},
"engines": {
"node": ">=20.6"
},
"peerDependencies": {
"postcss": "^8.0.0"
}
@ -13434,9 +13407,9 @@
}
},
"node_modules/postcss-selector-parser": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
"integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -13455,14 +13428,22 @@
"license": "MIT"
},
"node_modules/preact": {
"version": "10.29.3",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.29.3.tgz",
"integrity": "sha512-D9NL1GAnJZhc3RndVs4gDdxEeU9TcHgywMrhhOsnpdlvFjdbx0gAsLUnH6JEhlJH5giL7Tx5biWPUSEXE/HPzw==",
"version": "10.29.7",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.29.7.tgz",
"integrity": "sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==",
"dev": true,
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
},
"peerDependencies": {
"preact-render-to-string": ">=5"
},
"peerDependenciesMeta": {
"preact-render-to-string": {
"optional": true
}
}
},
"node_modules/prelude-ls": {
@ -14790,9 +14771,9 @@
}
},
"node_modules/smol-toml": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
"integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz",
"integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@ -15248,9 +15229,9 @@
}
},
"node_modules/svelte-check": {
"version": "4.7.1",
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.7.1.tgz",
"integrity": "sha512-FGUOmAqxXdN/H9Zm8slrqO7SLtFisXRB7rfOsHNJ3MLTD2po/+Stg8XyErkpumPHbuUiYTcqrEIzxpVWKTLqtg==",
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.7.2.tgz",
"integrity": "sha512-GoS4XJdGswlq0rIT1vtFLzJY1bvHtY37McY9H9Gkm1Ggw/ICdZYn8J/Z8Yi0BEL0i3R4+jtaWVePjyppMlij/A==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -15870,16 +15851,16 @@
}
},
"node_modules/typescript-eslint": {
"version": "8.62.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.62.0.tgz",
"integrity": "sha512-8QxXi+ZACKX0kaqO4gY8kn0RSD9gFfaHDWwjqtEN48aWCBkX4MJaufWN+c3BzlrXLOxfywDL8CaoqUwcRq4j4Q==",
"version": "8.63.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.63.0.tgz",
"integrity": "sha512-xgwXyzG4sK9ALkBxbyGkTMMOS+imnW65iPhxCQMK83KhxyoDNW7l+IDqEf9vMdoUidHpOoS967RCq4eMiTexwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "8.62.0",
"@typescript-eslint/parser": "8.62.0",
"@typescript-eslint/typescript-estree": "8.62.0",
"@typescript-eslint/utils": "8.62.0"
"@typescript-eslint/eslint-plugin": "8.63.0",
"@typescript-eslint/parser": "8.63.0",
"@typescript-eslint/typescript-estree": "8.63.0",
"@typescript-eslint/utils": "8.63.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View file

@ -63,7 +63,7 @@
"jsdom": "^29.1.1",
"nano-staged": "^1.0.2",
"obsidian": "^1.13.1",
"obsidian-dev-utils": "^83.0.0",
"obsidian-dev-utils": "^85.0.0",
"obsidian-integration-testing": "^5.1.1",
"obsidian-test-mocks": "^3.4.0",
"type-fest": "^5.7.0",

View file

@ -5,15 +5,24 @@ import { defineEslintConfigs } from 'obsidian-dev-utils/script-utils/linters/esl
export const configs: Linter.Config[] = defineEslintConfigs({
customConfigs() {
return defineConfig({
rules: {
'obsidianmd/ui/sentence-case': [
'error',
{
brands: ['Error']
}
]
return defineConfig([
{
rules: {
'obsidianmd/ui/sentence-case': [
'error',
{
brands: ['Error']
}
]
}
},
{
files: ['src/**/*-desktop-component.ts'],
rules: {
// These components execute only on desktop (guarded by Platform.isDesktop) and deliberately import Node.js built-ins; the rule cannot be disabled inline.
'obsidianmd/no-nodejs-modules': 'off'
}
}
});
]);
}
});

View file

@ -42,8 +42,7 @@ export const config = defineConfig({
setupFiles: [
'obsidian-test-mocks/vitest-setup',
'obsidian-test-mocks/obsidian-typings/vitest-setup',
'obsidian-dev-utils/vitest-setup',
'./src/test-helpers/setup.ts'
'obsidian-dev-utils/vitest-setup'
]
}
},

View file

@ -78,7 +78,6 @@ describe('DevToolsComponent', () => {
it('should remove eruda container div on unload', () => {
component.load();
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
const containerDiv = document.body.lastElementChild;
expect(containerDiv).toBeTruthy();
@ -90,7 +89,6 @@ describe('DevToolsComponent', () => {
it('should stop focusin event propagation', () => {
component.load();
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
const containerDiv = document.body.lastElementChild as HTMLElement;
const focusEvent = new FocusEvent('focusin', { bubbles: true });
const stopPropagationSpy = vi.spyOn(focusEvent, 'stopPropagation');

View file

@ -10,7 +10,6 @@ export class DevToolsComponent extends ComponentEx {
}
public override onload(): void {
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
const erudaDiv = document.body.createDiv();
eruda.init({
container: erudaDiv

View file

@ -17,17 +17,15 @@ function createMockApp(overrides: StrictProxyPartial<App> = {}): App {
describe('EmulateMobileMode', () => {
it('should return true when body has emulate-mobile class', () => {
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
document.body.addClass('emulate-mobile');
const app = createMockApp();
const mode = new EmulateMobileMode(app);
expect(mode.isEmulateMobileMode()).toBe(true);
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
document.body.removeClass('emulate-mobile');
});
it('should return false when body does not have emulate-mobile class', () => {
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
document.body.removeClass('emulate-mobile');
const app = createMockApp();
const mode = new EmulateMobileMode(app);

View file

@ -4,7 +4,6 @@ export class EmulateMobileMode {
public constructor(private readonly app: App) {}
public isEmulateMobileMode(): boolean {
// eslint-disable-next-line obsidianmd/prefer-active-doc -- Need root document.
return document.body.hasClass('emulate-mobile');
}

View file

@ -1,5 +1,5 @@
/* eslint-disable n/no-unsupported-features/node-builtins -- createHook/executionAsyncId are stable in Obsidian's desktop Electron runtime where this component runs; the rule flags them as experimental only for the configured Node version range. */
// eslint-disable-next-line import/no-nodejs-modules, import-x/no-nodejs-modules -- Deliberate, executes only on desktop.
// eslint-disable-next-line import-x/no-nodejs-modules -- Deliberate, executes only on desktop.
import {
createHook,
executionAsyncId

View file

@ -1,6 +1,6 @@
import type { ConditionalKeys } from 'type-fest';
// eslint-disable-next-line import/no-nodejs-modules, import-x/no-nodejs-modules -- Deliberate, executes only on desktop.
// eslint-disable-next-line import-x/no-nodejs-modules -- Deliberate, executes only on desktop.
import process from 'node:process';
import { App } from 'obsidian';
import { filterInPlace } from 'obsidian-dev-utils/array';

View file

@ -14,9 +14,7 @@ import { castTo } from 'obsidian-dev-utils/object-utils';
import { strictProxy } from 'obsidian-dev-utils/strict-proxy';
import { ensureGenericObject } from 'obsidian-dev-utils/type-guards';
import {
afterEach,
beforeAll,
beforeEach,
describe,
expect,
it,
@ -64,10 +62,6 @@ function createPluginSettingsTab(overrides?: CreatePluginSettingsTabOverrides):
});
const app = new App();
// Initialize obsidianDevUtilsState on the app (needed by getDebugger())
ensureGenericObject(app)['obsidianDevUtilsState'] = {};
// eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-deprecated -- Test setup: window.app is deprecated but required for plugin initialization.
ensureGenericObject(window)['app'] = app;
const manifest = { author: 'test', id: 'test-plugin', minAppVersion: '0.0.0', name: 'Test Plugin', version: '1.0.0' };
// Plugin may be abstract in typings — use it as a constructor directly since the mock is concrete.
const PluginConstructor = castTo<new (app: App, manifest: Record<string, string>) => Plugin>(Plugin);
@ -105,18 +99,6 @@ function createPluginSettingsTab(overrides?: CreatePluginSettingsTabOverrides):
}
describe('PluginSettingsTab', () => {
let savedGlobalApp: App;
beforeEach(() => {
// eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-deprecated -- Test setup: window.app is deprecated but required for plugin initialization.
savedGlobalApp = ensureGenericObject(window)['app'];
});
afterEach(() => {
// eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-deprecated -- Test teardown: restoring window.app.
ensureGenericObject(window)['app'] = savedGlobalApp;
});
it('should construct without errors', () => {
expect(() => {
createPluginSettingsTab();

View file

@ -87,10 +87,8 @@ export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
f.createEl('br');
f.appendText('For more information, see the ');
f.createEl('a', {
href: 'https://github.com/mnaoumov/obsidian-dev-utils/blob/main/docs/debugging.md',
// eslint-disable-next-line obsidianmd/ui/sentence-case -- OK
text: 'documentation'
});
href: 'https://github.com/mnaoumov/obsidian-dev-utils/blob/main/docs/debugging.md'
}).appendText('documentation');
}))
.addTextArea((textArea) => {
textArea

View file

@ -1,16 +0,0 @@
import { castTo } from 'obsidian-dev-utils/object-utils';
function setup(): void {
setupObsidianDevUtilsState();
}
function setupObsidianDevUtilsState(): void {
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
const record = castTo<Record<string, unknown>>(globalThis);
const app = castTo<Record<string, unknown> | undefined>(record['app']);
if (app && !('obsidianDevUtilsState' in app)) {
app['obsidianDevUtilsState'] = {};
}
}
setup();