@ryanstark24/sfgraph-core 1.4.0 → 1.6.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 (922) hide show
  1. package/dist/analyze/apex-platform.d.ts +23 -0
  2. package/dist/analyze/apex-platform.d.ts.map +1 -0
  3. package/dist/analyze/apex-platform.js +112 -0
  4. package/dist/analyze/apex-platform.js.map +1 -0
  5. package/dist/analyze/audit-graph.d.ts +34 -10
  6. package/dist/analyze/audit-graph.d.ts.map +1 -1
  7. package/dist/analyze/audit-graph.js +360 -39
  8. package/dist/analyze/audit-graph.js.map +1 -1
  9. package/dist/analyze/component-scope.d.ts +82 -0
  10. package/dist/analyze/component-scope.d.ts.map +1 -0
  11. package/dist/analyze/component-scope.js +207 -0
  12. package/dist/analyze/component-scope.js.map +1 -0
  13. package/dist/analyze/containment.d.ts +91 -0
  14. package/dist/analyze/containment.d.ts.map +1 -0
  15. package/dist/analyze/containment.js +175 -0
  16. package/dist/analyze/containment.js.map +1 -0
  17. package/dist/analyze/cross-org.d.ts +35 -0
  18. package/dist/analyze/cross-org.d.ts.map +1 -1
  19. package/dist/analyze/cross-org.js +102 -3
  20. package/dist/analyze/cross-org.js.map +1 -1
  21. package/dist/analyze/dead-code.d.ts +99 -3
  22. package/dist/analyze/dead-code.d.ts.map +1 -1
  23. package/dist/analyze/dead-code.js +282 -10
  24. package/dist/analyze/dead-code.js.map +1 -1
  25. package/dist/analyze/dependencies.d.ts +20 -1
  26. package/dist/analyze/dependencies.d.ts.map +1 -1
  27. package/dist/analyze/dependencies.js +96 -12
  28. package/dist/analyze/dependencies.js.map +1 -1
  29. package/dist/analyze/dependents.d.ts +111 -1
  30. package/dist/analyze/dependents.d.ts.map +1 -1
  31. package/dist/analyze/dependents.js +282 -20
  32. package/dist/analyze/dependents.js.map +1 -1
  33. package/dist/analyze/deployment-manifest/generate.d.ts +24 -0
  34. package/dist/analyze/deployment-manifest/generate.d.ts.map +1 -1
  35. package/dist/analyze/deployment-manifest/generate.js +40 -12
  36. package/dist/analyze/deployment-manifest/generate.js.map +1 -1
  37. package/dist/analyze/deployment-manifest/member-name-formatters.d.ts.map +1 -1
  38. package/dist/analyze/deployment-manifest/member-name-formatters.js +1 -0
  39. package/dist/analyze/deployment-manifest/member-name-formatters.js.map +1 -1
  40. package/dist/analyze/deployment-manifest/member-types.d.ts.map +1 -1
  41. package/dist/analyze/deployment-manifest/member-types.js +2 -0
  42. package/dist/analyze/deployment-manifest/member-types.js.map +1 -1
  43. package/dist/analyze/diff-seeds.d.ts +33 -0
  44. package/dist/analyze/diff-seeds.d.ts.map +1 -0
  45. package/dist/analyze/diff-seeds.js +299 -0
  46. package/dist/analyze/diff-seeds.js.map +1 -0
  47. package/dist/analyze/edge-filters.d.ts +25 -0
  48. package/dist/analyze/edge-filters.d.ts.map +1 -1
  49. package/dist/analyze/edge-filters.js +78 -2
  50. package/dist/analyze/edge-filters.js.map +1 -1
  51. package/dist/analyze/field-scope.d.ts +25 -0
  52. package/dist/analyze/field-scope.d.ts.map +1 -0
  53. package/dist/analyze/field-scope.js +94 -0
  54. package/dist/analyze/field-scope.js.map +1 -0
  55. package/dist/analyze/find-nodes.d.ts +48 -12
  56. package/dist/analyze/find-nodes.d.ts.map +1 -1
  57. package/dist/analyze/find-nodes.js +323 -12
  58. package/dist/analyze/find-nodes.js.map +1 -1
  59. package/dist/analyze/findings.d.ts.map +1 -1
  60. package/dist/analyze/findings.js +14 -0
  61. package/dist/analyze/findings.js.map +1 -1
  62. package/dist/analyze/git-diff.d.ts +27 -1
  63. package/dist/analyze/git-diff.d.ts.map +1 -1
  64. package/dist/analyze/git-diff.js +198 -26
  65. package/dist/analyze/git-diff.js.map +1 -1
  66. package/dist/analyze/governor.d.ts +25 -4
  67. package/dist/analyze/governor.d.ts.map +1 -1
  68. package/dist/analyze/governor.js +82 -18
  69. package/dist/analyze/governor.js.map +1 -1
  70. package/dist/analyze/index.d.ts +6 -0
  71. package/dist/analyze/index.d.ts.map +1 -1
  72. package/dist/analyze/index.js +6 -0
  73. package/dist/analyze/index.js.map +1 -1
  74. package/dist/analyze/path-to-qname.d.ts +9 -0
  75. package/dist/analyze/path-to-qname.d.ts.map +1 -1
  76. package/dist/analyze/path-to-qname.js +58 -15
  77. package/dist/analyze/path-to-qname.js.map +1 -1
  78. package/dist/analyze/populate.d.ts +40 -0
  79. package/dist/analyze/populate.d.ts.map +1 -1
  80. package/dist/analyze/populate.js +148 -48
  81. package/dist/analyze/populate.js.map +1 -1
  82. package/dist/analyze/pseudo-endpoints.d.ts +67 -0
  83. package/dist/analyze/pseudo-endpoints.d.ts.map +1 -0
  84. package/dist/analyze/pseudo-endpoints.js +78 -0
  85. package/dist/analyze/pseudo-endpoints.js.map +1 -0
  86. package/dist/analyze/security.d.ts +2 -0
  87. package/dist/analyze/security.d.ts.map +1 -1
  88. package/dist/analyze/security.js +44 -15
  89. package/dist/analyze/security.js.map +1 -1
  90. package/dist/analyze/test-coverage.d.ts +48 -0
  91. package/dist/analyze/test-coverage.d.ts.map +1 -1
  92. package/dist/analyze/test-coverage.js +72 -1
  93. package/dist/analyze/test-coverage.js.map +1 -1
  94. package/dist/analyze/wip-changed-files.d.ts +88 -0
  95. package/dist/analyze/wip-changed-files.d.ts.map +1 -0
  96. package/dist/analyze/wip-changed-files.js +422 -0
  97. package/dist/analyze/wip-changed-files.js.map +1 -0
  98. package/dist/analyze/wip-impact.d.ts +59 -0
  99. package/dist/analyze/wip-impact.d.ts.map +1 -1
  100. package/dist/analyze/wip-impact.js +199 -126
  101. package/dist/analyze/wip-impact.js.map +1 -1
  102. package/dist/domain/apex-platform.d.ts +10 -0
  103. package/dist/domain/apex-platform.d.ts.map +1 -0
  104. package/dist/domain/apex-platform.js +231 -0
  105. package/dist/domain/apex-platform.js.map +1 -0
  106. package/dist/domain/index.d.ts +2 -0
  107. package/dist/domain/index.d.ts.map +1 -1
  108. package/dist/domain/index.js +2 -0
  109. package/dist/domain/index.js.map +1 -1
  110. package/dist/domain/rel-types.d.ts +7 -0
  111. package/dist/domain/rel-types.d.ts.map +1 -1
  112. package/dist/domain/rel-types.js +7 -0
  113. package/dist/domain/rel-types.js.map +1 -1
  114. package/dist/domain/standard-sobjects.d.ts +20 -0
  115. package/dist/domain/standard-sobjects.d.ts.map +1 -0
  116. package/dist/domain/standard-sobjects.js +183 -0
  117. package/dist/domain/standard-sobjects.js.map +1 -0
  118. package/dist/embedding/cache.d.ts +41 -0
  119. package/dist/embedding/cache.d.ts.map +1 -0
  120. package/dist/embedding/cache.js +69 -0
  121. package/dist/embedding/cache.js.map +1 -0
  122. package/dist/embedding/embed.d.ts +59 -0
  123. package/dist/embedding/embed.d.ts.map +1 -1
  124. package/dist/embedding/embed.js +193 -28
  125. package/dist/embedding/embed.js.map +1 -1
  126. package/dist/embedding/index.d.ts +7 -0
  127. package/dist/embedding/index.d.ts.map +1 -1
  128. package/dist/embedding/index.js +4 -0
  129. package/dist/embedding/index.js.map +1 -1
  130. package/dist/embedding/pool.d.ts +66 -6
  131. package/dist/embedding/pool.d.ts.map +1 -1
  132. package/dist/embedding/pool.js +156 -6
  133. package/dist/embedding/pool.js.map +1 -1
  134. package/dist/embedding/queue.d.ts +166 -9
  135. package/dist/embedding/queue.d.ts.map +1 -1
  136. package/dist/embedding/queue.js +397 -39
  137. package/dist/embedding/queue.js.map +1 -1
  138. package/dist/embedding/tokenize.d.ts +18 -0
  139. package/dist/embedding/tokenize.d.ts.map +1 -0
  140. package/dist/embedding/tokenize.js +43 -0
  141. package/dist/embedding/tokenize.js.map +1 -0
  142. package/dist/embedding/worker.d.ts +0 -5
  143. package/dist/embedding/worker.d.ts.map +1 -1
  144. package/dist/embedding/worker.js +27 -4
  145. package/dist/embedding/worker.js.map +1 -1
  146. package/dist/extractors/filesystem/index.d.ts +21 -1
  147. package/dist/extractors/filesystem/index.d.ts.map +1 -1
  148. package/dist/extractors/filesystem/index.js +195 -38
  149. package/dist/extractors/filesystem/index.js.map +1 -1
  150. package/dist/extractors/filesystem/vlocity-datapacks.d.ts +27 -0
  151. package/dist/extractors/filesystem/vlocity-datapacks.d.ts.map +1 -0
  152. package/dist/extractors/filesystem/vlocity-datapacks.js +201 -0
  153. package/dist/extractors/filesystem/vlocity-datapacks.js.map +1 -0
  154. package/dist/extractors/interfaces/metadata-source.d.ts +29 -0
  155. package/dist/extractors/interfaces/metadata-source.d.ts.map +1 -1
  156. package/dist/extractors/live-org/bulk-retrieve.d.ts +37 -1
  157. package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
  158. package/dist/extractors/live-org/bulk-retrieve.js +233 -50
  159. package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
  160. package/dist/extractors/live-org/capabilities.d.ts +15 -0
  161. package/dist/extractors/live-org/capabilities.d.ts.map +1 -1
  162. package/dist/extractors/live-org/capabilities.js +54 -9
  163. package/dist/extractors/live-org/capabilities.js.map +1 -1
  164. package/dist/extractors/live-org/extractors/apex.d.ts +12 -2
  165. package/dist/extractors/live-org/extractors/apex.d.ts.map +1 -1
  166. package/dist/extractors/live-org/extractors/apex.js +151 -80
  167. package/dist/extractors/live-org/extractors/apex.js.map +1 -1
  168. package/dist/extractors/live-org/extractors/custom-settings.d.ts +2 -1
  169. package/dist/extractors/live-org/extractors/custom-settings.d.ts.map +1 -1
  170. package/dist/extractors/live-org/extractors/custom-settings.js +19 -9
  171. package/dist/extractors/live-org/extractors/custom-settings.js.map +1 -1
  172. package/dist/extractors/live-org/extractors/flow.d.ts +2 -1
  173. package/dist/extractors/live-org/extractors/flow.d.ts.map +1 -1
  174. package/dist/extractors/live-org/extractors/flow.js +12 -3
  175. package/dist/extractors/live-org/extractors/flow.js.map +1 -1
  176. package/dist/extractors/live-org/extractors/generic-metadata.d.ts +23 -3
  177. package/dist/extractors/live-org/extractors/generic-metadata.d.ts.map +1 -1
  178. package/dist/extractors/live-org/extractors/generic-metadata.js +110 -25
  179. package/dist/extractors/live-org/extractors/generic-metadata.js.map +1 -1
  180. package/dist/extractors/live-org/extractors/integration.d.ts +2 -1
  181. package/dist/extractors/live-org/extractors/integration.d.ts.map +1 -1
  182. package/dist/extractors/live-org/extractors/integration.js +14 -5
  183. package/dist/extractors/live-org/extractors/integration.js.map +1 -1
  184. package/dist/extractors/live-org/extractors/lwc.d.ts +2 -1
  185. package/dist/extractors/live-org/extractors/lwc.d.ts.map +1 -1
  186. package/dist/extractors/live-org/extractors/lwc.js +14 -6
  187. package/dist/extractors/live-org/extractors/lwc.js.map +1 -1
  188. package/dist/extractors/live-org/extractors/object.d.ts +2 -11
  189. package/dist/extractors/live-org/extractors/object.d.ts.map +1 -1
  190. package/dist/extractors/live-org/extractors/object.js +127 -226
  191. package/dist/extractors/live-org/extractors/object.js.map +1 -1
  192. package/dist/extractors/live-org/extractors/omnistudio.d.ts +3 -0
  193. package/dist/extractors/live-org/extractors/omnistudio.d.ts.map +1 -1
  194. package/dist/extractors/live-org/extractors/omnistudio.js +57 -22
  195. package/dist/extractors/live-org/extractors/omnistudio.js.map +1 -1
  196. package/dist/extractors/live-org/extractors/security.d.ts +12 -1
  197. package/dist/extractors/live-org/extractors/security.d.ts.map +1 -1
  198. package/dist/extractors/live-org/extractors/security.js +29 -7
  199. package/dist/extractors/live-org/extractors/security.js.map +1 -1
  200. package/dist/extractors/live-org/rate-limit.d.ts +7 -1
  201. package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
  202. package/dist/extractors/live-org/rate-limit.js +53 -10
  203. package/dist/extractors/live-org/rate-limit.js.map +1 -1
  204. package/dist/extractors/live-org/retry.d.ts +136 -0
  205. package/dist/extractors/live-org/retry.d.ts.map +1 -0
  206. package/dist/extractors/live-org/retry.js +416 -0
  207. package/dist/extractors/live-org/retry.js.map +1 -0
  208. package/dist/extractors/live-org/vlocity/runner.d.ts +2 -1
  209. package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
  210. package/dist/extractors/live-org/vlocity/runner.js +95 -67
  211. package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
  212. package/dist/extractors/vlocity-shared/row.d.ts +19 -0
  213. package/dist/extractors/vlocity-shared/row.d.ts.map +1 -0
  214. package/dist/extractors/vlocity-shared/row.js +69 -0
  215. package/dist/extractors/vlocity-shared/row.js.map +1 -0
  216. package/dist/index.d.ts +1 -0
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +2 -0
  219. package/dist/index.js.map +1 -1
  220. package/dist/ingest/delta.d.ts +70 -0
  221. package/dist/ingest/delta.d.ts.map +1 -0
  222. package/dist/ingest/delta.js +534 -0
  223. package/dist/ingest/delta.js.map +1 -0
  224. package/dist/ingest/detect-deletions-guard.d.ts +34 -0
  225. package/dist/ingest/detect-deletions-guard.d.ts.map +1 -1
  226. package/dist/ingest/detect-deletions-guard.js +59 -0
  227. package/dist/ingest/detect-deletions-guard.js.map +1 -1
  228. package/dist/ingest/index.d.ts +8 -1
  229. package/dist/ingest/index.d.ts.map +1 -1
  230. package/dist/ingest/index.js +4 -0
  231. package/dist/ingest/index.js.map +1 -1
  232. package/dist/ingest/live-ingest.d.ts +171 -7
  233. package/dist/ingest/live-ingest.d.ts.map +1 -1
  234. package/dist/ingest/live-ingest.js +1014 -249
  235. package/dist/ingest/live-ingest.js.map +1 -1
  236. package/dist/ingest/lock.d.ts +47 -0
  237. package/dist/ingest/lock.d.ts.map +1 -0
  238. package/dist/ingest/lock.js +222 -0
  239. package/dist/ingest/lock.js.map +1 -0
  240. package/dist/ingest/member-rows.d.ts +88 -0
  241. package/dist/ingest/member-rows.d.ts.map +1 -0
  242. package/dist/ingest/member-rows.js +152 -0
  243. package/dist/ingest/member-rows.js.map +1 -0
  244. package/dist/ingest/offline-org.d.ts +8 -0
  245. package/dist/ingest/offline-org.d.ts.map +1 -0
  246. package/dist/ingest/offline-org.js +41 -0
  247. package/dist/ingest/offline-org.js.map +1 -0
  248. package/dist/ingest/parse-member.d.ts +53 -0
  249. package/dist/ingest/parse-member.d.ts.map +1 -0
  250. package/dist/ingest/parse-member.js +276 -0
  251. package/dist/ingest/parse-member.js.map +1 -0
  252. package/dist/ingest/parse-pool.d.ts +139 -0
  253. package/dist/ingest/parse-pool.d.ts.map +1 -0
  254. package/dist/ingest/parse-pool.js +593 -0
  255. package/dist/ingest/parse-pool.js.map +1 -0
  256. package/dist/ingest/parse-worker.d.ts +3 -0
  257. package/dist/ingest/parse-worker.d.ts.map +1 -0
  258. package/dist/ingest/parse-worker.js +100 -0
  259. package/dist/ingest/parse-worker.js.map +1 -0
  260. package/dist/ingest/profile.d.ts +27 -0
  261. package/dist/ingest/profile.d.ts.map +1 -0
  262. package/dist/ingest/profile.js +48 -0
  263. package/dist/ingest/profile.js.map +1 -0
  264. package/dist/ingest/resolver-gates.d.ts +12 -0
  265. package/dist/ingest/resolver-gates.d.ts.map +1 -0
  266. package/dist/ingest/resolver-gates.js +53 -0
  267. package/dist/ingest/resolver-gates.js.map +1 -0
  268. package/dist/parsers/apex/arity-resolver.d.ts +16 -3
  269. package/dist/parsers/apex/arity-resolver.d.ts.map +1 -1
  270. package/dist/parsers/apex/arity-resolver.js +31 -2
  271. package/dist/parsers/apex/arity-resolver.js.map +1 -1
  272. package/dist/parsers/apex/ast-extractor.d.ts +4 -0
  273. package/dist/parsers/apex/ast-extractor.d.ts.map +1 -1
  274. package/dist/parsers/apex/ast-extractor.js +96 -29
  275. package/dist/parsers/apex/ast-extractor.js.map +1 -1
  276. package/dist/parsers/apex/class-refs.d.ts +78 -0
  277. package/dist/parsers/apex/class-refs.d.ts.map +1 -0
  278. package/dist/parsers/apex/class-refs.js +465 -0
  279. package/dist/parsers/apex/class-refs.js.map +1 -0
  280. package/dist/parsers/apex/class.d.ts +158 -0
  281. package/dist/parsers/apex/class.d.ts.map +1 -1
  282. package/dist/parsers/apex/class.js +1025 -183
  283. package/dist/parsers/apex/class.js.map +1 -1
  284. package/dist/parsers/apex/dynamic-soql.d.ts +52 -0
  285. package/dist/parsers/apex/dynamic-soql.d.ts.map +1 -0
  286. package/dist/parsers/apex/dynamic-soql.js +427 -0
  287. package/dist/parsers/apex/dynamic-soql.js.map +1 -0
  288. package/dist/parsers/apex/field-access.d.ts +65 -0
  289. package/dist/parsers/apex/field-access.d.ts.map +1 -0
  290. package/dist/parsers/apex/field-access.js +438 -0
  291. package/dist/parsers/apex/field-access.js.map +1 -0
  292. package/dist/parsers/apex/interface-ref-resolver.d.ts +32 -0
  293. package/dist/parsers/apex/interface-ref-resolver.d.ts.map +1 -0
  294. package/dist/parsers/apex/interface-ref-resolver.js +64 -0
  295. package/dist/parsers/apex/interface-ref-resolver.js.map +1 -0
  296. package/dist/parsers/apex/name-refs.d.ts +83 -0
  297. package/dist/parsers/apex/name-refs.d.ts.map +1 -0
  298. package/dist/parsers/apex/name-refs.js +465 -0
  299. package/dist/parsers/apex/name-refs.js.map +1 -0
  300. package/dist/parsers/apex/page-refs.d.ts +11 -0
  301. package/dist/parsers/apex/page-refs.d.ts.map +1 -0
  302. package/dist/parsers/apex/page-refs.js +34 -0
  303. package/dist/parsers/apex/page-refs.js.map +1 -0
  304. package/dist/parsers/apex/ref-resolver.d.ts +58 -0
  305. package/dist/parsers/apex/ref-resolver.d.ts.map +1 -0
  306. package/dist/parsers/apex/ref-resolver.js +348 -0
  307. package/dist/parsers/apex/ref-resolver.js.map +1 -0
  308. package/dist/parsers/apex/soql-fields.d.ts +75 -0
  309. package/dist/parsers/apex/soql-fields.d.ts.map +1 -0
  310. package/dist/parsers/apex/soql-fields.js +338 -0
  311. package/dist/parsers/apex/soql-fields.js.map +1 -0
  312. package/dist/parsers/apex/trigger.d.ts.map +1 -1
  313. package/dist/parsers/apex/trigger.js +90 -2
  314. package/dist/parsers/apex/trigger.js.map +1 -1
  315. package/dist/parsers/apex/vlocity-calls.d.ts +25 -0
  316. package/dist/parsers/apex/vlocity-calls.d.ts.map +1 -0
  317. package/dist/parsers/apex/vlocity-calls.js +225 -0
  318. package/dist/parsers/apex/vlocity-calls.js.map +1 -0
  319. package/dist/parsers/aura/bundle.d.ts +39 -0
  320. package/dist/parsers/aura/bundle.d.ts.map +1 -0
  321. package/dist/parsers/aura/bundle.js +269 -0
  322. package/dist/parsers/aura/bundle.js.map +1 -0
  323. package/dist/parsers/aura/embed-resolver.d.ts +17 -0
  324. package/dist/parsers/aura/embed-resolver.d.ts.map +1 -0
  325. package/dist/parsers/aura/embed-resolver.js +58 -0
  326. package/dist/parsers/aura/embed-resolver.js.map +1 -0
  327. package/dist/parsers/aura/index.d.ts +4 -0
  328. package/dist/parsers/aura/index.d.ts.map +1 -0
  329. package/dist/parsers/aura/index.js +6 -0
  330. package/dist/parsers/aura/index.js.map +1 -0
  331. package/dist/parsers/common.d.ts +9 -0
  332. package/dist/parsers/common.d.ts.map +1 -1
  333. package/dist/parsers/common.js +17 -0
  334. package/dist/parsers/common.js.map +1 -1
  335. package/dist/parsers/cross-flavor-resolver.js +8 -2
  336. package/dist/parsers/cross-flavor-resolver.js.map +1 -1
  337. package/dist/parsers/flow/invocable-resolver.d.ts.map +1 -1
  338. package/dist/parsers/flow/invocable-resolver.js +2 -0
  339. package/dist/parsers/flow/invocable-resolver.js.map +1 -1
  340. package/dist/parsers/flow/parser.d.ts +9 -0
  341. package/dist/parsers/flow/parser.d.ts.map +1 -1
  342. package/dist/parsers/flow/parser.js +327 -2
  343. package/dist/parsers/flow/parser.js.map +1 -1
  344. package/dist/parsers/flow/relationship-resolver.d.ts +34 -0
  345. package/dist/parsers/flow/relationship-resolver.d.ts.map +1 -0
  346. package/dist/parsers/flow/relationship-resolver.js +199 -0
  347. package/dist/parsers/flow/relationship-resolver.js.map +1 -0
  348. package/dist/parsers/generic/opaque-node-parser.d.ts +5 -1
  349. package/dist/parsers/generic/opaque-node-parser.d.ts.map +1 -1
  350. package/dist/parsers/generic/opaque-node-parser.js +37 -5
  351. package/dist/parsers/generic/opaque-node-parser.js.map +1 -1
  352. package/dist/parsers/generic/reflection-walker.d.ts +7 -0
  353. package/dist/parsers/generic/reflection-walker.d.ts.map +1 -1
  354. package/dist/parsers/generic/reflection-walker.js +37 -10
  355. package/dist/parsers/generic/reflection-walker.js.map +1 -1
  356. package/dist/parsers/hash-salts.d.ts +72 -0
  357. package/dist/parsers/hash-salts.d.ts.map +1 -0
  358. package/dist/parsers/hash-salts.js +91 -0
  359. package/dist/parsers/hash-salts.js.map +1 -0
  360. package/dist/parsers/index.d.ts +2 -0
  361. package/dist/parsers/index.d.ts.map +1 -1
  362. package/dist/parsers/index.js +2 -0
  363. package/dist/parsers/index.js.map +1 -1
  364. package/dist/parsers/lwc/bundle.d.ts +1 -0
  365. package/dist/parsers/lwc/bundle.d.ts.map +1 -1
  366. package/dist/parsers/lwc/bundle.js +37 -2
  367. package/dist/parsers/lwc/bundle.js.map +1 -1
  368. package/dist/parsers/lwc/field-key-resolver.d.ts +32 -0
  369. package/dist/parsers/lwc/field-key-resolver.d.ts.map +1 -0
  370. package/dist/parsers/lwc/field-key-resolver.js +92 -0
  371. package/dist/parsers/lwc/field-key-resolver.js.map +1 -0
  372. package/dist/parsers/lwc/html-visitor.d.ts +1 -1
  373. package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
  374. package/dist/parsers/lwc/html-visitor.js +78 -1
  375. package/dist/parsers/lwc/html-visitor.js.map +1 -1
  376. package/dist/parsers/lwc/js-visitor.d.ts +16 -0
  377. package/dist/parsers/lwc/js-visitor.d.ts.map +1 -1
  378. package/dist/parsers/lwc/js-visitor.js +348 -10
  379. package/dist/parsers/lwc/js-visitor.js.map +1 -1
  380. package/dist/parsers/lwc/omnidef.d.ts +10 -0
  381. package/dist/parsers/lwc/omnidef.d.ts.map +1 -0
  382. package/dist/parsers/lwc/omnidef.js +127 -0
  383. package/dist/parsers/lwc/omnidef.js.map +1 -0
  384. package/dist/parsers/lwc/xml-meta.d.ts.map +1 -1
  385. package/dist/parsers/lwc/xml-meta.js +16 -1
  386. package/dist/parsers/lwc/xml-meta.js.map +1 -1
  387. package/dist/parsers/object/formula-hop-resolver.d.ts +33 -0
  388. package/dist/parsers/object/formula-hop-resolver.d.ts.map +1 -0
  389. package/dist/parsers/object/formula-hop-resolver.js +60 -0
  390. package/dist/parsers/object/formula-hop-resolver.js.map +1 -0
  391. package/dist/parsers/object/formula-refs.d.ts +40 -0
  392. package/dist/parsers/object/formula-refs.d.ts.map +1 -0
  393. package/dist/parsers/object/formula-refs.js +129 -0
  394. package/dist/parsers/object/formula-refs.js.map +1 -0
  395. package/dist/parsers/object/object.d.ts +3 -0
  396. package/dist/parsers/object/object.d.ts.map +1 -1
  397. package/dist/parsers/object/object.js +53 -52
  398. package/dist/parsers/object/object.js.map +1 -1
  399. package/dist/parsers/omnistudio/data-transform.d.ts.map +1 -1
  400. package/dist/parsers/omnistudio/data-transform.js +2 -2
  401. package/dist/parsers/omnistudio/data-transform.js.map +1 -1
  402. package/dist/parsers/omnistudio/integration-procedure.d.ts.map +1 -1
  403. package/dist/parsers/omnistudio/integration-procedure.js +4 -5
  404. package/dist/parsers/omnistudio/integration-procedure.js.map +1 -1
  405. package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -1
  406. package/dist/parsers/omnistudio/overlap-detector.js +27 -2
  407. package/dist/parsers/omnistudio/overlap-detector.js.map +1 -1
  408. package/dist/parsers/omnistudio/process.d.ts.map +1 -1
  409. package/dist/parsers/omnistudio/process.js +4 -5
  410. package/dist/parsers/omnistudio/process.js.map +1 -1
  411. package/dist/parsers/omnistudio/remote-refs.d.ts +11 -0
  412. package/dist/parsers/omnistudio/remote-refs.d.ts.map +1 -0
  413. package/dist/parsers/omnistudio/remote-refs.js +17 -0
  414. package/dist/parsers/omnistudio/remote-refs.js.map +1 -0
  415. package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -1
  416. package/dist/parsers/omnistudio/ui-card.js +4 -5
  417. package/dist/parsers/omnistudio/ui-card.js.map +1 -1
  418. package/dist/parsers/resolver-prune.d.ts +14 -0
  419. package/dist/parsers/resolver-prune.d.ts.map +1 -0
  420. package/dist/parsers/resolver-prune.js +29 -0
  421. package/dist/parsers/resolver-prune.js.map +1 -0
  422. package/dist/parsers/rules/_engine.d.ts.map +1 -1
  423. package/dist/parsers/rules/_engine.js +4 -0
  424. package/dist/parsers/rules/_engine.js.map +1 -1
  425. package/dist/parsers/rules/_engine.ts +3 -0
  426. package/dist/parsers/rules/_loader.d.ts +8 -0
  427. package/dist/parsers/rules/_loader.d.ts.map +1 -1
  428. package/dist/parsers/rules/_loader.js +17 -0
  429. package/dist/parsers/rules/_loader.js.map +1 -1
  430. package/dist/parsers/rules/_loader.ts +19 -0
  431. package/dist/parsers/rules/_schema.d.ts +12 -12
  432. package/dist/parsers/rules/_selectors.d.ts +1 -0
  433. package/dist/parsers/rules/_selectors.d.ts.map +1 -1
  434. package/dist/parsers/rules/_selectors.js +6 -0
  435. package/dist/parsers/rules/_selectors.js.map +1 -1
  436. package/dist/parsers/rules/_selectors.ts +6 -0
  437. package/dist/parsers/rules/apex-component.yml +49 -4
  438. package/dist/parsers/rules/apex-page.yml +49 -4
  439. package/dist/parsers/rules/approval-process.yml +25 -5
  440. package/dist/parsers/rules/custom-metadata-type.yml +7 -7
  441. package/dist/parsers/rules/custom-tab.yml +41 -0
  442. package/dist/parsers/rules/lightning-page.yml +4 -2
  443. package/dist/parsers/rules/workflow.yml +30 -10
  444. package/dist/parsers/vf/refs.d.ts +39 -0
  445. package/dist/parsers/vf/refs.d.ts.map +1 -0
  446. package/dist/parsers/vf/refs.js +152 -0
  447. package/dist/parsers/vf/refs.js.map +1 -0
  448. package/dist/parsers/vlocity/apex-resolver.d.ts +21 -0
  449. package/dist/parsers/vlocity/apex-resolver.d.ts.map +1 -0
  450. package/dist/parsers/vlocity/apex-resolver.js +115 -0
  451. package/dist/parsers/vlocity/apex-resolver.js.map +1 -0
  452. package/dist/parsers/vlocity/common.d.ts +56 -1
  453. package/dist/parsers/vlocity/common.d.ts.map +1 -1
  454. package/dist/parsers/vlocity/common.js +275 -7
  455. package/dist/parsers/vlocity/common.js.map +1 -1
  456. package/dist/parsers/vlocity/data-raptor.d.ts +9 -0
  457. package/dist/parsers/vlocity/data-raptor.d.ts.map +1 -1
  458. package/dist/parsers/vlocity/data-raptor.js +133 -31
  459. package/dist/parsers/vlocity/data-raptor.js.map +1 -1
  460. package/dist/parsers/vlocity/datapack-refs.d.ts +22 -0
  461. package/dist/parsers/vlocity/datapack-refs.d.ts.map +1 -0
  462. package/dist/parsers/vlocity/datapack-refs.js +126 -0
  463. package/dist/parsers/vlocity/datapack-refs.js.map +1 -0
  464. package/dist/parsers/vlocity/dr-relationship-resolver.d.ts +26 -0
  465. package/dist/parsers/vlocity/dr-relationship-resolver.d.ts.map +1 -0
  466. package/dist/parsers/vlocity/dr-relationship-resolver.js +137 -0
  467. package/dist/parsers/vlocity/dr-relationship-resolver.js.map +1 -0
  468. package/dist/parsers/vlocity/integration-procedure.d.ts.map +1 -1
  469. package/dist/parsers/vlocity/integration-procedure.js +15 -48
  470. package/dist/parsers/vlocity/integration-procedure.js.map +1 -1
  471. package/dist/parsers/vlocity/name-match-resolver.d.ts +21 -0
  472. package/dist/parsers/vlocity/name-match-resolver.d.ts.map +1 -0
  473. package/dist/parsers/vlocity/name-match-resolver.js +97 -0
  474. package/dist/parsers/vlocity/name-match-resolver.js.map +1 -0
  475. package/dist/parsers/vlocity/omni-script.d.ts.map +1 -1
  476. package/dist/parsers/vlocity/omni-script.js +18 -32
  477. package/dist/parsers/vlocity/omni-script.js.map +1 -1
  478. package/dist/parsers/vlocity/vlocity-card.d.ts.map +1 -1
  479. package/dist/parsers/vlocity/vlocity-card.js +30 -36
  480. package/dist/parsers/vlocity/vlocity-card.js.map +1 -1
  481. package/dist/render/mermaid/dependency-graph.d.ts.map +1 -1
  482. package/dist/render/mermaid/dependency-graph.js +13 -1
  483. package/dist/render/mermaid/dependency-graph.js.map +1 -1
  484. package/dist/render/mermaid/diff.d.ts.map +1 -1
  485. package/dist/render/mermaid/diff.js +4 -2
  486. package/dist/render/mermaid/diff.js.map +1 -1
  487. package/dist/render/mermaid/shared.d.ts +7 -0
  488. package/dist/render/mermaid/shared.d.ts.map +1 -1
  489. package/dist/render/mermaid/shared.js +15 -6
  490. package/dist/render/mermaid/shared.js.map +1 -1
  491. package/dist/storage/index.d.ts +3 -3
  492. package/dist/storage/index.d.ts.map +1 -1
  493. package/dist/storage/index.js +2 -2
  494. package/dist/storage/index.js.map +1 -1
  495. package/dist/storage/interfaces.d.ts +155 -1
  496. package/dist/storage/interfaces.d.ts.map +1 -1
  497. package/dist/storage/sqlite/graph-store.d.ts +352 -3
  498. package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
  499. package/dist/storage/sqlite/graph-store.js +1683 -74
  500. package/dist/storage/sqlite/graph-store.js.map +1 -1
  501. package/dist/storage/sqlite/migrations.d.ts +11 -0
  502. package/dist/storage/sqlite/migrations.d.ts.map +1 -1
  503. package/dist/storage/sqlite/migrations.js +226 -11
  504. package/dist/storage/sqlite/migrations.js.map +1 -1
  505. package/dist/storage/sqlite/snapshot-store.d.ts +79 -3
  506. package/dist/storage/sqlite/snapshot-store.d.ts.map +1 -1
  507. package/dist/storage/sqlite/snapshot-store.js +500 -100
  508. package/dist/storage/sqlite/snapshot-store.js.map +1 -1
  509. package/dist/storage/sqlite/snapshot-versions.d.ts +51 -0
  510. package/dist/storage/sqlite/snapshot-versions.d.ts.map +1 -0
  511. package/dist/storage/sqlite/snapshot-versions.js +209 -0
  512. package/dist/storage/sqlite/snapshot-versions.js.map +1 -0
  513. package/dist/storage/sqlite/vector-store.d.ts +12 -0
  514. package/dist/storage/sqlite/vector-store.d.ts.map +1 -1
  515. package/dist/storage/sqlite/vector-store.js +57 -14
  516. package/dist/storage/sqlite/vector-store.js.map +1 -1
  517. package/dist/util/process-owner.d.ts +35 -0
  518. package/dist/util/process-owner.d.ts.map +1 -0
  519. package/dist/util/process-owner.js +87 -0
  520. package/dist/util/process-owner.js.map +1 -0
  521. package/dist/util/worker-heap-cap.d.ts +10 -0
  522. package/dist/util/worker-heap-cap.d.ts.map +1 -0
  523. package/dist/util/worker-heap-cap.js +65 -0
  524. package/dist/util/worker-heap-cap.js.map +1 -0
  525. package/package.json +6 -7
  526. package/dist/analyze/__tests__/audit-graph.test.d.ts +0 -2
  527. package/dist/analyze/__tests__/audit-graph.test.d.ts.map +0 -1
  528. package/dist/analyze/__tests__/audit-graph.test.js +0 -201
  529. package/dist/analyze/__tests__/audit-graph.test.js.map +0 -1
  530. package/dist/analyze/__tests__/cross-org-two-store.test.d.ts +0 -2
  531. package/dist/analyze/__tests__/cross-org-two-store.test.d.ts.map +0 -1
  532. package/dist/analyze/__tests__/cross-org-two-store.test.js +0 -68
  533. package/dist/analyze/__tests__/cross-org-two-store.test.js.map +0 -1
  534. package/dist/analyze/__tests__/dead-code-confidence.test.d.ts +0 -2
  535. package/dist/analyze/__tests__/dead-code-confidence.test.d.ts.map +0 -1
  536. package/dist/analyze/__tests__/dead-code-confidence.test.js +0 -66
  537. package/dist/analyze/__tests__/dead-code-confidence.test.js.map +0 -1
  538. package/dist/analyze/__tests__/deployment-manifest.test.d.ts +0 -2
  539. package/dist/analyze/__tests__/deployment-manifest.test.d.ts.map +0 -1
  540. package/dist/analyze/__tests__/deployment-manifest.test.js +0 -66
  541. package/dist/analyze/__tests__/deployment-manifest.test.js.map +0 -1
  542. package/dist/analyze/__tests__/edge-filters.test.d.ts +0 -2
  543. package/dist/analyze/__tests__/edge-filters.test.d.ts.map +0 -1
  544. package/dist/analyze/__tests__/edge-filters.test.js +0 -66
  545. package/dist/analyze/__tests__/edge-filters.test.js.map +0 -1
  546. package/dist/analyze/__tests__/find-nodes.test.d.ts +0 -2
  547. package/dist/analyze/__tests__/find-nodes.test.d.ts.map +0 -1
  548. package/dist/analyze/__tests__/find-nodes.test.js +0 -129
  549. package/dist/analyze/__tests__/find-nodes.test.js.map +0 -1
  550. package/dist/analyze/__tests__/findings.test.d.ts +0 -2
  551. package/dist/analyze/__tests__/findings.test.d.ts.map +0 -1
  552. package/dist/analyze/__tests__/findings.test.js +0 -100
  553. package/dist/analyze/__tests__/findings.test.js.map +0 -1
  554. package/dist/analyze/__tests__/governor-risks-detection.test.d.ts +0 -2
  555. package/dist/analyze/__tests__/governor-risks-detection.test.d.ts.map +0 -1
  556. package/dist/analyze/__tests__/governor-risks-detection.test.js +0 -160
  557. package/dist/analyze/__tests__/governor-risks-detection.test.js.map +0 -1
  558. package/dist/analyze/__tests__/populate.test.d.ts +0 -2
  559. package/dist/analyze/__tests__/populate.test.d.ts.map +0 -1
  560. package/dist/analyze/__tests__/populate.test.js +0 -129
  561. package/dist/analyze/__tests__/populate.test.js.map +0 -1
  562. package/dist/analyze/__tests__/security-fls-filter.test.d.ts +0 -2
  563. package/dist/analyze/__tests__/security-fls-filter.test.d.ts.map +0 -1
  564. package/dist/analyze/__tests__/security-fls-filter.test.js +0 -23
  565. package/dist/analyze/__tests__/security-fls-filter.test.js.map +0 -1
  566. package/dist/analyze/__tests__/traversal-caps.test.d.ts +0 -2
  567. package/dist/analyze/__tests__/traversal-caps.test.d.ts.map +0 -1
  568. package/dist/analyze/__tests__/traversal-caps.test.js +0 -129
  569. package/dist/analyze/__tests__/traversal-caps.test.js.map +0 -1
  570. package/dist/analyze/__tests__/wip-impact.test.d.ts +0 -2
  571. package/dist/analyze/__tests__/wip-impact.test.d.ts.map +0 -1
  572. package/dist/analyze/__tests__/wip-impact.test.js +0 -134
  573. package/dist/analyze/__tests__/wip-impact.test.js.map +0 -1
  574. package/dist/embedding/__tests__/embed.test.d.ts +0 -2
  575. package/dist/embedding/__tests__/embed.test.d.ts.map +0 -1
  576. package/dist/embedding/__tests__/embed.test.js +0 -72
  577. package/dist/embedding/__tests__/embed.test.js.map +0 -1
  578. package/dist/embedding/__tests__/queue.test.d.ts +0 -2
  579. package/dist/embedding/__tests__/queue.test.d.ts.map +0 -1
  580. package/dist/embedding/__tests__/queue.test.js +0 -64
  581. package/dist/embedding/__tests__/queue.test.js.map +0 -1
  582. package/dist/extractors/__tests__/network-egress.test.d.ts +0 -2
  583. package/dist/extractors/__tests__/network-egress.test.d.ts.map +0 -1
  584. package/dist/extractors/__tests__/network-egress.test.js +0 -32
  585. package/dist/extractors/__tests__/network-egress.test.js.map +0 -1
  586. package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts +0 -2
  587. package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts.map +0 -1
  588. package/dist/extractors/filesystem/__tests__/filesystem.test.js +0 -96
  589. package/dist/extractors/filesystem/__tests__/filesystem.test.js.map +0 -1
  590. package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts +0 -38
  591. package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts.map +0 -1
  592. package/dist/extractors/live-org/__tests__/_jsforce-mock.js +0 -96
  593. package/dist/extractors/live-org/__tests__/_jsforce-mock.js.map +0 -1
  594. package/dist/extractors/live-org/__tests__/auth.test.d.ts +0 -2
  595. package/dist/extractors/live-org/__tests__/auth.test.d.ts.map +0 -1
  596. package/dist/extractors/live-org/__tests__/auth.test.js +0 -85
  597. package/dist/extractors/live-org/__tests__/auth.test.js.map +0 -1
  598. package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts +0 -2
  599. package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts.map +0 -1
  600. package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js +0 -150
  601. package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js.map +0 -1
  602. package/dist/extractors/live-org/__tests__/capabilities.test.d.ts +0 -2
  603. package/dist/extractors/live-org/__tests__/capabilities.test.d.ts.map +0 -1
  604. package/dist/extractors/live-org/__tests__/capabilities.test.js +0 -54
  605. package/dist/extractors/live-org/__tests__/capabilities.test.js.map +0 -1
  606. package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts +0 -2
  607. package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts.map +0 -1
  608. package/dist/extractors/live-org/__tests__/custom-settings.test.js +0 -79
  609. package/dist/extractors/live-org/__tests__/custom-settings.test.js.map +0 -1
  610. package/dist/extractors/live-org/__tests__/discovery.test.d.ts +0 -2
  611. package/dist/extractors/live-org/__tests__/discovery.test.d.ts.map +0 -1
  612. package/dist/extractors/live-org/__tests__/discovery.test.js +0 -55
  613. package/dist/extractors/live-org/__tests__/discovery.test.js.map +0 -1
  614. package/dist/extractors/live-org/__tests__/dispatch.test.d.ts +0 -2
  615. package/dist/extractors/live-org/__tests__/dispatch.test.d.ts.map +0 -1
  616. package/dist/extractors/live-org/__tests__/dispatch.test.js +0 -68
  617. package/dist/extractors/live-org/__tests__/dispatch.test.js.map +0 -1
  618. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts +0 -2
  619. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts.map +0 -1
  620. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js +0 -374
  621. package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js.map +0 -1
  622. package/dist/extractors/live-org/__tests__/liveness.test.d.ts +0 -2
  623. package/dist/extractors/live-org/__tests__/liveness.test.d.ts.map +0 -1
  624. package/dist/extractors/live-org/__tests__/liveness.test.js +0 -148
  625. package/dist/extractors/live-org/__tests__/liveness.test.js.map +0 -1
  626. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts +0 -2
  627. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts.map +0 -1
  628. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +0 -177
  629. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +0 -1
  630. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts +0 -2
  631. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts.map +0 -1
  632. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +0 -75
  633. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +0 -1
  634. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts +0 -2
  635. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts.map +0 -1
  636. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +0 -135
  637. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +0 -1
  638. package/dist/extractors/live-org/__tests__/pools.test.d.ts +0 -2
  639. package/dist/extractors/live-org/__tests__/pools.test.d.ts.map +0 -1
  640. package/dist/extractors/live-org/__tests__/pools.test.js +0 -78
  641. package/dist/extractors/live-org/__tests__/pools.test.js.map +0 -1
  642. package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts +0 -2
  643. package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts.map +0 -1
  644. package/dist/extractors/live-org/__tests__/rate-limit.test.js +0 -73
  645. package/dist/extractors/live-org/__tests__/rate-limit.test.js.map +0 -1
  646. package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts +0 -2
  647. package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts.map +0 -1
  648. package/dist/extractors/live-org/__tests__/read-only-proxy.test.js +0 -376
  649. package/dist/extractors/live-org/__tests__/read-only-proxy.test.js.map +0 -1
  650. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts +0 -2
  651. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts.map +0 -1
  652. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js +0 -118
  653. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +0 -1
  654. package/dist/extractors/live-org/__tests__/source-member.test.d.ts +0 -2
  655. package/dist/extractors/live-org/__tests__/source-member.test.d.ts.map +0 -1
  656. package/dist/extractors/live-org/__tests__/source-member.test.js +0 -84
  657. package/dist/extractors/live-org/__tests__/source-member.test.js.map +0 -1
  658. package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts +0 -2
  659. package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts.map +0 -1
  660. package/dist/extractors/live-org/__tests__/stop-waiting.test.js +0 -243
  661. package/dist/extractors/live-org/__tests__/stop-waiting.test.js.map +0 -1
  662. package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts +0 -2
  663. package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts.map +0 -1
  664. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +0 -115
  665. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +0 -1
  666. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts +0 -2
  667. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts.map +0 -1
  668. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js +0 -40
  669. package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js.map +0 -1
  670. package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts +0 -2
  671. package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts.map +0 -1
  672. package/dist/extractors/live-org/__tests__/wedge-isolation.test.js +0 -270
  673. package/dist/extractors/live-org/__tests__/wedge-isolation.test.js.map +0 -1
  674. package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts +0 -2
  675. package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts.map +0 -1
  676. package/dist/extractors/live-org/extractors/__tests__/apex.test.js +0 -73
  677. package/dist/extractors/live-org/extractors/__tests__/apex.test.js.map +0 -1
  678. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts +0 -2
  679. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts.map +0 -1
  680. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js +0 -183
  681. package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js.map +0 -1
  682. package/dist/ingest/__tests__/config-values.test.d.ts +0 -2
  683. package/dist/ingest/__tests__/config-values.test.d.ts.map +0 -1
  684. package/dist/ingest/__tests__/config-values.test.js +0 -65
  685. package/dist/ingest/__tests__/config-values.test.js.map +0 -1
  686. package/dist/ingest/__tests__/full-sync-deletion.test.d.ts +0 -2
  687. package/dist/ingest/__tests__/full-sync-deletion.test.d.ts.map +0 -1
  688. package/dist/ingest/__tests__/full-sync-deletion.test.js +0 -207
  689. package/dist/ingest/__tests__/full-sync-deletion.test.js.map +0 -1
  690. package/dist/ingest/__tests__/incremental-deletion.test.d.ts +0 -2
  691. package/dist/ingest/__tests__/incremental-deletion.test.d.ts.map +0 -1
  692. package/dist/ingest/__tests__/incremental-deletion.test.js +0 -92
  693. package/dist/ingest/__tests__/incremental-deletion.test.js.map +0 -1
  694. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts +0 -10
  695. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts.map +0 -1
  696. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js +0 -251
  697. package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js.map +0 -1
  698. package/dist/ingest/__tests__/live-ingest.test.d.ts +0 -2
  699. package/dist/ingest/__tests__/live-ingest.test.d.ts.map +0 -1
  700. package/dist/ingest/__tests__/live-ingest.test.js +0 -155
  701. package/dist/ingest/__tests__/live-ingest.test.js.map +0 -1
  702. package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts +0 -2
  703. package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts.map +0 -1
  704. package/dist/ingest/__tests__/multi-org-orchestrator.test.js +0 -108
  705. package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +0 -1
  706. package/dist/ingest/__tests__/parser-dispatch.test.d.ts +0 -2
  707. package/dist/ingest/__tests__/parser-dispatch.test.d.ts.map +0 -1
  708. package/dist/ingest/__tests__/parser-dispatch.test.js +0 -55
  709. package/dist/ingest/__tests__/parser-dispatch.test.js.map +0 -1
  710. package/dist/ingest/__tests__/read-only-wrapping.test.d.ts +0 -2
  711. package/dist/ingest/__tests__/read-only-wrapping.test.d.ts.map +0 -1
  712. package/dist/ingest/__tests__/read-only-wrapping.test.js +0 -62
  713. package/dist/ingest/__tests__/read-only-wrapping.test.js.map +0 -1
  714. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts +0 -2
  715. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts.map +0 -1
  716. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js +0 -134
  717. package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js.map +0 -1
  718. package/dist/parsers/__tests__/_harness.d.ts +0 -13
  719. package/dist/parsers/__tests__/_harness.d.ts.map +0 -1
  720. package/dist/parsers/__tests__/_harness.js +0 -84
  721. package/dist/parsers/__tests__/_harness.js.map +0 -1
  722. package/dist/parsers/__tests__/apex.golden.test.d.ts +0 -2
  723. package/dist/parsers/__tests__/apex.golden.test.d.ts.map +0 -1
  724. package/dist/parsers/__tests__/apex.golden.test.js +0 -28
  725. package/dist/parsers/__tests__/apex.golden.test.js.map +0 -1
  726. package/dist/parsers/__tests__/cross-flavor.test.d.ts +0 -2
  727. package/dist/parsers/__tests__/cross-flavor.test.d.ts.map +0 -1
  728. package/dist/parsers/__tests__/cross-flavor.test.js +0 -56
  729. package/dist/parsers/__tests__/cross-flavor.test.js.map +0 -1
  730. package/dist/parsers/__tests__/datatransform-structured.test.d.ts +0 -2
  731. package/dist/parsers/__tests__/datatransform-structured.test.d.ts.map +0 -1
  732. package/dist/parsers/__tests__/datatransform-structured.test.js +0 -147
  733. package/dist/parsers/__tests__/datatransform-structured.test.js.map +0 -1
  734. package/dist/parsers/__tests__/edge-provenance.test.d.ts +0 -2
  735. package/dist/parsers/__tests__/edge-provenance.test.d.ts.map +0 -1
  736. package/dist/parsers/__tests__/edge-provenance.test.js +0 -47
  737. package/dist/parsers/__tests__/edge-provenance.test.js.map +0 -1
  738. package/dist/parsers/__tests__/flow.golden.test.d.ts +0 -2
  739. package/dist/parsers/__tests__/flow.golden.test.d.ts.map +0 -1
  740. package/dist/parsers/__tests__/flow.golden.test.js +0 -17
  741. package/dist/parsers/__tests__/flow.golden.test.js.map +0 -1
  742. package/dist/parsers/__tests__/integration.golden.test.d.ts +0 -2
  743. package/dist/parsers/__tests__/integration.golden.test.d.ts.map +0 -1
  744. package/dist/parsers/__tests__/integration.golden.test.js +0 -31
  745. package/dist/parsers/__tests__/integration.golden.test.js.map +0 -1
  746. package/dist/parsers/__tests__/long-tail.golden.test.d.ts +0 -2
  747. package/dist/parsers/__tests__/long-tail.golden.test.d.ts.map +0 -1
  748. package/dist/parsers/__tests__/long-tail.golden.test.js +0 -115
  749. package/dist/parsers/__tests__/long-tail.golden.test.js.map +0 -1
  750. package/dist/parsers/__tests__/lwc-bindings.test.d.ts +0 -2
  751. package/dist/parsers/__tests__/lwc-bindings.test.d.ts.map +0 -1
  752. package/dist/parsers/__tests__/lwc-bindings.test.js +0 -149
  753. package/dist/parsers/__tests__/lwc-bindings.test.js.map +0 -1
  754. package/dist/parsers/__tests__/lwc.golden.test.d.ts +0 -2
  755. package/dist/parsers/__tests__/lwc.golden.test.d.ts.map +0 -1
  756. package/dist/parsers/__tests__/lwc.golden.test.js +0 -16
  757. package/dist/parsers/__tests__/lwc.golden.test.js.map +0 -1
  758. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts +0 -2
  759. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts.map +0 -1
  760. package/dist/parsers/__tests__/mcd-gap-fills.test.js +0 -75
  761. package/dist/parsers/__tests__/mcd-gap-fills.test.js.map +0 -1
  762. package/dist/parsers/__tests__/object-inline-fields.test.d.ts +0 -2
  763. package/dist/parsers/__tests__/object-inline-fields.test.d.ts.map +0 -1
  764. package/dist/parsers/__tests__/object-inline-fields.test.js +0 -115
  765. package/dist/parsers/__tests__/object-inline-fields.test.js.map +0 -1
  766. package/dist/parsers/__tests__/object.golden.test.d.ts +0 -2
  767. package/dist/parsers/__tests__/object.golden.test.d.ts.map +0 -1
  768. package/dist/parsers/__tests__/object.golden.test.js +0 -33
  769. package/dist/parsers/__tests__/object.golden.test.js.map +0 -1
  770. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts +0 -2
  771. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts.map +0 -1
  772. package/dist/parsers/__tests__/omnistudio-overlap.test.js +0 -163
  773. package/dist/parsers/__tests__/omnistudio-overlap.test.js.map +0 -1
  774. package/dist/parsers/__tests__/omnistudio.golden.test.d.ts +0 -2
  775. package/dist/parsers/__tests__/omnistudio.golden.test.d.ts.map +0 -1
  776. package/dist/parsers/__tests__/omnistudio.golden.test.js +0 -53
  777. package/dist/parsers/__tests__/omnistudio.golden.test.js.map +0 -1
  778. package/dist/parsers/__tests__/reflection-walker.test.d.ts +0 -2
  779. package/dist/parsers/__tests__/reflection-walker.test.d.ts.map +0 -1
  780. package/dist/parsers/__tests__/reflection-walker.test.js +0 -162
  781. package/dist/parsers/__tests__/reflection-walker.test.js.map +0 -1
  782. package/dist/parsers/__tests__/registry.test.d.ts +0 -2
  783. package/dist/parsers/__tests__/registry.test.d.ts.map +0 -1
  784. package/dist/parsers/__tests__/registry.test.js +0 -23
  785. package/dist/parsers/__tests__/registry.test.js.map +0 -1
  786. package/dist/parsers/__tests__/security.golden.test.d.ts +0 -2
  787. package/dist/parsers/__tests__/security.golden.test.d.ts.map +0 -1
  788. package/dist/parsers/__tests__/security.golden.test.js +0 -31
  789. package/dist/parsers/__tests__/security.golden.test.js.map +0 -1
  790. package/dist/parsers/__tests__/vlocity.golden.test.d.ts +0 -2
  791. package/dist/parsers/__tests__/vlocity.golden.test.d.ts.map +0 -1
  792. package/dist/parsers/__tests__/vlocity.golden.test.js +0 -105
  793. package/dist/parsers/__tests__/vlocity.golden.test.js.map +0 -1
  794. package/dist/parsers/__tests__/worker-pool.test.d.ts +0 -2
  795. package/dist/parsers/__tests__/worker-pool.test.d.ts.map +0 -1
  796. package/dist/parsers/__tests__/worker-pool.test.js +0 -48
  797. package/dist/parsers/__tests__/worker-pool.test.js.map +0 -1
  798. package/dist/parsers/apex/__tests__/arity-resolver.test.d.ts +0 -2
  799. package/dist/parsers/apex/__tests__/arity-resolver.test.d.ts.map +0 -1
  800. package/dist/parsers/apex/__tests__/arity-resolver.test.js +0 -135
  801. package/dist/parsers/apex/__tests__/arity-resolver.test.js.map +0 -1
  802. package/dist/parsers/apex/__tests__/ast-extractor.test.d.ts +0 -2
  803. package/dist/parsers/apex/__tests__/ast-extractor.test.d.ts.map +0 -1
  804. package/dist/parsers/apex/__tests__/ast-extractor.test.js +0 -206
  805. package/dist/parsers/apex/__tests__/ast-extractor.test.js.map +0 -1
  806. package/dist/parsers/apex/__tests__/empty-body.test.d.ts +0 -2
  807. package/dist/parsers/apex/__tests__/empty-body.test.d.ts.map +0 -1
  808. package/dist/parsers/apex/__tests__/empty-body.test.js +0 -40
  809. package/dist/parsers/apex/__tests__/empty-body.test.js.map +0 -1
  810. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts +0 -2
  811. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts.map +0 -1
  812. package/dist/parsers/apex/__tests__/is-test-attribute.test.js +0 -56
  813. package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +0 -1
  814. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts +0 -2
  815. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts.map +0 -1
  816. package/dist/parsers/apex/__tests__/regex-arg-count.test.js +0 -82
  817. package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +0 -1
  818. package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts +0 -2
  819. package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts.map +0 -1
  820. package/dist/parsers/apex/__tests__/regex-inloop.test.js +0 -70
  821. package/dist/parsers/apex/__tests__/regex-inloop.test.js.map +0 -1
  822. package/dist/parsers/flow/__tests__/invocable-resolver.test.d.ts +0 -2
  823. package/dist/parsers/flow/__tests__/invocable-resolver.test.d.ts.map +0 -1
  824. package/dist/parsers/flow/__tests__/invocable-resolver.test.js +0 -91
  825. package/dist/parsers/flow/__tests__/invocable-resolver.test.js.map +0 -1
  826. package/dist/parsers/rules/__tests__/applies-to.test.d.ts +0 -2
  827. package/dist/parsers/rules/__tests__/applies-to.test.d.ts.map +0 -1
  828. package/dist/parsers/rules/__tests__/applies-to.test.js +0 -31
  829. package/dist/parsers/rules/__tests__/applies-to.test.js.map +0 -1
  830. package/dist/parsers/rules/__tests__/applies-to.test.ts +0 -40
  831. package/dist/parsers/rules/__tests__/engine.test.d.ts +0 -2
  832. package/dist/parsers/rules/__tests__/engine.test.d.ts.map +0 -1
  833. package/dist/parsers/rules/__tests__/engine.test.js +0 -127
  834. package/dist/parsers/rules/__tests__/engine.test.js.map +0 -1
  835. package/dist/parsers/rules/__tests__/engine.test.ts +0 -138
  836. package/dist/parsers/rules/__tests__/loader.test.d.ts +0 -2
  837. package/dist/parsers/rules/__tests__/loader.test.d.ts.map +0 -1
  838. package/dist/parsers/rules/__tests__/loader.test.js +0 -31
  839. package/dist/parsers/rules/__tests__/loader.test.js.map +0 -1
  840. package/dist/parsers/rules/__tests__/loader.test.ts +0 -37
  841. package/dist/parsers/rules/__tests__/schema.test.d.ts +0 -2
  842. package/dist/parsers/rules/__tests__/schema.test.d.ts.map +0 -1
  843. package/dist/parsers/rules/__tests__/schema.test.js +0 -33
  844. package/dist/parsers/rules/__tests__/schema.test.js.map +0 -1
  845. package/dist/parsers/rules/__tests__/schema.test.ts +0 -37
  846. package/dist/parsers/rules/__tests__/selectors.test.d.ts +0 -2
  847. package/dist/parsers/rules/__tests__/selectors.test.d.ts.map +0 -1
  848. package/dist/parsers/rules/__tests__/selectors.test.js +0 -51
  849. package/dist/parsers/rules/__tests__/selectors.test.js.map +0 -1
  850. package/dist/parsers/rules/__tests__/selectors.test.ts +0 -62
  851. package/dist/render/__tests__/sarif.test.d.ts +0 -2
  852. package/dist/render/__tests__/sarif.test.d.ts.map +0 -1
  853. package/dist/render/__tests__/sarif.test.js +0 -126
  854. package/dist/render/__tests__/sarif.test.js.map +0 -1
  855. package/dist/render/mermaid/__tests__/mermaid.test.d.ts +0 -2
  856. package/dist/render/mermaid/__tests__/mermaid.test.d.ts.map +0 -1
  857. package/dist/render/mermaid/__tests__/mermaid.test.js +0 -74
  858. package/dist/render/mermaid/__tests__/mermaid.test.js.map +0 -1
  859. package/dist/storage/__tests__/analysis-tables-migration.test.d.ts +0 -2
  860. package/dist/storage/__tests__/analysis-tables-migration.test.d.ts.map +0 -1
  861. package/dist/storage/__tests__/analysis-tables-migration.test.js +0 -44
  862. package/dist/storage/__tests__/analysis-tables-migration.test.js.map +0 -1
  863. package/dist/storage/__tests__/graph-store.test.d.ts +0 -2
  864. package/dist/storage/__tests__/graph-store.test.d.ts.map +0 -1
  865. package/dist/storage/__tests__/graph-store.test.js +0 -145
  866. package/dist/storage/__tests__/graph-store.test.js.map +0 -1
  867. package/dist/storage/__tests__/identifier.test.d.ts +0 -2
  868. package/dist/storage/__tests__/identifier.test.d.ts.map +0 -1
  869. package/dist/storage/__tests__/identifier.test.js +0 -35
  870. package/dist/storage/__tests__/identifier.test.js.map +0 -1
  871. package/dist/storage/__tests__/load-better-sqlite3.test.d.ts +0 -2
  872. package/dist/storage/__tests__/load-better-sqlite3.test.d.ts.map +0 -1
  873. package/dist/storage/__tests__/load-better-sqlite3.test.js +0 -65
  874. package/dist/storage/__tests__/load-better-sqlite3.test.js.map +0 -1
  875. package/dist/storage/__tests__/migrations.test.d.ts +0 -2
  876. package/dist/storage/__tests__/migrations.test.d.ts.map +0 -1
  877. package/dist/storage/__tests__/migrations.test.js +0 -93
  878. package/dist/storage/__tests__/migrations.test.js.map +0 -1
  879. package/dist/storage/__tests__/perf-50k.test.d.ts +0 -2
  880. package/dist/storage/__tests__/perf-50k.test.d.ts.map +0 -1
  881. package/dist/storage/__tests__/perf-50k.test.js +0 -67
  882. package/dist/storage/__tests__/perf-50k.test.js.map +0 -1
  883. package/dist/storage/__tests__/rename-stability.test.d.ts +0 -2
  884. package/dist/storage/__tests__/rename-stability.test.d.ts.map +0 -1
  885. package/dist/storage/__tests__/rename-stability.test.js +0 -135
  886. package/dist/storage/__tests__/rename-stability.test.js.map +0 -1
  887. package/dist/storage/__tests__/snapshot-store.test.d.ts +0 -2
  888. package/dist/storage/__tests__/snapshot-store.test.d.ts.map +0 -1
  889. package/dist/storage/__tests__/snapshot-store.test.js +0 -117
  890. package/dist/storage/__tests__/snapshot-store.test.js.map +0 -1
  891. package/dist/storage/__tests__/snippets.test.d.ts +0 -2
  892. package/dist/storage/__tests__/snippets.test.d.ts.map +0 -1
  893. package/dist/storage/__tests__/snippets.test.js +0 -88
  894. package/dist/storage/__tests__/snippets.test.js.map +0 -1
  895. package/dist/storage/__tests__/sync-generation.test.d.ts +0 -2
  896. package/dist/storage/__tests__/sync-generation.test.d.ts.map +0 -1
  897. package/dist/storage/__tests__/sync-generation.test.js +0 -159
  898. package/dist/storage/__tests__/sync-generation.test.js.map +0 -1
  899. package/dist/storage/__tests__/vector-store-load-failure.test.d.ts +0 -2
  900. package/dist/storage/__tests__/vector-store-load-failure.test.d.ts.map +0 -1
  901. package/dist/storage/__tests__/vector-store-load-failure.test.js +0 -42
  902. package/dist/storage/__tests__/vector-store-load-failure.test.js.map +0 -1
  903. package/dist/storage/__tests__/vector-store.test.d.ts +0 -2
  904. package/dist/storage/__tests__/vector-store.test.d.ts.map +0 -1
  905. package/dist/storage/__tests__/vector-store.test.js +0 -87
  906. package/dist/storage/__tests__/vector-store.test.js.map +0 -1
  907. package/dist/telemetry/__tests__/event-schema.test.d.ts +0 -2
  908. package/dist/telemetry/__tests__/event-schema.test.d.ts.map +0 -1
  909. package/dist/telemetry/__tests__/event-schema.test.js +0 -56
  910. package/dist/telemetry/__tests__/event-schema.test.js.map +0 -1
  911. package/dist/telemetry/__tests__/machine-id.test.d.ts +0 -2
  912. package/dist/telemetry/__tests__/machine-id.test.d.ts.map +0 -1
  913. package/dist/telemetry/__tests__/machine-id.test.js +0 -33
  914. package/dist/telemetry/__tests__/machine-id.test.js.map +0 -1
  915. package/dist/telemetry/__tests__/pipeline.test.d.ts +0 -2
  916. package/dist/telemetry/__tests__/pipeline.test.d.ts.map +0 -1
  917. package/dist/telemetry/__tests__/pipeline.test.js +0 -68
  918. package/dist/telemetry/__tests__/pipeline.test.js.map +0 -1
  919. package/dist/telemetry/__tests__/sanitizer.test.d.ts +0 -2
  920. package/dist/telemetry/__tests__/sanitizer.test.d.ts.map +0 -1
  921. package/dist/telemetry/__tests__/sanitizer.test.js +0 -143
  922. package/dist/telemetry/__tests__/sanitizer.test.js.map +0 -1
