diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..73936be --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,71 @@ +# Contributing + +Contributions are welcome! Here's how to get started. + +## Prerequisites + +- [Node.js](https://nodejs.org/) (latest LTS recommended) +- npm (comes with Node.js) + +## Setup + +```bash +git clone https://github.com/mnaoumov/obsidian-advanced-debug-mode.git +cd obsidian-advanced-debug-mode +npm install +``` + +## Development Workflow + +### Build + +```bash +npm run build +``` + +### Dev Mode + +```bash +npm run dev +``` + +### Commit + +This project uses [Conventional Commits](https://www.conventionalcommits.org/). Use the interactive commit prompt: + +```bash +npm run commit +``` + +### Lint + +```bash +npm run lint +npm run lint:fix +``` + +### Format + +```bash +npm run format:check +npm run format +``` + +### Spellcheck + +```bash +npm run spellcheck +``` + +### Test + +```bash +npm run test +npm run test:coverage +``` + +## Pull Requests + +- Base your PR on the `master` branch. +- Ensure all checks pass (`lint`, `format:check`, `spellcheck`, `test`). +- Use [Conventional Commits](https://www.conventionalcommits.org/) for your commit messages. diff --git a/src/Desktop/Dependencies.ts b/src/Desktop/Dependencies.ts deleted file mode 100644 index 42183d0..0000000 --- a/src/Desktop/Dependencies.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { PlatformDependencies } from '../PlatformDependencies.ts'; - -import { LongStackTracesComponentConstructor } from './LongStackTracesComponent.ts'; - -export const platformDependencies: PlatformDependencies = { - LongStackTracesComponentConstructor -}; diff --git a/src/Mobile/Dependencies.ts b/src/Mobile/Dependencies.ts deleted file mode 100644 index 42183d0..0000000 --- a/src/Mobile/Dependencies.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { PlatformDependencies } from '../PlatformDependencies.ts'; - -import { LongStackTracesComponentConstructor } from './LongStackTracesComponent.ts'; - -export const platformDependencies: PlatformDependencies = { - LongStackTracesComponentConstructor -}; diff --git a/src/Commands/ToggleDevToolsButtonCommand.ts b/src/commands/toggle-dev-tools-button-command.ts similarity index 88% rename from src/Commands/ToggleDevToolsButtonCommand.ts rename to src/commands/toggle-dev-tools-button-command.ts index f4299a9..df626fd 100644 --- a/src/Commands/ToggleDevToolsButtonCommand.ts +++ b/src/commands/toggle-dev-tools-button-command.ts @@ -1,8 +1,8 @@ import { CommandInvocationBase } from 'obsidian-dev-utils/obsidian/commands/command-base'; import { NonEditorCommandBase } from 'obsidian-dev-utils/obsidian/commands/non-editor-command-base'; -import type { DevToolsComponent } from '../Components/DevToolsComponent.ts'; -import type { Plugin } from '../Plugin.ts'; +import type { DevToolsComponent } from '../components/dev-tools-component.ts'; +import type { Plugin } from '../plugin.ts'; class ToggleDevToolsButtonCommandInvocation extends CommandInvocationBase { public constructor(plugin: Plugin, private readonly devToolsComponent: DevToolsComponent) { diff --git a/src/Components/DevToolsComponent.ts b/src/components/dev-tools-component.ts similarity index 89% rename from src/Components/DevToolsComponent.ts rename to src/components/dev-tools-component.ts index 6f2184c..3900902 100644 --- a/src/Components/DevToolsComponent.ts +++ b/src/components/dev-tools-component.ts @@ -5,9 +5,9 @@ import { } from 'obsidian'; import { throwExpression } from 'obsidian-dev-utils/error'; -import type { Plugin } from '../Plugin.ts'; +import type { Plugin } from '../plugin.ts'; -import { ToggleDevToolsButtonCommand } from '../Commands/ToggleDevToolsButtonCommand.ts'; +import { ToggleDevToolsButtonCommand } from '../commands/toggle-dev-tools-button-command.ts'; export class DevToolsComponent extends Component { private erudaButton?: HTMLDivElement; diff --git a/src/Components/LongRunningTasksComponent.ts b/src/components/long-running-tasks-component.ts similarity index 98% rename from src/Components/LongRunningTasksComponent.ts rename to src/components/long-running-tasks-component.ts index ed0a089..7ba58c6 100644 --- a/src/Components/LongRunningTasksComponent.ts +++ b/src/components/long-running-tasks-component.ts @@ -7,7 +7,7 @@ import { } from 'obsidian'; import { registerPatch } from 'obsidian-dev-utils/obsidian/monkey-around'; -import type { Plugin } from '../Plugin.ts'; +import type { Plugin } from '../plugin.ts'; const THINGS_HAPPENING_DEBOUNCE_TIMEOUT_IN_MS = 60_000; type QueueFn = FileSystemAdapter['queue']; diff --git a/src/Components/LongStackTracesComponent.ts b/src/components/long-stack-traces-component.ts similarity index 99% rename from src/Components/LongStackTracesComponent.ts rename to src/components/long-stack-traces-component.ts index 4568806..bfbcd86 100644 --- a/src/Components/LongStackTracesComponent.ts +++ b/src/components/long-stack-traces-component.ts @@ -11,9 +11,9 @@ import { import { AllWindowsEventHandler } from 'obsidian-dev-utils/obsidian/components/all-windows-event-handler'; import { registerPatch } from 'obsidian-dev-utils/obsidian/monkey-around'; -import type { Plugin } from '../Plugin.ts'; +import type { Plugin } from '../plugin.ts'; -import { MultiWeakMap } from '../MultiWeakMap.ts'; +import { MultiWeakMap } from '../multi-weak-map.ts'; export type GenericFunction = ((this: unknown, ...args: unknown[]) => unknown) & { originalFn?: GenericFunction }; diff --git a/src/Desktop/AsyncLongStackTracesComponent.ts b/src/desktop/async-long-stack-traces-component.ts similarity index 96% rename from src/Desktop/AsyncLongStackTracesComponent.ts rename to src/desktop/async-long-stack-traces-component.ts index c209e61..0d889cd 100644 --- a/src/Desktop/AsyncLongStackTracesComponent.ts +++ b/src/desktop/async-long-stack-traces-component.ts @@ -8,8 +8,8 @@ import { Component } from 'obsidian'; import type { LongStackTracesComponent, StackFrame -} from '../Components/LongStackTracesComponent.ts'; -import type { Plugin } from '../Plugin.ts'; +} from '../components/long-stack-traces-component.ts'; +import type { Plugin } from '../plugin.ts'; interface AsyncStackFrame { currentError: Error; diff --git a/src/desktop/dependencies.ts b/src/desktop/dependencies.ts new file mode 100644 index 0000000..2d54452 --- /dev/null +++ b/src/desktop/dependencies.ts @@ -0,0 +1,7 @@ +import type { PlatformDependencies } from '../platform-dependencies.ts'; + +import { LongStackTracesComponentConstructor } from './long-stack-traces-component.ts'; + +export const platformDependencies: PlatformDependencies = { + LongStackTracesComponentConstructor +}; diff --git a/src/Desktop/LongStackTracesComponent.ts b/src/desktop/long-stack-traces-component.ts similarity index 85% rename from src/Desktop/LongStackTracesComponent.ts rename to src/desktop/long-stack-traces-component.ts index df3f68b..2eec93d 100644 --- a/src/Desktop/LongStackTracesComponent.ts +++ b/src/desktop/long-stack-traces-component.ts @@ -5,11 +5,11 @@ import { AllWindowsEventHandler } from 'obsidian-dev-utils/obsidian/components/a import type { StackFrame, WindowEx -} from '../Components/LongStackTracesComponent.ts'; -import type { Plugin } from '../Plugin.ts'; +} from '../components/long-stack-traces-component.ts'; +import type { Plugin } from '../plugin.ts'; -import { LongStackTracesComponent } from '../Components/LongStackTracesComponent.ts'; -import { AsyncLongStackTracesComponent } from './AsyncLongStackTracesComponent.ts'; +import { LongStackTracesComponent } from '../components/long-stack-traces-component.ts'; +import { AsyncLongStackTracesComponent } from './async-long-stack-traces-component.ts'; class LongStackTracesComponentImpl extends LongStackTracesComponent { private asyncLongStackTracesHandler?: AsyncLongStackTracesComponent; diff --git a/src/main.ts b/src/main.ts index f9d8c68..d693317 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ import './styles/main.scss'; -import { Plugin } from './Plugin.ts'; +import { Plugin } from './plugin.ts'; export default Plugin; diff --git a/src/mobile/dependencies.ts b/src/mobile/dependencies.ts new file mode 100644 index 0000000..2d54452 --- /dev/null +++ b/src/mobile/dependencies.ts @@ -0,0 +1,7 @@ +import type { PlatformDependencies } from '../platform-dependencies.ts'; + +import { LongStackTracesComponentConstructor } from './long-stack-traces-component.ts'; + +export const platformDependencies: PlatformDependencies = { + LongStackTracesComponentConstructor +}; diff --git a/src/Mobile/LongStackTracesComponent.ts b/src/mobile/long-stack-traces-component.ts similarity index 63% rename from src/Mobile/LongStackTracesComponent.ts rename to src/mobile/long-stack-traces-component.ts index e8d87d4..5112800 100644 --- a/src/Mobile/LongStackTracesComponent.ts +++ b/src/mobile/long-stack-traces-component.ts @@ -1,4 +1,4 @@ -import { LongStackTracesComponent } from '../Components/LongStackTracesComponent.ts'; +import { LongStackTracesComponent } from '../components/long-stack-traces-component.ts'; class LongStackTracesComponentImpl extends LongStackTracesComponent { } diff --git a/src/MultiWeakMap.ts b/src/multi-weak-map.ts similarity index 100% rename from src/MultiWeakMap.ts rename to src/multi-weak-map.ts diff --git a/src/PlatformDependencies.ts b/src/platform-dependencies.ts similarity index 70% rename from src/PlatformDependencies.ts rename to src/platform-dependencies.ts index bf357c3..baaac32 100644 --- a/src/PlatformDependencies.ts +++ b/src/platform-dependencies.ts @@ -2,8 +2,8 @@ import type { Constructor } from 'type-fest'; import { Platform } from 'obsidian'; -import type { LongStackTracesComponent } from './Components/LongStackTracesComponent.ts'; -import type { Plugin } from './Plugin.ts'; +import type { LongStackTracesComponent } from './components/long-stack-traces-component.ts'; +import type { Plugin } from './plugin.ts'; export interface PlatformDependencies { LongStackTracesComponentConstructor: Constructor; @@ -12,8 +12,8 @@ export interface PlatformDependencies { export async function getPlatformDependencies(): Promise { const module = Platform.isMobile // eslint-disable-next-line no-restricted-syntax -- Deliberate, platform-specific code. - ? await import('./Mobile/Dependencies.ts') + ? await import('./mobile/dependencies.ts') // eslint-disable-next-line no-restricted-syntax -- Deliberate, platform-specific code. - : await import('./Desktop/Dependencies.ts'); + : await import('./desktop/dependencies.ts'); return module.platformDependencies; } diff --git a/src/PluginSettingsManager.ts b/src/plugin-settings-manager.ts similarity index 73% rename from src/PluginSettingsManager.ts rename to src/plugin-settings-manager.ts index 2b3828e..0225fdf 100644 --- a/src/PluginSettingsManager.ts +++ b/src/plugin-settings-manager.ts @@ -1,8 +1,8 @@ import { PluginSettingsManagerBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-settings-manager-base'; -import type { PluginTypes } from './PluginTypes.ts'; +import type { PluginTypes } from './plugin-types.ts'; -import { PluginSettings } from './PluginSettings.ts'; +import { PluginSettings } from './plugin-settings.ts'; export class PluginSettingsManager extends PluginSettingsManagerBase { protected override createDefaultSettings(): PluginSettings { diff --git a/src/PluginSettingsTab.ts b/src/plugin-settings-tab.ts similarity index 98% rename from src/PluginSettingsTab.ts rename to src/plugin-settings-tab.ts index e0b2b5d..deb7997 100644 --- a/src/PluginSettingsTab.ts +++ b/src/plugin-settings-tab.ts @@ -10,8 +10,8 @@ import { appendCodeBlock } from 'obsidian-dev-utils/html-element'; import { PluginSettingsTabBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-settings-tab-base'; import { SettingEx } from 'obsidian-dev-utils/obsidian/setting-ex'; -import type { Plugin } from './Plugin.ts'; -import type { PluginTypes } from './PluginTypes.ts'; +import type { Plugin } from './plugin.ts'; +import type { PluginTypes } from './plugin-types.ts'; export class PluginSettingsTab extends PluginSettingsTabBase { public constructor(plugin: Plugin) { diff --git a/src/PluginSettings.ts b/src/plugin-settings.ts similarity index 100% rename from src/PluginSettings.ts rename to src/plugin-settings.ts diff --git a/src/PluginTypes.ts b/src/plugin-types.ts similarity index 54% rename from src/PluginTypes.ts rename to src/plugin-types.ts index 4c2db0e..eedbcc3 100644 --- a/src/PluginTypes.ts +++ b/src/plugin-types.ts @@ -1,9 +1,9 @@ import type { PluginTypesBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-types-base'; -import type { Plugin } from './Plugin.ts'; -import type { PluginSettings } from './PluginSettings.ts'; -import type { PluginSettingsManager } from './PluginSettingsManager.ts'; -import type { PluginSettingsTab } from './PluginSettingsTab.ts'; +import type { Plugin } from './plugin.ts'; +import type { PluginSettings } from './plugin-settings.ts'; +import type { PluginSettingsManager } from './plugin-settings-manager.ts'; +import type { PluginSettingsTab } from './plugin-settings-tab.ts'; export interface PluginTypes extends PluginTypesBase { plugin: Plugin; diff --git a/src/Plugin.ts b/src/plugin.ts similarity index 83% rename from src/Plugin.ts rename to src/plugin.ts index 2a4ce9c..0ac6078 100644 --- a/src/Plugin.ts +++ b/src/plugin.ts @@ -3,14 +3,14 @@ import type { ReadonlyDeep } from 'type-fest'; import { PluginBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-base'; -import type { PluginTypes } from './PluginTypes.ts'; +import type { PluginTypes } from './plugin-types.ts'; -import { DevToolsComponent } from './Components/DevToolsComponent.ts'; -import { LongRunningTasksComponent } from './Components/LongRunningTasksComponent.ts'; -import { LongStackTracesComponent } from './Components/LongStackTracesComponent.ts'; -import { getPlatformDependencies } from './PlatformDependencies.ts'; -import { PluginSettingsManager } from './PluginSettingsManager.ts'; -import { PluginSettingsTab } from './PluginSettingsTab.ts'; +import { DevToolsComponent } from './components/dev-tools-component.ts'; +import { LongRunningTasksComponent } from './components/long-running-tasks-component.ts'; +import { LongStackTracesComponent } from './components/long-stack-traces-component.ts'; +import { getPlatformDependencies } from './platform-dependencies.ts'; +import { PluginSettingsManager } from './plugin-settings-manager.ts'; +import { PluginSettingsTab } from './plugin-settings-tab.ts'; export class Plugin extends PluginBase { private longRunningTasksComponent?: LongRunningTasksComponent;