rea-agents 3.1.0 → 3.2.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 (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,19 +1,17 @@
1
1
  import * as t from "@babel/types";
2
2
  import { resolveSemanticBindingState, } from "./javascriptSemanticState.js";
3
3
  import { compareCodePoints, propertyName, stringValue, } from "./javascriptStaticAnalysisHelpers.js";
4
- import { reachSemanticValueLimit, semanticLimitProvenance, semanticOriginsProvenance, semanticProvenance, uniqueSemanticOrigins, } from "./javascriptSemanticProvenance.js";
4
+ import { semanticAmbiguousProvenance, semanticLocalProvenance, semanticOriginsProvenance, semanticUnresolvedProvenance, uniqueSemanticOrigins, } from "./javascriptSemanticProvenance.js";
5
5
  import { semanticPrimitiveCandidates as primitiveCandidates, semanticPrimitiveSet as primitiveSet, semanticPrimitiveValue as primitiveValue, } from "./javascriptSemanticPrimitives.js";
6
6
  /** Evaluate one binding in the bounded constant-value lattice. */
7
- export const evaluateSemanticBinding = (binding, state) => evaluateBinding(binding, { state, bindings: new Set(), depth: 0 });
7
+ export const evaluateSemanticBinding = (binding, state) => evaluateBinding(binding, { state, bindings: new Set() });
8
8
  /** Evaluate one arbitrary inert expression in the established lexical state. */
9
- export const evaluateSemanticExpression = (node, state) => evaluateExpression(node, { state, bindings: new Set(), depth: 0 });
9
+ export const evaluateSemanticExpression = (node, state) => evaluateExpression(node, { state, bindings: new Set() });
10
10
  /** Follow module provenance through destructuring, members, and aliases. */
11
- export const evaluateSemanticProvenance = (binding, state) => provenanceForBinding(binding, { state, bindings: new Set(), depth: 0 });
11
+ export const evaluateSemanticProvenance = (binding, state) => provenanceForBinding(binding, { state, bindings: new Set() });
12
12
  const evaluateBinding = (binding, context) => {
13
13
  if (context.bindings.has(binding.bindingId))
14
14
  return { status: "cycle", reason: `Alias cycle at ${binding.name}.` };
15
- if (context.depth >= context.state.limits.maxValueDepth)
16
- return limitValue(context.state, "maxValueDepth");
17
15
  if (binding.initializers.length === 0)
18
16
  return {
19
17
  status: "unknown",
@@ -31,8 +29,6 @@ const evaluateBinding = (binding, context) => {
31
29
  return projectValue(evaluateExpression(initializer.node, nested), initializer.projection);
32
30
  };
33
31
  const evaluateExpression = (node, context) => {
34
- if (context.depth >= context.state.limits.maxValueDepth)
35
- return limitValue(context.state, "maxValueDepth");
36
32
  const literal = primitiveValue(node);
37
33
  if (literal.found)
38
34
  return { status: "literal", value: literal.value };
@@ -48,12 +44,12 @@ const evaluateExpression = (node, context) => {
48
44
  return mergeValues([
49
45
  evaluateExpression(node.consequent, nestedContext(context)),
50
46
  evaluateExpression(node.alternate, nestedContext(context)),
51
- ], context.state);
47
+ ]);
52
48
  if (t.isLogicalExpression(node))
53
49
  return mergeValues([
54
50
  evaluateExpression(node.left, nestedContext(context)),
55
51
  evaluateExpression(node.right, nestedContext(context)),
56
- ], context.state);
52
+ ]);
57
53
  if (t.isObjectExpression(node))
58
54
  return evaluateObject(node, context);
59
55
  if (t.isArrayExpression(node))
@@ -87,10 +83,8 @@ const evaluateTemplate = (node, context) => {
87
83
  reason: "Template expression is not a bounded primitive.",
88
84
  };
89
85
  candidates = candidates.flatMap((prefix) => values.map((value) => `${prefix}${String(value)}`));
90
- if (candidates.length > context.state.limits.maxUnionValues)
91
- return limitValue(context.state, "maxUnionValues");
92
86
  }
93
- return primitiveSet(candidates, context.state);
87
+ return primitiveSet(candidates);
94
88
  };
