@mnaoumov/create-obsidian-plugin 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +341 -2
  3. package/dist/main.js +4184 -0
  4. package/package.json +83 -4
  5. package/src/main.ts +650 -0
  6. package/templates/default/.depcheckrc.json.ejs +19 -0
  7. package/templates/default/.editorconfig.ejs +11 -0
  8. package/templates/default/.env.ejs +1 -0
  9. package/templates/default/.env@vault_has-vault-false.ejs +2 -0
  10. package/templates/default/.env@vault_has-vault-true.ejs +1 -0
  11. package/templates/default/.gitattributes.ejs +7 -0
  12. package/templates/default/.github/FUNDING.yml.ejs +3 -0
  13. package/templates/default/.github/ISSUE_TEMPLATE/bug_report.yml.ejs +71 -0
  14. package/templates/default/.github/ISSUE_TEMPLATE/config.yml.ejs +1 -0
  15. package/templates/default/.github/ISSUE_TEMPLATE/feature_request.yml.ejs +61 -0
  16. package/templates/default/.github/workflows/attest-release-assets.yml.ejs +24 -0
  17. package/templates/default/.github/workflows/ci.yml.ejs +20 -0
  18. package/templates/default/.github/workflows/ci.yml@steps_biome-linter.ejs +1 -0
  19. package/templates/default/.github/workflows/ci.yml@steps_cspell.ejs +1 -0
  20. package/templates/default/.github/workflows/ci.yml@steps_dprint.ejs +1 -0
  21. package/templates/default/.github/workflows/ci.yml@steps_eslint.ejs +1 -0
  22. package/templates/default/.github/workflows/ci.yml@steps_jest.ejs +1 -0
  23. package/templates/default/.github/workflows/ci.yml@steps_markdownlint.ejs +1 -0
  24. package/templates/default/.github/workflows/ci.yml@steps_prettier.ejs +1 -0
  25. package/templates/default/.github/workflows/ci.yml@steps_vitest.ejs +1 -0
  26. package/templates/default/.github/workflows/release.yml.ejs +27 -0
  27. package/templates/default/.github/workflows/update-license-year.yml.ejs +38 -0
  28. package/templates/default/.gitignore_common.ejs +27 -0
  29. package/templates/default/.gitignore_scss.ejs +1 -0
  30. package/templates/default/.gitignore_tailwind.ejs +3 -0
  31. package/templates/default/.husky/commit-msg.ejs +1 -0
  32. package/templates/default/.husky/pre-commit.ejs +1 -0
  33. package/templates/default/.markdownlint-cli2.mjs.ejs +4 -0
  34. package/templates/default/.nano-staged.mjs.ejs +5 -0
  35. package/templates/default/.npmrc.ejs +1 -0
  36. package/templates/default/.parcelrc.ejs +9 -0
  37. package/templates/default/.parcelrc@transformers_svelte.ejs +1 -0
  38. package/templates/default/.prettierignore.ejs +10 -0
  39. package/templates/default/.typesafe-i18n.json.ejs +5 -0
  40. package/templates/default/CONTRIBUTING.md.ejs +49 -0
  41. package/templates/default/CONTRIBUTING.md@demo-vault_dev-utils.ejs +15 -0
  42. package/templates/default/CONTRIBUTING.md@scripts_biome-formatter.ejs +1 -0
  43. package/templates/default/CONTRIBUTING.md@scripts_biome-linter.ejs +1 -0
  44. package/templates/default/CONTRIBUTING.md@scripts_conventional-commits.ejs +1 -0
  45. package/templates/default/CONTRIBUTING.md@scripts_cspell.ejs +1 -0
  46. package/templates/default/CONTRIBUTING.md@scripts_dev-utils.ejs +1 -0
  47. package/templates/default/CONTRIBUTING.md@scripts_dprint.ejs +1 -0
  48. package/templates/default/CONTRIBUTING.md@scripts_eslint.ejs +1 -0
  49. package/templates/default/CONTRIBUTING.md@scripts_jest.ejs +1 -0
  50. package/templates/default/CONTRIBUTING.md@scripts_markdownlint.ejs +1 -0
  51. package/templates/default/CONTRIBUTING.md@scripts_prettier.ejs +1 -0
  52. package/templates/default/CONTRIBUTING.md@scripts_vitest.ejs +1 -0
  53. package/templates/default/LICENSE.ejs +21 -0
  54. package/templates/default/README.md.ejs +28 -0
  55. package/templates/default/README.md@demo-vault_dev-utils.ejs +12 -0
  56. package/templates/default/README.md@preset_dev-utils.ejs +12 -0
  57. package/templates/default/README.md@support_has-funding.ejs +8 -0
  58. package/templates/default/babel.config.json.ejs +8 -0
  59. package/templates/default/babel.config.mjs.ejs +5 -0
  60. package/templates/default/biome.jsonc.ejs +47 -0
  61. package/templates/default/commitlint.config.ts.ejs +1 -0
  62. package/templates/default/cspell.json.ejs +67 -0
  63. package/templates/default/demo-vault/.gitignore.ejs +15 -0
  64. package/templates/default/demo-vault/.obsidian/app.json.ejs +4 -0
  65. package/templates/default/demo-vault/.obsidian/community-plugins.json.ejs +4 -0
  66. package/templates/default/demo-vault/00 Start.md.ejs +32 -0
  67. package/templates/default/demo-vault/00 Start.md@features_wasm.ejs +1 -0
  68. package/templates/default/demo-vault/01 Sample commands.md.ejs +38 -0
  69. package/templates/default/demo-vault/01 Sample commands.md@commands_wasm.ejs +4 -0
  70. package/templates/default/demo-vault/02 Settings.md.ejs +40 -0
  71. package/templates/default/demo-vault/03 WebAssembly.md.ejs +34 -0
  72. package/templates/default/demo-vault/Materials/01 Sample commands/Scratch note.md.ejs +5 -0
  73. package/templates/default/demo-vault/README.md.ejs +10 -0
  74. package/templates/default/demo-vault/_assets/CodeScriptToolkit/demoSetup.ts.ejs +88 -0
  75. package/templates/default/demo-vault/_assets/CodeScriptToolkit/demoSetup.ts@commands_wasm.ejs +10 -0
  76. package/templates/default/demo-vault/_assets/CodeScriptToolkit/startup.ts.ejs +17 -0
  77. package/templates/default/dprint.json_dev-utils.ejs +10 -0
  78. package/templates/default/dprint.json_standalone.ejs +26 -0
  79. package/templates/default/e2e/sample.spec.ts_obsidian-test.ejs +16 -0
  80. package/templates/default/e2e/sample.spec.ts_obsidian-test@lint-no-void-disable_dev-utils.ejs +3 -0
  81. package/templates/default/e2e/sample.spec.ts_obsidian-test@lint-no-void-enable_dev-utils.ejs +1 -0
  82. package/templates/default/e2e/sample.spec.ts_obsidian-test@unofficial_with-unofficial.ejs +13 -0
  83. package/templates/default/e2e/sample.spec.ts_wdio-obsidian.ejs +7 -0
  84. package/templates/default/e2e/sample.spec.ts_wdio-obsidian@unofficial_with-unofficial.ejs +15 -0
  85. package/templates/default/eslint.config.mts_dev-utils.ejs +1 -0
  86. package/templates/default/eslint.config.mts_standalone.ejs +119 -0
  87. package/templates/default/eslint.config.mts_standalone@extra-files_has-e2e.ejs +2 -0
  88. package/templates/default/jest.config.ts.ejs +57 -0
  89. package/templates/default/jest.config.ts@lint-root-dir_dev-utils.ejs +1 -0
  90. package/templates/default/jest.config.ts@ts-jest-tsconfig_solid.ejs +8 -0
  91. package/templates/default/linkinator.config.json.ejs +11 -0
  92. package/templates/default/manifest.json.ejs +11 -0
  93. package/templates/default/manifest.json@funding_has-funding.ejs +1 -0
  94. package/templates/default/manifest.json@platform_desktop-and-mobile.ejs +1 -0
  95. package/templates/default/manifest.json@platform_desktop-only.ejs +1 -0
  96. package/templates/default/package.json.ejs +32 -0
  97. package/templates/default/package.json@targets_parcel.ejs +36 -0
  98. package/templates/default/parcel-namer-obsidian.cjs.ejs +26 -0
  99. package/templates/default/parcel-resolver-obsidian.cjs.ejs +37 -0
  100. package/templates/default/parcel-transformer-inline-imports.cjs.ejs +39 -0
  101. package/templates/default/parcel-transformer-svelte.cjs.ejs +67 -0
  102. package/templates/default/pinned-versions.json.ejs +1 -0
  103. package/templates/default/pnpm-workspace.yaml.ejs +19 -0
  104. package/templates/default/postcss.config.cjs.ejs +12 -0
  105. package/templates/default/prettier.config.mjs.ejs +5 -0
  106. package/templates/default/rollup.config.mjs.ejs +7 -0
  107. package/templates/default/scripts/babel.config.ts_rollup.ejs +16 -0
  108. package/templates/default/scripts/babel.config.ts_rollup@babel-plugin_preact.ejs +1 -0
  109. package/templates/default/scripts/babel.config.ts_rollup@babel-preset_react.ejs +1 -0
  110. package/templates/default/scripts/babel.config.ts_rollup@babel-preset_solid.ejs +1 -0
  111. package/templates/default/scripts/build-clean.ts.ejs +4 -0
  112. package/templates/default/scripts/build-compile.ts.ejs +4 -0
  113. package/templates/default/scripts/build-styles.ts.ejs +12 -0
  114. package/templates/default/scripts/build.ts.ejs +6 -0
  115. package/templates/default/scripts/build.ts@bundler_cli-bundler.ejs +63 -0
  116. package/templates/default/scripts/build.ts@bundler_cli-bundler@compile_svelte.ejs +4 -0
  117. package/templates/default/scripts/build.ts@bundler_cli-bundler@fs-import_hot-reload-plugin.ejs +2 -0
  118. package/templates/default/scripts/build.ts@bundler_cli-bundler@hot-reload_hot-reload-plugin.ejs +3 -0
  119. package/templates/default/scripts/build.ts@bundler_cli-bundler@import_tailwind.ejs +2 -0
  120. package/templates/default/scripts/build.ts@bundler_cli-bundler@lint-build-styles_dev-utils.ejs +1 -0
  121. package/templates/default/scripts/build.ts@bundler_cli-bundler@reload_obsidian-cli.ejs +5 -0
  122. package/templates/default/scripts/build.ts@bundler_cli-bundler@run_parcel.ejs +1 -0
  123. package/templates/default/scripts/build.ts@bundler_cli-bundler@run_rollup.ejs +1 -0
  124. package/templates/default/scripts/build.ts@bundler_cli-bundler@run_vite.ejs +1 -0
  125. package/templates/default/scripts/build.ts@bundler_cli-bundler@run_webpack.ejs +1 -0
  126. package/templates/default/scripts/build.ts@bundler_esbuild.ejs +3 -0
  127. package/templates/default/scripts/build.ts@bundler_esbuild@compile_svelte.ejs +4 -0
  128. package/templates/default/scripts/build.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +2 -0
  129. package/templates/default/scripts/build.ts@bundler_esbuild@fs-import_hot-reload-plugin.ejs +2 -0
  130. package/templates/default/scripts/build.ts@bundler_esbuild@hot-reload_hot-reload-plugin.ejs +4 -0
  131. package/templates/default/scripts/build.ts@bundler_esbuild@import_postcss.ejs +1 -0
  132. package/templates/default/scripts/build.ts@bundler_esbuild@import_scss.ejs +1 -0
  133. package/templates/default/scripts/build.ts@bundler_esbuild@import_solid.ejs +1 -0
  134. package/templates/default/scripts/build.ts@bundler_esbuild@import_svelte.ejs +10 -0
  135. package/templates/default/scripts/build.ts@bundler_esbuild@import_tailwind.ejs +1 -0
  136. package/templates/default/scripts/build.ts@bundler_esbuild@import_vue.ejs +1 -0
  137. package/templates/default/scripts/build.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +1 -0
  138. package/templates/default/scripts/build.ts@bundler_esbuild@options_preact.ejs +2 -0
  139. package/templates/default/scripts/build.ts@bundler_esbuild@options_react.ejs +1 -0
  140. package/templates/default/scripts/build.ts@bundler_esbuild@options_wasm.ejs +5 -0
  141. package/templates/default/scripts/build.ts@bundler_esbuild@plugin_postcss.ejs +1 -0
  142. package/templates/default/scripts/build.ts@bundler_esbuild@plugin_scss.ejs +1 -0
  143. package/templates/default/scripts/build.ts@bundler_esbuild@plugin_solid.ejs +1 -0
  144. package/templates/default/scripts/build.ts@bundler_esbuild@plugin_svelte.ejs +5 -0
  145. package/templates/default/scripts/build.ts@bundler_esbuild@plugin_vue.ejs +1 -0
  146. package/templates/default/scripts/build.ts@bundler_esbuild@preset_dev-utils.ejs +7 -0
  147. package/templates/default/scripts/build.ts@bundler_esbuild@preset_standalone.ejs +138 -0
  148. package/templates/default/scripts/build.ts@bundler_esbuild@reload_obsidian-cli.ejs +6 -0
  149. package/templates/default/scripts/commit.ts_dev-utils.ejs +3 -0
  150. package/templates/default/scripts/commit.ts_standalone.ejs +3 -0
  151. package/templates/default/scripts/commitlint-config.ts.ejs +5 -0
  152. package/templates/default/scripts/demo-vault-global-setup.ts.ejs +43 -0
  153. package/templates/default/scripts/dev.ts.ejs +6 -0
  154. package/templates/default/scripts/dev.ts@bundler_cli-bundler.ejs +8 -0
  155. package/templates/default/scripts/dev.ts@bundler_esbuild.ejs +3 -0
  156. package/templates/default/scripts/dev.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +2 -0
  157. package/templates/default/scripts/dev.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +1 -0
  158. package/templates/default/scripts/dev.ts@bundler_esbuild@preset_dev-utils.ejs +7 -0
  159. package/templates/default/scripts/dev.ts@bundler_esbuild@preset_standalone.ejs +3 -0
  160. package/templates/default/scripts/esbuild-plugins.ts.ejs +20 -0
  161. package/templates/default/scripts/esbuild-plugins.ts@dev-utils-import_vue.ejs +2 -0
  162. package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_vue.ejs +1 -0
  163. package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_wasm.ejs +13 -0
  164. package/templates/default/scripts/eslint-config.ts.ejs +113 -0
  165. package/templates/default/scripts/eslint-config.ts@extra-files_has-e2e.ejs +7 -0
  166. package/templates/default/scripts/find-overexposed-fix.ts.ejs +26 -0
  167. package/templates/default/scripts/find-overexposed.ts.ejs +15 -0
  168. package/templates/default/scripts/format-check.ts.ejs +4 -0
  169. package/templates/default/scripts/format-check.ts@tool_biome-formatter.ejs +8 -0
  170. package/templates/default/scripts/format-check.ts@tool_dprint.ejs +3 -0
  171. package/templates/default/scripts/format-check.ts@tool_dprint@preset_dev-utils.ejs +7 -0
  172. package/templates/default/scripts/format-check.ts@tool_dprint@preset_standalone.ejs +8 -0
  173. package/templates/default/scripts/format-check.ts@tool_prettier.ejs +8 -0
  174. package/templates/default/scripts/format.ts.ejs +4 -0
  175. package/templates/default/scripts/format.ts@tool_biome-formatter.ejs +8 -0
  176. package/templates/default/scripts/format.ts@tool_dprint.ejs +3 -0
  177. package/templates/default/scripts/format.ts@tool_dprint@preset_dev-utils.ejs +7 -0
  178. package/templates/default/scripts/format.ts@tool_dprint@preset_standalone.ejs +8 -0
  179. package/templates/default/scripts/format.ts@tool_prettier.ejs +8 -0
  180. package/templates/default/scripts/framework-component-stub.ts.ejs +46 -0
  181. package/templates/default/scripts/gate.ts.ejs +10 -0
  182. package/templates/default/scripts/lint-fix.ts.ejs +6 -0
  183. package/templates/default/scripts/lint-fix.ts@tool_biome-linter.ejs +8 -0
  184. package/templates/default/scripts/lint-fix.ts@tool_eslint.ejs +3 -0
  185. package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_dev-utils.ejs +7 -0
  186. package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_standalone.ejs +8 -0
  187. package/templates/default/scripts/lint-md-fix.ts_dev-utils.ejs +7 -0
  188. package/templates/default/scripts/lint-md-fix.ts_standalone.ejs +37 -0
  189. package/templates/default/scripts/lint-md.ts_dev-utils.ejs +7 -0
  190. package/templates/default/scripts/lint-md.ts_standalone.ejs +37 -0
  191. package/templates/default/scripts/lint.ts.ejs +6 -0
  192. package/templates/default/scripts/lint.ts@tool_biome-linter.ejs +8 -0
  193. package/templates/default/scripts/lint.ts@tool_eslint.ejs +3 -0
  194. package/templates/default/scripts/lint.ts@tool_eslint@preset_dev-utils.ejs +7 -0
  195. package/templates/default/scripts/lint.ts@tool_eslint@preset_standalone.ejs +8 -0
  196. package/templates/default/scripts/markdownlint-cli2-config.ts_dev-utils.ejs +14 -0
  197. package/templates/default/scripts/markdownlint-cli2-config.ts_standalone.ejs +36 -0
  198. package/templates/default/scripts/nano-staged-config.ts.ejs +9 -0
  199. package/templates/default/scripts/postcss.config.ts.ejs +1 -0
  200. package/templates/default/scripts/postcss.config.ts@plugins_postcss.ejs +7 -0
  201. package/templates/default/scripts/prepare.ts_dev-utils.ejs +3 -0
  202. package/templates/default/scripts/prepare.ts_standalone.ejs +3 -0
  203. package/templates/default/scripts/prettier.config.ts.ejs +12 -0
  204. package/templates/default/scripts/rollup.config.ts.ejs +129 -0
  205. package/templates/default/scripts/rollup.config.ts@import_rollup-babel.ejs +5 -0
  206. package/templates/default/scripts/rollup.config.ts@import_rollup-json.ejs +1 -0
  207. package/templates/default/scripts/rollup.config.ts@import_rollup-postcss.ejs +4 -0
  208. package/templates/default/scripts/rollup.config.ts@import_scss.ejs +1 -0
  209. package/templates/default/scripts/rollup.config.ts@import_svelte.ejs +2 -0
  210. package/templates/default/scripts/rollup.config.ts@import_vue.ejs +1 -0
  211. package/templates/default/scripts/rollup.config.ts@import_wasm.ejs +1 -0
  212. package/templates/default/scripts/rollup.config.ts@lint-out-dir_dev-utils.ejs +1 -0
  213. package/templates/default/scripts/rollup.config.ts@post-plugin_preact.ejs +4 -0
  214. package/templates/default/scripts/rollup.config.ts@post-plugin_react.ejs +5 -0
  215. package/templates/default/scripts/rollup.config.ts@post-plugin_rollup-json.ejs +1 -0
  216. package/templates/default/scripts/rollup.config.ts@post-plugin_rollup-postcss.ejs +4 -0
  217. package/templates/default/scripts/rollup.config.ts@post-plugin_scss.ejs +4 -0
  218. package/templates/default/scripts/rollup.config.ts@post-plugin_solid.ejs +4 -0
  219. package/templates/default/scripts/rollup.config.ts@post-plugin_wasm.ejs +4 -0
  220. package/templates/default/scripts/rollup.config.ts@pre-plugin_svelte.ejs +4 -0
  221. package/templates/default/scripts/rollup.config.ts@pre-plugin_vue.ejs +13 -0
  222. package/templates/default/scripts/rollup.config.ts@unwrap_rollup-babel.ejs +1 -0
  223. package/templates/default/scripts/rollup.config.ts@unwrap_rollup-json.ejs +1 -0
  224. package/templates/default/scripts/rollup.config.ts@unwrap_rollup-postcss.ejs +1 -0
  225. package/templates/default/scripts/rollup.config.ts@unwrap_scss.ejs +1 -0
  226. package/templates/default/scripts/rollup.config.ts@unwrap_svelte.ejs +1 -0
  227. package/templates/default/scripts/rollup.config.ts@unwrap_vue.ejs +1 -0
  228. package/templates/default/scripts/rollup.config.ts@unwrap_wasm.ejs +1 -0
  229. package/templates/default/scripts/spellcheck.ts_dev-utils.ejs +7 -0
  230. package/templates/default/scripts/spellcheck.ts_standalone.ejs +8 -0
  231. package/templates/default/scripts/stylesheet-stub.ts.ejs +17 -0
  232. package/templates/default/scripts/test-coverage.ts.ejs +8 -0
  233. package/templates/default/scripts/test-e2e.ts.ejs +1 -0
  234. package/templates/default/scripts/test-e2e.ts@tool_obsidian-test.ejs +8 -0
  235. package/templates/default/scripts/test-e2e.ts@tool_wdio-obsidian.ejs +8 -0
  236. package/templates/default/scripts/test-integration-android.ts.ejs +8 -0
  237. package/templates/default/scripts/test-integration-demo-vault.ts.ejs +8 -0
  238. package/templates/default/scripts/test-integration-desktop-performance.ts.ejs +8 -0
  239. package/templates/default/scripts/test-integration-desktop.ts.ejs +8 -0
  240. package/templates/default/scripts/test-integration-no-app.ts.ejs +8 -0
  241. package/templates/default/scripts/test-integration.ts.ejs +22 -0
  242. package/templates/default/scripts/test-watch.ts_dev-utils.ejs +1 -0
  243. package/templates/default/scripts/test-watch.ts_dev-utils@tool_jest.ejs +13 -0
  244. package/templates/default/scripts/test-watch.ts_dev-utils@tool_vitest.ejs +8 -0
  245. package/templates/default/scripts/test-watch.ts_standalone.ejs +1 -0
  246. package/templates/default/scripts/test-watch.ts_standalone@tool_jest.ejs +13 -0
  247. package/templates/default/scripts/test-watch.ts_standalone@tool_vitest.ejs +8 -0
  248. package/templates/default/scripts/test.ts_dev-utils.ejs +1 -0
  249. package/templates/default/scripts/test.ts_dev-utils@tool_jest.ejs +13 -0
  250. package/templates/default/scripts/test.ts_dev-utils@tool_vitest.ejs +8 -0
  251. package/templates/default/scripts/test.ts_standalone.ejs +1 -0
  252. package/templates/default/scripts/test.ts_standalone@tool_jest.ejs +13 -0
  253. package/templates/default/scripts/test.ts_standalone@tool_vitest.ejs +8 -0
  254. package/templates/default/scripts/version.ts_dev-utils.ejs +10 -0
  255. package/templates/default/scripts/version.ts_standalone.ejs +317 -0
  256. package/templates/default/scripts/vite.config.ts.ejs +76 -0
  257. package/templates/default/scripts/vite.config.ts@import_preact.ejs +1 -0
  258. package/templates/default/scripts/vite.config.ts@import_react.ejs +1 -0
  259. package/templates/default/scripts/vite.config.ts@import_solid.ejs +1 -0
  260. package/templates/default/scripts/vite.config.ts@import_svelte.ejs +1 -0
  261. package/templates/default/scripts/vite.config.ts@import_vue.ejs +1 -0
  262. package/templates/default/scripts/vite.config.ts@lint-empty-out-dir_dev-utils.ejs +1 -0
  263. package/templates/default/scripts/vite.config.ts@lint-out-dir_dev-utils.ejs +1 -0
  264. package/templates/default/scripts/vite.config.ts@plugin_preact.ejs +1 -0
  265. package/templates/default/scripts/vite.config.ts@plugin_react.ejs +1 -0
  266. package/templates/default/scripts/vite.config.ts@plugin_solid.ejs +1 -0
  267. package/templates/default/scripts/vite.config.ts@plugin_svelte.ejs +1 -0
  268. package/templates/default/scripts/vite.config.ts@plugin_vue.ejs +1 -0
  269. package/templates/default/scripts/vitest-config.ts.ejs +75 -0
  270. package/templates/default/scripts/vitest-config.ts@post-config_solid.ejs +67 -0
  271. package/templates/default/scripts/wasm-module-stub.ts.ejs +21 -0
  272. package/templates/default/scripts/webpack.config.ts.ejs +124 -0
  273. package/templates/default/scripts/webpack.config.ts@import_svelte.ejs +1 -0
  274. package/templates/default/scripts/webpack.config.ts@import_vue.ejs +1 -0
  275. package/templates/default/scripts/webpack.config.ts@import_webpack-css-extract.ejs +4 -0
  276. package/templates/default/scripts/webpack.config.ts@lint-webpack-default_dev-utils.ejs +1 -0
  277. package/templates/default/scripts/webpack.config.ts@plugin_vue.ejs +1 -0
  278. package/templates/default/scripts/webpack.config.ts@plugin_webpack-css-extract.ejs +4 -0
  279. package/templates/default/scripts/webpack.config.ts@rule_css-modules.ejs +7 -0
  280. package/templates/default/scripts/webpack.config.ts@rule_css.ejs +4 -0
  281. package/templates/default/scripts/webpack.config.ts@rule_postcss.ejs +4 -0
  282. package/templates/default/scripts/webpack.config.ts@rule_scss.ejs +4 -0
  283. package/templates/default/scripts/webpack.config.ts@rule_solid.ejs +17 -0
  284. package/templates/default/scripts/webpack.config.ts@rule_svelte.ejs +7 -0
  285. package/templates/default/scripts/webpack.config.ts@rule_tailwind.ejs +4 -0
  286. package/templates/default/scripts/webpack.config.ts@rule_vue.ejs +4 -0
  287. package/templates/default/scripts/webpack.config.ts@rule_wasm.ejs +8 -0
  288. package/templates/default/scripts/webpack.config.ts@ts-loader-compiler-options_vue.ejs +5 -0
  289. package/templates/default/scripts/webpack.config.ts@ts-loader-options_vue.ejs +5 -0
  290. package/templates/default/src/demo-vault-buttons.demo-vault.integration.test.ts.ejs +12 -0
  291. package/templates/default/src/demo-vault.no-app.integration.test.ts.ejs +18 -0
  292. package/templates/default/src/editor-extensions/sample-state-field.ts_dev-utils.ejs +56 -0
  293. package/templates/default/src/editor-extensions/sample-state-field.ts_standalone.ejs +60 -0
  294. package/templates/default/src/editor-extensions/sample-view-plugin.ts.ejs +66 -0
  295. package/templates/default/src/editor-extensions/sample-widget.ts.ejs +22 -0
  296. package/templates/default/src/editor-suggests/sample-editor-suggest.ts.ejs +42 -0
  297. package/templates/default/src/i18n/en/index.ts.ejs +10 -0
  298. package/templates/default/src/i18n/index.ts_i18next.ejs +21 -0
  299. package/templates/default/src/i18n/index.ts_typesafe-i18n.ejs +14 -0
  300. package/templates/default/src/i18n/locales/en.json.ejs +3 -0
  301. package/templates/default/src/lit-elements/sample-lit-element.ts.ejs +54 -0
  302. package/templates/default/src/main.test.ts.ejs +11 -0
  303. package/templates/default/src/main.test.ts@test-imports_vitest.ejs +6 -0
  304. package/templates/default/src/main.ts.ejs +4 -0
  305. package/templates/default/src/main.ts@import_css-modules.ejs +1 -0
  306. package/templates/default/src/main.ts@import_css.ejs +1 -0
  307. package/templates/default/src/main.ts@import_postcss.ejs +1 -0
  308. package/templates/default/src/main.ts@import_scss.ejs +1 -0
  309. package/templates/default/src/main.ts@import_tailwind.ejs +1 -0
  310. package/templates/default/src/modals/sample-form-modal.ts.ejs +35 -0
  311. package/templates/default/src/modals/sample-suggest-modal.ts.ejs +37 -0
  312. package/templates/default/src/plugin-settings-component.test.ts_demo.ejs +49 -0
  313. package/templates/default/src/plugin-settings-component.test.ts_demo@test-imports_vitest.ejs +5 -0
  314. package/templates/default/src/plugin-settings-component.test.ts_enhanced.ejs +41 -0
  315. package/templates/default/src/plugin-settings-component.test.ts_enhanced@test-imports_vitest.ejs +5 -0
  316. package/templates/default/src/plugin-settings-component.ts_demo.ejs +87 -0
  317. package/templates/default/src/plugin-settings-component.ts_enhanced.ejs +27 -0
  318. package/templates/default/src/plugin-settings-tab.ts_demo.ejs +286 -0
  319. package/templates/default/src/plugin-settings-tab.ts_enhanced.ejs +26 -0
  320. package/templates/default/src/plugin-settings.test.ts_demo.ejs +14 -0
  321. package/templates/default/src/plugin-settings.test.ts_demo@test-imports_vitest.ejs +6 -0
  322. package/templates/default/src/plugin-settings.ts_demo.ejs +64 -0
  323. package/templates/default/src/plugin-settings.ts_enhanced.ejs +3 -0
  324. package/templates/default/src/plugin.test.ts_jest.ejs +9 -0
  325. package/templates/default/src/plugin.test.ts_vitest.ejs +14 -0
  326. package/templates/default/src/plugin.ts_demo.ejs +316 -0
  327. package/templates/default/src/plugin.ts_demo@import_i18next.ejs +1 -0
  328. package/templates/default/src/plugin.ts_demo@import_lit.ejs +4 -0
  329. package/templates/default/src/plugin.ts_demo@import_preact.ejs +4 -0
  330. package/templates/default/src/plugin.ts_demo@import_react.ejs +4 -0
  331. package/templates/default/src/plugin.ts_demo@import_solid.ejs +4 -0
  332. package/templates/default/src/plugin.ts_demo@import_svelte.ejs +4 -0
  333. package/templates/default/src/plugin.ts_demo@import_typesafe-i18n.ejs +1 -0
  334. package/templates/default/src/plugin.ts_demo@import_vue.ejs +4 -0
  335. package/templates/default/src/plugin.ts_demo@import_wasm.ejs +1 -0
  336. package/templates/default/src/plugin.ts_demo@method_ui-view.ejs +7 -0
  337. package/templates/default/src/plugin.ts_demo@onload_i18next.ejs +2 -0
  338. package/templates/default/src/plugin.ts_demo@onload_lit.ejs +4 -0
  339. package/templates/default/src/plugin.ts_demo@onload_preact.ejs +4 -0
  340. package/templates/default/src/plugin.ts_demo@onload_react.ejs +4 -0
  341. package/templates/default/src/plugin.ts_demo@onload_solid.ejs +4 -0
  342. package/templates/default/src/plugin.ts_demo@onload_svelte.ejs +4 -0
  343. package/templates/default/src/plugin.ts_demo@onload_typesafe-i18n.ejs +8 -0
  344. package/templates/default/src/plugin.ts_demo@onload_vue.ejs +4 -0
  345. package/templates/default/src/plugin.ts_demo@onload_wasm.ejs +2 -0
  346. package/templates/default/src/plugin.ts_enhanced.ejs +72 -0
  347. package/templates/default/src/plugin.ts_enhanced@import2_codemirror.ejs +3 -0
  348. package/templates/default/src/plugin.ts_enhanced@import2_i18next.ejs +2 -0
  349. package/templates/default/src/plugin.ts_enhanced@import2_lit.ejs +4 -0
  350. package/templates/default/src/plugin.ts_enhanced@import2_preact.ejs +4 -0
  351. package/templates/default/src/plugin.ts_enhanced@import2_react.ejs +4 -0
  352. package/templates/default/src/plugin.ts_enhanced@import2_solid.ejs +4 -0
  353. package/templates/default/src/plugin.ts_enhanced@import2_svelte.ejs +4 -0
  354. package/templates/default/src/plugin.ts_enhanced@import2_typesafe-i18n.ejs +2 -0
  355. package/templates/default/src/plugin.ts_enhanced@import2_vue.ejs +4 -0
  356. package/templates/default/src/plugin.ts_enhanced@import2_wasm.ejs +1 -0
  357. package/templates/default/src/plugin.ts_enhanced@method_ui-view.ejs +7 -0
  358. package/templates/default/src/plugin.ts_enhanced@onload_codemirror.ejs +4 -0
  359. package/templates/default/src/plugin.ts_enhanced@onload_i18next.ejs +2 -0
  360. package/templates/default/src/plugin.ts_enhanced@onload_lit.ejs +4 -0
  361. package/templates/default/src/plugin.ts_enhanced@onload_preact.ejs +4 -0
  362. package/templates/default/src/plugin.ts_enhanced@onload_react.ejs +4 -0
  363. package/templates/default/src/plugin.ts_enhanced@onload_solid.ejs +4 -0
  364. package/templates/default/src/plugin.ts_enhanced@onload_svelte.ejs +4 -0
  365. package/templates/default/src/plugin.ts_enhanced@onload_typesafe-i18n.ejs +8 -0
  366. package/templates/default/src/plugin.ts_enhanced@onload_vue.ejs +4 -0
  367. package/templates/default/src/plugin.ts_enhanced@onload_wasm.ejs +2 -0
  368. package/templates/default/src/plugin.ts_standalone.ejs +56 -0
  369. package/templates/default/src/plugin.ts_standalone@import_codemirror.ejs +3 -0
  370. package/templates/default/src/plugin.ts_standalone@import_i18next.ejs +1 -0
  371. package/templates/default/src/plugin.ts_standalone@import_lit.ejs +4 -0
  372. package/templates/default/src/plugin.ts_standalone@import_preact.ejs +4 -0
  373. package/templates/default/src/plugin.ts_standalone@import_react.ejs +4 -0
  374. package/templates/default/src/plugin.ts_standalone@import_solid.ejs +4 -0
  375. package/templates/default/src/plugin.ts_standalone@import_svelte.ejs +4 -0
  376. package/templates/default/src/plugin.ts_standalone@import_typesafe-i18n.ejs +1 -0
  377. package/templates/default/src/plugin.ts_standalone@import_vue.ejs +4 -0
  378. package/templates/default/src/plugin.ts_standalone@import_wasm.ejs +1 -0
  379. package/templates/default/src/plugin.ts_standalone@method_ui-view.ejs +7 -0
  380. package/templates/default/src/plugin.ts_standalone@onload_codemirror.ejs +4 -0
  381. package/templates/default/src/plugin.ts_standalone@onload_i18next.ejs +2 -0
  382. package/templates/default/src/plugin.ts_standalone@onload_lit.ejs +4 -0
  383. package/templates/default/src/plugin.ts_standalone@onload_preact.ejs +4 -0
  384. package/templates/default/src/plugin.ts_standalone@onload_react.ejs +4 -0
  385. package/templates/default/src/plugin.ts_standalone@onload_solid.ejs +4 -0
  386. package/templates/default/src/plugin.ts_standalone@onload_svelte.ejs +4 -0
  387. package/templates/default/src/plugin.ts_standalone@onload_typesafe-i18n.ejs +8 -0
  388. package/templates/default/src/plugin.ts_standalone@onload_vue.ejs +4 -0
  389. package/templates/default/src/plugin.ts_standalone@onload_wasm.ejs +2 -0
  390. package/templates/default/src/preact-components/sample-preact-component.tsx_dev-utils.ejs +47 -0
  391. package/templates/default/src/preact-components/sample-preact-component.tsx_standalone.ejs +47 -0
  392. package/templates/default/src/react-components/sample-react-component.tsx_dev-utils.ejs +35 -0
  393. package/templates/default/src/react-components/sample-react-component.tsx_standalone.ejs +47 -0
  394. package/templates/default/src/settings.ts.ejs +32 -0
  395. package/templates/default/src/solid-components/sample-solid-component.tsx_dev-utils.ejs +47 -0
  396. package/templates/default/src/solid-components/sample-solid-component.tsx_standalone.ejs +47 -0
  397. package/templates/default/src/styles/css-modules.d.ts.ejs +4 -0
  398. package/templates/default/src/styles/main.css_dev-utils.ejs +17 -0
  399. package/templates/default/src/styles/main.css_dev-utils@content_tailwind.ejs +1 -0
  400. package/templates/default/src/styles/main.css_standalone.ejs +11 -0
  401. package/templates/default/src/styles/main.css_standalone@content_tailwind.ejs +1 -0
  402. package/templates/default/src/styles/main.module.css.ejs +3 -0
  403. package/templates/default/src/styles/main.scss_dev-utils.ejs +16 -0
  404. package/templates/default/src/styles/main.scss_standalone.ejs +10 -0
  405. package/templates/default/src/styles/styles.d.ts.ejs +4 -0
  406. package/templates/default/src/svelte-components/sample-svelte-component.d.ts.ejs +7 -0
  407. package/templates/default/src/svelte-components/sample-svelte-component.svelte.ejs +24 -0
  408. package/templates/default/src/views/sample-lit-view.ts.ejs +30 -0
  409. package/templates/default/src/views/sample-lit-view.ts@lint-register-element_dev-utils.ejs +1 -0
  410. package/templates/default/src/views/sample-preact-view.tsx_dev-utils.ejs +45 -0
  411. package/templates/default/src/views/sample-preact-view.tsx_standalone.ejs +42 -0
  412. package/templates/default/src/views/sample-react-view.tsx_dev-utils.ejs +47 -0
  413. package/templates/default/src/views/sample-react-view.tsx_standalone.ejs +49 -0
  414. package/templates/default/src/views/sample-solid-view.tsx_dev-utils.ejs +46 -0
  415. package/templates/default/src/views/sample-solid-view.tsx_standalone.ejs +46 -0
  416. package/templates/default/src/views/sample-svelte-view.ts.ejs +47 -0
  417. package/templates/default/src/views/sample-view.ts.ejs +37 -0
  418. package/templates/default/src/views/sample-vue-view.ts.ejs +34 -0
  419. package/templates/default/src/vue-components/sample-vue-component.d.ts.ejs +6 -0
  420. package/templates/default/src/vue-components/sample-vue-component.vue.ejs +25 -0
  421. package/templates/default/src/wasm/README.md.ejs +29 -0
  422. package/templates/default/src/wasm/answer.ts_esbuild.ejs +23 -0
  423. package/templates/default/src/wasm/answer.ts_parcel.ejs +29 -0
  424. package/templates/default/src/wasm/answer.ts_rollup.ejs +19 -0
  425. package/templates/default/src/wasm/answer.ts_vite.ejs +29 -0
  426. package/templates/default/src/wasm/answer.ts_webpack.ejs +29 -0
  427. package/templates/default/src/wasm/module.wasm +0 -0
  428. package/templates/default/src/wasm/module.wat.ejs +12 -0
  429. package/templates/default/src/wasm/sample-command.ts.ejs +33 -0
  430. package/templates/default/src/wasm.d.ts_esbuild.ejs +12 -0
  431. package/templates/default/src/wasm.d.ts_parcel.ejs +7 -0
  432. package/templates/default/src/wasm.d.ts_rollup.ejs +8 -0
  433. package/templates/default/src/wasm.d.ts_vite.ejs +8 -0
  434. package/templates/default/src/wasm.d.ts_webpack.ejs +7 -0
  435. package/templates/default/tsconfig.json_dev-utils.ejs +34 -0
  436. package/templates/default/tsconfig.json_dev-utils@compiler-options_i18next.ejs +1 -0
  437. package/templates/default/tsconfig.json_dev-utils@compiler-options_lit.ejs +2 -0
  438. package/templates/default/tsconfig.json_dev-utils@compiler-options_preact.ejs +2 -0
  439. package/templates/default/tsconfig.json_dev-utils@compiler-options_react.ejs +1 -0
  440. package/templates/default/tsconfig.json_dev-utils@compiler-options_solid.ejs +2 -0
  441. package/templates/default/tsconfig.json_dev-utils@include_has-e2e.ejs +1 -0
  442. package/templates/default/tsconfig.json_dev-utils@include_svelte.ejs +1 -0
  443. package/templates/default/tsconfig.json_dev-utils@include_vue.ejs +1 -0
  444. package/templates/default/tsconfig.json_dev-utils@types_jest.ejs +2 -0
  445. package/templates/default/tsconfig.json_dev-utils@types_svelte.ejs +2 -0
  446. package/templates/default/tsconfig.json_dev-utils@types_wdio-obsidian.ejs +5 -0
  447. package/templates/default/tsconfig.json_dev-utils@types_with-unofficial.ejs +2 -0
  448. package/templates/default/tsconfig.json_standalone.ejs +47 -0
  449. package/templates/default/tsconfig.json_standalone@compiler-options_i18next.ejs +1 -0
  450. package/templates/default/tsconfig.json_standalone@compiler-options_lit.ejs +2 -0
  451. package/templates/default/tsconfig.json_standalone@compiler-options_preact.ejs +2 -0
  452. package/templates/default/tsconfig.json_standalone@compiler-options_react.ejs +1 -0
  453. package/templates/default/tsconfig.json_standalone@compiler-options_solid.ejs +2 -0
  454. package/templates/default/tsconfig.json_standalone@include-extra_preact.ejs +2 -0
  455. package/templates/default/tsconfig.json_standalone@include-extra_react.ejs +2 -0
  456. package/templates/default/tsconfig.json_standalone@include-extra_solid.ejs +2 -0
  457. package/templates/default/tsconfig.json_standalone@include_has-e2e.ejs +1 -0
  458. package/templates/default/tsconfig.json_standalone@include_svelte.ejs +1 -0
  459. package/templates/default/tsconfig.json_standalone@include_vue.ejs +1 -0
  460. package/templates/default/tsconfig.json_standalone@types_jest.ejs +2 -0
  461. package/templates/default/tsconfig.json_standalone@types_svelte.ejs +2 -0
  462. package/templates/default/tsconfig.json_standalone@types_wdio-obsidian.ejs +5 -0
  463. package/templates/default/tsconfig.json_standalone@types_with-unofficial.ejs +2 -0
  464. package/templates/default/versions.json.ejs +3 -0
  465. package/templates/default/vite.config.ts.ejs +3 -0
  466. package/templates/default/vitest.config.ts_dev-utils.ejs +1 -0
  467. package/templates/default/vitest.config.ts_standalone.ejs +55 -0
  468. package/templates/default/vitest.config.ts_standalone@jsx_solid.ejs +11 -0
  469. package/templates/default/wdio.conf.ts.ejs +21 -0
  470. package/templates/default/webpack.config.ts.ejs +3 -0
