isthmus-cli 0.5.0 → 0.7.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 (146) hide show
  1. package/README.ko.md +170 -45
  2. package/README.md +178 -36
  3. package/Skills/isthmus/SKILL.md +104 -5
  4. package/compatibility.json +10 -0
  5. package/dist/cli/check-command.d.ts +2 -2
  6. package/dist/cli/check-command.js +22 -9
  7. package/dist/cli/check-command.js.map +1 -1
  8. package/dist/cli/command-support.d.ts +20 -2
  9. package/dist/cli/command-support.js +38 -9
  10. package/dist/cli/command-support.js.map +1 -1
  11. package/dist/cli/diff-command.js +4 -3
  12. package/dist/cli/diff-command.js.map +1 -1
  13. package/dist/cli/doctor-command.d.ts +11 -0
  14. package/dist/cli/doctor-command.js +128 -0
  15. package/dist/cli/doctor-command.js.map +1 -0
  16. package/dist/cli/extract-js-command.d.ts +33 -0
  17. package/dist/cli/extract-js-command.js +233 -0
  18. package/dist/cli/extract-js-command.js.map +1 -0
  19. package/dist/cli/graph-command.js +13 -6
  20. package/dist/cli/graph-command.js.map +1 -1
  21. package/dist/cli/impact-command.d.ts +5 -0
  22. package/dist/cli/impact-command.js +111 -0
  23. package/dist/cli/impact-command.js.map +1 -0
  24. package/dist/cli/init-command.d.ts +11 -0
  25. package/dist/cli/init-command.js +115 -0
  26. package/dist/cli/init-command.js.map +1 -0
  27. package/dist/cli/main.js +67 -1
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/cli/mcp-server.d.ts +16 -0
  30. package/dist/cli/mcp-server.js +534 -0
  31. package/dist/cli/mcp-server.js.map +1 -0
  32. package/dist/cli/preflight-command.d.ts +5 -0
  33. package/dist/cli/preflight-command.js +83 -0
  34. package/dist/cli/preflight-command.js.map +1 -0
  35. package/dist/cli/query-command.js +13 -6
  36. package/dist/cli/query-command.js.map +1 -1
  37. package/dist/cli/retentions-command.js +14 -7
  38. package/dist/cli/retentions-command.js.map +1 -1
  39. package/dist/cli/runtime-command.d.ts +5 -0
  40. package/dist/cli/runtime-command.js +42 -0
  41. package/dist/cli/runtime-command.js.map +1 -0
  42. package/dist/cli/runtime-json-reader.d.ts +12 -0
  43. package/dist/cli/runtime-json-reader.js +37 -0
  44. package/dist/cli/runtime-json-reader.js.map +1 -0
  45. package/dist/cli/serve-command.d.ts +13 -0
  46. package/dist/cli/serve-command.js +43 -0
  47. package/dist/cli/serve-command.js.map +1 -0
  48. package/dist/exchange/capture-config.d.ts +18 -0
  49. package/dist/exchange/capture-config.js +100 -0
  50. package/dist/exchange/capture-config.js.map +1 -0
  51. package/dist/exchange/impact-selection.d.ts +13 -0
  52. package/dist/exchange/impact-selection.js +35 -0
  53. package/dist/exchange/impact-selection.js.map +1 -0
  54. package/dist/exchange/kartograph-impact.d.ts +4 -0
  55. package/dist/exchange/kartograph-impact.js +169 -0
  56. package/dist/exchange/kartograph-impact.js.map +1 -0
  57. package/dist/exchange/messages.d.ts +36 -0
  58. package/dist/exchange/messages.js +96 -0
  59. package/dist/exchange/messages.js.map +1 -0
  60. package/dist/exchange/parse.d.ts +69 -0
  61. package/dist/exchange/parse.js +127 -20
  62. package/dist/exchange/parse.js.map +1 -1
  63. package/dist/exchange/preflight-context.d.ts +71 -0
  64. package/dist/exchange/preflight-context.js +317 -0
  65. package/dist/exchange/preflight-context.js.map +1 -0
  66. package/dist/exchange/producer-impact.d.ts +17 -0
  67. package/dist/exchange/producer-impact.js +226 -0
  68. package/dist/exchange/producer-impact.js.map +1 -0
  69. package/dist/exchange/runtime.d.ts +69 -0
  70. package/dist/exchange/runtime.js +160 -0
  71. package/dist/exchange/runtime.js.map +1 -0
  72. package/dist/extract/js-document.d.ts +22 -0
  73. package/dist/extract/js-document.js +230 -0
  74. package/dist/extract/js-document.js.map +1 -0
  75. package/dist/extract/js-scan.d.ts +93 -0
  76. package/dist/extract/js-scan.js +1205 -0
  77. package/dist/extract/js-scan.js.map +1 -0
  78. package/dist/extract/lexer.d.ts +26 -0
  79. package/dist/extract/lexer.js +316 -0
  80. package/dist/extract/lexer.js.map +1 -0
  81. package/dist/join/join.d.ts +66 -1
  82. package/dist/join/join.js +171 -1
  83. package/dist/join/join.js.map +1 -1
  84. package/dist/join/message-address.d.ts +7 -0
  85. package/dist/join/message-address.js +37 -0
  86. package/dist/join/message-address.js.map +1 -0
  87. package/dist/join/messages.d.ts +26 -0
  88. package/dist/join/messages.js +87 -0
  89. package/dist/join/messages.js.map +1 -0
  90. package/dist/report/check-report.d.ts +20 -3
  91. package/dist/report/check-report.js +240 -8
  92. package/dist/report/check-report.js.map +1 -1
  93. package/dist/report/codequality.d.ts +45 -0
  94. package/dist/report/codequality.js +74 -0
  95. package/dist/report/codequality.js.map +1 -0
  96. package/dist/report/diff.d.ts +25 -3
  97. package/dist/report/diff.js +91 -10
  98. package/dist/report/diff.js.map +1 -1
  99. package/dist/report/graph.d.ts +10 -4
  100. package/dist/report/graph.js +60 -6
  101. package/dist/report/graph.js.map +1 -1
  102. package/dist/report/impact.d.ts +62 -0
  103. package/dist/report/impact.js +168 -0
  104. package/dist/report/impact.js.map +1 -0
  105. package/dist/report/preflight-runtime.d.ts +42 -0
  106. package/dist/report/preflight-runtime.js +193 -0
  107. package/dist/report/preflight-runtime.js.map +1 -0
  108. package/dist/report/preflight-view.d.ts +146 -0
  109. package/dist/report/preflight-view.js +216 -0
  110. package/dist/report/preflight-view.js.map +1 -0
  111. package/dist/report/preflight.d.ts +104 -0
  112. package/dist/report/preflight.js +331 -0
  113. package/dist/report/preflight.js.map +1 -0
  114. package/dist/report/query.d.ts +11 -4
  115. package/dist/report/query.js +84 -17
  116. package/dist/report/query.js.map +1 -1
  117. package/dist/report/retentions.d.ts +17 -5
  118. package/dist/report/retentions.js +85 -8
  119. package/dist/report/retentions.js.map +1 -1
  120. package/dist/report/rules.d.ts +16 -0
  121. package/dist/report/rules.js +30 -0
  122. package/dist/report/rules.js.map +1 -0
  123. package/dist/report/runtime-impact.d.ts +38 -0
  124. package/dist/report/runtime-impact.js +94 -0
  125. package/dist/report/runtime-impact.js.map +1 -0
  126. package/dist/report/runtime.d.ts +54 -0
  127. package/dist/report/runtime.js +137 -0
  128. package/dist/report/runtime.js.map +1 -0
  129. package/dist/report/sarif.d.ts +2 -8
  130. package/dist/report/sarif.js +2 -10
  131. package/dist/report/sarif.js.map +1 -1
  132. package/dist/report/sorted-json.d.ts +1 -1
  133. package/dist/report/sorted-json.js +2 -2
  134. package/dist/report/sorted-json.js.map +1 -1
  135. package/docs/BRIDGE-EVENTS.md +87 -0
  136. package/docs/BRIDGE-MESSAGES.md +117 -0
  137. package/docs/GRAPH-EXCHANGE.md +382 -0
  138. package/docs/IMPACT.md +96 -0
  139. package/docs/MCP.md +62 -0
  140. package/docs/PREFLIGHT.md +311 -0
  141. package/docs/RUNTIME.md +172 -0
  142. package/docs/TOOLCHAIN.md +101 -0
  143. package/package.json +14 -2
  144. package/scripts/build-preflight-toolchain.mjs +186 -0
  145. package/scripts/capture-preflight.mjs +380 -0
  146. package/scripts/run-child.mjs +17 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * extract-js의 파일 한 개 스캐너다.
