@jshookmcp/jshook 0.3.0 → 0.3.2

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 (346) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +32 -49
  3. package/README.zh.md +32 -47
  4. package/dist/AntiCheatDetector-B6d4Qe9D.mjs +1 -0
  5. package/dist/BrowserSessionCoordinator-BJ-HOxo0.mjs +1 -0
  6. package/dist/CacheAdapters-CsNtQIR8.mjs +1 -0
  7. package/dist/CodeInjector-Cll_7bLJ.mjs +1 -0
  8. package/dist/ConsoleMonitor-CxDJV15E.mjs +306 -0
  9. package/dist/DOMInspector-C19J4zeq.mjs +95 -0
  10. package/dist/DarwinAPI-ZfQdpLNI.mjs +1 -0
  11. package/dist/DetailedDataManager-DmQ1LT-W.mjs +1 -0
  12. package/dist/EventBus-DL8iLA09.mjs +1 -0
  13. package/dist/EvidenceGraphBridge-BtbwXsLC.mjs +1 -0
  14. package/dist/ExtensionManager-BD724zkO.mjs +1 -0
  15. package/dist/ExtensionManager.tools-oVMJgPcN.mjs +1 -0
  16. package/dist/FingerprintManager-DT0EAUEo.mjs +1 -0
  17. package/dist/HardwareBreakpoint-BUfPdp0f.mjs +1 -0
  18. package/dist/HeapAnalyzer-B_aqY8oj.mjs +1 -0
  19. package/dist/{HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs → HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs} +66 -101
  20. package/dist/InstrumentationSession-D_G1ZPyd.mjs +1 -0
  21. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +1 -0
  22. package/dist/MemoryController-X1XNSn1n.mjs +2 -0
  23. package/dist/MemoryScanSession-DG_F-PjE.mjs +1 -0
  24. package/dist/MemoryScanner-g1_L1ub5.mjs +1 -0
  25. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +1 -0
  26. package/dist/NativeMemoryManager.utils-BHy1P_jM.mjs +1 -0
  27. package/dist/NetworkMonitor-B_-au6aV.mjs +185 -0
  28. package/dist/PEAnalyzer-yWQaGrcx.mjs +1 -0
  29. package/dist/PageController-Dfsm1_o7.mjs +1 -0
  30. package/dist/PointerChainEngine-BhCUkmxY.mjs +1 -0
  31. package/dist/PrerequisiteError-BjCQA-gK.mjs +1 -0
  32. package/dist/ProcessRegistry-C-bN48oR.mjs +1 -0
  33. package/dist/ResponseBuilder-BfWP-uaT.mjs +1 -0
  34. package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +2 -0
  35. package/dist/RingBuffer-Dm54ELKT.mjs +1 -0
  36. package/dist/ScriptManager-LWGPTdvD.mjs +7 -0
  37. package/dist/ServerRuntimeState-D2bWHqEE.mjs +1 -0
  38. package/dist/Speedhack-yseDPSZ9.mjs +1 -0
  39. package/dist/StealthVerifier-BmcxfwSF.mjs +1 -0
  40. package/dist/StructureAnalyzer-C5lpuZkg.mjs +2 -0
  41. package/dist/ToolCatalog-CYdD9F5f.mjs +1 -0
  42. package/dist/ToolError-DWU_z7gp.mjs +1 -0
  43. package/dist/ToolProbe-C7ZU2x7M.mjs +1 -0
  44. package/dist/ToolRegistry-C5oB8KP8.mjs +1 -0
  45. package/dist/ToolRouter.policy-CfhJczkt.mjs +4 -0
  46. package/dist/TraceRecorder-BiJWBXHX.mjs +272 -0
  47. package/dist/VersionDetector-CHT36Az0.mjs +9 -0
  48. package/dist/Win32API-eUCF57l_.mjs +1 -0
  49. package/dist/Win32Debug-CYrIQBvr.mjs +1 -0
  50. package/dist/WorkflowEngine-D876meOO.mjs +1 -0
  51. package/dist/analysis-D4swdMvq.mjs +6 -0
  52. package/dist/{antidebug-BRKeyt27.mjs → antidebug-7L3ygj_9.mjs} +8 -259
  53. package/dist/apk-packer-BqXcInnX.mjs +1 -0
  54. package/dist/artifactRetention-BCPQASm7.mjs +1 -0
  55. package/dist/artifacts-CkodUM4j.mjs +1 -0
  56. package/dist/authorization-schema-BOFwSXUN.mjs +1 -0
  57. package/dist/betterSqlite3-Brtq-SIQ.mjs +1 -0
  58. package/dist/binary-instrument-DU7V6TUM.mjs +7 -0
  59. package/dist/binary-secrets-PdMVoyt0.mjs +1 -0
  60. package/dist/bind-helpers-m2U8glkF.mjs +1 -0
  61. package/dist/boringssl-inspector-BBaJwwkU.mjs +2 -0
  62. package/dist/browser-Qqco2rOT.mjs +11 -0
  63. package/dist/capabilities-CyXuKUl1.mjs +1 -0
  64. package/dist/chunk-C_pMuVsO.mjs +1 -0
  65. package/dist/collector-Bpl6qy2L.mjs +1 -0
  66. package/dist/concurrency-DCr8WQ2M.mjs +1 -0
  67. package/dist/constants-BYj8Xek8.mjs +1 -0
  68. package/dist/coordination-CWXW1o8K.mjs +1 -0
  69. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  70. package/dist/debugger-DyALjYMk.mjs +1 -0
  71. package/dist/definitions-BWxBke3r.mjs +1 -0
  72. package/dist/definitions-BYwATKc-.mjs +1 -0
  73. package/dist/definitions-B_83XfNQ.mjs +1 -0
  74. package/dist/definitions-Bf3H1EwV.mjs +1 -0
  75. package/dist/definitions-BftdXgXI.mjs +1 -0
  76. package/dist/definitions-Bio5XJYy.mjs +1 -0
  77. package/dist/definitions-C3qNgSn1.mjs +1 -0
  78. package/dist/definitions-CB6vmOer.mjs +1 -0
  79. package/dist/definitions-CMZRSy3k.mjs +1 -0
  80. package/dist/definitions-CQd7yCQH.mjs +1 -0
  81. package/dist/definitions-CT8ln6GQ.mjs +1 -0
  82. package/dist/definitions-Cenu6mxo.mjs +1 -0
  83. package/dist/definitions-D4g-MS10.mjs +1 -0
  84. package/dist/definitions-D5wl_8HN.mjs +1 -0
  85. package/dist/definitions-DAQm1Xar.mjs +1 -0
  86. package/dist/definitions-DP1vgxEY.mjs +1 -0
  87. package/dist/definitions-DxFNRQNK2.mjs +1 -0
  88. package/dist/definitions-Ibci7e_L.mjs +1 -0
  89. package/dist/definitions-OeLvmlQy.mjs +1 -0
  90. package/dist/definitions-RZYGD_Ey.mjs +1 -0
  91. package/dist/definitions-Tls8c0A0.mjs +1 -0
  92. package/dist/definitions-bybDvnG0.mjs +26 -0
  93. package/dist/definitions-l7TjdE6V.mjs +1 -0
  94. package/dist/encoding-ycOaz8Vr.mjs +2 -0
  95. package/dist/ensure-browser-core-DxWC-NTp.mjs +1 -0
  96. package/dist/evidence-graph-bridge-CV_UdYqj.mjs +1 -0
  97. package/dist/factory-CKr4fAE1.mjs +1 -0
  98. package/dist/flat-target-session-DvcQX7J5.mjs +1 -0
  99. package/dist/formatAddress-vLA_hOJt.mjs +1 -0
  100. package/dist/graphql-B2TiPEow.mjs +62 -0
  101. package/dist/handlers-0yKLRIfo.mjs +2 -0
  102. package/dist/handlers-8zN_vBIz.mjs +1 -0
  103. package/dist/handlers-B62K4FTc.mjs +1 -0
  104. package/dist/handlers-BpDlVVVU.mjs +1 -0
  105. package/dist/handlers-CMJK7m1c.mjs +31 -0
  106. package/dist/handlers-D2ZOul9p.mjs +54 -0
  107. package/dist/handlers-D5E40ssn.mjs +5 -0
  108. package/dist/handlers-DGbdQAgD.mjs +4 -0
  109. package/dist/handlers-DHO3rjsW.mjs +1 -0
  110. package/dist/handlers-FJ80VzUI.mjs +2 -0
  111. package/dist/handlers-VHWrxbM_.mjs +1 -0
  112. package/dist/handlers-l8QIKqBj.mjs +2 -0
  113. package/dist/handlers-mPFiNPe8.mjs +302 -0
  114. package/dist/{handlers-Dz9PYsCa.mjs → handlers-yo_xYzT8.mjs} +118 -904
  115. package/dist/handlers.impl-D9Hh8Bgl.mjs +1 -0
  116. package/dist/hooks-D4XLfgtV.mjs +600 -0
  117. package/dist/index.mjs +13 -5240
  118. package/dist/jadx-search-B_Yse0Zh.mjs +5 -0
  119. package/dist/logger-sBC6IdRT.mjs +1 -0
  120. package/dist/maintenance-BUpIukhg.mjs +1 -0
  121. package/dist/manifest-0Jpt_AQa.mjs +1 -0
  122. package/dist/manifest-B3fZbSWR.mjs +1 -0
  123. package/dist/manifest-B7NB2rh2.mjs +1 -0
  124. package/dist/manifest-BDi4nbH1.mjs +1 -0
  125. package/dist/manifest-BLDfkE7n.mjs +1 -0
  126. package/dist/manifest-BcXbB4gf.mjs +1 -0
  127. package/dist/manifest-Bdnc_vrc.mjs +1 -0
  128. package/dist/manifest-BuYKgCnp.mjs +1 -0
  129. package/dist/manifest-CBfNnGPV.mjs +1 -0
  130. package/dist/manifest-CPS1Xv69.mjs +1 -0
  131. package/dist/manifest-CQH9FhwI.mjs +1 -0
  132. package/dist/manifest-CRryuZF4.mjs +1 -0
  133. package/dist/manifest-CctIumog.mjs +1 -0
  134. package/dist/manifest-CvTe5ZGV2.mjs +1 -0
  135. package/dist/manifest-D-5GH0DV.mjs +1 -0
  136. package/dist/manifest-D3Ssf3IC.mjs +1 -0
  137. package/dist/manifest-D5ck3NvC.mjs +1 -0
  138. package/dist/manifest-D9jUUJAu.mjs +1 -0
  139. package/dist/manifest-DCx6w2XV.mjs +1 -0
  140. package/dist/manifest-DG19q-Ld.mjs +1 -0
  141. package/dist/manifest-DLMlD0Zc.mjs +1 -0
  142. package/dist/manifest-DYpn8w_h.mjs +1 -0
  143. package/dist/manifest-DYzWI8Xs.mjs +1 -0
  144. package/dist/manifest-D_obs5F4.mjs +1 -0
  145. package/dist/manifest-DujQqEQR.mjs +2 -0
  146. package/dist/manifest-DwL2ik8P.mjs +1 -0
  147. package/dist/manifest-ItF5P8A12.mjs +1 -0
  148. package/dist/manifest-KZphqIyX.mjs +1 -0
  149. package/dist/manifest-LG42zPLY2.mjs +1 -0
  150. package/dist/manifest-LLdI5m4T.mjs +1 -0
  151. package/dist/manifest-QYbQXJn0.mjs +1 -0
  152. package/dist/manifest-RcpX_MyZ.mjs +123 -0
  153. package/dist/manifest-YgVd8Sgz.mjs +1 -0
  154. package/dist/manifest-Zy7Odg5J.mjs +1 -0
  155. package/dist/manifest-ff1H7Pdp.mjs +1 -0
  156. package/dist/manifest-iuhF6pTL2.mjs +1 -0
  157. package/dist/manifest-nXHmtMSp2.mjs +1 -0
  158. package/dist/manifest-xWfu6iLo.mjs +1 -0
  159. package/dist/manifest-yC16OhL2.mjs +1 -0
  160. package/dist/manifest-ztWJoXy4.mjs +1 -0
  161. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +1 -0
  162. package/dist/modules-BPBcSaM-.mjs +333 -0
  163. package/dist/mojo-ipc-BhwsdVUW.mjs +9 -0
  164. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  165. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  166. package/dist/native-j8l473zn.mjs +961 -0
  167. package/dist/network-T0VRwNPd.mjs +7 -0
  168. package/dist/outputPaths-B4Ic4RZh.mjs +2 -0
  169. package/dist/parse-args-Bw413PlW.mjs +1 -0
  170. package/dist/platform-CzaQtISh.mjs +93 -0
  171. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +1 -0
  172. package/dist/process-CWhsCWrf.mjs +2 -0
  173. package/dist/proxy-DZFlDsG3.mjs +2 -0
  174. package/dist/registry-DH4sc1dt.mjs +1 -0
  175. package/dist/renderer-pid-9tJnZ_9N.mjs +1 -0
  176. package/dist/response-C7rKQst4.mjs +1 -0
  177. package/dist/search-defaults-lYBVn_3L.mjs +1 -0
  178. package/dist/server/plugin-api.d.mts +19 -36
  179. package/dist/server/plugin-api.mjs +1 -293
  180. package/dist/shared-state-board-BSjXLUV1.mjs +1 -0
  181. package/dist/sourcemap-Dh3Ai_ur.mjs +1 -0
  182. package/dist/ssrf-policy-CsIJGkpd.mjs +1 -0
  183. package/dist/streaming-BcJ0B6ao.mjs +1 -0
  184. package/dist/tool-builder-qif8M9-K.mjs +1 -0
  185. package/dist/transform-DOxzeWPB.mjs +103 -0
  186. package/dist/types-D9EiE5o9.mjs +1 -0
  187. package/dist/types-Fz69RzbZ.mjs +1 -0
  188. package/dist/wasm-CZ_HTfKR.mjs +174 -0
  189. package/dist/webcrack-C1iYG_EX.mjs +46 -0
  190. package/dist/workflow-BdwQmARn.mjs +101 -0
  191. package/package.json +55 -82
  192. package/src/native/scripts/linux/enum-windows.sh +12 -12
  193. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  194. package/dist/AntiCheatDetector-CqGDXmfc.mjs +0 -350
  195. package/dist/CacheAdapters-jJFy20G-.mjs +0 -80
  196. package/dist/CodeInjector-BdjRfNx7.mjs +0 -150
  197. package/dist/ConsoleMonitor-DykL3IAw.mjs +0 -2269
  198. package/dist/DarwinAPI-ETyy0xyo.mjs +0 -363
  199. package/dist/DetailedDataManager-HT49OrvF.mjs +0 -217
  200. package/dist/EventBus-DFKvADm3.mjs +0 -141
  201. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +0 -153
  202. package/dist/ExtensionManager-BDMsY2Dz.mjs +0 -721
  203. package/dist/FingerprintManager-BN4UQWnX.mjs +0 -96
  204. package/dist/HardwareBreakpoint-Cc2AFq1Y.mjs +0 -239
  205. package/dist/HeapAnalyzer-DruMgsgj.mjs +0 -284
  206. package/dist/InstrumentationSession-DLH0vd-z.mjs +0 -244
  207. package/dist/MemoryController-CMtviNW_.mjs +0 -167
  208. package/dist/MemoryScanSession-ITgb_NMi.mjs +0 -278
  209. package/dist/MemoryScanner-CiL7Z3ey.mjs +0 -428
  210. package/dist/NativeMemoryManager.impl-D9Lkovvn.mjs +0 -485
  211. package/dist/NativeMemoryManager.utils-BBlAixF5.mjs +0 -165
  212. package/dist/PEAnalyzer-DMQ44gen.mjs +0 -385
  213. package/dist/PageController-BPJNqqBN.mjs +0 -431
  214. package/dist/PointerChainEngine-K7wN8Z-w.mjs +0 -325
  215. package/dist/PrerequisiteError-TuyZIs6n.mjs +0 -20
  216. package/dist/ProcessRegistry-zGg12QbE.mjs +0 -74
  217. package/dist/ResponseBuilder-CJXWmWNw.mjs +0 -143
  218. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +0 -269
  219. package/dist/ScriptManager-ZuWD-0Jg.mjs +0 -3003
  220. package/dist/Speedhack-D-z0umeT.mjs +0 -156
  221. package/dist/StealthVerifier-BWmPgQsv.mjs +0 -135
  222. package/dist/StructureAnalyzer-Cav5AVSL.mjs +0 -429
  223. package/dist/ToolCatalog-5OJdMiF0.mjs +0 -582
  224. package/dist/ToolError-jh9whhMd.mjs +0 -15
  225. package/dist/ToolProbe-DbCFGyrg.mjs +0 -45
  226. package/dist/ToolRegistry-B9krbTtI.mjs +0 -180
  227. package/dist/ToolRouter.policy-BGDAGyeH.mjs +0 -344
  228. package/dist/TraceRecorder-B41Z5XBj.mjs +0 -1286
  229. package/dist/VersionDetector-K3V4vGsw.mjs +0 -104
  230. package/dist/Win32API-C2kjj0ze.mjs +0 -346
  231. package/dist/Win32Debug-CKrGOTpo.mjs +0 -274
  232. package/dist/WorkflowEngine-DJ6M4opp.mjs +0 -569
  233. package/dist/analysis-BHeJW2Nb.mjs +0 -1234
  234. package/dist/artifactRetention-CPXkUJXp.mjs +0 -598
  235. package/dist/artifacts-DkfosXH3.mjs +0 -59
  236. package/dist/authorization-schema-DRqyJMSk.mjs +0 -31
  237. package/dist/betterSqlite3-DLSBZodi.mjs +0 -74
  238. package/dist/binary-instrument--V3MAhJ4.mjs +0 -971
  239. package/dist/bind-helpers-ClV34xdn.mjs +0 -42
  240. package/dist/boringssl-inspector-Bo_LOLaS.mjs +0 -180
  241. package/dist/browser-Dx3_S2cG.mjs +0 -4369
  242. package/dist/capabilities-CcHlvWgK.mjs +0 -33
  243. package/dist/chunk-CjcI7cDX.mjs +0 -15
  244. package/dist/concurrency-Drev_Vz9.mjs +0 -41
  245. package/dist/constants-CDZLOoVv.mjs +0 -534
  246. package/dist/coordination-DgItD9DL.mjs +0 -259
  247. package/dist/debugger-RS3RSAqs.mjs +0 -1288
  248. package/dist/definitions-BEoYofW5.mjs +0 -47
  249. package/dist/definitions-BRaefg3u.mjs +0 -365
  250. package/dist/definitions-BbkvZkiv.mjs +0 -96
  251. package/dist/definitions-BtWSHJ3o.mjs +0 -17
  252. package/dist/definitions-C1gCHO0i.mjs +0 -43
  253. package/dist/definitions-CDOg_b-l.mjs +0 -138
  254. package/dist/definitions-CVPD9hzZ.mjs +0 -54
  255. package/dist/definitions-Cea8Lgl7.mjs +0 -94
  256. package/dist/definitions-DAgIyjxM.mjs +0 -10
  257. package/dist/definitions-DJA27nsL.mjs +0 -66
  258. package/dist/definitions-DKPFU3LW.mjs +0 -25
  259. package/dist/definitions-DPRpZQ96.mjs +0 -47
  260. package/dist/definitions-DUE5gmdn.mjs +0 -18
  261. package/dist/definitions-DYVjOtxa.mjs +0 -26
  262. package/dist/definitions-DcYLVLCo.mjs +0 -37
  263. package/dist/definitions-Pp5LI2H4.mjs +0 -27
  264. package/dist/definitions-j9KdHVNR.mjs +0 -14
  265. package/dist/definitions-uzkjBwa7.mjs +0 -258
  266. package/dist/definitions-va-AnLuQ.mjs +0 -28
  267. package/dist/encoding-DJeqHmpd.mjs +0 -1079
  268. package/dist/evidence-graph-bridge-DcYizFk2.mjs +0 -136
  269. package/dist/factory-C90tBff6.mjs +0 -575
  270. package/dist/flat-target-session-Dgax2Cy3.mjs +0 -29
  271. package/dist/formatAddress-nnMvEohD.mjs +0 -17
  272. package/dist/graphql-CoHrhweh.mjs +0 -1197
  273. package/dist/handlers-4jmR0nMs.mjs +0 -898
  274. package/dist/handlers-BAHPxcch.mjs +0 -789
  275. package/dist/handlers-BOs9b907.mjs +0 -2600
  276. package/dist/handlers-BWXEy6ef.mjs +0 -917
  277. package/dist/handlers-Bndn6QvE.mjs +0 -111
  278. package/dist/handlers-BqC4bD4s.mjs +0 -681
  279. package/dist/handlers-BtYq60bM2.mjs +0 -276
  280. package/dist/handlers-BzgcB4iv.mjs +0 -799
  281. package/dist/handlers-CRyRWj2b.mjs +0 -859
  282. package/dist/handlers-CVv2H1uq.mjs +0 -592
  283. package/dist/handlers-Dl5a7JS4.mjs +0 -572
  284. package/dist/handlers-Dx2d7jt7.mjs +0 -2537
  285. package/dist/handlers-HujRKC3b.mjs +0 -661
  286. package/dist/handlers.impl-XWXkQfyi.mjs +0 -807
  287. package/dist/hooks-B1B8NRHL.mjs +0 -898
  288. package/dist/logger-Dh_xb7_2.mjs +0 -93
  289. package/dist/maintenance-PRMkLVRW.mjs +0 -835
  290. package/dist/manifest-67Bok-Si.mjs +0 -58
  291. package/dist/manifest-6lNTMZAB2.mjs +0 -87
  292. package/dist/manifest-B2duEHiH.mjs +0 -90
  293. package/dist/manifest-B6EY9Vm8.mjs +0 -57
  294. package/dist/manifest-B6nKSbyY.mjs +0 -95
  295. package/dist/manifest-BL8AQNPF.mjs +0 -106
  296. package/dist/manifest-BSZvJJmV.mjs +0 -47
  297. package/dist/manifest-BU7qzUyX.mjs +0 -418
  298. package/dist/manifest-Bl62e8WK.mjs +0 -49
  299. package/dist/manifest-Bo5cXjdt.mjs +0 -82
  300. package/dist/manifest-BpS4gtUK.mjs +0 -1347
  301. package/dist/manifest-Bv65_e2W.mjs +0 -101
  302. package/dist/manifest-BytNIF4Z.mjs +0 -117
  303. package/dist/manifest-C-xtsjS3.mjs +0 -81
  304. package/dist/manifest-CDYl7OhA.mjs +0 -66
  305. package/dist/manifest-CRZ3xmkD.mjs +0 -61
  306. package/dist/manifest-CoW6u4Tp.mjs +0 -132
  307. package/dist/manifest-Cq5zN_8A.mjs +0 -50
  308. package/dist/manifest-D7YZM_2e.mjs +0 -194
  309. package/dist/manifest-DE_VrAeQ.mjs +0 -314
  310. package/dist/manifest-DGsXSCpT.mjs +0 -39
  311. package/dist/manifest-DJ2vfEuW.mjs +0 -156
  312. package/dist/manifest-DPXDYhEu.mjs +0 -80
  313. package/dist/manifest-Dd4fQb0a.mjs +0 -322
  314. package/dist/manifest-Deq6opGg.mjs +0 -223
  315. package/dist/manifest-DfJTafJK.mjs +0 -37
  316. package/dist/manifest-DgOdgN_j.mjs +0 -50
  317. package/dist/manifest-DlbMW4v4.mjs +0 -47
  318. package/dist/manifest-DmVfbH0w.mjs +0 -374
  319. package/dist/manifest-Dog6Ddjr.mjs +0 -109
  320. package/dist/manifest-DvgU5FWb.mjs +0 -58
  321. package/dist/manifest-HsfDBs7j.mjs +0 -50
  322. package/dist/manifest-I8oQHvCG.mjs +0 -186
  323. package/dist/manifest-NvH_a-av.mjs +0 -786
  324. package/dist/manifest-cEJU1v0Z.mjs +0 -129
  325. package/dist/manifest-wOl5XLB12.mjs +0 -112
  326. package/dist/modules-tZozf0LQ.mjs +0 -10635
  327. package/dist/mojo-ipc-DXNEXEqb.mjs +0 -640
  328. package/dist/network-CPVvwvFg.mjs +0 -3852
  329. package/dist/outputPaths-um7lCRY3.mjs +0 -1141
  330. package/dist/parse-args-B4cY5Vx5.mjs +0 -39
  331. package/dist/platform-CYeFoTWp.mjs +0 -2161
  332. package/dist/process-BTbgcVc6.mjs +0 -1306
  333. package/dist/proxy-r8YN6nP1.mjs +0 -192
  334. package/dist/registry-Bl8ZQW61.mjs +0 -34
  335. package/dist/response-CWhh2aLo.mjs +0 -34
  336. package/dist/shared-state-board-BoZnSoj-.mjs +0 -586
  337. package/dist/sourcemap-BIDHUVXy.mjs +0 -934
  338. package/dist/ssrf-policy-Dsqd-DTX.mjs +0 -166
  339. package/dist/streaming-Dal6utPp.mjs +0 -725
  340. package/dist/tool-builder-BHJp32mV.mjs +0 -186
  341. package/dist/transform-DRVgGG90.mjs +0 -1011
  342. package/dist/types-Bx92KJfT.mjs +0 -4
  343. package/dist/types-DDBWs9UP.mjs +0 -37
  344. package/dist/wasm-BYx5UOeG.mjs +0 -1044
  345. package/dist/webcrack-Be0_FccV.mjs +0 -747
  346. package/dist/workflow-BpuKEtvn.mjs +0 -725