@@ -14,6 +14,13 @@ export interface CrossOrgDiff {
14
14
  * narrow the scope or paginate before drawing conclusions.
15
15
  */
16
16
  truncated?: boolean;
17
+ /**
18
+ * Set when a named `category` matches no label in either store (compared without case), so
19
+ * the empty result means "neither org has any", not "no differences".
20
+ */
21
+ unknownCategory?: boolean;
22
+ /** The stored label(s) a named `category` resolved to (case-insensitive match). */
23
+ resolvedCategory?: string[];
17
24
  }
18
25
  /**
19
26
  * Per-label cap on cross-org node scans. Exported so callers can surface it
@@ -39,4 +46,32 @@ export interface DiffOrgsArgs {
39
46
  */
40
47
  export declare function diffOrgs(args: DiffOrgsArgs): CrossOrgDiff;
41
48
  export declare function diffOrgs(store: GraphStore, orgA: OrgId, orgB: OrgId, category?: string | "all"): CrossOrgDiff;
49
+ /**
50
+ * True for a managed-package item: its own name carries a namespace prefix by the API-name
51
+ * grammar (`namespaceOfApiName`: `acme__Invoice__c`, `acme__Loc__Latitude__s`), or it is Apex
52
+ * whose code the org does not show. The org returns managed Apex with an empty body, which the
53
+ * class parser stores as a stub marked `bodyUnavailable`. Graphs built before that marker hold the
54
+ * same stub as a class with no modifiers and no parse failure (a parsed top-level class or enum
55
+ * always declares an access modifier); a trigger stub has no object and no events.
56
+ */
57
+ export declare function isManagedItem(n: NodeFact): boolean;
58
+ /** True for a standard Salesforce object or field: one without a custom suffix. */
59
+ export declare function isStandardItem(n: NodeFact): boolean;
60
+ export interface HiddenCounts {
61
+ managed: number;
62
+ standard: number;
63
+ }
64
+ /**
65
+ * Drop managed-package and standard items that are in one org only. Such an item
66
+ * is almost always a difference in what was installed or retrieved (every org has
67
+ * the standard objects; a package brings its own pieces), not work someone did.
68
+ * The same items in both orgs with different source stay: that is a real change.
69
+ * A managed item that is also standard counts once, as managed.
70
+ */
71
+ export declare function hideOneSided(diff: CrossOrgDiff, opts: {
72
+ includeManaged: boolean;
73
+ includeStandard: boolean;
74
+ }): CrossOrgDiff & {
75
+ hidden: HiddenCounts;
76
+ };
42
77
  //# sourceMappingURL=cross-org.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,QAAQ,CAAC;QAAC,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAI7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GACxB,YAAY,CAAC"}
