@wtdlee/repomap 0.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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +527 -0
  3. package/dist/analyzers/base-analyzer.d.ts +46 -0
  4. package/dist/analyzers/base-analyzer.d.ts.map +1 -0
  5. package/dist/analyzers/base-analyzer.js +48 -0
  6. package/dist/analyzers/base-analyzer.js.map +1 -0
  7. package/dist/analyzers/dataflow-analyzer.d.ts +30 -0
  8. package/dist/analyzers/dataflow-analyzer.d.ts.map +1 -0
  9. package/dist/analyzers/dataflow-analyzer.js +426 -0
  10. package/dist/analyzers/dataflow-analyzer.js.map +1 -0
  11. package/dist/analyzers/graphql-analyzer.d.ts +23 -0
  12. package/dist/analyzers/graphql-analyzer.d.ts.map +1 -0
  13. package/dist/analyzers/graphql-analyzer.js +387 -0
  14. package/dist/analyzers/graphql-analyzer.js.map +1 -0
  15. package/dist/analyzers/index.d.ts +6 -0
  16. package/dist/analyzers/index.d.ts.map +1 -0
  17. package/dist/analyzers/index.js +6 -0
  18. package/dist/analyzers/index.js.map +1 -0
  19. package/dist/analyzers/pages-analyzer.d.ts +85 -0
  20. package/dist/analyzers/pages-analyzer.d.ts.map +1 -0
  21. package/dist/analyzers/pages-analyzer.js +1696 -0
  22. package/dist/analyzers/pages-analyzer.js.map +1 -0
  23. package/dist/analyzers/rails/index.d.ts +47 -0
  24. package/dist/analyzers/rails/index.d.ts.map +1 -0
  25. package/dist/analyzers/rails/index.js +146 -0
  26. package/dist/analyzers/rails/index.js.map +1 -0
  27. package/dist/analyzers/rails/rails-controller-analyzer.d.ts +83 -0
  28. package/dist/analyzers/rails/rails-controller-analyzer.d.ts.map +1 -0
  29. package/dist/analyzers/rails/rails-controller-analyzer.js +479 -0
  30. package/dist/analyzers/rails/rails-controller-analyzer.js.map +1 -0
  31. package/dist/analyzers/rails/rails-grpc-analyzer.d.ts +45 -0
  32. package/dist/analyzers/rails/rails-grpc-analyzer.d.ts.map +1 -0
  33. package/dist/analyzers/rails/rails-grpc-analyzer.js +263 -0
  34. package/dist/analyzers/rails/rails-grpc-analyzer.js.map +1 -0
  35. package/dist/analyzers/rails/rails-model-analyzer.d.ts +89 -0
  36. package/dist/analyzers/rails/rails-model-analyzer.d.ts.map +1 -0
  37. package/dist/analyzers/rails/rails-model-analyzer.js +494 -0
  38. package/dist/analyzers/rails/rails-model-analyzer.js.map +1 -0
  39. package/dist/analyzers/rails/rails-react-analyzer.d.ts +42 -0
  40. package/dist/analyzers/rails/rails-react-analyzer.d.ts.map +1 -0
  41. package/dist/analyzers/rails/rails-react-analyzer.js +530 -0
  42. package/dist/analyzers/rails/rails-react-analyzer.js.map +1 -0
  43. package/dist/analyzers/rails/rails-routes-analyzer.d.ts +63 -0
  44. package/dist/analyzers/rails/rails-routes-analyzer.d.ts.map +1 -0
  45. package/dist/analyzers/rails/rails-routes-analyzer.js +541 -0
  46. package/dist/analyzers/rails/rails-routes-analyzer.js.map +1 -0
  47. package/dist/analyzers/rails/rails-view-analyzer.d.ts +50 -0
  48. package/dist/analyzers/rails/rails-view-analyzer.d.ts.map +1 -0
  49. package/dist/analyzers/rails/rails-view-analyzer.js +387 -0
  50. package/dist/analyzers/rails/rails-view-analyzer.js.map +1 -0
  51. package/dist/analyzers/rails/ruby-parser.d.ts +64 -0
  52. package/dist/analyzers/rails/ruby-parser.d.ts.map +1 -0
  53. package/dist/analyzers/rails/ruby-parser.js +213 -0
  54. package/dist/analyzers/rails/ruby-parser.js.map +1 -0
  55. package/dist/analyzers/rest-api-analyzer.d.ts +66 -0
  56. package/dist/analyzers/rest-api-analyzer.d.ts.map +1 -0
  57. package/dist/analyzers/rest-api-analyzer.js +480 -0
  58. package/dist/analyzers/rest-api-analyzer.js.map +1 -0
  59. package/dist/cli.d.ts +3 -0
  60. package/dist/cli.d.ts.map +1 -0
  61. package/dist/cli.js +550 -0
  62. package/dist/cli.js.map +1 -0
  63. package/dist/core/cache.d.ts +48 -0
  64. package/dist/core/cache.d.ts.map +1 -0
  65. package/dist/core/cache.js +152 -0
  66. package/dist/core/cache.js.map +1 -0
  67. package/dist/core/engine.d.ts +47 -0
  68. package/dist/core/engine.d.ts.map +1 -0
  69. package/dist/core/engine.js +320 -0
  70. package/dist/core/engine.js.map +1 -0
  71. package/dist/core/index.d.ts +3 -0
  72. package/dist/core/index.d.ts.map +1 -0
  73. package/dist/core/index.js +3 -0
  74. package/dist/core/index.js.map +1 -0
  75. package/dist/generators/assets/common.css +187 -0
  76. package/dist/generators/assets/docs.css +363 -0
  77. package/dist/generators/assets/page-map.css +305 -0
  78. package/dist/generators/assets/rails-map.css +473 -0
  79. package/dist/generators/index.d.ts +4 -0
  80. package/dist/generators/index.d.ts.map +1 -0
  81. package/dist/generators/index.js +4 -0
  82. package/dist/generators/index.js.map +1 -0
  83. package/dist/generators/markdown-generator.d.ts +26 -0
  84. package/dist/generators/markdown-generator.d.ts.map +1 -0
  85. package/dist/generators/markdown-generator.js +783 -0
  86. package/dist/generators/markdown-generator.js.map +1 -0
  87. package/dist/generators/mermaid-generator.d.ts +36 -0
  88. package/dist/generators/mermaid-generator.d.ts.map +1 -0
  89. package/dist/generators/mermaid-generator.js +365 -0
  90. package/dist/generators/mermaid-generator.js.map +1 -0
  91. package/dist/generators/page-map-generator.d.ts +23 -0
  92. package/dist/generators/page-map-generator.d.ts.map +1 -0
  93. package/dist/generators/page-map-generator.js +3563 -0
  94. package/dist/generators/page-map-generator.js.map +1 -0
  95. package/dist/generators/rails-map-generator.d.ts +22 -0
  96. package/dist/generators/rails-map-generator.d.ts.map +1 -0
  97. package/dist/generators/rails-map-generator.js +909 -0
  98. package/dist/generators/rails-map-generator.js.map +1 -0
  99. package/dist/index.d.ts +11 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +12 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/server/doc-server.d.ts +31 -0
  104. package/dist/server/doc-server.d.ts.map +1 -0
  105. package/dist/server/doc-server.js +1233 -0
  106. package/dist/server/doc-server.js.map +1 -0
  107. package/dist/server/index.d.ts +2 -0
  108. package/dist/server/index.d.ts.map +1 -0
  109. package/dist/server/index.js +2 -0
  110. package/dist/server/index.js.map +1 -0
  111. package/dist/types.d.ts +294 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +6 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/utils/env-detector.d.ts +32 -0
  116. package/dist/utils/env-detector.d.ts.map +1 -0
  117. package/dist/utils/env-detector.js +189 -0
  118. package/dist/utils/env-detector.js.map +1 -0
  119. package/dist/utils/parallel.d.ts +24 -0
  120. package/dist/utils/parallel.d.ts.map +1 -0
  121. package/dist/utils/parallel.js +71 -0
  122. package/dist/utils/parallel.js.map +1 -0
  123. package/package.json +131 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby-parser.js","sourceRoot":"","sources":["../../../src/analyzers/rails/ruby-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAQ,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAIpC,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAI,YAAY,GAAoB,IAAI,CAAC;AACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEtB,0CAA0C;IAC1C,MAAM,aAAa,GAAG;QACpB,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0DAA0D,CAAC;QACpF,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mEAAmE,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAChF,CAAC;IAEF,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,MAAM,cAAc,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAgB,EAAE,IAAY;IACtD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,KAAe;IAChE,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,SAAiB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,IAAY;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,IAAY;IAC9D,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAoB;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,SAAiB;IAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAqB;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAqB;IACjD,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjC,sEAAsE;IACtE,MAAM,YAAY,GAChB,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC;QAC1C,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACrD,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAsB;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,IACE,KAAK;YACL,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY;gBAC1B,KAAK,CAAC,IAAI,KAAK,mBAAmB;gBAClC,KAAK,CAAC,IAAI,KAAK,oBAAoB;gBACnC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,EACnC,CAAC;YACD,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;YAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { BaseAnalyzer } from './base-analyzer.js';
