shield360 1.1.0 → 1.2.1

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 (400) hide show
  1. package/README.md +330 -3
  2. package/dist/__tests__/build-info.test.js +8 -1
  3. package/dist/__tests__/build-info.test.js.map +1 -1
  4. package/dist/__tests__/code-location.test.js +1 -1
  5. package/dist/__tests__/destination.test.js +15 -0
  6. package/dist/__tests__/destination.test.js.map +1 -1
  7. package/dist/__tests__/masking.test.d.ts +1 -0
  8. package/dist/__tests__/masking.test.js +66 -0
  9. package/dist/__tests__/masking.test.js.map +1 -0
  10. package/dist/__tests__/register.e2e.test.d.ts +1 -0
  11. package/dist/__tests__/register.e2e.test.js +279 -0
  12. package/dist/__tests__/register.e2e.test.js.map +1 -0
  13. package/dist/__tests__/register.test.js +60 -0
  14. package/dist/__tests__/register.test.js.map +1 -1
  15. package/dist/agents/__tests__/agents.test.d.ts +1 -0
  16. package/dist/agents/__tests__/agents.test.js +529 -0
  17. package/dist/agents/__tests__/agents.test.js.map +1 -0
  18. package/dist/agents/index.d.ts +15 -0
  19. package/dist/agents/index.js +25 -0
  20. package/dist/agents/index.js.map +1 -0
  21. package/dist/agents/passport.d.ts +92 -0
  22. package/dist/agents/passport.js +301 -0
  23. package/dist/agents/passport.js.map +1 -0
  24. package/dist/agents/policy.d.ts +24 -0
  25. package/dist/agents/policy.js +93 -0
  26. package/dist/agents/policy.js.map +1 -0
  27. package/dist/agents/replay.d.ts +20 -0
  28. package/dist/agents/replay.js +47 -0
  29. package/dist/agents/replay.js.map +1 -0
  30. package/dist/agents/report.d.ts +30 -0
  31. package/dist/agents/report.js +93 -0
  32. package/dist/agents/report.js.map +1 -0
  33. package/dist/agents/types.d.ts +148 -0
  34. package/dist/agents/types.js +37 -0
  35. package/dist/agents/types.js.map +1 -0
  36. package/dist/agents/verifier.d.ts +33 -0
  37. package/dist/agents/verifier.js +276 -0
  38. package/dist/agents/verifier.js.map +1 -0
  39. package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
  40. package/dist/ai-security/__tests__/bench.test.js +50 -0
  41. package/dist/ai-security/__tests__/bench.test.js.map +1 -0
  42. package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
  43. package/dist/ai-security/__tests__/checks.test.js +248 -0
  44. package/dist/ai-security/__tests__/checks.test.js.map +1 -0
  45. package/dist/ai-security/__tests__/config.test.d.ts +1 -0
  46. package/dist/ai-security/__tests__/config.test.js +164 -0
  47. package/dist/ai-security/__tests__/config.test.js.map +1 -0
  48. package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
  49. package/dist/ai-security/__tests__/detection.test.js +114 -0
  50. package/dist/ai-security/__tests__/detection.test.js.map +1 -0
  51. package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
  52. package/dist/ai-security/__tests__/fixtures.js +30 -0
  53. package/dist/ai-security/__tests__/fixtures.js.map +1 -0
  54. package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
  55. package/dist/ai-security/__tests__/hooks.test.js +174 -0
  56. package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
  57. package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
  58. package/dist/ai-security/__tests__/stream.test.js +85 -0
  59. package/dist/ai-security/__tests__/stream.test.js.map +1 -0
  60. package/dist/ai-security/config.d.ts +94 -0
  61. package/dist/ai-security/config.js +241 -0
  62. package/dist/ai-security/config.js.map +1 -0
  63. package/dist/ai-security/context.d.ts +45 -0
  64. package/dist/ai-security/context.js +108 -0
  65. package/dist/ai-security/context.js.map +1 -0
  66. package/dist/ai-security/custom-kinds.d.ts +23 -0
  67. package/dist/ai-security/custom-kinds.js +97 -0
  68. package/dist/ai-security/custom-kinds.js.map +1 -0
  69. package/dist/ai-security/events.d.ts +77 -0
  70. package/dist/ai-security/events.js +153 -0
  71. package/dist/ai-security/events.js.map +1 -0
  72. package/dist/ai-security/hooks.d.ts +48 -0
  73. package/dist/ai-security/hooks.js +461 -0
  74. package/dist/ai-security/hooks.js.map +1 -0
  75. package/dist/ai-security/index.d.ts +209 -0
  76. package/dist/ai-security/index.js +587 -0
  77. package/dist/ai-security/index.js.map +1 -0
  78. package/dist/ai-security/injection-rules.json +1024 -0
  79. package/dist/ai-security/injection.d.ts +46 -0
  80. package/dist/ai-security/injection.js +635 -0
  81. package/dist/ai-security/injection.js.map +1 -0
  82. package/dist/ai-security/jailbreak.d.ts +38 -0
  83. package/dist/ai-security/jailbreak.js +73 -0
  84. package/dist/ai-security/jailbreak.js.map +1 -0
  85. package/dist/ai-security/limits.d.ts +84 -0
  86. package/dist/ai-security/limits.js +195 -0
  87. package/dist/ai-security/limits.js.map +1 -0
  88. package/dist/ai-security/mcp.d.ts +82 -0
  89. package/dist/ai-security/mcp.js +150 -0
  90. package/dist/ai-security/mcp.js.map +1 -0
  91. package/dist/ai-security/output.d.ts +107 -0
  92. package/dist/ai-security/output.js +390 -0
  93. package/dist/ai-security/output.js.map +1 -0
  94. package/dist/ai-security/policy.d.ts +125 -0
  95. package/dist/ai-security/policy.js +196 -0
  96. package/dist/ai-security/policy.js.map +1 -0
  97. package/dist/ai-security/rag.d.ts +70 -0
  98. package/dist/ai-security/rag.js +174 -0
  99. package/dist/ai-security/rag.js.map +1 -0
  100. package/dist/ai-security/tool-rules.json +203 -0
  101. package/dist/ai-security/tools.d.ts +46 -0
  102. package/dist/ai-security/tools.js +62 -0
  103. package/dist/ai-security/tools.js.map +1 -0
  104. package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
  105. package/dist/budgets/__tests__/budgets.test.js +134 -0
  106. package/dist/budgets/__tests__/budgets.test.js.map +1 -0
  107. package/dist/budgets/auto.d.ts +25 -0
  108. package/dist/budgets/auto.js +63 -0
  109. package/dist/budgets/auto.js.map +1 -0
  110. package/dist/budgets/index.d.ts +110 -0
  111. package/dist/budgets/index.js +239 -0
  112. package/dist/budgets/index.js.map +1 -0
  113. package/dist/customer/__tests__/customer.test.d.ts +1 -0
  114. package/dist/customer/__tests__/customer.test.js +155 -0
  115. package/dist/customer/__tests__/customer.test.js.map +1 -0
  116. package/dist/customer/index.d.ts +48 -0
  117. package/dist/customer/index.js +132 -0
  118. package/dist/customer/index.js.map +1 -0
  119. package/dist/destination.d.ts +14 -0
  120. package/dist/destination.js +16 -0
  121. package/dist/destination.js.map +1 -1
  122. package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
  123. package/dist/feedback/__tests__/feedback.test.js +80 -0
  124. package/dist/feedback/__tests__/feedback.test.js.map +1 -0
  125. package/dist/feedback/index.d.ts +48 -0
  126. package/dist/feedback/index.js +97 -0
  127. package/dist/feedback/index.js.map +1 -0
  128. package/dist/flags/__tests__/flags.test.d.ts +1 -0
  129. package/dist/flags/__tests__/flags.test.js +301 -0
  130. package/dist/flags/__tests__/flags.test.js.map +1 -0
  131. package/dist/flags/client.d.ts +131 -0
  132. package/dist/flags/client.js +301 -0
  133. package/dist/flags/client.js.map +1 -0
  134. package/dist/flags/engine.d.ts +200 -0
  135. package/dist/flags/engine.js +677 -0
  136. package/dist/flags/engine.js.map +1 -0
  137. package/dist/flags/index.d.ts +4 -0
  138. package/dist/flags/index.js +16 -0
  139. package/dist/flags/index.js.map +1 -0
  140. package/dist/guard/__tests__/findings.test.js +1 -1
  141. package/dist/guard/__tests__/report.test.js +67 -0
  142. package/dist/guard/__tests__/report.test.js.map +1 -1
  143. package/dist/guard/heartbeat.d.ts +34 -0
  144. package/dist/guard/heartbeat.js +83 -0
  145. package/dist/guard/heartbeat.js.map +1 -0
  146. package/dist/guard/integration.d.ts +9 -0
  147. package/dist/guard/integration.js +4 -2
  148. package/dist/guard/integration.js.map +1 -1
  149. package/dist/guard/report.d.ts +24 -1
  150. package/dist/guard/report.js +67 -18
  151. package/dist/guard/report.js.map +1 -1
  152. package/dist/index.d.ts +88 -0
  153. package/dist/index.js +203 -2
  154. package/dist/index.js.map +1 -1
  155. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
  156. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
  157. package/dist/instrumentation/anthropic/wrapper.js +4 -0
  158. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  159. package/dist/instrumentation/openai/wrapper.js +6 -0
  160. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  161. package/dist/masking.d.ts +42 -0
  162. package/dist/masking.js +197 -0
  163. package/dist/masking.js.map +1 -0
  164. package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
  165. package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
  166. package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
  167. package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
  168. package/dist/otel/__tests__/app-logs.test.js +269 -0
  169. package/dist/otel/__tests__/app-logs.test.js.map +1 -0
  170. package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
  171. package/dist/otel/__tests__/log-auto.test.js +125 -0
  172. package/dist/otel/__tests__/log-auto.test.js.map +1 -0
  173. package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
  174. package/dist/otel/__tests__/log-bridges.test.js +170 -0
  175. package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
  176. package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
  177. package/dist/otel/__tests__/system-metrics.test.js +79 -0
  178. package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
  179. package/dist/otel/app-logs.d.ts +80 -0
  180. package/dist/otel/app-logs.js +195 -0
  181. package/dist/otel/app-logs.js.map +1 -0
  182. package/dist/otel/build-info.d.ts +2 -1
  183. package/dist/otel/build-info.js +3 -2
  184. package/dist/otel/build-info.js.map +1 -1
  185. package/dist/otel/events.d.ts +1 -0
  186. package/dist/otel/events.js +22 -13
  187. package/dist/otel/events.js.map +1 -1
  188. package/dist/otel/log-auto.d.ts +44 -0
  189. package/dist/otel/log-auto.js +200 -0
  190. package/dist/otel/log-auto.js.map +1 -0
  191. package/dist/otel/log-bridges.d.ts +54 -0
  192. package/dist/otel/log-bridges.js +307 -0
  193. package/dist/otel/log-bridges.js.map +1 -0
  194. package/dist/otel/metrics.js +1 -1
  195. package/dist/otel/metrics.js.map +1 -1
  196. package/dist/otel/system-metrics.d.ts +39 -0
  197. package/dist/otel/system-metrics.js +166 -0
  198. package/dist/otel/system-metrics.js.map +1 -0
  199. package/dist/otel/tracing.js +6 -2
  200. package/dist/otel/tracing.js.map +1 -1
  201. package/dist/protect/__tests__/protect.test.js +4 -0
  202. package/dist/protect/__tests__/protect.test.js.map +1 -1
  203. package/dist/protect/index.js +9 -4
  204. package/dist/protect/index.js.map +1 -1
  205. package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
  206. package/dist/rasp/__tests__/auto-http.test.js +136 -0
  207. package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
  208. package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
  209. package/dist/rasp/__tests__/baseline.test.js +86 -0
  210. package/dist/rasp/__tests__/baseline.test.js.map +1 -0
  211. package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
  212. package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
  213. package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
  214. package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
  215. package/dist/rasp/__tests__/capture-context.test.js +135 -0
  216. package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
  217. package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
  218. package/dist/rasp/__tests__/code-hook.test.js +218 -0
  219. package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
  220. package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
  221. package/dist/rasp/__tests__/config-client.test.js +283 -0
  222. package/dist/rasp/__tests__/config-client.test.js.map +1 -0
  223. package/dist/rasp/__tests__/corpus.d.ts +13 -0
  224. package/dist/rasp/__tests__/corpus.js +111 -0
  225. package/dist/rasp/__tests__/corpus.js.map +1 -0
  226. package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
  227. package/dist/rasp/__tests__/custom-rules.test.js +276 -0
  228. package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
  229. package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
  230. package/dist/rasp/__tests__/db-hook.test.js +438 -0
  231. package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
  232. package/dist/rasp/__tests__/deception.test.d.ts +1 -0
  233. package/dist/rasp/__tests__/deception.test.js +567 -0
  234. package/dist/rasp/__tests__/deception.test.js.map +1 -0
  235. package/dist/rasp/__tests__/detect.test.d.ts +1 -0
  236. package/dist/rasp/__tests__/detect.test.js +276 -0
  237. package/dist/rasp/__tests__/detect.test.js.map +1 -0
  238. package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
  239. package/dist/rasp/__tests__/esm-exports.test.js +20 -0
  240. package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
  241. package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
  242. package/dist/rasp/__tests__/fs-hook.test.js +241 -0
  243. package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
  244. package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
  245. package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
  246. package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
  247. package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
  248. package/dist/rasp/__tests__/hook-kit.js +139 -0
  249. package/dist/rasp/__tests__/hook-kit.js.map +1 -0
  250. package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
  251. package/dist/rasp/__tests__/http-hook.test.js +250 -0
  252. package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
  253. package/dist/rasp/__tests__/iast.test.d.ts +1 -0
  254. package/dist/rasp/__tests__/iast.test.js +361 -0
  255. package/dist/rasp/__tests__/iast.test.js.map +1 -0
  256. package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
  257. package/dist/rasp/__tests__/include-hook.test.js +122 -0
  258. package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
  259. package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
  260. package/dist/rasp/__tests__/middleware.test.js +302 -0
  261. package/dist/rasp/__tests__/middleware.test.js.map +1 -0
  262. package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
  263. package/dist/rasp/__tests__/process-hook.test.js +238 -0
  264. package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
  265. package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
  266. package/dist/rasp/__tests__/reporter.test.js +114 -0
  267. package/dist/rasp/__tests__/reporter.test.js.map +1 -0
  268. package/dist/rasp/__tests__/route.test.d.ts +1 -0
  269. package/dist/rasp/__tests__/route.test.js +46 -0
  270. package/dist/rasp/__tests__/route.test.js.map +1 -0
  271. package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
  272. package/dist/rasp/__tests__/rule-expr.test.js +151 -0
  273. package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
  274. package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
  275. package/dist/rasp/__tests__/rule-phases.test.js +271 -0
  276. package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
  277. package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
  278. package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
  279. package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
  280. package/dist/rasp/__tests__/targets.test.d.ts +1 -0
  281. package/dist/rasp/__tests__/targets.test.js +82 -0
  282. package/dist/rasp/__tests__/targets.test.js.map +1 -0
  283. package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
  284. package/dist/rasp/__tests__/template-hook.test.js +254 -0
  285. package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
  286. package/dist/rasp/__tests__/upload.test.d.ts +1 -0
  287. package/dist/rasp/__tests__/upload.test.js +81 -0
  288. package/dist/rasp/__tests__/upload.test.js.map +1 -0
  289. package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
  290. package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
  291. package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
  292. package/dist/rasp/auto-http.d.ts +6 -0
  293. package/dist/rasp/auto-http.js +194 -0
  294. package/dist/rasp/auto-http.js.map +1 -0
  295. package/dist/rasp/baseline.d.ts +35 -0
  296. package/dist/rasp/baseline.js +91 -0
  297. package/dist/rasp/baseline.js.map +1 -0
  298. package/dist/rasp/capture.d.ts +76 -0
  299. package/dist/rasp/capture.js +304 -0
  300. package/dist/rasp/capture.js.map +1 -0
  301. package/dist/rasp/config-client.d.ts +122 -0
  302. package/dist/rasp/config-client.js +337 -0
  303. package/dist/rasp/config-client.js.map +1 -0
  304. package/dist/rasp/context.d.ts +65 -0
  305. package/dist/rasp/context.js +68 -0
  306. package/dist/rasp/context.js.map +1 -0
  307. package/dist/rasp/custom-rules.d.ts +68 -0
  308. package/dist/rasp/custom-rules.js +222 -0
  309. package/dist/rasp/custom-rules.js.map +1 -0
  310. package/dist/rasp/data/default-rules.json +199 -0
  311. package/dist/rasp/data/default-sinks.json +4 -0
  312. package/dist/rasp/data/dnslog-domains.json +11 -0
  313. package/dist/rasp/deception.d.ts +70 -0
  314. package/dist/rasp/deception.js +220 -0
  315. package/dist/rasp/deception.js.map +1 -0
  316. package/dist/rasp/detect.d.ts +68 -0
  317. package/dist/rasp/detect.js +671 -0
  318. package/dist/rasp/detect.js.map +1 -0
  319. package/dist/rasp/engine.d.ts +107 -0
  320. package/dist/rasp/engine.js +330 -0
  321. package/dist/rasp/engine.js.map +1 -0
  322. package/dist/rasp/hooks/code.d.ts +20 -0
  323. package/dist/rasp/hooks/code.js +334 -0
  324. package/dist/rasp/hooks/code.js.map +1 -0
  325. package/dist/rasp/hooks/db.d.ts +48 -0
  326. package/dist/rasp/hooks/db.js +322 -0
  327. package/dist/rasp/hooks/db.js.map +1 -0
  328. package/dist/rasp/hooks/esm.d.ts +7 -0
  329. package/dist/rasp/hooks/esm.js +18 -0
  330. package/dist/rasp/hooks/esm.js.map +1 -0
  331. package/dist/rasp/hooks/fs.d.ts +3 -0
  332. package/dist/rasp/hooks/fs.js +206 -0
  333. package/dist/rasp/hooks/fs.js.map +1 -0
  334. package/dist/rasp/hooks/http.d.ts +4 -0
  335. package/dist/rasp/hooks/http.js +213 -0
  336. package/dist/rasp/hooks/http.js.map +1 -0
  337. package/dist/rasp/hooks/include.d.ts +9 -0
  338. package/dist/rasp/hooks/include.js +79 -0
  339. package/dist/rasp/hooks/include.js.map +1 -0
  340. package/dist/rasp/hooks/marks.d.ts +2 -0
  341. package/dist/rasp/hooks/marks.js +16 -0
  342. package/dist/rasp/hooks/marks.js.map +1 -0
  343. package/dist/rasp/hooks/process.d.ts +22 -0
  344. package/dist/rasp/hooks/process.js +191 -0
  345. package/dist/rasp/hooks/process.js.map +1 -0
  346. package/dist/rasp/hooks/sinks.d.ts +54 -0
  347. package/dist/rasp/hooks/sinks.js +329 -0
  348. package/dist/rasp/hooks/sinks.js.map +1 -0
  349. package/dist/rasp/hooks/template.d.ts +21 -0
  350. package/dist/rasp/hooks/template.js +152 -0
  351. package/dist/rasp/hooks/template.js.map +1 -0
  352. package/dist/rasp/iast-rules.d.ts +82 -0
  353. package/dist/rasp/iast-rules.js +240 -0
  354. package/dist/rasp/iast-rules.js.map +1 -0
  355. package/dist/rasp/iast-scope.d.ts +29 -0
  356. package/dist/rasp/iast-scope.js +54 -0
  357. package/dist/rasp/iast-scope.js.map +1 -0
  358. package/dist/rasp/iast.d.ts +81 -0
  359. package/dist/rasp/iast.js +272 -0
  360. package/dist/rasp/iast.js.map +1 -0
  361. package/dist/rasp/index.d.ts +52 -0
  362. package/dist/rasp/index.js +280 -0
  363. package/dist/rasp/index.js.map +1 -0
  364. package/dist/rasp/lexers.d.ts +32 -0
  365. package/dist/rasp/lexers.js +444 -0
  366. package/dist/rasp/lexers.js.map +1 -0
  367. package/dist/rasp/middleware.d.ts +155 -0
  368. package/dist/rasp/middleware.js +568 -0
  369. package/dist/rasp/middleware.js.map +1 -0
  370. package/dist/rasp/model-output.d.ts +14 -0
  371. package/dist/rasp/model-output.js +107 -0
  372. package/dist/rasp/model-output.js.map +1 -0
  373. package/dist/rasp/normalize.d.ts +23 -0
  374. package/dist/rasp/normalize.js +140 -0
  375. package/dist/rasp/normalize.js.map +1 -0
  376. package/dist/rasp/reporter.d.ts +60 -0
  377. package/dist/rasp/reporter.js +230 -0
  378. package/dist/rasp/reporter.js.map +1 -0
  379. package/dist/rasp/rule-expr.d.ts +236 -0
  380. package/dist/rasp/rule-expr.js +1253 -0
  381. package/dist/rasp/rule-expr.js.map +1 -0
  382. package/dist/rasp/template.d.ts +53 -0
  383. package/dist/rasp/template.js +336 -0
  384. package/dist/rasp/template.js.map +1 -0
  385. package/dist/rasp/types.d.ts +110 -0
  386. package/dist/rasp/types.js +51 -0
  387. package/dist/rasp/types.js.map +1 -0
  388. package/dist/rasp/vpatch.d.ts +55 -0
  389. package/dist/rasp/vpatch.js +120 -0
  390. package/dist/rasp/vpatch.js.map +1 -0
  391. package/dist/register.js +52 -11
  392. package/dist/register.js.map +1 -1
  393. package/dist/semantic-convention.d.ts +2 -0
  394. package/dist/semantic-convention.js +5 -0
  395. package/dist/semantic-convention.js.map +1 -1
  396. package/dist/types.d.ts +77 -1
  397. package/dist/zero-code.d.ts +8 -0
  398. package/dist/zero-code.js +38 -0
  399. package/dist/zero-code.js.map +1 -0
  400. package/package.json +18 -2
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_ATTRIBUTE_LENGTH = exports.MAX_BODY_LENGTH = exports.DEFAULT_MAX_PER_SECOND = exports.DEFAULT_LOGGER_NAME = exports.DEFAULT_LOG_LEVEL = void 0;
4
+ exports.createLimiter = createLimiter;
5
+ exports.isOwnScope = isOwnScope;
6
+ exports.maskAttribute = maskAttribute;
7
+ exports.resolveCaptureLogs = resolveCaptureLogs;
8
+ exports.resolveLogLevel = resolveLogLevel;
9
+ exports.enableAppLogs = enableAppLogs;
10
+ exports.disableAppLogs = disableAppLogs;
11
+ exports.appLogsEnabled = appLogsEnabled;
12
+ exports.createLogger = createLogger;
13
+ /**
14
+ * Application logs to Shield360, when asked for.
15
+ *
16
+ * Shield360 ingests OTLP logs on the same per-API-key route as traces. The
17
+ * logger here writes OpenTelemetry log records through the SDK's own
18
+ * LoggerProvider (otel/events.ts), so they go to the same destination with the
19
+ * same Authorization header as the spans, and carry the trace and span ids of
20
+ * whatever span is active when they are written.
21
+ *
22
+ * Nothing is sent unless it is turned on: `captureLogs: true` in init(), or
23
+ * SHIELD360_CAPTURE_LOGS=true. Until then every logger is a no-op, so a
24
+ * library can create one at import time without deciding for the application.
25
+ *
26
+ * Every record, from Shield360.logger() or a bridge (log-bridges.ts), passes
27
+ * the same checks as the Python SDK's handler: the level; never the SDK's own
28
+ * scopes (`shield360`, `opentelemetry`); at most `maxPerSecond` records a
29
+ * second per logger (500 by default); masking by the contract every SDK
30
+ * shares (sdk/rasp/README.md, "Masking"): credential pairs, bearer
31
+ * credentials and opaque tokens in the body and attributes, the whole value of
32
+ * an attribute named like a credential, lists and maps item by item, readable
33
+ * identifiers kept (not `code.*` or `exception.type`); the body and stack
34
+ * trace cut to 16,384 characters after masking, other strings to 4,096; and
35
+ * the application call site as `code.function.name`,
36
+ * `code.file.path` and `code.line.number` unless captureCodeLocation is off.
37
+ */
38
+ const api_logs_1 = require("@opentelemetry/api-logs");
39
+ const masking_1 = require("../masking");
40
+ const code_location_1 = require("./code-location");
41
+ const utils_1 = require("./utils");
42
+ // The OpenTelemetry log data model's severity numbers and short names.
43
+ const SEVERITY = {
44
+ debug: api_logs_1.SeverityNumber.DEBUG,
45
+ info: api_logs_1.SeverityNumber.INFO,
46
+ warn: api_logs_1.SeverityNumber.WARN,
47
+ error: api_logs_1.SeverityNumber.ERROR,
48
+ fatal: api_logs_1.SeverityNumber.FATAL,
49
+ };
50
+ const SEVERITY_TEXT = {
51
+ debug: 'DEBUG',
52
+ info: 'INFO',
53
+ warn: 'WARN',
54
+ error: 'ERROR',
55
+ fatal: 'FATAL',
56
+ };
57
+ const LEVEL_ALIASES = { warning: 'warn', critical: 'fatal' };
58
+ exports.DEFAULT_LOG_LEVEL = 'info';
59
+ exports.DEFAULT_LOGGER_NAME = 'app';
60
+ exports.DEFAULT_MAX_PER_SECOND = 500;
61
+ exports.MAX_BODY_LENGTH = 16384;
62
+ exports.MAX_ATTRIBUTE_LENGTH = 4096;
63
+ const OWN_SCOPES = ['shield360', 'opentelemetry', '@opentelemetry'];
64
+ const LONG_ATTRIBUTES = new Set(['exception.stacktrace']);
65
+ const UNMASKED_ATTRIBUTES = new Set(['exception.type']);
66
+ const STACK_LIMIT = 64;
67
+ let provider = null;
68
+ let minSeverity = SEVERITY[exports.DEFAULT_LOG_LEVEL];
69
+ let locator = null;
70
+ /** A fixed-window limiter: true for at most `maxPerSecond` calls in each second. */
71
+ function createLimiter(maxPerSecond = exports.DEFAULT_MAX_PER_SECOND, now = Date.now) {
72
+ let windowStart = 0;
73
+ let count = 0;
74
+ return () => {
75
+ const t = now();
76
+ if (t - windowStart >= 1000) {
77
+ windowStart = t;
78
+ count = 0;
79
+ }
80
+ count += 1;
81
+ return count <= maxPerSecond;
82
+ };
83
+ }
84
+ /** Whether a scope is the SDK's own (`shield360`, `opentelemetry`, or below them). */
85
+ function isOwnScope(name) {
86
+ const lower = name.toLowerCase();
87
+ return OWN_SCOPES.some((own) => lower === own || lower.startsWith(own + '.') || lower.startsWith(own + '/'));
88
+ }
89
+ /**
90
+ * An attribute value as it may leave the process (sdk/rasp/README.md, Masking):
91
+ * the whole value under a credential name, strings masked then cut, lists and
92
+ * maps item by item; code.* and exception.type as they are.
93
+ */
94
+ function maskAttribute(key, value) {
95
+ if (key.startsWith('code.') || UNMASKED_ATTRIBUTES.has(key))
96
+ return value;
97
+ return (0, masking_1.maskValue)(key, value, LONG_ATTRIBUTES.has(key) ? exports.MAX_BODY_LENGTH : exports.MAX_ATTRIBUTE_LENGTH);
98
+ }
99
+ function captureStack() {
100
+ const previous = Error.stackTraceLimit;
101
+ try {
102
+ Error.stackTraceLimit = STACK_LIMIT;
103
+ return new Error().stack;
104
+ }
105
+ finally {
106
+ Error.stackTraceLimit = previous;
107
+ }
108
+ }
109
+ /** The option, else SHIELD360_CAPTURE_LOGS, else off. */
110
+ function resolveCaptureLogs(option) {
111
+ return option ?? (0, utils_1.parseBoolEnv)('SHIELD360_CAPTURE_LOGS') ?? false;
112
+ }
113
+ /** The option, else SHIELD360_LOG_LEVEL, else `info`. Unknown names fall back to `info`. */
114
+ function resolveLogLevel(option) {
115
+ const raw = (option ?? process.env.SHIELD360_LOG_LEVEL ?? exports.DEFAULT_LOG_LEVEL).trim().toLowerCase();
116
+ const name = LEVEL_ALIASES[raw] ?? raw;
117
+ return name in SEVERITY ? name : exports.DEFAULT_LOG_LEVEL;
118
+ }
119
+ /** Start sending: records at `level` and above go through `logProvider`. */
120
+ function enableAppLogs(logProvider, level = exports.DEFAULT_LOG_LEVEL, options = {}) {
121
+ provider = logProvider;
122
+ minSeverity = SEVERITY[level];
123
+ locator = options.captureCodeLocation === false ? null : new code_location_1.CodeLocationSpanProcessor({ codeRoot: options.codeRoot });
124
+ }
125
+ /** Stop sending; every logger goes back to a no-op. */
126
+ function disableAppLogs() {
127
+ provider = null;
128
+ minSeverity = SEVERITY[exports.DEFAULT_LOG_LEVEL];
129
+ locator = null;
130
+ }
131
+ function appLogsEnabled() {
132
+ return provider !== null;
133
+ }
134
+ function emit(scope, level, allow, message, attributes) {
135
+ const current = provider;
136
+ if (!current || SEVERITY[level] < minSeverity || isOwnScope(scope))
137
+ return;
138
+ try {
139
+ if (!allow())
140
+ return;
141
+ const given = { ...(attributes ?? {}) };
142
+ let body;
143
+ if (message instanceof Error) {
144
+ body = message.message;
145
+ given['exception.type'] = message.name;
146
+ given['exception.message'] = message.message;
147
+ if (message.stack)
148
+ given['exception.stacktrace'] = message.stack;
149
+ }
150
+ else {
151
+ body = String(message);
152
+ }
153
+ const where = locator;
154
+ if (where && given[code_location_1.ATTR_CODE_FILE_PATH] === undefined) {
155
+ const frame = where.findApplicationFrame(captureStack());
156
+ if (frame) {
157
+ if (frame.functionName)
158
+ given[code_location_1.ATTR_CODE_FUNCTION_NAME] = frame.functionName;
159
+ given[code_location_1.ATTR_CODE_FILE_PATH] = frame.filePath;
160
+ given[code_location_1.ATTR_CODE_LINE_NUMBER] = frame.lineNumber;
161
+ }
162
+ }
163
+ const attrs = {};
164
+ for (const [key, value] of Object.entries(given))
165
+ attrs[key] = maskAttribute(key, value);
166
+ // No context is passed: the logs SDK takes the active one, which links the
167
+ // record to the active span's trace and span ids.
168
+ current.getLogger(scope).emit({
169
+ severityNumber: SEVERITY[level],
170
+ severityText: SEVERITY_TEXT[level],
171
+ body: (0, masking_1.maskText)(body, exports.MAX_BODY_LENGTH),
172
+ attributes: attrs,
173
+ });
174
+ }
175
+ catch {
176
+ // Logging never throws into the application.
177
+ }
178
+ }
179
+ /**
180
+ * A logger whose records go to Shield360 when application logs are on
181
+ * (`captureLogs: true` or SHIELD360_CAPTURE_LOGS=true), and nowhere otherwise.
182
+ * `name` becomes the record's instrumentation scope; it defaults to `app`.
183
+ */
184
+ function createLogger(name = exports.DEFAULT_LOGGER_NAME, options = {}) {
185
+ const scope = name || exports.DEFAULT_LOGGER_NAME;
186
+ const allow = createLimiter(options.maxPerSecond);
187
+ return {
188
+ debug: (message, attributes) => emit(scope, 'debug', allow, message, attributes),
189
+ info: (message, attributes) => emit(scope, 'info', allow, message, attributes),
190
+ warn: (message, attributes) => emit(scope, 'warn', allow, message, attributes),
191
+ error: (message, attributes) => emit(scope, 'error', allow, message, attributes),
192
+ fatal: (message, attributes) => emit(scope, 'fatal', allow, message, attributes),
193
+ };
194
+ }
195
+ //# sourceMappingURL=app-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-logs.js","sourceRoot":"","sources":["../../src/otel/app-logs.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Build and VCS resource attributes (service.version, vcs.*), resolved once
3
3
  * at init. Per attribute, the first valid value wins from: explicit config