1
+ {"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,QAAQ,CAAC;QAAC,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAkB7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GACxB,YAAY,CAAC;AAwFhB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAgBlD;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGnD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAC1D,YAAY,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAmBzC"}
@@ -1,10 +1,25 @@
1
1
  import { METADATA_CATEGORY } from "../domain/metadata-category.js";
2
+ import { namespaceOfApiName } from "./field-scope.js";
2
3
  /**
3
4
  * Per-label cap on cross-org node scans. Exported so callers can surface it
4
5
  * verbatim in user-facing summaries.
5
6
  */
6
7
  export const CROSS_ORG_PER_LABEL_CAP = 10000;
7
- const ALL_LABELS = Object.values(METADATA_CATEGORY);
8
+ /**
9
+ * Labels `category: "all"` covers: every label stored in either graph (parsers
10
+ * emit labels such as LWC, ApexMethod, DataRaptor or OmniScript that are not
11
+ * METADATA_CATEGORY values), plus the category names for stores that predate
12
+ * the label cache.
13
+ */
14
+ function allLabels(storeA, storeB) {
15
+ return [
16
+ ...new Set([
17
+ ...storeA.listAllLabels(),
18
+ ...storeB.listAllLabels(),
19
+ ...Object.values(METADATA_CATEGORY),
20
+ ]),
21
+ ];
22
+ }
8
23
  export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all") {