@@ -1,363 +0,0 @@
1
- import { t as __exportAll } from "./chunk-CjcI7cDX.mjs";
2
- import { t as logger } from "./logger-Dh_xb7_2.mjs";
3
- import koffi from "koffi";
4
- //#region src/native/platform/darwin/DarwinAPI.ts
5
- /**
6
- * Darwin (macOS) API Bindings using koffi FFI
7
- * Direct native calls to libSystem.B.dylib Mach kernel APIs
8
- *
9
- * This is the macOS counterpart to Win32API.ts — provides raw Mach API
10
- * function wrappers that DarwinMemoryProvider consumes.
11
- *
12
- * Pattern: lazy library loading, inline koffi function signatures,
13
- * Buffer-based struct parsing (no koffi struct registration to avoid
14
- * "Duplicate type name" errors in test environments).
15
- *
16
- * @module platform/darwin/DarwinAPI
17
- */
18
- var DarwinAPI_exports = /* @__PURE__ */ __exportAll({
19
- KERN: () => KERN,
20
- SM: () => SM,
21
- VM_FLAGS: () => VM_FLAGS,
22
- VM_PROT: () => VM_PROT,
23
- VM_REGION_BASIC_INFO_64: () => 9,
24
- VM_REGION_BASIC_INFO_COUNT_64: () => 9,
25
- dyldGetImageHeader: () => dyldGetImageHeader,
26
- dyldGetImageName: () => dyldGetImageName,
27
- dyldImageCount: () => dyldImageCount,
28
- isDarwin: () => isDarwin,
29
- isKoffiAvailableOnDarwin: () => isKoffiAvailableOnDarwin,
30
- kernReturnName: () => kernReturnName,
31
- machPortDeallocate: () => machPortDeallocate,
32
- machTaskSelf: () => machTaskSelf,
33
- machVmAllocate: () => machVmAllocate,
34
- machVmDeallocate: () => machVmDeallocate,
35
- machVmProtect: () => machVmProtect,
36
- machVmReadOverwrite: () => machVmReadOverwrite,
37
- machVmRegion: () => machVmRegion,
38
- machVmWrite: () => machVmWrite,
39
- taskForPid: () => taskForPid,
40
- taskResume: () => taskResume,
41
- taskSuspend: () => taskSuspend
42
- });
43
- /** Mach kernel return codes */
44
- const KERN = {
45
- SUCCESS: 0,
46
- INVALID_ADDRESS: 1,
47
- PROTECTION_FAILURE: 2,
48
- NO_SPACE: 3,
49
- INVALID_ARGUMENT: 4,
50
- FAILURE: 5,
51
- RESOURCE_SHORTAGE: 6,
52
- NOT_RECEIVER: 7,
53
- NO_ACCESS: 8,
54
- MEMORY_FAILURE: 9,
55
- MEMORY_ERROR: 10,
56
- ALREADY_IN_SET: 11,
57
- NOT_IN_SET: 12,
58
- NAME_EXISTS: 13,
59
- ABORTED: 14,
60
- INVALID_NAME: 15,
61
- INVALID_TASK: 16,
62
- INVALID_RIGHT: 17,
63
- INVALID_VALUE: 18,
64
- UREFS_OVERFLOW: 19,
65
- INVALID_CAPABILITY: 20,
66
- RIGHT_EXISTS: 21,
67
- INVALID_HOST: 22,
68
- MEMORY_PRESENT: 23,
69
- MEMORY_DATA_MOVED: 24,
70
- MEMORY_RESTART_COPY: 25,
71
- INVALID_PROCESSOR_SET: 26,
72
- POLICY_LIMIT: 27,
73
- INVALID_POLICY: 28,
74
- INVALID_OBJECT: 29,
75
- ALREADY_WAITING: 30,
76
- DEFAULT_SET: 31,
77
- EXCEPTION_PROTECTED: 32,
78
- INVALID_LEDGER: 33,
79
- INVALID_MEMORY_CONTROL: 34,
80
- INVALID_SECURITY: 35,
81
- NOT_DEPRESSED: 36,
82
- TERMINATED: 37,
83
- LOCK_SET_DESTROYED: 38,
84
- LOCK_UNSTABLE: 39,
85
- LOCK_OWNED: 40,
86
- LOCK_OWNED_SELF: 41,
87
- SEMAPHORE_DESTROYED: 42,
88
- RPC_SERVER_TERMINATED: 43,
89
- RPC_TERMINATE_ORPHAN: 44,
90
- RPC_CONTINUE_ORPHAN: 45,
91
- NOT_SUPPORTED: 46,
92
- NODE_DOWN: 47,
93
- NOT_WAITING: 48,
94
- OPERATION_TIMED_OUT: 49,
95
- CODESIGN_ERROR: 50,
96
- POLICY_STATIC: 51
97
- };
98
- /** Human-readable kernel return code names */
99
- const KERN_NAMES = {
100
- [KERN.SUCCESS]: "KERN_SUCCESS",
101
- [KERN.INVALID_ADDRESS]: "KERN_INVALID_ADDRESS",
102
- [KERN.PROTECTION_FAILURE]: "KERN_PROTECTION_FAILURE",
103
- [KERN.NO_SPACE]: "KERN_NO_SPACE",
104
- [KERN.INVALID_ARGUMENT]: "KERN_INVALID_ARGUMENT",
105
- [KERN.FAILURE]: "KERN_FAILURE",
106
- [KERN.NO_ACCESS]: "KERN_NO_ACCESS",
107
- [KERN.INVALID_TASK]: "KERN_INVALID_TASK",
108
- [KERN.INVALID_RIGHT]: "KERN_INVALID_RIGHT",
109
- [KERN.CODESIGN_ERROR]: "KERN_CODESIGN_ERROR"
110
- };
111
- /** Get human-readable name for a kern_return_t value */
112
- function kernReturnName(kr) {
113
- return KERN_NAMES[kr] ?? `KERN_UNKNOWN(${kr})`;
114
- }
115
- /** VM protection flags */
116
- const VM_PROT = {
117
- NONE: 0,
118
- READ: 1,
119
- WRITE: 2,
120
- EXECUTE: 4,
121
- ALL: 7
122
- };
123
- /** VM allocation flags */
124
- const VM_FLAGS = {
125
- FIXED: 0,
126
- ANYWHERE: 1,
127
- PURGABLE: 2,
128
- RANDOM_ADDR: 8,
129
- OVERWRITE: 16384
130
- };
131
- /** VM region share modes */
132
- const SM = {
133
- COW: 1,
134
- PRIVATE: 2,
135
- EMPTY: 3,
136
- SHARED: 4,
137
- TRUESHARED: 5,
138
- PRIVATE_ALIASED: 6,
139
- SHARED_ALIASED: 7,
140
- LARGE_PAGE: 8
141
- };
142
- let libSystem = null;
143
- let koffiAvailableDarwin = null;
144
- /**
145
- * Check if running on macOS
146
- */
147
- function isDarwin() {
148
- return process.platform === "darwin";
149
- }
150
- /**
151
- * Check if koffi can load libSystem.B.dylib on macOS
152
- */
153
- function isKoffiAvailableOnDarwin() {
154
- if (koffiAvailableDarwin !== null) return koffiAvailableDarwin;
155
- try {
156
- koffi.load("/usr/lib/libSystem.B.dylib").unload();
157
- koffiAvailableDarwin = true;
158
- return true;
159
- } catch {
160
- koffiAvailableDarwin = false;
161
- return false;
162
- }
163
- }
164
- /**
165
- * Get or load libSystem.B.dylib (lazy)
166
- */
167
- function getLibSystem() {
168
- if (!libSystem) {
169
- libSystem = koffi.load("/usr/lib/libSystem.B.dylib");
170
- logger.debug("Loaded libSystem.B.dylib via koffi");
171
- }
172
- return libSystem;
173
- }
174
- /**
175
- * Get the current task's Mach port (mach_task_self_)
176
- * On macOS, mach_task_self() is actually a macro accessing the global mach_task_self_ variable.
177
- * For koffi, we call mach_task_self_ which is the actual symbol.
178
- */
179
- function machTaskSelf() {
180
- return getLibSystem().func("uint32 mach_task_self()")();
181
- }
182
- /**
183
- * Get a Mach task port for a target process
184
- *
185
- * Requires root privileges or debugger entitlement (com.apple.security.cs.debugger)
186
- *
187
- * @param targetTask - The task port of the caller (use machTaskSelf())
188
- * @param pid - Target process PID
189
- * @returns { kr, task } where kr is kern_return_t and task is the Mach task port
190
- */
191
- function taskForPid(targetTask, pid) {
192
- const fn = getLibSystem().func("int32 task_for_pid(uint32, int32, _Out_ uint32 *)");
193
- const taskBuf = Buffer.alloc(4);
194
- return {
195
- kr: fn(targetTask, pid, taskBuf),
196
- task: taskBuf.readUInt32LE(0)
197
- };
198
- }
199
- /**
200
- * Deallocate a Mach port right
201
- *
202
- * @param task - The task owning the port
203
- * @param name - The port name to deallocate
204
- * @returns kern_return_t
205
- */
206
- function machPortDeallocate(task, name) {
207
- return getLibSystem().func("int32 mach_port_deallocate(uint32, uint32)")(task, name);
208
- }
209
- /**
210
- * Read memory from a remote process using mach_vm_read_overwrite.
211
- *
212
- * We use _overwrite variant because it writes directly into our pre-allocated
213
- * buffer, avoiding kernel-allocated memory and the need for mach_vm_deallocate.
214
- *
215
- * @param task - Target task port
216
- * @param address - Source address in target process
217
- * @param size - Number of bytes to read
218
- * @returns { kr, data, outsize }
219
- */
220
- function machVmReadOverwrite(task, address, size) {
221
- const fn = getLibSystem().func("int32 mach_vm_read_overwrite(uint32, uint64, uint64, _Out_ uint8_t *, uint64, _Out_ uint64 *)");
222
- const data = Buffer.alloc(size);
223
- const outsizeBuf = Buffer.alloc(8);
224
- return {
225
- kr: fn(task, address, BigInt(size), data, BigInt(size), outsizeBuf),
226
- data,
227
- outsize: outsizeBuf.readBigUInt64LE(0)
228
- };
229
- }
230
- /**
231
- * Write memory to a remote process using mach_vm_write.
232
- *
233
- * @param task - Target task port
234
- * @param address - Destination address in target process
235
- * @param data - Data to write
236
- * @returns kern_return_t
237
- */
238
- function machVmWrite(task, address, data) {
239
- return getLibSystem().func("int32 mach_vm_write(uint32, uint64, uint8_t *, uint32)")(task, address, data, data.length);
240
- }
241
- /**
242
- * Query a memory region in a remote process using mach_vm_region.
243
- *
244
- * Returns vm_region_basic_info_data_64_t which is 36 bytes:
245
- * protection(4) + max_protection(4) + inheritance(4) + shared(4) +
246
- * reserved(4) + offset(8) + behavior(4) + user_wired_count(4)
247
- *
248
- * @param task - Target task port
249
- * @param address - Address to query (will be rounded down to region start)
250
- * @returns { kr, address, size, info, objectName }
251
- */
252
- function machVmRegion(task, address) {
253
- const fn = getLibSystem().func("int32 mach_vm_region(uint32, _Inout_ uint64 *, _Out_ uint64 *, int32, _Out_ uint8_t *, _Inout_ uint32 *, _Out_ uint32 *)");
254
- const addressBuf = Buffer.alloc(8);
255
- addressBuf.writeBigUInt64LE(address);
256
- const sizeBuf = Buffer.alloc(8);
257
- const infoBuf = Buffer.alloc(36);
258
- const infoCntBuf = Buffer.alloc(4);
259
- infoCntBuf.writeUInt32LE(9);
260
- const kr = fn(task, addressBuf, sizeBuf, 9, infoBuf, infoCntBuf, Buffer.alloc(4));
261
- const info = {
262
- protection: infoBuf.readUInt32LE(0),
263
- max_protection: infoBuf.readUInt32LE(4),
264
- inheritance: infoBuf.readUInt32LE(8),
265
- shared: infoBuf.readUInt32LE(12) !== 0,
266
- reserved: infoBuf.readUInt32LE(16) !== 0,
267
- offset: infoBuf.readBigUInt64LE(20),
268
- behavior: infoBuf.readUInt32LE(28),
269
- user_wired_count: infoBuf.readUInt32LE(32)
270
- };
271
- return {
272
- kr,
273
- address: addressBuf.readBigUInt64LE(0),
274
- size: sizeBuf.readBigUInt64LE(0),
275
- info
276
- };
277
- }
278
- /**
279
- * Change memory protection for a region in a remote process.
280
- *
281
- * @param task - Target task port
282
- * @param address - Start address of the region
283
- * @param size - Size of the region
284
- * @param setMaximum - If true, sets maximum protection (needed for W^X workarounds)
285
- * @param newProtection - New VM_PROT_* flags
286
- * @returns kern_return_t
287
- */
288
- function machVmProtect(task, address, size, setMaximum, newProtection) {
289
- return getLibSystem().func("int32 mach_vm_protect(uint32, uint64, uint64, int32, int32)")(task, address, size, setMaximum ? 1 : 0, newProtection);
290
- }
291
- /**
292
- * Allocate memory in a remote process.
293
- *
294
- * @param task - Target task port
295
- * @param size - Number of bytes to allocate
296
- * @param flags - VM_FLAGS_* (typically VM_FLAGS_ANYWHERE)
297
- * @returns { kr, address }
298
- */
299
- function machVmAllocate(task, size, flags) {
300
- const fn = getLibSystem().func("int32 mach_vm_allocate(uint32, _Inout_ uint64 *, uint64, int32)");
301
- const addressBuf = Buffer.alloc(8);
302
- addressBuf.writeBigUInt64LE(0n);
303
- return {
304
- kr: fn(task, addressBuf, size, flags),
305
- address: addressBuf.readBigUInt64LE(0)
306
- };
307
- }
308
- /**
309
- * Deallocate (free) memory in a remote process.
310
- *
311
- * @param task - Target task port
312
- * @param address - Start address of the region to free
313
- * @param size - Size of the region to free
314
- * @returns kern_return_t
315
- */
316
- function machVmDeallocate(task, address, size) {
317
- return getLibSystem().func("int32 mach_vm_deallocate(uint32, uint64, uint64)")(task, address, size);
318
- }
319
- /**
320
- * Suspend all threads in a task (freeze target process).
321
- *
322
- * This pauses the entire process — useful for consistent memory snapshots.
323
- * Must be paired with `taskResume()` to avoid leaving the target frozen.
324
- *
325
- * @param task - Target task port (from taskForPid)
326
- * @returns kern_return_t
327
- */
328
- function taskSuspend(task) {
329
- return getLibSystem().func("int32 task_suspend(uint32)")(task);
330
- }
331
- /**
332
- * Resume all threads in a previously-suspended task.
333
- *
334
- * @param task - Target task port (from taskForPid)
335
- * @returns kern_return_t
336
- */
337
- function taskResume(task) {
338
- return getLibSystem().func("int32 task_resume(uint32)")(task);
339
- }
340
- /**
341
- * Get the number of loaded images in the current process.
342
- * Note: For remote process module enumeration, we need to read
343
- * dyld_all_image_infos from the target process memory instead.
344
- */
345
- function dyldImageCount() {
346
- return getLibSystem().func("uint32 _dyld_image_count()")();
347
- }
348
- /**
349
- * Get the name of a loaded image by index (current process only).
350
- */
351
- function dyldGetImageName(index) {
352
- const ptr = getLibSystem().func("const char * _dyld_get_image_name(uint32)")(index);
353
- return ptr ? String(ptr) : "";
354
- }
355
- /**
356
- * Get the Mach header pointer of a loaded image by index (current process only).
357
- */
358
- function dyldGetImageHeader(index) {
359
- const fn = getLibSystem().func("void * _dyld_get_image_header(uint32)");
360
- return BigInt(fn(index));
361
- }
362
- //#endregion
363
- export { machVmReadOverwrite as _, VM_PROT as a, taskForPid as b, dyldImageCount as c, kernReturnName as d, machPortDeallocate as f, machVmProtect as g, machVmDeallocate as h, VM_FLAGS as i, isDarwin as l, machVmAllocate as m, KERN as n, dyldGetImageHeader as o, machTaskSelf as p, SM as r, dyldGetImageName as s, DarwinAPI_exports as t, isKoffiAvailableOnDarwin as u, machVmRegion as v, machVmWrite as y };
@@ -1,217 +0,0 @@
1
- import { t as logger } from "./logger-Dh_xb7_2.mjs";
2
- import { L as DETAILED_DATA_DEFAULT_TTL_MS, R as DETAILED_DATA_MAX_TTL_MS, z as DETAILED_DATA_SMART_THRESHOLD_BYTES } from "./constants-CDZLOoVv.mjs";
3
- //#region src/utils/DetailedDataManager.ts
4
- var DetailedDataManager = class DetailedDataManager {
5
- static instance;
6
- cache = /* @__PURE__ */ new Map();
7
- cleanupInterval = null;
8
- DEFAULT_TTL = DETAILED_DATA_DEFAULT_TTL_MS;
9
- MAX_TTL = DETAILED_DATA_MAX_TTL_MS;
10
- MAX_CACHE_SIZE = 100;
11
- AUTO_EXTEND_ON_ACCESS = true;
12
- EXTEND_DURATION = 900 * 1e3;
13
- /** Memo cache to avoid re-serializing the same object within a single call chain */
14
- serializationMemo = /* @__PURE__ */ new WeakMap();
15
- constructor() {
16
- this.cleanupInterval = setInterval(() => this.cleanup(), 300 * 1e3);
17
- if (typeof this.cleanupInterval === "object" && "unref" in this.cleanupInterval) this.cleanupInterval.unref();
18
- }
19
- /** @deprecated Use constructor injection. Kept for backward compatibility. */
20
- static getInstance() {
21
- if (!this.instance) this.instance = new DetailedDataManager();
22
- return this.instance;
23
- }
24
- shutdown() {
25
- if (this.cleanupInterval) {
26
- clearInterval(this.cleanupInterval);
27
- this.cleanupInterval = null;
28
- }
29
- this.cache.clear();
30
- DetailedDataManager.instance = void 0;
31
- logger.info("DetailedDataManager shut down");
32
- }
33
- /**
34
- * Serialize data with memoization to avoid redundant JSON.stringify calls.
35
- * Objects are cached in a WeakMap so the memo is automatically GC'd.
36
- */
37
- serializeWithMemo(data) {
38
- if (data !== null && typeof data === "object") {
39
- const cached = this.serializationMemo.get(data);
40
- if (cached) return cached;
41
- }
42
- const json = JSON.stringify(data);
43
- const result = {
44
- json,
45
- size: json.length
46
- };
47
- if (data !== null && typeof data === "object") this.serializationMemo.set(data, result);
48
- return result;
49
- }
50
- isRecord(value) {
51
- return value !== null && typeof value === "object";
52
- }
53
- readPathSegment(value, key) {
54
- return Object(value)[key];
55
- }
56
- smartHandle(data, threshold = DETAILED_DATA_SMART_THRESHOLD_BYTES) {
57
- if (data === null || data === void 0) return data;
58
- if (typeof data !== "object" && typeof data !== "string") return data;
59
- if (typeof data === "string") {
60
- if (data.length <= threshold) return data;
61
- }
62
- const { json: jsonStr, size } = this.serializeWithMemo(data);
63
- if (size <= threshold) return data;
64
- logger.info(`Data too large (${(size / 1024).toFixed(1)}KB), returning summary with detailId`);
65
- return this.createDetailedResponseWithSize(data, jsonStr, size);
66
- }
67
- createDetailedResponseWithSize(data, jsonStr, size) {
68
- const detailId = this.storeWithSize(data, size);
69
- return {
70
- summary: this.generateSummaryFromJson(data, jsonStr, size),
71
- detailId,
72
- hint: `Data too large. Use get_detailed_data("${detailId}") to retrieve full data, or get_detailed_data("${detailId}", path="key.subkey") for specific part.`,
73
- expiresAt: Date.now() + this.DEFAULT_TTL
74
- };
75
- }
76
- store(data, customTTL) {
77
- const { size } = this.serializeWithMemo(data);
78
- return this.storeWithSize(data, size, customTTL);
79
- }
80
- storeWithSize(data, size, customTTL) {
81
- if (this.cache.size >= this.MAX_CACHE_SIZE) this.evictLRU();
82
- const detailId = `detail_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
83
- const now = Date.now();
84
- const ttl = customTTL || this.DEFAULT_TTL;
85
- const entry = {
86
- data,
87
- expiresAt: now + ttl,
88
- createdAt: now,
89
- lastAccessedAt: now,
90
- accessCount: 0,
91
- size
92
- };
93
- this.cache.set(detailId, entry);
94
- logger.debug(`Stored detailed data: ${detailId}, size: ${(size / 1024).toFixed(1)}KB, expires in ${ttl / 1e3}s`);
95
- return detailId;
96
- }
97
- retrieve(detailId, path) {
98
- const cached = this.cache.get(detailId);
99
- if (!cached) throw new Error(`DetailId not found or expired: ${detailId}`);
100
- const now = Date.now();
101
- if (now > cached.expiresAt) {
102
- this.cache.delete(detailId);
103
- throw new Error(`DetailId expired: ${detailId}`);
104
- }
105
- cached.lastAccessedAt = now;
106
- cached.accessCount++;
107
- if (this.AUTO_EXTEND_ON_ACCESS) {
108
- if (cached.expiresAt - now < 300 * 1e3) {
109
- cached.expiresAt = Math.min(now + this.EXTEND_DURATION, now + this.MAX_TTL);
110
- logger.debug(`Auto-extended detailId ${detailId}, new expiry: ${new Date(cached.expiresAt).toISOString()}`);
111
- }
112
- }
113
- if (path) return this.getByPath(cached.data, path);
114
- return cached.data;
115
- }
116
- getByPath(obj, path) {
117
- const keys = path.split(".");
118
- let current = obj;
119
- for (const key of keys) {
120
- if (current === null || current === void 0) throw new Error(`Path not found: ${path} (stopped at ${key})`);
121
- current = this.readPathSegment(current, key);
122
- }
123
- return current;
124
- }
125
- generateSummaryFromJson(data, jsonStr, size) {
126
- const summary = {
127
- type: Array.isArray(data) ? "array" : typeof data,
128
- size,
129
- sizeKB: (size / 1024).toFixed(1) + "KB",
130
- preview: jsonStr.substring(0, 200) + (size > 200 ? "..." : "")
131
- };
132
- if (this.isRecord(data)) {
133
- const keys = Object.keys(data);
134
- summary.structure = { keys: keys.slice(0, 50) };
135
- if (!Array.isArray(data)) {
136
- const methods = keys.filter((k) => typeof data[k] === "function");
137
- const properties = keys.filter((k) => typeof data[k] !== "function");
138
- summary.structure.methods = methods.slice(0, 30);
139
- summary.structure.properties = properties.slice(0, 50);
140
- } else summary.structure.length = data.length;
141
- }
142
- return summary;
143
- }
144
- cleanup() {
145
- const now = Date.now();
146
- let cleaned = 0;
147
- for (const [id, cached] of this.cache.entries()) if (now > cached.expiresAt) {
148
- this.cache.delete(id);
149
- cleaned++;
150
- }
151
- if (cleaned > 0) logger.debug(`Cleaned ${cleaned} expired detailed data entries`);
152
- }
153
- evictLRU() {
154
- if (this.cache.size === 0) return;
155
- let oldestId = null;
156
- let oldestAccessTime = Infinity;
157
- for (const [id, entry] of this.cache.entries()) if (entry.lastAccessedAt < oldestAccessTime) {
158
- oldestAccessTime = entry.lastAccessedAt;
159
- oldestId = id;
160
- }
161
- if (oldestId) {
162
- const entry = this.cache.get(oldestId);
163
- this.cache.delete(oldestId);
164
- logger.info(`Evicted LRU entry: ${oldestId}, last accessed: ${new Date(entry.lastAccessedAt).toISOString()}, access count: ${entry.accessCount}`);
165
- }
166
- }
167
- extend(detailId, additionalTime) {
168
- const cached = this.cache.get(detailId);
169
- if (!cached) throw new Error(`DetailId not found: ${detailId}`);
170
- const now = Date.now();
171
- if (now > cached.expiresAt) throw new Error(`DetailId already expired: ${detailId}`);
172
- const extendBy = additionalTime || this.EXTEND_DURATION;
173
- const newExpiresAt = Math.min(cached.expiresAt + extendBy, now + this.MAX_TTL);
174
- cached.expiresAt = newExpiresAt;
175
- logger.info(`Extended detailId ${detailId} by ${extendBy / 1e3}s, new expiry: ${new Date(newExpiresAt).toISOString()}`);
176
- }
177
- getStats() {
178
- let totalSize = 0;
179
- let totalAccessCount = 0;
180
- const entries = Array.from(this.cache.values());
181
- for (const entry of entries) {
182
- totalSize += entry.size;
183
- totalAccessCount += entry.accessCount;
184
- }
185
- return {
186
- cacheSize: this.cache.size,
187
- maxCacheSize: this.MAX_CACHE_SIZE,
188
- defaultTTLSeconds: this.DEFAULT_TTL / 1e3,
189
- maxTTLSeconds: this.MAX_TTL / 1e3,
190
- totalSizeKB: (totalSize / 1024).toFixed(1),
191
- avgAccessCount: entries.length > 0 ? (totalAccessCount / entries.length).toFixed(1) : "0",
192
- autoExtendEnabled: this.AUTO_EXTEND_ON_ACCESS,
193
- extendDurationSeconds: this.EXTEND_DURATION / 1e3
194
- };
195
- }
196
- getDetailedStats() {
197
- const now = Date.now();
198
- const entries = Array.from(this.cache.entries()).map(([id, entry]) => ({
199
- detailId: id,
200
- sizeKB: (entry.size / 1024).toFixed(1),
201
- createdAt: new Date(entry.createdAt).toISOString(),
202
- lastAccessedAt: new Date(entry.lastAccessedAt).toISOString(),
203
- expiresAt: new Date(entry.expiresAt).toISOString(),
204
- remainingSeconds: Math.max(0, Math.floor((entry.expiresAt - now) / 1e3)),
205
- accessCount: entry.accessCount,
206
- isExpired: now > entry.expiresAt
207
- }));
208
- entries.sort((a, b) => new Date(b.lastAccessedAt).getTime() - new Date(a.lastAccessedAt).getTime());
209
- return entries;
210
- }
211
- clear() {
212
- this.cache.clear();
213
- logger.info("Cleared all detailed data cache");
214
- }
215
- };
216
- //#endregion
217
- export { DetailedDataManager as t };