@mnaoumov/create-obsidian-plugin 1.0.2 → 1.1.0
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.
- package/README.md +38 -7
- package/dist/main.js +1068 -333
- package/package.json +13 -5
- package/src/main.ts +118 -11
- package/templates/default/.github/ISSUE_TEMPLATE/config.yml.ejs +4 -0
- package/templates/default/.github/workflows/attest-release-assets.yml.ejs +1 -11
- package/templates/default/.github/workflows/ci.yml_framework.ejs +19 -0
- package/templates/default/.github/workflows/ci.yml_framework@job-permissions_measured-coverage-badge.ejs +3 -0
- package/templates/default/.github/workflows/ci.yml_framework@with_measured-coverage-badge.ejs +1 -0
- package/templates/default/.github/workflows/{ci.yml.ejs → ci.yml_standalone.ejs} +1 -1
- package/templates/default/.github/workflows/release.yml_framework.ejs +19 -0
- package/templates/default/.github/workflows/{release.yml.ejs → release.yml_standalone.ejs} +1 -1
- package/templates/default/.gitignore_common.ejs +1 -0
- package/templates/default/.gitignore_wdio-obsidian.ejs +2 -0
- package/templates/default/.nvmrc.ejs +1 -0
- package/templates/default/.prettierignore.ejs +1 -0
- package/templates/default/.prettierignore@ignores_docs-showcase.ejs +3 -0
- package/templates/default/{CONTRIBUTING.md@demo-vault_dev-utils.ejs → CONTRIBUTING.md@demo-vault_framework.ejs} +1 -1
- package/templates/default/{README.md@demo-vault_dev-utils.ejs → README.md@demo-vault_framework.ejs} +1 -1
- package/templates/default/README.md@preset_docs-showcase.ejs +4 -0
- package/templates/default/{README.md@preset_dev-utils.ejs → README.md@preset_framework.ejs} +1 -1
- package/templates/default/biome.jsonc_framework.ejs +16 -0
- package/templates/default/biome.jsonc_framework@excludes_docs-showcase.ejs +1 -0
- package/templates/default/{biome.jsonc.ejs → biome.jsonc_standalone.ejs} +1 -1
- package/templates/default/cspell.json.ejs +10 -2
- package/templates/default/cspell.json@ignore-paths_docs-showcase.ejs +1 -0
- package/templates/default/demo-vault/.gitignore.ejs +4 -4
- package/templates/default/demo-vault/00 Start.md.ejs +1 -1
- package/templates/default/demo-vault/01 Sample commands.md.ejs +4 -4
- package/templates/default/demo-vault/02 Settings.md.ejs +2 -2
- package/templates/default/demo-vault/03 WebAssembly.md.ejs +2 -2
- package/templates/default/demo-vault/README.md.ejs +1 -1
- package/templates/default/demo-vault/_assets/CodeScriptToolkit/demoSetup.ts.ejs +1 -1
- package/templates/default/demo-vault/_assets/CodeScriptToolkit/startup.ts.ejs +4 -4
- package/templates/default/dprint.json_framework.ejs +10 -0
- package/templates/default/dprint.json_framework@excludes_docs-showcase.ejs +2 -0
- package/templates/default/dprint.json_standalone.ejs +1 -0
- package/templates/default/eslint.config.mts_standalone.ejs +9 -0
- package/templates/default/jest.config.ts_framework.ejs +31 -0
- package/templates/default/{scripts/rollup.config.ts@lint-out-dir_dev-utils.ejs → jest.config.ts_framework@lint-root-dir_framework.ejs} +1 -1
- package/templates/default/jest.config.ts_framework@ts-jest-tsconfig_solid.ejs +8 -0
- package/templates/default/{jest.config.ts.ejs → jest.config.ts_standalone.ejs} +0 -1
- package/templates/default/package.json@targets_parcel-targets.ejs +31 -0
- package/templates/default/package.json@targets_parcel.ejs +2 -33
- package/templates/default/parcel-transformer-inline-imports.cjs.ejs +1 -1
- package/templates/default/prettier.config.mjs_framework.ejs +3 -0
- package/templates/default/scripts/build-clean.ts.ejs +2 -2
- package/templates/default/scripts/build-compile-typescript.ts.ejs +14 -0
- package/templates/default/scripts/build-compile.ts.ejs +2 -2
- package/templates/default/scripts/build-options.ts.ejs +9 -0
- package/templates/default/scripts/build-styles.ts.ejs +4 -7
- package/templates/default/scripts/build.ts.ejs +2 -2
- package/templates/default/scripts/build.ts@bundler_adapter-cli.ejs +11 -0
- package/templates/default/scripts/build.ts@bundler_adapter-cli@run_rollup.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_adapter-cli@run_vite.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_adapter-cli@run_webpack.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler.ejs +1 -1
- package/templates/default/scripts/build.ts@bundler_cli-bundler@import_tailwind.ejs +0 -1
- package/templates/default/scripts/build.ts@bundler_esbuild.ejs +2 -2
- package/templates/default/scripts/build.ts@bundler_esbuild@preset_framework.ejs +5 -0
- package/templates/default/scripts/build.ts@bundler_parcel-adapter.ejs +5 -0
- package/templates/default/scripts/commit.ts_framework.ejs +3 -0
- package/templates/default/scripts/commitlint-config.ts_framework.ejs +1 -0
- package/templates/default/scripts/demo-vault-global-setup.ts.ejs +7 -4
- package/templates/default/scripts/dev.ts.ejs +1 -1
- package/templates/default/scripts/dev.ts@bundler_adapter-cli.ejs +6 -0
- package/templates/default/scripts/dev.ts@bundler_adapter-cli@run_rollup.ejs +3 -0
- package/templates/default/scripts/dev.ts@bundler_adapter-cli@run_vite.ejs +3 -0
- package/templates/default/scripts/dev.ts@bundler_adapter-cli@run_webpack.ejs +3 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild.ejs +2 -2
- package/templates/default/scripts/dev.ts@bundler_esbuild@preset_framework.ejs +5 -0
- package/templates/default/scripts/dev.ts@bundler_parcel-adapter.ejs +5 -0
- package/templates/default/scripts/eslint-config.ts.ejs +3 -14
- package/templates/default/scripts/eslint-config.ts@ignores_docs-showcase.ejs +4 -0
- package/templates/default/scripts/find-overexposed-fix.ts.ejs +4 -4
- package/templates/default/scripts/find-overexposed.ts.ejs +3 -3
- package/templates/default/scripts/format-check.ts@tool_biome-formatter.ejs +3 -8
- package/templates/default/scripts/format-check.ts@tool_biome-formatter@preset_framework.ejs +7 -0
- package/templates/default/scripts/format-check.ts@tool_biome-formatter@preset_standalone.ejs +8 -0
- package/templates/default/scripts/format-check.ts@tool_dprint.ejs +2 -2
- package/templates/default/scripts/format-check.ts@tool_dprint@preset_framework.ejs +7 -0
- package/templates/default/scripts/format-check.ts@tool_prettier.ejs +3 -8
- package/templates/default/scripts/format-check.ts@tool_prettier@preset_framework.ejs +7 -0
- package/templates/default/scripts/format-check.ts@tool_prettier@preset_standalone.ejs +8 -0
- package/templates/default/scripts/format.ts@tool_biome-formatter.ejs +3 -8
- package/templates/default/scripts/format.ts@tool_biome-formatter@preset_framework.ejs +7 -0
- package/templates/default/scripts/format.ts@tool_biome-formatter@preset_standalone.ejs +8 -0
- package/templates/default/scripts/format.ts@tool_dprint.ejs +2 -2
- package/templates/default/scripts/format.ts@tool_dprint@preset_framework.ejs +7 -0
- package/templates/default/scripts/format.ts@tool_prettier.ejs +3 -8
- package/templates/default/scripts/format.ts@tool_prettier@preset_framework.ejs +7 -0
- package/templates/default/scripts/format.ts@tool_prettier@preset_standalone.ejs +8 -0
- package/templates/default/scripts/gate.ts.ejs +3 -3
- package/templates/default/scripts/lint-fix.ts.ejs +2 -2
- package/templates/default/scripts/lint-fix.ts@tool_biome-linter.ejs +3 -8
- package/templates/default/scripts/lint-fix.ts@tool_biome-linter@preset_framework.ejs +7 -0
- package/templates/default/scripts/lint-fix.ts@tool_biome-linter@preset_standalone.ejs +8 -0
- package/templates/default/scripts/lint-fix.ts@tool_eslint.ejs +2 -2
- package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_framework.ejs +7 -0
- package/templates/default/scripts/lint-md-fix.ts_framework.ejs +7 -0
- package/templates/default/scripts/lint-md.ts_framework.ejs +7 -0
- package/templates/default/scripts/lint.ts.ejs +2 -2
- package/templates/default/scripts/lint.ts@tool_biome-linter.ejs +3 -8
- package/templates/default/scripts/lint.ts@tool_biome-linter@preset_framework.ejs +7 -0
- package/templates/default/scripts/lint.ts@tool_biome-linter@preset_standalone.ejs +8 -0
- package/templates/default/scripts/lint.ts@tool_eslint.ejs +2 -2
- package/templates/default/scripts/lint.ts@tool_eslint@preset_framework.ejs +7 -0
- package/templates/default/scripts/{markdownlint-cli2-config.ts_dev-utils.ejs → markdownlint-cli2-config.ts_framework.ejs} +4 -4
- package/templates/default/scripts/markdownlint-cli2-config.ts_standalone.ejs +0 -3
- package/templates/default/scripts/nano-staged-config.ts_toolkit-nano-staged.ejs +3 -0
- package/templates/default/scripts/prepare.ts_framework.ejs +3 -0
- package/templates/default/scripts/rollup.config.ts_framework.ejs +49 -0
- package/templates/default/scripts/rollup.config.ts_framework@plugin_rollup-json.ejs +2 -0
- package/templates/default/scripts/rollup.config.ts_framework@plugin_scss.ejs +3 -0
- package/templates/default/scripts/{rollup.config.ts.ejs → rollup.config.ts_standalone.ejs} +4 -4
- package/templates/default/scripts/rollup.config.ts_standalone@import_rollup-json.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts_standalone@import_scss.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts_standalone@unwrap_rollup-json.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts_standalone@unwrap_scss.ejs +1 -0
- package/templates/default/scripts/spellcheck.ts_framework.ejs +7 -0
- package/templates/default/scripts/stylesheet-stub.ts.ejs +1 -1
- package/templates/default/scripts/test-coverage.ts.ejs +2 -8
- package/templates/default/scripts/test-coverage.ts@tool_jest.ejs +5 -0
- package/templates/default/scripts/test-coverage.ts@tool_vitest.ejs +8 -0
- package/templates/default/scripts/test-e2e.ts@tool_obsidian-test.ejs +2 -8
- package/templates/default/scripts/test-e2e.ts@tool_obsidian-test@preset_framework.ejs +4 -0
- package/templates/default/scripts/test-e2e.ts@tool_obsidian-test@preset_standalone.ejs +8 -0
- package/templates/default/scripts/test-e2e.ts@tool_wdio-obsidian.ejs +2 -8
- package/templates/default/scripts/test-e2e.ts@tool_wdio-obsidian@preset_framework.ejs +5 -0
- package/templates/default/scripts/test-e2e.ts@tool_wdio-obsidian@preset_standalone.ejs +8 -0
- package/templates/default/scripts/test-integration-android.ts.ejs +2 -2
- package/templates/default/scripts/test-integration-demo-vault.ts.ejs +2 -2
- package/templates/default/scripts/test-integration-desktop-performance.ts.ejs +2 -2
- package/templates/default/scripts/test-integration-desktop.ts.ejs +2 -2
- package/templates/default/scripts/test-integration-no-app.ts.ejs +2 -2
- package/templates/default/scripts/test-integration.ts.ejs +2 -2
- package/templates/default/scripts/test-watch.ts_framework@tool_jest.ejs +5 -0
- package/templates/default/scripts/test-watch.ts_framework@tool_vitest.ejs +8 -0
- package/templates/default/scripts/test.ts_framework@tool_jest.ejs +5 -0
- package/templates/default/scripts/test.ts_framework@tool_vitest.ejs +8 -0
- package/templates/default/scripts/{version.ts_dev-utils.ejs → version.ts_framework.ejs} +3 -3
- package/templates/default/scripts/vite.config.ts_framework.ejs +10 -0
- package/templates/default/scripts/{vite.config.ts.ejs → vite.config.ts_standalone.ejs} +5 -8
- package/templates/default/scripts/vitest-config.ts.ejs +3 -2
- package/templates/default/scripts/vitest-config.ts@edit-context_docs-showcase.ejs +3 -0
- package/templates/default/scripts/webpack.config.ts_framework.ejs +19 -0
- package/templates/default/scripts/webpack.config.ts_framework@import_scss.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts_framework@plugin_scss.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts_framework@rule_scss.ejs +4 -0
- package/templates/default/scripts/{webpack.config.ts.ejs → webpack.config.ts_standalone.ejs} +4 -4
- package/templates/default/src/demo-vault-buttons.demo-vault.integration.test.ts.ejs +2 -2
- package/templates/default/src/demo-vault.no-app.integration.test.ts.ejs +3 -3
- package/templates/default/src/docs-showcase.desktop.integration.test.ts.ejs +77 -0
- package/templates/default/src/editor-extensions/{sample-state-field.ts_dev-utils.ejs → sample-state-field.ts_framework.ejs} +1 -1
- package/templates/default/src/main.ts@import_tailwind.ejs +1 -1
- package/templates/default/src/main.ts@import_tailwind@preset_framework.ejs +1 -0
- package/templates/default/src/main.ts@import_tailwind@preset_standalone.ejs +1 -0
- package/templates/default/src/{plugin-settings-component.test.ts_enhanced.ejs → plugin-settings-component.test.ts_all-in-one.ejs} +4 -4
- package/templates/default/src/plugin-settings-component.test.ts_demo.ejs +5 -5
- package/templates/default/src/{plugin-settings-component.ts_enhanced.ejs → plugin-settings-component.ts_all-in-one.ejs} +3 -3
- package/templates/default/src/plugin-settings-component.ts_demo.ejs +7 -7
- package/templates/default/src/{plugin-settings-tab.ts_enhanced.ejs → plugin-settings-tab.ts_all-in-one.ejs} +1 -1
- package/templates/default/src/plugin-settings-tab.ts_demo.ejs +3 -3
- package/templates/default/src/plugin-settings.ts_demo.ejs +2 -2
- package/templates/default/src/{plugin.ts_enhanced.ejs → plugin.ts_all-in-one.ejs} +5 -5
- package/templates/default/src/plugin.ts_all-in-one@import2_css-modules.ejs +1 -0
- package/templates/default/src/plugin.ts_all-in-one@import2_docs-showcase.ejs +1 -0
- package/templates/default/src/plugin.ts_all-in-one@onload_css-modules.ejs +1 -0
- package/templates/default/src/plugin.ts_all-in-one@onload_docs-showcase.ejs +3 -0
- package/templates/default/src/plugin.ts_demo.ejs +16 -16
- package/templates/default/src/plugin.ts_demo@import_css-modules.ejs +1 -0
- package/templates/default/src/plugin.ts_demo@onload_css-modules.ejs +1 -0
- package/templates/default/src/plugin.ts_standalone.ejs +5 -3
- package/templates/default/src/plugin.ts_standalone@import_css-modules.ejs +1 -0
- package/templates/default/src/plugin.ts_standalone@onload_css-modules.ejs +1 -0
- package/templates/default/src/react-components/{sample-react-component.tsx_dev-utils.ejs → sample-react-component.tsx_framework.ejs} +1 -1
- package/templates/default/src/styles/css-modules.d.ts.ejs +9 -3
- package/templates/default/src/styles/{main.css_dev-utils.ejs → main.css_framework.ejs} +2 -2
- package/templates/default/src/styles/main.module.css.ejs +4 -2
- package/templates/default/src/styles/{main.scss_dev-utils.ejs → main.scss_framework.ejs} +2 -2
- package/templates/default/src/styles/sample-css-module-command.ts.ejs +30 -0
- package/templates/default/src/views/{sample-react-view.tsx_dev-utils.ejs → sample-react-view.tsx_framework.ejs} +1 -1
- package/templates/default/src/wasm/answer.ts_wasm-adapter.ejs +18 -0
- package/templates/default/{tsconfig.json_dev-utils.ejs → tsconfig.json_framework.ejs} +2 -2
- package/templates/default/tsconfig.json_framework@exclude_docs-showcase.ejs +4 -0
- package/templates/default/tsconfig.json_framework@include_wdio-obsidian.ejs +1 -0
- package/templates/default/tsconfig.json_framework@types_toolkit-styles.ejs +2 -0
- package/templates/default/tsconfig.json_framework@types_wasm.ejs +2 -0
- package/templates/default/tsconfig.json_standalone.ejs +1 -1
- package/templates/default/vitest.config.ts_standalone.ejs +11 -2
- package/templates/default/wdio.conf.mts.ejs +5 -0
- package/templates/default/wdio.conf.ts.ejs +4 -4
- package/templates/docs-showcase/files/src/docs/README.md +511 -0
- package/templates/docs-showcase/files/src/docs/entry.d.ts +8 -0
- package/templates/docs-showcase/files/src/docs/entry.js +4 -0
- package/templates/docs-showcase/files/src/docs/host.ts +449 -0
- package/templates/docs-showcase/files/src/docs/index.ts +699 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/communicating-with-editor-extensions/01-intro.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/communicating-with-editor-extensions/03-state-field.ts +32 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/decorations/01-widgets.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/decorations/02-widgets.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/decorations/04-state-fields.ts +57 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/decorations/05-view-plugins.ts +79 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/editor/01-intro.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/editor/03-replace-current-selection.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/markdown-post-processing/01-intro.ts +39 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/state-fields/01-defining-state-effects.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/state-fields/02-defining-a-state-field.ts +35 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/state-fields/04-dispatching-state-effects.ts +34 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/state-management/01-state-changes.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/state-management/02-state-changes.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/editor/view-plugins/01-creating-a-view-plugin.ts +36 -0
- package/templates/docs-showcase/files/src/docs/plugins/events/01-intro.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/anatomy-of-a-plugin/01-intro.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/anatomy-of-a-plugin/02-plugin-lifecycle.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/build-a-plugin/06-step-5-update-the-source-code.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/build-a-plugin/07-step-5-update-the-source-code.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/mobile-development/03-platform-specific-features.ts +25 -0
- package/templates/docs-showcase/files/src/docs/plugins/getting-started/use-react-in-your-plugin/03-configure-your-plugin.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/build-a-bases-view/01-step-1-sample-plugin-setup.ts +18 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/build-a-bases-view/02-step-2-create-and-register-the-bases-vie.ts +46 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/build-a-bases-view/03-step-3-add-configuration.ts +40 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/defer-views/04-accessing-your-customview-without-reveal.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/01-overview.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/02-overview.ts +30 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/03-automatic-resource-management-with-compo.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/04-registerevent-eventref.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/05-registerinterval-id.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/06-registerdomevent-el-event-handler.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/08-understanding-the-lifecycle-of-objects.ts +29 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/manage-plugin-lifecycle/14-componentized-modal-example.ts +37 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/optimize-plugin-load-time/01-option-a-check-if-the-layout-is-ready.ts +29 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/optimize-plugin-load-time/02-option-b-register-the-handler-once-the-l.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/guides/store-secrets/03-step-3-retrieve-the-secret-value.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/01-use-setheading-instead-of-a-h1-h2.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/03-clean-up-resources-when-plugin-unloads.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/04-avoid-accessing-workspace-activeleaf-dir.ts +24 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/05-avoid-accessing-workspace-activeleaf-dir.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/10-avoid-iterating-all-files-to-find-a-file.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/11-avoid-iterating-all-files-to-find-a-file.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/13-use-normalizepath-to-clean-up-user-defin.ts +18 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/15-no-hardcoded-styling.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/16-no-hardcoded-styling.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/17-no-hardcoded-styling.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/18-prefer-async-await-over-promise.ts +24 -0
- package/templates/docs-showcase/files/src/docs/plugins/releasing/plugin-guidelines/19-prefer-async-await-over-promise.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/commands/01-intro.ts +25 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/commands/03-editor-commands.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/commands/05-hot-keys.ts +25 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/context-menus/01-intro.ts +41 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/html-elements/02-create-html-elements-using-createel.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/html-elements/03-create-html-elements-using-createel.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/html-elements/04-style-your-elements.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/html-elements/05-style-your-elements.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/html-elements/06-conditional-styles.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/icons/01-use-icons.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/icons/02-use-icons.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/icons/03-add-your-own-icon.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/01-intro.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/02-intro.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/03-accept-user-input.ts +38 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/04-accept-user-input.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/05-select-from-list-of-suggestions.ts +56 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/06-approximate-string-matching-results.ts +28 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/modals/07-custom-rendering-of-fuzzy-search-results.ts +41 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/ribbon-actions/01-intro.ts +21 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/right-to-left/01-use-fallback-values-when-necessary.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/right-to-left/02-global-selectors.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/right-to-left/03-icons-are-mirrored-automatically.ts +14 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/09-toggle.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/10-text.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/11-textarea.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/12-number.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/13-slider.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/14-dropdown.ts +28 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/15-file.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/16-folder.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/17-color-picker.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/18-validating-input.ts +28 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/23-groups.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/32-cleanup.ts +30 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/33-no-top-level-heading.ts +27 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/34-headings-only-when-there-are-multiple-se.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/36-headings.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/38-moment-format.ts +42 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/39-buttons.ts +26 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/40-extra-button.ts +28 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/settings/41-progress-bar.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/status-bar/01-intro.ts +20 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/status-bar/02-intro.ts +25 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/views/01-intro.ts +39 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/workspace/05-inspect-the-workspace.ts +23 -0
- package/templates/docs-showcase/files/src/docs/plugins/user-interface/workspace/06-leaf-groups.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/vault/02-read-files.ts +37 -0
- package/templates/docs-showcase/files/src/docs/plugins/vault/03-modify-files.ts +19 -0
- package/templates/docs-showcase/files/src/docs/plugins/vault/04-modify-files.ts +22 -0
- package/templates/docs-showcase/files/src/docs/plugins/vault/05-is-it-a-file-or-folder.ts +25 -0
- package/templates/docs-showcase/files/src/docs/reference/css-variables/about-styling/01-for-plugins.ts +14 -0
- package/templates/docs-showcase/files/src/docs/reference/css-variables/about-styling/02-for-themes-and-snippets.ts +14 -0
- package/templates/docs-showcase/files/src/docs/reference/css-variables/publish/site-fonts/01-intro.ts +14 -0
- package/templates/docs-showcase/files/src/docs/reference/typescript-api/command/callback/01-example.ts +24 -0
- package/templates/docs-showcase/files/src/docs/reference/typescript-api/debounce/01-example.ts +24 -0
- package/templates/docs-showcase/files/src/docs/reference/typescript-api/vault/process/01-example.ts +22 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/build-a-theme/05-step-4-change-the-font.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/build-a-theme/06-step-5-change-the-background-color.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/build-a-theme/07-step-6-change-the-input-hover-border-col.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/build-a-theme/08-step-7-discover-css-variables-in-use.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/embed-fonts-and-images-in-your-theme/02-use-data-urls.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/app-themes/theme-guidelines/01-use-css-variables.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/obsidian-publish-themes/best-practices-for-publish-themes/01-small-screens-and-mobile-devices.ts +14 -0
- package/templates/docs-showcase/files/src/docs/themes/obsidian-publish-themes/build-a-publish-theme/01-intro.ts +14 -0
- package/templates/docs-showcase/files/src/docs/tsconfig.json +25 -0
- package/templates/docs-showcase/host/entry.d.ts +8 -0
- package/templates/docs-showcase/host/entry.js +4 -0
- package/templates/docs-showcase/host/host.ts +449 -0
- package/templates/docs-showcase/host/tsconfig.json +25 -0
- package/templates/docs-showcase/snippets.json +3566 -0
- package/templates/official-sample/README.md +9 -0
- package/templates/official-sample/files/.editorconfig.vendored +11 -0
- package/templates/official-sample/files/.github/workflows/lint.yml.vendored +27 -0
- package/templates/official-sample/files/.github/workflows/release.yml.vendored +50 -0
- package/templates/official-sample/files/.gitignore.vendored +22 -0
- package/templates/official-sample/files/.npmrc.vendored +1 -0
- package/templates/official-sample/files/AGENTS.md.vendored +269 -0
- package/templates/official-sample/files/LICENSE.vendored +5 -0
- package/templates/official-sample/files/README.md.vendored +92 -0
- package/templates/official-sample/files/esbuild.config.mjs.vendored +49 -0
- package/templates/official-sample/files/eslint.config.mts.vendored +32 -0
- package/templates/official-sample/files/manifest.json.vendored +11 -0
- package/templates/official-sample/files/package-lock.json.vendored +5053 -0
- package/templates/official-sample/files/package.json.vendored +27 -0
- package/templates/official-sample/files/src/main.ts.vendored +114 -0
- package/templates/official-sample/files/src/settings.ts.vendored +38 -0
- package/templates/official-sample/files/styles.css.vendored +8 -0
- package/templates/official-sample/files/tsconfig.json.vendored +19 -0
- package/templates/official-sample/files/version-bump.mjs.vendored +17 -0
- package/templates/official-sample/files/versions.json.vendored +3 -0
- package/upstreams.json +35 -0
- package/templates/default/dprint.json_dev-utils.ejs +0 -10
- package/templates/default/jest.config.ts@lint-root-dir_dev-utils.ejs +0 -1
- package/templates/default/scripts/build.ts@bundler_cli-bundler@lint-build-styles_dev-utils.ejs +0 -1
- package/templates/default/scripts/build.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +0 -2
- package/templates/default/scripts/build.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +0 -1
- package/templates/default/scripts/build.ts@bundler_esbuild@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/commit.ts_dev-utils.ejs +0 -3
- package/templates/default/scripts/dev.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +0 -2
- package/templates/default/scripts/dev.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +0 -1
- package/templates/default/scripts/dev.ts@bundler_esbuild@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/esbuild-plugins.ts.ejs +0 -20
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-import_vue.ejs +0 -2
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_vue.ejs +0 -1
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_wasm.ejs +0 -13
- package/templates/default/scripts/format-check.ts@tool_dprint@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/format.ts@tool_dprint@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/lint-md-fix.ts_dev-utils.ejs +0 -7
- package/templates/default/scripts/lint-md.ts_dev-utils.ejs +0 -7
- package/templates/default/scripts/lint.ts@tool_eslint@preset_dev-utils.ejs +0 -7
- package/templates/default/scripts/prepare.ts_dev-utils.ejs +0 -3
- package/templates/default/scripts/spellcheck.ts_dev-utils.ejs +0 -7
- package/templates/default/scripts/test-watch.ts_dev-utils@tool_jest.ejs +0 -13
- package/templates/default/scripts/test-watch.ts_dev-utils@tool_vitest.ejs +0 -8
- package/templates/default/scripts/test.ts_dev-utils@tool_jest.ejs +0 -13
- package/templates/default/scripts/test.ts_dev-utils@tool_vitest.ejs +0 -8
- package/templates/default/scripts/vite.config.ts@lint-empty-out-dir_dev-utils.ejs +0 -1
- package/templates/default/scripts/vite.config.ts@lint-out-dir_dev-utils.ejs +0 -1
- package/templates/default/scripts/webpack.config.ts@lint-webpack-default_dev-utils.ejs +0 -1
- package/templates/default/src/main.ts@import_css-modules.ejs +0 -1
- package/templates/default/src/views/sample-preact-view.tsx_dev-utils.ejs +0 -45
- package/templates/default/tsconfig.json_dev-utils@compiler-options_preact.ejs +0 -2
- package/templates/default/tsconfig.json_dev-utils@compiler-options_react.ejs +0 -1
- package/templates/default/tsconfig.json_dev-utils@compiler-options_solid.ejs +0 -2
- /package/templates/default/.github/workflows/{ci.yml@steps_biome-linter.ejs → ci.yml_standalone@steps_biome-linter.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_cspell.ejs → ci.yml_standalone@steps_cspell.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_dprint.ejs → ci.yml_standalone@steps_dprint.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_eslint.ejs → ci.yml_standalone@steps_eslint.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_jest.ejs → ci.yml_standalone@steps_jest.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_markdownlint.ejs → ci.yml_standalone@steps_markdownlint.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_prettier.ejs → ci.yml_standalone@steps_prettier.ejs} +0 -0
- /package/templates/default/.github/workflows/{ci.yml@steps_vitest.ejs → ci.yml_standalone@steps_vitest.ejs} +0 -0
- /package/templates/default/{.gitignore_tailwind.ejs → .gitignore_tailwind-cli.ejs} +0 -0
- /package/templates/default/{CONTRIBUTING.md@scripts_dev-utils.ejs → CONTRIBUTING.md@scripts_framework.ejs} +0 -0
- /package/templates/default/e2e/{sample.spec.ts_obsidian-test@lint-no-void-disable_dev-utils.ejs → sample.spec.ts_obsidian-test@lint-no-void-disable_framework.ejs} +0 -0
- /package/templates/default/e2e/{sample.spec.ts_obsidian-test@lint-no-void-enable_dev-utils.ejs → sample.spec.ts_obsidian-test@lint-no-void-enable_framework.ejs} +0 -0
- /package/templates/default/{eslint.config.mts_dev-utils.ejs → eslint.config.mts_framework.ejs} +0 -0
- /package/templates/default/{jest.config.ts@ts-jest-tsconfig_solid.ejs → jest.config.ts_standalone@ts-jest-tsconfig_solid.ejs} +0 -0
- /package/templates/default/{prettier.config.mjs.ejs → prettier.config.mjs_standalone.ejs} +0 -0
- /package/templates/default/scripts/{commitlint-config.ts.ejs → commitlint-config.ts_standalone.ejs} +0 -0
- /package/templates/default/scripts/{nano-staged-config.ts.ejs → nano-staged-config.ts_inline-nano-staged.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_rollup-json.ejs → rollup.config.ts_framework@import_rollup-json.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_scss.ejs → rollup.config.ts_framework@import_scss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_rollup-json.ejs → rollup.config.ts_framework@unwrap_rollup-json.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_scss.ejs → rollup.config.ts_framework@unwrap_scss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_rollup-babel.ejs → rollup.config.ts_standalone@import_rollup-babel.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_rollup-postcss.ejs → rollup.config.ts_standalone@import_rollup-postcss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_svelte.ejs → rollup.config.ts_standalone@import_svelte.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_vue.ejs → rollup.config.ts_standalone@import_vue.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@import_wasm.ejs → rollup.config.ts_standalone@import_wasm.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_preact.ejs → rollup.config.ts_standalone@post-plugin_preact.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_react.ejs → rollup.config.ts_standalone@post-plugin_react.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_rollup-json.ejs → rollup.config.ts_standalone@post-plugin_rollup-json.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_rollup-postcss.ejs → rollup.config.ts_standalone@post-plugin_rollup-postcss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_scss.ejs → rollup.config.ts_standalone@post-plugin_scss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_solid.ejs → rollup.config.ts_standalone@post-plugin_solid.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@post-plugin_wasm.ejs → rollup.config.ts_standalone@post-plugin_wasm.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@pre-plugin_svelte.ejs → rollup.config.ts_standalone@pre-plugin_svelte.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@pre-plugin_vue.ejs → rollup.config.ts_standalone@pre-plugin_vue.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_rollup-babel.ejs → rollup.config.ts_standalone@unwrap_rollup-babel.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_rollup-postcss.ejs → rollup.config.ts_standalone@unwrap_rollup-postcss.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_svelte.ejs → rollup.config.ts_standalone@unwrap_svelte.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_vue.ejs → rollup.config.ts_standalone@unwrap_vue.ejs} +0 -0
- /package/templates/default/scripts/{rollup.config.ts@unwrap_wasm.ejs → rollup.config.ts_standalone@unwrap_wasm.ejs} +0 -0
- /package/templates/default/scripts/{test-watch.ts_dev-utils.ejs → test-watch.ts_framework.ejs} +0 -0
- /package/templates/default/scripts/{test.ts_dev-utils.ejs → test.ts_framework.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@import_preact.ejs → vite.config.ts_standalone@import_preact.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@import_react.ejs → vite.config.ts_standalone@import_react.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@import_solid.ejs → vite.config.ts_standalone@import_solid.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@import_svelte.ejs → vite.config.ts_standalone@import_svelte.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@import_vue.ejs → vite.config.ts_standalone@import_vue.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@plugin_preact.ejs → vite.config.ts_standalone@plugin_preact.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@plugin_react.ejs → vite.config.ts_standalone@plugin_react.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@plugin_solid.ejs → vite.config.ts_standalone@plugin_solid.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@plugin_svelte.ejs → vite.config.ts_standalone@plugin_svelte.ejs} +0 -0
- /package/templates/default/scripts/{vite.config.ts@plugin_vue.ejs → vite.config.ts_standalone@plugin_vue.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@import_svelte.ejs → webpack.config.ts_standalone@import_svelte.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@import_vue.ejs → webpack.config.ts_standalone@import_vue.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@import_webpack-css-extract.ejs → webpack.config.ts_standalone@import_webpack-css-extract.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@plugin_vue.ejs → webpack.config.ts_standalone@plugin_vue.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@plugin_webpack-css-extract.ejs → webpack.config.ts_standalone@plugin_webpack-css-extract.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_css-modules.ejs → webpack.config.ts_standalone@rule_css-modules.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_css.ejs → webpack.config.ts_standalone@rule_css.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_postcss.ejs → webpack.config.ts_standalone@rule_postcss.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_scss.ejs → webpack.config.ts_standalone@rule_scss.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_solid.ejs → webpack.config.ts_standalone@rule_solid.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_svelte.ejs → webpack.config.ts_standalone@rule_svelte.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_tailwind.ejs → webpack.config.ts_standalone@rule_tailwind.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_vue.ejs → webpack.config.ts_standalone@rule_vue.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@rule_wasm.ejs → webpack.config.ts_standalone@rule_wasm.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@ts-loader-compiler-options_vue.ejs → webpack.config.ts_standalone@ts-loader-compiler-options_vue.ejs} +0 -0
- /package/templates/default/scripts/{webpack.config.ts@ts-loader-options_vue.ejs → webpack.config.ts_standalone@ts-loader-options_vue.ejs} +0 -0
- /package/templates/default/src/{plugin-settings-component.test.ts_enhanced@test-imports_vitest.ejs → plugin-settings-component.test.ts_all-in-one@test-imports_vitest.ejs} +0 -0
- /package/templates/default/src/{plugin-settings.ts_enhanced.ejs → plugin-settings.ts_all-in-one.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_codemirror.ejs → plugin.ts_all-in-one@import2_codemirror.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_i18next.ejs → plugin.ts_all-in-one@import2_i18next.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_lit.ejs → plugin.ts_all-in-one@import2_lit.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_preact.ejs → plugin.ts_all-in-one@import2_preact.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_react.ejs → plugin.ts_all-in-one@import2_react.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_solid.ejs → plugin.ts_all-in-one@import2_solid.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_svelte.ejs → plugin.ts_all-in-one@import2_svelte.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_typesafe-i18n.ejs → plugin.ts_all-in-one@import2_typesafe-i18n.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_vue.ejs → plugin.ts_all-in-one@import2_vue.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@import2_wasm.ejs → plugin.ts_all-in-one@import2_wasm.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@method_ui-view.ejs → plugin.ts_all-in-one@method_ui-view.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_codemirror.ejs → plugin.ts_all-in-one@onload_codemirror.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_i18next.ejs → plugin.ts_all-in-one@onload_i18next.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_lit.ejs → plugin.ts_all-in-one@onload_lit.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_preact.ejs → plugin.ts_all-in-one@onload_preact.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_react.ejs → plugin.ts_all-in-one@onload_react.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_solid.ejs → plugin.ts_all-in-one@onload_solid.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_svelte.ejs → plugin.ts_all-in-one@onload_svelte.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_typesafe-i18n.ejs → plugin.ts_all-in-one@onload_typesafe-i18n.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_vue.ejs → plugin.ts_all-in-one@onload_vue.ejs} +0 -0
- /package/templates/default/src/{plugin.ts_enhanced@onload_wasm.ejs → plugin.ts_all-in-one@onload_wasm.ejs} +0 -0
- /package/templates/default/src/preact-components/{sample-preact-component.tsx_dev-utils.ejs → sample-preact-component.tsx_framework.ejs} +0 -0
- /package/templates/default/src/solid-components/{sample-solid-component.tsx_dev-utils.ejs → sample-solid-component.tsx_framework.ejs} +0 -0
- /package/templates/default/src/styles/{main.css_dev-utils@content_tailwind.ejs → main.css_framework@content_tailwind.ejs} +0 -0
- /package/templates/default/src/views/{sample-lit-view.ts@lint-register-element_dev-utils.ejs → sample-lit-view.ts@lint-register-element_framework.ejs} +0 -0
- /package/templates/default/src/views/{sample-preact-view.tsx_standalone.ejs → sample-preact-view.tsx.ejs} +0 -0
- /package/templates/default/src/views/{sample-solid-view.tsx_dev-utils.ejs → sample-solid-view.tsx_framework.ejs} +0 -0
- /package/templates/default/src/wasm/{answer.ts_esbuild.ejs → answer.ts_wasm-esbuild.ejs} +0 -0
- /package/templates/default/src/wasm/{answer.ts_parcel.ejs → answer.ts_wasm-parcel.ejs} +0 -0
- /package/templates/default/src/wasm/{answer.ts_rollup.ejs → answer.ts_wasm-rollup.ejs} +0 -0
- /package/templates/default/src/wasm/{answer.ts_vite.ejs → answer.ts_wasm-vite.ejs} +0 -0
- /package/templates/default/src/wasm/{answer.ts_webpack.ejs → answer.ts_wasm-webpack.ejs} +0 -0
- /package/templates/default/src/{wasm.d.ts_esbuild.ejs → wasm.d.ts_wasm-esbuild.ejs} +0 -0
- /package/templates/default/src/{wasm.d.ts_parcel.ejs → wasm.d.ts_wasm-parcel.ejs} +0 -0
- /package/templates/default/src/{wasm.d.ts_rollup.ejs → wasm.d.ts_wasm-rollup.ejs} +0 -0
- /package/templates/default/src/{wasm.d.ts_vite.ejs → wasm.d.ts_wasm-vite.ejs} +0 -0
- /package/templates/default/src/{wasm.d.ts_webpack.ejs → wasm.d.ts_wasm-webpack.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@compiler-options_i18next.ejs → tsconfig.json_framework@compiler-options_i18next.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@compiler-options_lit.ejs → tsconfig.json_framework@compiler-options_lit.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@include_has-e2e.ejs → tsconfig.json_framework@include_has-e2e.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@include_svelte.ejs → tsconfig.json_framework@include_svelte.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@include_vue.ejs → tsconfig.json_framework@include_vue.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@types_jest.ejs → tsconfig.json_framework@types_jest.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@types_svelte.ejs → tsconfig.json_framework@types_svelte.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@types_wdio-obsidian.ejs → tsconfig.json_framework@types_wdio-obsidian.ejs} +0 -0
- /package/templates/default/{tsconfig.json_dev-utils@types_with-unofficial.ejs → tsconfig.json_framework@types_with-unofficial.ejs} +0 -0
- /package/templates/default/{vitest.config.ts_dev-utils.ejs → vitest.config.ts_framework.ejs} +0 -0
|
@@ -29,8 +29,9 @@ const EXTERNAL = [
|
|
|
29
29
|
|
|
30
30
|
<%# Each per-answer plugin partial ends its entry with a comma so two of them concatenate into a valid -%>
|
|
31
31
|
<%# list; the last entry of the array must not carry one. Stripped here rather than by making every -%>
|
|
32
|
-
<%# partial know whether it is last. -%>
|
|
33
|
-
|
|
32
|
+
<%# partial know whether it is last. With no entry at all the list is `[]` on one line, which is how -%>
|
|
33
|
+
<%# the formatter writes an empty array. -%>
|
|
34
|
+
<% const plugins = render('plugin').replace(/,(?<Trailing>\s*)$/, '$<Trailing>'); -%>
|
|
34
35
|
export const config = defineConfig({
|
|
35
36
|
build: {
|
|
36
37
|
// An Obsidian release ships `main.js` and `styles.css` and nothing else, so ANY asset vite emits
|
|
@@ -38,7 +39,6 @@ export const config = defineConfig({
|
|
|
38
39
|
// Every one of them is the only shape that survives that: unconditional rather than tied to any
|
|
39
40
|
// Answer, because which assets a `src/` comes to import is not a property of the answers.
|
|
40
41
|
assetsInlineLimit: Number.MAX_SAFE_INTEGER,
|
|
41
|
-
<%- render('lint-empty-out-dir') -%>
|
|
42
42
|
emptyOutDir: false,
|
|
43
43
|
lib: {
|
|
44
44
|
// Obsidian loads a plugin's stylesheet from `styles.css` and nothing else. Vite's lib mode names
|
|
@@ -51,7 +51,6 @@ export const config = defineConfig({
|
|
|
51
51
|
formats: ['cjs']
|
|
52
52
|
},
|
|
53
53
|
minify: isProduction,
|
|
54
|
-
<%- render('lint-out-dir') -%>
|
|
55
54
|
outDir: distFolder,
|
|
56
55
|
rollupOptions: {
|
|
57
56
|
external: EXTERNAL,
|
|
@@ -68,9 +67,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
68
67
|
inlineDynamicImports: true
|
|
69
68
|
}
|
|
70
69
|
},
|
|
71
|
-
sourcemap: isProduction
|
|
70
|
+
sourcemap: !isProduction && 'inline'
|
|
72
71
|
},
|
|
73
|
-
plugins: [
|
|
74
|
-
<%- plugins.replace(/,(?<Trailing>\s*)$/, '$<Trailing>') -%>
|
|
75
|
-
]
|
|
72
|
+
plugins: [<%- plugins === '' ? '' : `\n${plugins} ` -%>]
|
|
76
73
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ObsidianPluginVitestConfigContext } from 'obsidian-dev-
|
|
1
|
+
import type { ObsidianPluginVitestConfigContext } from '@mnaoumov/obsidian-dev-toolkit/test-runners/vitest-config';
|
|
2
2
|
import type { TestProjectConfiguration } from 'vitest/config';
|
|
3
3
|
|
|
4
|
+
import { defineObsidianPluginVitestConfig } from '@mnaoumov/obsidian-dev-toolkit/test-runners/vitest-config';
|
|
4
5
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { defineObsidianPluginVitestConfig } from 'obsidian-dev-utils/script-utils/test-runners/vitest-config';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* The demo-vault button suite. It drives a real desktop Obsidian like the desktop project, but opens a
|
|
@@ -70,6 +70,7 @@ export const config = defineObsidianPluginVitestConfig({
|
|
|
70
70
|
{ find: /^.+\.wasm(?:\?.*)?$/u, replacement: WASM_MODULE_STUB_PATH },
|
|
71
71
|
{ find: /^data-url:.+$/u, replacement: WASM_MODULE_STUB_PATH }
|
|
72
72
|
];
|
|
73
|
+
<%- render('edit-context') -%>
|
|
73
74
|
}
|
|
74
75
|
});
|
|
75
76
|
<%- render('post-config') -%>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Configuration } from 'webpack';
|
|
2
|
+
|
|
3
|
+
<%- sortImports(`import { ObsidianPluginWebpackPlugin } from '@mnaoumov/obsidian-dev-toolkit/bundlers/webpack';
|
|
4
|
+
${render('import')}`) -%>
|
|
5
|
+
<%- _buildOptionsImport -%>
|
|
6
|
+
|
|
7
|
+
// The obsidian-dev-toolkit plugin fills in the entry, the mode, the CommonJS `main.js` in `dist/build` (or `dist/dev`
|
|
8
|
+
// Under `--watch`) with no async chunks, Obsidian's modules as externals and the browser export conditions.
|
|
9
|
+
export const config: Configuration = {
|
|
10
|
+
module: {
|
|
11
|
+
rules: [
|
|
12
|
+
// Strips the types without checking them, which `build:compile` does. `ts-loader` calls TypeScript's
|
|
13
|
+
// JavaScript API, which TypeScript 7 no longer has.
|
|
14
|
+
{ loader: 'esbuild-loader', test: /\.[jt]sx?$/ }<%- render('rule') %>
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
plugins: [new ObsidianPluginWebpackPlugin(<%- _buildOptionsArgument %>)<%- render('plugin') %>],
|
|
18
|
+
resolve: { extensions: ['.ts', '.tsx', '.js'] }
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
, new MiniCssExtractPlugin()
|
package/templates/default/scripts/{webpack.config.ts.ejs → webpack.config.ts_standalone.ejs}
RENAMED
|
@@ -6,7 +6,7 @@ import type { Configuration } from 'webpack';
|
|
|
6
6
|
import { join } from 'node:path';
|
|
7
7
|
import process from 'node:process';
|
|
8
8
|
import TerserPlugin from 'terser-webpack-plugin';
|
|
9
|
-
|
|
9
|
+
import webpack from 'webpack';
|
|
10
10
|
${render('import')}`) -%>
|
|
11
11
|
|
|
12
12
|
const isProduction = process.env['BUILD'] === 'production';
|
|
@@ -47,7 +47,7 @@ const EXTERNAL = [
|
|
|
47
47
|
// From exactly such sources. \`onlyCompileBundledFiles\` keeps ts-loader to the graph webpack
|
|
48
48
|
// Actually pulls in, instead of every file the tsconfig's \`include\` lists -- it was reaching
|
|
49
49
|
// \`webpack.config.ts\` and \`scripts/dev.ts\`, which are no business of the bundle.
|
|
50
|
-
exclude: /node_modules
|
|
50
|
+
exclude: [/node_modules/],
|
|
51
51
|
test: /\\.tsx?$/,
|
|
52
52
|
use: {
|
|
53
53
|
loader: 'ts-loader',
|
|
@@ -71,7 +71,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
71
71
|
${render('plugin')}`;
|
|
72
72
|
-%>
|
|
73
73
|
export const config: Configuration = {
|
|
74
|
-
devtool: isProduction
|
|
74
|
+
devtool: !isProduction && 'inline-source-map',
|
|
75
75
|
entry: './src/main.ts',
|
|
76
76
|
externals: Object.fromEntries(
|
|
77
77
|
EXTERNAL.map((moduleName) => [moduleName, `commonjs2 ${moduleName}`])
|
|
@@ -90,7 +90,7 @@ export const config: Configuration = {
|
|
|
90
90
|
minimizer: [new TerserPlugin({ extractComments: false })]
|
|
91
91
|
},
|
|
92
92
|
output: {
|
|
93
|
-
// An Obsidian release ships `main.js` and nothing beside it, so a dynamic import -- obsidian-
|
|
93
|
+
// An Obsidian release ships `main.js` and nothing beside it, so a dynamic import -- obsidian-lib
|
|
94
94
|
// Has several -- must not become a sibling chunk that `main.js` then loads by name at runtime. This is
|
|
95
95
|
// Webpack's twin of rollup's `inlineDynamicImports`.
|
|
96
96
|
asyncChunks: false,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { registerDemoVaultButtonSuite } from 'obsidian-dev-
|
|
1
|
+
import { registerDemoVaultButtonSuite } from '@mnaoumov/obsidian-dev-toolkit/demo-vault-buttons';
|
|
2
2
|
|
|
3
3
|
// Clicks every `code-button` in `demo-vault/` against a real Obsidian. A button fails at CLICK time -- a
|
|
4
4
|
// Wrong `require('/demoSetup.ts')` path, or an API that changed shape under it -- so no other gate can
|
|
5
5
|
// Catch it: `lint:md` reads the markdown and the coverage suite checks the authoring conventions, and
|
|
6
6
|
// Neither executes anything.
|
|
7
7
|
//
|
|
8
|
-
// It needs the CodeScript Toolkit binary seeded into `demo-vault/.obsidian/plugins/`, which happens the
|
|
8
|
+
// It needs the `CodeScript Toolkit` binary seeded into `demo-vault/.obsidian/plugins/`, which happens the
|
|
9
9
|
// First time you open `demo-vault/` in Obsidian. See CONTRIBUTING.md.
|
|
10
10
|
//
|
|
11
11
|
// Isolation: `npx vitest run --project integration-tests:demo-vault`.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { registerDemoVaultCoverageSuite } from '@mnaoumov/obsidian-dev-toolkit/demo-vault-coverage';
|
|
2
|
+
import { getRootFolder } from '@mnaoumov/typescript-dev-toolkit/root';
|
|
1
3
|
import process from 'node:process';
|
|
2
|
-
import { registerDemoVaultCoverageSuite } from 'obsidian-dev-utils/script-utils/demo-vault-coverage';
|
|
3
|
-
import { getRootFolder } from 'obsidian-dev-utils/script-utils/root';
|
|
4
4
|
|
|
5
5
|
// Keeps the in-repo `demo-vault/` honest WITHOUT launching Obsidian. It enforces the authoring convention
|
|
6
6
|
// Every vault owes its readers: an `# H1` and a prose opener on every note, Markdown links rather than
|
|
7
7
|
// Wikilinks (which do not render on GitHub), no `[Docs]` line, every note reachable from `00 Start.md`,
|
|
8
|
-
// And an `.obsidian/app.json` that commits none of the settings obsidian-dev-
|
|
8
|
+
// And an `.obsidian/app.json` that commits none of the settings obsidian-dev-toolkit injects at release time.
|
|
9
9
|
//
|
|
10
10
|
// `rootFolder` alone is enough for those. Once your settings surface settles, add a reflection spec so the
|
|
11
11
|
// Suite also fails when a setting is documented nowhere in the vault, or when a note names one that no
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { evalInObsidian } from 'obsidian-integration-testing';
|
|
3
|
+
import {
|
|
4
|
+
describe,
|
|
5
|
+
expect,
|
|
6
|
+
it
|
|
7
|
+
} from 'vitest';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The part of Obsidian's command registry this suite reads. It is not in the public API, so it is declared here
|
|
11
|
+
* rather than taken from `obsidian`.
|
|
12
|
+
*/
|
|
13
|
+
interface AppWithCommands {
|
|
14
|
+
readonly commands: CommandRegistry;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface CommandEntry {
|
|
18
|
+
readonly callback?: () => unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface CommandRegistry {
|
|
22
|
+
readonly commands: Readonly<Record<string, CommandEntry | undefined>>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const PLUGIN_ID = '<%= pluginId %>';
|
|
26
|
+
|
|
27
|
+
interface DocsEntryRecord {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly source: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// The entries `src/docs/index.ts` registers, one per runnable code block of the docs, read when the suite is collected
|
|
33
|
+
// So that each block is its own test.
|
|
34
|
+
const ENTRY_PATTERN = /^ {4}id: "(?<Id>[^"]+)",\n(?:.*\n){2} {4}source: "(?<Source>[^"]+)"$/gm;
|
|
35
|
+
const entries: DocsEntryRecord[] = [...readFileSync(new URL('docs/index.ts', import.meta.url), 'utf-8').matchAll(ENTRY_PATTERN)]
|
|
36
|
+
.map((match) => ({ id: match.groups?.['Id'] ?? '', source: match.groups?.['Source'] ?? '' }));
|
|
37
|
+
|
|
38
|
+
// Runs every `Docs:` command in a real Obsidian and fails on any that throws: the showcase compiles by
|
|
39
|
+
// Construction, and this is what proves each block also RUNS against the app it was written for.
|
|
40
|
+
describe('Developer docs showcase', () => {
|
|
41
|
+
it('registers a command for every runnable code block', () => {
|
|
42
|
+
expect(entries.length).toBeGreaterThan(0);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
it(`runs docs-${entry.id}, and links its docs page from what it shows`, async () => {
|
|
47
|
+
const failure = await evalInObsidian({
|
|
48
|
+
async callback({ app, commandId, source }): Promise<string> {
|
|
49
|
+
const untypedApp: unknown = app;
|
|
50
|
+
const command = (untypedApp as AppWithCommands).commands.commands[commandId];
|
|
51
|
+
if (!command?.callback) {
|
|
52
|
+
return `There is no command ${commandId}.`;
|
|
53
|
+
}
|
|
54
|
+
// The previous block's Notices are still up, and two blocks under one heading share a page.
|
|
55
|
+
for (const notice of activeDocument.querySelectorAll('.notice')) {
|
|
56
|
+
notice.remove();
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
await command.callback();
|
|
60
|
+
// A Notice, a modal and a settings tab are each where some command puts the link; nothing else links the docs.
|
|
61
|
+
const links = [...activeDocument.querySelectorAll('a')].map((link) => link.getAttribute('href'));
|
|
62
|
+
return links.includes(source) ? '' : `Nothing ${commandId} showed links ${source}.`;
|
|
63
|
+
} catch (error) {
|
|
64
|
+
return error instanceof Error ? error.message : String(error);
|
|
65
|
+
} finally {
|
|
66
|
+
// A block that opens a modal leaves it open; close it so it does not sit over the next one.
|
|
67
|
+
for (const modalContainer of activeDocument.querySelectorAll('.modal-container')) {
|
|
68
|
+
modalContainer.remove();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
input: { commandId: `${PLUGIN_ID}:docs-${entry.id}`, source: entry.source }
|
|
73
|
+
});
|
|
74
|
+
expect(failure).toBe('');
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
@@ -3,7 +3,7 @@ import type {
|
|
|
3
3
|
Transaction
|
|
4
4
|
} from '@codemirror/state';
|
|
5
5
|
import type { DecorationSet } from '@codemirror/view';
|
|
6
|
-
import type { StateFieldSpec } from 'obsidian-
|
|
6
|
+
import type { StateFieldSpec } from '@mnaoumov/obsidian-lib/codemirror/state-field-spec';
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
RangeSetBuilder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
<%- render('preset') -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './styles/main.css'; // Compiled through Tailwind CSS by the build. Do not delete this line if you want to have a styles.css file in your build output.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './styles/tailwind.generated.css'; // Compiled from ./styles/main.css by `npm run build:styles`. Do not delete this line if you want to have a styles.css file in your build output.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { DataHandler } from 'obsidian-
|
|
2
|
-
import type { PluginEventMap } from 'obsidian-
|
|
1
|
+
import type { DataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
2
|
+
import type { PluginEventMap } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
3
3
|
|
|
4
|
-
import { AsyncEvents } from '
|
|
5
|
-
import { noopAsync } from '
|
|
4
|
+
import { AsyncEvents } from '@mnaoumov/typescript-lib/async-events';
|
|
5
|
+
import { noopAsync } from '@mnaoumov/typescript-lib/function';
|
|
6
6
|
<%- render('test-imports') -%>
|
|
7
7
|
|
|
8
8
|
import { PluginSettingsComponent } from './plugin-settings-component.ts';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { DataHandler } from 'obsidian-
|
|
2
|
-
import type { PluginEventMap } from 'obsidian-
|
|
1
|
+
import type { DataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
2
|
+
import type { PluginEventMap } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
3
3
|
|
|
4
|
-
import { AsyncEvents } from '
|
|
5
|
-
import { noopAsync } from '
|
|
6
|
-
import { strictProxy } from '
|
|
4
|
+
import { AsyncEvents } from '@mnaoumov/typescript-lib/async-events';
|
|
5
|
+
import { noopAsync } from '@mnaoumov/typescript-lib/function';
|
|
6
|
+
import { strictProxy } from '@mnaoumov/typescript-test-toolkit/strict-proxy';
|
|
7
7
|
<%- render('test-imports') -%>
|
|
8
8
|
|
|
9
9
|
import { PluginSettingsComponent } from './plugin-settings-component.ts';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { DataHandler } from 'obsidian-
|
|
2
|
-
import type { PluginEventSource } from 'obsidian-
|
|
1
|
+
import type { DataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
2
|
+
import type { PluginEventSource } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
3
3
|
|
|
4
|
-
import { PluginSettingsComponentBase } from 'obsidian-
|
|
4
|
+
import { PluginSettingsComponentBase } from '@mnaoumov/obsidian-lib/components/plugin-settings-component';
|
|
5
5
|
|
|
6
6
|
import { PluginSettings } from './plugin-settings.ts';
|
|
7
7
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
PluginSettingsComponentBaseOnSaveSettingsParams,
|
|
3
3
|
ReadonlyPluginSettingsState
|
|
4
|
-
} from 'obsidian-
|
|
5
|
-
import type { DataHandler } from 'obsidian-
|
|
6
|
-
import type { PluginEventSource } from 'obsidian-
|
|
7
|
-
import type { MaybeReturn } from '
|
|
8
|
-
import type { GenericObject } from '
|
|
4
|
+
} from '@mnaoumov/obsidian-lib/components/plugin-settings-component';
|
|
5
|
+
import type { DataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
6
|
+
import type { PluginEventSource } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
7
|
+
import type { MaybeReturn } from '@mnaoumov/typescript-lib/type';
|
|
8
|
+
import type { GenericObject } from '@mnaoumov/typescript-lib/type-guards';
|
|
9
9
|
|
|
10
|
+
import { PluginSettingsComponentBase } from '@mnaoumov/obsidian-lib/components/plugin-settings-component';
|
|
10
11
|
import { Notice } from 'obsidian';
|
|
11
|
-
import { PluginSettingsComponentBase } from 'obsidian-dev-utils/obsidian/components/plugin-settings-component';
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
14
|
PluginSettings,
|
|
@@ -54,7 +54,7 @@ export class PluginSettingsComponent extends PluginSettingsComponentBase<PluginS
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
// eslint-disable-next-line
|
|
57
|
+
// eslint-disable-next-line typescript-dev-toolkit/params-options-name-match -- Override must keep the base param type.
|
|
58
58
|
protected override async onSaveSettings(params: PluginSettingsComponentBaseOnSaveSettingsParams<PluginSettings>): Promise<void> {
|
|
59
59
|
await super.onSaveSettings(params);
|
|
60
60
|
if (params.newState.effectiveValues.textSetting === 'baz' && params.oldState.effectiveValues.textSetting === 'bar') {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SettingDefinitionItem } from 'obsidian';
|
|
2
2
|
|
|
3
|
-
import { PluginSettingsTabBase } from 'obsidian-
|
|
3
|
+
import { PluginSettingsTabBase } from '@mnaoumov/obsidian-lib/plugin/plugin-settings-tab';
|
|
4
4
|
|
|
5
5
|
import type { PluginSettings } from './plugin-settings.ts';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { PluginSettingsTabBase } from '@mnaoumov/obsidian-lib/plugin/plugin-settings-tab';
|
|
2
|
+
import { SettingEx } from '@mnaoumov/obsidian-lib/setting-ex';
|
|
1
3
|
import { Notice } from 'obsidian';
|
|
2
|
-
import { PluginSettingsTabBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-settings-tab';
|
|
3
|
-
import { SettingEx } from 'obsidian-dev-utils/obsidian/setting-ex';
|
|
4
4
|
|
|
5
5
|
import type { PluginSettings } from './plugin-settings.ts';
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ import { TypedItem } from './plugin-settings.ts';
|
|
|
9
9
|
/**
|
|
10
10
|
* Built imperatively via `displayLegacy()` rather than declaratively via `getSettingDefinitionItems()`,
|
|
11
11
|
* because this tab exists to show off every `SettingEx` component there is. A real plugin should prefer
|
|
12
|
-
* the declarative form — see the `
|
|
12
|
+
* the declarative form — see the `all-in-one` preset.
|
|
13
13
|
*/
|
|
14
14
|
export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
|
|
15
15
|
public override displayLegacy(): void {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IsoMonth } from 'obsidian-
|
|
2
|
-
import type { IsoWeek } from 'obsidian-
|
|
1
|
+
import type { IsoMonth } from '@mnaoumov/obsidian-lib/setting-components/month-component';
|
|
2
|
+
import type { IsoWeek } from '@mnaoumov/obsidian-lib/setting-components/week-component';
|
|
3
3
|
|
|
4
4
|
import { moment } from 'obsidian';
|
|
5
5
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Editor } from 'obsidian';
|
|
2
2
|
|
|
3
|
+
import { OpenDemoVaultCommandHandler } from '@mnaoumov/obsidian-lib/command-handlers/open-demo-vault-command-handler';
|
|
4
|
+
import { PluginSettingsTabComponent } from '@mnaoumov/obsidian-lib/components/plugin-settings-tab-component';
|
|
5
|
+
import { PluginDataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
6
|
+
import { PluginBase } from '@mnaoumov/obsidian-lib/plugin/plugin';
|
|
7
|
+
import { PluginEventSourceImpl } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
3
8
|
import { Notice } from 'obsidian';
|
|
4
|
-
import { OpenDemoVaultCommandHandler } from 'obsidian-dev-utils/obsidian/command-handlers/open-demo-vault-command-handler';
|
|
5
|
-
import { PluginSettingsTabComponent } from 'obsidian-dev-utils/obsidian/components/plugin-settings-tab-component';
|
|
6
|
-
import { PluginDataHandler } from 'obsidian-dev-utils/obsidian/data-handler';
|
|
7
|
-
import { PluginBase } from 'obsidian-dev-utils/obsidian/plugin/plugin';
|
|
8
|
-
import { PluginEventSourceImpl } from 'obsidian-dev-utils/obsidian/plugin/plugin-event-source';
|
|
9
9
|
|
|
10
10
|
<%# Sorted as one group, not written in order: `import2` is composed from the per-answer partials, whose -%>
|
|
11
11
|
<%# order is the order the questions are registered, and the two settings imports sort into the middle of -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { registerSampleCssModuleCommand } from './styles/sample-css-module-command.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { registerDocsShowcase } from './docs/entry.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
registerSampleCssModuleCommand(this);
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
+
import type { MaybeReturn } from '@mnaoumov/typescript-lib/type';
|
|
1
2
|
import type {
|
|
2
3
|
Editor,
|
|
3
4
|
MarkdownPostProcessorContext,
|
|
5
|
+
Menu,
|
|
4
6
|
MenuItem,
|
|
5
7
|
ObsidianProtocolData,
|
|
6
8
|
TAbstractFile
|
|
7
9
|
} from 'obsidian';
|
|
8
|
-
import type { MaybeReturn } from 'obsidian-dev-utils/type';
|
|
9
10
|
|
|
11
|
+
import { OpenDemoVaultCommandHandler } from '@mnaoumov/obsidian-lib/command-handlers/open-demo-vault-command-handler';
|
|
12
|
+
import { PluginSettingsTabComponent } from '@mnaoumov/obsidian-lib/components/plugin-settings-tab-component';
|
|
13
|
+
import { PluginDataHandler } from '@mnaoumov/obsidian-lib/data-handler';
|
|
14
|
+
import { alert } from '@mnaoumov/obsidian-lib/modals/alert';
|
|
15
|
+
import { confirm } from '@mnaoumov/obsidian-lib/modals/confirm';
|
|
16
|
+
import { prompt } from '@mnaoumov/obsidian-lib/modals/prompt';
|
|
17
|
+
import { selectItem } from '@mnaoumov/obsidian-lib/modals/select-item';
|
|
18
|
+
import { PluginBase } from '@mnaoumov/obsidian-lib/plugin/plugin';
|
|
19
|
+
import { PluginEventSourceImpl } from '@mnaoumov/obsidian-lib/plugin/plugin-event-source';
|
|
20
|
+
import {
|
|
21
|
+
convertAsyncToSync,
|
|
22
|
+
invokeAsyncSafely
|
|
23
|
+
} from '@mnaoumov/typescript-lib/async';
|
|
24
|
+
import { getDebugger } from '@mnaoumov/typescript-lib/debug';
|
|
10
25
|
import {
|
|
11
26
|
MarkdownView,
|
|
12
|
-
Menu,
|
|
13
27
|
Notice
|
|
14
28
|
} from 'obsidian';
|
|
15
|
-
import {
|
|
16
|
-
convertAsyncToSync,
|
|
17
|
-
invokeAsyncSafely
|
|
18
|
-
} from 'obsidian-dev-utils/async';
|
|
19
|
-
import { getDebugger } from 'obsidian-dev-utils/debug';
|
|
20
|
-
import { OpenDemoVaultCommandHandler } from 'obsidian-dev-utils/obsidian/command-handlers/open-demo-vault-command-handler';
|
|
21
|
-
import { PluginSettingsTabComponent } from 'obsidian-dev-utils/obsidian/components/plugin-settings-tab-component';
|
|
22
|
-
import { PluginDataHandler } from 'obsidian-dev-utils/obsidian/data-handler';
|
|
23
|
-
import { alert } from 'obsidian-dev-utils/obsidian/modals/alert';
|
|
24
|
-
import { confirm } from 'obsidian-dev-utils/obsidian/modals/confirm';
|
|
25
|
-
import { prompt } from 'obsidian-dev-utils/obsidian/modals/prompt';
|
|
26
|
-
import { selectItem } from 'obsidian-dev-utils/obsidian/modals/select-item';
|
|
27
|
-
import { PluginBase } from 'obsidian-dev-utils/obsidian/plugin/plugin';
|
|
28
|
-
import { PluginEventSourceImpl } from 'obsidian-dev-utils/obsidian/plugin/plugin-event-source';
|
|
29
29
|
|
|
30
30
|
<%# Sorted as one group, not written in order: the `import` section is composed from the per-answer -%>
|
|
31
31
|
<%# partials, whose order is the order the questions are registered. See `sortImports` in -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { registerSampleCssModuleCommand } from './styles/sample-css-module-command.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
registerSampleCssModuleCommand(this);
|
|
@@ -5,11 +5,13 @@ import {
|
|
|
5
5
|
|
|
6
6
|
import type { Editor } from 'obsidian';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
<%# Sorted as one group: the per-answer partials contribute imports in question-registration order, -%>
|
|
9
|
+
<%# which is not the order the formatter's import sorting wants. See `sortImports` in `src/templates.ts`. -%>
|
|
10
|
+
<%- sortImports(`import {
|
|
9
11
|
DEFAULT_SETTINGS,
|
|
10
|
-
|
|
12
|
+
${pluginShortName}SettingTab
|
|
11
13
|
} from './settings.ts';
|
|
12
|
-
|
|
14
|
+
${render('import')}`) -%>
|
|
13
15
|
|
|
14
16
|
import type { PluginSettings } from './settings.ts';
|
|
15
17
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { registerSampleCssModuleCommand } from './styles/sample-css-module-command.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
registerSampleCssModuleCommand(this);
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
// A CSS module's default export is its scoped class names, keyed by the names the stylesheet uses.
|
|
2
|
+
// TypeScript resolves an import against the FIRST declared pattern among equally long prefixes, so a
|
|
3
|
+
// `declare module '*.css'` read before a `'*.module.css'` one types every CSS module as `any`, and the
|
|
4
|
+
// typed lint rules then reject each use of its class names. It is spelled `*module.css`, without the
|
|
5
|
+
// dot, because the same pattern string would merge with obsidian-dev-toolkit's declaration into a
|
|
6
|
+
// duplicate default export.
|
|
7
|
+
declare module '*module.css' {
|
|
8
|
+
const classNames: Readonly<Record<string, string>>;
|
|
9
|
+
export default classNames;
|
|
4
10
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<%- render('content') -%>
|
|
2
2
|
/**
|
|
3
3
|
* You can remove this file if you don't need any styles
|
|
4
|
-
* See default library styles: https://github.com/mnaoumov/obsidian-
|
|
5
|
-
* See available library css classes: https://github.com/mnaoumov/obsidian-
|
|
4
|
+
* See default library styles: https://github.com/mnaoumov/obsidian-lib/blob/main/src/styles/main.scss
|
|
5
|
+
* See available library css classes: https://github.com/mnaoumov/obsidian-lib/blob/main/src/css-class.ts
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
.<%= pluginId %>.obsidian-dev-utils {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* You can remove this file if you don't need any styles
|
|
3
|
-
* See default library styles: https://github.com/mnaoumov/obsidian-
|
|
4
|
-
* See available library css classes: https://github.com/mnaoumov/obsidian-
|
|
3
|
+
* See default library styles: https://github.com/mnaoumov/obsidian-lib/blob/main/src/styles/main.scss
|
|
4
|
+
* See available library css classes: https://github.com/mnaoumov/obsidian-lib/blob/main/src/css-class.ts
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
.<%= pluginId %>.obsidian-dev-utils {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Plugin } from 'obsidian';
|
|
2
|
+
|
|
3
|
+
import { Notice } from 'obsidian';
|
|
4
|
+
|
|
5
|
+
import classNames from './main.module.css';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Registers the command that shows a notice styled by the sample CSS module.
|
|
9
|
+
*
|
|
10
|
+
* This is not decoration, and deleting it does more than remove a command. A CSS module is a JavaScript
|
|
11
|
+
* module that exports its scoped class names, and a bundler drops an import whose names nothing reads --
|
|
12
|
+
* vite does, together with the CSS -- so with no real use of the class names the build emits no
|
|
13
|
+
* `styles.css` while staying green. Whatever replaces this sample, keep something in `src/` applying a
|
|
14
|
+
* class from the module.
|
|
15
|
+
*/
|
|
16
|
+
export function registerSampleCssModuleCommand(plugin: Plugin): void {
|
|
17
|
+
plugin.addCommand({
|
|
18
|
+
callback: () => {
|
|
19
|
+
showStyledNotice();
|
|
20
|
+
},
|
|
21
|
+
id: 'sample-css-module',
|
|
22
|
+
name: 'Sample CSS module'
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function showStyledNotice(): void {
|
|
27
|
+
new Notice(createFragment((fragment) => {
|
|
28
|
+
fragment.createSpan({ cls: classNames['sampleNotice'] ?? '', text: 'Styled by a CSS module' });
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Root } from 'react-dom/client';
|
|
2
2
|
|
|
3
|
+
import { AppContext } from '@mnaoumov/obsidian-lib/react/app-context';
|
|
3
4
|
import { ItemView } from 'obsidian';
|
|
4
|
-
import { AppContext } from 'obsidian-dev-utils/obsidian/react/app-context';
|
|
5
5
|
import { StrictMode } from 'react';
|
|
6
6
|
import { createRoot } from 'react-dom/client';
|
|
7
7
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import bytes from './module.wasm';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Instantiates the sample WebAssembly module and calls its one export.
|
|
5
|
+
*
|
|
6
|
+
* obsidian-dev-toolkit's `wasm` build option inlines the module into `main.js` and makes its import the module's
|
|
7
|
+
* bytes, whichever bundler builds the plugin.
|
|
8
|
+
*/
|
|
9
|
+
export async function getWasmAnswer(): Promise<number> {
|
|
10
|
+
// `compile` then `instantiate`, rather than `instantiate(bytes)` in one call: `WebAssembly.Module` is
|
|
11
|
+
// Declared as an EMPTY interface, so a `Uint8Array` satisfies it too and the one-call form resolves to
|
|
12
|
+
// The overload taking an already-compiled module -- whose result is a bare `Instance` with no
|
|
13
|
+
// `instance` property on it, which is TS2339 rather than anything about WebAssembly.
|
|
14
|
+
const compiled = await WebAssembly.compile(bytes);
|
|
15
|
+
const instance = await WebAssembly.instantiate(compiled);
|
|
16
|
+
const answer = instance.exports['answer'] as () => number;
|
|
17
|
+
return answer();
|
|
18
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends":
|
|
2
|
+
"extends": <%- _tsconfigExtendsJson %>,
|
|
3
3
|
"compilerOptions": {
|
|
4
4
|
"allowArbitraryExtensions": true,
|
|
5
5
|
"allowImportingTsExtensions": true,
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
<%- render('include') -%>
|
|
31
31
|
"./src/**/*.ts",
|
|
32
32
|
"./src/**/*.tsx"
|
|
33
|
-
]
|
|
33
|
+
]<%- render('exclude') %>
|
|
34
34
|
}
|