9
24
  let storeA;
10
25
  let storeB;
@@ -29,7 +44,17 @@ export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all
29
44
  orgB = maybeOrgB;
30
45
  category = maybeCategory;
31
46
  }
32
- const labels = category === "all" ? ALL_LABELS : [category];
47
+ // `all` in any case means every label; a named category matches stored labels without case
48
+ // (`apexclass` finds `ApexClass`), so a casing slip does not read as "no differences".
49
+ const isAll = category.toLowerCase() === "all";
50
+ const wanted = category.toLowerCase();
51
+ const resolved = isAll
52
+ ? []
53
+ : [
54
+ ...new Set([...storeA.listAllLabels(), ...storeB.listAllLabels()].filter((l) => l.toLowerCase() === wanted)),
55
+ ];
56
+ // No stored label matches: still query the name as given (a store without the label cache).
57
+ const labels = isAll ? allLabels(storeA, storeB) : resolved.length ? resolved : [category];
33
58
  const aMap = new Map();
34
59
  const bMap = new Map();
35
60
  let truncated = false;
@@ -59,6 +84,80 @@ export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all
59
84
  if (!aMap.has(k))
60
85
  onlyInB.push(b);
61
86
  }
62
- return { onlyInA, onlyInB, changed, truncated };
87
+ if (isAll)
88
+ return { onlyInA, onlyInB, changed, truncated };
89
+ if (resolved.length > 0 || aMap.size > 0 || bMap.size > 0)
90
+ return {
91
+ onlyInA,
92
+ onlyInB,
93
+ changed,
94
+ truncated,
95
+ resolvedCategory: resolved.length ? resolved : [category],
96
+ };
97
+ return { onlyInA, onlyInB, changed, truncated, unknownCategory: true, resolvedCategory: [] };
98
+ }
99
+ /** The item's own name: the last dotted part of the qname (`Tier__c` for `CustomField:Account.Tier__c`). */
100
+ function ownName(n) {
101
+ const q = String(n.qualifiedName);
102
+ const local = q.slice(q.indexOf(":") + 1);
103
+ return local.slice(local.lastIndexOf(".") + 1);
104
+ }
105
+ /**
106
+ * True for a managed-package item: its own name carries a namespace prefix by the API-name
107
+ * grammar (`namespaceOfApiName`: `acme__Invoice__c`, `acme__Loc__Latitude__s`), or it is Apex
108
+ * whose code the org does not show. The org returns managed Apex with an empty body, which the
109
+ * class parser stores as a stub marked `bodyUnavailable`. Graphs built before that marker hold the
110
+ * same stub as a class with no modifiers and no parse failure (a parsed top-level class or enum
111
+ * always declares an access modifier); a trigger stub has no object and no events.
112
+ */
113
+ export function isManagedItem(n) {
114
+ if (namespaceOfApiName(ownName(n)) !== null)
115
+ return true;
116
+ const a = n.attributes ?? {};
117
+ if (n.label === "ApexClass") {
118
+ if (a.bodyUnavailable === true)
119
+ return true;
120
+ return (a.bodyUnavailable === undefined &&
121
+ Array.isArray(a.modifiers) &&
122
+ a.modifiers.length === 0 &&
123
+ !a.parseFailed &&
124
+ !a.isTest);
125
+ }
126
+ if (n.label === "ApexTrigger")
127
+ return Array.isArray(a.events) && a.events.length === 0 && a.object == null;
128
+ return false;
129
+ }
130
+ /** True for a standard Salesforce object or field: one without a custom suffix. */
131
+ export function isStandardItem(n) {
132
+ if (n.label !== "CustomObject" && n.label !== "CustomField")
133
+ return false;
134
+ return !ownName(n).includes("__");
135
+ }
136
+ /**
137
+ * Drop managed-package and standard items that are in one org only. Such an item
138
+ * is almost always a difference in what was installed or retrieved (every org has
139
+ * the standard objects; a package brings its own pieces), not work someone did.
140
+ * The same items in both orgs with different source stay: that is a real change.
141
+ * A managed item that is also standard counts once, as managed.
142
+ */
143
+ export function hideOneSided(diff, opts) {
144
+ const hidden = { managed: 0, standard: 0 };
145
+ const keep = (n) => {
146
+ if (!opts.includeManaged && isManagedItem(n)) {
147
+ hidden.managed++;
148
+ return false;
149
+ }
150
+ if (!opts.includeStandard && isStandardItem(n)) {
151
+ hidden.standard++;
152
+ return false;
153
+ }
154
+ return true;
155
+ };
156
+ return {
157
+ ...diff,
158
+ onlyInA: diff.onlyInA.filter(keep),
159
+ onlyInB: diff.onlyInB.filter(keep),
160
+ hidden,
161
+ };
63
162
  }
