chore: new template

This commit is contained in:
Michael Naumov 2026-06-16 22:12:40 -06:00
parent d767dd2a7b
commit 116985280a
5 changed files with 140 additions and 106 deletions

206
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": "^70.4.0",
"obsidian-dev-utils": "^71.0.1",
"obsidian-integration-testing": "^4.2.4",
"obsidian-test-mocks": "^3.1.1",
"type-fest": "^5.7.0",
@ -3792,17 +3792,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz",
"integrity": "sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz",
"integrity": "sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
"@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",
"@typescript-eslint/scope-manager": "8.61.1",
"@typescript-eslint/type-utils": "8.61.1",
"@typescript-eslint/utils": "8.61.1",
"@typescript-eslint/visitor-keys": "8.61.1",
"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.61.0",
"@typescript-eslint/parser": "^8.61.1",
"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.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.0.tgz",
"integrity": "sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz",
"integrity": "sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@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",
"@typescript-eslint/scope-manager": "8.61.1",
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/typescript-estree": "8.61.1",
"@typescript-eslint/visitor-keys": "8.61.1",
"debug": "^4.4.3"
},
"engines": {
@ -3856,14 +3856,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.0.tgz",
"integrity": "sha512-DV42F7MLJO6Rax7SK1yg43tcnEfGUrurSpSxKuVX+a3RCTzBlH3fuxprrOJXKCJGAaw82xXocikJ0uQaqwXgGA==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz",
"integrity": "sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.61.0",
"@typescript-eslint/types": "^8.61.0",
"@typescript-eslint/tsconfig-utils": "^8.61.1",
"@typescript-eslint/types": "^8.61.1",
"debug": "^4.4.3"
},
"engines": {
@ -3878,14 +3878,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"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==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz",
"integrity": "sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.61.0",
"@typescript-eslint/visitor-keys": "8.61.0"
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/visitor-keys": "8.61.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3896,9 +3896,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.0.tgz",
"integrity": "sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz",
"integrity": "sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==",
"dev": true,
"license": "MIT",
"engines": {
@ -3913,15 +3913,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.0.tgz",
"integrity": "sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz",
"integrity": "sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.61.0",
"@typescript-eslint/typescript-estree": "8.61.0",
"@typescript-eslint/utils": "8.61.0",
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/typescript-estree": "8.61.1",
"@typescript-eslint/utils": "8.61.1",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@ -3938,9 +3938,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.0.tgz",
"integrity": "sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz",
"integrity": "sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3952,16 +3952,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.0.tgz",
"integrity": "sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz",
"integrity": "sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@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",
"@typescript-eslint/project-service": "8.61.1",
"@typescript-eslint/tsconfig-utils": "8.61.1",
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/visitor-keys": "8.61.1",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@ -3980,16 +3980,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.0.tgz",
"integrity": "sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz",
"integrity": "sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
"@typescript-eslint/scope-manager": "8.61.0",
"@typescript-eslint/types": "8.61.0",
"@typescript-eslint/typescript-estree": "8.61.0"
"@typescript-eslint/scope-manager": "8.61.1",
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/typescript-estree": "8.61.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -4004,13 +4004,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.61.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.0.tgz",
"integrity": "sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz",
"integrity": "sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.61.0",
"@typescript-eslint/types": "8.61.1",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@ -7861,9 +7861,9 @@
}
},
"node_modules/eslint-plugin-jsdoc": {
"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==",
"version": "63.0.5",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.5.tgz",
"integrity": "sha512-AzI9bgKhV9li049/mIblX0c41DeWMMfH9qNsRasc+fAxwURRKChIp03Pk57M7UTf+Y6hifTJ89kQyCOoOLtEDw==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@ -8159,13 +8159,13 @@
"license": "MIT"
},
"node_modules/eslint-plugin-perfectionist": {
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-5.9.0.tgz",
"integrity": "sha512-8TWzg02zmnBdZwCkWLi8jhzqXI+fE7Z/RwV8SL6xD45tJ8Bp3wGuYL2XtQgfe/Wd0eBqOUX+s6ey73IyszvKTA==",
"version": "5.9.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-5.9.1.tgz",
"integrity": "sha512-30mHLNfEhzwaq5cquyWgnzrNXvT8AzwIwyeH5aj4U5ajhHSF2uiO6i09xpMDLv7koaZVTjLsvYF4m3gK/15tyA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/utils": "^8.58.2",
"@typescript-eslint/utils": "^8.61.0",
"natural-orderby": "^5.0.0"
},
"engines": {
@ -10411,10 +10411,20 @@
"license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
"integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/puzrin"
},
{
"type": "github",
"url": "https://github.com/sponsors/nodeca"
}
],
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@ -11102,10 +11112,20 @@
"license": "MIT"
},
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz",
"integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/puzrin"
},
{
"type": "github",
"url": "https://github.com/sponsors/markdown-it"
}
],
"license": "MIT",
"dependencies": {
"uc.micro": "^2.0.0"
@ -11355,15 +11375,25 @@
}
},
"node_modules/markdown-it": {
"version": "14.1.1",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
"integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
"version": "14.2.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz",
"integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/puzrin"
},
{
"type": "github",
"url": "https://github.com/sponsors/markdown-it"
}
],
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
"linkify-it": "^5.0.0",
"linkify-it": "^5.0.1",
"mdurl": "^2.0.0",
"punycode.js": "^2.3.1",
"uc.micro": "^2.1.0"
@ -12780,9 +12810,9 @@
}
},
"node_modules/obsidian-dev-utils": {
"version": "70.4.0",
"resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-70.4.0.tgz",
"integrity": "sha512-QRz6iN94Bkv3GSUKaRsmq63VWKOOlQa513BEAqib7p0D64agjYB3F1OhCMNCx0FBfctQq7NG2V9bw6hkjg5zcw==",
"version": "71.0.1",
"resolved": "https://registry.npmjs.org/obsidian-dev-utils/-/obsidian-dev-utils-71.0.1.tgz",
"integrity": "sha512-LlUJbyezLFGfHlMXOZ4Vu+rDxKdi6sZS9UrNTiXYT2fpQvKLpx50tBStnraQpiDTh3WkdNqTeqCDiLXP8hLjnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -12808,8 +12838,8 @@
"@types/react": "^19.2.17",
"@types/semver": "^7.7.1",
"@types/shell-quote": "^1.7.5",
"@typescript-eslint/eslint-plugin": "^8.61.0",
"@typescript-eslint/parser": "^8.61.0",
"@typescript-eslint/eslint-plugin": "^8.61.1",
"@typescript-eslint/parser": "^8.61.1",
"commander": "^15.0.0",
"compare-versions": "^6.1.1",
"cspell": "^10.0.1",
@ -12822,17 +12852,19 @@
"eslint": "^10.5.0",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-import-x": "^4.16.2",
"eslint-plugin-jsdoc": "^63.0.2",
"eslint-plugin-jsdoc": "^63.0.5",
"eslint-plugin-no-unsanitized": "^4.1.5",
"eslint-plugin-obsidianmd": "^0.3.0",
"eslint-plugin-perfectionist": "^5.9.0",
"eslint-plugin-perfectionist": "^5.9.1",
"eslint-plugin-tsdoc": "^0.5.2",
"globals": "^17.6.0",
"i18next": "^26.3.1",
"jiti": "^2.7.0",
"js-yaml": "^4.2.0",
"linkinator": "^7.6.1",
"localforage": "^1.10.0",
"lru-cache": "^11.5.1",
"markdown-it": "^14.2.0",
"markdownlint": "^0.41.0",
"markdownlint-cli2": "^0.22.1",
"markdownlint-rule-relative-links": "^5.1.0",
@ -12853,7 +12885,7 @@
"svelte-preprocess": "^6.0.5",
"type-fest": "^5.7.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.61.0",
"typescript-eslint": "^8.61.1",
"unist-util-visit": "^5.1.0"
},
"engines": {
@ -15879,16 +15911,16 @@
}
},
"node_modules/typescript-eslint": {
"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==",
"version": "8.61.1",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.1.tgz",
"integrity": "sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@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"
"@typescript-eslint/eslint-plugin": "8.61.1",
"@typescript-eslint/parser": "8.61.1",
"@typescript-eslint/typescript-estree": "8.61.1",
"@typescript-eslint/utils": "8.61.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View file

@ -37,6 +37,8 @@
"overrides": {
"@vitest/coverage-v8": "$@vitest/coverage-v8",
"eslint": "$eslint",
"js-yaml": "^4.2.0",
"markdown-it": "^14.2.0",
"type-fest": "$type-fest",
"typescript": "$typescript"
},
@ -58,7 +60,7 @@
"jsdom": "^29.1.1",
"nano-staged": "^1.0.2",
"obsidian": "^1.13.1",
"obsidian-dev-utils": "^70.4.0",
"obsidian-dev-utils": "^71.0.1",
"obsidian-integration-testing": "^4.2.4",
"obsidian-test-mocks": "^3.1.1",
"type-fest": "^5.7.0",

View file

@ -125,13 +125,13 @@ describe('PluginSettingsTab', () => {
it('should render settings without errors', () => {
const { tab } = createPluginSettingsTab();
expect(() => {
tab.display();
tab.displayLegacy();
}).not.toThrow();
});
it('should create setting elements in containerEl', () => {
const { tab } = createPluginSettingsTab();
tab.display();
tab.displayLegacy();
// Settings mock creates divs inside containerEl
expect(tab.containerEl.children.length).toBeGreaterThan(0);
@ -141,8 +141,8 @@ describe('PluginSettingsTab', () => {
const { tab } = createPluginSettingsTab();
expect(() => {
tab.display();
tab.display();
tab.displayLegacy();
tab.displayLegacy();
}).not.toThrow();
});
@ -160,7 +160,7 @@ describe('PluginSettingsTab', () => {
);
const { pluginSettingsComponent, tab } = createPluginSettingsTab();
tab.display();
tab.displayLegacy();
addToggleSpy.mockRestore();
@ -168,7 +168,7 @@ describe('PluginSettingsTab', () => {
vi.spyOn(pluginSettingsComponent, 'setProperty').mockResolvedValue('');
// Spy on display to detect re-display, replace with noop to prevent cascade
const displaySpy = vi.spyOn(tab, 'display').mockImplementation(() => {
const displaySpy = vi.spyOn(tab, 'displayLegacy').mockImplementation(() => {
// No-op to prevent cascading re-display
});
@ -200,13 +200,13 @@ describe('PluginSettingsTab', () => {
);
const { pluginSettingsComponent, tab } = createPluginSettingsTab();
tab.display();
tab.displayLegacy();
addToggleSpy.mockRestore();
vi.spyOn(pluginSettingsComponent, 'setProperty').mockResolvedValue('');
const displaySpy = vi.spyOn(tab, 'display').mockImplementation(() => {
const displaySpy = vi.spyOn(tab, 'displayLegacy').mockImplementation(() => {
// No-op to prevent cascading re-display
});
@ -244,7 +244,7 @@ describe('PluginSettingsTab', () => {
const { tab } = createPluginSettingsTab({
debugModeOverrides: debugModeMock
});
tab.display();
tab.displayLegacy();
addToggleSpy.mockRestore();
// Toggle index 0 is "Obsidian debug mode"
@ -276,7 +276,7 @@ describe('PluginSettingsTab', () => {
const { tab } = createPluginSettingsTab({
emulateMobileModeOverrides: emulateMobileMock
});
tab.display();
tab.displayLegacy();
addToggleSpy.mockRestore();
// Toggle index 1 is "Desktop: Emulate mobile mode"
@ -313,7 +313,7 @@ describe('PluginSettingsTab', () => {
const { tab } = createPluginSettingsTab({
debugControllerOverrides: debugControllerMock
});
tab.display();
tab.displayLegacy();
addTextAreaSpy.mockRestore();
const textArea = capturedTextAreas[0];
@ -348,12 +348,12 @@ describe('PluginSettingsTab', () => {
const { tab } = createPluginSettingsTab({
debugControllerOverrides: debugControllerMock
});
tab.display();
tab.displayLegacy();
addToggleSpy.mockRestore();
// Mock display to prevent infinite recursion
vi.spyOn(tab, 'display').mockImplementation(() => {
vi.spyOn(tab, 'displayLegacy').mockImplementation(() => {
// No-op
});

View file

@ -32,7 +32,7 @@ export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
this.emulateMobileMode = params.emulateMobileMode;
}
protected override displayLegacy(): void {
public override displayLegacy(): void {
super.displayLegacy();
new Setting(this.containerEl)
@ -109,7 +109,7 @@ export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
.addToggle((toggle) => {
this.bind(toggle, 'shouldIncludeLongStackTraces', {
onChanged: () => {
this.display();
this.displayLegacy();
}
});
});
@ -172,7 +172,7 @@ export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
this
.bind(toggle, 'shouldTimeoutLongRunningTasks', {
onChanged: () => {
this.display();
this.displayLegacy();
}
})
.setDisabled(Platform.isMobile);
@ -228,7 +228,7 @@ export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
} else {
this.debugController.enable(NAMESPACE);
}
this.display();
this.displayLegacy();
});
});
}

View file

@ -73,7 +73,7 @@ export class Plugin extends PluginBase {
this.addChild(
new LongStackTracesComponent({
app,
app: this.app,
pluginId: this.manifest.id,
pluginSettingsComponent
})