3
+ *
4
+ * 토큰 열 위에서 코어 RN과 Expo Modules의 브리지 호출 형태를 찾는다.
5
+ * 모듈·컴포넌트 이름 경계 사실은 즉시 확정하고, 멤버 호출(`M.foo()`)은
6
+ * 바인딩 정보와 함께 문서 조립 단계로 넘겨 같은 파일·가져오기 해석을 거친다.
7
+ *
8
+ * 이 스캐너는 이름을 정적으로 확정할 수 있는 형태만 fact로 낸다. 비리터럴
9
+ * 인자는 `dynamic: true`에 원문 표현식을 실어 한계 계수에 맡긴다.
10
+ */
11
+ import type { BridgeFact, BridgeMechanism } from '../exchange/parse.ts';
12
+ import type { JsToken } from './lexer.ts';
13
+ /** 스캔이 모은 한 파일의 결과다. */
14
+ export interface JsFileScan {
15
+ /** 이미 확정된 경계·메서드 사실이다. location은 토큰 위치로 호출자가 채운다. */
16
+ readonly facts: readonly ScannedFact[];
17
+ /**
18
+ * 베이스가 로컬·import 식별자인 멤버 호출 후보다. 문서 단계에서 바인딩을
19
+ * 해석해 메서드 호출 사실로 바꾼다.
20
+ */
21
+ readonly memberCalls: readonly ScannedMemberCall[];
22
+ /** 같은 파일에서 식별자가 가리키는 모듈·컴포넌트 이름이다. */
23
+ readonly bindings: ReadonlyMap<string, BoundName>;
24
+ /** 한 단계 문자열 상수(`const X = 'lit'` / 백틱)다. */
25
+ readonly constStrings: ReadonlyMap<string, string>;
26
+ /** `import X from 'spec'` 바인딩이다. 문서 단계에서 파일 해석을 거친다. */
27
+ readonly imports: readonly ScannedImport[];
28
+ /** 다른 파일이 이 파일의 export를 해석하는 데 쓰는 이름 지도다. */
29
+ readonly exports: ScannedExports;
30
+ /** 생산자 limitation에 쓰는 원시 계수다. */
31
+ readonly counts: JsScanCounts;
32
+ }
33
+ /** 스캔이 세는 한계 분류다. */
34
+ export interface JsScanCounts {
35
+ readonly dynamicModuleNames: number;
36
+ readonly dynamicComponentNames: number;
37
+ readonly dynamicMethodNames: number;
38
+ }
39
+ /** 위치 정보가 붙기 전의 사실 골격이다. */
40
+ export interface ScannedFact {
41
+ readonly kind: BridgeFact['kind'];
42
+ readonly channel: string;
43
+ readonly method?: string;
44
+ readonly mechanism?: BridgeMechanism;
45
+ /** 호출 API가 모듈 부재를 허용한다(`null` 반환)는 module-import 증거다. */
46
+ readonly optional?: boolean;
47
+ readonly dynamic: boolean;
48
+ readonly token: JsToken;
49
+ }
50
+ /** 바인딩이 확정된 이름인지 원문 표현식인지 구분한다. */
51
+ export type BoundName = {
52
+ readonly name: string;
53
+ } | {
54
+ readonly dynamicExpression: string;
55
+ };
56
+ /** `ident.method(...)` 또는 `ident[expr](...)` 호출 후보다. */
57
+ export interface ScannedMemberCall {
58
+ /** 베이스 식별자다. */
59
+ readonly ident: string;
60
+ /** 리터럴이면 메서드명, 아니면 원문 표현식이다. */
61
+ readonly method: string;
62
+ readonly dynamicMethod: boolean;
63
+ readonly token: JsToken;
64
+ }
65
+ /** 한 파일의 import 바인딩이다. */
66
+ export interface ScannedImport {
67
+ readonly localName: string;
68
+ readonly specifier: string;
69
+ /** default export 해석인지 named export 해석인지 구분한다. */
70
+ readonly exportedName: string | 'default';
71
+ readonly token: JsToken;
72
+ }
73
+ /** 이 파일이 외부에보내는 모듈 바인딩이다. */
74
+ export interface ScannedExports {
75
+ readonly defaultName?: BoundName;
76
+ readonly named: ReadonlyMap<string, BoundName>;
77
+ /**
78
+ * `export { A as B } from 'spec'`·`export { default as X } from 'spec'`의
79
+ * 배럴 재수출이다. 키는 이 파일이보내는 이름, 값은 원본 specifier다.
80
+ */
81
+ readonly reexported: ReadonlyMap<string, {
82
+ readonly specifier: string;
83
+ readonly exportedName: string | 'default';
84
+ }>;
85
+ }
86
+ /** 한 소스 텍스트를 스캔해 사실 후보·바인딩·계수를 모은다. */
87
+ export declare function scanJsSource(source: string): JsFileScan;
88
+ /**
89
+ * 동적 표현식의 원문을 계약 필드가 허용하는 안전한 문자열로 바꾼다.
90
+ *
91
+ * 제어 문자는 공백으로 접고 길이를 제한해 원문 표현이 키 파싱을 깨지 않게 한다.
92
+ */
93
+ export declare function sanitizeExpression(expression: string): string;