2
+ import type { AnalysisResult, RepositoryConfig } from '../types.js';
3
+ /**
4
+ * Analyzer for REST API calls (fetch, axios, useSWR, etc.)
5
+ * REST API呼び出しの分析器
6
+ */
7
+ export declare class RestApiAnalyzer extends BaseAnalyzer {
8
+ private project;
9
+ private apiCallCounter;
10
+ constructor(config: RepositoryConfig);
11
+ getName(): string;
12
+ analyze(): Promise<Partial<AnalysisResult>>;
13
+ /**
14
+ * Find fetch() calls
15
+ */
16
+ private findFetchCalls;
17
+ /**
18
+ * Find axios calls (axios.get, axios.post, etc.)
19
+ */
20
+ private findAxiosCalls;
21
+ /**
22
+ * Find useSWR calls
23
+ */
24
+ private findSwrCalls;
25
+ /**
26
+ * Extract API call info from fetch()
27
+ */
28
+ private extractFetchCall;
29
+ /**
30
+ * Extract API call info from axios.method()
31
+ */
32
+ private extractAxiosCall;
33
+ /**
34
+ * Extract API call info from axios() direct call
35
+ */
36
+ private extractAxiosDirectCall;
37
+ /**
38
+ * Extract API call info from useSWR()
39
+ */
40
+ private extractSwrCall;
41
+ /**
42
+ * Get the name of the containing function/component
43
+ */
44
+ private getContainingFunctionName;
45
+ /**
46
+ * Extract URL from argument (handles literals, variables, function calls)
47
+ */
48
+ private extractUrlFromArg;
49
+ /**
50
+ * Clean string literal (remove quotes)
51
+ */
52
+ private cleanStringLiteral;
53
+ /**
54
+ * Check if URL looks like an API endpoint
55
+ */
56
+ private isApiUrl;
57
+ /**
58
+ * Categorize API by URL pattern
59
+ */
60
+ private categorizeApi;
61
+ /**
62
+ * Normalize HTTP method
63
+ */
64
+ private normalizeMethod;
65
+ }
66
+ //# sourceMappingURL=rest-api-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-api-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/rest-api-analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAW,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7E;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,gBAAgB;IAQpC,OAAO,IAAI,MAAM;IAIX,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAsDjD;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6CxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4DtB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiCjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,QAAQ;IA0ChB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,CAAC,eAAe;CAOxB"}
@@ -0,0 +1,480 @@
1
+ import { Project, SyntaxKind, Node } from 'ts-morph';
2
+ import fg from 'fast-glob';
3
+ import * as path from 'path';
4
+ import { BaseAnalyzer } from './base-analyzer.js';
5
+ import { parallelMapSafe } from '../utils/parallel.js';
6
+ /**
7
+ * Analyzer for REST API calls (fetch, axios, useSWR, etc.)
8
+ * REST API呼び出しの分析器
9
+ */
10
+ export class RestApiAnalyzer extends BaseAnalyzer {
11
+ project;
12
+ apiCallCounter = 0;
13
+ constructor(config) {
14
+ super(config);
15
+ this.project = new Project({
16
+ tsConfigFilePath: this.resolvePath('tsconfig.json'),
17
+ skipAddingFilesFromTsConfig: true,
18
+ });
19
+ }
20
+ getName() {
21
+ return 'RestApiAnalyzer';
22
+ }
23
+ async analyze() {
24
+ this.log('Starting REST API analysis...');
25
+ const tsFiles = await fg(['**/*.ts', '**/*.tsx'], {
26
+ cwd: this.basePath,
27
+ ignore: [
28
+ '**/node_modules/**',
29
+ '**/.next/**',
30
+ '**/__tests__/**',
31
+ '**/*.test.*',
32
+ '**/*.spec.*',
33
+ '**/*.stories.*',
34
+ '**/__generated__/**',
35
+ '**/dist/**',
36
+ '**/build/**',
37
+ ],
38
+ absolute: true,
39
+ });
40
+ // Add all files to project first
41
+ const sourceFiles = new Map();
42
+ for (const filePath of tsFiles) {
43
+ try {
44
+ sourceFiles.set(filePath, this.project.addSourceFileAtPath(filePath));
45
+ }
46
+ catch {
47
+ // Skip files that can't be added
48
+ }
49
+ }
50
+ // Analyze files in parallel
51
+ const results = await parallelMapSafe(Array.from(sourceFiles.entries()), async ([filePath, sourceFile]) => {
52
+ const relativePath = path.relative(this.basePath, filePath);
53
+ const calls = [];
54
+ // Find fetch() calls
55
+ calls.push(...this.findFetchCalls(sourceFile, relativePath));
56
+ // Find axios calls
57
+ calls.push(...this.findAxiosCalls(sourceFile, relativePath));
58
+ // Find useSWR calls
59
+ calls.push(...this.findSwrCalls(sourceFile, relativePath));
60
+ return calls;
61
+ }, 8);
62
+ const apiCalls = results.flat();
63
+ this.log(`Found ${apiCalls.length} REST API calls`);
64
+ return { apiCalls };
65
+ }
66
+ /**
67
+ * Find fetch() calls
68
+ */
69
+ findFetchCalls(sourceFile, filePath) {
70
+ const calls = [];
71
+ const callExpressions = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression);
72
+ for (const call of callExpressions) {
73
+ try {
74
+ const expression = call.getExpression();
75
+ const expressionText = expression.getText();
76
+ // Match fetch() or window.fetch()
77
+ if (expressionText === 'fetch' || expressionText === 'window.fetch') {
78
+ const apiCall = this.extractFetchCall(call, filePath);
79
+ if (apiCall) {
80
+ calls.push(apiCall);
81
+ }
82
+ }
83
+ }
84
+ catch {
85
+ // Skip parsing errors
86
+ }
87
+ }
88
+ return calls;
89
+ }
90
+ /**
91
+ * Find axios calls (axios.get, axios.post, etc.)
92
+ */
93
+ findAxiosCalls(sourceFile, filePath) {
94
+ const calls = [];
95
+ const callExpressions = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression);
96
+ for (const call of callExpressions) {
97
+ try {
98
+ const expression = call.getExpression();
99
+ const expressionText = expression.getText();
100
+ // Match axios.get, axios.post, axios.put, axios.delete, axios.patch
101
+ const axiosMatch = expressionText.match(/^axios\.(get|post|put|delete|patch)$/i);
102
+ if (axiosMatch) {
103
+ const apiCall = this.extractAxiosCall(call, filePath, axiosMatch[1].toUpperCase());
104
+ if (apiCall) {
105
+ calls.push(apiCall);
106
+ }
107
+ }
108
+ // Match axios() direct call
109
+ if (expressionText === 'axios') {
110
+ const apiCall = this.extractAxiosDirectCall(call, filePath);
111
+ if (apiCall) {
112
+ calls.push(apiCall);
113
+ }
114
+ }
115
+ }
116
+ catch {
117
+ // Skip parsing errors
118
+ }
119
+ }
120
+ return calls;
121
+ }
122
+ /**
123
+ * Find useSWR calls
124
+ */
125
+ findSwrCalls(sourceFile, filePath) {
126
+ const calls = [];
127
+ const callExpressions = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression);
128
+ for (const call of callExpressions) {
129
+ try {
130
+ const expression = call.getExpression();
131
+ const expressionText = expression.getText();
132
+ // Match useSWR
133
+ if (expressionText === 'useSWR' || expressionText === 'useSWRImmutable') {
134
+ const apiCall = this.extractSwrCall(call, filePath);
135
+ if (apiCall) {
136
+ calls.push(apiCall);
137
+ }
138
+ }
139
+ }
140
+ catch {
141
+ // Skip parsing errors
142
+ }
143
+ }
144
+ return calls;
145
+ }
146
+ /**
147
+ * Extract API call info from fetch()
148
+ */
149
+ extractFetchCall(call, filePath) {
150
+ const args = call.getArguments();
151
+ if (args.length === 0)
152
+ return null;
153
+ const urlArg = args[0].getText();
154
+ const urlInfo = this.extractUrlFromArg(urlArg);
155
+ if (!urlInfo.url)
156
+ return null;
157
+ // Skip non-API URLs only if we have a concrete URL (not a placeholder)
158
+ if (!urlInfo.isPlaceholder && !this.isApiUrl(urlInfo.url))
159
+ return null;
160
+ let method = 'GET';
161
+ let requiresAuth = false;
162
+ // Check options argument for method
163
+ if (args.length > 1) {
164
+ const optionsText = args[1].getText();
165
+ const methodMatch = optionsText.match(/method:\s*["'](\w+)["']/i);
166
+ if (methodMatch) {
167
+ method = this.normalizeMethod(methodMatch[1]);
168
+ }
169
+ requiresAuth =
170
+ optionsText.includes('credentials') ||
171
+ optionsText.includes('Authorization') ||
172
+ optionsText.includes('withCredentials');
173
+ }
174
+ const containingFunction = this.getContainingFunctionName(call);
175
+ const line = call.getStartLineNumber();
176
+ return {
177
+ id: `api-${++this.apiCallCounter}`,
178
+ method,
179
+ url: urlInfo.url,
180
+ callType: 'fetch',
181
+ filePath,
182
+ line,
183
+ containingFunction,
184
+ usedIn: [],
185
+ requiresAuth,
186
+ category: this.categorizeApi(urlInfo.url),
187
+ };
188
+ }
189
+ /**
190
+ * Extract API call info from axios.method()
191
+ */
192
+ extractAxiosCall(call, filePath, method) {
193
+ const args = call.getArguments();
194
+ if (args.length === 0)
195
+ return null;
196
+ const urlArg = args[0].getText();
197
+ const urlInfo = this.extractUrlFromArg(urlArg);
198
+ if (!urlInfo.url)
199
+ return null;
200
+ let requiresAuth = false;
201
+ if (args.length > 1) {
202
+ const optionsText = args[args.length - 1].getText();
203
+ requiresAuth =
204
+ optionsText.includes('withCredentials') || optionsText.includes('Authorization');
205
+ }
206
+ const containingFunction = this.getContainingFunctionName(call);
207
+ const line = call.getStartLineNumber();
208
+ return {
209
+ id: `api-${++this.apiCallCounter}`,
210
+ method: this.normalizeMethod(method),
211
+ url: urlInfo.url,
212
+ callType: 'axios',
213
+ filePath,
214
+ line,
215
+ containingFunction,
216
+ usedIn: [],
217
+ requiresAuth,
218
+ category: this.categorizeApi(urlInfo.url),
219
+ };
220
+ }
221
+ /**
222
+ * Extract API call info from axios() direct call
223
+ */
224
+ extractAxiosDirectCall(call, filePath) {
225
+ const args = call.getArguments();
226
+ if (args.length === 0)
227
+ return null;
228
+ const configText = args[0].getText();
229
+ const urlMatch = configText.match(/url:\s*["'`]([^"'`]+)["'`]/);
230
+ const methodMatch = configText.match(/method:\s*["'](\w+)["']/i);
231
+ if (!urlMatch)
232
+ return null;
233
+ const url = urlMatch[1];
234
+ const method = methodMatch ? this.normalizeMethod(methodMatch[1]) : 'GET';
235
+ const requiresAuth = configText.includes('withCredentials') || configText.includes('Authorization');
236
+ const containingFunction = this.getContainingFunctionName(call);
237
+ const line = call.getStartLineNumber();
238
+ return {
239
+ id: `api-${++this.apiCallCounter}`,
240
+ method,
241
+ url,
242
+ callType: 'axios',
243
+ filePath,
244
+ line,
245
+ containingFunction,
246
+ usedIn: [],
247
+ requiresAuth,
248
+ category: this.categorizeApi(url),
249
+ };
250
+ }
251
+ /**
252
+ * Extract API call info from useSWR()
253
+ */
254
+ extractSwrCall(call, filePath) {
255
+ const args = call.getArguments();
256
+ if (args.length === 0)
257
+ return null;
258
+ const keyArg = args[0].getText();
259
+ let url = null;
260
+ // String literal: useSWR("/api/users", fetcher)
261
+ if (keyArg.startsWith('"') || keyArg.startsWith("'") || keyArg.startsWith('`')) {
262
+ url = this.cleanStringLiteral(keyArg);
263
+ }
264
+ // Conditional: useSWR(condition ? "/api/users" : null, fetcher)
265
+ else if (keyArg.includes('?') && keyArg.includes(':')) {
266
+ // Try to find URL in true branch
267
+ let match = keyArg.match(/\?\s*["'`]([^"'`]+)["'`]/);
268
+ if (match) {
269
+ url = match[1];
270
+ }
271
+ else {
272
+ // Try to find URL in false branch
273
+ match = keyArg.match(/:\s*["'`]([^"'`]+)["'`]/);
274
+ if (match) {
275
+ url = match[1];
276
+ }
277
+ }
278
+ // If still no URL, check for template literals in the condition
279
+ if (!url) {
280
+ match = keyArg.match(/\?\s*`([^`]+)`/);
281
+ if (match) {
282
+ url = match[1].replace(/\$\{[^}]+\}/g, ':param');
283
+ }
284
+ }
285
+ }
286
+ // Function call pattern
287
+ else {
288
+ const urlInfo = this.extractUrlFromArg(keyArg);
289
+ if (urlInfo.url && !keyArg.includes('null') && !keyArg.includes('undefined')) {
290
+ url = urlInfo.url;
291
+ }
292
+ }
293
+ if (!url)
294
+ return null;
295
+ const containingFunction = this.getContainingFunctionName(call);
296
+ const line = call.getStartLineNumber();
297
+ return {
298
+ id: `api-${++this.apiCallCounter}`,
299
+ method: 'GET', // SWR is typically for GET requests
300
+ url,
301
+ callType: 'useSWR',
302
+ filePath,
303
+ line,
304
+ containingFunction,
305
+ usedIn: [],
306
+ requiresAuth: false,
307
+ category: this.categorizeApi(url),
308
+ };
309
+ }
310
+ /**
311
+ * Get the name of the containing function/component
312
+ */
313
+ getContainingFunctionName(node) {
314
+ let current = node;
315
+ while (current) {
316
+ // Function declaration
317
+ if (Node.isFunctionDeclaration(current)) {
318
+ return current.getName() || 'anonymous';
319
+ }
320
+ // Variable declaration with arrow function
321
+ if (Node.isVariableDeclaration(current)) {
322
+ return current.getName();
323
+ }
324
+ // Method declaration
325
+ if (Node.isMethodDeclaration(current)) {
326
+ return current.getName();
327
+ }
328
+ // Arrow function in variable
329
+ if (Node.isArrowFunction(current)) {
330
+ const parent = current.getParent();
331
+ if (parent && Node.isVariableDeclaration(parent)) {
332
+ return parent.getName();
333
+ }
334
+ }
335
+ current = current.getParent();
336
+ }
337
+ return 'unknown';
338
+ }
339
+ /**
340
+ * Extract URL from argument (handles literals, variables, function calls)
341
+ */
342
+ extractUrlFromArg(argText) {
343
+ // String literal: "url" or 'url' or `url`
344
+ if (/^["'`]/.test(argText)) {
345
+ const url = this.cleanStringLiteral(argText);
346
+ return { url, isPlaceholder: false };
347
+ }
348
+ // Function call: someUrlBuilder("/path") or buildUrl(`/path`)
349
+ const funcCallMatch = argText.match(/^(\w+)\s*\(\s*["'`]([^"'`]+)["'`]/);
350
+ if (funcCallMatch) {
351
+ return { url: `[${funcCallMatch[1]}] ${funcCallMatch[2]}`, isPlaceholder: true };
352
+ }
353
+ // Function call with template literal: someFunc(`/path/${var}`)
354
+ const funcTemplateMatch = argText.match(/^(\w+)\s*\(\s*`([^`]+)`/);
355
+ if (funcTemplateMatch) {
356
+ const path = funcTemplateMatch[2].replace(/\$\{[^}]+\}/g, ':param');
357
+ return { url: `[${funcTemplateMatch[1]}] ${path}`, isPlaceholder: true };
358
+ }
359
+ // Variable reference: use as placeholder
360
+ if (/^\w+(\.\w+)*$/.test(argText)) {
361
+ return { url: `[${argText}]`, isPlaceholder: true };
362
+ }
363
+ // Property access: obj.url
364
+ if (argText.includes('.')) {
365
+ return { url: `[${argText}]`, isPlaceholder: true };
366
+ }
367
+ return { url: null, isPlaceholder: false };
368
+ }
369
+ /**
370
+ * Clean string literal (remove quotes)
371
+ */
372
+ cleanStringLiteral(value) {
373
+ // Remove quotes and template literal markers
374
+ const cleaned = value.replace(/^["'`]|["'`]$/g, '').trim();
375
+ // Skip template literals with expressions
376
+ if (cleaned.includes('${')) {
377
+ // Try to extract the base path and convert expressions to :param
378
+ const parameterized = cleaned.replace(/\$\{[^}]+\}/g, ':param');
379
+ return parameterized;
380
+ }
381
+ return cleaned || null;
382
+ }
383
+ /**
384
+ * Check if URL looks like an API endpoint
385
+ */
386
+ isApiUrl(url) {
387
+ // Skip data URLs, blob URLs, etc.
388
+ if (url.startsWith('data:') || url.startsWith('blob:')) {
389
+ return false;
390
+ }
391
+ // Skip file extensions that are clearly not APIs
392
+ if (/\.(css|js|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|html)$/i.test(url)) {
393
+ return false;
394
+ }
395
+ // Accept paths that look like API endpoints
396
+ return (url.startsWith('/') ||
397
+ url.startsWith('http') ||
398
+ url.includes('/api/') ||
399
+ url.includes('.json') ||
400
+ // Common external API patterns
401
+ url.includes('api.') ||
402
+ url.includes('github.io') || // GitHub Pages hosted APIs
403
+ url.includes('hsforms.com') || // HubSpot
404
+ url.includes('hubspot') || // HubSpot
405
+ url.includes('amazonaws.com') || // AWS S3
406
+ url.includes('s3.') || // AWS S3 alternative
407
+ url.includes('googleapis.com') || // Google APIs
408
+ url.includes('stripe.com') || // Stripe
409
+ url.includes('graph.facebook.com') || // Facebook
410
+ url.includes('api.twitter.com') || // Twitter
411
+ url.includes('slack.com') || // Slack
412
+ url.includes('discord.com') || // Discord
413
+ url.includes('sendgrid.com') || // SendGrid
414
+ url.includes('twilio.com') || // Twilio
415
+ url.includes('firebase') || // Firebase
416
+ url.includes('supabase') || // Supabase
417
+ url.includes('auth0.com') || // Auth0
418
+ url.includes('okta.com') || // Okta
419
+ url.includes('cloudflare.com') || // Cloudflare
420
+ url.includes('vercel.com') || // Vercel
421
+ url.includes('netlify.com') // Netlify
422
+ );
423
+ }
424
+ /**
425
+ * Categorize API by URL pattern
426
+ */
427
+ categorizeApi(url) {
428
+ // External services
429
+ if (url.includes('hsforms.com') || url.includes('hubspot'))
430
+ return 'HubSpot';
431
+ if (url.includes('amazonaws.com') || url.includes('s3.'))
432
+ return 'AWS S3';
433
+ if (url.includes('googleapis.com'))
434
+ return 'Google API';
435
+ if (url.includes('stripe.com'))
436
+ return 'Stripe';
437
+ if (url.includes('graph.facebook.com'))
438
+ return 'Facebook';
439
+ if (url.includes('api.twitter.com'))
440
+ return 'Twitter';
441
+ if (url.includes('slack.com'))
442
+ return 'Slack';
443
+ if (url.includes('discord.com'))
444
+ return 'Discord';
445
+ if (url.includes('sendgrid.com'))
446
+ return 'SendGrid';
447
+ if (url.includes('twilio.com'))
448
+ return 'Twilio';
449
+ if (url.includes('firebase'))
450
+ return 'Firebase';
451
+ if (url.includes('supabase'))
452
+ return 'Supabase';
453
+ if (url.includes('auth0.com'))
454
+ return 'Auth0';
455
+ if (url.includes('okta.com'))
456
+ return 'Okta';
457
+ if (url.includes('github.io'))
458
+ return 'GitHub Pages API';
459
+ // Internal patterns
460
+ if (url.startsWith('/api/'))
461
+ return 'Internal API';
462
+ if (url.startsWith('/'))
463
+ return 'Internal Route';
464
+ // Dynamic/placeholder URLs
465
+ if (url.startsWith('['))
466
+ return 'Dynamic URL';
467
+ return undefined;
468
+ }
469
+ /**
470
+ * Normalize HTTP method
471
+ */
472
+ normalizeMethod(method) {
473
+ const upper = method.toUpperCase();
474
+ if (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(upper)) {
475
+ return upper;
476
+ }
477
+ return 'unknown';
478
+ }
479
+ }
480
+ //# sourceMappingURL=rest-api-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-api-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/rest-api-analyzer.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}