API Reference - ootomonaiso/docusaurus_edit GitHub Wiki

API リファレンス

Docusaurus EditorのAPI仕様とコマンドリファレンスです。

コマンドパレット コマンド

基本コマンド

コマンド ID 説明
Docusaurus: Show TreeView docusaurusEditor.showTreeView TreeViewパネルを表示
Docusaurus: Refresh TreeView docusaurusEditor.refreshTreeView TreeViewを再読み込み
Docusaurus: New Document docusaurusEditor.newDocument 新規ドキュメントを作成
Docusaurus: Open Preview docusaurusEditor.openPreview Markdownプレビューを開く

Git 関連コマンド

コマンド ID 説明
Docusaurus: Git Commit docusaurusEditor.gitCommit 変更をコミット
Docusaurus: Git Push docusaurusEditor.gitPush リモートにプッシュ
Docusaurus: Create Pull Request docusaurusEditor.createPullRequest プルリクエストを作成
Docusaurus: Git History docusaurusEditor.gitHistory ファイルの変更履歴を表示

診断・メンテナンス

コマンド ID 説明
Docusaurus: Run Diagnostics docusaurusEditor.runDiagnostics システム診断を実行
Docusaurus: Fix Position Conflicts docusaurusEditor.fixPositionConflicts sidebar_positionの競合を解決
Docusaurus: Validate Project docusaurusEditor.validateProject プロジェクト構造を検証
Docusaurus: Clear Cache docusaurusEditor.clearCache キャッシュをクリア

設定スキーマ

TreeView 設定

interface TreeViewConfig {
  /** TreeViewの自動更新を有効にする */
  autoRefresh: boolean;
  
  /** ファイルサイズを表示する */
  showFileSize: boolean;
  
  /** 最終更新日時を表示する */
  showLastModified: boolean;
  
  /** ソート方法 */
  sortBy: 'position' | 'name' | 'date' | 'size';
  
  /** フォルダをファイルより上に表示する */
  groupFolders: boolean;
  
  /** 除外パターン */
  excludePatterns: string[];
  
  /** 含有パターン */
  includePatterns: string[];
}

Git 設定

interface GitConfig {
  /** 自動コミットを有効にする */
  autoCommit: boolean;
  
  /** コミットメッセージテンプレート */
  commitMessageTemplate: string;
  
  /** コミット後に自動プッシュする */
  pushAfterCommit: boolean;
  
  /** 自動でプルリクエストを作成する */
  createPullRequest: boolean;
  
  /** 自動コミットの遅延時間(ミリ秒) */
  autoCommitDelay: number;
  
  /** GitHub設定 */
  github: {
    enabled: boolean;
    token: string;
    repository: string;
    defaultBranch: string;
  };
}

ファイル作成設定

interface NewFileConfig {
  /** デフォルトテンプレート */
  defaultTemplate: string;
  
  /** 自動位置設定を有効にする */
  autoPositioning: boolean;
  
  /** 説明を含める */
  includeDescription: boolean;
  
  /** テンプレート定義 */
  templates: {
    [templateName: string]: {
      frontmatter: Record<string, any>;
      content: string;
    };
  };
}

VS Code API 統合

TreeDataProvider

class DocusaurusTreeProvider implements vscode.TreeDataProvider<DocusaurusItem> {
  readonly onDidChangeTreeData: vscode.Event<DocusaurusItem | undefined | null | void>;
  
  constructor(private workspaceRoot: string);
  
  getTreeItem(element: DocusaurusItem): vscode.TreeItem;
  getChildren(element?: DocusaurusItem): Thenable<DocusaurusItem[]>;
  refresh(): void;
}

TreeDragAndDropController

class DocusaurusDragAndDropController implements vscode.TreeDragAndDropController<DocusaurusItem> {
  readonly dropMimeTypes: string[];
  readonly dragMimeTypes: string[];
  
  handleDrag(source: DocusaurusItem[], dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): void;
  handleDrop(target: DocusaurusItem | undefined, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): Thenable<void>;
}

イベント API

TreeView イベント

interface TreeViewEvents {
  /** ファイルが選択されたとき */
  onFileSelected: (file: DocusaurusFile) => void;
  
  /** ファイルが移動されたとき */
  onFileMoved: (file: DocusaurusFile, oldPath: string, newPath: string) => void;
  
  /** 新規ファイルが作成されたとき */
  onFileCreated: (file: DocusaurusFile) => void;
  
  /** ファイルが削除されたとき */
  onFileDeleted: (filePath: string) => void;
}

Git イベント

interface GitEvents {
  /** コミット前 */
  onPreCommit: (files: string[]) => Promise<boolean>;
  
  /** コミット後 */
  onPostCommit: (commitHash: string) => void;
  
  /** プッシュ前 */
  onPrePush: (branch: string) => Promise<boolean>;
  
  /** プッシュ後 */
  onPostPush: (branch: string) => void;
}

データ構造

DocusaurusItem

interface DocusaurusItem {
  /** アイテムの種類 */
  type: 'file' | 'folder';
  
  /** 表示名 */
  label: string;
  
  /** ファイルパス */
  path: string;
  
  /** サイドバー位置 */
  sidebarPosition?: number;
  
  /** 子アイテム */
  children?: DocusaurusItem[];
  
  /** ファイルサイズ(バイト) */
  size?: number;
  
  /** 最終更新日時 */
  lastModified?: Date;
  
