{"_id":"@basemachina/bm-action-dep-parser","_rev":"5-c4764b5053273531634b68c17d73047b","name":"@basemachina/bm-action-dep-parser","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@basemachina/bm-action-dep-parser","version":"0.0.1","keywords":["basemachina","action","dependency","parser","analyzer","static-analysis"],"author":{"name":"BaseMachina Team"},"license":"MIT","_id":"@basemachina/bm-action-dep-parser@0.0.1","maintainers":[{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},{"name":"timakin","email":"timaki.st@gmail.com"},{"name":"syumai","email":"syumai@gmail.com"},{"name":"taro-28","email":"tarotaro0208@gmail.com"},{"name":"yebis0942.bm","email":"kento.fukuda@basemachina.com"}],"bin":{"bm-action-dep-parser":"dist/cli.js"},"dist":{"shasum":"4acc70e7d316bff91b5f4d2d31e5f1a9ebabd90b","tarball":"https://registry.npmjs.org/@basemachina/bm-action-dep-parser/-/bm-action-dep-parser-0.0.1.tgz","fileCount":33,"integrity":"sha512-k6YJKu5XSwWIwLtShKjf7P2aasCJ4WESC1HKX0enD/EJJlJQzRotBHwIPvn2alQJziZe05nYq5kun+LwipiIpg==","signatures":[{"sig":"MEQCIGXjglwIoxC4WL3nbxD31PDlK7DHbzAN8uesKmCqW/MdAiBctsg0/4F7/VQP5xXQxxqc8KGw1w9ngmCU/PLff2oOcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73569},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.14.0"},"gitHead":"306e3318b642f00e96ca1f3382d432896376ceb2","scripts":{"test":"jest","build":"tsc","start":"ts-node cli.ts","analyze":"ts-node cli.ts","test:e2e":"jest tests/e2e","prepublishOnly":"npm run build"},"_npmUser":{"name":"timakin","email":"timaki.st@gmail.com"},"_npmVersion":"10.9.2","description":"BaseMachina アクション依存関係解析ツール","directories":{},"_nodeVersion":"22.14.0","dependencies":{"glob":"^11.0.1","typescript":"^5.8.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@types/glob":"^8.1.0","@types/jest":"^29.5.14","@types/node":"^22.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bm-action-dep-parser_0.0.1_1745206528660_0.8341059869485641","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@basemachina/bm-action-dep-parser","version":"0.0.2","keywords":["basemachina","action","dependency","parser","analyzer","static-analysis"],"author":{"name":"BaseMachina Team"},"license":"MIT","_id":"@basemachina/bm-action-dep-parser@0.0.2","maintainers":[{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},{"name":"timakin","email":"timaki.st@gmail.com"},{"name":"syumai","email":"syumai@gmail.com"},{"name":"taro-28","email":"tarotaro0208@gmail.com"},{"name":"yebis0942.bm","email":"kento.fukuda@basemachina.com"}],"bin":{"bm-action-dep-parser":"dist/cli.js"},"dist":{"shasum":"91ca387508f0d51c930e2699521de881478d98e9","tarball":"https://registry.npmjs.org/@basemachina/bm-action-dep-parser/-/bm-action-dep-parser-0.0.2.tgz","fileCount":36,"integrity":"sha512-5EWtjskE/7mFQrkpUM5vWzF3HQsHoh0ZodxaDW/60GR4j05yAKbXNJwVXr3CNLo9NyeFWGVII5Dz/PEO3L9YRw==","signatures":[{"sig":"MEYCIQCA41oclIGUu3M/SI39hgMUCi6UgsjoMUH0+ea4wMovEwIhAPKzo8FAEXs0Uw3cVMagKMcpUWbZifvH0Qc++alb0lxt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90020},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.14.0"},"gitHead":"a5ddcd4b1cac35ac79b2822b3c39aa16e26017c9","scripts":{"test":"jest","build":"tsc","start":"ts-node cli.ts","analyze":"ts-node cli.ts","test:e2e":"jest tests/e2e","prepublishOnly":"npm run build"},"_npmUser":{"name":"timakin","email":"timaki.st@gmail.com"},"_npmVersion":"10.9.2","description":"BaseMachina アクション依存関係解析ツール","directories":{},"_nodeVersion":"22.14.0","dependencies":{"glob":"^11.0.1","typescript":"^5.8.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@types/glob":"^8.1.0","@types/jest":"^29.5.14","@types/node":"^22.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bm-action-dep-parser_0.0.2_1745218703026_0.1514039201518258","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@basemachina/bm-action-dep-parser","version":"0.0.3","keywords":["basemachina","action","dependency","parser","analyzer","static-analysis"],"author":{"name":"BaseMachina Team"},"license":"MIT","_id":"@basemachina/bm-action-dep-parser@0.0.3","maintainers":[{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},{"name":"timakin","email":"timaki.st@gmail.com"},{"name":"syumai","email":"syumai@gmail.com"},{"name":"taro-28","email":"tarotaro0208@gmail.com"},{"name":"yebis0942.bm","email":"kento.fukuda@basemachina.com"},{"name":"m-shaka","email":"buddha0818@gmail.com"}],"bin":{"bm-action-dep-parser":"dist/cli.js"},"dist":{"shasum":"a93012a736f522586330f46c05ef4175d96c3515","tarball":"https://registry.npmjs.org/@basemachina/bm-action-dep-parser/-/bm-action-dep-parser-0.0.3.tgz","fileCount":45,"integrity":"sha512-ZLQE+BF9Hfg/28f4OuT1lNOLKXal6tagHKh85opa9C8esHdlMApxRbLARm0ZpImOvHNcvu2cSBuhP4LAdd8oiA==","signatures":[{"sig":"MEQCID+7rI/GjjMk8HN0f4Kc3A3K4pcOulpLeBRohlpmgzfaAiBgeU2Nqw5LYezHkifLGyxWIFkY3I0IVBLFOYyV8C4SDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96571},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.14.0"},"gitHead":"45f10dd1624f8ac763ccdaa5267fd7de1ec82f04","scripts":{"test":"jest","build":"tsc","start":"ts-node cli.ts","analyze":"ts-node cli.ts","test:e2e":"jest tests/e2e","prepublishOnly":"npm run build"},"_npmUser":{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},"_npmVersion":"10.8.2","description":"BaseMachina アクション依存関係解析ツール","directories":{},"_nodeVersion":"20.19.2","dependencies":{"glob":"^11.0.1","typescript":"^5.8.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@types/glob":"^8.1.0","@types/jest":"^29.5.14","@types/node":"^22.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bm-action-dep-parser_0.0.3_1761283647543_0.059293835434161224","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@basemachina/bm-action-dep-parser","version":"0.1.0","description":"BaseMachina アクション依存関係解析ツール","main":"dist/index.js","types":"dist/index.d.ts","bin":{"bm-action-dep-parser":"dist/cli.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","analyze":"ts-node cli.ts","start":"ts-node cli.ts","test":"jest","test:e2e":"jest tests/e2e"},"keywords":["basemachina","action","dependency","parser","analyzer","static-analysis"],"author":{"name":"BaseMachina Team"},"license":"MIT","dependencies":{"glob":"^11.0.1","typescript":"^5.8.3"},"devDependencies":{"@types/glob":"^8.1.0","@types/jest":"^29.5.14","@types/node":"^22.14.1","jest":"^29.7.0","ts-jest":"^29.3.2","ts-node":"^10.9.2"},"engines":{"node":">=22.14.0"},"_id":"@basemachina/bm-action-dep-parser@0.1.0","gitHead":"033d15989b2ecdc5eb5a47ed5de12c58531e637d","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-TehmXxgUEOA4ehjW8B2FppWkqC0d0InegsegLnFwMhOvNdTeu8nVb+RB+C35ULVOk7Z5y8PWQG+tfivqCDeFsw==","shasum":"c7fc8808732a19c8676239f44849105d3d06ff3d","tarball":"https://registry.npmjs.org/@basemachina/bm-action-dep-parser/-/bm-action-dep-parser-0.1.0.tgz","fileCount":51,"unpackedSize":124761,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3JTcXGlesqy10HFa8xxgYfRLkE62lZ8BMDBY4AcqbpQIgGyjybASSgyxxhOpnaGoCvph6bYbTuqKYp2ghhL9z0og="}]},"_npmUser":{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},"directories":{},"maintainers":[{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},{"name":"timakin","email":"timaki.st@gmail.com"},{"name":"syumai","email":"syumai@gmail.com"},{"name":"taro-28","email":"tarotaro0208@gmail.com"},{"name":"yebis0942.bm","email":"kento.fukuda@basemachina.com"},{"name":"m-shaka","email":"buddha0818@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bm-action-dep-parser_0.1.0_1761294517771_0.4667124525518209"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-21T03:35:28.577Z","modified":"2025-10-24T08:28:38.326Z","0.0.1":"2025-04-21T03:35:28.825Z","0.0.2":"2025-04-21T06:58:23.220Z","0.0.3":"2025-10-24T05:27:27.738Z","0.1.0":"2025-10-24T08:28:38.032Z"},"author":{"name":"BaseMachina Team"},"license":"MIT","keywords":["basemachina","action","dependency","parser","analyzer","static-analysis"],"description":"BaseMachina アクション依存関係解析ツール","maintainers":[{"name":"seiji_takahashi_basemachina","email":"seiji.takahashi@basemachina.com"},{"name":"timakin","email":"timaki.st@gmail.com"},{"name":"syumai","email":"syumai@gmail.com"},{"name":"taro-28","email":"tarotaro0208@gmail.com"},{"name":"yebis0942.bm","email":"kento.fukuda@basemachina.com"},{"name":"m-shaka","email":"buddha0818@gmail.com"}],"readme":"# bm-action-dep-parser\n\nBaseMachina アクション依存関係解析ツール\n\n## 概要\n\nこのツールは、BaseMachinaのJavaScriptアクションとビューのコードを静的解析して、各ファイルがどのアクションに依存しているかを特定します。\n\n> **注意**: このプロジェクトは、ビューやJavaScriptアクションが構造化されたディレクトリに配置されていることを想定しています。例えば以下のようなディレクトリ構造を前提としています。\n> 必ずしもこちらと同じにする必要はありませんが、ビューやJavaScriptアクションのエントリーポイントが明確になるようにしてください。\n>\n> ```\n> project/\n> ├── actions/\n> │   └── js/\n> |       └── sampleAction.js\n> └── views/\n>     ├── components/\n>     │   └── SortableForm.tsx\n>     └── pages/\n>         ├── SortableFormPage.tsx\n>         └── paginatedTable/\n>             └── index.tsx\n> ```\n\n## 機能\n\n- 解析対象（JSアクションかビューか）と対象ディレクトリを指定可能\n- 各ファイルごとに依存しているアクションの識別子をリストアップ\n- アクション呼び出し関数（`executeAction`, `useExecuteAction`, `useExecuteActionLazy`）を検出\n- 変数に格納されたアクション識別子も検出\n- JSON形式で結果を出力\n- **ビューのエントリーポイント分析**: ビューのエントリーポイントから直接・間接的に依存しているすべてのアクションを可視化（ビューは常にエントリーポイント分析モード）\n- **カスタムエントリーポイントパターン**: エントリーポイントを柔軟に指定可能（デフォルトは `pages/**/*.{tsx,jsx,ts,js}` と `*.{tsx,jsx,ts,js}` で、ネスト構造とフラット構造の両方に対応）\n- **アクション識別子によるフィルタリング**: 特定のアクションに依存するビューやアクションのみを抽出し、変更影響範囲の分析を効率化\n\n### 出力例\n\n```\n npx @basemachina/bm-action-dep-parser view ./bm-action-dep-parser/tests/fixtures/views \n[\n  {\n    \"entrypoint\": \"pages/SortableFormPage.tsx\",\n    \"dependencies\": {\n      \"direct\": [],\n      \"indirect\": {\n        \"components/SortableForm.tsx\": [\n          \"get-products\",\n          \"update-category\"\n        ]\n      }\n    }\n  },\n  {\n    \"entrypoint\": \"pages/paginatedTable/index.tsx\",\n    \"dependencies\": {\n      \"direct\": [\n        \"get-users\"\n      ],\n      \"indirect\": {}\n    }\n  }\n]\n```\n\n## 使用方法\n\n### CLIツールとして使用\n\n```bash\nnpx @basemachina/bm-action-dep-parser action ./packages/actions/js\nnpx @basemachina/bm-action-dep-parser view ./packages/views\n```\n\n### オプション\n\n```bash\n# カスタムエントリーポイントパターンを指定（ビューの場合のみ）\nnpx @basemachina/bm-action-dep-parser view ./packages/views --entry-point-patterns \"**/*.tsx\"\n\n# 特定のアクションに依存するビューのみを抽出\nnpx @basemachina/bm-action-dep-parser view ./packages/views --filter-action get-users\n\n# 複数のアクションでフィルタリング（OR論理）\nnpx @basemachina/bm-action-dep-parser view ./packages/views --filter-action get-users,update-category\n\n# アクション解析でもフィルタリング可能\nnpx @basemachina/bm-action-dep-parser action ./packages/actions/js --filter-action base-action\n\n# ヘルプを表示\nnpx @basemachina/bm-action-dep-parser --help\n```\n\n### フィルタリング機能の使用例\n\n特定のアクションの変更影響範囲を分析する場合：\n\n```bash\n# get-usersアクションに依存するビューを特定\nnpx @basemachina/bm-action-dep-parser view ./packages/views --filter-action get-users\n\n# 出力: get-usersを直接または間接的に使用するビューのみが表示される\n[\n  {\n    \"entrypoint\": \"pages/UserListPage.tsx\",\n    \"dependencies\": {\n      \"direct\": [\"get-users\"],\n      \"indirect\": {}\n    }\n  }\n]\n```\n\n存在しないアクション識別子を指定した場合、警告メッセージが標準エラー出力に表示されます：\n\n```\nWarning: Action identifier 'nonexistent-action' not found in dependency graph\nNo dependencies found for the specified action identifier(s)\n[]\n```\n\n### ローカルでの実行\n\n```bash\npnpm run analyze action ./packages/actions/js\npnpm run analyze view ./packages/views\n```\n\n## 技術詳細\n\nこのツールは以下のモジュールで構成されています：\n\n1. **index.ts**: メインエントリーポイント\n2. **cli.ts**: コマンドラインインターフェース\n3. **analyze-action-dependencies.ts**: メイン解析ロジック\n4. **lib/file-finder.ts**: ファイル検索モジュール\n5. **lib/code-analyzer.ts**: コード解析モジュール（TypeScript Compiler API使用）\n6. **lib/dependency-extractor.ts**: 依存関係抽出モジュール\n7. **lib/result-formatter.ts**: 結果出力モジュール（JSON形式）\n8. **lib/dependency-graph-builder.ts**: ビュー依存関係グラフ構築モジュール\n9. **lib/action-dependency-graph-builder.ts**: アクション依存関係グラフ構築モジュール\n10. **lib/entry-point-analyzer.ts**: エントリーポイント解析モジュール\n11. **lib/dependency-filter.ts**: 依存関係フィルタリングモジュール（アクション識別子による逆引き検索）\n\nTypeScriptのコンパイラAPIを使用してコードを解析し、アクション呼び出しを検出しています。エントリーポイント分析では、ファイル間の依存関係も解析して、間接的なアクション依存関係も検出します。\n","readmeFilename":"README.md"}