95
89
  const evaluateObject = (node, context) => {
96
90
  const properties = [];
@@ -115,25 +109,25 @@ const evaluateObject = (node, context) => {
115
109
  omittedProperties += 1;
116
110
  continue;
117
111
  }
118
- if (properties.length >= context.state.limits.maxObjectProperties) {
119
- reachSemanticValueLimit(context.state, "maxObjectProperties");
120
- unknownProperties = true;
121
- if (omittedProperties !== null)
122
- omittedProperties += 1;
123
- continue;
124
- }
125
112
  properties.push({
126
113
  name,
127
114
  value: evaluateExpression(property.value, nestedContext(context)),
128
115
  });
129
116
  }
130
117
  properties.sort((left, right) => compareCodePoints(left.name, right.name));
131
- return {
132
- status: "object",
133
- properties,
134
- unknownProperties,
135
- omittedProperties,
136
- };
118
+ return unknownProperties
119
+ ? {
120
+ status: "object",
121
+ properties,
122
+ unknownProperties: true,
123
+ omittedProperties,
124
+ }
125
+ : {
126
+ status: "object",
127
+ properties,
128
+ unknownProperties: false,
129
+ omittedProperties: 0,
130
+ };
137
131
  };
138
132
  const evaluateArray = (node, context) => {
139
133
  const items = [];
@@ -151,16 +145,11 @@ const evaluateArray = (node, context) => {
151
145
  omittedItems += 1;
152
146
  continue;
153
147
  }
154
- if (items.length >= context.state.limits.maxObjectProperties) {
155
- reachSemanticValueLimit(context.state, "maxObjectProperties");
156
- unknownItems = true;
157
- if (omittedItems !== null)
158
- omittedItems += 1;
159
- continue;
160
- }
161
148
  items.push(evaluateExpression(element, nestedContext(context)));
162
149
  }
163
- return { status: "array", items, unknownItems, omittedItems };
150
+ return unknownItems
151
+ ? { status: "array", items, unknownItems: true, omittedItems }
152
+ : { status: "array", items, unknownItems: false, omittedItems: 0 };
164
153
  };
165
154
  const evaluateMember = (node, context) => {
166
155
  if (!t.isNode(node.object))
@@ -180,18 +169,18 @@ const evaluateAddition = (node, context) => {
180
169
  const values = left.flatMap((leftValue) => right.map((rightValue) => typeof leftValue === "number" && typeof rightValue === "number"
181
170
  ? leftValue + rightValue
182
171
  : `${String(leftValue)}${String(rightValue)}`));
183
- return primitiveSet(values, context.state);
172
+ return primitiveSet(values);
184
173
  };
185
174
  const evaluateUnary = (node, context) => {
186
175
  const argument = primitiveCandidates(evaluateExpression(node.argument, nestedContext(context)));
187
176
  if (argument === null)
188
177
  return { status: "unknown", reason: "Non-primitive unary operand." };
189
178
  if (node.operator === "!")
190
- return primitiveSet(argument.map((value) => !value), context.state);
179
+ return primitiveSet(argument.map((value) => !value));
191
180
  if (node.operator === "+")
192
- return primitiveSet(argument.map((value) => Number(value)), context.state);
181
+ return primitiveSet(argument.map((value) => Number(value)));
193
182
  if (node.operator === "-")
194
- return primitiveSet(argument.map((value) => -Number(value)), context.state);
183
+ return primitiveSet(argument.map((value) => -Number(value)));
195
184
  return { status: "unknown", reason: `Unsupported unary ${node.operator}.` };
196
185
  };
197
186
  const projectValue = (value, projection) => {
@@ -230,20 +219,18 @@ const projectValue = (value, projection) => {
230
219
  };
231
220
  const provenanceForBinding = (binding, context) => {
232
221
  if (context.bindings.has(binding.bindingId))
233
- return semanticProvenance("cycle", [], `Alias cycle at ${binding.name}.`);
234
- if (context.depth >= context.state.limits.maxValueDepth)
235
- return semanticLimitProvenance(context.state, "maxValueDepth");
222
+ return semanticUnresolvedProvenance("cycle", `Alias cycle at ${binding.name}.`);
236
223
  if (binding.directOrigins.length > 0)
237
- return semanticOriginsProvenance(binding.directOrigins, context.state);
224
+ return semanticOriginsProvenance(binding.directOrigins);
238
225
  if (binding.initializers.length === 0)
239
- return semanticProvenance("local", [], null);
226
+ return semanticLocalProvenance();
240
227
  if (binding.initializers.length > 1)
241
- return semanticProvenance("ambiguous", [], `Binding ${binding.name} has multiple possible assignments.`);
228
+ return semanticAmbiguousProvenance([], `Binding ${binding.name} has multiple possible assignments.`);
242
229
  const initializer = binding.initializers[0];
243
230
  if (initializer === undefined)
244
- return semanticProvenance("unknown", [], "Missing binding initializer.");
231
+ return semanticUnresolvedProvenance("unknown", "Missing binding initializer.");
245
232
  if (initializer.projection.includes(null))
246
- return semanticProvenance("unknown", [], "Dynamic provenance projection.");
233
+ return semanticUnresolvedProvenance("unknown", "Dynamic provenance projection.");
247
234
  const resolved = provenanceForExpression(initializer.node, nestedContext(context, binding.bindingId));
248
235
  if (resolved.status !== "module" || initializer.projection.length === 0)
249
236
  return resolved;
@@ -253,31 +240,31 @@ const provenanceForBinding = (binding, context) => {
253
240
  ...origin.importedPath,
254
241
  ...initializer.projection.map((segment) => String(segment)),
255
242
  ],
256
- })), context.state);
243
+ })));
257
244
  };
