@xylabs/aries 0.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 (421) hide show
  1. package/README.md +693 -0
  2. package/dist/actions/audit/auditPaths.mjs +22 -0
  3. package/dist/actions/audit/auditPaths.mjs.map +1 -0
  4. package/dist/actions/audit/index.mjs +739 -0
  5. package/dist/actions/audit/index.mjs.map +1 -0
  6. package/dist/actions/audit/installPlugin.mjs +298 -0
  7. package/dist/actions/audit/installPlugin.mjs.map +1 -0
  8. package/dist/actions/audit/listSessions.mjs +93 -0
  9. package/dist/actions/audit/listSessions.mjs.map +1 -0
  10. package/dist/actions/audit/openAuditDir.mjs +44 -0
  11. package/dist/actions/audit/openAuditDir.mjs.map +1 -0
  12. package/dist/actions/audit/searchAudit.mjs +77 -0
  13. package/dist/actions/audit/searchAudit.mjs.map +1 -0
  14. package/dist/actions/audit/showAiMeta.mjs +105 -0
  15. package/dist/actions/audit/showAiMeta.mjs.map +1 -0
  16. package/dist/actions/audit/showSession.mjs +105 -0
  17. package/dist/actions/audit/showSession.mjs.map +1 -0
  18. package/dist/actions/audit/statusAudit.mjs +98 -0
  19. package/dist/actions/audit/statusAudit.mjs.map +1 -0
  20. package/dist/actions/clamp/clampAudit.mjs +53 -0
  21. package/dist/actions/clamp/clampAudit.mjs.map +1 -0
  22. package/dist/actions/clamp/index.mjs +2258 -0
  23. package/dist/actions/clamp/index.mjs.map +1 -0
  24. package/dist/actions/clamp/ipcServer.mjs +55 -0
  25. package/dist/actions/clamp/ipcServer.mjs.map +1 -0
  26. package/dist/actions/clamp/policyManagement.mjs +144 -0
  27. package/dist/actions/clamp/policyManagement.mjs.map +1 -0
  28. package/dist/actions/clamp/promptUser.mjs +91 -0
  29. package/dist/actions/clamp/promptUser.mjs.map +1 -0
  30. package/dist/actions/clamp/runClamped.mjs +2107 -0
  31. package/dist/actions/clamp/runClamped.mjs.map +1 -0
  32. package/dist/actions/clamp/sandboxExec.mjs +1612 -0
  33. package/dist/actions/clamp/sandboxExec.mjs.map +1 -0
  34. package/dist/actions/clamp/shellEnvSetup.mjs +59 -0
  35. package/dist/actions/clamp/shellEnvSetup.mjs.map +1 -0
  36. package/dist/actions/clamp/shimGenerator.mjs +68 -0
  37. package/dist/actions/clamp/shimGenerator.mjs.map +1 -0
  38. package/dist/actions/clamp/terminalRenderer.mjs +145 -0
  39. package/dist/actions/clamp/terminalRenderer.mjs.map +1 -0
  40. package/dist/actions/datalake/audit/auditLog.mjs +191 -0
  41. package/dist/actions/datalake/audit/auditLog.mjs.map +1 -0
  42. package/dist/actions/datalake/createDatalake.mjs +127 -0
  43. package/dist/actions/datalake/createDatalake.mjs.map +1 -0
  44. package/dist/actions/datalake/describeDatalake.mjs +159 -0
  45. package/dist/actions/datalake/describeDatalake.mjs.map +1 -0
  46. package/dist/actions/datalake/destroyDatalake.mjs +34 -0
  47. package/dist/actions/datalake/destroyDatalake.mjs.map +1 -0
  48. package/dist/actions/datalake/dev/downDevServer.mjs +102 -0
  49. package/dist/actions/datalake/dev/downDevServer.mjs.map +1 -0
  50. package/dist/actions/datalake/dev/index.mjs +369 -0
  51. package/dist/actions/datalake/dev/index.mjs.map +1 -0
  52. package/dist/actions/datalake/dev/logsDevServer.mjs +44 -0
  53. package/dist/actions/datalake/dev/logsDevServer.mjs.map +1 -0
  54. package/dist/actions/datalake/dev/paths.mjs +25 -0
  55. package/dist/actions/datalake/dev/paths.mjs.map +1 -0
  56. package/dist/actions/datalake/dev/resetDevServer.mjs +118 -0
  57. package/dist/actions/datalake/dev/resetDevServer.mjs.map +1 -0
  58. package/dist/actions/datalake/dev/resolveServerBin.mjs +26 -0
  59. package/dist/actions/datalake/dev/resolveServerBin.mjs.map +1 -0
  60. package/dist/actions/datalake/dev/state.mjs +62 -0
  61. package/dist/actions/datalake/dev/state.mjs.map +1 -0
  62. package/dist/actions/datalake/dev/statusDevServer.mjs +101 -0
  63. package/dist/actions/datalake/dev/statusDevServer.mjs.map +1 -0
  64. package/dist/actions/datalake/dev/upDevServer.mjs +221 -0
  65. package/dist/actions/datalake/dev/upDevServer.mjs.map +1 -0
  66. package/dist/actions/datalake/dev/waitForHealth.mjs +22 -0
  67. package/dist/actions/datalake/dev/waitForHealth.mjs.map +1 -0
  68. package/dist/actions/datalake/formatters.mjs +90 -0
  69. package/dist/actions/datalake/formatters.mjs.map +1 -0
  70. package/dist/actions/datalake/grantAccess.mjs +116 -0
  71. package/dist/actions/datalake/grantAccess.mjs.map +1 -0
  72. package/dist/actions/datalake/index.mjs +361 -0
  73. package/dist/actions/datalake/index.mjs.map +1 -0
  74. package/dist/actions/datalake/listDatalakes.mjs +54 -0
  75. package/dist/actions/datalake/listDatalakes.mjs.map +1 -0
  76. package/dist/actions/datalake/login.mjs +20 -0
  77. package/dist/actions/datalake/login.mjs.map +1 -0
  78. package/dist/actions/datalake/logout.mjs +11 -0
  79. package/dist/actions/datalake/logout.mjs.map +1 -0
  80. package/dist/actions/datalake/mintToken.mjs +37 -0
  81. package/dist/actions/datalake/mintToken.mjs.map +1 -0
  82. package/dist/actions/datalake/parseSize.mjs +21 -0
  83. package/dist/actions/datalake/parseSize.mjs.map +1 -0
  84. package/dist/actions/datalake/payloads/fetchPayload.mjs +76 -0
  85. package/dist/actions/datalake/payloads/fetchPayload.mjs.map +1 -0
  86. package/dist/actions/datalake/payloads/index.mjs +271 -0
  87. package/dist/actions/datalake/payloads/index.mjs.map +1 -0
  88. package/dist/actions/datalake/payloads/mintAndConnect.mjs +46 -0
  89. package/dist/actions/datalake/payloads/mintAndConnect.mjs.map +1 -0
  90. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs +71 -0
  91. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs.map +1 -0
  92. package/dist/actions/datalake/payloads/pushPayloads.mjs +181 -0
  93. package/dist/actions/datalake/payloads/pushPayloads.mjs.map +1 -0
  94. package/dist/actions/datalake/payloads/tailPayloads.mjs +106 -0
  95. package/dist/actions/datalake/payloads/tailPayloads.mjs.map +1 -0
  96. package/dist/actions/datalake/resolveTarget.mjs +15 -0
  97. package/dist/actions/datalake/resolveTarget.mjs.map +1 -0
  98. package/dist/actions/datalake/revokeAccess.mjs +108 -0
  99. package/dist/actions/datalake/revokeAccess.mjs.map +1 -0
  100. package/dist/actions/datalake/useDatalake.mjs +22 -0
  101. package/dist/actions/datalake/useDatalake.mjs.map +1 -0
  102. package/dist/actions/detect/detectAiClients.mjs +405 -0
  103. package/dist/actions/detect/detectAiClients.mjs.map +1 -0
  104. package/dist/actions/detect/index.mjs +405 -0
  105. package/dist/actions/detect/index.mjs.map +1 -0
  106. package/dist/actions/hash/algorithms/blockhash.mjs +61 -0
  107. package/dist/actions/hash/algorithms/blockhash.mjs.map +1 -0
  108. package/dist/actions/hash/algorithms/chromaprint.mjs +205 -0
  109. package/dist/actions/hash/algorithms/chromaprint.mjs.map +1 -0
  110. package/dist/actions/hash/algorithms/dhash.mjs +75 -0
  111. package/dist/actions/hash/algorithms/dhash.mjs.map +1 -0
  112. package/dist/actions/hash/algorithms/index.mjs +818 -0
  113. package/dist/actions/hash/algorithms/index.mjs.map +1 -0
  114. package/dist/actions/hash/algorithms/nilsimsa.mjs +27 -0
  115. package/dist/actions/hash/algorithms/nilsimsa.mjs.map +1 -0
  116. package/dist/actions/hash/algorithms/pdq.mjs +83 -0
  117. package/dist/actions/hash/algorithms/pdq.mjs.map +1 -0
  118. package/dist/actions/hash/algorithms/phash.mjs +71 -0
  119. package/dist/actions/hash/algorithms/phash.mjs.map +1 -0
  120. package/dist/actions/hash/algorithms/sha256.mjs +24 -0
  121. package/dist/actions/hash/algorithms/sha256.mjs.map +1 -0
  122. package/dist/actions/hash/algorithms/ssdeep.mjs +203 -0
  123. package/dist/actions/hash/algorithms/ssdeep.mjs.map +1 -0
  124. package/dist/actions/hash/algorithms/tlsh.mjs +66 -0
  125. package/dist/actions/hash/algorithms/tlsh.mjs.map +1 -0
  126. package/dist/actions/hash/algorithms/types.mjs +1 -0
  127. package/dist/actions/hash/algorithms/types.mjs.map +1 -0
  128. package/dist/actions/hash/algorithms/videoFrames.mjs +404 -0
  129. package/dist/actions/hash/algorithms/videoFrames.mjs.map +1 -0
  130. package/dist/actions/hash/algorithms/xyo.mjs +30 -0
  131. package/dist/actions/hash/algorithms/xyo.mjs.map +1 -0
  132. package/dist/actions/hash/compareHashes.mjs +823 -0
  133. package/dist/actions/hash/compareHashes.mjs.map +1 -0
  134. package/dist/actions/hash/hashInput.mjs +868 -0
  135. package/dist/actions/hash/hashInput.mjs.map +1 -0
  136. package/dist/actions/hash/index.mjs +881 -0
  137. package/dist/actions/hash/index.mjs.map +1 -0
  138. package/dist/actions/hash/lib/hamming.mjs +44 -0
  139. package/dist/actions/hash/lib/hamming.mjs.map +1 -0
  140. package/dist/actions/hash/lib/levenshtein.mjs +36 -0
  141. package/dist/actions/hash/lib/levenshtein.mjs.map +1 -0
  142. package/dist/actions/hash/lib/runBinary.mjs +54 -0
  143. package/dist/actions/hash/lib/runBinary.mjs.map +1 -0
  144. package/dist/actions/hash/lib/which.mjs +36 -0
  145. package/dist/actions/hash/lib/which.mjs.map +1 -0
  146. package/dist/actions/hash/lib/withTempfile.mjs +19 -0
  147. package/dist/actions/hash/lib/withTempfile.mjs.map +1 -0
  148. package/dist/actions/index.mjs +4615 -0
  149. package/dist/actions/index.mjs.map +1 -0
  150. package/dist/actions/printVersion.mjs +12 -0
  151. package/dist/actions/printVersion.mjs.map +1 -0
  152. package/dist/actions/sync/index.mjs +51 -0
  153. package/dist/actions/sync/index.mjs.map +1 -0
  154. package/dist/actions/sync/syncAiConfig.mjs +51 -0
  155. package/dist/actions/sync/syncAiConfig.mjs.map +1 -0
  156. package/dist/actions/wallet/account/deriveAndAdd.mjs +394 -0
  157. package/dist/actions/wallet/account/deriveAndAdd.mjs.map +1 -0
  158. package/dist/actions/wallet/account/getActiveWallet.mjs +338 -0
  159. package/dist/actions/wallet/account/getActiveWallet.mjs.map +1 -0
  160. package/dist/actions/wallet/account/labelAccount.mjs +389 -0
  161. package/dist/actions/wallet/account/labelAccount.mjs.map +1 -0
  162. package/dist/actions/wallet/account/listAccounts.mjs +374 -0
  163. package/dist/actions/wallet/account/listAccounts.mjs.map +1 -0
  164. package/dist/actions/wallet/account/removeAccount.mjs +384 -0
  165. package/dist/actions/wallet/account/removeAccount.mjs.map +1 -0
  166. package/dist/actions/wallet/account/showAccount.mjs +368 -0
  167. package/dist/actions/wallet/account/showAccount.mjs.map +1 -0
  168. package/dist/actions/wallet/addressBook/storage.mjs +110 -0
  169. package/dist/actions/wallet/addressBook/storage.mjs.map +1 -0
  170. package/dist/actions/wallet/backup/exportBackup.mjs +93 -0
  171. package/dist/actions/wallet/backup/exportBackup.mjs.map +1 -0
  172. package/dist/actions/wallet/backup/importBackup.mjs +142 -0
  173. package/dist/actions/wallet/backup/importBackup.mjs.map +1 -0
  174. package/dist/actions/wallet/balance/getBalance.mjs +434 -0
  175. package/dist/actions/wallet/balance/getBalance.mjs.map +1 -0
  176. package/dist/actions/wallet/client/walletClient.mjs +64 -0
  177. package/dist/actions/wallet/client/walletClient.mjs.map +1 -0
  178. package/dist/actions/wallet/contact/contactActions.mjs +120 -0
  179. package/dist/actions/wallet/contact/contactActions.mjs.map +1 -0
  180. package/dist/actions/wallet/contact/storage.mjs +69 -0
  181. package/dist/actions/wallet/contact/storage.mjs.map +1 -0
  182. package/dist/actions/wallet/index.mjs +1439 -0
  183. package/dist/actions/wallet/index.mjs.map +1 -0
  184. package/dist/actions/wallet/network/networkActions.mjs +137 -0
  185. package/dist/actions/wallet/network/networkActions.mjs.map +1 -0
  186. package/dist/actions/wallet/network/storage.mjs +93 -0
  187. package/dist/actions/wallet/network/storage.mjs.map +1 -0
  188. package/dist/actions/wallet/password/changePassword.mjs +282 -0
  189. package/dist/actions/wallet/password/changePassword.mjs.map +1 -0
  190. package/dist/actions/wallet/password/getActiveKey.mjs +297 -0
  191. package/dist/actions/wallet/password/getActiveKey.mjs.map +1 -0
  192. package/dist/actions/wallet/password/initOrUnlock.mjs +337 -0
  193. package/dist/actions/wallet/password/initOrUnlock.mjs.map +1 -0
  194. package/dist/actions/wallet/password/passwordStorage.mjs +69 -0
  195. package/dist/actions/wallet/password/passwordStorage.mjs.map +1 -0
  196. package/dist/actions/wallet/password/setPassword.mjs +138 -0
  197. package/dist/actions/wallet/password/setPassword.mjs.map +1 -0
  198. package/dist/actions/wallet/password/validatePassword.mjs +123 -0
  199. package/dist/actions/wallet/password/validatePassword.mjs.map +1 -0
  200. package/dist/actions/wallet/passwordKey.mjs +87 -0
  201. package/dist/actions/wallet/passwordKey.mjs.map +1 -0
  202. package/dist/actions/wallet/paths.mjs +26 -0
  203. package/dist/actions/wallet/paths.mjs.map +1 -0
  204. package/dist/actions/wallet/prompt.mjs +93 -0
  205. package/dist/actions/wallet/prompt.mjs.map +1 -0
  206. package/dist/actions/wallet/seedPhrase/createPhrase.mjs +392 -0
  207. package/dist/actions/wallet/seedPhrase/createPhrase.mjs.map +1 -0
  208. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs +334 -0
  209. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs.map +1 -0
  210. package/dist/actions/wallet/seedPhrase/idGen.mjs +11 -0
  211. package/dist/actions/wallet/seedPhrase/idGen.mjs.map +1 -0
  212. package/dist/actions/wallet/seedPhrase/importPhrase.mjs +393 -0
  213. package/dist/actions/wallet/seedPhrase/importPhrase.mjs.map +1 -0
  214. package/dist/actions/wallet/seedPhrase/listPhrases.mjs +62 -0
  215. package/dist/actions/wallet/seedPhrase/listPhrases.mjs.map +1 -0
  216. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs +89 -0
  217. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs.map +1 -0
  218. package/dist/actions/wallet/seedPhrase/removePhrase.mjs +366 -0
  219. package/dist/actions/wallet/seedPhrase/removePhrase.mjs.map +1 -0
  220. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs +78 -0
  221. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs.map +1 -0
  222. package/dist/actions/wallet/seedPhrase/types.mjs +1 -0
  223. package/dist/actions/wallet/seedPhrase/types.mjs.map +1 -0
  224. package/dist/actions/wallet/seedPhrase/usePhrase.mjs +83 -0
  225. package/dist/actions/wallet/seedPhrase/usePhrase.mjs.map +1 -0
  226. package/dist/actions/wallet/session/machineId.mjs +145 -0
  227. package/dist/actions/wallet/session/machineId.mjs.map +1 -0
  228. package/dist/actions/wallet/session/sessionCache.mjs +221 -0
  229. package/dist/actions/wallet/session/sessionCache.mjs.map +1 -0
  230. package/dist/actions/wallet/session/unlock.mjs +307 -0
  231. package/dist/actions/wallet/session/unlock.mjs.map +1 -0
  232. package/dist/actions/wallet/sign/signPayload.mjs +637 -0
  233. package/dist/actions/wallet/sign/signPayload.mjs.map +1 -0
  234. package/dist/actions/wallet/storage.mjs +51 -0
  235. package/dist/actions/wallet/storage.mjs.map +1 -0
  236. package/dist/actions/wallet/transaction/broadcastTransaction.mjs +453 -0
  237. package/dist/actions/wallet/transaction/broadcastTransaction.mjs.map +1 -0
  238. package/dist/actions/wallet/transaction/sendTransaction.mjs +457 -0
  239. package/dist/actions/wallet/transaction/sendTransaction.mjs.map +1 -0
  240. package/dist/actions/wallet/transaction/signTransactionFile.mjs +378 -0
  241. package/dist/actions/wallet/transaction/signTransactionFile.mjs.map +1 -0
  242. package/dist/actions/xyo/index.mjs +138 -0
  243. package/dist/actions/xyo/index.mjs.map +1 -0
  244. package/dist/actions/xyo/transaction/index.mjs +138 -0
  245. package/dist/actions/xyo/transaction/index.mjs.map +1 -0
  246. package/dist/actions/xyo/transaction/validateTransactions.mjs +138 -0
  247. package/dist/actions/xyo/transaction/validateTransactions.mjs.map +1 -0
  248. package/dist/aries.mjs +8466 -0
  249. package/dist/aries.mjs.map +1 -0
  250. package/dist/bin/aries.mjs +8472 -0
  251. package/dist/bin/aries.mjs.map +1 -0
  252. package/dist/commands/aiCommand.mjs +492 -0
  253. package/dist/commands/aiCommand.mjs.map +1 -0
  254. package/dist/commands/auditAiCommand.mjs +119 -0
  255. package/dist/commands/auditAiCommand.mjs.map +1 -0
  256. package/dist/commands/auditCommand.mjs +857 -0
  257. package/dist/commands/auditCommand.mjs.map +1 -0
  258. package/dist/commands/auditInstallCommand.mjs +324 -0
  259. package/dist/commands/auditInstallCommand.mjs.map +1 -0
  260. package/dist/commands/auditListCommand.mjs +107 -0
  261. package/dist/commands/auditListCommand.mjs.map +1 -0
  262. package/dist/commands/auditOpenCommand.mjs +51 -0
  263. package/dist/commands/auditOpenCommand.mjs.map +1 -0
  264. package/dist/commands/auditSearchCommand.mjs +98 -0
  265. package/dist/commands/auditSearchCommand.mjs.map +1 -0
  266. package/dist/commands/auditShowCommand.mjs +123 -0
  267. package/dist/commands/auditShowCommand.mjs.map +1 -0
  268. package/dist/commands/auditStatusCommand.mjs +105 -0
  269. package/dist/commands/auditStatusCommand.mjs.map +1 -0
  270. package/dist/commands/clampCommand.mjs +2328 -0
  271. package/dist/commands/clampCommand.mjs.map +1 -0
  272. package/dist/commands/clampPolicyCommand.mjs +184 -0
  273. package/dist/commands/clampPolicyCommand.mjs.map +1 -0
  274. package/dist/commands/clampPolicyInitCommand.mjs +63 -0
  275. package/dist/commands/clampPolicyInitCommand.mjs.map +1 -0
  276. package/dist/commands/clampPolicyListCommand.mjs +56 -0
  277. package/dist/commands/clampPolicyListCommand.mjs.map +1 -0
  278. package/dist/commands/clampPolicyShowCommand.mjs +83 -0
  279. package/dist/commands/clampPolicyShowCommand.mjs.map +1 -0
  280. package/dist/commands/clampRunCommand.mjs +2137 -0
  281. package/dist/commands/clampRunCommand.mjs.map +1 -0
  282. package/dist/commands/datalakeAuditCommand.mjs +273 -0
  283. package/dist/commands/datalakeAuditCommand.mjs.map +1 -0
  284. package/dist/commands/datalakeCommand.mjs +1637 -0
  285. package/dist/commands/datalakeCommand.mjs.map +1 -0
  286. package/dist/commands/datalakeCreateCommand.mjs +189 -0
  287. package/dist/commands/datalakeCreateCommand.mjs.map +1 -0
  288. package/dist/commands/datalakeDescribeCommand.mjs +172 -0
  289. package/dist/commands/datalakeDescribeCommand.mjs.map +1 -0
  290. package/dist/commands/datalakeDestroyCommand.mjs +53 -0
  291. package/dist/commands/datalakeDestroyCommand.mjs.map +1 -0
  292. package/dist/commands/datalakeDevCommand.mjs +470 -0
  293. package/dist/commands/datalakeDevCommand.mjs.map +1 -0
  294. package/dist/commands/datalakeDevDownCommand.mjs +111 -0
  295. package/dist/commands/datalakeDevDownCommand.mjs.map +1 -0
  296. package/dist/commands/datalakeDevLogsCommand.mjs +65 -0
  297. package/dist/commands/datalakeDevLogsCommand.mjs.map +1 -0
  298. package/dist/commands/datalakeDevResetCommand.mjs +125 -0
  299. package/dist/commands/datalakeDevResetCommand.mjs.map +1 -0
  300. package/dist/commands/datalakeDevStatusCommand.mjs +110 -0
  301. package/dist/commands/datalakeDevStatusCommand.mjs.map +1 -0
  302. package/dist/commands/datalakeDevUpCommand.mjs +268 -0
  303. package/dist/commands/datalakeDevUpCommand.mjs.map +1 -0
  304. package/dist/commands/datalakeFetchCommand.mjs +106 -0
  305. package/dist/commands/datalakeFetchCommand.mjs.map +1 -0
  306. package/dist/commands/datalakeGrantCommand.mjs +147 -0
  307. package/dist/commands/datalakeGrantCommand.mjs.map +1 -0
  308. package/dist/commands/datalakeListCommand.mjs +61 -0
  309. package/dist/commands/datalakeListCommand.mjs.map +1 -0
  310. package/dist/commands/datalakeLoginCommand.mjs +39 -0
  311. package/dist/commands/datalakeLoginCommand.mjs.map +1 -0
  312. package/dist/commands/datalakeLogoutCommand.mjs +20 -0
  313. package/dist/commands/datalakeLogoutCommand.mjs.map +1 -0
  314. package/dist/commands/datalakePushCommand.mjs +214 -0
  315. package/dist/commands/datalakePushCommand.mjs.map +1 -0
  316. package/dist/commands/datalakeRevokeCommand.mjs +127 -0
  317. package/dist/commands/datalakeRevokeCommand.mjs.map +1 -0
  318. package/dist/commands/datalakeTailCommand.mjs +144 -0
  319. package/dist/commands/datalakeTailCommand.mjs.map +1 -0
  320. package/dist/commands/datalakeTokenCommand.mjs +61 -0
  321. package/dist/commands/datalakeTokenCommand.mjs.map +1 -0
  322. package/dist/commands/datalakeUseCommand.mjs +35 -0
  323. package/dist/commands/datalakeUseCommand.mjs.map +1 -0
  324. package/dist/commands/detectCommand.mjs +419 -0
  325. package/dist/commands/detectCommand.mjs.map +1 -0
  326. package/dist/commands/hashCommand.mjs +976 -0
  327. package/dist/commands/hashCommand.mjs.map +1 -0
  328. package/dist/commands/hashCompareCommand.mjs +865 -0
  329. package/dist/commands/hashCompareCommand.mjs.map +1 -0
  330. package/dist/commands/index.mjs +8461 -0
  331. package/dist/commands/index.mjs.map +1 -0
  332. package/dist/commands/syncCommand.mjs +66 -0
  333. package/dist/commands/syncCommand.mjs.map +1 -0
  334. package/dist/commands/versionCommand.mjs +24 -0
  335. package/dist/commands/versionCommand.mjs.map +1 -0
  336. package/dist/commands/walletAccountCommand.mjs +536 -0
  337. package/dist/commands/walletAccountCommand.mjs.map +1 -0
  338. package/dist/commands/walletAccountDeriveCommand.mjs +415 -0
  339. package/dist/commands/walletAccountDeriveCommand.mjs.map +1 -0
  340. package/dist/commands/walletAccountLabelCommand.mjs +405 -0
  341. package/dist/commands/walletAccountLabelCommand.mjs.map +1 -0
  342. package/dist/commands/walletAccountListCommand.mjs +381 -0
  343. package/dist/commands/walletAccountListCommand.mjs.map +1 -0
  344. package/dist/commands/walletAccountRemoveCommand.mjs +396 -0
  345. package/dist/commands/walletAccountRemoveCommand.mjs.map +1 -0
  346. package/dist/commands/walletAccountShowCommand.mjs +380 -0
  347. package/dist/commands/walletAccountShowCommand.mjs.map +1 -0
  348. package/dist/commands/walletBackupCommand.mjs +222 -0
  349. package/dist/commands/walletBackupCommand.mjs.map +1 -0
  350. package/dist/commands/walletBackupExportCommand.mjs +107 -0
  351. package/dist/commands/walletBackupExportCommand.mjs.map +1 -0
  352. package/dist/commands/walletBackupImportCommand.mjs +154 -0
  353. package/dist/commands/walletBackupImportCommand.mjs.map +1 -0
  354. package/dist/commands/walletBalanceCommand.mjs +448 -0
  355. package/dist/commands/walletBalanceCommand.mjs.map +1 -0
  356. package/dist/commands/walletCommand.mjs +1968 -0
  357. package/dist/commands/walletCommand.mjs.map +1 -0
  358. package/dist/commands/walletContactAddCommand.mjs +111 -0
  359. package/dist/commands/walletContactAddCommand.mjs.map +1 -0
  360. package/dist/commands/walletContactCommand.mjs +184 -0
  361. package/dist/commands/walletContactCommand.mjs.map +1 -0
  362. package/dist/commands/walletContactListCommand.mjs +66 -0
  363. package/dist/commands/walletContactListCommand.mjs.map +1 -0
  364. package/dist/commands/walletContactRemoveCommand.mjs +97 -0
  365. package/dist/commands/walletContactRemoveCommand.mjs.map +1 -0
  366. package/dist/commands/walletContactRenameCommand.mjs +114 -0
  367. package/dist/commands/walletContactRenameCommand.mjs.map +1 -0
  368. package/dist/commands/walletCreateCommand.mjs +407 -0
  369. package/dist/commands/walletCreateCommand.mjs.map +1 -0
  370. package/dist/commands/walletExportCommand.mjs +345 -0
  371. package/dist/commands/walletExportCommand.mjs.map +1 -0
  372. package/dist/commands/walletImportCommand.mjs +413 -0
  373. package/dist/commands/walletImportCommand.mjs.map +1 -0
  374. package/dist/commands/walletListCommand.mjs +69 -0
  375. package/dist/commands/walletListCommand.mjs.map +1 -0
  376. package/dist/commands/walletLockCommand.mjs +56 -0
  377. package/dist/commands/walletLockCommand.mjs.map +1 -0
  378. package/dist/commands/walletNetworkAddCommand.mjs +131 -0
  379. package/dist/commands/walletNetworkAddCommand.mjs.map +1 -0
  380. package/dist/commands/walletNetworkCommand.mjs +206 -0
  381. package/dist/commands/walletNetworkCommand.mjs.map +1 -0
  382. package/dist/commands/walletNetworkListCommand.mjs +104 -0
  383. package/dist/commands/walletNetworkListCommand.mjs.map +1 -0
  384. package/dist/commands/walletNetworkRemoveCommand.mjs +112 -0
  385. package/dist/commands/walletNetworkRemoveCommand.mjs.map +1 -0
  386. package/dist/commands/walletNetworkUseCommand.mjs +110 -0
  387. package/dist/commands/walletNetworkUseCommand.mjs.map +1 -0
  388. package/dist/commands/walletPasswordChangeCommand.mjs +291 -0
  389. package/dist/commands/walletPasswordChangeCommand.mjs.map +1 -0
  390. package/dist/commands/walletPasswordCommand.mjs +301 -0
  391. package/dist/commands/walletPasswordCommand.mjs.map +1 -0
  392. package/dist/commands/walletRemoveCommand.mjs +378 -0
  393. package/dist/commands/walletRemoveCommand.mjs.map +1 -0
  394. package/dist/commands/walletRenameCommand.mjs +94 -0
  395. package/dist/commands/walletRenameCommand.mjs.map +1 -0
  396. package/dist/commands/walletSignCommand.mjs +662 -0
  397. package/dist/commands/walletSignCommand.mjs.map +1 -0
  398. package/dist/commands/walletTxBroadcastCommand.mjs +473 -0
  399. package/dist/commands/walletTxBroadcastCommand.mjs.map +1 -0
  400. package/dist/commands/walletTxCommand.mjs +612 -0
  401. package/dist/commands/walletTxCommand.mjs.map +1 -0
  402. package/dist/commands/walletTxSendCommand.mjs +492 -0
  403. package/dist/commands/walletTxSendCommand.mjs.map +1 -0
  404. package/dist/commands/walletTxSignCommand.mjs +403 -0
  405. package/dist/commands/walletTxSignCommand.mjs.map +1 -0
  406. package/dist/commands/walletUnlockCommand.mjs +308 -0
  407. package/dist/commands/walletUnlockCommand.mjs.map +1 -0
  408. package/dist/commands/walletUseCommand.mjs +95 -0
  409. package/dist/commands/walletUseCommand.mjs.map +1 -0
  410. package/dist/commands/xyoCommand.mjs +188 -0
  411. package/dist/commands/xyoCommand.mjs.map +1 -0
  412. package/dist/commands/xyoTxCommand.mjs +178 -0
  413. package/dist/commands/xyoTxCommand.mjs.map +1 -0
  414. package/dist/commands/xyoTxValidateCommand.mjs +168 -0
  415. package/dist/commands/xyoTxValidateCommand.mjs.map +1 -0
  416. package/dist/index.d.ts +3 -0
  417. package/dist/index.mjs +8466 -0
  418. package/dist/index.mjs.map +1 -0
  419. package/dist/types/modules.d.mjs +1 -0
  420. package/dist/types/modules.d.mjs.map +1 -0
  421. package/package.json +197 -0