64
163
  //# sourceMappingURL=cross-org.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cross-org.js","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-org.js","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAqBtD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,SAAS,CAAC,MAAkB,EAAE,MAAkB;IACvD,OAAO;QACL,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,MAAM,CAAC,aAAa,EAAE;YACzB,GAAG,MAAM,CAAC,aAAa,EAAE;YACzB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;SACpC,CAAC;KACH,CAAC;AACJ,CAAC;AA2BD,MAAM,UAAU,QAAQ,CACtB,WAAsC,EACtC,SAAiB,EACjB,SAAiB,EACjB,gBAAgC,KAAK;IAErC,IAAI,MAAkB,CAAC;IACvB,IAAI,MAAkB,CAAC;IACvB,IAAI,IAAW,CAAC;IAChB,IAAI,IAAW,CAAC;IAChB,IAAI,QAAwB,CAAC;IAC7B,IACE,OAAO,WAAW,KAAK,QAAQ;QAC/B,WAAW,KAAK,IAAI;QACpB,QAAQ,IAAI,WAAW;QACvB,QAAQ,IAAI,WAAW,EACvB,CAAC;QACD,MAAM,CAAC,GAAG,WAA2B,CAAC;QACtC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAClB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAClB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACd,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACd,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,WAAyB,CAAC;QACnC,MAAM,GAAG,WAAyB,CAAC;QACnC,IAAI,GAAG,SAAkB,CAAC;QAC1B,IAAI,GAAG,SAAkB,CAAC;QAC1B,QAAQ,GAAG,aAAa,CAAC;IAC3B,CAAC;IAED,2FAA2F;IAC3F,uFAAuF;IACvF,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,GAAG,IAAI,GAAG,CACR,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAClC,CACF;SACF,CAAC;IACN,4FAA4F;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACzC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,uBAAuB;YAAE,SAAS,GAAG,IAAI,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,uBAAuB;YAAE,SAAS,GAAG,IAAI,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QACvD,OAAO;YACL,OAAO;YACP,OAAO;YACP,OAAO;YACP,SAAS;YACT,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC1D,CAAC;IACJ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAC/F,CAAC;AAED,4GAA4G;AAC5G,SAAS,OAAO,CAAC,CAAW;IAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,CACL,CAAC,CAAC,eAAe,KAAK,SAAS;YAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC,WAAW;YACd,CAAC,CAAC,CAAC,MAAM,CACV,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,aAAa;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,CAAW;IACxC,IAAI,CAAC,CAAC,KAAK,KAAK,cAAc,IAAI,CAAC,CAAC,KAAK,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAkB,EAClB,IAA2D;IAE3D,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,CAAC,CAAW,EAAW,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1,8 +1,104 @@