258
245
  const provenanceForExpression = (node, context) => {
259
246
  const required = requireOrigin(node);
260
247
  if (required !== undefined)
261
- return semanticOriginsProvenance([required], context.state);
248
+ return semanticOriginsProvenance([required]);
262
249
  if (t.isIdentifier(node)) {
263
250
  const binding = resolveSemanticBindingState(context.state, node, node.name);
264
251
  return binding === undefined
265
- ? semanticProvenance("unknown", [], `Unbound identifier ${node.name}.`)
252
+ ? semanticUnresolvedProvenance("unknown", `Unbound identifier ${node.name}.`)
266
253
  : provenanceForBinding(binding, nestedContext(context));
267
254
  }
268
255
  if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
269
256
  if (!t.isNode(node.object))
270
- return semanticProvenance("unknown", [], "Unsupported member base.");
257
+ return semanticUnresolvedProvenance("unknown", "Unsupported member base.");
271
258
  const member = memberKey(node);
272
259
  if (typeof member !== "string")
273
- return semanticProvenance("unknown", [], "Dynamic provenance member.");
260
+ return semanticUnresolvedProvenance("unknown", "Dynamic provenance member.");
274
261
  const base = provenanceForExpression(node.object, nestedContext(context));
275
262
  return base.status !== "module"
276
263
  ? base
277
264
  : semanticOriginsProvenance(base.origins.map((origin) => ({
278
265
  ...origin,
279
266
  importedPath: [...origin.importedPath, member],
280
- })), context.state);
267
+ })));
281
268
  }
282
269
  if (t.isConditionalExpression(node) || t.isLogicalExpression(node)) {
283
270
  const left = t.isConditionalExpression(node) ? node.consequent : node.left;
@@ -288,10 +275,10 @@ const provenanceForExpression = (node, context) => {
288
275
  ];
289
276
  const origins = candidates.flatMap((candidate) => candidate.origins);
290
277
  return origins.length > 0
291
- ? semanticProvenance("ambiguous", uniqueSemanticOrigins(origins), "Multiple module origins.")
292
- : semanticProvenance("unknown", [], "Conditional provenance is unresolved.");
278
+ ? semanticAmbiguousProvenance(uniqueSemanticOrigins(origins), "Multiple module origins.")
279
+ : semanticUnresolvedProvenance("unknown", "Conditional provenance is unresolved.");
293
280
  }
294
- return semanticProvenance("local", [], null);
281
+ return semanticLocalProvenance();
295
282
  };
