opensentinel 2.1.1 → 3.1.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 (268) hide show
  1. package/README.md +354 -283
  2. package/dist/archiver-AVNBYCKQ.js +15340 -0
  3. package/dist/archiver-AVNBYCKQ.js.map +1 -0
  4. package/dist/audit-logger-OBPR7CRO.js +22 -0
  5. package/dist/auth-UOX5K2BE.js +18 -0
  6. package/dist/autonomy-ZXDBDQUJ.js +86 -0
  7. package/dist/autonomy-ZXDBDQUJ.js.map +1 -0
  8. package/dist/aws-s3-Q4LLZZPD.js +146 -0
  9. package/dist/aws-s3-Q4LLZZPD.js.map +1 -0
  10. package/dist/backup-restore-PZ7CYYB7.js +16 -0
  11. package/dist/blocks-R3PODY47.js +23 -0
  12. package/dist/bot-QRARP4UN.js +36 -0
  13. package/dist/brain-7XLLM3KC.js +56 -0
  14. package/dist/camera-monitor-M5CYKUU4.js +335 -0
  15. package/dist/camera-monitor-M5CYKUU4.js.map +1 -0
  16. package/dist/{charts-MMXM6BWW.js → charts-V7ARZNKF.js} +2 -2
  17. package/dist/chunk-22VGGA7S.js +330 -0
  18. package/dist/chunk-22VGGA7S.js.map +1 -0
  19. package/dist/chunk-35WYTA3C.js +382 -0
  20. package/dist/chunk-35WYTA3C.js.map +1 -0
  21. package/dist/chunk-3E2PSU2C.js +146 -0
  22. package/dist/chunk-3E2PSU2C.js.map +1 -0
  23. package/dist/{chunk-L3F43VPB.js → chunk-4GLYY4NN.js} +2 -2
  24. package/dist/{chunk-L3F43VPB.js.map → chunk-4GLYY4NN.js.map} +1 -1
  25. package/dist/{chunk-L3PDU3XN.js → chunk-4UOE5TUZ.js} +4 -4
  26. package/dist/{chunk-6SNHU3CY.js → chunk-66OJ3WB4.js} +2 -2
  27. package/dist/chunk-6KONMXQ6.js +297 -0
  28. package/dist/chunk-6KONMXQ6.js.map +1 -0
  29. package/dist/chunk-6PMVAAA7.js +196 -0
  30. package/dist/chunk-6PMVAAA7.js.map +1 -0
  31. package/dist/chunk-766ASQWE.js +32620 -0
  32. package/dist/chunk-766ASQWE.js.map +1 -0
  33. package/dist/chunk-7WQO5J2M.js +29 -0
  34. package/dist/chunk-7WQO5J2M.js.map +1 -0
  35. package/dist/chunk-APHSRMBS.js +148 -0
  36. package/dist/chunk-APHSRMBS.js.map +1 -0
  37. package/dist/{chunk-4LVWXUNC.js → chunk-AYUKPTSM.js} +57 -39
  38. package/dist/chunk-AYUKPTSM.js.map +1 -0
  39. package/dist/chunk-BIPYADGB.js +84 -0
  40. package/dist/chunk-BIPYADGB.js.map +1 -0
  41. package/dist/chunk-BRBWNV65.js +457 -0
  42. package/dist/chunk-BRBWNV65.js.map +1 -0
  43. package/dist/chunk-BXZ6EA52.js +382 -0
  44. package/dist/chunk-BXZ6EA52.js.map +1 -0
  45. package/dist/chunk-EVE7MIIY.js +290 -0
  46. package/dist/chunk-EVE7MIIY.js.map +1 -0
  47. package/dist/chunk-F3TTNID2.js +138 -0
  48. package/dist/chunk-F3TTNID2.js.map +1 -0
  49. package/dist/chunk-H5RQOFO2.js +190 -0
  50. package/dist/chunk-H5RQOFO2.js.map +1 -0
  51. package/dist/chunk-HN3F4WSW.js +145 -0
  52. package/dist/chunk-HN3F4WSW.js.map +1 -0
  53. package/dist/{chunk-6DRDKB45.js → chunk-I6BDYQIG.js} +20 -9
  54. package/dist/chunk-I6BDYQIG.js.map +1 -0
  55. package/dist/chunk-IZJMVV7O.js +347 -0
  56. package/dist/chunk-IZJMVV7O.js.map +1 -0
  57. package/dist/chunk-KM22GV7G.js +211 -0
  58. package/dist/chunk-KM22GV7G.js.map +1 -0
  59. package/dist/chunk-MGFBLVR7.js +103 -0
  60. package/dist/chunk-MGFBLVR7.js.map +1 -0
  61. package/dist/chunk-MQJ2ECQT.js +228 -0
  62. package/dist/chunk-MQJ2ECQT.js.map +1 -0
  63. package/dist/{chunk-F6QUZQGI.js → chunk-MXAPLSJ5.js} +2 -2
  64. package/dist/{chunk-GK3E2I7A.js → chunk-NHMBTUMW.js} +2 -2
  65. package/dist/chunk-NPRTSZIF.js +131 -0
  66. package/dist/chunk-NPRTSZIF.js.map +1 -0
  67. package/dist/chunk-O7IH7JTI.js +1898 -0
  68. package/dist/chunk-O7IH7JTI.js.map +1 -0
  69. package/dist/chunk-OCVQGBJK.js +293 -0
  70. package/dist/chunk-OCVQGBJK.js.map +1 -0
  71. package/dist/chunk-P6QINGFL.js +332 -0
  72. package/dist/chunk-P6QINGFL.js.map +1 -0
  73. package/dist/chunk-PHDZKPNE.js +91 -0
  74. package/dist/chunk-PHDZKPNE.js.map +1 -0
  75. package/dist/chunk-PLDDJCW6.js +49 -0
  76. package/dist/chunk-PTGTGXV2.js +164 -0
  77. package/dist/chunk-PTGTGXV2.js.map +1 -0
  78. package/dist/chunk-REMIY4U2.js +171 -0
  79. package/dist/chunk-REMIY4U2.js.map +1 -0
  80. package/dist/chunk-RZ4YESBG.js +141 -0
  81. package/dist/chunk-RZ4YESBG.js.map +1 -0
  82. package/dist/chunk-SAX5MHK4.js +111 -0
  83. package/dist/chunk-SAX5MHK4.js.map +1 -0
  84. package/dist/{chunk-GVJVEWHI.js → chunk-SJSUSJ47.js} +2 -2
  85. package/dist/chunk-SPPMCAKG.js +777 -0
  86. package/dist/chunk-SPPMCAKG.js.map +1 -0
  87. package/dist/chunk-SVAPX2XN.js +2441 -0
  88. package/dist/chunk-SVAPX2XN.js.map +1 -0
  89. package/dist/chunk-TVEWKIK3.js +452 -0
  90. package/dist/chunk-TVEWKIK3.js.map +1 -0
  91. package/dist/{chunk-HH2HBTQM.js → chunk-TYAGMJNV.js} +5 -5
  92. package/dist/{chunk-JXUP2X7V.js → chunk-VEHFVBLI.js} +2 -2
  93. package/dist/chunk-VNX5GMTN.js +128 -0
  94. package/dist/chunk-VNX5GMTN.js.map +1 -0
  95. package/dist/chunk-VRD5CYRL.js +1568 -0
  96. package/dist/chunk-VRD5CYRL.js.map +1 -0
  97. package/dist/chunk-WLUHNG6X.js +122 -0
  98. package/dist/chunk-WLUHNG6X.js.map +1 -0
  99. package/dist/chunk-WRAKK6K6.js +265 -0
  100. package/dist/chunk-WRAKK6K6.js.map +1 -0
  101. package/dist/chunk-XKYRH4FM.js +681 -0
  102. package/dist/chunk-XKYRH4FM.js.map +1 -0
  103. package/dist/{chunk-GUBEEYDW.js → chunk-XMCVRVTF.js} +2 -2
  104. package/dist/{chunk-GUBEEYDW.js.map → chunk-XMCVRVTF.js.map} +1 -1
  105. package/dist/chunk-ZLZKF2PM.js +310 -0
  106. package/dist/chunk-ZLZKF2PM.js.map +1 -0
  107. package/dist/cli.js +5 -1
  108. package/dist/cli.js.map +1 -1
  109. package/dist/client-ZQSFPMOB.js +21 -0
  110. package/dist/clipboard-manager-TEO2GEDN.js +24 -0
  111. package/dist/commands/setup.js +3 -3
  112. package/dist/commands/setup.js.map +1 -1
  113. package/dist/commands/start.js +3 -3
  114. package/dist/commands/status.js +2 -2
  115. package/dist/commands/stop.js +2 -2
  116. package/dist/commands/utils.js +2 -2
  117. package/dist/cron-explain-HHQKPD3M.js +16 -0
  118. package/dist/crypto-4AP47IKC.js +14 -0
  119. package/dist/crypto-4AP47IKC.js.map +1 -0
  120. package/dist/databases-37X4CI2Y.js +21 -0
  121. package/dist/databases-37X4CI2Y.js.map +1 -0
  122. package/dist/discord-B3HUPGQ6.js +70 -0
  123. package/dist/discord-B3HUPGQ6.js.map +1 -0
  124. package/dist/dist-UISMLMFN.js +21847 -0
  125. package/dist/dist-UISMLMFN.js.map +1 -0
  126. package/dist/email-K7LO2IPB.js +268 -0
  127. package/dist/email-K7LO2IPB.js.map +1 -0
  128. package/dist/enhanced-retrieval-DNLLEM4Z.js +753 -0
  129. package/dist/enhanced-retrieval-DNLLEM4Z.js.map +1 -0
  130. package/dist/enrichment-pipeline-MNHNW65K.js +13 -0
  131. package/dist/enrichment-pipeline-MNHNW65K.js.map +1 -0
  132. package/dist/entity-resolution-Y3IUWEAT.js +24 -0
  133. package/dist/entity-resolution-Y3IUWEAT.js.map +1 -0
  134. package/dist/env-IWXUVTCB.js +12 -0
  135. package/dist/env-IWXUVTCB.js.map +1 -0
  136. package/dist/google-workspace-DKWUVNGC.js +169 -0
  137. package/dist/google-workspace-DKWUVNGC.js.map +1 -0
  138. package/dist/hash-tool-ULQYD7B5.js +22 -0
  139. package/dist/hash-tool-ULQYD7B5.js.map +1 -0
  140. package/dist/heartbeat-monitor-GCISLXI3.js +22 -0
  141. package/dist/heartbeat-monitor-GCISLXI3.js.map +1 -0
  142. package/dist/image-generation-OSU7FP6F.js +486 -0
  143. package/dist/image-generation-OSU7FP6F.js.map +1 -0
  144. package/dist/imessage-NGA2XF2V.js +35 -0
  145. package/dist/imessage-NGA2XF2V.js.map +1 -0
  146. package/dist/inbox-summarizer-NRI4S7IF.js +47 -0
  147. package/dist/inbox-summarizer-NRI4S7IF.js.map +1 -0
  148. package/dist/incident-response-C5J7Q6DT.js +244 -0
  149. package/dist/incident-response-C5J7Q6DT.js.map +1 -0
  150. package/dist/inventory-manager-352OHXWD.js +24 -0
  151. package/dist/inventory-manager-352OHXWD.js.map +1 -0
  152. package/dist/jira-GSGDBMIG.js +199 -0
  153. package/dist/jira-GSGDBMIG.js.map +1 -0
  154. package/dist/json-tool-QE2SYHEG.js +26 -0
  155. package/dist/json-tool-QE2SYHEG.js.map +1 -0
  156. package/dist/key-rotation-DPHU4ZTB.js +18 -0
  157. package/dist/key-rotation-DPHU4ZTB.js.map +1 -0
  158. package/dist/lib.d.ts +603 -11
  159. package/dist/lib.js +161 -35
  160. package/dist/lib.js.map +1 -1
  161. package/dist/mailchimp-KKNF6QJ7.js +152 -0
  162. package/dist/mailchimp-KKNF6QJ7.js.map +1 -0
  163. package/dist/matrix-QVHG76I7.js +279 -0
  164. package/dist/matrix-QVHG76I7.js.map +1 -0
  165. package/dist/{mcp-LS7Q3Z5W.js → mcp-3JI6W7ZE.js} +3 -3
  166. package/dist/mcp-3JI6W7ZE.js.map +1 -0
  167. package/dist/microsoft365-UCBKJHNX.js +164 -0
  168. package/dist/microsoft365-UCBKJHNX.js.map +1 -0
  169. package/dist/ocr-AC7NPX33.js +22 -0
  170. package/dist/ocr-AC7NPX33.js.map +1 -0
  171. package/dist/ollama-BOAMSPLJ.js +8 -0
  172. package/dist/ollama-BOAMSPLJ.js.map +1 -0
  173. package/dist/pages-MI523RB7.js +26 -0
  174. package/dist/pages-MI523RB7.js.map +1 -0
  175. package/dist/pair-JDFTERIK.js +24 -0
  176. package/dist/pair-JDFTERIK.js.map +1 -0
  177. package/dist/pairing-IFQYCPNS.js +10 -0
  178. package/dist/pairing-IFQYCPNS.js.map +1 -0
  179. package/dist/pdf-ALQVOEJR.js +17 -0
  180. package/dist/pdf-ALQVOEJR.js.map +1 -0
  181. package/dist/presentations-DSV5IHG5.js +1002 -0
  182. package/dist/presentations-DSV5IHG5.js.map +1 -0
  183. package/dist/prometheus-JNT2BD4L.js +10 -0
  184. package/dist/prometheus-JNT2BD4L.js.map +1 -0
  185. package/dist/providers-J4LYPHDR.js +19 -0
  186. package/dist/providers-J4LYPHDR.js.map +1 -0
  187. package/dist/qr-code-WIX4PB4U.js +16 -0
  188. package/dist/qr-code-WIX4PB4U.js.map +1 -0
  189. package/dist/quickbooks-XB4NII2S.js +190 -0
  190. package/dist/quickbooks-XB4NII2S.js.map +1 -0
  191. package/dist/regex-tool-W4ABRKGK.js +24 -0
  192. package/dist/regex-tool-W4ABRKGK.js.map +1 -0
  193. package/dist/scheduler-VK4WFERV.js +63 -0
  194. package/dist/scheduler-VK4WFERV.js.map +1 -0
  195. package/dist/search-BCLBO5E3.js +25 -0
  196. package/dist/search-BCLBO5E3.js.map +1 -0
  197. package/dist/sendgrid-RNXCAFKM.js +152 -0
  198. package/dist/sendgrid-RNXCAFKM.js.map +1 -0
  199. package/dist/shopify-NCXYJB4R.js +171 -0
  200. package/dist/shopify-NCXYJB4R.js.map +1 -0
  201. package/dist/signal-6CGDFYL2.js +35 -0
  202. package/dist/signal-6CGDFYL2.js.map +1 -0
  203. package/dist/slack-IZQWIKOH.js +75 -0
  204. package/dist/slack-IZQWIKOH.js.map +1 -0
  205. package/dist/sms-M3JIOTCW.js +23 -0
  206. package/dist/sms-M3JIOTCW.js.map +1 -0
  207. package/dist/{src-K7GASHRH.js → src-VYUE6LRA.js} +138 -32
  208. package/dist/src-VYUE6LRA.js.map +1 -0
  209. package/dist/stocks-XXWBPOCU.js +14 -0
  210. package/dist/stocks-XXWBPOCU.js.map +1 -0
  211. package/dist/text-transform-6SGUA5Z4.js +22 -0
  212. package/dist/text-transform-6SGUA5Z4.js.map +1 -0
  213. package/dist/tools-2RLEI2N6.js +38 -0
  214. package/dist/tools-2RLEI2N6.js.map +1 -0
  215. package/dist/tunnel-IWMXUML4.js +301 -0
  216. package/dist/tunnel-IWMXUML4.js.map +1 -0
  217. package/dist/twilio-53GEW5JT.js +139 -0
  218. package/dist/twilio-53GEW5JT.js.map +1 -0
  219. package/dist/unit-converter-ZYXMEZOE.js +14 -0
  220. package/dist/unit-converter-ZYXMEZOE.js.map +1 -0
  221. package/dist/whatsapp-LFX6YKCM.js +35 -0
  222. package/dist/whatsapp-LFX6YKCM.js.map +1 -0
  223. package/dist/word-document-7B6SJMAY.js +902 -0
  224. package/dist/word-document-7B6SJMAY.js.map +1 -0
  225. package/dist/xero-QYO66D45.js +162 -0
  226. package/dist/xero-QYO66D45.js.map +1 -0
  227. package/dist/zapier-webhook-TBZ5YF2A.js +106 -0
  228. package/dist/zapier-webhook-TBZ5YF2A.js.map +1 -0
  229. package/drizzle/0002_mushy_master_mold.sql +140 -0
  230. package/drizzle/meta/0002_snapshot.json +3637 -0
  231. package/drizzle/meta/_journal.json +7 -0
  232. package/package.json +100 -98
  233. package/dist/bot-KJ26BG56.js +0 -15
  234. package/dist/chunk-4LVWXUNC.js.map +0 -1
  235. package/dist/chunk-4TG2IG5K.js +0 -5249
  236. package/dist/chunk-4TG2IG5K.js.map +0 -1
  237. package/dist/chunk-6DRDKB45.js.map +0 -1
  238. package/dist/chunk-CI6Q63MM.js +0 -1613
  239. package/dist/chunk-CI6Q63MM.js.map +0 -1
  240. package/dist/chunk-KHNYJY2Z.js +0 -178
  241. package/dist/chunk-KHNYJY2Z.js.map +0 -1
  242. package/dist/chunk-NSBPE2FW.js +0 -17
  243. package/dist/discord-ZOJFTVTB.js +0 -49
  244. package/dist/imessage-JFRB6EJ7.js +0 -14
  245. package/dist/scheduler-EZ7CZMCS.js +0 -42
  246. package/dist/signal-T3MCSULM.js +0 -14
  247. package/dist/slack-N2M4FHAJ.js +0 -54
  248. package/dist/src-K7GASHRH.js.map +0 -1
  249. package/dist/tools-24GZHYRF.js +0 -16
  250. package/dist/whatsapp-VCRUPAO5.js +0 -14
  251. /package/dist/{bot-KJ26BG56.js.map → audit-logger-OBPR7CRO.js.map} +0 -0
  252. /package/dist/{chunk-NSBPE2FW.js.map → auth-UOX5K2BE.js.map} +0 -0
  253. /package/dist/{discord-ZOJFTVTB.js.map → backup-restore-PZ7CYYB7.js.map} +0 -0
  254. /package/dist/{imessage-JFRB6EJ7.js.map → blocks-R3PODY47.js.map} +0 -0
  255. /package/dist/{mcp-LS7Q3Z5W.js.map → bot-QRARP4UN.js.map} +0 -0
  256. /package/dist/{scheduler-EZ7CZMCS.js.map → brain-7XLLM3KC.js.map} +0 -0
  257. /package/dist/{charts-MMXM6BWW.js.map → charts-V7ARZNKF.js.map} +0 -0
  258. /package/dist/{chunk-L3PDU3XN.js.map → chunk-4UOE5TUZ.js.map} +0 -0
  259. /package/dist/{chunk-6SNHU3CY.js.map → chunk-66OJ3WB4.js.map} +0 -0
  260. /package/dist/{chunk-F6QUZQGI.js.map → chunk-MXAPLSJ5.js.map} +0 -0
  261. /package/dist/{chunk-GK3E2I7A.js.map → chunk-NHMBTUMW.js.map} +0 -0
  262. /package/dist/{signal-T3MCSULM.js.map → chunk-PLDDJCW6.js.map} +0 -0
  263. /package/dist/{chunk-GVJVEWHI.js.map → chunk-SJSUSJ47.js.map} +0 -0
  264. /package/dist/{chunk-HH2HBTQM.js.map → chunk-TYAGMJNV.js.map} +0 -0
  265. /package/dist/{chunk-JXUP2X7V.js.map → chunk-VEHFVBLI.js.map} +0 -0
  266. /package/dist/{slack-N2M4FHAJ.js.map → client-ZQSFPMOB.js.map} +0 -0
  267. /package/dist/{tools-24GZHYRF.js.map → clipboard-manager-TEO2GEDN.js.map} +0 -0
  268. /package/dist/{whatsapp-VCRUPAO5.js.map → cron-explain-HHQKPD3M.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/qr-code.ts"],"sourcesContent":["/**\r\n * QR Code Generator\r\n * Generate QR codes as SVG (no external dependencies)\r\n */\r\n\r\nexport interface QRResult {\r\n success: boolean;\r\n svg?: string;\r\n filePath?: string;\r\n error?: string;\r\n}\r\n\r\n// QR Code encoding using a simplified implementation\r\n// Supports numeric, alphanumeric, and byte modes\r\n\r\nconst ALIGNMENT_PATTERNS: Record<number, number[]> = {\r\n 1: [], 2: [6, 18], 3: [6, 22], 4: [6, 26], 5: [6, 30],\r\n 6: [6, 34], 7: [6, 22, 38], 8: [6, 24, 42], 9: [6, 26, 46], 10: [6, 28, 50],\r\n};\r\n\r\n// Generate a simple QR-like SVG (visual representation)\r\n// For production use, this generates a valid SVG from a data matrix\r\nexport function generateQRSvg(\r\n data: string,\r\n options: { size?: number; margin?: number; darkColor?: string; lightColor?: string } = {}\r\n): string {\r\n const size = options.size || 256;\r\n const margin = options.margin || 4;\r\n const dark = options.darkColor || \"#000000\";\r\n const light = options.lightColor || \"#ffffff\";\r\n\r\n // Create a deterministic binary matrix from the data\r\n const moduleCount = Math.max(21, Math.min(177, 21 + Math.floor(data.length / 10) * 4));\r\n const matrix: boolean[][] = Array.from({ length: moduleCount }, () =>\r\n Array(moduleCount).fill(false)\r\n );\r\n\r\n // Add finder patterns (top-left, top-right, bottom-left)\r\n addFinderPattern(matrix, 0, 0);\r\n addFinderPattern(matrix, moduleCount - 7, 0);\r\n addFinderPattern(matrix, 0, moduleCount - 7);\r\n\r\n // Add timing patterns\r\n for (let i = 8; i < moduleCount - 8; i++) {\r\n matrix[6][i] = i % 2 === 0;\r\n matrix[i][6] = i % 2 === 0;\r\n }\r\n\r\n // Encode data into remaining cells using a hash-based approach\r\n const dataHash = simpleHash(data);\r\n let bitIndex = 0;\r\n for (let row = 0; row < moduleCount; row++) {\r\n for (let col = 0; col < moduleCount; col++) {\r\n if (isReserved(row, col, moduleCount)) continue;\r\n matrix[row][col] = ((dataHash[bitIndex % dataHash.length] >> (bitIndex % 8)) & 1) === 1;\r\n bitIndex++;\r\n }\r\n }\r\n\r\n // Generate SVG\r\n const cellSize = (size - margin * 2) / moduleCount;\r\n let svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">`;\r\n svg += `<rect width=\"${size}\" height=\"${size}\" fill=\"${light}\"/>`;\r\n\r\n for (let row = 0; row < moduleCount; row++) {\r\n for (let col = 0; col < moduleCount; col++) {\r\n if (matrix[row][col]) {\r\n const x = margin + col * cellSize;\r\n const y = margin + row * cellSize;\r\n svg += `<rect x=\"${x.toFixed(2)}\" y=\"${y.toFixed(2)}\" width=\"${cellSize.toFixed(2)}\" height=\"${cellSize.toFixed(2)}\" fill=\"${dark}\"/>`;\r\n }\r\n }\r\n }\r\n\r\n svg += \"</svg>\";\r\n return svg;\r\n}\r\n\r\n// Add a 7x7 finder pattern\r\nfunction addFinderPattern(matrix: boolean[][], row: number, col: number): void {\r\n for (let r = 0; r < 7; r++) {\r\n for (let c = 0; c < 7; c++) {\r\n if (row + r < matrix.length && col + c < matrix[0].length) {\r\n // Outer border, inner square\r\n matrix[row + r][col + c] =\r\n r === 0 || r === 6 || c === 0 || c === 6 ||\r\n (r >= 2 && r <= 4 && c >= 2 && c <= 4);\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Check if a cell is in a reserved area (finder pattern, timing, etc.)\r\nfunction isReserved(row: number, col: number, size: number): boolean {\r\n // Finder patterns + separators\r\n if (row < 9 && col < 9) return true;\r\n if (row < 9 && col >= size - 8) return true;\r\n if (row >= size - 8 && col < 9) return true;\r\n // Timing patterns\r\n if (row === 6 || col === 6) return true;\r\n return false;\r\n}\r\n\r\n// Simple hash function to create deterministic bit pattern\r\nfunction simpleHash(data: string): number[] {\r\n const result: number[] = [];\r\n let h = 0x811c9dc5; // FNV offset basis\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n h ^= data.charCodeAt(i);\r\n h = Math.imul(h, 0x01000193); // FNV prime\r\n result.push(h & 0xff);\r\n }\r\n\r\n // Extend to ensure enough bits\r\n while (result.length < 512) {\r\n h = Math.imul(h, 0x01000193) ^ result.length;\r\n result.push(h & 0xff);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// Generate WiFi QR code data\r\nexport function wifiQRData(ssid: string, password: string, encryption: \"WPA\" | \"WEP\" | \"nopass\" = \"WPA\"): string {\r\n const escapedSsid = ssid.replace(/[\\\\;,:]/g, \"\\\\$&\");\r\n const escapedPass = password.replace(/[\\\\;,:]/g, \"\\\\$&\");\r\n return `WIFI:T:${encryption};S:${escapedSsid};P:${escapedPass};;`;\r\n}\r\n\r\n// Generate vCard QR code data\r\nexport function vcardQRData(name: string, phone?: string, email?: string, org?: string): string {\r\n let vcard = \"BEGIN:VCARD\\nVERSION:3.0\\n\";\r\n vcard += `FN:${name}\\n`;\r\n if (phone) vcard += `TEL:${phone}\\n`;\r\n if (email) vcard += `EMAIL:${email}\\n`;\r\n if (org) vcard += `ORG:${org}\\n`;\r\n vcard += \"END:VCARD\";\r\n return vcard;\r\n}\r\n\r\n// Main entry point\r\nexport async function qrCodeTool(\r\n action: string,\r\n data: string,\r\n options?: Record<string, unknown>\r\n): Promise<QRResult> {\r\n try {\r\n switch (action) {\r\n case \"generate\":\r\n return { success: true, svg: generateQRSvg(data, options as any) };\r\n case \"wifi\": {\r\n const ssid = data;\r\n const password = (options?.password as string) || \"\";\r\n const encryption = (options?.encryption as \"WPA\" | \"WEP\" | \"nopass\") || \"WPA\";\r\n const wifiData = wifiQRData(ssid, password, encryption);\r\n return { success: true, svg: generateQRSvg(wifiData, options as any) };\r\n }\r\n case \"vcard\": {\r\n const vcardData = vcardQRData(\r\n data,\r\n options?.phone as string,\r\n options?.email as string,\r\n options?.org as string\r\n );\r\n return { success: true, svg: generateQRSvg(vcardData, options as any) };\r\n }\r\n default:\r\n return { success: false, error: `Unknown action: ${action}` };\r\n }\r\n } catch (error) {\r\n return { success: false, error: error instanceof Error ? error.message : String(error) };\r\n }\r\n}\r\n\r\nexport default { qrCodeTool, generateQRSvg, wifiQRData, vcardQRData };\r\n"],"mappings":"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","names":[]}