@jshookmcp/jshook 0.3.2 → 0.3.4
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.
- package/README.md +19 -4
- package/README.zh.md +19 -4
- package/dist/AntiCheatDetector-B-mz4DK_.mjs +1 -0
- package/dist/{BrowserSessionCoordinator-BJ-HOxo0.mjs → BrowserSessionCoordinator-Cdic8FsH.mjs} +1 -1
- package/dist/CodeAnalyzerDataFlow-a-NkwcaG.mjs +2 -0
- package/dist/CodeInjector-B099WO6x.mjs +1 -0
- package/dist/ConsoleMonitor-BZRqrBH-.mjs +306 -0
- package/dist/CpuEngine-BC8jayy9.mjs +1 -0
- package/dist/DartAotExecutor-B7WVTKsd.mjs +1 -0
- package/dist/DartAotLoader-BxdhW-K2.mjs +2 -0
- package/dist/DarwinAPI-DzojdfjF.mjs +1 -0
- package/dist/DetailedDataManager-Dgh402Gp.mjs +5 -0
- package/dist/ExecutionSandbox-QbWQmzuC.mjs +45 -0
- package/dist/ExtensionManager.tools-D3h818Xs.mjs +1 -0
- package/dist/FingerprintManager-D9Zlr6be.mjs +1 -0
- package/dist/HardwareBreakpoint-C_lJ22bj.mjs +1 -0
- package/dist/HeapAnalyzer-bJbLvzp6.mjs +1 -0
- package/dist/HookPatternScanner-yx4vJ9sd.mjs +1 -0
- package/dist/InstrumentationSession-Cv1wikLA.mjs +1 -0
- package/dist/IntegrityScanner-BB7sw-SA.mjs +1 -0
- package/dist/JScramblerDeobfuscator-NVR5VatT.mjs +1 -0
- package/dist/MCPServer.activation.ttl-C2wOCMLV.mjs +1 -0
- package/dist/MCPServer.search.helpers-DlassAew.mjs +2 -0
- package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
- package/dist/MemoryController-CCsGuGJS.mjs +2 -0
- package/dist/{MemoryScanSession-DG_F-PjE.mjs → MemoryScanSession-BZ2A9Ph1.mjs} +1 -1
- package/dist/MemoryScanner-DAxsq7Sx.mjs +1 -0
- package/dist/NativeMemoryManager.impl-BIJzXMqH.mjs +1 -0
- package/dist/{NativeMemoryManager.utils-BHy1P_jM.mjs → NativeMemoryManager.utils-CMoul2an.mjs} +1 -1
- package/dist/PEAnalyzer-CB_kaTis.mjs +1 -0
- package/dist/PackerDeobfuscator-BpwGjxDL.mjs +7 -0
- package/dist/PointerChainEngine-B6SYv6ZM.mjs +1 -0
- package/dist/ProcessRegistry-C5W1Tkn9.mjs +1 -0
- package/dist/{handlers-mPFiNPe8.mjs → QuickJSSandbox-CIde-jzG.mjs} +2 -5
- package/dist/{ResponseBuilder-BfWP-uaT.mjs → ResponseBuilder-BLicSCjn.mjs} +1 -1
- package/dist/ReverseEvidenceGraph-DJzk0GQz.mjs +2 -0
- package/dist/ServerRuntimeState-DGXNv8Ji.mjs +1 -0
- package/dist/Speedhack-MGoeq1ZS.mjs +1 -0
- package/dist/StructureAnalyzer-CCTWAXR3.mjs +2 -0
- package/dist/ToolHandlerMap-C40EmuLT.mjs +1 -0
- package/dist/{ToolProbe-C7ZU2x7M.mjs → ToolProbe-B02GC3ZY.mjs} +1 -1
- package/dist/ToolRegistry-CzqQxFqf.mjs +1 -0
- package/dist/ToolRouter.policy-Bgb3S8jc.mjs +4 -0
- package/dist/TraceRecorder-BfeCTQUj.mjs +407 -0
- package/dist/VMDeobfuscator-BHtkV850.mjs +1 -0
- package/dist/Win32API-G7QPyckq.mjs +1 -0
- package/dist/{Win32Debug-CYrIQBvr.mjs → Win32Debug-6yzmtv5b.mjs} +1 -1
- package/dist/allocation-track-CiI-CnaI.mjs +1 -0
- package/dist/analysis-CojUzwX-.mjs +27 -0
- package/dist/antidebug-CgU84TE1.mjs +1 -0
- package/dist/apk-DrPBsOq8.mjs +1 -0
- package/dist/artifactRetention-Bk6fW2uF.mjs +1 -0
- package/dist/artifacts-Bx9GLx4J.mjs +1 -0
- package/dist/ast-bridge-BlOrmVAv.mjs +1 -0
- package/dist/ast-utils-B9E5k_v1.mjs +1 -0
- package/dist/{betterSqlite3-Brtq-SIQ.mjs → betterSqlite3-Bdo_ifuJ.mjs} +1 -1
- package/dist/binary-instrument-DiE1BP0x.mjs +12 -0
- package/dist/boringssl-inspector-C6M3sOga.mjs +2 -0
- package/dist/browser-QDUu5ML9.mjs +29 -0
- package/dist/{handlers-yo_xYzT8.mjs → canvas-g5kmLdY-.mjs} +1098 -24
- package/dist/{capabilities-CyXuKUl1.mjs → capabilities-DwzyxL2w.mjs} +1 -1
- package/dist/cdp-session-Dy4OwMOP.mjs +1 -0
- package/dist/collector-Cld4i-E4.mjs +1 -0
- package/dist/config-5ODJ3Aj0.mjs +3 -0
- package/dist/constants-nvsLpSri.mjs +1 -0
- package/dist/coordination-C6y2gM9O.mjs +98 -0
- package/dist/coverage-and-block--cWjjEe5.mjs +1 -0
- package/dist/dart-inspector-D4IKxZ6u.mjs +0 -0
- package/dist/debugger-C2SpiXoO.mjs +1 -0
- package/dist/definitions-0mtilYzG.mjs +1 -0
- package/dist/definitions-9csunmeX.mjs +1 -0
- package/dist/definitions-B11MudW_.mjs +1 -0
- package/dist/definitions-BKpRDjcI.mjs +1 -0
- package/dist/definitions-BXE3H4re.mjs +1 -0
- package/dist/definitions-BlPHe5DX.mjs +1 -0
- package/dist/definitions-Bob4XMxI.mjs +27 -0
- package/dist/definitions-BpIQN2nm.mjs +1 -0
- package/dist/definitions-BvolWeSu.mjs +1 -0
- package/dist/definitions-C-6j3Ejl.mjs +1 -0
- package/dist/definitions-C-AdFfFu.mjs +1 -0
- package/dist/definitions-CArdw_9T.mjs +1 -0
- package/dist/definitions-CCvIcRrT.mjs +1 -0
- package/dist/definitions-CJPE5PIl.mjs +1 -0
- package/dist/definitions-CbqeW06u.mjs +1 -0
- package/dist/definitions-Cexmkypg.mjs +1 -0
- package/dist/definitions-D1dxl8qt.mjs +1 -0
- package/dist/definitions-D3uT-ZbU.mjs +1 -0
- package/dist/definitions-DtOY5iUc.mjs +1 -0
- package/dist/{definitions-DxFNRQNK2.mjs → definitions-DvrYdDCJ2.mjs} +1 -1
- package/dist/{definitions-Cenu6mxo.mjs → definitions-aeRd5DAR.mjs} +1 -1
- package/dist/definitions-ihxOqOC4.mjs +1 -0
- package/dist/deopt-trace-qnAcC931.mjs +17 -0
- package/dist/disasm-DoxSucGp.mjs +1 -0
- package/dist/dumpsys-parser-Du-5ruEe.mjs +2 -0
- package/dist/encoding-UMtwgy4M.mjs +2 -0
- package/dist/ensure-browser-core-BP70x0TB.mjs +285 -0
- package/dist/factory-BeND77hf.mjs +2 -0
- package/dist/graphql-CF7QKJME.mjs +68 -0
- package/dist/grpc-raw-Dp7ps2sv.mjs +1 -0
- package/dist/handlers--qCl9vNv.mjs +1 -0
- package/dist/handlers-BHIu1LqA.mjs +1 -0
- package/dist/{antidebug-7L3ygj_9.mjs → handlers-BQ4K8Jbr.mjs} +2 -2
- package/dist/handlers-BxQv-wtf.mjs +8 -0
- package/dist/handlers-ByYG27-5.mjs +1 -0
- package/dist/handlers-C0I9-BtX.mjs +5 -0
- package/dist/handlers-CL0Iokmw.mjs +1 -0
- package/dist/handlers-CNbhIdSK.mjs +4 -0
- package/dist/handlers-CnTTSJFs.mjs +109 -0
- package/dist/handlers-CoDx6akJ2.mjs +49 -0
- package/dist/{handlers-0yKLRIfo.mjs → handlers-DASJI0Pn.mjs} +1 -1
- package/dist/handlers-DRKMaA-_.mjs +74 -0
- package/dist/handlers-Dalu0olz.mjs +2 -0
- package/dist/handlers-KY0g31ny.mjs +9 -0
- package/dist/handlers-oGo60aVv.mjs +1 -0
- package/dist/handlers.impl-BTXLw6Qc.mjs +1 -0
- package/dist/heap-sampling-BqdiU-5j.mjs +1 -0
- package/dist/{hooks-D4XLfgtV.mjs → hooks-COK3t5rT.mjs} +52 -33
- package/dist/index.mjs +11 -11
- package/dist/logger-BGCcd-jJ.mjs +1 -0
- package/dist/macro-nUYUjKNZ.mjs +2 -0
- package/dist/maintenance-CfnE7ZKU.mjs +4 -0
- package/dist/manifest-7EOTUc0D.mjs +1 -0
- package/dist/manifest-B5ujuQmf.mjs +1 -0
- package/dist/manifest-BErXl3zn.mjs +1 -0
- package/dist/manifest-BKA-mD3J.mjs +1 -0
- package/dist/manifest-BUXj23bX.mjs +1 -0
- package/dist/manifest-BfXt9cau.mjs +1 -0
- package/dist/manifest-Bx-tpURK.mjs +1 -0
- package/dist/manifest-C0owVAdq.mjs +1 -0
- package/dist/manifest-C5XqYc9o.mjs +1 -0
- package/dist/manifest-CVKzLjsA.mjs +1 -0
- package/dist/manifest-CaeFjdhj.mjs +1 -0
- package/dist/manifest-CegBgip0.mjs +1 -0
- package/dist/manifest-CoJHqlgS.mjs +1 -0
- package/dist/manifest-D0dbtDqd.mjs +1 -0
- package/dist/manifest-D5Gr8ujd.mjs +12 -0
- package/dist/manifest-D82z-5og.mjs +1 -0
- package/dist/manifest-DA2afIwh.mjs +1 -0
- package/dist/manifest-DAbiFP5o.mjs +1 -0
- package/dist/manifest-DEY0s1O72.mjs +1 -0
- package/dist/manifest-DTOqNqiA.mjs +1 -0
- package/dist/manifest-DZ6ELNgX.mjs +1 -0
- package/dist/manifest-DjHkjddT.mjs +1 -0
- package/dist/manifest-DocA_itf2.mjs +1 -0
- package/dist/manifest-Dpnhvfq0.mjs +1 -0
- package/dist/manifest-DucPMG_a.mjs +1 -0
- package/dist/manifest-Dw5yYEac.mjs +1 -0
- package/dist/manifest-Ic_Cg66S.mjs +1 -0
- package/dist/manifest-JHaG6GMN.mjs +1 -0
- package/dist/manifest-QdkIzmYM.mjs +1 -0
- package/dist/manifest-YZqaCe25.mjs +1 -0
- package/dist/manifest-f0lUeXwq.mjs +1 -0
- package/dist/manifest-h-Ebisf8.mjs +1 -0
- package/dist/manifest-oOfTymBS.mjs +1 -0
- package/dist/manifest-qXqrO6KC.mjs +2 -0
- package/dist/mapsParser-DrJoeC0c.mjs +1 -0
- package/dist/modules-CC_ADmwi.mjs +333 -0
- package/dist/mojo-ipc-kVztXYw-.mjs +140 -0
- package/dist/native-D9ouskXO.mjs +961 -0
- package/dist/native-bridge-Dzd7hYoq.mjs +1 -0
- package/dist/network-C5Y-S87J.mjs +7 -0
- package/dist/one-gadget-CiWFE17F.mjs +1 -0
- package/dist/outputPaths-CHtELDyi.mjs +1 -0
- package/dist/parse-args-B6dwWc9k.mjs +1 -0
- package/dist/platform-BIXgJaM3.mjs +94 -0
- package/dist/process-aDIfLC0v.mjs +6 -0
- package/dist/proxy-DsHsQ1I4.mjs +2 -0
- package/dist/registry-7h8jJ9y9.mjs +1 -0
- package/dist/{registry-DH4sc1dt.mjs → registry-DJDnkQW2.mjs} +1 -1
- package/dist/response-R8ghbZSb.mjs +1 -0
- package/dist/retry-policy-DtYv0kDi.mjs +1 -0
- package/dist/reverseEngineeringConfig-BhZLOa3C.mjs +1 -0
- package/dist/safeOutput-Dt4mfjXA.mjs +1 -0
- package/dist/search-defaults-BBRJNAzC.mjs +1 -0
- package/dist/server/plugin-api.mjs +1 -1
- package/dist/server/search/EmbeddingWorker.d.mts +1 -0
- package/dist/server/search/EmbeddingWorker.mjs +1 -0
- package/dist/shared-BKtWZDGN.mjs +1 -0
- package/dist/sourcemap-2VIeVeKw.mjs +3 -0
- package/dist/streaming-DkpE3GGU.mjs +15 -0
- package/dist/syscall-DGZoYM_U.mjs +1 -0
- package/dist/transform-BJqsBC_-.mjs +105 -0
- package/dist/turbofan-graph-CbGHNVtl.mjs +1 -0
- package/dist/turbofan-inspect--NdCuYXi.mjs +23 -0
- package/dist/types-CWSvzmIh.mjs +1 -0
- package/dist/v8-inspector-CTJo08-K.mjs +297 -0
- package/dist/wasm-DX4Qm2Vs.mjs +235 -0
- package/dist/weakrefs-inspect-CnhaF-rN.mjs +57 -0
- package/dist/webgpu-D4-DxbxZ.mjs +6 -0
- package/dist/workflow-DHktRNF2.mjs +108 -0
- package/package.json +33 -27
- package/dist/AntiCheatDetector-B6d4Qe9D.mjs +0 -1
- package/dist/CodeInjector-Cll_7bLJ.mjs +0 -1
- package/dist/ConsoleMonitor-CxDJV15E.mjs +0 -306
- package/dist/DOMInspector-C19J4zeq.mjs +0 -95
- package/dist/DarwinAPI-ZfQdpLNI.mjs +0 -1
- package/dist/DetailedDataManager-DmQ1LT-W.mjs +0 -1
- package/dist/ExtensionManager-BD724zkO.mjs +0 -1
- package/dist/ExtensionManager.tools-oVMJgPcN.mjs +0 -1
- package/dist/FingerprintManager-DT0EAUEo.mjs +0 -1
- package/dist/HardwareBreakpoint-BUfPdp0f.mjs +0 -1
- package/dist/HeapAnalyzer-B_aqY8oj.mjs +0 -1
- package/dist/InstrumentationSession-D_G1ZPyd.mjs +0 -1
- package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +0 -1
- package/dist/MemoryController-X1XNSn1n.mjs +0 -2
- package/dist/MemoryScanner-g1_L1ub5.mjs +0 -1
- package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +0 -1
- package/dist/NetworkMonitor-B_-au6aV.mjs +0 -185
- package/dist/PEAnalyzer-yWQaGrcx.mjs +0 -1
- package/dist/PageController-Dfsm1_o7.mjs +0 -1
- package/dist/PointerChainEngine-BhCUkmxY.mjs +0 -1
- package/dist/PrerequisiteError-BjCQA-gK.mjs +0 -1
- package/dist/ProcessRegistry-C-bN48oR.mjs +0 -1
- package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +0 -2
- package/dist/ScriptManager-LWGPTdvD.mjs +0 -7
- package/dist/ServerRuntimeState-D2bWHqEE.mjs +0 -1
- package/dist/Speedhack-yseDPSZ9.mjs +0 -1
- package/dist/StructureAnalyzer-C5lpuZkg.mjs +0 -2
- package/dist/ToolCatalog-CYdD9F5f.mjs +0 -1
- package/dist/ToolRegistry-C5oB8KP8.mjs +0 -1
- package/dist/ToolRouter.policy-CfhJczkt.mjs +0 -4
- package/dist/TraceRecorder-BiJWBXHX.mjs +0 -272
- package/dist/VersionDetector-CHT36Az0.mjs +0 -9
- package/dist/Win32API-eUCF57l_.mjs +0 -1
- package/dist/WorkflowEngine-D876meOO.mjs +0 -1
- package/dist/analysis-D4swdMvq.mjs +0 -6
- package/dist/apk-packer-BqXcInnX.mjs +0 -1
- package/dist/artifactRetention-BCPQASm7.mjs +0 -1
- package/dist/artifacts-CkodUM4j.mjs +0 -1
- package/dist/binary-instrument-DU7V6TUM.mjs +0 -7
- package/dist/binary-secrets-PdMVoyt0.mjs +0 -1
- package/dist/boringssl-inspector-BBaJwwkU.mjs +0 -2
- package/dist/browser-Qqco2rOT.mjs +0 -11
- package/dist/collector-Bpl6qy2L.mjs +0 -1
- package/dist/constants-BYj8Xek8.mjs +0 -1
- package/dist/coordination-CWXW1o8K.mjs +0 -1
- package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
- package/dist/debugger-DyALjYMk.mjs +0 -1
- package/dist/definitions-BWxBke3r.mjs +0 -1
- package/dist/definitions-BYwATKc-.mjs +0 -1
- package/dist/definitions-B_83XfNQ.mjs +0 -1
- package/dist/definitions-Bf3H1EwV.mjs +0 -1
- package/dist/definitions-BftdXgXI.mjs +0 -1
- package/dist/definitions-Bio5XJYy.mjs +0 -1
- package/dist/definitions-C3qNgSn1.mjs +0 -1
- package/dist/definitions-CB6vmOer.mjs +0 -1
- package/dist/definitions-CMZRSy3k.mjs +0 -1
- package/dist/definitions-CQd7yCQH.mjs +0 -1
- package/dist/definitions-CT8ln6GQ.mjs +0 -1
- package/dist/definitions-D4g-MS10.mjs +0 -1
- package/dist/definitions-D5wl_8HN.mjs +0 -1
- package/dist/definitions-DAQm1Xar.mjs +0 -1
- package/dist/definitions-DP1vgxEY.mjs +0 -1
- package/dist/definitions-Ibci7e_L.mjs +0 -1
- package/dist/definitions-OeLvmlQy.mjs +0 -1
- package/dist/definitions-RZYGD_Ey.mjs +0 -1
- package/dist/definitions-Tls8c0A0.mjs +0 -1
- package/dist/definitions-bybDvnG0.mjs +0 -26
- package/dist/definitions-l7TjdE6V.mjs +0 -1
- package/dist/encoding-ycOaz8Vr.mjs +0 -2
- package/dist/ensure-browser-core-DxWC-NTp.mjs +0 -1
- package/dist/factory-CKr4fAE1.mjs +0 -1
- package/dist/flat-target-session-DvcQX7J5.mjs +0 -1
- package/dist/graphql-B2TiPEow.mjs +0 -62
- package/dist/handlers-8zN_vBIz.mjs +0 -1
- package/dist/handlers-B62K4FTc.mjs +0 -1
- package/dist/handlers-BpDlVVVU.mjs +0 -1
- package/dist/handlers-CMJK7m1c.mjs +0 -31
- package/dist/handlers-D2ZOul9p.mjs +0 -54
- package/dist/handlers-D5E40ssn.mjs +0 -5
- package/dist/handlers-DGbdQAgD.mjs +0 -4
- package/dist/handlers-DHO3rjsW.mjs +0 -1
- package/dist/handlers-FJ80VzUI.mjs +0 -2
- package/dist/handlers-VHWrxbM_.mjs +0 -1
- package/dist/handlers-l8QIKqBj.mjs +0 -2
- package/dist/handlers.impl-D9Hh8Bgl.mjs +0 -1
- package/dist/jadx-search-B_Yse0Zh.mjs +0 -5
- package/dist/logger-sBC6IdRT.mjs +0 -1
- package/dist/maintenance-BUpIukhg.mjs +0 -1
- package/dist/manifest-0Jpt_AQa.mjs +0 -1
- package/dist/manifest-B3fZbSWR.mjs +0 -1
- package/dist/manifest-B7NB2rh2.mjs +0 -1
- package/dist/manifest-BDi4nbH1.mjs +0 -1
- package/dist/manifest-BLDfkE7n.mjs +0 -1
- package/dist/manifest-BcXbB4gf.mjs +0 -1
- package/dist/manifest-Bdnc_vrc.mjs +0 -1
- package/dist/manifest-BuYKgCnp.mjs +0 -1
- package/dist/manifest-CBfNnGPV.mjs +0 -1
- package/dist/manifest-CPS1Xv69.mjs +0 -1
- package/dist/manifest-CQH9FhwI.mjs +0 -1
- package/dist/manifest-CRryuZF4.mjs +0 -1
- package/dist/manifest-CctIumog.mjs +0 -1
- package/dist/manifest-CvTe5ZGV2.mjs +0 -1
- package/dist/manifest-D-5GH0DV.mjs +0 -1
- package/dist/manifest-D3Ssf3IC.mjs +0 -1
- package/dist/manifest-D5ck3NvC.mjs +0 -1
- package/dist/manifest-D9jUUJAu.mjs +0 -1
- package/dist/manifest-DCx6w2XV.mjs +0 -1
- package/dist/manifest-DG19q-Ld.mjs +0 -1
- package/dist/manifest-DLMlD0Zc.mjs +0 -1
- package/dist/manifest-DYpn8w_h.mjs +0 -1
- package/dist/manifest-DYzWI8Xs.mjs +0 -1
- package/dist/manifest-D_obs5F4.mjs +0 -1
- package/dist/manifest-DujQqEQR.mjs +0 -2
- package/dist/manifest-DwL2ik8P.mjs +0 -1
- package/dist/manifest-ItF5P8A12.mjs +0 -1
- package/dist/manifest-KZphqIyX.mjs +0 -1
- package/dist/manifest-LG42zPLY2.mjs +0 -1
- package/dist/manifest-LLdI5m4T.mjs +0 -1
- package/dist/manifest-QYbQXJn0.mjs +0 -1
- package/dist/manifest-RcpX_MyZ.mjs +0 -123
- package/dist/manifest-YgVd8Sgz.mjs +0 -1
- package/dist/manifest-Zy7Odg5J.mjs +0 -1
- package/dist/manifest-ff1H7Pdp.mjs +0 -1
- package/dist/manifest-iuhF6pTL2.mjs +0 -1
- package/dist/manifest-nXHmtMSp2.mjs +0 -1
- package/dist/manifest-xWfu6iLo.mjs +0 -1
- package/dist/manifest-yC16OhL2.mjs +0 -1
- package/dist/manifest-ztWJoXy4.mjs +0 -1
- package/dist/matchesWildcardPattern-BAG6LvX5.mjs +0 -1
- package/dist/modules-BPBcSaM-.mjs +0 -333
- package/dist/mojo-ipc-BhwsdVUW.mjs +0 -9
- package/dist/native-j8l473zn.mjs +0 -961
- package/dist/network-T0VRwNPd.mjs +0 -7
- package/dist/outputPaths-B4Ic4RZh.mjs +0 -2
- package/dist/parse-args-Bw413PlW.mjs +0 -1
- package/dist/platform-CzaQtISh.mjs +0 -93
- package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +0 -1
- package/dist/process-CWhsCWrf.mjs +0 -2
- package/dist/proxy-DZFlDsG3.mjs +0 -2
- package/dist/renderer-pid-9tJnZ_9N.mjs +0 -1
- package/dist/response-C7rKQst4.mjs +0 -1
- package/dist/search-defaults-lYBVn_3L.mjs +0 -1
- package/dist/shared-state-board-BSjXLUV1.mjs +0 -1
- package/dist/sourcemap-Dh3Ai_ur.mjs +0 -1
- package/dist/streaming-BcJ0B6ao.mjs +0 -1
- package/dist/transform-DOxzeWPB.mjs +0 -103
- package/dist/types-D9EiE5o9.mjs +0 -1
- package/dist/wasm-CZ_HTfKR.mjs +0 -174
- package/dist/webcrack-C1iYG_EX.mjs +0 -46
- package/dist/workflow-BdwQmARn.mjs +0 -101
- /package/dist/{CacheAdapters-CsNtQIR8.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
- /package/dist/{EventBus-DL8iLA09.mjs → EventBus-Cm-t-B65.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-BtbwXsLC.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
- /package/dist/{HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
- /package/dist/{RingBuffer-Dm54ELKT.mjs → RingBuffer-B6RTHmij.mjs} +0 -0
- /package/dist/{StealthVerifier-BmcxfwSF.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
- /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
- /package/dist/{authorization-schema-BOFwSXUN.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
- /package/dist/{bind-helpers-m2U8glkF.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
- /package/dist/{concurrency-DCr8WQ2M.mjs → concurrency-Dehnw4JC.mjs} +0 -0
- /package/dist/{evidence-graph-bridge-CV_UdYqj.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
- /package/dist/{formatAddress-vLA_hOJt.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
- /package/dist/{chunk-C_pMuVsO.mjs → rolldown-runtime-88NL7fhV.mjs} +0 -0
- /package/dist/{ssrf-policy-CsIJGkpd.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
- /package/dist/{tool-builder-qif8M9-K.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
- /package/dist/{types-Fz69RzbZ.mjs → types-BzPBzmVB.mjs} +0 -0
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-88NL7fhV.mjs";import{i as t}from"./artifacts-Bx9GLx4J.mjs";import{t as n}from"./betterSqlite3-Bdo_ifuJ.mjs";import{writeFile as r}from"node:fs/promises";import{randomUUID as i}from"node:crypto";const a={Debugger:[`Debugger.paused`,`Debugger.resumed`,`Debugger.scriptParsed`],Runtime:[`Runtime.consoleAPICalled`,`Runtime.exceptionThrown`],Network:[`Network.requestWillBeSent`,`Network.requestServedFromCache`,`Network.responseReceived`,`Network.dataReceived`,`Network.loadingFinished`,`Network.loadingFailed`,`Network.eventSourceMessageReceived`,`Network.webSocketCreated`,`Network.webSocketWillSendHandshakeRequest`,`Network.webSocketHandshakeResponseReceived`,`Network.webSocketFrameReceived`,`Network.webSocketFrameSent`,`Network.webSocketFrameError`,`Network.webSocketClosed`],Page:[`Page.navigatedWithinDocument`,`Page.loadEventFired`]},o=[`Debugger`,`Runtime`,`Network`,`Page`],s={recordResponseBodies:!0,streamResponseChunks:!0,maxBodyBytes:10*1024*1024,inlineBodyBytes:256*1024},c=16*1024,l=e=>typeof e==`object`&&!!e,u=e=>typeof e==`string`?e:null,d=e=>typeof e==`number`&&Number.isFinite(e)?e:null,f=e=>{let t=d(e);return t===null?null:t>0xe8d4a51000?t:t*1e3},p=e=>l(e)&&typeof e.body==`string`&&typeof e.base64Encoded==`boolean`,m=e=>{let t=Date.now();if(!l(e))return{timestamp:t,wallTime:t,monotonicTime:null};let n=f(e.wallTime),r=f(e.timestamp);return{timestamp:n??t,wallTime:n??t,monotonicTime:r}},h=e=>l(e)&&typeof e.requestId==`string`?e.requestId:null,g=(e,t)=>{let n=null,r=null;if(!l(t))return{scriptId:n,lineNumber:r};`scriptId`in t&&(n=String(t.scriptId)),`lineNumber`in t&&(r=Number(t.lineNumber)||null);let i=_(t.stackTrace);if(i.scriptId!==null&&(n=i.scriptId),i.lineNumber!==null&&(r=i.lineNumber),e===`Runtime.exceptionThrown`&&l(t.exceptionDetails)){let e=t.exceptionDetails;`scriptId`in e&&(n=String(e.scriptId)),`lineNumber`in e&&(r=Number(e.lineNumber)||null);let i=_(e.stackTrace);n===null&&i.scriptId!==null&&(n=i.scriptId),r===null&&i.lineNumber!==null&&(r=i.lineNumber)}if(e===`Debugger.paused`&&Array.isArray(t.callFrames)){let e=t.callFrames[0];if(e){let t=e.location;t&&(n=String(t.scriptId??n),r=Number(t.lineNumber??r)||null)}}return{scriptId:n,lineNumber:r}},_=e=>{if(!l(e)||!Array.isArray(e.callFrames))return{scriptId:null,lineNumber:null};let t=e.callFrames[0];return l(t)?{scriptId:typeof t.scriptId==`string`?t.scriptId:null,lineNumber:d(t.lineNumber)}:{scriptId:null,lineNumber:null}},v=(e,t)=>{if(!l(t))return t??{};let n={...t};if(e===`Network.dataReceived`&&typeof n.data==`string`){let e=n.data;n.hasChunkData=!0,n.chunkDataBytes=Buffer.byteLength(e,`utf8`),n.data=`[captured in network_chunks]`}if(e===`Network.eventSourceMessageReceived`&&typeof n.data==`string`&&Buffer.byteLength(n.data,`utf8`)>c&&(n.data=`${n.data.slice(0,c)}...[truncated]`,n.truncatedData=!0),(e===`Network.webSocketFrameReceived`||e===`Network.webSocketFrameSent`)&&l(n.response)&&typeof n.response.payloadData==`string`){let e={...n.response},t=e.payloadData;Buffer.byteLength(t,`utf8`)>c&&(e.payloadData=`${t.slice(0,c)}...[truncated]`,e.truncatedPayloadData=!0,n.response=e)}return n},y=e=>{let t=u(e.remoteIPAddress),n=d(e.remotePort);return t?n===null?t:`${t}:${n}`:null},b=e=>({requestId:e,url:null,method:null,resourceType:null,requestHeaders:`{}`,requestPostData:null,status:null,statusText:null,responseHeaders:`{}`,mimeType:null,protocol:null,remoteAddress:null,fromDiskCache:!1,fromServiceWorker:!1,startedWallTime:null,responseWallTime:null,finishedWallTime:null,startedMonotonicTime:null,responseMonotonicTime:null,finishedMonotonicTime:null,encodedDataLength:null,receivedDataLength:0,receivedEncodedDataLength:0,chunkCount:0,streamingEnabled:!1,streamingSupported:null,streamingError:null,bodyCaptureState:`none`,bodyInline:null,bodyArtifactPath:null,bodyBase64Encoded:!1,bodySize:null,bodyTruncated:!1,bodyError:null,failed:!1,errorText:null});var x=class{deps;resources=new Map;options={...s};counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0};constructor(e){this.deps=e}configure(e){return this.resources.clear(),this.counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0},this.options={...s,...e},this.getOptions()}clear(){this.resources.clear(),this.counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0}}getOptions(){return{...this.options}}getCounts(){return{...this.counts}}handleEvent(e,t,n){let r=h(t);if(r)switch(e){case`Network.requestWillBeSent`:this.handleRequestWillBeSent(r,t,n);return;case`Network.requestServedFromCache`:this.handleRequestServedFromCache(r);return;case`Network.responseReceived`:this.handleResponseReceived(r,t,n);return;case`Network.dataReceived`:this.handleDataReceived(r,t,n);return;case`Network.loadingFinished`:this.handleLoadingFinished(r,t,n);return;case`Network.loadingFailed`:this.handleLoadingFailed(r,t,n);return;default:return}}handleRequestWillBeSent(e,t,n){let r=this.getOrCreateResource(e),i=l(t)&&l(t.request)?t.request:null;r.url=i?u(i.url):r.url,r.method=i?u(i.method):r.method,r.resourceType=l(t)&&typeof t.type==`string`?t.type:r.resourceType,r.requestHeaders=i?JSON.stringify(i.headers??{}):r.requestHeaders,r.requestPostData=i?u(i.postData):r.requestPostData,r.startedWallTime=n.wallTime??r.startedWallTime??n.timestamp,r.startedMonotonicTime=n.monotonicTime??r.startedMonotonicTime,this.syncResource(r)}handleRequestServedFromCache(e){let t=this.getOrCreateResource(e);t.fromDiskCache=!0,this.syncResource(t)}handleResponseReceived(e,t,n){let r=this.getOrCreateResource(e),i=l(t)&&l(t.response)?t.response:null;r.url=i?u(i.url)??r.url:r.url,r.status=i?d(i.status):r.status,r.statusText=i?u(i.statusText):r.statusText,r.responseHeaders=i?JSON.stringify(i.headers??{}):r.responseHeaders,r.mimeType=i?u(i.mimeType):r.mimeType,r.protocol=i?u(i.protocol):r.protocol,r.remoteAddress=i?y(i):r.remoteAddress,r.fromDiskCache=i?!!i.fromDiskCache:r.fromDiskCache,r.fromServiceWorker=i?!!i.fromServiceWorker:r.fromServiceWorker,r.responseWallTime=n.wallTime??r.responseWallTime??n.timestamp,r.responseMonotonicTime=n.monotonicTime??r.responseMonotonicTime,this.syncResource(r),this.options.streamResponseChunks&&r.streamingSupported===null&&this.deps.trackOperation(this.enableStreamingForRequest(e))}handleDataReceived(e,t,n){let r=this.getOrCreateResource(e),i=l(t)?t:null,a=i?d(i.dataLength)??0:0,o=i?d(i.encodedDataLength)??0:0,s=i?u(i.data):null;r.receivedDataLength+=a,r.receivedEncodedDataLength+=o,r.chunkCount+=1;let c=r.receivedDataLength<=this.options.maxBodyBytes,f={requestId:e,sequence:r.chunkCount,timestamp:n.timestamp,monotonicTime:n.monotonicTime,dataLength:a,encodedDataLength:o,chunkData:c?s:null,chunkIsBase64:s!==null};try{this.deps.getDb()?.insertNetworkChunk(f),this.counts.networkChunkCount++}catch{}this.syncResource(r)}handleLoadingFinished(e,t,n){let r=this.getOrCreateResource(e);r.finishedWallTime=n.wallTime??n.timestamp,r.finishedMonotonicTime=n.monotonicTime??r.finishedMonotonicTime,l(t)&&(r.encodedDataLength=d(t.encodedDataLength)??r.encodedDataLength),this.syncResource(r),this.options.recordResponseBodies&&this.deps.trackOperation(this.captureResponseBody(e))}handleLoadingFailed(e,t,n){let r=this.getOrCreateResource(e);r.finishedWallTime=n.wallTime??n.timestamp,r.finishedMonotonicTime=n.monotonicTime??r.finishedMonotonicTime,r.failed=!0,r.errorText=l(t)?u(t.errorText):null,this.syncResource(r)}async enableStreamingForRequest(e){let t=this.deps.getCdpSession(),n=this.deps.getDb();if(!t||!n||!this.options.streamResponseChunks)return;let r=this.resources.get(e);if(!(!r||r.streamingSupported!==null))try{let i=await t.send(`Network.streamResourceContent`,{requestId:e});if(r.streamingEnabled=!0,r.streamingSupported=!0,r.streamingError=null,l(i)){let t=u(i.bufferedData);if(t){let i=Buffer.from(t,`base64`).length,a={requestId:e,sequence:r.chunkCount+1,timestamp:Date.now(),monotonicTime:r.responseMonotonicTime,dataLength:i,encodedDataLength:i,chunkData:r.receivedDataLength+i<=this.options.maxBodyBytes?t:null,chunkIsBase64:!0};r.chunkCount+=1,r.receivedDataLength+=i,r.receivedEncodedDataLength+=i,n.insertNetworkChunk(a),this.counts.networkChunkCount++}}}catch(e){r.streamingEnabled=!1,r.streamingSupported=!1,r.streamingError=e instanceof Error?e.message:String(e)}finally{this.syncResource(r)}}async captureResponseBody(e){let n=this.deps.getCdpSession();if(!n||!this.deps.getDb()||!this.options.recordResponseBodies)return;let i=this.resources.get(e);if(i)try{let a=await n.send(`Network.getResponseBody`,{requestId:e});if(!p(a))return;if(i.bodyBase64Encoded=a.base64Encoded,i.bodySize=a.base64Encoded?Buffer.from(a.body,`base64`).length:Buffer.byteLength(a.body,`utf8`),i.bodyTruncated=i.bodySize>this.options.maxBodyBytes,i.bodyTruncated)i.bodyCaptureState=`truncated`,i.bodyInline=a.body.slice(0,this.options.inlineBodyBytes),i.bodyArtifactPath=null,i.bodyError=`Body exceeded configured maxBodyBytes (${this.options.maxBodyBytes})`;else if(i.bodySize<=this.options.inlineBodyBytes)i.bodyCaptureState=`inline`,i.bodyInline=a.body,i.bodyArtifactPath=null,i.bodyError=null;else{let n=a.base64Encoded?`b64`:`txt`,{absolutePath:o}=await t({category:`traces`,toolName:`trace_body`,target:e.slice(0,32),ext:n});await r(o,a.body,`utf8`),i.bodyCaptureState=`artifact`,i.bodyInline=null,i.bodyArtifactPath=o,i.bodyError=null}this.counts.networkBodyCount++}catch(e){i.bodyCaptureState=i.bodyCaptureState===`none`?`error`:i.bodyCaptureState,i.bodyError=e instanceof Error?e.message:String(e)}finally{this.syncResource(i)}}getOrCreateResource(e){let t=this.resources.get(e);if(t)return t;let n=b(e);return this.resources.set(e,n),this.counts.networkRequestCount++,n}syncResource(e){try{this.deps.getDb()?.upsertNetworkResource(e)}catch{}}};function S(e){e.exec(`
|
|
2
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
3
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
+
timestamp REAL NOT NULL,
|
|
5
|
+
category TEXT NOT NULL,
|
|
6
|
+
event_type TEXT NOT NULL,
|
|
7
|
+
data TEXT NOT NULL DEFAULT '{}',
|
|
8
|
+
script_id TEXT,
|
|
9
|
+
line_number INTEGER,
|
|
10
|
+
wall_time REAL,
|
|
11
|
+
monotonic_time REAL,
|
|
12
|
+
request_id TEXT,
|
|
13
|
+
sequence INTEGER
|
|
14
|
+
);
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_events_category_type ON events(category, event_type);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_events_script_id ON events(script_id);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_events_request_id ON events(request_id);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE IF NOT EXISTS memory_deltas (
|
|
21
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
22
|
+
timestamp REAL NOT NULL,
|
|
23
|
+
address TEXT NOT NULL,
|
|
24
|
+
old_value TEXT NOT NULL,
|
|
25
|
+
new_value TEXT NOT NULL,
|
|
26
|
+
size INTEGER NOT NULL,
|
|
27
|
+
value_type TEXT NOT NULL
|
|
28
|
+
);
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_memory_timestamp ON memory_deltas(timestamp);
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_memory_address ON memory_deltas(address);
|
|
31
|
+
|
|
32
|
+
CREATE TABLE IF NOT EXISTS heap_snapshots (
|
|
33
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
34
|
+
timestamp REAL NOT NULL,
|
|
35
|
+
snapshot_data BLOB,
|
|
36
|
+
summary TEXT NOT NULL DEFAULT '{}'
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS metadata (
|
|
40
|
+
key TEXT PRIMARY KEY,
|
|
41
|
+
value TEXT NOT NULL
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE TABLE IF NOT EXISTS network_resources (
|
|
45
|
+
request_id TEXT PRIMARY KEY,
|
|
46
|
+
url TEXT,
|
|
47
|
+
method TEXT,
|
|
48
|
+
resource_type TEXT,
|
|
49
|
+
request_headers TEXT NOT NULL DEFAULT '{}',
|
|
50
|
+
request_post_data TEXT,
|
|
51
|
+
status INTEGER,
|
|
52
|
+
status_text TEXT,
|
|
53
|
+
response_headers TEXT NOT NULL DEFAULT '{}',
|
|
54
|
+
mime_type TEXT,
|
|
55
|
+
protocol TEXT,
|
|
56
|
+
remote_address TEXT,
|
|
57
|
+
from_disk_cache INTEGER NOT NULL DEFAULT 0,
|
|
58
|
+
from_service_worker INTEGER NOT NULL DEFAULT 0,
|
|
59
|
+
started_wall_time REAL,
|
|
60
|
+
response_wall_time REAL,
|
|
61
|
+
finished_wall_time REAL,
|
|
62
|
+
started_monotonic_time REAL,
|
|
63
|
+
response_monotonic_time REAL,
|
|
64
|
+
finished_monotonic_time REAL,
|
|
65
|
+
encoded_data_length INTEGER,
|
|
66
|
+
received_data_length INTEGER NOT NULL DEFAULT 0,
|
|
67
|
+
received_encoded_data_length INTEGER NOT NULL DEFAULT 0,
|
|
68
|
+
chunk_count INTEGER NOT NULL DEFAULT 0,
|
|
69
|
+
streaming_enabled INTEGER NOT NULL DEFAULT 0,
|
|
70
|
+
streaming_supported INTEGER,
|
|
71
|
+
streaming_error TEXT,
|
|
72
|
+
body_capture_state TEXT NOT NULL DEFAULT 'none',
|
|
73
|
+
body_inline TEXT,
|
|
74
|
+
body_artifact_path TEXT,
|
|
75
|
+
body_base64_encoded INTEGER NOT NULL DEFAULT 0,
|
|
76
|
+
body_size INTEGER,
|
|
77
|
+
body_truncated INTEGER NOT NULL DEFAULT 0,
|
|
78
|
+
body_error TEXT,
|
|
79
|
+
failed INTEGER NOT NULL DEFAULT 0,
|
|
80
|
+
error_text TEXT
|
|
81
|
+
);
|
|
82
|
+
CREATE INDEX IF NOT EXISTS idx_network_resources_started_wall_time
|
|
83
|
+
ON network_resources(started_wall_time);
|
|
84
|
+
|
|
85
|
+
CREATE TABLE IF NOT EXISTS network_chunks (
|
|
86
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
87
|
+
request_id TEXT NOT NULL,
|
|
88
|
+
sequence INTEGER NOT NULL,
|
|
89
|
+
timestamp REAL NOT NULL,
|
|
90
|
+
monotonic_time REAL,
|
|
91
|
+
data_length INTEGER NOT NULL,
|
|
92
|
+
encoded_data_length INTEGER NOT NULL,
|
|
93
|
+
chunk_data TEXT,
|
|
94
|
+
chunk_is_base64 INTEGER NOT NULL DEFAULT 0
|
|
95
|
+
);
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_network_chunks_request_sequence
|
|
97
|
+
ON network_chunks(request_id, sequence);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_network_chunks_timestamp
|
|
99
|
+
ON network_chunks(timestamp);
|
|
100
|
+
|
|
101
|
+
CREATE TABLE IF NOT EXISTS samples (
|
|
102
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
103
|
+
timestamp REAL NOT NULL,
|
|
104
|
+
self_time REAL NOT NULL,
|
|
105
|
+
aggregate_time REAL NOT NULL,
|
|
106
|
+
function_name TEXT,
|
|
107
|
+
script_id TEXT,
|
|
108
|
+
url TEXT,
|
|
109
|
+
line_number INTEGER,
|
|
110
|
+
column_number INTEGER
|
|
111
|
+
);
|
|
112
|
+
CREATE INDEX IF NOT EXISTS idx_samples_timestamp ON samples(timestamp);
|
|
113
|
+
CREATE INDEX IF NOT EXISTS idx_samples_function ON samples(function_name);
|
|
114
|
+
|
|
115
|
+
CREATE TABLE IF NOT EXISTS console_logs (
|
|
116
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
117
|
+
timestamp REAL NOT NULL,
|
|
118
|
+
wall_time REAL,
|
|
119
|
+
monotonic_time REAL,
|
|
120
|
+
level TEXT NOT NULL,
|
|
121
|
+
text TEXT NOT NULL,
|
|
122
|
+
args TEXT NOT NULL DEFAULT '[]',
|
|
123
|
+
stack_trace TEXT,
|
|
124
|
+
script_id TEXT,
|
|
125
|
+
line_number INTEGER,
|
|
126
|
+
column_number INTEGER,
|
|
127
|
+
execution_context_id INTEGER
|
|
128
|
+
);
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_console_logs_timestamp ON console_logs(timestamp);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_console_logs_monotonic_time ON console_logs(monotonic_time);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_console_logs_level ON console_logs(level);
|
|
132
|
+
|
|
133
|
+
CREATE TABLE IF NOT EXISTS exceptions (
|
|
134
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
135
|
+
timestamp REAL NOT NULL,
|
|
136
|
+
wall_time REAL,
|
|
137
|
+
monotonic_time REAL,
|
|
138
|
+
text TEXT NOT NULL,
|
|
139
|
+
exception_id INTEGER,
|
|
140
|
+
url TEXT,
|
|
141
|
+
script_id TEXT,
|
|
142
|
+
line_number INTEGER,
|
|
143
|
+
column_number INTEGER,
|
|
144
|
+
description TEXT,
|
|
145
|
+
stack_trace TEXT,
|
|
146
|
+
execution_context_id INTEGER
|
|
147
|
+
);
|
|
148
|
+
CREATE INDEX IF NOT EXISTS idx_exceptions_timestamp ON exceptions(timestamp);
|
|
149
|
+
CREATE INDEX IF NOT EXISTS idx_exceptions_monotonic_time ON exceptions(monotonic_time);
|
|
150
|
+
CREATE INDEX IF NOT EXISTS idx_exceptions_exception_id ON exceptions(exception_id);
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_exceptions_script_id ON exceptions(script_id);
|
|
152
|
+
`),j(e,`events`,`wall_time`,`REAL`),j(e,`events`,`monotonic_time`,`REAL`),j(e,`events`,`request_id`,`TEXT`),j(e,`events`,`sequence`,`INTEGER`)}function C(e){return{insertEventStmt:e.prepare(`
|
|
153
|
+
INSERT INTO events (
|
|
154
|
+
timestamp,
|
|
155
|
+
category,
|
|
156
|
+
event_type,
|
|
157
|
+
data,
|
|
158
|
+
script_id,
|
|
159
|
+
line_number,
|
|
160
|
+
wall_time,
|
|
161
|
+
monotonic_time,
|
|
162
|
+
request_id,
|
|
163
|
+
sequence
|
|
164
|
+
)
|
|
165
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
166
|
+
`),insertDeltaStmt:e.prepare(`
|
|
167
|
+
INSERT INTO memory_deltas (timestamp, address, old_value, new_value, size, value_type)
|
|
168
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
169
|
+
`),insertSnapshotStmt:e.prepare(`
|
|
170
|
+
INSERT INTO heap_snapshots (timestamp, snapshot_data, summary)
|
|
171
|
+
VALUES (?, ?, ?)
|
|
172
|
+
`),upsertMetadataStmt:e.prepare(`
|
|
173
|
+
INSERT INTO metadata (key, value) VALUES (?, ?)
|
|
174
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
175
|
+
`),upsertNetworkResourceStmt:e.prepare(`
|
|
176
|
+
INSERT INTO network_resources (
|
|
177
|
+
request_id,
|
|
178
|
+
url,
|
|
179
|
+
method,
|
|
180
|
+
resource_type,
|
|
181
|
+
request_headers,
|
|
182
|
+
request_post_data,
|
|
183
|
+
status,
|
|
184
|
+
status_text,
|
|
185
|
+
response_headers,
|
|
186
|
+
mime_type,
|
|
187
|
+
protocol,
|
|
188
|
+
remote_address,
|
|
189
|
+
from_disk_cache,
|
|
190
|
+
from_service_worker,
|
|
191
|
+
started_wall_time,
|
|
192
|
+
response_wall_time,
|
|
193
|
+
finished_wall_time,
|
|
194
|
+
started_monotonic_time,
|
|
195
|
+
response_monotonic_time,
|
|
196
|
+
finished_monotonic_time,
|
|
197
|
+
encoded_data_length,
|
|
198
|
+
received_data_length,
|
|
199
|
+
received_encoded_data_length,
|
|
200
|
+
chunk_count,
|
|
201
|
+
streaming_enabled,
|
|
202
|
+
streaming_supported,
|
|
203
|
+
streaming_error,
|
|
204
|
+
body_capture_state,
|
|
205
|
+
body_inline,
|
|
206
|
+
body_artifact_path,
|
|
207
|
+
body_base64_encoded,
|
|
208
|
+
body_size,
|
|
209
|
+
body_truncated,
|
|
210
|
+
body_error,
|
|
211
|
+
failed,
|
|
212
|
+
error_text
|
|
213
|
+
)
|
|
214
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
215
|
+
ON CONFLICT(request_id) DO UPDATE SET
|
|
216
|
+
url = excluded.url,
|
|
217
|
+
method = excluded.method,
|
|
218
|
+
resource_type = excluded.resource_type,
|
|
219
|
+
request_headers = excluded.request_headers,
|
|
220
|
+
request_post_data = excluded.request_post_data,
|
|
221
|
+
status = excluded.status,
|
|
222
|
+
status_text = excluded.status_text,
|
|
223
|
+
response_headers = excluded.response_headers,
|
|
224
|
+
mime_type = excluded.mime_type,
|
|
225
|
+
protocol = excluded.protocol,
|
|
226
|
+
remote_address = excluded.remote_address,
|
|
227
|
+
from_disk_cache = excluded.from_disk_cache,
|
|
228
|
+
from_service_worker = excluded.from_service_worker,
|
|
229
|
+
started_wall_time = excluded.started_wall_time,
|
|
230
|
+
response_wall_time = excluded.response_wall_time,
|
|
231
|
+
finished_wall_time = excluded.finished_wall_time,
|
|
232
|
+
started_monotonic_time = excluded.started_monotonic_time,
|
|
233
|
+
response_monotonic_time = excluded.response_monotonic_time,
|
|
234
|
+
finished_monotonic_time = excluded.finished_monotonic_time,
|
|
235
|
+
encoded_data_length = excluded.encoded_data_length,
|
|
236
|
+
received_data_length = excluded.received_data_length,
|
|
237
|
+
received_encoded_data_length = excluded.received_encoded_data_length,
|
|
238
|
+
chunk_count = excluded.chunk_count,
|
|
239
|
+
streaming_enabled = excluded.streaming_enabled,
|
|
240
|
+
streaming_supported = excluded.streaming_supported,
|
|
241
|
+
streaming_error = excluded.streaming_error,
|
|
242
|
+
body_capture_state = excluded.body_capture_state,
|
|
243
|
+
body_inline = excluded.body_inline,
|
|
244
|
+
body_artifact_path = excluded.body_artifact_path,
|
|
245
|
+
body_base64_encoded = excluded.body_base64_encoded,
|
|
246
|
+
body_size = excluded.body_size,
|
|
247
|
+
body_truncated = excluded.body_truncated,
|
|
248
|
+
body_error = excluded.body_error,
|
|
249
|
+
failed = excluded.failed,
|
|
250
|
+
error_text = excluded.error_text
|
|
251
|
+
`),insertNetworkChunkStmt:e.prepare(`
|
|
252
|
+
INSERT INTO network_chunks (
|
|
253
|
+
request_id,
|
|
254
|
+
sequence,
|
|
255
|
+
timestamp,
|
|
256
|
+
monotonic_time,
|
|
257
|
+
data_length,
|
|
258
|
+
encoded_data_length,
|
|
259
|
+
chunk_data,
|
|
260
|
+
chunk_is_base64
|
|
261
|
+
)
|
|
262
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
263
|
+
`),insertSampleStmt:e.prepare(`
|
|
264
|
+
INSERT INTO samples (
|
|
265
|
+
timestamp,
|
|
266
|
+
self_time,
|
|
267
|
+
aggregate_time,
|
|
268
|
+
function_name,
|
|
269
|
+
script_id,
|
|
270
|
+
url,
|
|
271
|
+
line_number,
|
|
272
|
+
column_number
|
|
273
|
+
)
|
|
274
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
275
|
+
`),insertConsoleLogStmt:e.prepare(`
|
|
276
|
+
INSERT INTO console_logs (
|
|
277
|
+
timestamp,
|
|
278
|
+
wall_time,
|
|
279
|
+
monotonic_time,
|
|
280
|
+
level,
|
|
281
|
+
text,
|
|
282
|
+
args,
|
|
283
|
+
stack_trace,
|
|
284
|
+
script_id,
|
|
285
|
+
line_number,
|
|
286
|
+
column_number,
|
|
287
|
+
execution_context_id
|
|
288
|
+
)
|
|
289
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
290
|
+
`),insertExceptionStmt:e.prepare(`
|
|
291
|
+
INSERT INTO exceptions (
|
|
292
|
+
timestamp,
|
|
293
|
+
wall_time,
|
|
294
|
+
monotonic_time,
|
|
295
|
+
text,
|
|
296
|
+
exception_id,
|
|
297
|
+
url,
|
|
298
|
+
script_id,
|
|
299
|
+
line_number,
|
|
300
|
+
column_number,
|
|
301
|
+
description,
|
|
302
|
+
stack_trace,
|
|
303
|
+
execution_context_id
|
|
304
|
+
)
|
|
305
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
306
|
+
`)}}function w(e){return{id:e.id,timestamp:e.timestamp,category:e.category,eventType:e.event_type,data:e.data,scriptId:e.script_id??null,lineNumber:e.line_number??null,wallTime:e.wall_time??null,monotonicTime:e.monotonic_time??null,requestId:e.request_id??null,sequence:e.sequence??null}}function T(e,t){return{id:e.id,requestId:e.request_id,sequence:e.sequence,timestamp:e.timestamp,monotonicTime:e.monotonic_time??null,dataLength:e.data_length,encodedDataLength:e.encoded_data_length,chunkData:e.chunk_data??null,chunkIsBase64:t(e.chunk_is_base64)}}function E(e,t){return{requestId:e.request_id,url:e.url??null,method:e.method??null,resourceType:e.resource_type??null,requestHeaders:e.request_headers??`{}`,requestPostData:e.request_post_data??null,status:e.status??null,statusText:e.status_text??null,responseHeaders:e.response_headers??`{}`,mimeType:e.mime_type??null,protocol:e.protocol??null,remoteAddress:e.remote_address??null,fromDiskCache:t(e.from_disk_cache),fromServiceWorker:t(e.from_service_worker),startedWallTime:e.started_wall_time??null,responseWallTime:e.response_wall_time??null,finishedWallTime:e.finished_wall_time??null,startedMonotonicTime:e.started_monotonic_time??null,responseMonotonicTime:e.response_monotonic_time??null,finishedMonotonicTime:e.finished_monotonic_time??null,encodedDataLength:e.encoded_data_length??null,receivedDataLength:e.received_data_length??0,receivedEncodedDataLength:e.received_encoded_data_length??0,chunkCount:e.chunk_count??0,streamingEnabled:t(e.streaming_enabled),streamingSupported:e.streaming_supported===null||e.streaming_supported===void 0?null:t(e.streaming_supported),streamingError:e.streaming_error??null,bodyCaptureState:e.body_capture_state??`none`,bodyInline:e.body_inline??null,bodyArtifactPath:e.body_artifact_path??null,bodyBase64Encoded:t(e.body_base64_encoded),bodySize:e.body_size??null,bodyTruncated:t(e.body_truncated),bodyError:e.body_error??null,failed:t(e.failed),errorText:e.error_text??null}}function D(e){return{id:e.id,timestamp:e.timestamp,selfTime:e.self_time,aggregateTime:e.aggregate_time,functionName:e.function_name??null,scriptId:e.script_id??null,url:e.url??null,lineNumber:e.line_number??null,columnNumber:e.column_number??null}}function O(e){return{functionName:e.function_name??`(anonymous)`,selfTime:e.self_time??0,aggregateTime:e.aggregate_time??0,sampleCount:e.sample_count??0,scriptId:e.script_id??null,url:e.url??null,lineNumber:e.line_number??null,columnNumber:e.column_number??null}}function k(e){return{id:e.id,timestamp:e.timestamp,wallTime:e.wall_time??null,monotonicTime:e.monotonic_time??null,level:e.level,text:e.text,args:e.args??`[]`,stackTrace:e.stack_trace??null,scriptId:e.script_id??null,lineNumber:e.line_number??null,columnNumber:e.column_number??null,executionContextId:e.execution_context_id??null}}function A(e){return{id:e.id,timestamp:e.timestamp,wallTime:e.wall_time??null,monotonicTime:e.monotonic_time??null,text:e.text,exceptionId:e.exception_id??null,url:e.url??null,scriptId:e.script_id??null,lineNumber:e.line_number??null,columnNumber:e.column_number??null,description:e.description??null,stackTrace:e.stack_trace??null,executionContextId:e.execution_context_id??null}}function j(e,t,n,r){e.prepare(`PRAGMA table_info(${t})`).all().some(e=>e.name===n)||e.exec(`ALTER TABLE ${t} ADD COLUMN ${n} ${r}`)}let M;try{M=e(`better-sqlite3`)}catch{}const N=/\b(INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|ATTACH|DETACH|REPLACE|PRAGMA)\b/i;var P=class{options;db;batchSize;eventBuffer=[];memoryBuffer=[];networkChunkBuffer=[];closed=!1;insertEventStmt;insertDeltaStmt;insertSnapshotStmt;upsertMetadataStmt;upsertNetworkResourceStmt;insertNetworkChunkStmt;insertSampleStmt;insertConsoleLogStmt;insertExceptionStmt;constructor(e){if(this.options=e,!M)throw Error(n(Error(`Cannot find package 'better-sqlite3'`)));try{this.db=new M(e.dbPath)}catch(e){throw Error(n(e),{cause:e})}this.batchSize=e.batchSize??200,this.db.pragma(`journal_mode = WAL`),this.db.pragma(`synchronous = NORMAL`),S(this.db);let t=C(this.db);this.insertEventStmt=t.insertEventStmt,this.insertDeltaStmt=t.insertDeltaStmt,this.insertSnapshotStmt=t.insertSnapshotStmt,this.upsertMetadataStmt=t.upsertMetadataStmt,this.upsertNetworkResourceStmt=t.upsertNetworkResourceStmt,this.insertNetworkChunkStmt=t.insertNetworkChunkStmt,this.insertSampleStmt=t.insertSampleStmt,this.insertConsoleLogStmt=t.insertConsoleLogStmt,this.insertExceptionStmt=t.insertExceptionStmt}get dbPath(){return this.options.dbPath}insertEvent(e){this.ensureOpen(),this.eventBuffer.push(e),this.eventBuffer.length>=this.batchSize&&this.flush()}insertMemoryDelta(e){this.ensureOpen(),this.memoryBuffer.push(e),this.memoryBuffer.length>=this.batchSize&&this.flush()}insertNetworkChunk(e){this.ensureOpen(),this.networkChunkBuffer.push(e),this.networkChunkBuffer.length>=this.batchSize&&this.flush()}insertSample(e){this.ensureOpen(),this.insertSampleStmt.run(e.timestamp,e.selfTime,e.aggregateTime,e.functionName,e.scriptId,e.url,e.lineNumber,e.columnNumber)}insertConsoleLog(e){this.ensureOpen(),this.insertConsoleLogStmt.run(e.timestamp,e.wallTime,e.monotonicTime,e.level,e.text,e.args,e.stackTrace,e.scriptId,e.lineNumber,e.columnNumber,e.executionContextId)}insertException(e){this.ensureOpen(),this.insertExceptionStmt.run(e.timestamp,e.wallTime,e.monotonicTime,e.text,e.exceptionId,e.url,e.scriptId,e.lineNumber,e.columnNumber,e.description,e.stackTrace,e.executionContextId)}upsertNetworkResource(e){this.ensureOpen(),this.upsertNetworkResourceStmt.run(e.requestId,e.url,e.method,e.resourceType,e.requestHeaders,e.requestPostData,e.status,e.statusText,e.responseHeaders,e.mimeType,e.protocol,e.remoteAddress,+!!e.fromDiskCache,+!!e.fromServiceWorker,e.startedWallTime,e.responseWallTime,e.finishedWallTime,e.startedMonotonicTime,e.responseMonotonicTime,e.finishedMonotonicTime,e.encodedDataLength,e.receivedDataLength,e.receivedEncodedDataLength,e.chunkCount,+!!e.streamingEnabled,e.streamingSupported===null?null:+!!e.streamingSupported,e.streamingError,e.bodyCaptureState,e.bodyInline,e.bodyArtifactPath,+!!e.bodyBase64Encoded,e.bodySize,+!!e.bodyTruncated,e.bodyError,+!!e.failed,e.errorText)}insertHeapSnapshot(e){this.ensureOpen(),this.insertSnapshotStmt.run(e.timestamp,e.snapshotData,e.summary)}setMetadata(e,t){this.ensureOpen(),this.upsertMetadataStmt.run(e,t)}flush(){this.closed||(this.db.transaction(()=>{for(let e of this.eventBuffer)this.insertEventStmt.run(e.timestamp,e.category,e.eventType,e.data,e.scriptId,e.lineNumber,e.wallTime??null,e.monotonicTime??null,e.requestId??null,e.sequence??null);for(let e of this.memoryBuffer)this.insertDeltaStmt.run(e.timestamp,e.address,e.oldValue,e.newValue,e.size,e.valueType);for(let e of this.networkChunkBuffer)this.insertNetworkChunkStmt.run(e.requestId,e.sequence,e.timestamp,e.monotonicTime,e.dataLength,e.encodedDataLength,e.chunkData,+!!e.chunkIsBase64)})(),this.eventBuffer=[],this.memoryBuffer=[],this.networkChunkBuffer=[])}query(e){return this.executeReadQuery(e,[])}queryWithParams(e,t){return this.executeReadQuery(e,t)}getEventsByTimeRange(e,t){return this.ensureOpen(),this.flush(),this.db.prepare(`
|
|
307
|
+
SELECT
|
|
308
|
+
id,
|
|
309
|
+
timestamp,
|
|
310
|
+
category,
|
|
311
|
+
event_type,
|
|
312
|
+
data,
|
|
313
|
+
script_id,
|
|
314
|
+
line_number,
|
|
315
|
+
wall_time,
|
|
316
|
+
monotonic_time,
|
|
317
|
+
request_id,
|
|
318
|
+
sequence
|
|
319
|
+
FROM events
|
|
320
|
+
WHERE timestamp >= ? AND timestamp <= ?
|
|
321
|
+
ORDER BY timestamp ASC, sequence ASC, id ASC
|
|
322
|
+
`).all(e,t).map(w)}getEventsByRequestId(e){return this.ensureOpen(),this.flush(),this.db.prepare(`
|
|
323
|
+
SELECT
|
|
324
|
+
id,
|
|
325
|
+
timestamp,
|
|
326
|
+
category,
|
|
327
|
+
event_type,
|
|
328
|
+
data,
|
|
329
|
+
script_id,
|
|
330
|
+
line_number,
|
|
331
|
+
wall_time,
|
|
332
|
+
monotonic_time,
|
|
333
|
+
request_id,
|
|
334
|
+
sequence
|
|
335
|
+
FROM events
|
|
336
|
+
WHERE request_id = ?
|
|
337
|
+
ORDER BY COALESCE(monotonic_time, timestamp) ASC, sequence ASC, id ASC
|
|
338
|
+
`).all(e).map(w)}getNetworkResource(e){this.ensureOpen(),this.flush();let t=this.db.prepare(`
|
|
339
|
+
SELECT *
|
|
340
|
+
FROM network_resources
|
|
341
|
+
WHERE request_id = ?
|
|
342
|
+
LIMIT 1
|
|
343
|
+
`).get(e);return t?E(t,this.fromSqliteBoolean):null}getNetworkChunks(e,t){this.ensureOpen(),this.flush();let n=`
|
|
344
|
+
SELECT
|
|
345
|
+
id,
|
|
346
|
+
request_id,
|
|
347
|
+
sequence,
|
|
348
|
+
timestamp,
|
|
349
|
+
monotonic_time,
|
|
350
|
+
data_length,
|
|
351
|
+
encoded_data_length,
|
|
352
|
+
chunk_data,
|
|
353
|
+
chunk_is_base64
|
|
354
|
+
FROM network_chunks
|
|
355
|
+
WHERE request_id = ?
|
|
356
|
+
ORDER BY sequence ASC
|
|
357
|
+
${typeof t==`number`?`LIMIT ?`:``}
|
|
358
|
+
`,r=this.db.prepare(n);return(typeof t==`number`?r.all(e,t):r.all(e)).map(e=>T(e,this.fromSqliteBoolean))}querySamplesByFunction(e,t=50){return this.ensureOpen(),this.flush(),this.db.prepare(`
|
|
359
|
+
SELECT *
|
|
360
|
+
FROM samples
|
|
361
|
+
WHERE function_name = ?
|
|
362
|
+
ORDER BY self_time DESC, aggregate_time DESC, timestamp DESC
|
|
363
|
+
LIMIT ?
|
|
364
|
+
`).all(e,t).map(D)}getSamplesInWindow(e,t,n=50){return this.ensureOpen(),this.flush(),this.db.prepare(`
|
|
365
|
+
SELECT *
|
|
366
|
+
FROM samples
|
|
367
|
+
WHERE timestamp >= ? AND timestamp <= ?
|
|
368
|
+
ORDER BY self_time DESC, aggregate_time DESC, timestamp ASC
|
|
369
|
+
LIMIT ?
|
|
370
|
+
`).all(e-t,e+t,n).map(D)}getTopFunctions(e=20,t,n){this.ensureOpen(),this.flush();let r=typeof t==`number`&&typeof n==`number`,i=this.db.prepare(`
|
|
371
|
+
SELECT
|
|
372
|
+
function_name,
|
|
373
|
+
SUM(self_time) AS self_time,
|
|
374
|
+
SUM(aggregate_time) AS aggregate_time,
|
|
375
|
+
COUNT(*) AS sample_count,
|
|
376
|
+
script_id,
|
|
377
|
+
url,
|
|
378
|
+
line_number,
|
|
379
|
+
column_number
|
|
380
|
+
FROM samples
|
|
381
|
+
WHERE function_name IS NOT NULL
|
|
382
|
+
${r?`AND timestamp >= ? AND timestamp <= ?`:``}
|
|
383
|
+
GROUP BY function_name
|
|
384
|
+
ORDER BY self_time DESC, aggregate_time DESC, function_name ASC
|
|
385
|
+
LIMIT ?
|
|
386
|
+
`);return(r?i.all(t,n,e):i.all(e)).map(O)}getConsoleLogsByTimeRange(e,t,n=`wall`,r=100){this.ensureOpen(),this.flush();let i=n===`monotonic`?`COALESCE(monotonic_time, timestamp)`:`timestamp`;return this.db.prepare(`
|
|
387
|
+
SELECT *
|
|
388
|
+
FROM console_logs
|
|
389
|
+
WHERE ${i} >= ? AND ${i} <= ?
|
|
390
|
+
ORDER BY ${i} ASC, id ASC
|
|
391
|
+
LIMIT ?
|
|
392
|
+
`).all(e,t,r).map(k)}getExceptionsByTimeRange(e,t,n=`wall`,r=100){this.ensureOpen(),this.flush();let i=n===`monotonic`?`COALESCE(monotonic_time, timestamp)`:`timestamp`;return this.db.prepare(`
|
|
393
|
+
SELECT *
|
|
394
|
+
FROM exceptions
|
|
395
|
+
WHERE ${i} >= ? AND ${i} <= ?
|
|
396
|
+
ORDER BY ${i} ASC, id ASC
|
|
397
|
+
LIMIT ?
|
|
398
|
+
`).all(e,t,r).map(A)}getMemoryDeltasByAddress(e){return this.ensureOpen(),this.flush(),this.db.prepare(`
|
|
399
|
+
SELECT id, timestamp, address, old_value, new_value, size, value_type
|
|
400
|
+
FROM memory_deltas
|
|
401
|
+
WHERE address = ?
|
|
402
|
+
ORDER BY timestamp ASC
|
|
403
|
+
`).all(e).map(e=>({id:e.id,timestamp:e.timestamp,address:e.address,oldValue:e.old_value,newValue:e.new_value,size:e.size,valueType:e.value_type}))}getHeapSnapshots(){return this.ensureOpen(),this.db.prepare(`
|
|
404
|
+
SELECT id, timestamp, snapshot_data, summary
|
|
405
|
+
FROM heap_snapshots
|
|
406
|
+
ORDER BY timestamp ASC
|
|
407
|
+
`).all().map(e=>({id:e.id,timestamp:e.timestamp,snapshotData:e.snapshot_data,summary:e.summary}))}getMetadata(){this.ensureOpen();let e=this.db.prepare(`SELECT key, value FROM metadata`).all(),t={};for(let n of e)t[n.key]=n.value;return t}close(){this.closed||=(this.flush(),this.db.close(),!0)}get isClosed(){return this.closed}fromSqliteBoolean(e){return e===1||e===!0}ensureOpen(){if(this.closed)throw Error(`TraceDB is closed`)}executeReadQuery(e,t){if(this.ensureOpen(),N.test(e))throw Error(`Write operations are not allowed in trace queries. Rejected SQL: ${e.slice(0,100)}`);let n=this.db.prepare(e),r=n.all(...t);if(r.length===0)return{columns:n.columns().map(e=>e.name),rows:[],rowCount:0};let i=Object.keys(r[0]);return{columns:i,rows:r.map(e=>i.map(t=>e[t])),rowCount:r.length}}};const F=64*1024;var I=class{db=null;state=`idle`;session=null;eventBusUnsub=null;cdpListeners=new Map;enabledCdpDomains=new Set;cdpSession=null;ownsCdpSession=!1;profilerActive=!1;profilerListeners=new Map;eventCount=0;memoryDeltaCount=0;heapSnapshotCount=0;eventSequence=0;pendingOperations=new Set;networkCapture=new x({getDb:()=>this.db,getCdpSession:()=>this.cdpSession,trackOperation:e=>this.trackOperation(e)});async start(e,n,r){if(this.state===`recording`)throw Error(`Recording already in progress`);let s=i(),{absolutePath:c}=await t({category:`traces`,toolName:`trace_recorder`,target:s.slice(0,8),ext:`db`}),l=n?(r?.cdpDomains??o).filter(e=>a[e]):[];this.db=new P({dbPath:c}),this.eventCount=0,this.memoryDeltaCount=0,this.heapSnapshotCount=0,this.eventSequence=0,this.pendingOperations.clear(),this.cdpListeners.clear(),this.profilerListeners.clear(),this.enabledCdpDomains.clear(),this.cdpSession=n,this.ownsCdpSession=r?.ownsSession??!1;try{let t=this.networkCapture.configure(r?.network);if(n){for(let e of l)await n.send(`${e}.enable`),this.enabledCdpDomains.add(e);await this.startProfilerCapture(n)}let i=Date.now();if(this.db.setMetadata(`sessionId`,s),this.db.setMetadata(`platform`,process.platform),this.db.setMetadata(`startedAt`,String(i)),this.db.setMetadata(`nodeVersion`,process.version),this.db.setMetadata(`network.recordResponseBodies`,String(t.recordResponseBodies)),this.db.setMetadata(`network.streamResponseChunks`,String(t.streamResponseChunks)),this.db.setMetadata(`network.maxBodyBytes`,String(t.maxBodyBytes)),this.db.setMetadata(`network.inlineBodyBytes`,String(t.inlineBodyBytes)),this.eventBusUnsub=e.onAny(e=>{if(this.state===`recording`)try{let t=Date.now();this.db?.insertEvent({timestamp:t,wallTime:t,monotonicTime:null,category:this.mapEventCategory(String(e.event)),eventType:String(e.event),data:JSON.stringify(e.payload??{}),scriptId:null,lineNumber:null,requestId:null,sequence:this.nextSequence()}),this.eventCount++}catch{}}),n)for(let e of l){let t=a[e]??[];for(let r of t){let t=t=>{if(!(this.state!==`recording`||!this.db))try{let n=m(t),i=h(t),{scriptId:a,lineNumber:o}=g(r,t),s=JSON.stringify(v(r,t));this.db.insertEvent({timestamp:n.timestamp,wallTime:n.wallTime,monotonicTime:n.monotonicTime,category:e.toLowerCase(),eventType:r,data:s,scriptId:a,lineNumber:o,requestId:i,sequence:this.nextSequence()}),this.eventCount++,e===`Runtime`&&this.recordStructuredRuntimeEvent(r,t,n,a,o),e===`Network`&&this.networkCapture.handleEvent(r,t,n)}catch{}};n.on(r,t),this.cdpListeners.set(r,t)}}return this.session={sessionId:s,dbPath:c,startedAt:i,eventCount:0,memoryDeltaCount:0,heapSnapshotCount:0,...this.networkCapture.getCounts()},this.state=`recording`,{...this.session}}catch(e){throw await this.cleanupFailedStart(),e}}recordMemoryDelta(e){if(!(this.state!==`recording`||!this.db))try{this.db.insertMemoryDelta(e),this.memoryDeltaCount++}catch{}}async captureActiveHeapSnapshot(){if(!this.cdpSession)throw Error(`Cannot capture heap snapshot: no active CDP session`);return await this.captureHeapSnapshot(this.cdpSession)}async captureHeapSnapshot(e){if(this.state!==`recording`||!this.db)throw Error(`Cannot capture heap snapshot: not recording`);let t=[],n=!1,r=e=>{if(typeof e==`object`&&e){let n=e.chunk;typeof n==`string`&&t.push(n)}};try{await e.send(`HeapProfiler.enable`),e.on(`HeapProfiler.addHeapSnapshotChunk`,r),n=!0,await e.send(`HeapProfiler.takeHeapSnapshot`,{reportProgress:!1});let i=t.join(``),a=Buffer.from(i,`utf-8`),o=this.extractHeapSummary(i);return this.db.insertHeapSnapshot({timestamp:Date.now(),snapshotData:a,summary:JSON.stringify(o)}),this.heapSnapshotCount++,a.byteLength}finally{n&&e.off(`HeapProfiler.addHeapSnapshotChunk`,r),await e.send(`HeapProfiler.disable`).catch(()=>{})}}async stop(){if(this.state!==`recording`)throw Error(`GRACEFUL: Cannot stop: not currently recording`);if(this.eventBusUnsub&&=(this.eventBusUnsub(),null),this.cdpSession){for(let[e,t]of this.cdpListeners)this.cdpSession.off(e,t);await this.stopProfilerCapture(this.cdpSession)}this.cdpListeners.clear(),this.profilerListeners.clear(),await this.waitForPendingOperations();let e;if(this.cdpSession){if(this.enabledCdpDomains.size>0){let t=Array.from(this.enabledCdpDomains);e=(await Promise.allSettled(t.map(e=>this.cdpSession.send(`${e}.disable`)))).flatMap((e,n)=>e.status===`rejected`?[`${t[n]}.disable failed: ${e.reason instanceof Error?e.reason.message:String(e.reason)}`]:[])}if(this.enabledCdpDomains.clear(),this.ownsCdpSession&&typeof this.cdpSession.detach==`function`)try{await this.cdpSession.detach()}catch(t){(e??=[]).push(`cdpSession.detach failed: ${t instanceof Error?t.message:String(t)}`)}this.cdpSession=null,this.ownsCdpSession=!1}if(this.db){let t=Date.now(),n=this.networkCapture.getCounts();this.db.setMetadata(`stoppedAt`,String(t)),this.db.setMetadata(`eventCount`,String(this.eventCount)),this.db.setMetadata(`memoryDeltaCount`,String(this.memoryDeltaCount)),this.db.setMetadata(`heapSnapshotCount`,String(this.heapSnapshotCount)),this.db.setMetadata(`networkRequestCount`,String(n.networkRequestCount)),this.db.setMetadata(`networkChunkCount`,String(n.networkChunkCount)),this.db.setMetadata(`networkBodyCount`,String(n.networkBodyCount)),this.db.close(),this.session&&(this.session.stoppedAt=t,this.session.eventCount=this.eventCount,this.session.memoryDeltaCount=this.memoryDeltaCount,this.session.heapSnapshotCount=this.heapSnapshotCount,this.session.networkRequestCount=n.networkRequestCount,this.session.networkChunkCount=n.networkChunkCount,this.session.networkBodyCount=n.networkBodyCount,e&&e.length>0?this.session.cleanupErrors=e:delete this.session.cleanupErrors)}this.state=`stopped`;let t=this.session?{...this.session}:this.createEmptySession();return this.db=null,this.networkCapture.clear(),t}getState(){return this.state}getSession(){return this.session?{...this.session}:null}getDB(){return this.db}trackOperation(e){this.pendingOperations.add(e),e.finally(()=>{this.pendingOperations.delete(e)})}async waitForPendingOperations(){for(;this.pendingOperations.size>0;)await Promise.allSettled(Array.from(this.pendingOperations))}async cleanupFailedStart(){if(this.eventBusUnsub&&=(this.eventBusUnsub(),null),this.cdpSession)for(let[e,t]of this.cdpListeners)this.cdpSession.off(e,t);if(this.cdpListeners.clear(),this.cdpSession&&this.enabledCdpDomains.size>0&&await Promise.allSettled(Array.from(this.enabledCdpDomains).map(e=>this.cdpSession.send(`${e}.disable`))),this.cdpSession&&await this.stopProfilerCapture(this.cdpSession),this.enabledCdpDomains.clear(),this.profilerListeners.clear(),this.cdpSession&&this.ownsCdpSession&&typeof this.cdpSession.detach==`function`&&await this.cdpSession.detach().catch(()=>{}),this.cdpSession=null,this.ownsCdpSession=!1,this.db){try{this.db.close()}catch{}this.db=null}this.session=null,this.state=`idle`,this.eventCount=0,this.memoryDeltaCount=0,this.heapSnapshotCount=0,this.eventSequence=0,this.pendingOperations.clear(),this.networkCapture.clear()}nextSequence(){return this.eventSequence+=1,this.eventSequence}recordStructuredRuntimeEvent(e,t,n,r,i){if(this.db){if(e===`Runtime.consoleAPICalled`){let e=this.createConsoleLog(t,n,r,i);e&&this.db.insertConsoleLog(e);return}if(e===`Runtime.exceptionThrown`){let e=this.createException(t,n,r,i);e&&this.db.insertException(e)}}}createConsoleLog(e,t,n,r){if(!l(e))return null;let i=Array.isArray(e.args)?e.args:[],a=this.limitStructuredRuntimeField(i.map(e=>this.remoteObjectToText(e)).filter(Boolean).join(` `)||u(e.type)||`console`),o=this.extractRuntimeLocation(e,n,r);return{timestamp:t.timestamp,wallTime:t.wallTime,monotonicTime:t.monotonicTime,level:u(e.type)??`log`,text:a,args:this.stringifyStructuredRuntimeField(i)??`[]`,stackTrace:this.stringifyStructuredRuntimeField(e.stackTrace),scriptId:o.scriptId,lineNumber:o.lineNumber,columnNumber:o.columnNumber,executionContextId:d(e.executionContextId)}}createException(e,t,n,r){if(!l(e))return null;let i=l(e.exceptionDetails)?e.exceptionDetails:e,a=l(i.exception)?i.exception:null,o=a?this.remoteObjectToText(a):null,s=this.limitStructuredRuntimeField(u(i.text)??o??`Runtime.exceptionThrown`),c=this.extractRuntimeLocation(i,n,r);return{timestamp:t.timestamp,wallTime:t.wallTime,monotonicTime:t.monotonicTime,text:s,exceptionId:d(i.exceptionId),url:u(i.url),scriptId:c.scriptId,lineNumber:c.lineNumber,columnNumber:c.columnNumber,description:o?this.limitStructuredRuntimeField(o):null,stackTrace:this.stringifyStructuredRuntimeField(i.stackTrace??e.stackTrace),executionContextId:d(i.executionContextId)}}extractRuntimeLocation(e,t,n){let r=d(e.lineNumber),i=d(e.columnNumber),a={scriptId:u(e.scriptId)??t,lineNumber:r??n,columnNumber:i},o=this.extractStackTraceLocation(e.stackTrace);return a={scriptId:a.scriptId??o.scriptId,lineNumber:a.lineNumber??o.lineNumber,columnNumber:a.columnNumber??o.columnNumber},a}extractStackTraceLocation(e){if(!l(e)||!Array.isArray(e.callFrames))return{scriptId:null,lineNumber:null,columnNumber:null};let t=e.callFrames[0];return l(t)?{scriptId:u(t.scriptId),lineNumber:d(t.lineNumber),columnNumber:d(t.columnNumber)}:{scriptId:null,lineNumber:null,columnNumber:null}}remoteObjectToText(e){if(!l(e))return e===void 0?``:String(e);if(`value`in e){let t=e.value;if(t===null)return`null`;if(t!==void 0){if(typeof t==`string`)return t;try{return JSON.stringify(t)??String(t)}catch{return String(t)}}}return u(e.unserializableValue)??u(e.description)??u(e.className)??u(e.type)??``}stringifyStructuredRuntimeField(e){if(e==null)return null;try{return this.limitStructuredRuntimeField(JSON.stringify(e))}catch{return this.limitStructuredRuntimeField(String(e))}}limitStructuredRuntimeField(e){return Buffer.byteLength(e,`utf8`)<=F?e:`${e.slice(0,F)}...[truncated]`}async startProfilerCapture(e){try{await e.send(`Profiler.enable`),await e.send(`Profiler.start`),this.profilerActive=!0;let t=e=>{if(this.state!==`recording`||!this.db)return;let t=this.extractProfile(e);t&&this.trackOperation(Promise.resolve().then(()=>{this.ingestCpuProfile(t)}))};for(let n of[`Profiler.consoleProfileFinished`,`Profiler.profileChunk`,`Profiler.cpuProfile`])e.on(n,t),this.profilerListeners.set(n,t)}catch{this.profilerActive=!1;for(let[t,n]of this.profilerListeners)e.off(t,n);this.profilerListeners.clear()}}async stopProfilerCapture(e){for(let[t,n]of this.profilerListeners)e.off(t,n);if(this.profilerListeners.clear(),this.profilerActive)try{let t=await e.send(`Profiler.stop`),n=this.extractProfile(t);n&&this.ingestCpuProfile(n)}catch{}finally{this.profilerActive=!1,await e.send(`Profiler.disable`).catch(()=>{})}}extractProfile(e){if(!e||typeof e!=`object`)return null;let t=e.profile??e;if(!t||typeof t!=`object`)return null;let n=t;return Array.isArray(n.nodes)?n:null}ingestCpuProfile(e){if(!this.db)return;let t=Array.isArray(e.nodes)?e.nodes:[];if(t.length===0)return;let n=new Map;for(let e of t)typeof e.id==`number`&&n.set(e.id,e);let r=new Map,i=Array.isArray(e.samples)?e.samples:[],a=Array.isArray(e.timeDeltas)?e.timeDeltas:[];if(i.length>0)for(let e=0;e<i.length;e++){let t=i[e];if(typeof t!=`number`||!n.has(t))continue;let o=(typeof a[e]==`number`&&Number.isFinite(a[e])?a[e]:0)/1e3,s=r.get(t)??{selfTime:0,aggregateTime:0};s.selfTime+=o,s.aggregateTime+=o,r.set(t,s)}else for(let e of t){if(typeof e.id!=`number`)continue;let t=typeof e.hitCount==`number`&&Number.isFinite(e.hitCount)?e.hitCount:0;t<=0||r.set(e.id,{selfTime:t,aggregateTime:t})}let o=Date.now();for(let[e,t]of r){let r=n.get(e);r&&this.db.insertSample(this.nodeToSample(r,t,o))}}nodeToSample(e,t,n){let r=e.callFrame??{};return{timestamp:n,selfTime:Number(t.selfTime.toFixed(3)),aggregateTime:Number(t.aggregateTime.toFixed(3)),functionName:r.functionName??null,scriptId:r.scriptId??null,url:r.url??null,lineNumber:r.lineNumber??null,columnNumber:r.columnNumber??null}}mapEventCategory(e){let t=e.indexOf(`:`);return t>0?e.substring(0,t):`other`}extractHeapSummary(e){try{let t=JSON.parse(e),n=t.snapshot;if(!n)return{totalSize:0,nodeCount:0,objectCounts:{},objectSizes:{}};let r=n.meta,i=n.node_count??0,a=r?.node_fields,o=r?.node_types,s=t.nodes,c={},l={},u=0;if(a&&s&&o){let e=a.length,n=a.indexOf(`type`),r=a.indexOf(`name`),i=a.indexOf(`self_size`),o=t.strings??[];for(let t=0;t<s.length;t+=e){let e=i>=0?s[t+i]??0:0;if(u+=e,r>=0){let i=o[s[t+r]??0]??`type_${s[t+(n>=0?n:0)]}`;i&&(c[i]=(c[i]??0)+1,l[i]=(l[i]??0)+e)}}}return{totalSize:u,nodeCount:i,objectCounts:c,objectSizes:l}}catch{return{totalSize:0,nodeCount:0,objectCounts:{},objectSizes:{}}}}createEmptySession(){return{sessionId:``,dbPath:``,startedAt:0,eventCount:0,memoryDeltaCount:0,heapSnapshotCount:0,networkRequestCount:0,networkChunkCount:0,networkBodyCount:0}}};export{I as TraceRecorder,E as n,P as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import*as n from"@babel/parser";import r from"@babel/traverse";import*as i from"@babel/types";var a=e({VMDeobfuscator:()=>o}),o=class{constructor(e){}detectVMProtection(e){let t=[/while\s*\(\s*true\s*\)\s*\{[\s\S]*?switch\s*\(/i,/var\s+\w+\s*=\s*\[\s*\d+(?:\s*,\s*\d+){10,}\s*\]/i,/\w+\[pc\+\+\]/i,/stack\.push|stack\.pop/i].filter(t=>t.test(e)).length;return t>=2?{detected:!0,type:t>=3?`custom-vm`:`simple-vm`,instructionCount:this.countVMInstructions(e)}:{detected:!1,type:`none`,instructionCount:0}}countVMInstructions(e){let t=e.match(/case\s+\d+:/g);return t?t.length:0}async deobfuscateVM(e,n){t.warn(`VM deobfuscation is experimental and may fail`);try{let n=this.analyzeVMStructure(e);n.hasInterpreter&&t.info(`Detected VM interpreter with ${n.instructionTypes.length} instruction types`);let r=this.extractVMComponents(e),i=this.simplifyVMCode(e,r);return{success:i!==e,code:i}}catch(n){return t.error(`VM deobfuscation failed`,n),{success:!1,code:e}}}analyzeVMStructure(e){let t={hasInterpreter:!1,instructionTypes:[],hasStack:!1,hasRegisters:!1};/while\s*\(\s*true\s*\)|for\s*\(\s*;\s*;\s*\)/.test(e)&&(t.hasInterpreter=!0);let n=e.match(/case\s+0x[0-9a-f]+:/gi);return n&&n.length>10&&(t.hasInterpreter=!0,t.instructionTypes=n.map(e=>e.replace(/case\s+/i,``).replace(/:/,``))),/\.push\(|\.pop\(/.test(e)&&(t.hasStack=!0),/r\d+\s*=|reg\[\d+\]/.test(e)&&(t.hasRegisters=!0),t}extractVMComponents(e){let a={};try{r(n.parse(e,{sourceType:`module`,plugins:[`jsx`,`typescript`]}),{VariableDeclarator(e){if(i.isArrayExpression(e.node.init)&&e.node.init.elements.length>50){let t=i.isIdentifier(e.node.id)?e.node.id.name:`unknown`,n=e.node.init.elements[0];i.isNumericLiteral(n)?a.instructionArray=t:i.isStringLiteral(n)&&(a.dataArray=t)}},FunctionDeclaration(e){let t=!1;r(e.node,{SwitchStatement(e){e.node.cases.length>10&&(t=!0)}},e.scope,e),t&&i.isIdentifier(e.node.id)&&(a.interpreterFunction=e.node.id.name)}})}catch(e){t.debug(`Failed to extract VM components:`,e)}return a}simplifyVMCode(e,n){try{let t=e;if(n.interpreterFunction){let e=RegExp(`function\\s+${n.interpreterFunction}\\s*\\([^)]*\\)\\s*\\{[^}]*\\}`,`g`);t=t.replace(e,`/* vm interpreter removed */`)}if(n.instructionArray){let e=RegExp(`var\\s+${n.instructionArray}\\s*=\\s*\\[[^\\]]*\\];`,`g`);t=t.replace(e,`/* vm instruction array removed */`)}return t}catch(n){return t.debug(`Failed to simplify VM code:`,n),e}}};export{a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import{Pr as n}from"./constants-nvsLpSri.mjs";import{a as r,i,n as a,o,r as s,s as c}from"./syscall-DGZoYM_U.mjs";import l from"koffi";var u=e({CloseHandle:()=>T,CreateRemoteThread:()=>M,EnumProcessModules:()=>L,GetLastError:()=>F,GetModuleBaseName:()=>R,GetModuleFileNameEx:()=>z,GetModuleHandle:()=>N,GetModuleInformation:()=>B,GetProcAddress:()=>P,MEM:()=>f,NtQueryInformationProcess:()=>I,OpenProcess:()=>w,PAGE:()=>p,PROCESS_ACCESS:()=>d,ReadProcessMemory:()=>E,VirtualAllocEx:()=>A,VirtualFreeEx:()=>j,VirtualProtectEx:()=>k,VirtualQueryEx:()=>O,WriteProcessMemory:()=>D,getKernel32:()=>b,getNtdll:()=>x,isKoffiAvailable:()=>v,isWindows:()=>y,openProcessForMemory:()=>V});const d={TERMINATE:1,CREATE_THREAD:2,SET_SESSIONID:4,VM_OPERATION:8,VM_READ:16,VM_WRITE:32,DUP_HANDLE:64,CREATE_PROCESS:128,SET_QUOTA:256,SET_INFORMATION:512,QUERY_INFORMATION:1024,SUSPEND_RESUME:2048,QUERY_LIMITED_INFORMATION:4096,ALL_ACCESS:2035711},f={COMMIT:4096,RESERVE:8192,DECOMMIT:16384,RELEASE:32768,FREE:65536,PRIVATE:131072,MAPPED:262144,RESET:524288,TOP_DOWN:1048576,WRITE_WATCH:2097152,PHYSICAL:4194304,LARGE_PAGES:536870912},p={NOACCESS:1,READONLY:2,READWRITE:4,WRITECOPY:8,EXECUTE:16,EXECUTE_READ:32,EXECUTE_READWRITE:64,EXECUTE_WRITECOPY:128,GUARD:256,NOCACHE:512,WRITECOMBINE:1024};let m=null,h=null,g=null,_=null;function v(){if(_!==null)return _;try{return l.load(`kernel32.dll`).unload(),_=!0,!0}catch{return _=!1,!1}}function y(){return process.platform===`win32`}function b(){return m||(m=l.load(`kernel32.dll`),t.debug(`Loaded kernel32.dll via koffi`)),m}function x(){return h||(h=l.load(`ntdll.dll`),t.debug(`Loaded ntdll.dll via koffi`)),h}function S(){return g||(g=l.load(`psapi.dll`),t.debug(`Loaded psapi.dll via koffi`)),g}function C(e){return e==null?0n:typeof e==`bigint`?e:typeof e==`number`?BigInt(e):l.address(e)}function w(e,t,n){return C(b().func(`void * OpenProcess(uint32, int, uint32)`)(e,+!!t,n))}function T(e){return b().func(`int CloseHandle(void *)`)(e)!==0}function E(e,t,r){if(n)try{return o(e,t,r)}catch{}let i=b().func(`int ReadProcessMemory(void *, void *, _Out_ uint8_t *, size_t, _Out_ size_t *)`),a=Buffer.alloc(r),s=Buffer.alloc(8);if(i(e,t,a,BigInt(r),s)===0){let e=F();throw Error(`ReadProcessMemory failed. Error: 0x${e.toString(16)}`)}return a}function D(e,t,r){if(n)try{return c(e,t,r)}catch{}let i=b().func(`int WriteProcessMemory(void *, void *, uint8_t *, size_t, _Out_ size_t *)`),a=Buffer.alloc(8);if(i(e,t,r,BigInt(r.length),a)===0){let e=F();throw Error(`WriteProcessMemory failed. Error: 0x${e.toString(16)}`)}return Number(a.readBigUInt64LE())}function O(e,t){let n=b().func(`size_t VirtualQueryEx(void *, void *, _Out_ uint8_t *, size_t)`),r=Buffer.alloc(48),i=n(e,t,r,BigInt(48));return Number(i)===48?{success:!0,info:{BaseAddress:r.readBigUInt64LE(0),AllocationBase:r.readBigUInt64LE(8),AllocationProtect:r.readUInt32LE(16),RegionSize:r.readBigUInt64LE(24),State:r.readUInt32LE(32),Protect:r.readUInt32LE(36),Type:r.readUInt32LE(40)}}:{success:!1,info:{}}}function k(e,t,i,a){if(n)try{return{success:!0,oldProtect:r(e,t,i,a).oldProtect}}catch{}let o=b().func(`int VirtualProtectEx(void *, void *, size_t, uint32, _Out_ uint32 *)`),s=Buffer.alloc(4);return{success:o(e,t,BigInt(i),a,s)!==0,oldProtect:s.readUInt32LE(0)}}function A(e,t,r,i,o){if(n)try{return a(e,r,i,o)}catch{}return C(b().func(`void * VirtualAllocEx(void *, void *, size_t, uint32, uint32)`)(e,t,BigInt(r),i,o))}function j(e,t,r,i){if(n)try{return s(e,t,r,i),!0}catch{}return b().func(`int VirtualFreeEx(void *, void *, size_t, uint32)`)(e,t,BigInt(r),i)!==0}function M(e,t,n){let r=b().func(`void * CreateRemoteThread(void *, void *, size_t, void *, void *, uint32, _Out_ uint32 *)`),i=Buffer.alloc(4);return{handle:C(r(e,null,0n,t,n,0,i)),threadId:i.readUInt32LE(0)}}function N(e){return C(b().func(`void * GetModuleHandleA(char *)`)(e))}function P(e,t){return C(b().func(`void * GetProcAddress(void *, char *)`)(e,t))}function F(){return b().func(`uint32 GetLastError()`)()}function I(e,t){let n=x().func(`int32 NtQueryInformationProcess(void *, uint32, _Out_ void *, uint32, void *)`),r=Buffer.alloc(8);return{status:n(e,t,r,8,null),debugPort:Number(r.readBigUInt64LE())}}function L(e,t=1024){let n=S().func(`int EnumProcessModules(void *, _Out_ void *, uint32, _Out_ uint32 *)`),r=Buffer.alloc(t*8),i=Buffer.alloc(4),a=n(e,r,t*8,i),o=i.readUInt32LE(0),s=Math.floor(o/8),c=[];for(let e=0;e<s;e++)c.push(r.readBigUInt64LE(e*8));return{success:a!==0,modules:c,count:s}}function R(e,t,n=260){let r=S().func(`uint32 GetModuleBaseNameA(void *, void *, _Out_ char *, uint32)`),i=Buffer.alloc(n);r(e,t,i,n);let a=0;for(;a<n&&i[a]!==0;)a++;return i.toString(`utf8`,0,a)}function z(e,t,n=32768){let r=S().func(`uint32 GetModuleFileNameExA(void *, void *, _Out_ char *, uint32)`),i=Buffer.alloc(n),a=r(e,t,i,n);if(typeof a!=`number`||a<=0)return null;let o=0;for(;o<n&&i[o]!==0;)o++;return o>0?i.toString(`utf8`,0,o):null}function B(e,t){let n=S().func(`int GetModuleInformation(void *, void *, _Out_ uint8_t *, uint32)`),r=Buffer.alloc(24),i=n(e,t,r,24),a={lpBaseOfDll:r.readBigUInt64LE(0),SizeOfImage:r.readUInt32LE(8),EntryPoint:r.readBigUInt64LE(16)};return{success:i!==0,info:a}}function V(e,t=!1){let r=t?d.VM_READ|d.VM_WRITE|d.VM_OPERATION|d.QUERY_INFORMATION:d.VM_READ|d.QUERY_INFORMATION;if(n)try{return i(e,r,!1)}catch{}let a=w(r,!1,e);if(a===0n){let t=F();throw Error(`Failed to open process ${e}. Error: 0x${t.toString(16)}. Run as Administrator.`)}return a}export{y as C,v as S,O as _,z as a,b,P as c,p as d,d as f,k as g,j as h,R as i,f as l,A as m,L as n,N as o,E as p,F as r,B as s,T as t,w as u,u as v,V as w,x,D as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-
|
|
1
|
+
import{t as e}from"./logger-BGCcd-jJ.mjs";import{r as t,t as n}from"./Win32API-G7QPyckq.mjs";import r from"koffi";const i={TERMINATE:1,SUSPEND_RESUME:2,GET_CONTEXT:8,SET_CONTEXT:16,SET_INFORMATION:32,QUERY_INFORMATION:64,SET_THREAD_TOKEN:128,IMPERSONATE:256,DIRECT_IMPERSONATION:512,ALL_ACCESS:2032639},a={AMD64:1048576,CONTROL:1048577,INTEGER:1048578,SEGMENTS:1048580,FLOATING_POINT:1048584,DEBUG_REGISTERS:1048592,FULL:1048587,ALL:1048607},o={EXCEPTION_DEBUG_EVENT:1,CREATE_THREAD_DEBUG_EVENT:2,CREATE_PROCESS_DEBUG_EVENT:3,EXIT_THREAD_DEBUG_EVENT:4,EXIT_PROCESS_DEBUG_EVENT:5,LOAD_DLL_DEBUG_EVENT:6,UNLOAD_DLL_DEBUG_EVENT:7,OUTPUT_DEBUG_STRING_EVENT:8,RIP_EVENT:9},s={SINGLE_STEP:2147483652,BREAKPOINT:2147483651,ACCESS_VIOLATION:3221225477},c={CONTINUE:65538,EXCEPTION_NOT_HANDLED:2147549185,REPLY_LATER:1073807361},l={SNAPHEAPLIST:1,SNAPTHREAD:4,SNAPMODULE:8};function u(e){return{contextFlags:e.readUInt32LE(48),eflags:e.readUInt32LE(68),dr0:e.readBigUInt64LE(72),dr1:e.readBigUInt64LE(80),dr2:e.readBigUInt64LE(88),dr3:e.readBigUInt64LE(96),dr6:e.readBigUInt64LE(104),dr7:e.readBigUInt64LE(112),rax:e.readBigUInt64LE(120),rcx:e.readBigUInt64LE(128),rdx:e.readBigUInt64LE(136),rbx:e.readBigUInt64LE(144),rsp:e.readBigUInt64LE(152),rbp:e.readBigUInt64LE(160),rsi:e.readBigUInt64LE(168),rdi:e.readBigUInt64LE(176),r8:e.readBigUInt64LE(184),r9:e.readBigUInt64LE(192),r10:e.readBigUInt64LE(200),r11:e.readBigUInt64LE(208),r12:e.readBigUInt64LE(216),r13:e.readBigUInt64LE(224),r14:e.readBigUInt64LE(232),r15:e.readBigUInt64LE(240),rip:e.readBigUInt64LE(248)}}function d(e,t){t.contextFlags!==void 0&&e.writeUInt32LE(t.contextFlags,48),t.eflags!==void 0&&e.writeUInt32LE(t.eflags,68),t.dr0!==void 0&&e.writeBigUInt64LE(t.dr0,72),t.dr1!==void 0&&e.writeBigUInt64LE(t.dr1,80),t.dr2!==void 0&&e.writeBigUInt64LE(t.dr2,88),t.dr3!==void 0&&e.writeBigUInt64LE(t.dr3,96),t.dr6!==void 0&&e.writeBigUInt64LE(t.dr6,104),t.dr7!==void 0&&e.writeBigUInt64LE(t.dr7,112),t.rip!==void 0&&e.writeBigUInt64LE(t.rip,248)}let f=null;function p(){return f||(f=r.load(`kernel32.dll`),e.debug(`Loaded kernel32.dll for debug APIs`)),f}function m(e,t,n){return p().func(`void * OpenThread(uint32, int, uint32)`)(e,+!!t,n)}function h(e){let n=p().func(`uint32 SuspendThread(void *)`)(e);if(n===4294967295)throw Error(`SuspendThread failed. Error: 0x${t().toString(16)}`);return n}function g(e){let n=p().func(`uint32 ResumeThread(void *)`)(e);if(n===4294967295)throw Error(`ResumeThread failed. Error: 0x${t().toString(16)}`);return n}function _(e,n){let r=p().func(`int GetThreadContext(void *, _Inout_ uint8_t[1232])`),i=Buffer.alloc(1232);if(i.writeUInt32LE(n,48),r(e,i)===0)throw Error(`GetThreadContext failed. Error: 0x${t().toString(16)}`);return i}function v(e,n){if(p().func(`int SetThreadContext(void *, uint8_t[1232])`)(e,n)===0)throw Error(`SetThreadContext failed. Error: 0x${t().toString(16)}`)}function y(e){if(p().func(`int DebugActiveProcess(uint32)`)(e)===0)throw Error(`DebugActiveProcess failed for pid ${e}. Error: 0x${t().toString(16)}`)}function b(e){if(p().func(`int DebugActiveProcessStop(uint32)`)(e)===0)throw Error(`DebugActiveProcessStop failed. Error: 0x${t().toString(16)}`)}function x(e){p().func(`int DebugSetProcessKillOnExit(int)`)(+!!e)}function S(e){let t=p().func(`int WaitForDebugEvent(_Out_ uint8_t *, uint32)`),n=Buffer.alloc(176);if(t(n,e)===0)return null;let r={debugEventCode:n.readUInt32LE(0),processId:n.readUInt32LE(4),threadId:n.readUInt32LE(8)};return r.debugEventCode===o.EXCEPTION_DEBUG_EVENT&&(r.exceptionCode=n.readUInt32LE(16),r.exceptionAddress=n.readBigUInt64LE(32),r.firstChance=n.readUInt32LE(20)===0),r}function C(e,n,r){if(p().func(`int ContinueDebugEvent(uint32, uint32, uint32)`)(e,n,r)===0)throw Error(`ContinueDebugEvent failed. Error: 0x${t().toString(16)}`)}function w(e,t,n){p().func(`int FlushInstructionCache(void *, void *, size_t)`)(e,t,BigInt(n))}function T(e){let r=p().func(`void * CreateToolhelp32Snapshot(uint32, uint32)`),i=p().func(`int Thread32First(void *, _Out_ uint8_t[28])`),a=p().func(`int Thread32Next(void *, _Out_ uint8_t[28])`),o=r(l.SNAPTHREAD,0);if(o===0n||o===BigInt(`0xFFFFFFFFFFFFFFFF`))throw Error(`CreateToolhelp32Snapshot failed. Error: 0x${t().toString(16)}`);let s=[],c=Buffer.alloc(28);c.writeUInt32LE(28,0);try{if(i(o,c)!==0)do c.readUInt32LE(12)===e&&s.push(c.readUInt32LE(8)),c.writeUInt32LE(28,0);while(a(o,c)!==0);n(o)}catch(e){console.error(`[EnumerateProcessThreads] cleanup error:`,e)}return s}function E(e){let n=m(i.SUSPEND_RESUME|i.GET_CONTEXT|i.SET_CONTEXT|i.QUERY_INFORMATION,!1,e);if(n===0n)throw Error(`Failed to open thread ${e}. Error: 0x${t().toString(16)}`);return n}function D(e){let t=0n;for(let n of e){if(!n.enabled)continue;let{drIndex:e,access:r,size:i}=n;t|=1n<<BigInt(e*2);let a=0;switch(r){case`execute`:a=0;break;case`write`:a=1;break;case`readwrite`:case`read`:a=3;break}t|=BigInt(a)<<BigInt(16+e*4);let o=0;switch(i){case 1:o=0;break;case 2:o=1;break;case 4:o=3;break;case 8:o=2;break}t|=BigInt(o)<<BigInt(18+e*4)}return t}export{a as CONTEXT_FLAGS,C as ContinueDebugEvent,c as DBG,y as DebugActiveProcess,b as DebugActiveProcessStop,x as DebugSetProcessKillOnExit,s as EXCEPTION_CODE,T as EnumerateProcessThreads,w as FlushInstructionCache,_ as GetThreadContext,g as ResumeThread,v as SetThreadContext,h as SuspendThread,l as TH32CS,S as WaitForDebugEvent,D as encodeDR7,E as openThreadForDebug,u as parseContext,d as writeContext};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./parse-args-B6dwWc9k.mjs";import{n as t,r as n}from"./cdp-session-Dy4OwMOP.mjs";async function r(r,i){let a=e(r,`durationMs`,3e3),o=Math.min(3e4,Math.max(500,Number.isFinite(a)?a:3e3)),s=Math.min(500,Math.max(1,e(r,`topN`,50))),{session:c,owned:l}=await n(t(i));if(!c)return{success:!1,error:`No CDP session available — browser must be connected via browser_launch or browser_attach`,durationMs:0,trackedCount:0,returnedCount:0,totalLiveBytes:0,allocations:[],summary:`CDP session unavailable`};let u=Date.now(),d=[],f=c,p=e=>{typeof e?.lastSeenObjectId==`number`&&d.push(e.lastSeenObjectId)};try{await c.send(`HeapProfiler.enable`),typeof f.on==`function`&&f.on(`HeapProfiler.lastSeenObjectId`,p),await c.send(`HeapProfiler.startObjectTracking`,{trackAllocations:!0}),await new Promise(e=>setTimeout(e,o));let e=await c.send(`HeapProfiler.stopObjectTracking`),t=(Array.isArray(e?.entries)?e.entries:[]).map((e,t)=>({objectId:d[t]??t,sizeBytes:typeof e.bytes==`number`?e.bytes:0,functionName:`(unknown)`,scriptId:`?`,url:``,lineNumber:-1})),n=t.reduce((e,t)=>e+t.sizeBytes,0);t.sort((e,t)=>t.sizeBytes-e.sizeBytes);let r=t.slice(0,s);return{success:!0,durationMs:Date.now()-u,trackedCount:d.length,returnedCount:r.length,totalLiveBytes:n,allocations:r,summary:`${r.length} live objects (${n} bytes) survived the ${o}ms window`}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e),durationMs:Date.now()-u,trackedCount:0,returnedCount:0,totalLiveBytes:0,allocations:[],summary:`Allocation tracking failed`}}finally{typeof f.off==`function`&&f.off(`HeapProfiler.lastSeenObjectId`,p),await c.send(`HeapProfiler.stopObjectTracking`).catch(()=>void 0),l&&await c.detach().catch(()=>void 0)}}export{r as handleAllocationTrack};
|