296
283
  const requireOrigin = (node) => {
297
284
  if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
@@ -309,11 +296,11 @@ const requireOrigin = (node) => {
309
296
  const specifier = stringValue(node.arguments[0]);
310
297
  return specifier === undefined ? undefined : { specifier, importedPath: [] };
311
298
  };
312
- const mergeValues = (values, state) => {
299
+ const mergeValues = (values) => {
313
300
  const primitives = values.flatMap((value) => primitiveCandidates(value) ?? []);
314
301
  return primitives.length === values.length ||
315
302
  values.every((value) => value.status === "union" || value.status === "literal")
316
- ? primitiveSet(primitives, state)
303
+ ? primitiveSet(primitives)
317
304
  : { status: "ambiguous", reason: "Branches have incompatible values." };
318
305
  };
319
306
  const memberKey = (node) => {
@@ -323,13 +310,8 @@ const memberKey = (node) => {
323
310
  return node.property.value;
324
311
  return undefined;
325
312
  };
326
- const limitValue = (state, limit) => {
327
- reachSemanticValueLimit(state, limit);
328
- return { status: "limit-reached", reason: `${limit} reached.` };
329
- };
330
313
  const nestedContext = (context, bindingId) => ({
331
314
  state: context.state,
332
- depth: context.depth + 1,
333
315
  bindings: bindingId === undefined
334
316
  ? context.bindings
335
317
  : new Set([...context.bindings, bindingId]),
@@ -6,37 +6,28 @@ import { inspectBundlerRegistration, inspectEsbuildWrapper, } from "./javascript
6
6
  import { finalizeLocatedFindings } from "./javascriptStaticAnalysisFindings.js";
7
7
  import { createJavaScriptAnalysisAccumulator, } from "./javascriptStaticAnalysisState.js";
8
8
  import { parseJavaScriptSource, } from "./javascriptSourceParser.js";
9
- /** Parse one bounded JavaScript artifact and recover static structure only. */
10
- export const analyzeJavaScriptStaticSource = (source, limits) => {
9
+ /** Parse one JavaScript artifact and recover static structure only. */
10
+ export const analyzeJavaScriptStaticSource = (source) => {
11
11
  const file = parseJavaScriptSource(source);
12
12
  return file === null
13
13
  ? failedJavaScriptStaticAnalysis()
14
- : analyzeParsedJavaScriptStaticSource(source, file, limits);
14
+ : analyzeParsedJavaScriptStaticSource(source, file);
15
15
  };
16
16
  /** Recover static structure from an already parsed JavaScript artifact. */
17
- export const analyzeParsedJavaScriptStaticSource = (source, file, limits) => {
17
+ export const analyzeParsedJavaScriptStaticSource = (source, file) => {
18
18
  const accumulator = createJavaScriptAnalysisAccumulator();
19
- traverseStaticSource(source, file, accumulator, limits);
20
- addSourceMapDirectives(source, accumulator, limits.maxFindings);
21
- return finalizeStaticAnalysis(source, file, accumulator, limits);
19
+ traverseStaticSource(source, file, accumulator);
20
+ addSourceMapDirectives(source, accumulator);
21
+ return finalizeStaticAnalysis(source, file, accumulator);
22
22
  };
23
- const traverseStaticSource = (source, file, accumulator, limits) => {
24
- if (limits.now() > limits.deadline)
25
- accumulator.truncated = true;
26
- if (!accumulator.truncated)
27
- t.traverseFast(file, (node) => {
28
- accumulator.visitedNodes += 1;
29
- if (accumulator.visitedNodes > limits.maxAstNodes ||
30
- (accumulator.visitedNodes % 1_024 === 0 &&
31
- limits.now() > limits.deadline)) {
32
- accumulator.truncated = true;
33
- return t.traverseFast.stop;
34
- }
35
- inspectNode(source, node, accumulator, limits);
36
- return undefined;
37
- });
23
+ const traverseStaticSource = (source, file, accumulator) => {
24
+ t.traverseFast(file, (node) => {
25
+ accumulator.visitedNodes += 1;
26
+ inspectNode(source, node, accumulator);
27
+ return undefined;
28
+ });
38
29
  };
39
- const finalizeStaticAnalysis = (source, file, accumulator, limits) => {
30
+ const finalizeStaticAnalysis = (source, file, accumulator) => {
40
31
  const parserErrors = file.errors.length;
41
32
  const limitations = [
42
33
  ...(parserErrors === 0
@@ -44,15 +35,6 @@ const finalizeStaticAnalysis = (source, file, accumulator, limits) => {
44
35
  : [
45
36
  "The parser recovered from syntax errors; affected facts are partial.",
46
37
  ]),
47
- ...(accumulator.truncated
48
- ? ["AST analysis stopped at the configured node or time bound."]
49
- : []),
50
- ...(accumulator.droppedFindings === 0
51
- ? []
52
- : ["Static findings were truncated at the configured finding bound."]),
53
- ...(accumulator.structuralTruncation
54
- ? ["Bundler metadata reached a per-record structural bound."]
55
- : []),
56
38
  ...(accumulator.unknownFindings === 0
57
39
  ? []
58
40
  : [
@@ -61,14 +43,11 @@ const finalizeStaticAnalysis = (source, file, accumulator, limits) => {
61
43
  "JavaScript syntax was parsed as data and was never evaluated.",
62
44
  ];
63
45
  return {
64
- parse_status: accumulator.truncated || accumulator.droppedFindings > 0
65
- ? "truncated"
66
- : parserErrors > 0 || accumulator.unknownFindings > 0
67
- ? "partial"
68
- : "complete",
46
+ parse_status: parserErrors > 0 || accumulator.unknownFindings > 0
47
+ ? "partial"
48
+ : "complete",
69
49
  parse_error_count: parserErrors,
70
- visited_ast_nodes: Math.min(accumulator.visitedNodes, limits.maxAstNodes),
71
- dropped_findings: accumulator.droppedFindings,
50
+ visited_ast_nodes: accumulator.visitedNodes,
72
51
  references: finalizeLocatedFindings(accumulator.references, accumulator.modules),
73
52
  endpoints: finalizeLocatedFindings(accumulator.endpoints, accumulator.modules),
74
53
  storage: finalizeLocatedFindings(accumulator.storage, accumulator.modules),
@@ -87,16 +66,15 @@ const finalizeStaticAnalysis = (source, file, accumulator, limits) => {
87
66
  limitations,
88
67
  };
89
68
  };
90
- const inspectNode = (source, node, accumulator, limits) => {
69
+ const inspectNode = (source, node, accumulator) => {
91
70
  const findings = {
92
71
  source,
93
72
  accumulator,
94
- maximum: limits.maxFindings,
95
73
  };
96
74
  inspectElectronStaticNode(node, findings);
97
75
  if (t.isCallExpression(node)) {
98
- inspectBundlerRegistration(source, node, accumulator, limits);
99
- inspectEsbuildWrapper(source, node, accumulator, limits);
76
+ inspectBundlerRegistration(source, node, accumulator);
77
+ inspectEsbuildWrapper(source, node, accumulator);
100
78
  inspectCall(source, node, findings);
101
79
  }
102
80
  else if (t.isNewExpression(node))
@@ -1,68 +1,49 @@
1
1
  import * as t from "@babel/types";
2
2
  import { collectJavaScriptExports, fingerprintJavaScriptAst, } from "./javascriptAstFingerprint.js";
3
- import { addBoundedFinding } from "./javascriptStaticAnalysisFindings.js";
3
+ import { addFindingOnce } from "./javascriptStaticAnalysisFindings.js";
4
4
  import { argumentValue, calleeName, chunkRuntime, compareCodePoints, factoryRequireName, moduleFactory, modulePropertyName, range, registrationKey, sha256Text, sourceSlice, staticArrayValues, } from "./javascriptStaticAnalysisHelpers.js";
5
5
  /** Inspect a bundler registration call and recover its module table. */
6
- export const inspectBundlerRegistration = (source, call, accumulator, limits) => {
6
+ export const inspectBundlerRegistration = (source, call, accumulator) => {
7
7
  const runtime = chunkRuntime(call);
8
8
  const entry = call.arguments[0];
9
9
  if (runtime === undefined || !t.isArrayExpression(entry))
10
10
  return;
11
11
  const chunkIds = entry.elements[0];
12
12
  const table = entry.elements[1];
13
- const runtimeValue = runtimeMetadata(entry.elements[2], limits.maxFindings);
13
+ const runtimeValue = runtimeMetadata(entry.elements[2]);
14
14
  if (!t.isArrayExpression(chunkIds) || !t.isObjectExpression(table))
15
15
  return;
16
- const recovered = recoverBundlerModules(source, table, accumulator, limits);
17
- const chunkKeys = staticArrayValues(chunkIds, Math.min(256, limits.maxFindings));
18
- if (chunkKeys.omitted > 0) {
19
- accumulator.droppedFindings += chunkKeys.omitted;
20
- accumulator.structuralTruncation = true;
21
- }
16
+ const recovered = recoverBundlerModules(source, table, accumulator);
17
+ const chunkKeys = staticArrayValues(chunkIds);
22
18
  accumulator.unknownFindings += chunkKeys.unknown;
23
- if (runtimeValue.omittedEntryModuleKeys > 0 ||
24
- runtimeValue.omittedAsyncChunkKeys > 0 ||
25
- recovered.omittedAsyncChunkKeys > 0) {
26
- accumulator.droppedFindings +=
27
- runtimeValue.omittedEntryModuleKeys +
28
- runtimeValue.omittedAsyncChunkKeys +
29
- recovered.omittedAsyncChunkKeys;
30
- accumulator.structuralTruncation = true;
31
- }
32
19
  accumulator.unknownFindings +=
33
20
  runtimeValue.unknownEntryModuleKeys +
34
21
  runtimeValue.unknownAsyncChunkKeys +
35
22
  recovered.unknownAsyncChunkKeys;
36
- const asyncChunkKeys = boundedUniqueValues([...runtimeValue.asyncChunkKeys, ...recovered.asyncChunkKeys], Math.min(256, limits.maxFindings));
37
- if (asyncChunkKeys.omitted > 0) {
38
- accumulator.droppedFindings += asyncChunkKeys.omitted;
39
- accumulator.structuralTruncation = true;
40
- }
23
+ const asyncChunkKeys = uniqueValues([
24
+ ...runtimeValue.asyncChunkKeys,
25
+ ...recovered.asyncChunkKeys,
26
+ ]);
41
27
  const registration = {
42
28
  bundler: runtime.toLowerCase().includes("rspack")
43
29
  ? "rspack"
44
30
  : "webpack",
45
31
  runtime,
46
32
  chunk_keys: chunkKeys.values,
47
- omitted_chunk_keys: chunkKeys.omitted,
48
33
  unknown_chunk_keys: chunkKeys.unknown,
49
34
  runtime_require_name: runtimeValue.requireName,
50
35
  runtime_module_cache_status: bundlerModuleCacheStatus(source),
51
36
  entry_module_keys: runtimeValue.entryModuleKeys,
52
- omitted_entry_module_keys: runtimeValue.omittedEntryModuleKeys,
53
37
  unknown_entry_module_keys: runtimeValue.unknownEntryModuleKeys,
54
38
  async_chunk_keys: asyncChunkKeys.values,
55
- omitted_async_chunk_keys: runtimeValue.omittedAsyncChunkKeys +
56
- recovered.omittedAsyncChunkKeys +
57
- asyncChunkKeys.omitted,
58
39
  unknown_async_chunk_keys: runtimeValue.unknownAsyncChunkKeys + recovered.unknownAsyncChunkKeys,
59
40
  modules: recovered.modules.sort((left, right) => compareCodePoints(left.module_key, right.module_key)),
60
41
  location: range(call),
61
42
  };
62
- addBoundedFinding(accumulator, `registration\0${registrationKey(registration)}`, limits.maxFindings, () => accumulator.registrations.push(registration));
43
+ addFindingOnce(accumulator, `registration\0${registrationKey(registration)}`, () => accumulator.registrations.push(registration));
63
44
  };
64
45
  /** Inspect esbuild helper wrappers and recover their literal module tables. */
65
- export const inspectEsbuildWrapper = (source, call, accumulator, limits) => {
46
+ export const inspectEsbuildWrapper = (source, call, accumulator) => {
66
47
  const name = calleeName(call.callee);
67
48
  const wrapperKind = name === "__commonJS" || name.endsWith(".__commonJS")
68
49
  ? "commonjs"
@@ -72,74 +53,55 @@ export const inspectEsbuildWrapper = (source, call, accumulator, limits) => {
72
53
  const table = call.arguments[0];
73
54
  if (wrapperKind === null || !t.isObjectExpression(table))
74
55
  return;
75
- const recovered = recoverBundlerModules(source, table, accumulator, limits);
56
+ const recovered = recoverBundlerModules(source, table, accumulator);
76
57
  if (recovered.modules.length === 0)
77
58
  return;
78
- if (recovered.omittedAsyncChunkKeys > 0) {
79
- accumulator.droppedFindings += recovered.omittedAsyncChunkKeys;
80
- accumulator.structuralTruncation = true;
81
- }
82
59
  accumulator.unknownFindings += recovered.unknownAsyncChunkKeys;
83
60
  const registration = {
84
61
  bundler: "esbuild",
85
62
  runtime: `esbuild-${wrapperKind}`,
86
63
  chunk_keys: [`${wrapperKind}@${String(call.start ?? 0)}`],
87
- omitted_chunk_keys: 0,
88
64
  unknown_chunk_keys: 0,
89
65
  runtime_require_name: null,
90
66
  runtime_module_cache_status: "not-observed",
91
67
  entry_module_keys: [],
92
- omitted_entry_module_keys: 0,
93
68
  unknown_entry_module_keys: 0,
94
69
  async_chunk_keys: recovered.asyncChunkKeys,
95
- omitted_async_chunk_keys: recovered.omittedAsyncChunkKeys,
96
70
  unknown_async_chunk_keys: recovered.unknownAsyncChunkKeys,
97
71
  modules: recovered.modules.sort((left, right) => compareCodePoints(left.module_key, right.module_key)),
98
72
  location: range(call),
99
73
  };
100
- addBoundedFinding(accumulator, `registration\0${registrationKey(registration)}`, limits.maxFindings, () => accumulator.registrations.push(registration));
74
+ addFindingOnce(accumulator, `registration\0${registrationKey(registration)}`, () => accumulator.registrations.push(registration));
101
75
  };
102
- const recoverBundlerModules = (source, table, accumulator, limits) => {
76
+ const recoverBundlerModules = (source, table, accumulator) => {
103
77
  const modules = [];
104
78
  const asyncChunkKeys = [];
105
- let omittedAsyncChunkKeys = 0;
106
79
  let unknownAsyncChunkKeys = 0;
107
80
  for (const property of table.properties) {
108
- const recovered = recoverBundlerModule(source, property, accumulator, limits);
81
+ const recovered = recoverBundlerModule(source, property, accumulator);
109
82
  if (recovered === null)
110
83
  continue;
111
84
  modules.push(recovered.module);
112
85
  asyncChunkKeys.push(...recovered.asyncChunkKeys);
113
- omittedAsyncChunkKeys += recovered.omittedAsyncChunkKeys;
114
86
  unknownAsyncChunkKeys += recovered.unknownAsyncChunkKeys;
115
87
  }
116
88
  return {
117
89
  modules,
118
90
  asyncChunkKeys,
119
- omittedAsyncChunkKeys,
120
91
  unknownAsyncChunkKeys,
121
92
  };
122
93
  };
123
- const recoverBundlerModule = (source, property, accumulator, limits) => {
94
+ const recoverBundlerModule = (source, property, accumulator) => {
124
95
  const factory = moduleFactory(property);
125
96
  if (factory === undefined)
126
97
  return null;
127
- if (accumulator.moduleCount >= limits.maxModules) {
128
- accumulator.droppedFindings += 1;
129
- return null;
130
- }
131
- accumulator.moduleCount += 1;
132
98
  const key = modulePropertyName(property);
133
99
  if (key.startsWith("[computed@") || key.startsWith("[unknown@"))
134
100
  accumulator.unknownFindings += 1;
135
- const fingerprint = fingerprintJavaScriptAst(factory, Math.min(limits.maxAstNodes, 100_000));
136
- const exportsValue = collectJavaScriptExports(factory, 256);
101
+ const fingerprint = fingerprintJavaScriptAst(factory);
102
+ const exportsValue = collectJavaScriptExports(factory);
137
103
  const requireName = factoryRequireName(factory);
138
- const asyncChunks = collectBundlerAsyncChunkKeys(factory, requireName, limits.maxFindings);
139
- if (fingerprint.truncated || exportsValue.truncated) {
140
- accumulator.droppedFindings += 1;
141
- accumulator.structuralTruncation = true;
142
- }
104
+ const asyncChunks = collectBundlerAsyncChunkKeys(factory, requireName);
143
105
  if (typeof factory.start === "number" && typeof factory.end === "number")
144
106
  accumulator.modules.push({
145
107
  start: factory.start,
@@ -152,66 +114,49 @@ const recoverBundlerModule = (source, property, accumulator, limits) => {
152
114
  module_key: key,
153
115
  factory_require_name: requireName,
154
116
  source_sha256: sha256Text(sourceSlice(source, factory)),
155
- structural_fingerprint_sha256: fingerprint.truncated
156
- ? null
157
- : fingerprint.sha256,
158
- structural_fingerprint_algorithm: fingerprint.truncated
159
- ? null
160
- : "babel-ast-v1",
161
- structural_fingerprint_status: fingerprint.truncated
162
- ? "truncated"
163
- : "complete",
117
+ structural_fingerprint_sha256: fingerprint,
118
+ structural_fingerprint_algorithm: "babel-ast-v1",
164
119
  exports: exportsValue.values,
165
- exports_truncated: exportsValue.truncated,
166
120
  location: range(factory),
167
121
  },
168
122
  asyncChunkKeys: asyncChunks.values,
169
- omittedAsyncChunkKeys: asyncChunks.omitted,
170
123
  unknownAsyncChunkKeys: asyncChunks.unknown,
171
124
  };
172
125
  };
173
- const runtimeMetadata = (node, maximum) => {
126
+ const runtimeMetadata = (node) => {
174
127
  if (!isBundlerFunction(node))
175
128
  return {
176
129
  requireName: null,
177
130
  entryModuleKeys: [],
178
- omittedEntryModuleKeys: 0,
179
131
  unknownEntryModuleKeys: node === null || node === undefined ? 0 : 1,
180
132
  asyncChunkKeys: [],
181
- omittedAsyncChunkKeys: 0,
182
133
  unknownAsyncChunkKeys: 0,
183
134
  };
184
135
  const parameter = node.params[0];
185
- const requireName = t.isIdentifier(parameter)
186
- ? parameter.name.slice(0, 4_096)
187
- : null;
136
+ const requireName = t.isIdentifier(parameter) ? parameter.name : null;
188
137
  if (requireName === null)
189
138
  return {
190
139
  requireName,
191
140
  entryModuleKeys: [],
192
- omittedEntryModuleKeys: 0,
193
141
  unknownEntryModuleKeys: 1,
194
142
  asyncChunkKeys: [],
195
- omittedAsyncChunkKeys: 0,
196
143
  unknownAsyncChunkKeys: 0,
197
144
  };
198
- const entries = collectBundlerEntryModuleKeys(node, requireName, maximum);
199
- const asyncChunks = collectBundlerAsyncChunkKeys(node, requireName, maximum);
145
+ const entries = collectBundlerEntryModuleKeys(node, requireName);
146
+ const asyncChunks = collectBundlerAsyncChunkKeys(node, requireName);
200
147
  return {
201
148
  requireName,
202
149
  entryModuleKeys: entries.values,
203
- omittedEntryModuleKeys: entries.omitted,
204
150
  unknownEntryModuleKeys: entries.unknown,
205
151
  asyncChunkKeys: asyncChunks.values,
206
- omittedAsyncChunkKeys: asyncChunks.omitted,
207
152
  unknownAsyncChunkKeys: asyncChunks.unknown,
208
153
  };
209
154
  };
210
- const collectBundlerEntryModuleKeys = (factory, requireName, maximum) => collectBundlerCallArgumentValues(factory, requireName, maximum);
211
- const collectBundlerAsyncChunkKeys = (factory, requireName, maximum) => requireName === null
212
- ? { values: [], omitted: 0, unknown: 0 }
213
- : collectBundlerCallArgumentValues(factory, `${requireName}.e`, maximum);
214
- const collectBundlerCallArgumentValues = (factory, callee, maximum) => {
155
+ const collectBundlerEntryModuleKeys = (factory, requireName) => collectBundlerCallArgumentValues(factory, requireName);
156
+ const collectBundlerAsyncChunkKeys = (factory, requireName) => requireName === null
157
+ ? { values: [], unknown: 0 }
158
+ : collectBundlerCallArgumentValues(factory, `${requireName}.e`);
159
+ const collectBundlerCallArgumentValues = (factory, callee) => {
215
160
  const values = [];
216
161
  let unknown = 0;
217
162
  t.traverseFast(factory, (node) => {
@@ -226,19 +171,15 @@ const collectBundlerCallArgumentValues = (factory, callee, maximum) => {
226
171
  values.push(value);
227
172
  return undefined;
228
173
  });
229
- return boundedUniqueValues(values, Math.min(256, maximum), unknown);
174
+ return uniqueValues(values, unknown);
230
175
  };
231
176
  const isBundlerFunction = (node) => t.isFunctionExpression(node) ||
232
177
  t.isArrowFunctionExpression(node) ||
233
178
  t.isObjectMethod(node);
234
- const boundedUniqueValues = (values, maximum, unknown = 0) => {
235
- const bounded = [
236
- ...new Set(values.map((value) => value.slice(0, 4_096))),
237
- ].sort(compareCodePoints);
238
- const retained = bounded.slice(0, Math.max(0, maximum));
179
+ const uniqueValues = (values, unknown = 0) => {
180
+ const unique = [...new Set(values)].sort(compareCodePoints);
239
181
  return {
240
- values: retained,
241
- omitted: Math.max(0, bounded.length - retained.length),
182
+ values: unique,
242
183
  unknown,
243
184
  };
244
185
  };