  /** Git状態 */
  gitStatus?: 'modified' | 'added' | 'deleted' | 'renamed';
}

Frontmatter

interface Frontmatter {
  /** ドキュメントタイトル */
  title: string;
  
  /** サイドバー位置 */
  sidebar_position?: number;
  
  /** 説明文 */
  description?: string;
  
  /** タグ */
  tags?: string[];
  
  /** カスタムプロパティ */
  [key: string]: any;
}

TemplateDefinition

interface TemplateDefinition {
  /** テンプレート名 */
  name: string;
  
  /** 表示名 */
  displayName: string;
  
  /** 説明 */
  description: string;
  
  /** フロントマター */
  frontmatter: Partial<Frontmatter>;
  
  /** コンテンツテンプレート */
  content: string;
  
  /** 変数定義 */
  variables?: {
    [variableName: string]: {
      type: 'string' | 'number' | 'boolean' | 'date';
      default?: any;
      description?: string;
    };
  };
}

カスタムコマンドの作成

コマンドの登録

// extension.ts
export function activate(context: vscode.ExtensionContext) {
  const disposable = vscode.commands.registerCommand(
    'docusaurusEditor.customCommand',
    async (args) => {
      // カスタム処理
    }
  );
  
  context.subscriptions.push(disposable);
}

コマンドの引数

interface CommandArgs {
  /** 対象ファイルパス */
  filePath?: string;
  
  /** 追加オプション */
  options?: {
    silent?: boolean;
    force?: boolean;
  };
}

WebView API

プレビューWebView

interface PreviewWebView {
  /** WebViewパネル */
  panel: vscode.WebviewPanel;
  
  /** コンテンツ更新 */
  updateContent(markdown: string): void;
  
  /** スクロール同期 */
  syncScroll(line: number): void;
  
  /** テーマ変更 */
  setTheme(theme: 'light' | 'dark'): void;
}

WebView メッセージング

interface WebViewMessage {
  command: string;
  data?: any;
}

// WebView → Extension
interface WebViewToExtension {
  'scroll': { line: number };
  'click': { element: string };
  'ready': {};
}

// Extension → WebView
interface ExtensionToWebView {
  'update': { content: string };
  'scroll': { line: number };
  'theme': { theme: string };
}

拡張性

プラグインシステム

interface DocusaurusPlugin {
  /** プラグイン名 */
  name: string;
  
  /** バージョン */
  version: string;
  
  /** アクティベーション */
  activate(context: vscode.ExtensionContext): void;
  
  /** 非アクティベーション */
  deactivate(): void;
  
  /** TreeViewアイテムのカスタマイズ */
  customizeTreeItem?(item: DocusaurusItem): vscode.TreeItem;
  
  /** コンテキストメニューの拡張 */
  contributeContextMenus?(): vscode.Command[];
}

フック システム

interface HookSystem {
  /** フック登録 */
  registerHook<T>(name: string, callback: (data: T) => T | Promise<T>): void;
  
  /** フック実行 */
  executeHook<T>(name: string, data: T): Promise<T>;
  
  /** フック削除 */
  unregisterHook(name: string, callback: Function): void;
}

// 利用可能なフック
type HookNames = 
  | 'file.beforeCreate'
  | 'file.afterCreate'
  | 'file.beforeMove'
  | 'file.afterMove'
  | 'git.beforeCommit'
  | 'git.afterCommit';

診断情報

システム情報

interface SystemInfo {
  /** VS Codeバージョン */
  vscodeVersion: string;
  
  /** 拡張機能バージョン */
  extensionVersion: string;
  
  /** OS情報 */
  os: {
    platform: string;
    version: string;
    architecture: string;
  };
  
  /** Node.jsバージョン */
  nodeVersion: string;
  
  /** Gitバージョン */
  gitVersion?: string;
}

プロジェクト情報

interface ProjectInfo {
  /** プロジェクトパス */
  path: string;
  
  /** ドキュメント数 */
  documentCount: number;
  
  /** フォルダ数 */
  folderCount: number;
  
  /** Git リポジトリ情報 */
  git?: {
    branch: string;
    remotes: string[];
    status: string;
  };
  
  /** Docusaurus設定 */
  docusaurusConfig?: any;
}

エラーコード

コード 説明 対処法
DOC_001 プロジェクトが見つからない docsフォルダの存在確認
DOC_002 権限エラー ファイル権限の確認
DOC_003 Git リポジトリエラー Git初期化の確認
DOC_004 Frontmatter構文エラー YAML構文の修正
DOC_005 テンプレートが見つからない テンプレート設定の確認
DOC_006 ネットワークエラー インターネット接続の確認
DOC_007 設定ファイルエラー settings.jsonの構文確認

パフォーマンス指標

メトリクス

interface PerformanceMetrics {
  /** TreeView読み込み時間 */
  treeViewLoadTime: number;
  
  /** ファイル解析時間 */
  fileParseTime: number;
  
  /** Git操作時間 */
  gitOperationTime: number;
  
  /** メモリ使用量 */
  memoryUsage: number;
  
  /** キャッシュヒット率 */
  cacheHitRate: number;
}

最適化設定

interface OptimizationConfig {
  /** 遅延読み込み */
  lazyLoading: boolean;
  
  /** キャッシュサイズ */
  cacheSize: string;
  
  /** 最大ファイル数 */
  maxFiles: number;
  
  /** デバウンス時間 */
  debounceTime: number;
}
⚠️ **GitHub.com Fallback** ⚠️