1
- import type { OrgId } from "@ryanstark24/sfgraph-shared";
2
- import type { NodeFact } from "../domain/index.js";
1
+ import type { OrgId, QualifiedName } from "@ryanstark24/sfgraph-shared";
2
+ import { type NodeFact } from "../domain/index.js";
3
3
  import type { GraphStore } from "../storage/interfaces.js";
4
+ /** The LWC parser (filesystem and live-org ingest alike) labels component
5
+ * nodes "LWC"; `METADATA_CATEGORY.LWC` is the member type
6
+ * "LightningComponentBundle", kept in case an older store uses it. */
7
+ export declare const LWC_NODE_LABEL = "LWC";
8
+ /** Labels the dead-code audit covers. One list for `findDeadCode` and the
9
+ * `_sfgraph_dead_code_scores` cache, so both produce the same candidates. */
10
+ export declare const DEAD_CODE_LABELS: readonly string[];
11
+ /** Is the edge's source test code? Memoised per audit run. */
12
+ export type TestSourceCheck = (src: QualifiedName) => boolean;
4
13
  /**
5
- * Dead code = low freshness AND zero incoming edges.
14
+ * A source is test code when its node is `@isTest` (an @isTest class, a
15
+ * TestMethod) or it is a member of an @isTest class (an untagged helper method
16
+ * inside a test class).
6
17
  */