4
- * (init option, SHIELD360_* env), OTel env (OTEL_SERVICE_VERSION,
4
+ * (init option, SHIELD360_* env — SHIELD360_SERVICE_VERSION, then its alias
5
+ * SHIELD360_RELEASE, for service.version), OTel env (OTEL_SERVICE_VERSION,
5
6
  * OTEL_RESOURCE_ATTRIBUTES), then CI/platform env. CI values come from a
6
7
  * single provider and are never mixed across providers.
7
8
  * Values are never logged.
@@ -2,7 +2,8 @@
2
2
  /**
3
3
  * Build and VCS resource attributes (service.version, vcs.*), resolved once
4
4
  * at init. Per attribute, the first valid value wins from: explicit config
5
- * (init option, SHIELD360_* env), OTel env (OTEL_SERVICE_VERSION,
5
+ * (init option, SHIELD360_* env — SHIELD360_SERVICE_VERSION, then its alias
6
+ * SHIELD360_RELEASE, for service.version), OTel env (OTEL_SERVICE_VERSION,
6
7
  * OTEL_RESOURCE_ATTRIBUTES), then CI/platform env. CI values come from a
7
8
  * single provider and are never mixed across providers.
8
9
  * Values are never logged.
@@ -160,7 +161,7 @@ function resolveBuildAttributes(options = {}, env = process.env) {
160
161
  const ci = ciCandidates(env);
161
162
  const otel = parseOtelResourceAttributes(env.OTEL_RESOURCE_ATTRIBUTES);
162
163
  const resolved = {
163
- [exports.ATTR_SERVICE_VERSION]: firstValid(sanitiseText, options.serviceVersion, env.SHIELD360_SERVICE_VERSION, env.OTEL_SERVICE_VERSION, otel[exports.ATTR_SERVICE_VERSION]),
164
+ [exports.ATTR_SERVICE_VERSION]: firstValid(sanitiseText, options.serviceVersion, env.SHIELD360_SERVICE_VERSION, env.SHIELD360_RELEASE, env.OTEL_SERVICE_VERSION, otel[exports.ATTR_SERVICE_VERSION]),
164
165
  [exports.ATTR_VCS_REVISION]: firstValid(sanitiseRevision, env.SHIELD360_GIT_COMMIT, otel[exports.ATTR_VCS_REVISION], ci.revision),
165
166
  [exports.ATTR_VCS_REPOSITORY_URL]: firstValid(sanitiseRepositoryUrl, env.SHIELD360_GIT_REPOSITORY_URL, otel[exports.ATTR_VCS_REPOSITORY_URL], ci.repo),
166
167
  [exports.ATTR_VCS_REF_NAME]: firstValid(sanitiseText, env.SHIELD360_GIT_BRANCH, otel[exports.ATTR_VCS_REF_NAME], ci.ref),
@@ -1 +1 @@
1
- {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../src/otel/build-info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../src/otel/build-info.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export default class Events {
5
5
  static loggerProvider: LoggerProvider;
6
6
  static logger: ReturnType<typeof logs.getLogger>;
7
7
  static setup(options: SetupEventsOptions): import("@opentelemetry/api-logs").Logger | null;
8
+ static ensureProvider(options: SetupEventsOptions): LoggerProvider;
8
9
  private static buildLoggerProvider;
9
10
  private static createOTLPProcessor;
10
11
  static resetForTesting(): void;
@@ -9,18 +9,7 @@ class Events {
9
9
  static setup(options) {
10
10
  try {
11
11
  if (!EVENTS_SET) {
12
- const existingProvider = api_logs_1.logs.getLoggerProvider();
13
- const isSDKProvider = existingProvider &&
14
- typeof existingProvider.forceFlush === 'function' &&
15
- existingProvider.constructor.name !== 'NoopLoggerProvider';
16
- if (isSDKProvider) {
17
- this.loggerProvider = existingProvider;
18
- }
19
- else {
20
- this.loggerProvider = Events.buildLoggerProvider(options);
21
- api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
22
- }
23
- this.logger = this.loggerProvider.getLogger('shield360');
12
+ this.logger = this.ensureProvider(options).getLogger('shield360');
24
13
  EVENTS_SET = true;
25
14
  }
26
15
  return this.logger;
@@ -30,6 +19,24 @@ class Events {
30
19
  return null;
31
20
  }
32
21
  }
22
+ // SHIELD: the provider on its own, so application logs (app-logs.ts) can
23
+ // share it — same exporter, same destination — even with GenAI events off.
24
+ static ensureProvider(options) {
25
+ if (!this.loggerProvider) {
26
+ const existingProvider = api_logs_1.logs.getLoggerProvider();
27
+ const isSDKProvider = existingProvider &&
28
+ typeof existingProvider.forceFlush === 'function' &&
29
+ existingProvider.constructor.name !== 'NoopLoggerProvider';
30
+ if (isSDKProvider) {
31
+ this.loggerProvider = existingProvider;
32
+ }
33
+ else {
34
+ this.loggerProvider = Events.buildLoggerProvider(options);
35
+ api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
36
+ }
37
+ }
38
+ return this.loggerProvider;
39
+ }
33
40
  static buildLoggerProvider(options) {
34
41
  const exporterList = (0, utils_1.parseExporters)('OTEL_LOGS_EXPORTER');
35
42
  const processors = [];
@@ -47,7 +54,7 @@ class Events {
47
54
  if (options.otlpEndpoint) {
48
55
  processors.push(Events.createOTLPProcessor(options));
49
56
  }
50
- else {
57
+ else if (options.consoleFallback) {
51
58
  processors.push(new sdk_logs_1.SimpleLogRecordProcessor({ exporter: new sdk_logs_1.ConsoleLogRecordExporter() }));
52
59
  }
53
60
  }
@@ -68,6 +75,8 @@ class Events {
68
75
  }
69
76
  static resetForTesting() {
70
77
  EVENTS_SET = false;
78
+ this.loggerProvider = undefined;
79
+ this.logger = undefined;
71
80
  }
72
81
  }
73
82
  exports.default = Events;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/otel/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/otel/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * winston and pino, bridged without code changes when application logs are on.
3
+ *
4
+ * With `captureLogs: true` (or SHIELD360_CAPTURE_LOGS=true), init() hooks the
5
+ * loggers an app already uses, through OpenTelemetry's module hooks
6
+ * (@opentelemetry/instrumentation), the way OpenTelemetry's own winston and
7
+ * pino instrumentations do:
8
+ *
9
+ * winston every winston.createLogger() also gets the Shield360 transport
10
+ * (log-bridges.ts), built on the app's own winston.Transport. A
11
+ * winston already loaded before init() is patched in place.
12
+ * pino every pino() logger writes to its destination and to the
13
+ * Shield360 stream (pino.multistream), so output is unchanged.
14
+ * Loggers created before init() are not changed: create them after
15
+ * init(), or add Shield360.pinoStream() yourself.
16
+ *
17
+ * The hooks are inert while application logs are off, so turning them off
18
+ * later stops new loggers being bridged. Nothing here throws into the app: if
19
+ * a logger cannot be bridged it is created exactly as it would have been.
20
+ */
21
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';
22
+ declare const ORIGINAL: unique symbol;
23
+ type AnyFunction = ((...args: any[]) => any) & {
24
+ [ORIGINAL]?: AnyFunction;
25
+ [key: string | symbol]: any;
26
+ };
27
+ /** Makes winston.createLogger() add the Shield360 transport. Returns the module. */
28
+ export declare function patchWinston(winston: any): any;
29
+ export declare function unpatchWinston(winston: any): void;
30
+ /**
31
+ * pino's arguments with the Shield360 stream added, or null to call pino
32
+ * unchanged: pino(), pino(opts), pino(stream), pino(opts, stream),
33
+ * pino(opts, 'path'), and opts.transport.
34
+ */
35
+ export declare function bridgePinoArgs(pino: AnyFunction, args: unknown[]): unknown[] | null;
36
+ /** A pino function whose loggers also write to Shield360. Returns the module to use. */
37
+ export declare function patchPino(pino: any): any;
38
+ export declare class Shield360LogBridgeInstrumentation extends InstrumentationBase {
39
+ constructor();
40
+ protected init(): InstrumentationNodeModuleDefinition[];
41
+ }
42
+ /** Hooks winston and pino (once). Called by init() when application logs are on. */
43
+ export declare function enableLogBridges(): void;
44
+ export {};
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Shield360LogBridgeInstrumentation = void 0;
4
+ exports.patchWinston = patchWinston;
5
+ exports.unpatchWinston = unpatchWinston;
6
+ exports.bridgePinoArgs = bridgePinoArgs;
7
+ exports.patchPino = patchPino;
8
+ exports.enableLogBridges = enableLogBridges;
9
+ /**
10
+ * winston and pino, bridged without code changes when application logs are on.
11
+ *
12
+ * With `captureLogs: true` (or SHIELD360_CAPTURE_LOGS=true), init() hooks the
13
+ * loggers an app already uses, through OpenTelemetry's module hooks
14
+ * (@opentelemetry/instrumentation), the way OpenTelemetry's own winston and
15
+ * pino instrumentations do:
16
+ *
17
+ * winston every winston.createLogger() also gets the Shield360 transport
18
+ * (log-bridges.ts), built on the app's own winston.Transport. A
19
+ * winston already loaded before init() is patched in place.
20
+ * pino every pino() logger writes to its destination and to the
21
+ * Shield360 stream (pino.multistream), so output is unchanged.
22
+ * Loggers created before init() are not changed: create them after
23
+ * init(), or add Shield360.pinoStream() yourself.
24
+ *
25
+ * The hooks are inert while application logs are off, so turning them off
26
+ * later stops new loggers being bridged. Nothing here throws into the app: if
27
+ * a logger cannot be bridged it is created exactly as it would have been.
28
+ */
29
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
30
+ const constant_1 = require("../constant");
31
+ const app_logs_1 = require("./app-logs");
32
+ const log_bridges_1 = require("./log-bridges");
33
+ const ORIGINAL = Symbol.for('shield360.logBridge.original');
34
+ const BRIDGED = Symbol.for('shield360.logBridge.transport');
35
+ // ---------------------------------------------------------------- winston
36
+ /** Makes winston.createLogger() add the Shield360 transport. Returns the module. */
37
+ function patchWinston(winston) {
38
+ try {
39
+ if (!winston || typeof winston.createLogger !== 'function' || winston.createLogger[ORIGINAL])
40
+ return winston;
41
+ if (typeof winston.Transport !== 'function')
42
+ return winston;
43
+ const Shield360Transport = (0, log_bridges_1.winstonTransport)(winston.Transport);
44
+ const original = winston.createLogger;
45
+ const patched = function (...args) {
46
+ const logger = original.apply(this, args);
47
+ if (!(0, app_logs_1.appLogsEnabled)())
48
+ return logger;
49
+ try {
50
+ const transports = Array.isArray(logger?.transports) ? logger.transports : [];
51
+ if (!transports.some((t) => t?.[BRIDGED])) {
52
+ const transport = new Shield360Transport();
53
+ transport[BRIDGED] = true;
54
+ logger.add(transport);
55
+ }
56
+ }
57
+ catch {
58
+ // The logger works as created.
59
+ }
60
+ return logger;
61
+ };
62
+ patched[ORIGINAL] = original;
63
+ winston.createLogger = patched;
64
+ }
65
+ catch {
66
+ // Left unpatched.
67
+ }
68
+ return winston;
69
+ }
70
+ function unpatchWinston(winston) {
71
+ try {
72
+ const original = winston?.createLogger?.[ORIGINAL];
73
+ if (original)
74
+ winston.createLogger = original;
75
+ }
76
+ catch {
77
+ // Nothing to undo.
78
+ }
79
+ }
80
+ // ------------------------------------------------------------------- pino
81
+ function isStream(value) {
82
+ return !!value && typeof value.write === 'function';
83
+ }
84
+ /**
85
+ * pino's arguments with the Shield360 stream added, or null to call pino
86
+ * unchanged: pino(), pino(opts), pino(stream), pino(opts, stream),
87
+ * pino(opts, 'path'), and opts.transport.
88
+ */
89
+ function bridgePinoArgs(pino, args) {
90
+ let [opts, stream] = args;
91
+ if (args.length > 2)
92
+ return null;
93
+ if (stream === undefined && (isStream(opts) || typeof opts === 'string')) {
94
+ stream = opts;
95
+ opts = {};
96
+ }
97
+ if (opts === undefined || opts === null)
98
+ opts = {};
99
+ if (typeof opts !== 'object' || Array.isArray(opts))
100
+ return null;
101
+ let options = opts;
102
+ if (typeof pino.multistream !== 'function' || typeof pino.destination !== 'function')
103
+ return null;
104
+ if (options.transport) {
105
+ if (stream !== undefined)
106
+ return null; // pino refuses both; let it say so
107
+ if (typeof pino.transport !== 'function')
108
+ return null;
109
+ stream = pino.transport(options.transport);
110
+ options = { ...options };
111
+ delete options.transport;
112
+ }
113
+ if (stream === undefined)
114
+ stream = pino.destination((process.stdout && process.stdout.fd) || 1);
115
+ else if (typeof stream === 'string' || typeof stream === 'number')
116
+ stream = pino.destination(stream);
117
+ if (!isStream(stream))
118
+ return null;
119
+ // levelVal 0: both streams see every record the logger itself lets through.
120
+ const streams = pino.multistream([
121
+ { levelVal: 0, stream },
122
+ { levelVal: 0, stream: (0, log_bridges_1.pinoStream)() },
123
+ ]);
124
+ return [options, streams];
125
+ }
126
+ /** A pino function whose loggers also write to Shield360. Returns the module to use. */
127
+ function patchPino(pino) {
128
+ try {
129
+ if (typeof pino !== 'function' || pino[ORIGINAL])
130
+ return pino;
131
+ const original = pino;
132
+ const patched = function (...args) {
133
+ if ((0, app_logs_1.appLogsEnabled)()) {
134
+ let bridged = null;
135
+ try {
136
+ bridged = bridgePinoArgs(original, args);
137
+ }
138
+ catch {
139
+ bridged = null;
140
+ }
141
+ if (bridged)
142
+ return original.apply(this, bridged);
143
+ }
144
+ return original.apply(this, args);
145
+ };
146
+ Object.assign(patched, original);
147
+ patched[ORIGINAL] = original;
148
+ patched.default = patched;
149
+ patched.pino = patched;
150
+ return patched;
151
+ }
152
+ catch {
153
+ return pino;
154
+ }
155
+ }
156
+ // -------------------------------------------------------------- the hooks
157
+ class Shield360LogBridgeInstrumentation extends instrumentation_1.InstrumentationBase {
158
+ constructor() {
159
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-log-bridges`, '1.0.0', {});
160
+ }
161
+ init() {
162
+ return [
163
+ new instrumentation_1.InstrumentationNodeModuleDefinition('winston', ['>=3 <4'], (moduleExports) => patchWinston(moduleExports), (moduleExports) => unpatchWinston(moduleExports)),
164
+ new instrumentation_1.InstrumentationNodeModuleDefinition('pino', ['>=7 <11'], (moduleExports) => patchPino(moduleExports),
165
+ // The patched function is inert while application logs are off.
166
+ (moduleExports) => moduleExports),
167
+ ];
168
+ }
169
+ }
170
+ exports.Shield360LogBridgeInstrumentation = Shield360LogBridgeInstrumentation;
171
+ let instrumentation = null;
172
+ /** winston loaded before init(): patched in place, since its createLogger is read at call time. */
173
+ function patchLoadedWinston() {
174
+ try {
175
+ const cache = typeof require !== 'undefined' ? require.cache : undefined;
176
+ if (!cache)
177
+ return;
178
+ for (const [file, mod] of Object.entries(cache)) {
179
+ if (mod && /[\\/]node_modules[\\/]winston[\\/]lib[\\/]winston\.js$/.test(file))
180
+ patchWinston(mod.exports);
181
+ }
182
+ }
183
+ catch {
184
+ // Nothing loaded, or nothing to patch.
185
+ }
186
+ }
187
+ /** Hooks winston and pino (once). Called by init() when application logs are on. */
188
+ function enableLogBridges() {
189
+ try {
190
+ if (!instrumentation)
191
+ instrumentation = new Shield360LogBridgeInstrumentation();
192
+ else
193
+ instrumentation.enable();
194
+ patchLoadedWinston();
195
+ }
196
+ catch {
197
+ // Application logs still work through Shield360.logger() and the explicit bridges.
198
+ }
199
+ }
200
+ //# sourceMappingURL=log-auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-auto.js","sourceRoot":"","sources":["../../src/otel/log-auto.ts"],"names":[],"mappings":"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"}