@@ -0,0 +1,56 @@
1
+ import {
2
+ Notice,
3
+ Plugin as ObsidianPlugin
4
+ } from 'obsidian';
5
+
6
+ import type { Editor } from 'obsidian';
7
+
8
+ import {
9
+ DEFAULT_SETTINGS,
10
+ <%= pluginShortName %>SettingTab
11
+ } from './settings.ts';
12
+ <%- render('import') -%>
13
+
14
+ import type { PluginSettings } from './settings.ts';
15
+
16
+ export class Plugin extends ObsidianPlugin {
17
+ // `Plugin.settings` is declared as `settings?: unknown` by Obsidian itself, so a redeclaration needs both
18
+ // `override` and an initializer to narrow it.
19
+ public override settings: PluginSettings = { ...DEFAULT_SETTINGS };
20
+
21
+ public override async onload(): Promise<void> {
22
+ await this.loadSettings();
23
+
24
+ this.addCommand({
25
+ callback: () => {
26
+ new Notice('Sample command');
27
+ },
28
+ id: 'sample',
29
+ name: 'Sample'
30
+ });
31
+
32
+ this.addCommand({
33
+ editorCallback: (editor: Editor) => {
34
+ editor.replaceSelection('Sample Editor Command');
35
+ },
36
+ id: 'sample-editor',
37
+ name: 'Sample editor'
38
+ });
39
+
40
+ this.addSettingTab(new <%= pluginShortName %>SettingTab(this.app, this));
41
+ <%- render('onload') -%>
42
+ }
43
+
44
+ public override onunload(): void {
45
+ // Cleanup
46
+ }
47
+
48
+ public async loadSettings(): Promise<void> {
49
+ this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData() as Partial<PluginSettings>);
50
+ }
51
+
52
+ public async saveSettings(): Promise<void> {
53
+ await this.saveData(this.settings);
54
+ }
55
+ <%- render('method') -%>
56
+ }
@@ -0,0 +1,3 @@
1
+ import { sampleStateField } from './editor-extensions/sample-state-field.ts';
2
+ import { sampleViewPlugin } from './editor-extensions/sample-view-plugin.ts';
3
+ import { SampleEditorSuggest } from './editor-suggests/sample-editor-suggest.ts';
@@ -0,0 +1 @@
1
+ import { initI18n } from './i18n/index.ts';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_LIT_VIEW_TYPE,
3
+ SampleLitView
4
+ } from './views/sample-lit-view.ts';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_PREACT_VIEW_TYPE,
3
+ SamplePreactView
4
+ } from './views/sample-preact-view.tsx';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_REACT_VIEW_TYPE,
3
+ SampleReactView
4
+ } from './views/sample-react-view.tsx';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_SOLID_VIEW_TYPE,
3
+ SampleSolidView
4
+ } from './views/sample-solid-view.tsx';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_SVELTE_VIEW_TYPE,
3
+ SampleSvelteView
4
+ } from './views/sample-svelte-view.ts';
@@ -0,0 +1 @@
1
+ import { t } from './i18n/index.ts';
@@ -0,0 +1,4 @@
1
+ import {
2
+ SAMPLE_VUE_VIEW_TYPE,
3
+ SampleVueView
4
+ } from './views/sample-vue-view.ts';
@@ -0,0 +1 @@
1
+ import { registerSampleWasmCommand } from './wasm/sample-command.ts';
@@ -0,0 +1,7 @@
1
+
2
+ private openViewOnLayoutReady(viewType: string): void {
3
+ this.app.workspace.onLayoutReady(() => {
4
+ // `onLayoutReady` takes a synchronous callback; `void` is the marker `no-floating-promises` accepts.
5
+ void this.app.workspace.ensureSideLeaf(viewType, 'right');
6
+ });
7
+ }
@@ -0,0 +1,4 @@
1
+
2
+ this.registerEditorExtension([sampleViewPlugin, sampleStateField]);
3
+
4
+ this.registerEditorSuggest(new SampleEditorSuggest(this.app));
@@ -0,0 +1,2 @@
1
+
2
+ await initI18n();
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_LIT_VIEW_TYPE, (leaf) => new SampleLitView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_LIT_VIEW_TYPE);
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_PREACT_VIEW_TYPE, (leaf) => new SamplePreactView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_PREACT_VIEW_TYPE);
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_REACT_VIEW_TYPE, (leaf) => new SampleReactView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_REACT_VIEW_TYPE);
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_SOLID_VIEW_TYPE, (leaf) => new SampleSolidView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_SOLID_VIEW_TYPE);
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_SVELTE_VIEW_TYPE, (leaf) => new SampleSvelteView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_SVELTE_VIEW_TYPE);
@@ -0,0 +1,8 @@
1
+
2
+ this.addCommand({
3
+ callback: (): void => {
4
+ new Notice(t('greeting'));
5
+ },
6
+ id: 'greeting',
7
+ name: 'Greeting'
8
+ });
@@ -0,0 +1,4 @@
1
+
2
+ this.registerView(SAMPLE_VUE_VIEW_TYPE, (leaf) => new SampleVueView(leaf));
3
+
4
+ this.openViewOnLayoutReady(SAMPLE_VUE_VIEW_TYPE);
@@ -0,0 +1,2 @@
1
+
2
+ registerSampleWasmCommand(this);
@@ -0,0 +1,47 @@
1
+ import type { App } from 'obsidian';
2
+ import type { JSX } from 'preact';
3
+
4
+ import { createContext } from 'preact';
5
+ import {
6
+ useContext,
7
+ useState
8
+ } from 'preact/hooks';
9
+
10
+ // The view always provides the app, so the context default is never read. Widened through its own
11
+ // `unknown` binding rather than asserted twice in one expression: `undefined` does not overlap `App`,
12
+ // so a direct assertion is TS2352, and `as unknown as` in one expression is what the shared lint config
13
+ // bans.
14
+ const UNSET_APP: unknown = undefined;
15
+
16
+ export const AppContext = createContext<App>(UNSET_APP as App);
17
+
18
+ export interface SamplePreactComponentProps {
19
+ startCount: number;
20
+ }
21
+
22
+ export function SamplePreactComponent(props: SamplePreactComponentProps): JSX.Element {
23
+ const [count, setCount] = useState(props.startCount);
24
+ const app = useContext(AppContext);
25
+
26
+ function increment(): void {
27
+ setCount(count + 1);
28
+ }
29
+
30
+ return (
31
+ <>
32
+ <h4>Sample Preact Component!</h4>
33
+
34
+ <div>
35
+ <span>
36
+ My number is {count}
37
+ !
38
+ </span>
39
+ </div>
40
+
41
+ <button onClick={increment} type="button">Increment</button>
42
+ <div>
43
+ Vault name: {app.vault.getName()}
44
+ </div>
45
+ </>
46
+ );
47
+ }
@@ -0,0 +1,47 @@
1
+ import type { App } from 'obsidian';
2
+ import type { JSX } from 'preact';
3
+
4
+ import { createContext } from 'preact';
5
+ import {
6
+ useContext,
7
+ useState
8
+ } from 'preact/hooks';
9
+
10
+ // The view always provides the app, so the context default is never read. Widened through its own
11
+ // `unknown` binding rather than asserted twice in one expression: `undefined` does not overlap `App`,
12
+ // so a direct assertion is TS2352, and `as unknown as` in one expression is what the shared lint config
13
+ // bans.
14
+ const UNSET_APP: unknown = undefined;
15
+
16
+ export const AppContext = createContext<App>(UNSET_APP as App);
17
+
18
+ export interface SamplePreactComponentProps {
19
+ startCount: number;
20
+ }
21
+
22
+ export function SamplePreactComponent(props: SamplePreactComponentProps): JSX.Element {
23
+ const [count, setCount] = useState(props.startCount);
24
+ const app = useContext(AppContext);
25
+
26
+ function increment(): void {
27
+ setCount(count + 1);
28
+ }
29
+
30
+ return (
31
+ <>
32
+ <h4>Sample Preact Component!</h4>
33
+
34
+ <div>
35
+ <span>
36
+ My number is {count}
37
+ !
38
+ </span>
39
+ </div>
40
+
41
+ <button onClick={increment} type="button">Increment</button>
42
+ <div>
43
+ Vault name: {app.vault.getName()}
44
+ </div>
45
+ </>
46
+ );
47
+ }
@@ -0,0 +1,35 @@
1
+ import type { JSX } from 'react';
2
+
3
+ import { useApp } from 'obsidian-dev-utils/obsidian/react/app-context';
4
+ import { useState } from 'react';
5
+
6
+ export interface SampleReactComponentProps {
7
+ startCount: number;
8
+ }
9
+
10
+ export function SampleReactComponent(props: SampleReactComponentProps): JSX.Element {
11
+ const [count, setCount] = useState(props.startCount);
12
+ const app = useApp();
13
+
14
+ function increment(): void {
15
+ setCount(count + 1);
16
+ }
17
+
18
+ return (
19
+ <>
20
+ <h4>Sample React Component!</h4>
21
+
22
+ <div>
23
+ <span>
24
+ My number is {count}
25
+ !
26
+ </span>
27
+ </div>
28
+
29
+ <button onClick={increment} type="button">Increment</button>
30
+ <div>
31
+ Vault name: {app.vault.getName()}
32
+ </div>
33
+ </>
34
+ );
35
+ }
@@ -0,0 +1,47 @@
1
+ import type { App } from 'obsidian';
2
+ import type { JSX } from 'react';
3
+
4
+ import {
5
+ createContext,
6
+ useContext,
7
+ useState
8
+ } from 'react';
9
+
10
+ // The view always provides the app, so the context default is never read. Widened through its own
11
+ // `unknown` binding rather than asserted twice in one expression: `undefined` does not overlap `App`,
12
+ // so a direct assertion is TS2352, and `as unknown as` in one expression is what the shared lint config
13
+ // bans.
14
+ const UNSET_APP: unknown = undefined;
15
+
16
+ export const AppContext = createContext<App>(UNSET_APP as App);
17
+
18
+ export interface SampleReactComponentProps {
19
+ startCount: number;
20
+ }
21
+
22
+ export function SampleReactComponent(props: SampleReactComponentProps): JSX.Element {
23
+ const [count, setCount] = useState(props.startCount);
24
+ const app = useContext(AppContext);
25
+
26
+ function increment(): void {
27
+ setCount(count + 1);
28
+ }
29
+
30
+ return (
31
+ <>
32
+ <h4>Sample React Component!</h4>
33
+
34
+ <div>
35
+ <span>
36
+ My number is {count}
37
+ !
38
+ </span>
39
+ </div>
40
+
41
+ <button onClick={increment} type="button">Increment</button>
42
+ <div>
43
+ Vault name: {app.vault.getName()}
44
+ </div>
45
+ </>
46
+ );
47
+ }
@@ -0,0 +1,32 @@
1
+ import type { SettingDefinitionItem } from 'obsidian';
2
+
3
+ import { PluginSettingTab } from 'obsidian';
4
+
5
+ export interface PluginSettings {
6
+ mySetting: string;
7
+ }
8
+
9
+ export const DEFAULT_SETTINGS: PluginSettings = {
10
+ mySetting: 'default'
11
+ };
12
+
13
+ /**
14
+ * The settings tab is declarative: return one definition per row from `getSettingDefinitions()` and Obsidian renders
15
+ * them and indexes them for the settings search. A `control` row's `key` names a property of `plugin.settings`, which
16
+ * `PluginSettingTab` reads and persists itself.
17
+ */
18
+ export class <%= pluginShortName %>SettingTab extends PluginSettingTab {
19
+ public override getSettingDefinitions(): SettingDefinitionItem[] {
20
+ return [
21
+ {
22
+ control: {
23
+ key: 'mySetting',
24
+ placeholder: 'Enter your value',
25
+ type: 'text'
26
+ },
27
+ desc: 'Description',
28
+ name: 'Setting #1'
29
+ }
30
+ ];
31
+ }
32
+ }
@@ -0,0 +1,47 @@
1
+ import type { App } from 'obsidian';
2
+ import type { JSX } from 'solid-js';
3
+
4
+ import {
5
+ createContext,
6
+ createSignal,
7
+ useContext
8
+ } from 'solid-js';
9
+
10
+ // The view always provides the app, so the context default is never read. Widened through its own
11
+ // `unknown` binding rather than asserted twice in one expression: `undefined` does not overlap `App`,
12
+ // so a direct assertion is TS2352, and `as unknown as` in one expression is what the shared lint config
13
+ // bans.
14
+ const UNSET_APP: unknown = undefined;
15
+
16
+ export const AppContext = createContext<App>(UNSET_APP as App);
17
+
18
+ export interface SampleSolidComponentProps {
19
+ startCount: number;
20
+ }
21
+
22
+ export function SampleSolidComponent(props: SampleSolidComponentProps): JSX.Element {
23
+ const [count, setCount] = createSignal(props.startCount);
24
+ const app = useContext(AppContext);
25
+
26
+ function increment(): void {
27
+ setCount(count() + 1);
28
+ }
29
+
30
+ return (
31
+ <>
32
+ <h4>Sample Solid Component!</h4>
33
+
34
+ <div>
35
+ <span>
36
+ My number is {count()}
37
+ !
38
+ </span>
39
+ </div>
40
+
41
+ <button onClick={increment} type="button">Increment</button>
42
+ <div>
43
+ Vault name: {app.vault.getName()}
44
+ </div>
45
+ </>
46
+ );
47
+ }
@@ -0,0 +1,47 @@
1
+ import type { App } from 'obsidian';
2
+ import type { JSX } from 'solid-js';
3
+
4
+ import {
5
+ createContext,
6
+ createSignal,
7
+ useContext
8
+ } from 'solid-js';
9
+
10
+ // The view always provides the app, so the context default is never read. Widened through its own
11
+ // `unknown` binding rather than asserted twice in one expression: `undefined` does not overlap `App`,
12
+ // so a direct assertion is TS2352, and `as unknown as` in one expression is what the shared lint config
13
+ // bans.
14
+ const UNSET_APP: unknown = undefined;
15
+
16
+ export const AppContext = createContext<App>(UNSET_APP as App);
17
+
18
+ export interface SampleSolidComponentProps {
19
+ startCount: number;
20
+ }
21
+
22
+ export function SampleSolidComponent(props: SampleSolidComponentProps): JSX.Element {
23
+ const [count, setCount] = createSignal(props.startCount);
24
+ const app = useContext(AppContext);
25
+
26
+ function increment(): void {
27
+ setCount(count() + 1);
28
+ }
29
+
30
+ return (
31
+ <>
32
+ <h4>Sample Solid Component!</h4>
33
+
34
+ <div>
35
+ <span>
36
+ My number is {count()}
37
+ !
38
+ </span>
39
+ </div>
40
+
41
+ <button onClick={increment} type="button">Increment</button>
42
+ <div>
43
+ Vault name: {app.vault.getName()}
44
+ </div>
45
+ </>
46
+ );
47
+ }
@@ -0,0 +1,4 @@
1
+ declare module '*.module.css' {
2
+ const classes: Record<string, string>;
3
+ export default classes;
4
+ }
@@ -0,0 +1,17 @@
1
+ <%- render('content') -%>
2
+ /**
3
+ * You can remove this file if you don't need any styles
4
+ * See default library styles: https://github.com/mnaoumov/obsidian-dev-utils/blob/main/src/styles/main.scss
5
+ * See available library css classes: https://github.com/mnaoumov/obsidian-dev-utils/blob/main/src/CssClass.ts
6
+ */
7
+
8
+ .<%= pluginId %>.obsidian-dev-utils {
9
+ /* Override library styles */
10
+ }
11
+
12
+ /* The word-count widget the sample editor extension renders. Styled here rather than through
13
+ `element.style`, so a theme can restyle it. */
14
+ .cm-sample-word-count {
15
+ font-size: 0.85em;
16
+ opacity: 0.5;
17
+ }
@@ -0,0 +1 @@
1
+ @import "tailwindcss";
@@ -0,0 +1,11 @@
1
+ <%- render('content') -%>
2
+ .<%= pluginId %> {
3
+ /* Add your plugin styles here */
4
+ }
5
+
6
+ /* The word-count widget the sample editor extension renders. Styled here rather than through
7
+ `element.style`, so a theme can restyle it. */
8
+ .cm-sample-word-count {
9
+ font-size: 0.85em;
10
+ opacity: 0.5;
11
+ }
@@ -0,0 +1,3 @@
1
+ .<%= pluginId %> {
2
+ /* Add your plugin styles here */
3
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * You can remove this file if you don't need any styles
3
+ * See default library styles: https://github.com/mnaoumov/obsidian-dev-utils/blob/main/src/styles/main.scss
4
+ * See available library css classes: https://github.com/mnaoumov/obsidian-dev-utils/blob/main/src/CssClass.ts
5
+ */
6
+
7
+ .<%= pluginId %>.obsidian-dev-utils {
8
+ /* Override library styles */
9
+ }
10
+
11
+ /* The word-count widget the sample editor extension renders. Styled here rather than through
12
+ `element.style`, so a theme can restyle it. */
13
+ .cm-sample-word-count {
14
+ font-size: 0.85em;
15
+ opacity: 0.5;
16
+ }
@@ -0,0 +1,10 @@
1
+ .<%= pluginId %> {
2
+ /* Add your plugin styles here */
3
+ }
4
+
5
+ /* The word-count widget the sample editor extension renders. Styled here rather than through
6
+ `element.style`, so a theme can restyle it. */
7
+ .cm-sample-word-count {
8
+ font-size: 0.85em;
9
+ opacity: 0.5;
10
+ }
@@ -0,0 +1,4 @@
1
+ // `src/main.ts` imports the stylesheet for its side effect, so that the bundler emits `styles.css`.
2
+ // TypeScript needs a declaration for that import; without one it fails with TS2882.
3
+ declare module '*.css';
4
+ declare module '*.scss';
@@ -0,0 +1,7 @@
1
+ export interface SampleSvelteComponentExports {
2
+ increment: () => void;
3
+ }
4
+
5
+ export interface SampleSvelteComponentProps {
6
+ startCount: number;
7
+ }
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import type { SampleSvelteComponentProps } from './sample-svelte-component.d.ts';
3
+
4
+ import { untrack } from 'svelte';
5
+
6
+ let { startCount }: SampleSvelteComponentProps = $props();
7
+
8
+ // `startCount` seeds the local state once and is deliberately not tracked afterwards. Reading it
9
+ // Directly here would make Svelte warn (`state_referenced_locally`) that only its initial value is
10
+ // Captured -- which is exactly the intent, so `untrack` says so.
11
+ let count = $state(untrack(() => startCount));
12
+
13
+ export function increment() {
14
+ count += 1;
15
+ }
16
+ </script>
17
+
18
+ <h4>Sample Svelte Component!</h4>
19
+
20
+ <div>
21
+ <span>My number is {count}!</span>
22
+ </div>
23
+
24
+ <button type="button" onclick={increment}>Increment</button>
@@ -0,0 +1,30 @@
1
+ import { ItemView } from 'obsidian';
2
+
3
+ <%- render('lint-register-element') -%>
4
+ import '../lit-elements/sample-lit-element.ts';
5
+
6
+ export const SAMPLE_LIT_VIEW_TYPE = '<%= pluginId %>-SampleLitView';
7
+
8
+ export class SampleLitView extends ItemView {
9
+ public override getDisplayText(): string {
10
+ return 'Sample Lit view';
11
+ }
12
+
13
+ public override getViewType(): string {
14
+ return SAMPLE_LIT_VIEW_TYPE;
15
+ }
16
+
17
+ public override onClose(): Promise<void> {
18
+ this.contentEl.empty();
19
+ return super.onClose();
20
+ }
21
+
22
+ public override onOpen(): Promise<void> {
23
+ const START_COUNT = 10;
24
+ const element = this.contentEl.createEl('sample-lit-element');
25
+ element.count = START_COUNT;
26
+ element.vaultName = this.app.vault.getName();
27
+
28
+ return super.onOpen();
29
+ }
30
+ }
@@ -0,0 +1 @@
1
+ // eslint-disable-next-line import-x/no-unassigned-import -- Importing the module is what REGISTERS the custom element; there is nothing to bind.