18
+ export declare function makeTestSourceCheck(store: GraphStore, orgId: OrgId): TestSourceCheck;
19
+ export interface IncomingRefs {
20
+ /** Real usage references from production code. */
21
+ real: number;
22
+ /** References that would be real but come from test code (or IS_TEST_FOR). */
23
+ testOnly: number;
24
+ }
25
+ /**
26
+ * Count incoming edges that represent a REAL usage reference. Excludes:
27
+ * - permission grants (`GRANTS_*`) — being readable by a profile is not usage;
28
+ * - reflection-sourced edges (`attributes.source === 'reflection'`) — these are
29
+ * low-confidence, pattern-matched guesses, not proof the node is invoked;
30
+ * - the component's own bundle `CONTAINS_COMPONENT` (every LWC has one);
31
+ * - member containment (`CONTAINS_METHOD`): a method's own class is structure;
32
+ * - an object's own structure (`DEFINES_FIELD`, `HAS_VALIDATION_RULE`,
33
+ * `HAS_RECORD_TYPE`): a field is not used by the object that defines it.
34
+ * Counting any of these as a reference kept genuinely dead code "alive" in the audit.
35
+ *
36
+ * References from test code (`IS_TEST_FOR`, @isTest classes, test methods and
37
+ * members of @isTest classes) are counted apart in `testOnly`. They are
38
+ * references too (`deadCodeKind`): a class with test references only is not
39
+ * dead but `referenced-only-by-tests`, listed apart from the dead code.
40
+ *
41
+ * A reference to a member is a reference to its owner (containment.ts): edges
42
+ * into an ApexClass's methods count for the class. Edges from the node itself
43
+ * or its own members (internal calls) do not.
44
+ *
45
+ * The compiled-LWC → OmniScript edge is not usage by itself: it counts only
46
+ * when that LWC is itself launched by something real (same rules, and not
47
+ * the OmniScript itself), so liveness follows the launch path.
48
+ */
49
+ export declare function incomingRefs(store: GraphStore, orgId: OrgId, qname: QualifiedName, isTestSource?: TestSourceCheck): IncomingRefs;
50
+ /** Real (production) incoming references; see `incomingRefs`. */
51
+ export declare function realIncomingRefCount(store: GraphStore, orgId: OrgId, qname: QualifiedName): number;
52
+ /** An `@isTest` class (or test method) node. */
53
+ export declare function isTestClass(n: NodeFact): boolean;
54
+ /**
55
+ * `dead`: nothing references the node, test code included.
56
+ * `referenced-only-by-tests`: production code whose only references come
57
+ * from test code (delete-safety view: it goes together with its tests).
58
+ */
59
+ export type DeadCodeKind = "dead" | "referenced-only-by-tests";
60
+ export interface DeadCodeCandidate {
61
+ node: NodeFact;
62
+ kind: DeadCodeKind;
63
+ /** The node is an `@isTest` class. */
64
+ isTest: boolean;
65
+ /** References from test code (> 0 only for `referenced-only-by-tests`). */
66
+ testOnlyRefs: number;
67
+ }
68
+ /**
69
+ * The kind of a node with these incoming references, or null when it is in
70
+ * use. Test references count as references (catalog contract: "test classes
71
+ * do count as references"), so a class a test uses is not dead; an `@isTest`
72
+ * class nothing references is dead like any other node (flagged `isTest`). A
73
+ * production node referenced by tests only is listed apart; test code
74
+ * referenced by other tests (a test utility) is in use.
75
+ */
76
+ export declare function deadCodeKind(refs: IncomingRefs, isTest: boolean): DeadCodeKind | null;
77
+ /**
78
+ * Dead-code candidates of DEAD_CODE_LABELS, both kinds (`deadCodeKind`):
79
+ * the score cache holds both and readers keep them apart. Freshness does not
80
+ * decide membership; it grades confidence in the score cache
81
+ * (`populateDeadCodeScores`: stale = high, recently modified = low). A
82
+ * filesystem ingest stamps every node with its checkout mtime, so a freshness
83
+ * gate here would hide every unreferenced node.
84
+ */
85
+ export declare function deadCodeCandidates(store: GraphStore, orgId: OrgId): DeadCodeCandidate[];
86
+ /** The dead nodes of `deadCodeCandidates` (no inbound reference of any kind). */
7
87
  export declare function findDeadCode(store: GraphStore, orgId: OrgId): NodeFact[];
88
+ export type DeadCodeConfidence = "high" | "medium" | "low";
89
+ export interface DeadCodeScore {
90
+ score: number;
91
+ confidence: DeadCodeConfidence;
92
+ reasons: string[];
93
+ }
94
+ /**
95
+ * Score a dead-code candidate (a node `findDeadCode` returned). Lower = more
96
+ * dead. With zero inbound the incoming term (0.4 weight) is 0, so the score is
97
+ * 0.6 * freshness: older than 180 days = high, 31-180 days or no timestamp =
98
+ * medium, 30 days or newer = low. Shared by the score cache and the live path.
99
+ * `testOnlyRefs` > 0 (a `deadCodeCandidates` count) gives the reason
100
+ * `referenced_only_by_tests` in place of `no_incoming_edges`; `isTest` adds
101
+ * `test_class` (an unreferenced `@isTest` class).
102
+ */
103
+ export declare function scoreDeadCode(node: NodeFact, now?: number, testOnlyRefs?: number, isTest?: boolean): DeadCodeScore;
8
104
  //# sourceMappingURL=dead-code.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dead-code.d.ts","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAYxE"}
1
+ {"version":3,"file":"dead-code.d.ts","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAiB,KAAK,QAAQ,EAAa,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D;;uEAEuE;AACvE,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;8EAC8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO7C,CAAC;AAyFF,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,eAAe,CAwCpF;AAED,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,EACpB,YAAY,GAAE,eAAmD,GAChE,YAAY,CASd;AAsCD,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,GACnB,MAAM,CAER;AAED,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,0BAA0B,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAIrF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,iBAAiB,EAAE,CA8BvF;AA6BD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAIxE;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,GAAG,SAAa,EAChB,YAAY,SAAI,EAChB,MAAM,UAAQ,GACb,aAAa,CAUf"}
@@ -1,21 +1,293 @@
1
+ import { REL_TYPES } from "../domain/index.js";
1
2
  import { METADATA_CATEGORY } from "../domain/metadata-category.js";
3
+ import { isMemberContainmentEdge, listMembers, membersReader, ownerOf } from "./containment.js";
2
4
  import { freshnessScore } from "./freshness.js";
3
- const SCAN_LABELS = [METADATA_CATEGORY.APEX_CLASS, METADATA_CATEGORY.LWC, METADATA_CATEGORY.FLOW];
5
+ /** The LWC parser (filesystem and live-org ingest alike) labels component
6
+ * nodes "LWC"; `METADATA_CATEGORY.LWC` is the member type
7
+ * "LightningComponentBundle", kept in case an older store uses it. */
8
+ export const LWC_NODE_LABEL = "LWC";
9
+ /** Labels the dead-code audit covers. One list for `findDeadCode` and the
10
+ * `_sfgraph_dead_code_scores` cache, so both produce the same candidates. */
11
+ export const DEAD_CODE_LABELS = [
12
+ METADATA_CATEGORY.APEX_CLASS,
13
+ LWC_NODE_LABEL,
14
+ METADATA_CATEGORY.LWC,
15
+ METADATA_CATEGORY.FLOW,
16
+ METADATA_CATEGORY.APEX_PAGE,
17
+ METADATA_CATEGORY.APEX_COMPONENT,
18
+ ];
19
+ const DEAD_CODE_NODE_CAP = 10000;
20
+ /** Bundle container label -> the component label it contains. */
21
+ const BUNDLE_COMPONENT_LABEL = {
22
+ LWCBundle: LWC_NODE_LABEL,
23
+ };
24
+ const nameOf = (q) => {
25
+ const s = String(q);
26
+ return s.slice(s.indexOf(":") + 1);
27
+ };
28
+ /** ASCII-only lowercase: what the store's NOCASE qname columns fold. */
29
+ const nocase = (s) => s.replace(/[A-Z]/g, (c) => c.toLowerCase());
30
+ const labelOf = (q) => {
31
+ const s = String(q);
32
+ return s.slice(0, Math.max(0, s.indexOf(":")));
33
+ };
34
+ /** A component's own bundle container, e.g. `LWCBundle:x -CONTAINS_COMPONENT-> LWC:x`
35
+ * (paired labels from BUNDLE_COMPONENT_LABEL, same name). Structural, never usage.
36
+ * Any other bundle label containing the node is a real reference. */
37
+ function isOwnBundleEdge(e) {
38
+ if (String(e.relType) !== "CONTAINS_COMPONENT")
39
+ return false;
40
+ const component = BUNDLE_COMPONENT_LABEL[labelOf(e.srcQualifiedName)];
41
+ return (component !== undefined &&
42
+ component === labelOf(e.dstQualifiedName) &&
43
+ nameOf(e.srcQualifiedName) === nameOf(e.dstQualifiedName));
44
+ }
4
45
  /**
5
- * Dead code = low freshness AND zero incoming edges.
46
+ * A Custom Metadata record field naming exactly one Apex class
47
+ * (`Handler__c = 'MyHandler'`) is how metadata-driven dispatch
48
+ * (`Type.forName(record.Handler__c)`) wires that class: the reflection
49
+ * walker's unambiguous CustomMetadataRecord -> ApexClass edge is usage.
6
50
  */