@@ -0,0 +1,138 @@
1
+ // src/actions/xyo/transaction/validateTransactions.ts
2
+ import FS, { existsSync } from "fs";
3
+ import path from "path";
4
+ import { PayloadBuilder } from "@xyo-network/sdk-js";
5
+ import {
6
+ isHydratedTransaction,
7
+ isTransactionBoundWitness,
8
+ validateTransaction
9
+ } from "@xyo-network/xl1-sdk";
10
+ import chalk from "chalk";
11
+ function isRawTuple(value) {
12
+ return Array.isArray(value) && value.length === 2 && Array.isArray(value[1]);
13
+ }
14
+ function parseSingleOrBatch(raw, source) {
15
+ const parsed = JSON.parse(raw);
16
+ if (isRawTuple(parsed)) {
17
+ return [[parsed, source]];
18
+ }
19
+ if (Array.isArray(parsed) && parsed.length > 0 && parsed.every(isRawTuple)) {
20
+ return parsed.map((tx, i) => [tx, `${source}[${i}]`]);
21
+ }
22
+ throw new Error(`${source}: expected a transaction tuple [bw, payloads[]] or array of tuples`);
23
+ }
24
+ function parseJsonl(raw, source) {
25
+ const results = [];
26
+ for (const [i, rawLine] of raw.split("\n").entries()) {
27
+ const line = rawLine?.trim();
28
+ if (!line) continue;
29
+ let parsed;
30
+ try {
31
+ parsed = JSON.parse(line);
32
+ } catch (error) {
33
+ const msg = error instanceof Error ? error.message : String(error);
34
+ throw new Error(`${source} line ${i + 1}: invalid JSON (${msg})`, { cause: error });
35
+ }
36
+ if (!isRawTuple(parsed)) {
37
+ throw new Error(`${source} line ${i + 1}: expected a transaction tuple [bw, payloads[]]`);
38
+ }
39
+ results.push([parsed, `${source}:${i + 1}`]);
40
+ }
41
+ return results;
42
+ }
43
+ function parseInput(data) {
44
+ const absolute = path.resolve(data);
45
+ if (existsSync(absolute)) {
46
+ const raw = FS.readFileSync(absolute, "utf8");
47
+ const ext = path.extname(absolute).toLowerCase();
48
+ if (ext === ".jsonl" || ext === ".ndjson") {
49
+ return parseJsonl(raw, data);
50
+ }
51
+ return parseSingleOrBatch(raw, data);
52
+ }
53
+ return parseSingleOrBatch(data, "<inline>");
54
+ }
55
+ async function readStdin() {
56
+ return new Promise((resolve, reject) => {
57
+ let buf = "";
58
+ process.stdin.setEncoding("utf8");
59
+ process.stdin.on("data", (chunk) => {
60
+ buf += chunk;
61
+ });
62
+ process.stdin.on("end", () => resolve(buf));
63
+ process.stdin.on("error", reject);
64
+ });
65
+ }
66
+ async function validateOne(raw, source, index) {
67
+ const [bwRaw, payloadsRaw] = raw;
68
+ const errors = [];
69
+ if (!isTransactionBoundWitness(bwRaw)) {
70
+ return {
71
+ errors: ["not a valid transaction BoundWitness"],
72
+ index,
73
+ source,
74
+ valid: false
75
+ };
76
+ }
77
+ try {
78
+ const bwWithMeta = await PayloadBuilder.addHashMeta(bwRaw);
79
+ const payloadsWithMeta = await Promise.all(
80
+ payloadsRaw.map((p) => PayloadBuilder.addHashMeta(p))
81
+ );
82
+ const tx = [bwWithMeta, payloadsWithMeta];
83
+ if (isHydratedTransaction(tx)) {
84
+ const chainId = bwRaw.chain;
85
+ const txErrors = await validateTransaction({ chainId }, tx);
86
+ for (const err of txErrors) {
87
+ errors.push(String(err));
88
+ }
89
+ } else {
90
+ errors.push("transaction failed structural shape check (isHydratedTransaction)");
91
+ }
92
+ } catch (ex) {
93
+ errors.push(`Validation threw: ${ex instanceof Error ? ex.message : String(ex)}`);
94
+ }
95
+ return {
96
+ errors,
97
+ index,
98
+ source,
99
+ valid: errors.length === 0
100
+ };
101
+ }
102
+ async function validateTransactions(options) {
103
+ let rawTransactions;
104
+ if (options.data !== void 0) {
105
+ rawTransactions = parseInput(options.data);
106
+ } else if (process.stdin.isTTY) {
107
+ console.error(chalk.red("No input: provide a file path, inline JSON, or pipe data to stdin."));
108
+ process.exitCode = 1;
109
+ return;
110
+ } else {
111
+ const stdin = await readStdin();
112
+ rawTransactions = parseSingleOrBatch(stdin.trim(), "<stdin>");
113
+ }
114
+ const results = await Promise.all(rawTransactions.map(([tx, source], i) => validateOne(tx, source, i)));
115
+ const validCount = results.filter((r) => r.valid).length;
116
+ const invalidCount = results.filter((r) => !r.valid).length;
117
+ console.log(`Total: ${results.length}`);
118
+ console.log(chalk.green(`Valid: ${validCount}`));
119
+ if (invalidCount > 0) {
120
+ console.log(chalk.red(`Invalid: ${invalidCount}`));
121
+ }
122
+ if (options.detail === true || invalidCount > 0) {
123
+ for (const result of results.filter((r) => !r.valid)) {
124
+ console.log(chalk.red(`
125
+ [${result.index}] ${result.source}`));
126
+ for (const err of result.errors) {
127
+ console.log(chalk.red(` - ${err}`));
128
+ }
129
+ }
130
+ }
131
+ if (invalidCount > 0) {
132
+ process.exitCode = 1;
133
+ }
134
+ }
135
+ export {
136
+ validateTransactions
137
+ };
138
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/xyo/transaction/validateTransactions.ts"],"sourcesContent":["import FS, { existsSync } from 'node:fs'\nimport path from 'node:path'\n\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedTransactionWithHashMeta } from '@xyo-network/xl1-sdk'\nimport {\n isHydratedTransaction,\n isTransactionBoundWitness,\n validateTransaction,\n} from '@xyo-network/xl1-sdk'\nimport chalk from 'chalk'\n\nexport interface ValidateTransactionsOptions {\n data?: string\n detail?: boolean\n}\n\ninterface ValidationResult {\n errors: string[]\n index: number\n source: string\n valid: boolean\n}\n\ntype RawTuple = [unknown, unknown[]]\n\nfunction isRawTuple(value: unknown): value is RawTuple {\n return Array.isArray(value) && value.length === 2 && Array.isArray(value[1])\n}\n\nfunction parseSingleOrBatch(raw: string, source: string): [RawTuple, string][] {\n const parsed: unknown = JSON.parse(raw)\n if (isRawTuple(parsed)) {\n return [[parsed, source]]\n }\n if (Array.isArray(parsed) && parsed.length > 0 && parsed.every(isRawTuple)) {\n return parsed.map((tx, i) => [tx, `${source}[${i}]`])\n }\n throw new Error(`${source}: expected a transaction tuple [bw, payloads[]] or array of tuples`)\n}\n\nfunction parseJsonl(raw: string, source: string): [RawTuple, string][] {\n const results: [RawTuple, string][] = []\n for (const [i, rawLine] of raw.split('\\n').entries()) {\n const line = rawLine?.trim()\n if (!line) continue\n let parsed: unknown\n try {\n parsed = JSON.parse(line)\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error)\n throw new Error(`${source} line ${i + 1}: invalid JSON (${msg})`, { cause: error })\n }\n if (!isRawTuple(parsed)) {\n throw new Error(`${source} line ${i + 1}: expected a transaction tuple [bw, payloads[]]`)\n }\n results.push([parsed, `${source}:${i + 1}`])\n }\n return results\n}\n\nfunction parseInput(data: string): [RawTuple, string][] {\n const absolute = path.resolve(data)\n if (existsSync(absolute)) {\n const raw = FS.readFileSync(absolute, 'utf8')\n const ext = path.extname(absolute).toLowerCase()\n if (ext === '.jsonl' || ext === '.ndjson') {\n return parseJsonl(raw, data)\n }\n return parseSingleOrBatch(raw, data)\n }\n return parseSingleOrBatch(data, '<inline>')\n}\n\nasync function readStdin(): Promise<string> {\n return new Promise((resolve, reject) => {\n let buf = ''\n process.stdin.setEncoding('utf8')\n process.stdin.on('data', (chunk: string) => {\n buf += chunk\n })\n process.stdin.on('end', () => resolve(buf))\n process.stdin.on('error', reject)\n })\n}\n\nasync function validateOne(raw: RawTuple, source: string, index: number): Promise<ValidationResult> {\n const [bwRaw, payloadsRaw] = raw\n const errors: string[] = []\n\n if (!isTransactionBoundWitness(bwRaw)) {\n return {\n errors: ['not a valid transaction BoundWitness'],\n index,\n source,\n valid: false,\n }\n }\n\n try {\n const bwWithMeta = await PayloadBuilder.addHashMeta(bwRaw as Payload)\n const payloadsWithMeta = await Promise.all(\n (payloadsRaw as Payload[]).map(p => PayloadBuilder.addHashMeta(p)),\n )\n const tx = [bwWithMeta, payloadsWithMeta] as unknown as HydratedTransactionWithHashMeta\n\n if (isHydratedTransaction(tx)) {\n const chainId = bwRaw.chain as string\n const txErrors = await validateTransaction({ chainId } as never, tx)\n for (const err of txErrors) {\n errors.push(String(err))\n }\n } else {\n errors.push('transaction failed structural shape check (isHydratedTransaction)')\n }\n } catch (ex) {\n errors.push(`Validation threw: ${ex instanceof Error ? ex.message : String(ex)}`)\n }\n\n return {\n errors,\n index,\n source,\n valid: errors.length === 0,\n }\n}\n\nexport async function validateTransactions(options: ValidateTransactionsOptions): Promise<void> {\n let rawTransactions: [RawTuple, string][]\n\n if (options.data !== undefined) {\n rawTransactions = parseInput(options.data)\n } else if (process.stdin.isTTY) {\n console.error(chalk.red('No input: provide a file path, inline JSON, or pipe data to stdin.'))\n process.exitCode = 1\n return\n } else {\n const stdin = await readStdin()\n rawTransactions = parseSingleOrBatch(stdin.trim(), '<stdin>')\n }\n\n const results = await Promise.all(rawTransactions.map(([tx, source], i) => validateOne(tx, source, i)))\n\n const validCount = results.filter(r => r.valid).length\n const invalidCount = results.filter(r => !r.valid).length\n\n console.log(`Total: ${results.length}`)\n console.log(chalk.green(`Valid: ${validCount}`))\n if (invalidCount > 0) {\n console.log(chalk.red(`Invalid: ${invalidCount}`))\n }\n\n if (options.detail === true || invalidCount > 0) {\n for (const result of results.filter(r => !r.valid)) {\n console.log(chalk.red(`\\n[${result.index}] ${result.source}`))\n for (const err of result.errors) {\n console.log(chalk.red(` - ${err}`))\n }\n }\n }\n\n if (invalidCount > 0) {\n process.exitCode = 1\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,138 @@
1
+ // src/actions/xyo/transaction/validateTransactions.ts
2
+ import FS, { existsSync } from "fs";
3
+ import path from "path";
4
+ import { PayloadBuilder } from "@xyo-network/sdk-js";
5
+ import {
6
+ isHydratedTransaction,
7
+ isTransactionBoundWitness,
8
+ validateTransaction
9
+ } from "@xyo-network/xl1-sdk";
10
+ import chalk from "chalk";
11
+ function isRawTuple(value) {
12
+ return Array.isArray(value) && value.length === 2 && Array.isArray(value[1]);
13
+ }
14
+ function parseSingleOrBatch(raw, source) {
15
+ const parsed = JSON.parse(raw);
16
+ if (isRawTuple(parsed)) {
17
+ return [[parsed, source]];
18
+ }
19
+ if (Array.isArray(parsed) && parsed.length > 0 && parsed.every(isRawTuple)) {
20
+ return parsed.map((tx, i) => [tx, `${source}[${i}]`]);
21
+ }
22
+ throw new Error(`${source}: expected a transaction tuple [bw, payloads[]] or array of tuples`);
23
+ }
24
+ function parseJsonl(raw, source) {
25
+ const results = [];
26
+ for (const [i, rawLine] of raw.split("\n").entries()) {
27
+ const line = rawLine?.trim();
28
+ if (!line) continue;
29
+ let parsed;
30
+ try {
31
+ parsed = JSON.parse(line);
32
+ } catch (error) {
33
+ const msg = error instanceof Error ? error.message : String(error);
34
+ throw new Error(`${source} line ${i + 1}: invalid JSON (${msg})`, { cause: error });
35
+ }
36
+ if (!isRawTuple(parsed)) {
37
+ throw new Error(`${source} line ${i + 1}: expected a transaction tuple [bw, payloads[]]`);
38
+ }
39
+ results.push([parsed, `${source}:${i + 1}`]);
40
+ }
41
+ return results;
42
+ }
43
+ function parseInput(data) {
44
+ const absolute = path.resolve(data);
45
+ if (existsSync(absolute)) {
46
+ const raw = FS.readFileSync(absolute, "utf8");
47
+ const ext = path.extname(absolute).toLowerCase();
48
+ if (ext === ".jsonl" || ext === ".ndjson") {
49
+ return parseJsonl(raw, data);
50
+ }
51
+ return parseSingleOrBatch(raw, data);
52
+ }
53
+ return parseSingleOrBatch(data, "<inline>");
54
+ }
55
+ async function readStdin() {
56
+ return new Promise((resolve, reject) => {
57
+ let buf = "";
58
+ process.stdin.setEncoding("utf8");
59
+ process.stdin.on("data", (chunk) => {
60
+ buf += chunk;
61
+ });
62
+ process.stdin.on("end", () => resolve(buf));
63
+ process.stdin.on("error", reject);
64
+ });
65
+ }
66
+ async function validateOne(raw, source, index) {
67
+ const [bwRaw, payloadsRaw] = raw;
68
+ const errors = [];
69
+ if (!isTransactionBoundWitness(bwRaw)) {
70
+ return {
71
+ errors: ["not a valid transaction BoundWitness"],
72
+ index,
73
+ source,
74
+ valid: false
75
+ };
76
+ }
77
+ try {
78
+ const bwWithMeta = await PayloadBuilder.addHashMeta(bwRaw);
79
+ const payloadsWithMeta = await Promise.all(
80
+ payloadsRaw.map((p) => PayloadBuilder.addHashMeta(p))
81
+ );
82
+ const tx = [bwWithMeta, payloadsWithMeta];
83
+ if (isHydratedTransaction(tx)) {
84
+ const chainId = bwRaw.chain;
85
+ const txErrors = await validateTransaction({ chainId }, tx);
86
+ for (const err of txErrors) {
87
+ errors.push(String(err));
88
+ }
89
+ } else {
90
+ errors.push("transaction failed structural shape check (isHydratedTransaction)");
91
+ }
92
+ } catch (ex) {
93
+ errors.push(`Validation threw: ${ex instanceof Error ? ex.message : String(ex)}`);
94
+ }
95
+ return {
96
+ errors,
97
+ index,
98
+ source,
99
+ valid: errors.length === 0
100
+ };
101
+ }
102
+ async function validateTransactions(options) {
103
+ let rawTransactions;
104
+ if (options.data !== void 0) {
105
+ rawTransactions = parseInput(options.data);
106
+ } else if (process.stdin.isTTY) {
107
+ console.error(chalk.red("No input: provide a file path, inline JSON, or pipe data to stdin."));
108
+ process.exitCode = 1;
109
+ return;
110
+ } else {
111
+ const stdin = await readStdin();
112
+ rawTransactions = parseSingleOrBatch(stdin.trim(), "<stdin>");
113
+ }
114
+ const results = await Promise.all(rawTransactions.map(([tx, source], i) => validateOne(tx, source, i)));
115
+ const validCount = results.filter((r) => r.valid).length;
116
+ const invalidCount = results.filter((r) => !r.valid).length;
117
+ console.log(`Total: ${results.length}`);
118
+ console.log(chalk.green(`Valid: ${validCount}`));
119
+ if (invalidCount > 0) {
120
+ console.log(chalk.red(`Invalid: ${invalidCount}`));
121
+ }
122
+ if (options.detail === true || invalidCount > 0) {
123
+ for (const result of results.filter((r) => !r.valid)) {
124
+ console.log(chalk.red(`
125
+ [${result.index}] ${result.source}`));
126
+ for (const err of result.errors) {
127
+ console.log(chalk.red(` - ${err}`));
128
+ }
129
+ }
130
+ }
131
+ if (invalidCount > 0) {
132
+ process.exitCode = 1;
133
+ }
134
+ }
135
+ export {
136
+ validateTransactions
137
+ };
138
+ //# sourceMappingURL=validateTransactions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/xyo/transaction/validateTransactions.ts"],"sourcesContent":["import FS, { existsSync } from 'node:fs'\nimport path from 'node:path'\n\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedTransactionWithHashMeta } from '@xyo-network/xl1-sdk'\nimport {\n isHydratedTransaction,\n isTransactionBoundWitness,\n validateTransaction,\n} from '@xyo-network/xl1-sdk'\nimport chalk from 'chalk'\n\nexport interface ValidateTransactionsOptions {\n data?: string\n detail?: boolean\n}\n\ninterface ValidationResult {\n errors: string[]\n index: number\n source: string\n valid: boolean\n}\n\ntype RawTuple = [unknown, unknown[]]\n\nfunction isRawTuple(value: unknown): value is RawTuple {\n return Array.isArray(value) && value.length === 2 && Array.isArray(value[1])\n}\n\nfunction parseSingleOrBatch(raw: string, source: string): [RawTuple, string][] {\n const parsed: unknown = JSON.parse(raw)\n if (isRawTuple(parsed)) {\n return [[parsed, source]]\n }\n if (Array.isArray(parsed) && parsed.length > 0 && parsed.every(isRawTuple)) {\n return parsed.map((tx, i) => [tx, `${source}[${i}]`])\n }\n throw new Error(`${source}: expected a transaction tuple [bw, payloads[]] or array of tuples`)\n}\n\nfunction parseJsonl(raw: string, source: string): [RawTuple, string][] {\n const results: [RawTuple, string][] = []\n for (const [i, rawLine] of raw.split('\\n').entries()) {\n const line = rawLine?.trim()\n if (!line) continue\n let parsed: unknown\n try {\n parsed = JSON.parse(line)\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error)\n throw new Error(`${source} line ${i + 1}: invalid JSON (${msg})`, { cause: error })\n }\n if (!isRawTuple(parsed)) {\n throw new Error(`${source} line ${i + 1}: expected a transaction tuple [bw, payloads[]]`)\n }\n results.push([parsed, `${source}:${i + 1}`])\n }\n return results\n}\n\nfunction parseInput(data: string): [RawTuple, string][] {\n const absolute = path.resolve(data)\n if (existsSync(absolute)) {\n const raw = FS.readFileSync(absolute, 'utf8')\n const ext = path.extname(absolute).toLowerCase()\n if (ext === '.jsonl' || ext === '.ndjson') {\n return parseJsonl(raw, data)\n }\n return parseSingleOrBatch(raw, data)\n }\n return parseSingleOrBatch(data, '<inline>')\n}\n\nasync function readStdin(): Promise<string> {\n return new Promise((resolve, reject) => {\n let buf = ''\n process.stdin.setEncoding('utf8')\n process.stdin.on('data', (chunk: string) => {\n buf += chunk\n })\n process.stdin.on('end', () => resolve(buf))\n process.stdin.on('error', reject)\n })\n}\n\nasync function validateOne(raw: RawTuple, source: string, index: number): Promise<ValidationResult> {\n const [bwRaw, payloadsRaw] = raw\n const errors: string[] = []\n\n if (!isTransactionBoundWitness(bwRaw)) {\n return {\n errors: ['not a valid transaction BoundWitness'],\n index,\n source,\n valid: false,\n }\n }\n\n try {\n const bwWithMeta = await PayloadBuilder.addHashMeta(bwRaw as Payload)\n const payloadsWithMeta = await Promise.all(\n (payloadsRaw as Payload[]).map(p => PayloadBuilder.addHashMeta(p)),\n )\n const tx = [bwWithMeta, payloadsWithMeta] as unknown as HydratedTransactionWithHashMeta\n\n if (isHydratedTransaction(tx)) {\n const chainId = bwRaw.chain as string\n const txErrors = await validateTransaction({ chainId } as never, tx)\n for (const err of txErrors) {\n errors.push(String(err))\n }\n } else {\n errors.push('transaction failed structural shape check (isHydratedTransaction)')\n }\n } catch (ex) {\n errors.push(`Validation threw: ${ex instanceof Error ? ex.message : String(ex)}`)\n }\n\n return {\n errors,\n index,\n source,\n valid: errors.length === 0,\n }\n}\n\nexport async function validateTransactions(options: ValidateTransactionsOptions): Promise<void> {\n let rawTransactions: [RawTuple, string][]\n\n if (options.data !== undefined) {\n rawTransactions = parseInput(options.data)\n } else if (process.stdin.isTTY) {\n console.error(chalk.red('No input: provide a file path, inline JSON, or pipe data to stdin.'))\n process.exitCode = 1\n return\n } else {\n const stdin = await readStdin()\n rawTransactions = parseSingleOrBatch(stdin.trim(), '<stdin>')\n }\n\n const results = await Promise.all(rawTransactions.map(([tx, source], i) => validateOne(tx, source, i)))\n\n const validCount = results.filter(r => r.valid).length\n const invalidCount = results.filter(r => !r.valid).length\n\n console.log(`Total: ${results.length}`)\n console.log(chalk.green(`Valid: ${validCount}`))\n if (invalidCount > 0) {\n console.log(chalk.red(`Invalid: ${invalidCount}`))\n }\n\n if (options.detail === true || invalidCount > 0) {\n for (const result of results.filter(r => !r.valid)) {\n console.log(chalk.red(`\\n[${result.index}] ${result.source}`))\n for (const err of result.errors) {\n console.log(chalk.red(` - ${err}`))\n }\n }\n }\n\n if (invalidCount > 0) {\n process.exitCode = 1\n }\n}\n"],"mappings":"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","names":[]}