7
- export function findDeadCode(store, orgId) {
8
- const now = Date.now();
9
- const out = [];
10
- for (const lbl of SCAN_LABELS) {
11
- for (const n of store.listNodesByLabel(orgId, lbl, 5000)) {
12
- if (freshnessScore(n, now) >= 0.4)
51
+ function isCmdtClassReflection(e) {
52
+ const a = e.attributes ?? {};
53
+ return (a.ambiguous !== true &&
54
+ labelOf(e.srcQualifiedName) === "CustomMetadataRecord" &&
55
+ labelOf(e.dstQualifiedName) === "ApexClass");
56
+ }
57
+ /** An object's edges to its own parts: the field, validation rule or record type exists on the
58
+ * object; nothing uses it through these. Counting them kept every field "in use". */
59
+ const OWNER_STRUCTURE_RELTYPES = new Set([
60
+ REL_TYPES.DEFINES_FIELD,
61
+ REL_TYPES.HAS_VALIDATION_RULE,
62
+ REL_TYPES.HAS_RECORD_TYPE,
63
+ ]);
64
+ /** Grants, reflection guesses (bar CMDT-named classes), own-bundle and member
65
+ * containment, and an object's own structure are never usage. */
66
+ function isRealRef(e) {
67
+ if (String(e.relType).startsWith("GRANTS_"))
68
+ return false;
69
+ if (OWNER_STRUCTURE_RELTYPES.has(String(e.relType)))
70
+ return false;
71
+ if (e.attributes?.source === "reflection" &&
72
+ !isCmdtClassReflection(e))
73
+ return false;
74
+ if (isOwnBundleEdge(e))
75
+ return false;
76
+ if (isMemberContainmentEdge(e))
77
+ return false;
78
+ return true;
79
+ }
80
+ /** `LWC:x -REFERENCES{via:compiled-omniscript}-> OmniScript:…`: the compiled
81
+ * runtime of the OmniScript (LWC parser, `_def.js`). */
82
+ function isCompileEdge(e) {
83
+ return (String(e.relType) === "REFERENCES" &&
84
+ e.attributes?.via === "compiled-omniscript");
85
+ }
86
+ /**
87
+ * A source is test code when its node is `@isTest` (an @isTest class, a
88
+ * TestMethod) or it is a member of an @isTest class (an untagged helper method
89
+ * inside a test class).
90
+ */
91
+ export function makeTestSourceCheck(store, orgId) {
92
+ const memo = new Map();
93
+ // Memoised too: every method of a class asks about the same owner.
94
+ const taggedMemo = new Map();
95
+ // Every `isTest: true` node of the org, read once (NOCASE keys, like
96
+ // getNode's lookup). Null: the store cannot list them (or the read failed),
97
+ // so each node is read on its own.
98
+ let testTagged;
99
+ const tagged = (q) => {
100
+ const key = String(q);
101
+ let v = taggedMemo.get(key);
102
+ if (v === undefined) {
103
+ if (testTagged === undefined) {
104
+ try {
105
+ const s = store.listNodesWithTrueAttribute?.(orgId, "isTest");
106
+ testTagged = s ? new Set([...s].map(nocase)) : null;
107
+ }
108
+ catch {
109
+ testTagged = null;
110
+ }
111
+ }
112
+ if (testTagged) {
113
+ v = testTagged.has(nocase(key));
114
+ }
115
+ else {
116
+ const n = store.getNode(orgId, q);
117
+ v = n !== null && isTestClass(n);
118
+ }
119
+ taggedMemo.set(key, v);
120
+ }
121
+ return v;
122
+ };
123
+ return (src) => {
124
+ const key = String(src);
125
+ let v = memo.get(key);
126
+ if (v === undefined) {
127
+ const owner = tagged(src) ? null : ownerOf(store, orgId, src);
128
+ v = owner === null ? tagged(src) : tagged(owner);
129
+ memo.set(key, v);
130
+ }
131
+ return v;
132
+ };
133
+ }
134
+ /**
135
+ * Count incoming edges that represent a REAL usage reference. Excludes:
136
+ * - permission grants (`GRANTS_*`) — being readable by a profile is not usage;
137
+ * - reflection-sourced edges (`attributes.source === 'reflection'`) — these are
138
+ * low-confidence, pattern-matched guesses, not proof the node is invoked;
139
+ * - the component's own bundle `CONTAINS_COMPONENT` (every LWC has one);
140
+ * - member containment (`CONTAINS_METHOD`): a method's own class is structure;
141
+ * - an object's own structure (`DEFINES_FIELD`, `HAS_VALIDATION_RULE`,
142
+ * `HAS_RECORD_TYPE`): a field is not used by the object that defines it.
143
+ * Counting any of these as a reference kept genuinely dead code "alive" in the audit.
144
+ *
145
+ * References from test code (`IS_TEST_FOR`, @isTest classes, test methods and
146
+ * members of @isTest classes) are counted apart in `testOnly`. They are
147
+ * references too (`deadCodeKind`): a class with test references only is not
148
+ * dead but `referenced-only-by-tests`, listed apart from the dead code.
149
+ *
150
+ * A reference to a member is a reference to its owner (containment.ts): edges
151
+ * into an ApexClass's methods count for the class. Edges from the node itself
152
+ * or its own members (internal calls) do not.
153
+ *
154
+ * The compiled-LWC → OmniScript edge is not usage by itself: it counts only
155
+ * when that LWC is itself launched by something real (same rules, and not
156
+ * the OmniScript itself), so liveness follows the launch path.
157
+ */
158
+ export function incomingRefs(store, orgId, qname, isTestSource = makeTestSourceCheck(store, orgId)) {
159
+ return countIncomingRefs(store, orgId, qname, [qname, ...listMembers(store, orgId, qname)], (target) => store.listEdgesTo(orgId, target), isTestSource);
160
+ }
161
+ /**
162
+ * incomingRefs over given `targets` (the node and its members), with every
163
+ * target's incoming edges from `edgesTo` (the rows `listEdgesTo` returns,
164
+ * in any order: only counts come out).
165
+ */
166
+ function countIncomingRefs(store, orgId, qname, targets, edgesTo, isTestSource) {
167
+ const self = new Set(targets);
168
+ const out = { real: 0, testOnly: 0 };
169
+ const fromTest = (e) => String(e.relType) === REL_TYPES.IS_TEST_FOR || isTestSource(e.srcQualifiedName);
170
+ for (const target of targets) {
171
+ for (const e of edgesTo(target)) {
172
+ if (self.has(String(e.srcQualifiedName)))
173
+ continue;
174
+ if (!isRealRef(e))
175
+ continue;
176
+ if (isCompileEdge(e) &&
177
+ !store
178
+ .listEdgesTo(orgId, e.srcQualifiedName)
179
+ .some((x) => isRealRef(x) && String(x.srcQualifiedName) !== String(qname) && !fromTest(x))) {
13
180
  continue;
14
- if (store.listEdgesTo(orgId, n.qualifiedName).length === 0) {
15
- out.push(n);
16
181
  }
182
+ if (fromTest(e))
183
+ out.testOnly += 1;
184
+ else
185
+ out.real += 1;
17
186
  }
18
187
  }
19
188
  return out;
20
189
  }
190
+ /** Real (production) incoming references; see `incomingRefs`. */
191
+ export function realIncomingRefCount(store, orgId, qname) {
192
+ return incomingRefs(store, orgId, qname).real;
193
+ }
194
+ /** An `@isTest` class (or test method) node. */
195
+ export function isTestClass(n) {
196
+ return n.attributes?.isTest === true;
197
+ }
198
+ /**
199
+ * The kind of a node with these incoming references, or null when it is in
200
+ * use. Test references count as references (catalog contract: "test classes
201
+ * do count as references"), so a class a test uses is not dead; an `@isTest`
202
+ * class nothing references is dead like any other node (flagged `isTest`). A
203
+ * production node referenced by tests only is listed apart; test code
204
+ * referenced by other tests (a test utility) is in use.
205
+ */
206
+ export function deadCodeKind(refs, isTest) {
207
+ if (refs.real + refs.testOnly === 0)
208
+ return "dead";
209
+ if (refs.real === 0 && !isTest)
210
+ return "referenced-only-by-tests";
211
+ return null;
212
+ }
213
+ /**
214
+ * Dead-code candidates of DEAD_CODE_LABELS, both kinds (`deadCodeKind`):
215
+ * the score cache holds both and readers keep them apart. Freshness does not
216
+ * decide membership; it grades confidence in the score cache
217
+ * (`populateDeadCodeScores`: stale = high, recently modified = low). A
218
+ * filesystem ingest stamps every node with its checkout mtime, so a freshness
219
+ * gate here would hide every unreferenced node.
220
+ */
221
+ export function deadCodeCandidates(store, orgId) {
222
+ const isTestSource = makeTestSourceCheck(store, orgId);
223
+ const out = [];
224
+ for (const lbl of DEAD_CODE_LABELS) {
225
+ const nodes = store.listNodesByLabel(orgId, lbl, DEAD_CODE_NODE_CAP);
226
+ for (let i = 0; i < nodes.length; i += INCOMING_CHUNK) {
227
+ const chunk = nodes.slice(i, i + INCOMING_CHUNK);
228
+ const membersOf = membersReader(store, orgId, chunk.map((n) => n.qualifiedName));
229
+ const targetsOf = chunk.map((n) => [n.qualifiedName, ...membersOf(n.qualifiedName)]);
230
+ const edgesTo = incomingEdgeReader(store, orgId, targetsOf.flat());
231
+ chunk.forEach((n, j) => {
232
+ const isTest = isTestClass(n);
233
+ const refs = countIncomingRefs(store, orgId, n.qualifiedName, targetsOf[j], edgesTo, isTestSource);
234
+ const kind = deadCodeKind(refs, isTest);
235
+ if (kind)
236
+ out.push({ node: n, kind, isTest, testOnlyRefs: refs.testOnly });
237
+ });
238
+ }
239
+ }
240
+ return out;
241
+ }
242
+ /** Candidates whose incoming edges are read together (one read per edge table). */
243
+ const INCOMING_CHUNK = 256;
244
+ /**
245
+ * `target -> listEdgesTo(target)` for a set of targets, from one batched read
246
+ * (`listEdgesToAny`: `dst IN (...)`, NOCASE like `dst = ?`) grouped by the
247
+ * NOCASE dst, so each target gets exactly the rows its own `listEdgesTo`
248
+ * would. Stores without the batched read fall back to per-target reads.
249
+ */
250
+ function incomingEdgeReader(store, orgId, targets) {
251
+ if (typeof store.listEdgesToAny !== "function") {
252
+ return (target) => store.listEdgesTo(orgId, target);
253
+ }
254
+ const byDst = new Map();
255
+ for (const e of store.listEdgesToAny(orgId, new Set(targets.map(String)))) {
256
+ const k = nocase(String(e.dstQualifiedName));
257
+ const list = byDst.get(k);
258
+ if (list)
259
+ list.push(e);
260
+ else
261
+ byDst.set(k, [e]);
262
+ }
263
+ return (target) => byDst.get(nocase(String(target))) ?? [];
264
+ }
265
+ /** The dead nodes of `deadCodeCandidates` (no inbound reference of any kind). */
266
+ export function findDeadCode(store, orgId) {
267
+ return deadCodeCandidates(store, orgId)
268
+ .filter((c) => c.kind === "dead")
269
+ .map((c) => c.node);
270
+ }
271
+ /**
272
+ * Score a dead-code candidate (a node `findDeadCode` returned). Lower = more
273
+ * dead. With zero inbound the incoming term (0.4 weight) is 0, so the score is
274
+ * 0.6 * freshness: older than 180 days = high, 31-180 days or no timestamp =
275
+ * medium, 30 days or newer = low. Shared by the score cache and the live path.
276
+ * `testOnlyRefs` > 0 (a `deadCodeCandidates` count) gives the reason
277
+ * `referenced_only_by_tests` in place of `no_incoming_edges`; `isTest` adds
278
+ * `test_class` (an unreferenced `@isTest` class).
279
+ */
280
+ export function scoreDeadCode(node, now = Date.now(), testOnlyRefs = 0, isTest = false) {
281
+ const fresh = freshnessScore(node, now);
282
+ // A class with only test references has incoming edges, so it is
283
+ // `referenced_only_by_tests`, never `no_incoming_edges`.
284
+ const reasons = [testOnlyRefs > 0 ? "referenced_only_by_tests" : "no_incoming_edges"];
285
+ if (isTest)
286
+ reasons.push("test_class");
287
+ if (fresh < 0.4)
288
+ reasons.push("stale_freshness");
289
+ const score = 0.6 * fresh;
290
+ const confidence = score < 0.2 ? "high" : score < 0.45 ? "medium" : "low";
291
+ return { score, confidence, reasons };
292
+ }
21
293
  //# sourceMappingURL=dead-code.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dead-code.js","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,GAAG,CAAC,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAElG;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,KAAY;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACzD,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG;gBAAE,SAAS;YAC5C,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"dead-code.js","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"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"}