@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.
- package/README.md +693 -0
- package/dist/actions/audit/auditPaths.mjs +22 -0
- package/dist/actions/audit/auditPaths.mjs.map +1 -0
- package/dist/actions/audit/index.mjs +739 -0
- package/dist/actions/audit/index.mjs.map +1 -0
- package/dist/actions/audit/installPlugin.mjs +298 -0
- package/dist/actions/audit/installPlugin.mjs.map +1 -0
- package/dist/actions/audit/listSessions.mjs +93 -0
- package/dist/actions/audit/listSessions.mjs.map +1 -0
- package/dist/actions/audit/openAuditDir.mjs +44 -0
- package/dist/actions/audit/openAuditDir.mjs.map +1 -0
- package/dist/actions/audit/searchAudit.mjs +77 -0
- package/dist/actions/audit/searchAudit.mjs.map +1 -0
- package/dist/actions/audit/showAiMeta.mjs +105 -0
- package/dist/actions/audit/showAiMeta.mjs.map +1 -0
- package/dist/actions/audit/showSession.mjs +105 -0
- package/dist/actions/audit/showSession.mjs.map +1 -0
- package/dist/actions/audit/statusAudit.mjs +98 -0
- package/dist/actions/audit/statusAudit.mjs.map +1 -0
- package/dist/actions/clamp/clampAudit.mjs +53 -0
- package/dist/actions/clamp/clampAudit.mjs.map +1 -0
- package/dist/actions/clamp/index.mjs +2258 -0
- package/dist/actions/clamp/index.mjs.map +1 -0
- package/dist/actions/clamp/ipcServer.mjs +55 -0
- package/dist/actions/clamp/ipcServer.mjs.map +1 -0
- package/dist/actions/clamp/policyManagement.mjs +144 -0
- package/dist/actions/clamp/policyManagement.mjs.map +1 -0
- package/dist/actions/clamp/promptUser.mjs +91 -0
- package/dist/actions/clamp/promptUser.mjs.map +1 -0
- package/dist/actions/clamp/runClamped.mjs +2107 -0
- package/dist/actions/clamp/runClamped.mjs.map +1 -0
- package/dist/actions/clamp/sandboxExec.mjs +1612 -0
- package/dist/actions/clamp/sandboxExec.mjs.map +1 -0
- package/dist/actions/clamp/shellEnvSetup.mjs +59 -0
- package/dist/actions/clamp/shellEnvSetup.mjs.map +1 -0
- package/dist/actions/clamp/shimGenerator.mjs +68 -0
- package/dist/actions/clamp/shimGenerator.mjs.map +1 -0
- package/dist/actions/clamp/terminalRenderer.mjs +145 -0
- package/dist/actions/clamp/terminalRenderer.mjs.map +1 -0
- package/dist/actions/datalake/audit/auditLog.mjs +191 -0
- package/dist/actions/datalake/audit/auditLog.mjs.map +1 -0
- package/dist/actions/datalake/createDatalake.mjs +127 -0
- package/dist/actions/datalake/createDatalake.mjs.map +1 -0
- package/dist/actions/datalake/describeDatalake.mjs +159 -0
- package/dist/actions/datalake/describeDatalake.mjs.map +1 -0
- package/dist/actions/datalake/destroyDatalake.mjs +34 -0
- package/dist/actions/datalake/destroyDatalake.mjs.map +1 -0
- package/dist/actions/datalake/dev/downDevServer.mjs +102 -0
- package/dist/actions/datalake/dev/downDevServer.mjs.map +1 -0
- package/dist/actions/datalake/dev/index.mjs +369 -0
- package/dist/actions/datalake/dev/index.mjs.map +1 -0
- package/dist/actions/datalake/dev/logsDevServer.mjs +44 -0
- package/dist/actions/datalake/dev/logsDevServer.mjs.map +1 -0
- package/dist/actions/datalake/dev/paths.mjs +25 -0
- package/dist/actions/datalake/dev/paths.mjs.map +1 -0
- package/dist/actions/datalake/dev/resetDevServer.mjs +118 -0
- package/dist/actions/datalake/dev/resetDevServer.mjs.map +1 -0
- package/dist/actions/datalake/dev/resolveServerBin.mjs +26 -0
- package/dist/actions/datalake/dev/resolveServerBin.mjs.map +1 -0
- package/dist/actions/datalake/dev/state.mjs +62 -0
- package/dist/actions/datalake/dev/state.mjs.map +1 -0
- package/dist/actions/datalake/dev/statusDevServer.mjs +101 -0
- package/dist/actions/datalake/dev/statusDevServer.mjs.map +1 -0
- package/dist/actions/datalake/dev/upDevServer.mjs +221 -0
- package/dist/actions/datalake/dev/upDevServer.mjs.map +1 -0
- package/dist/actions/datalake/dev/waitForHealth.mjs +22 -0
- package/dist/actions/datalake/dev/waitForHealth.mjs.map +1 -0
- package/dist/actions/datalake/formatters.mjs +90 -0
- package/dist/actions/datalake/formatters.mjs.map +1 -0
- package/dist/actions/datalake/grantAccess.mjs +116 -0
- package/dist/actions/datalake/grantAccess.mjs.map +1 -0
- package/dist/actions/datalake/index.mjs +361 -0
- package/dist/actions/datalake/index.mjs.map +1 -0
- package/dist/actions/datalake/listDatalakes.mjs +54 -0
- package/dist/actions/datalake/listDatalakes.mjs.map +1 -0
- package/dist/actions/datalake/login.mjs +20 -0
- package/dist/actions/datalake/login.mjs.map +1 -0
- package/dist/actions/datalake/logout.mjs +11 -0
- package/dist/actions/datalake/logout.mjs.map +1 -0
- package/dist/actions/datalake/mintToken.mjs +37 -0
- package/dist/actions/datalake/mintToken.mjs.map +1 -0
- package/dist/actions/datalake/parseSize.mjs +21 -0
- package/dist/actions/datalake/parseSize.mjs.map +1 -0
- package/dist/actions/datalake/payloads/fetchPayload.mjs +76 -0
- package/dist/actions/datalake/payloads/fetchPayload.mjs.map +1 -0
- package/dist/actions/datalake/payloads/index.mjs +271 -0
- package/dist/actions/datalake/payloads/index.mjs.map +1 -0
- package/dist/actions/datalake/payloads/mintAndConnect.mjs +46 -0
- package/dist/actions/datalake/payloads/mintAndConnect.mjs.map +1 -0
- package/dist/actions/datalake/payloads/parsePayloadsFile.mjs +71 -0
- package/dist/actions/datalake/payloads/parsePayloadsFile.mjs.map +1 -0
- package/dist/actions/datalake/payloads/pushPayloads.mjs +181 -0
- package/dist/actions/datalake/payloads/pushPayloads.mjs.map +1 -0
- package/dist/actions/datalake/payloads/tailPayloads.mjs +106 -0
- package/dist/actions/datalake/payloads/tailPayloads.mjs.map +1 -0
- package/dist/actions/datalake/resolveTarget.mjs +15 -0
- package/dist/actions/datalake/resolveTarget.mjs.map +1 -0
- package/dist/actions/datalake/revokeAccess.mjs +108 -0
- package/dist/actions/datalake/revokeAccess.mjs.map +1 -0
- package/dist/actions/datalake/useDatalake.mjs +22 -0
- package/dist/actions/datalake/useDatalake.mjs.map +1 -0
- package/dist/actions/detect/detectAiClients.mjs +405 -0
- package/dist/actions/detect/detectAiClients.mjs.map +1 -0
- package/dist/actions/detect/index.mjs +405 -0
- package/dist/actions/detect/index.mjs.map +1 -0
- package/dist/actions/hash/algorithms/blockhash.mjs +61 -0
- package/dist/actions/hash/algorithms/blockhash.mjs.map +1 -0
- package/dist/actions/hash/algorithms/chromaprint.mjs +205 -0
- package/dist/actions/hash/algorithms/chromaprint.mjs.map +1 -0
- package/dist/actions/hash/algorithms/dhash.mjs +75 -0
- package/dist/actions/hash/algorithms/dhash.mjs.map +1 -0
- package/dist/actions/hash/algorithms/index.mjs +818 -0
- package/dist/actions/hash/algorithms/index.mjs.map +1 -0
- package/dist/actions/hash/algorithms/nilsimsa.mjs +27 -0
- package/dist/actions/hash/algorithms/nilsimsa.mjs.map +1 -0
- package/dist/actions/hash/algorithms/pdq.mjs +83 -0
- package/dist/actions/hash/algorithms/pdq.mjs.map +1 -0
- package/dist/actions/hash/algorithms/phash.mjs +71 -0
- package/dist/actions/hash/algorithms/phash.mjs.map +1 -0
- package/dist/actions/hash/algorithms/sha256.mjs +24 -0
- package/dist/actions/hash/algorithms/sha256.mjs.map +1 -0
- package/dist/actions/hash/algorithms/ssdeep.mjs +203 -0
- package/dist/actions/hash/algorithms/ssdeep.mjs.map +1 -0
- package/dist/actions/hash/algorithms/tlsh.mjs +66 -0
- package/dist/actions/hash/algorithms/tlsh.mjs.map +1 -0
- package/dist/actions/hash/algorithms/types.mjs +1 -0
- package/dist/actions/hash/algorithms/types.mjs.map +1 -0
- package/dist/actions/hash/algorithms/videoFrames.mjs +404 -0
- package/dist/actions/hash/algorithms/videoFrames.mjs.map +1 -0
- package/dist/actions/hash/algorithms/xyo.mjs +30 -0
- package/dist/actions/hash/algorithms/xyo.mjs.map +1 -0
- package/dist/actions/hash/compareHashes.mjs +823 -0
- package/dist/actions/hash/compareHashes.mjs.map +1 -0
- package/dist/actions/hash/hashInput.mjs +868 -0
- package/dist/actions/hash/hashInput.mjs.map +1 -0
- package/dist/actions/hash/index.mjs +881 -0
- package/dist/actions/hash/index.mjs.map +1 -0
- package/dist/actions/hash/lib/hamming.mjs +44 -0
- package/dist/actions/hash/lib/hamming.mjs.map +1 -0
- package/dist/actions/hash/lib/levenshtein.mjs +36 -0
- package/dist/actions/hash/lib/levenshtein.mjs.map +1 -0
- package/dist/actions/hash/lib/runBinary.mjs +54 -0
- package/dist/actions/hash/lib/runBinary.mjs.map +1 -0
- package/dist/actions/hash/lib/which.mjs +36 -0
- package/dist/actions/hash/lib/which.mjs.map +1 -0
- package/dist/actions/hash/lib/withTempfile.mjs +19 -0
- package/dist/actions/hash/lib/withTempfile.mjs.map +1 -0
- package/dist/actions/index.mjs +4615 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/actions/printVersion.mjs +12 -0
- package/dist/actions/printVersion.mjs.map +1 -0
- package/dist/actions/sync/index.mjs +51 -0
- package/dist/actions/sync/index.mjs.map +1 -0
- package/dist/actions/sync/syncAiConfig.mjs +51 -0
- package/dist/actions/sync/syncAiConfig.mjs.map +1 -0
- package/dist/actions/wallet/account/deriveAndAdd.mjs +394 -0
- package/dist/actions/wallet/account/deriveAndAdd.mjs.map +1 -0
- package/dist/actions/wallet/account/getActiveWallet.mjs +338 -0
- package/dist/actions/wallet/account/getActiveWallet.mjs.map +1 -0
- package/dist/actions/wallet/account/labelAccount.mjs +389 -0
- package/dist/actions/wallet/account/labelAccount.mjs.map +1 -0
- package/dist/actions/wallet/account/listAccounts.mjs +374 -0
- package/dist/actions/wallet/account/listAccounts.mjs.map +1 -0
- package/dist/actions/wallet/account/removeAccount.mjs +384 -0
- package/dist/actions/wallet/account/removeAccount.mjs.map +1 -0
- package/dist/actions/wallet/account/showAccount.mjs +368 -0
- package/dist/actions/wallet/account/showAccount.mjs.map +1 -0
- package/dist/actions/wallet/addressBook/storage.mjs +110 -0
- package/dist/actions/wallet/addressBook/storage.mjs.map +1 -0
- package/dist/actions/wallet/backup/exportBackup.mjs +93 -0
- package/dist/actions/wallet/backup/exportBackup.mjs.map +1 -0
- package/dist/actions/wallet/backup/importBackup.mjs +142 -0
- package/dist/actions/wallet/backup/importBackup.mjs.map +1 -0
- package/dist/actions/wallet/balance/getBalance.mjs +434 -0
- package/dist/actions/wallet/balance/getBalance.mjs.map +1 -0
- package/dist/actions/wallet/client/walletClient.mjs +64 -0
- package/dist/actions/wallet/client/walletClient.mjs.map +1 -0
- package/dist/actions/wallet/contact/contactActions.mjs +120 -0
- package/dist/actions/wallet/contact/contactActions.mjs.map +1 -0
- package/dist/actions/wallet/contact/storage.mjs +69 -0
- package/dist/actions/wallet/contact/storage.mjs.map +1 -0
- package/dist/actions/wallet/index.mjs +1439 -0
- package/dist/actions/wallet/index.mjs.map +1 -0
- package/dist/actions/wallet/network/networkActions.mjs +137 -0
- package/dist/actions/wallet/network/networkActions.mjs.map +1 -0
- package/dist/actions/wallet/network/storage.mjs +93 -0
- package/dist/actions/wallet/network/storage.mjs.map +1 -0
- package/dist/actions/wallet/password/changePassword.mjs +282 -0
- package/dist/actions/wallet/password/changePassword.mjs.map +1 -0
- package/dist/actions/wallet/password/getActiveKey.mjs +297 -0
- package/dist/actions/wallet/password/getActiveKey.mjs.map +1 -0
- package/dist/actions/wallet/password/initOrUnlock.mjs +337 -0
- package/dist/actions/wallet/password/initOrUnlock.mjs.map +1 -0
- package/dist/actions/wallet/password/passwordStorage.mjs +69 -0
- package/dist/actions/wallet/password/passwordStorage.mjs.map +1 -0
- package/dist/actions/wallet/password/setPassword.mjs +138 -0
- package/dist/actions/wallet/password/setPassword.mjs.map +1 -0
- package/dist/actions/wallet/password/validatePassword.mjs +123 -0
- package/dist/actions/wallet/password/validatePassword.mjs.map +1 -0
- package/dist/actions/wallet/passwordKey.mjs +87 -0
- package/dist/actions/wallet/passwordKey.mjs.map +1 -0
- package/dist/actions/wallet/paths.mjs +26 -0
- package/dist/actions/wallet/paths.mjs.map +1 -0
- package/dist/actions/wallet/prompt.mjs +93 -0
- package/dist/actions/wallet/prompt.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/createPhrase.mjs +392 -0
- package/dist/actions/wallet/seedPhrase/createPhrase.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/exportPhrase.mjs +334 -0
- package/dist/actions/wallet/seedPhrase/exportPhrase.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/idGen.mjs +11 -0
- package/dist/actions/wallet/seedPhrase/idGen.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/importPhrase.mjs +393 -0
- package/dist/actions/wallet/seedPhrase/importPhrase.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/listPhrases.mjs +62 -0
- package/dist/actions/wallet/seedPhrase/listPhrases.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/phraseStorage.mjs +89 -0
- package/dist/actions/wallet/seedPhrase/phraseStorage.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/removePhrase.mjs +366 -0
- package/dist/actions/wallet/seedPhrase/removePhrase.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/renamePhrase.mjs +78 -0
- package/dist/actions/wallet/seedPhrase/renamePhrase.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/types.mjs +1 -0
- package/dist/actions/wallet/seedPhrase/types.mjs.map +1 -0
- package/dist/actions/wallet/seedPhrase/usePhrase.mjs +83 -0
- package/dist/actions/wallet/seedPhrase/usePhrase.mjs.map +1 -0
- package/dist/actions/wallet/session/machineId.mjs +145 -0
- package/dist/actions/wallet/session/machineId.mjs.map +1 -0
- package/dist/actions/wallet/session/sessionCache.mjs +221 -0
- package/dist/actions/wallet/session/sessionCache.mjs.map +1 -0
- package/dist/actions/wallet/session/unlock.mjs +307 -0
- package/dist/actions/wallet/session/unlock.mjs.map +1 -0
- package/dist/actions/wallet/sign/signPayload.mjs +637 -0
- package/dist/actions/wallet/sign/signPayload.mjs.map +1 -0
- package/dist/actions/wallet/storage.mjs +51 -0
- package/dist/actions/wallet/storage.mjs.map +1 -0
- package/dist/actions/wallet/transaction/broadcastTransaction.mjs +453 -0
- package/dist/actions/wallet/transaction/broadcastTransaction.mjs.map +1 -0
- package/dist/actions/wallet/transaction/sendTransaction.mjs +457 -0
- package/dist/actions/wallet/transaction/sendTransaction.mjs.map +1 -0
- package/dist/actions/wallet/transaction/signTransactionFile.mjs +378 -0
- package/dist/actions/wallet/transaction/signTransactionFile.mjs.map +1 -0
- package/dist/actions/xyo/index.mjs +138 -0
- package/dist/actions/xyo/index.mjs.map +1 -0
- package/dist/actions/xyo/transaction/index.mjs +138 -0
- package/dist/actions/xyo/transaction/index.mjs.map +1 -0
- package/dist/actions/xyo/transaction/validateTransactions.mjs +138 -0
- package/dist/actions/xyo/transaction/validateTransactions.mjs.map +1 -0
- package/dist/aries.mjs +8466 -0
- package/dist/aries.mjs.map +1 -0
- package/dist/bin/aries.mjs +8472 -0
- package/dist/bin/aries.mjs.map +1 -0
- package/dist/commands/aiCommand.mjs +492 -0
- package/dist/commands/aiCommand.mjs.map +1 -0
- package/dist/commands/auditAiCommand.mjs +119 -0
- package/dist/commands/auditAiCommand.mjs.map +1 -0
- package/dist/commands/auditCommand.mjs +857 -0
- package/dist/commands/auditCommand.mjs.map +1 -0
- package/dist/commands/auditInstallCommand.mjs +324 -0
- package/dist/commands/auditInstallCommand.mjs.map +1 -0
- package/dist/commands/auditListCommand.mjs +107 -0
- package/dist/commands/auditListCommand.mjs.map +1 -0
- package/dist/commands/auditOpenCommand.mjs +51 -0
- package/dist/commands/auditOpenCommand.mjs.map +1 -0
- package/dist/commands/auditSearchCommand.mjs +98 -0
- package/dist/commands/auditSearchCommand.mjs.map +1 -0
- package/dist/commands/auditShowCommand.mjs +123 -0
- package/dist/commands/auditShowCommand.mjs.map +1 -0
- package/dist/commands/auditStatusCommand.mjs +105 -0
- package/dist/commands/auditStatusCommand.mjs.map +1 -0
- package/dist/commands/clampCommand.mjs +2328 -0
- package/dist/commands/clampCommand.mjs.map +1 -0
- package/dist/commands/clampPolicyCommand.mjs +184 -0
- package/dist/commands/clampPolicyCommand.mjs.map +1 -0
- package/dist/commands/clampPolicyInitCommand.mjs +63 -0
- package/dist/commands/clampPolicyInitCommand.mjs.map +1 -0
- package/dist/commands/clampPolicyListCommand.mjs +56 -0
- package/dist/commands/clampPolicyListCommand.mjs.map +1 -0
- package/dist/commands/clampPolicyShowCommand.mjs +83 -0
- package/dist/commands/clampPolicyShowCommand.mjs.map +1 -0
- package/dist/commands/clampRunCommand.mjs +2137 -0
- package/dist/commands/clampRunCommand.mjs.map +1 -0
- package/dist/commands/datalakeAuditCommand.mjs +273 -0
- package/dist/commands/datalakeAuditCommand.mjs.map +1 -0
- package/dist/commands/datalakeCommand.mjs +1637 -0
- package/dist/commands/datalakeCommand.mjs.map +1 -0
- package/dist/commands/datalakeCreateCommand.mjs +189 -0
- package/dist/commands/datalakeCreateCommand.mjs.map +1 -0
- package/dist/commands/datalakeDescribeCommand.mjs +172 -0
- package/dist/commands/datalakeDescribeCommand.mjs.map +1 -0
- package/dist/commands/datalakeDestroyCommand.mjs +53 -0
- package/dist/commands/datalakeDestroyCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevCommand.mjs +470 -0
- package/dist/commands/datalakeDevCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevDownCommand.mjs +111 -0
- package/dist/commands/datalakeDevDownCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevLogsCommand.mjs +65 -0
- package/dist/commands/datalakeDevLogsCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevResetCommand.mjs +125 -0
- package/dist/commands/datalakeDevResetCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevStatusCommand.mjs +110 -0
- package/dist/commands/datalakeDevStatusCommand.mjs.map +1 -0
- package/dist/commands/datalakeDevUpCommand.mjs +268 -0
- package/dist/commands/datalakeDevUpCommand.mjs.map +1 -0
- package/dist/commands/datalakeFetchCommand.mjs +106 -0
- package/dist/commands/datalakeFetchCommand.mjs.map +1 -0
- package/dist/commands/datalakeGrantCommand.mjs +147 -0
- package/dist/commands/datalakeGrantCommand.mjs.map +1 -0
- package/dist/commands/datalakeListCommand.mjs +61 -0
- package/dist/commands/datalakeListCommand.mjs.map +1 -0
- package/dist/commands/datalakeLoginCommand.mjs +39 -0
- package/dist/commands/datalakeLoginCommand.mjs.map +1 -0
- package/dist/commands/datalakeLogoutCommand.mjs +20 -0
- package/dist/commands/datalakeLogoutCommand.mjs.map +1 -0
- package/dist/commands/datalakePushCommand.mjs +214 -0
- package/dist/commands/datalakePushCommand.mjs.map +1 -0
- package/dist/commands/datalakeRevokeCommand.mjs +127 -0
- package/dist/commands/datalakeRevokeCommand.mjs.map +1 -0
- package/dist/commands/datalakeTailCommand.mjs +144 -0
- package/dist/commands/datalakeTailCommand.mjs.map +1 -0
- package/dist/commands/datalakeTokenCommand.mjs +61 -0
- package/dist/commands/datalakeTokenCommand.mjs.map +1 -0
- package/dist/commands/datalakeUseCommand.mjs +35 -0
- package/dist/commands/datalakeUseCommand.mjs.map +1 -0
- package/dist/commands/detectCommand.mjs +419 -0
- package/dist/commands/detectCommand.mjs.map +1 -0
- package/dist/commands/hashCommand.mjs +976 -0
- package/dist/commands/hashCommand.mjs.map +1 -0
- package/dist/commands/hashCompareCommand.mjs +865 -0
- package/dist/commands/hashCompareCommand.mjs.map +1 -0
- package/dist/commands/index.mjs +8461 -0
- package/dist/commands/index.mjs.map +1 -0
- package/dist/commands/syncCommand.mjs +66 -0
- package/dist/commands/syncCommand.mjs.map +1 -0
- package/dist/commands/versionCommand.mjs +24 -0
- package/dist/commands/versionCommand.mjs.map +1 -0
- package/dist/commands/walletAccountCommand.mjs +536 -0
- package/dist/commands/walletAccountCommand.mjs.map +1 -0
- package/dist/commands/walletAccountDeriveCommand.mjs +415 -0
- package/dist/commands/walletAccountDeriveCommand.mjs.map +1 -0
- package/dist/commands/walletAccountLabelCommand.mjs +405 -0
- package/dist/commands/walletAccountLabelCommand.mjs.map +1 -0
- package/dist/commands/walletAccountListCommand.mjs +381 -0
- package/dist/commands/walletAccountListCommand.mjs.map +1 -0
- package/dist/commands/walletAccountRemoveCommand.mjs +396 -0
- package/dist/commands/walletAccountRemoveCommand.mjs.map +1 -0
- package/dist/commands/walletAccountShowCommand.mjs +380 -0
- package/dist/commands/walletAccountShowCommand.mjs.map +1 -0
- package/dist/commands/walletBackupCommand.mjs +222 -0
- package/dist/commands/walletBackupCommand.mjs.map +1 -0
- package/dist/commands/walletBackupExportCommand.mjs +107 -0
- package/dist/commands/walletBackupExportCommand.mjs.map +1 -0
- package/dist/commands/walletBackupImportCommand.mjs +154 -0
- package/dist/commands/walletBackupImportCommand.mjs.map +1 -0
- package/dist/commands/walletBalanceCommand.mjs +448 -0
- package/dist/commands/walletBalanceCommand.mjs.map +1 -0
- package/dist/commands/walletCommand.mjs +1968 -0
- package/dist/commands/walletCommand.mjs.map +1 -0
- package/dist/commands/walletContactAddCommand.mjs +111 -0
- package/dist/commands/walletContactAddCommand.mjs.map +1 -0
- package/dist/commands/walletContactCommand.mjs +184 -0
- package/dist/commands/walletContactCommand.mjs.map +1 -0
- package/dist/commands/walletContactListCommand.mjs +66 -0
- package/dist/commands/walletContactListCommand.mjs.map +1 -0
- package/dist/commands/walletContactRemoveCommand.mjs +97 -0
- package/dist/commands/walletContactRemoveCommand.mjs.map +1 -0
- package/dist/commands/walletContactRenameCommand.mjs +114 -0
- package/dist/commands/walletContactRenameCommand.mjs.map +1 -0
- package/dist/commands/walletCreateCommand.mjs +407 -0
- package/dist/commands/walletCreateCommand.mjs.map +1 -0
- package/dist/commands/walletExportCommand.mjs +345 -0
- package/dist/commands/walletExportCommand.mjs.map +1 -0
- package/dist/commands/walletImportCommand.mjs +413 -0
- package/dist/commands/walletImportCommand.mjs.map +1 -0
- package/dist/commands/walletListCommand.mjs +69 -0
- package/dist/commands/walletListCommand.mjs.map +1 -0
- package/dist/commands/walletLockCommand.mjs +56 -0
- package/dist/commands/walletLockCommand.mjs.map +1 -0
- package/dist/commands/walletNetworkAddCommand.mjs +131 -0
- package/dist/commands/walletNetworkAddCommand.mjs.map +1 -0
- package/dist/commands/walletNetworkCommand.mjs +206 -0
- package/dist/commands/walletNetworkCommand.mjs.map +1 -0
- package/dist/commands/walletNetworkListCommand.mjs +104 -0
- package/dist/commands/walletNetworkListCommand.mjs.map +1 -0
- package/dist/commands/walletNetworkRemoveCommand.mjs +112 -0
- package/dist/commands/walletNetworkRemoveCommand.mjs.map +1 -0
- package/dist/commands/walletNetworkUseCommand.mjs +110 -0
- package/dist/commands/walletNetworkUseCommand.mjs.map +1 -0
- package/dist/commands/walletPasswordChangeCommand.mjs +291 -0
- package/dist/commands/walletPasswordChangeCommand.mjs.map +1 -0
- package/dist/commands/walletPasswordCommand.mjs +301 -0
- package/dist/commands/walletPasswordCommand.mjs.map +1 -0
- package/dist/commands/walletRemoveCommand.mjs +378 -0
- package/dist/commands/walletRemoveCommand.mjs.map +1 -0
- package/dist/commands/walletRenameCommand.mjs +94 -0
- package/dist/commands/walletRenameCommand.mjs.map +1 -0
- package/dist/commands/walletSignCommand.mjs +662 -0
- package/dist/commands/walletSignCommand.mjs.map +1 -0
- package/dist/commands/walletTxBroadcastCommand.mjs +473 -0
- package/dist/commands/walletTxBroadcastCommand.mjs.map +1 -0
- package/dist/commands/walletTxCommand.mjs +612 -0
- package/dist/commands/walletTxCommand.mjs.map +1 -0
- package/dist/commands/walletTxSendCommand.mjs +492 -0
- package/dist/commands/walletTxSendCommand.mjs.map +1 -0
- package/dist/commands/walletTxSignCommand.mjs +403 -0
- package/dist/commands/walletTxSignCommand.mjs.map +1 -0
- package/dist/commands/walletUnlockCommand.mjs +308 -0
- package/dist/commands/walletUnlockCommand.mjs.map +1 -0
- package/dist/commands/walletUseCommand.mjs +95 -0
- package/dist/commands/walletUseCommand.mjs.map +1 -0
- package/dist/commands/xyoCommand.mjs +188 -0
- package/dist/commands/xyoCommand.mjs.map +1 -0
- package/dist/commands/xyoTxCommand.mjs +178 -0
- package/dist/commands/xyoTxCommand.mjs.map +1 -0
- package/dist/commands/xyoTxValidateCommand.mjs +168 -0
- package/dist/commands/xyoTxValidateCommand.mjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +8466 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types/modules.d.mjs +1 -0
- package/dist/types/modules.d.mjs.map +1 -0
- package/package.json +197 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/datalake/payloads/mintAndConnect.ts","../../src/actions/datalake/resolveTarget.ts","../../src/actions/datalake/payloads/parsePayloadsFile.ts","../../src/actions/datalake/payloads/pushPayloads.ts","../../src/commands/datalakePushCommand.ts"],"sourcesContent":["import type { PayloadsClient } from '@xylabs/aries-datalake-client'\nimport { createDatalakeClient, RestPayloadsClient } from '@xylabs/aries-datalake-client'\nimport type { DatalakeRole } from '@xylabs/aries-datalake-core'\nimport { XyoPayloadsClient } from '@xylabs/aries-datalake-xl1-adapter'\n\nimport { resolveTarget } from '../resolveTarget.ts'\n\nexport interface Connection {\n client: PayloadsClient\n datalakeName: string\n datalakeId: string\n url: string\n transport: 'native' | 'xl1-sdk'\n}\n\nexport interface MintAndConnectOptions {\n idOrName?: string\n role: DatalakeRole\n ttlSeconds?: number\n /**\n * When `true`, use the real `@xyo-network/xl1-protocol-sdk`\n * `RestDataLakeRunner` / `RestDataLakeViewer` for insert and get,\n * proving byte-level wire compatibility. Other methods fall back to the\n * native `RestPayloadsClient` since the XL1 SDK doesn't implement them.\n */\n useXl1Sdk?: boolean\n}\n\n/**\n * Resolves the target datalake, mints a scoped token via the control plane,\n * and returns a data-plane client wired with that token. Centralizes what\n * every payload command has to do before it can talk to the data plane.\n */\nexport async function mintAndConnect(options: MintAndConnectOptions): Promise<Connection> {\n const controlClient = createDatalakeClient()\n const target = resolveTarget(options.idOrName)\n const descriptor = await controlClient.describe(target)\n if (!descriptor.url) {\n throw new Error(`Datalake ${descriptor.name} has no URL yet (status=${descriptor.status})`)\n }\n const token = await controlClient.mintToken({\n datalakeId: descriptor.id,\n role: options.role,\n ttlSeconds: options.ttlSeconds ?? 3600,\n })\n const clientOptions = {\n baseUrl: token.url,\n datalakeId: descriptor.id,\n authToken: token.token,\n }\n return {\n client: options.useXl1Sdk\n ? new XyoPayloadsClient(clientOptions)\n : new RestPayloadsClient(clientOptions),\n datalakeName: descriptor.name,\n datalakeId: descriptor.id,\n url: token.url,\n transport: options.useXl1Sdk ? 'xl1-sdk' : 'native',\n }\n}\n","import { getDefaultDatalake } from '@xylabs/aries-datalake-client'\n\n/**\n * Resolves the target datalake name/id for commands that take an optional\n * argument. Falls back to the one set via `aries datalake use`.\n */\nexport function resolveTarget(argValue: string | undefined): string {\n const target = argValue ?? getDefaultDatalake()\n if (!target) {\n throw new Error(\n 'No datalake specified and no default set. '\n + 'Pass <name> or run `aries datalake use <name>`.',\n )\n }\n return target\n}\n","import { readFileSync } from 'node:fs'\nimport path from 'node:path'\n\nimport type { Payload } from '@xylabs/aries-datalake-core'\n\n/**\n * Parses a file into an array of payloads. Supports two formats:\n *\n * - `.json`: must be either a top-level array of payloads, or `{ payloads: [...] }`\n * - `.jsonl` / `.ndjson`: one JSON object per line\n *\n * Each payload must have `schema` and `$hash` strings. Invalid rows throw\n * with the line number for JSONL or the array index for JSON.\n */\nexport function parsePayloadsFile(filePath: string): Payload[] {\n const absolute = path.resolve(filePath)\n const raw = readFileSync(absolute, 'utf8')\n const ext = path.extname(absolute).toLowerCase()\n\n if (ext === '.jsonl' || ext === '.ndjson') {\n return parseJsonl(raw)\n }\n if (ext === '.json') {\n return parseJson(raw)\n }\n\n // Fall back on content sniffing — accept JSONL if no `.json` extension.\n const trimmed = raw.trim()\n if (trimmed.startsWith('{') && trimmed.endsWith('}') && trimmed.includes('\\n{')) {\n return parseJsonl(raw)\n }\n return parseJson(raw)\n}\n\nfunction parseJson(raw: string): Payload[] {\n const parsed: unknown = JSON.parse(raw)\n const candidates: unknown[] | undefined = Array.isArray(parsed)\n ? parsed\n : isPayloadsEnvelope(parsed)\n ? parsed.payloads\n : undefined\n if (!candidates) {\n throw new Error('Expected an array of payloads or { \"payloads\": [...] }')\n }\n const result: Payload[] = []\n for (const [index, candidate] of candidates.entries()) {\n validatePayload(candidate, `index ${index}`)\n result.push(candidate)\n }\n return result\n}\n\nfunction parseJsonl(raw: string): Payload[] {\n const lines = raw.split('\\n')\n const payloads: Payload[] = []\n for (const [i, line_] of lines.entries()) {\n const line = line_?.trim()\n if (!line) continue\n let parsed: unknown\n try {\n parsed = JSON.parse(line)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n throw new Error(`Line ${i + 1}: invalid JSON (${message})`, { cause: error })\n }\n validatePayload(parsed, `line ${i + 1}`)\n payloads.push(parsed)\n }\n return payloads\n}\n\nfunction isPayloadsEnvelope(value: unknown): value is { payloads: Payload[] } {\n if (typeof value !== 'object' || value === null) return false\n const record = value as Record<string, unknown>\n return Array.isArray(record.payloads)\n}\n\nfunction validatePayload(value: unknown, where: string): asserts value is Payload {\n if (typeof value !== 'object' || value === null) {\n throw new Error(`${where}: not an object`)\n }\n const record = value as Record<string, unknown>\n if (typeof record.schema !== 'string' || record.schema.length === 0) {\n throw new Error(`${where}: missing or invalid \\`schema\\``)\n }\n if (typeof record.$hash !== 'string' || record.$hash.length === 0) {\n throw new Error(`${where}: missing or invalid \\`$hash\\``)\n }\n}\n","import type { Payload } from '@xylabs/aries-datalake-core'\nimport { xyoVerifyPayloadHash } from '@xylabs/aries-datalake-core'\nimport chalk from 'chalk'\n\nimport { mintAndConnect } from './mintAndConnect.ts'\nimport { parsePayloadsFile } from './parsePayloadsFile.ts'\n\nexport interface PushPayloadsOptions {\n idOrName?: string\n /** Path to a JSON or JSONL file containing payloads. */\n file: string\n /** Max payloads per HTTP request. Data plane caps at 1 000. */\n batchSize?: number\n /**\n * If true, each payload's `$hash` is checked locally against the\n * XL1-canonical content digest before we send. Catches hash/content\n * drift early with a pointer to the exact offending hash.\n */\n verify?: boolean\n /**\n * If true, use the real `@xyo-network/xl1-protocol-sdk`\n * `RestDataLakeRunner` for the upload — exercises the XL1 SDK's exact\n * wire format against our XL1-compat routes.\n */\n xl1Sdk?: boolean\n}\n\nconst DEFAULT_BATCH_SIZE = 500\n\nfunction printRejectedList(label: string, hashes: string[], cap: number, color: (s: string) => string): void {\n console.log(color(label))\n for (const hash of hashes.slice(0, cap)) {\n console.log(` ${hash}`)\n }\n if (hashes.length > cap) {\n console.log(chalk.gray(` ... and ${hashes.length - cap} more`))\n }\n}\n\n/**\n * Returns `true` when every payload's `$hash` matches the XL1-canonical\n * digest. On failure, prints the offending hashes and sets `process.exitCode = 1`.\n */\nasync function verifyLocally(payloads: Payload[]): Promise<boolean> {\n const mismatches: string[] = []\n for (const payload of payloads) {\n if (!(await xyoVerifyPayloadHash(payload))) mismatches.push(payload.$hash)\n }\n if (mismatches.length === 0) {\n console.log(chalk.gray(`verified ${payloads.length} payload hashes locally (XL1-canonical)`))\n return true\n }\n printRejectedList(\n `refusing to push: ${mismatches.length} payload(s) have mismatched $hash`,\n mismatches,\n 10,\n chalk.red,\n )\n process.exitCode = 1\n return false\n}\n\n/**\n * Reads a payloads file and bulk-inserts into the target datalake. Splits\n * into multiple requests if the file exceeds the batch size, reporting\n * cumulative totals.\n */\nexport async function pushPayloads(options: PushPayloadsOptions): Promise<void> {\n const payloads = parsePayloadsFile(options.file)\n if (payloads.length === 0) {\n console.log(chalk.yellow(`${options.file} contained 0 payloads — nothing to push`))\n return\n }\n\n if (options.verify && !(await verifyLocally(payloads))) return\n\n const connection = await mintAndConnect({\n idOrName: options.idOrName, role: 'runner', useXl1Sdk: options.xl1Sdk,\n })\n console.log(chalk.gray(\n `pushing ${payloads.length} payloads to ${connection.datalakeName} `\n + `(${connection.datalakeId}) via ${connection.transport}...`,\n ))\n\n const batchSize = options.batchSize ?? DEFAULT_BATCH_SIZE\n let inserted = 0\n let duplicates = 0\n const rejected: string[] = []\n\n for (let offset = 0; offset < payloads.length; offset += batchSize) {\n const batch = payloads.slice(offset, offset + batchSize)\n const result = await connection.client.insert(batch)\n inserted += result.inserted\n duplicates += result.duplicates\n rejected.push(...result.rejected)\n }\n\n console.log(chalk.green(\n `push complete: inserted=${inserted} duplicates=${duplicates} rejected=${rejected.length}`,\n ))\n if (rejected.length > 0) {\n printRejectedList('rejected hashes:', rejected, 20, chalk.yellow)\n }\n}\n","import type { CommandModule } from 'yargs'\n\nimport { pushPayloads } from '../actions/datalake/payloads/index.ts'\n\nexport const datalakePushCommand: CommandModule = {\n command: 'push <file> [name]',\n describe: 'Insert payloads from a JSON or JSONL file into a datalake',\n builder: yargs =>\n yargs\n .positional('file', {\n type: 'string',\n describe: 'Path to a .json (array) or .jsonl (one payload per line) file',\n demandOption: true,\n })\n .positional('name', {\n type: 'string',\n describe: 'Target datalake name or id (defaults to current)',\n })\n .option('batch-size', {\n type: 'number',\n default: 500,\n describe: 'Max payloads per HTTP request',\n })\n .option('verify', {\n type: 'boolean',\n default: false,\n describe: 'Verify each payload\\'s $hash against content locally before pushing',\n })\n .option('xl1-sdk', {\n type: 'boolean',\n default: false,\n describe: 'Use the real @xyo-network/xl1-protocol-sdk RestDataLakeRunner',\n }),\n handler: async (argv) => {\n await pushPayloads({\n file: argv.file as string,\n idOrName: argv.name as string | undefined,\n batchSize: argv['batch-size'] as number,\n verify: argv.verify as boolean,\n xl1Sdk: argv['xl1-sdk'] as boolean,\n })\n },\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// src/actions/datalake/formatters.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
var STATUS_COLORS = {
|
|
4
|
+
pending: chalk.gray,
|
|
5
|
+
provisioning: chalk.yellow,
|
|
6
|
+
ready: chalk.green,
|
|
7
|
+
resizing: chalk.yellow,
|
|
8
|
+
deprovisioning: chalk.yellow,
|
|
9
|
+
deleted: chalk.gray,
|
|
10
|
+
error: chalk.red
|
|
11
|
+
};
|
|
12
|
+
function formatBytes(bytes) {
|
|
13
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
14
|
+
if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
15
|
+
if (bytes < 1024 ** 3) return `${(bytes / 1024 ** 2).toFixed(1)} MB`;
|
|
16
|
+
if (bytes < 1024 ** 4) return `${(bytes / 1024 ** 3).toFixed(1)} GB`;
|
|
17
|
+
return `${(bytes / 1024 ** 4).toFixed(1)} TB`;
|
|
18
|
+
}
|
|
19
|
+
function formatStatus(status) {
|
|
20
|
+
const colorize = STATUS_COLORS[status] ?? chalk.white;
|
|
21
|
+
return colorize(status);
|
|
22
|
+
}
|
|
23
|
+
function printRateLimits(limits) {
|
|
24
|
+
const parts = [];
|
|
25
|
+
if (limits.authenticatedPerMinute !== void 0) parts.push(`auth=${limits.authenticatedPerMinute}/min`);
|
|
26
|
+
if (limits.anonymousPerMinute !== void 0) parts.push(`anon=${limits.anonymousPerMinute}/min`);
|
|
27
|
+
if (limits.burstFactor !== void 0) parts.push(`burst=${limits.burstFactor}x`);
|
|
28
|
+
if (parts.length > 0) {
|
|
29
|
+
console.log(` ${chalk.gray("limits:")} ${parts.join(" ")}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function printUsage(usage) {
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk.cyan(" usage"));
|
|
35
|
+
console.log(` ${chalk.gray("payloads:")} ${usage.payloadCount}`);
|
|
36
|
+
console.log(` ${chalk.gray("stored:")} ${formatBytes(usage.bytesStored)} / ${formatBytes(usage.bytesStoredLimit)}`);
|
|
37
|
+
console.log(` ${chalk.gray("reads 24h:")} ${usage.readsLast24h}`);
|
|
38
|
+
console.log(` ${chalk.gray("writes 24h:")} ${usage.writesLast24h}`);
|
|
39
|
+
}
|
|
40
|
+
function printAcl(acl) {
|
|
41
|
+
if (acl.length === 0) return;
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(chalk.cyan(" access"));
|
|
44
|
+
for (const entry of acl) {
|
|
45
|
+
const principal = entry.principal === "public" ? chalk.yellow("public") : entry.principal;
|
|
46
|
+
console.log(` ${principal.padEnd(24)} ${chalk.magenta(entry.role)} ${chalk.gray(entry.grantedAt)}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function printDatalakeDetail(datalake) {
|
|
50
|
+
console.log(chalk.cyan(`
|
|
51
|
+
${datalake.name}`));
|
|
52
|
+
console.log(` ${chalk.gray("id:")} ${datalake.id}`);
|
|
53
|
+
console.log(` ${chalk.gray("status:")} ${formatStatus(datalake.status)}`);
|
|
54
|
+
if (datalake.url) {
|
|
55
|
+
console.log(` ${chalk.gray("url:")} ${datalake.url}`);
|
|
56
|
+
}
|
|
57
|
+
console.log(` ${chalk.gray("owner:")} ${datalake.ownerId}`);
|
|
58
|
+
console.log(` ${chalk.gray("tier:")} ${datalake.config.tier}`);
|
|
59
|
+
console.log(` ${chalk.gray("region:")} ${datalake.config.region ?? "\u2014"}`);
|
|
60
|
+
console.log(` ${chalk.gray("size:")} ${datalake.config.sizeBytes ? formatBytes(datalake.config.sizeBytes) : "\u2014"}`);
|
|
61
|
+
console.log(` ${chalk.gray("iops:")} ${datalake.config.iops ?? "\u2014"}`);
|
|
62
|
+
console.log(` ${chalk.gray("retention:")} ${datalake.config.retentionDays ?? "forever"}`);
|
|
63
|
+
if (datalake.config.verifyHashes) {
|
|
64
|
+
console.log(` ${chalk.gray("verify:")} ${chalk.green("hashes enforced")}`);
|
|
65
|
+
}
|
|
66
|
+
if (datalake.config.rateLimits) printRateLimits(datalake.config.rateLimits);
|
|
67
|
+
console.log(` ${chalk.gray("created:")} ${datalake.createdAt}`);
|
|
68
|
+
console.log(` ${chalk.gray("updated:")} ${datalake.updatedAt}`);
|
|
69
|
+
if (datalake.usage) printUsage(datalake.usage);
|
|
70
|
+
printAcl(datalake.acl);
|
|
71
|
+
if (datalake.errorMessage) {
|
|
72
|
+
console.log();
|
|
73
|
+
console.log(` ${chalk.red("error:")} ${datalake.errorMessage}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/actions/datalake/resolveTarget.ts
|
|
78
|
+
import { getDefaultDatalake } from "@xylabs/aries-datalake-client";
|
|
79
|
+
function resolveTarget(argValue) {
|
|
80
|
+
const target = argValue ?? getDefaultDatalake();
|
|
81
|
+
if (!target) {
|
|
82
|
+
throw new Error(
|
|
83
|
+
"No datalake specified and no default set. Pass <name> or run `aries datalake use <name>`."
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
return target;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// src/actions/datalake/revokeAccess.ts
|
|
90
|
+
import { createDatalakeClient } from "@xylabs/aries-datalake-client";
|
|
91
|
+
import chalk2 from "chalk";
|
|
92
|
+
async function revokeAccess(options) {
|
|
93
|
+
const client = createDatalakeClient();
|
|
94
|
+
const target = resolveTarget(options.idOrName);
|
|
95
|
+
const descriptor = await client.describe(target);
|
|
96
|
+
const updated = await client.revoke({
|
|
97
|
+
datalakeId: descriptor.id,
|
|
98
|
+
principal: options.principal
|
|
99
|
+
});
|
|
100
|
+
console.log(chalk2.green(`revoked access for ${options.principal} on ${updated.name}`));
|
|
101
|
+
printDatalakeDetail(updated);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// src/commands/datalakeRevokeCommand.ts
|
|
105
|
+
var datalakeRevokeCommand = {
|
|
106
|
+
command: "revoke <name> <principal>",
|
|
107
|
+
describe: "Revoke a principal's access to a datalake",
|
|
108
|
+
builder: (yargs) => yargs.positional("name", {
|
|
109
|
+
type: "string",
|
|
110
|
+
describe: "Datalake name or id",
|
|
111
|
+
demandOption: true
|
|
112
|
+
}).positional("principal", {
|
|
113
|
+
type: "string",
|
|
114
|
+
describe: 'User id, or the literal "public"',
|
|
115
|
+
demandOption: true
|
|
116
|
+
}),
|
|
117
|
+
handler: async (argv) => {
|
|
118
|
+
await revokeAccess({
|
|
119
|
+
idOrName: argv.name,
|
|
120
|
+
principal: argv.principal
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
export {
|
|
125
|
+
datalakeRevokeCommand
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=datalakeRevokeCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/datalake/formatters.ts","../../src/actions/datalake/resolveTarget.ts","../../src/actions/datalake/revokeAccess.ts","../../src/commands/datalakeRevokeCommand.ts"],"sourcesContent":["import type {\n DatalakeDescriptor, DatalakeStatus, DatalakeUsage, RateLimitOverrides,\n} from '@xylabs/aries-datalake-core'\nimport chalk from 'chalk'\n\nconst STATUS_COLORS: Record<DatalakeStatus, (s: string) => string> = {\n pending: chalk.gray,\n provisioning: chalk.yellow,\n ready: chalk.green,\n resizing: chalk.yellow,\n deprovisioning: chalk.yellow,\n deleted: chalk.gray,\n error: chalk.red,\n}\n\nexport function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(1)} KB`\n if (bytes < 1024 ** 3) return `${(bytes / 1024 ** 2).toFixed(1)} MB`\n if (bytes < 1024 ** 4) return `${(bytes / 1024 ** 3).toFixed(1)} GB`\n return `${(bytes / 1024 ** 4).toFixed(1)} TB`\n}\n\nexport function formatStatus(status: DatalakeStatus): string {\n const colorize = STATUS_COLORS[status] ?? chalk.white\n return colorize(status)\n}\n\nexport function printDatalakeRow(datalake: DatalakeDescriptor): void {\n const size = datalake.config.sizeBytes ? formatBytes(datalake.config.sizeBytes) : '—'\n const name = chalk.white(datalake.name.padEnd(20))\n const tier = chalk.cyan(datalake.config.tier.padEnd(8))\n const region = chalk.gray((datalake.config.region ?? '—').padEnd(12))\n const status = formatStatus(datalake.status).padEnd(14)\n console.log(` ${name} ${tier} ${region} ${size.padStart(8)} ${status}`)\n}\n\nfunction printRateLimits(limits: RateLimitOverrides): void {\n const parts: string[] = []\n if (limits.authenticatedPerMinute !== undefined) parts.push(`auth=${limits.authenticatedPerMinute}/min`)\n if (limits.anonymousPerMinute !== undefined) parts.push(`anon=${limits.anonymousPerMinute}/min`)\n if (limits.burstFactor !== undefined) parts.push(`burst=${limits.burstFactor}x`)\n if (parts.length > 0) {\n console.log(` ${chalk.gray('limits:')} ${parts.join(' ')}`)\n }\n}\n\nfunction printUsage(usage: DatalakeUsage): void {\n console.log()\n console.log(chalk.cyan(' usage'))\n console.log(` ${chalk.gray('payloads:')} ${usage.payloadCount}`)\n console.log(` ${chalk.gray('stored:')} ${formatBytes(usage.bytesStored)} / ${formatBytes(usage.bytesStoredLimit)}`)\n console.log(` ${chalk.gray('reads 24h:')} ${usage.readsLast24h}`)\n console.log(` ${chalk.gray('writes 24h:')} ${usage.writesLast24h}`)\n}\n\nfunction printAcl(acl: DatalakeDescriptor['acl']): void {\n if (acl.length === 0) return\n console.log()\n console.log(chalk.cyan(' access'))\n for (const entry of acl) {\n const principal = entry.principal === 'public' ? chalk.yellow('public') : entry.principal\n console.log(` ${principal.padEnd(24)} ${chalk.magenta(entry.role)} ${chalk.gray(entry.grantedAt)}`)\n }\n}\n\nexport function printDatalakeDetail(datalake: DatalakeDescriptor): void {\n console.log(chalk.cyan(`\\n${datalake.name}`))\n console.log(` ${chalk.gray('id:')} ${datalake.id}`)\n console.log(` ${chalk.gray('status:')} ${formatStatus(datalake.status)}`)\n if (datalake.url) {\n console.log(` ${chalk.gray('url:')} ${datalake.url}`)\n }\n console.log(` ${chalk.gray('owner:')} ${datalake.ownerId}`)\n console.log(` ${chalk.gray('tier:')} ${datalake.config.tier}`)\n console.log(` ${chalk.gray('region:')} ${datalake.config.region ?? '—'}`)\n console.log(` ${chalk.gray('size:')} ${datalake.config.sizeBytes ? formatBytes(datalake.config.sizeBytes) : '—'}`)\n console.log(` ${chalk.gray('iops:')} ${datalake.config.iops ?? '—'}`)\n console.log(` ${chalk.gray('retention:')} ${datalake.config.retentionDays ?? 'forever'}`)\n if (datalake.config.verifyHashes) {\n console.log(` ${chalk.gray('verify:')} ${chalk.green('hashes enforced')}`)\n }\n if (datalake.config.rateLimits) printRateLimits(datalake.config.rateLimits)\n console.log(` ${chalk.gray('created:')} ${datalake.createdAt}`)\n console.log(` ${chalk.gray('updated:')} ${datalake.updatedAt}`)\n if (datalake.usage) printUsage(datalake.usage)\n printAcl(datalake.acl)\n if (datalake.errorMessage) {\n console.log()\n console.log(` ${chalk.red('error:')} ${datalake.errorMessage}`)\n }\n}\n","import { getDefaultDatalake } from '@xylabs/aries-datalake-client'\n\n/**\n * Resolves the target datalake name/id for commands that take an optional\n * argument. Falls back to the one set via `aries datalake use`.\n */\nexport function resolveTarget(argValue: string | undefined): string {\n const target = argValue ?? getDefaultDatalake()\n if (!target) {\n throw new Error(\n 'No datalake specified and no default set. '\n + 'Pass <name> or run `aries datalake use <name>`.',\n )\n }\n return target\n}\n","import { createDatalakeClient } from '@xylabs/aries-datalake-client'\nimport type { DatalakePrincipal } from '@xylabs/aries-datalake-core'\nimport chalk from 'chalk'\n\nimport { printDatalakeDetail } from './formatters.ts'\nimport { resolveTarget } from './resolveTarget.ts'\n\nexport interface RevokeAccessOptions {\n idOrName?: string\n principal: DatalakePrincipal\n}\n\nexport async function revokeAccess(options: RevokeAccessOptions): Promise<void> {\n const client = createDatalakeClient()\n const target = resolveTarget(options.idOrName)\n const descriptor = await client.describe(target)\n const updated = await client.revoke({\n datalakeId: descriptor.id,\n principal: options.principal,\n })\n console.log(chalk.green(`revoked access for ${options.principal} on ${updated.name}`))\n printDatalakeDetail(updated)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { revokeAccess } from '../actions/datalake/index.ts'\n\nexport const datalakeRevokeCommand: CommandModule = {\n command: 'revoke <name> <principal>',\n describe: 'Revoke a principal\\'s access to a datalake',\n builder: yargs =>\n yargs\n .positional('name', {\n type: 'string',\n describe: 'Datalake name or id',\n demandOption: true,\n })\n .positional('principal', {\n type: 'string',\n describe: 'User id, or the literal \"public\"',\n demandOption: true,\n }),\n handler: async (argv) => {\n await revokeAccess({\n idOrName: argv.name as string,\n principal: argv.principal as string,\n })\n },\n}\n"],"mappings":"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","names":["chalk","chalk"]}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// src/actions/datalake/payloads/mintAndConnect.ts
|
|
2
|
+
import { createDatalakeClient, RestPayloadsClient } from "@xylabs/aries-datalake-client";
|
|
3
|
+
import { XyoPayloadsClient } from "@xylabs/aries-datalake-xl1-adapter";
|
|
4
|
+
|
|
5
|
+
// src/actions/datalake/resolveTarget.ts
|
|
6
|
+
import { getDefaultDatalake } from "@xylabs/aries-datalake-client";
|
|
7
|
+
function resolveTarget(argValue) {
|
|
8
|
+
const target = argValue ?? getDefaultDatalake();
|
|
9
|
+
if (!target) {
|
|
10
|
+
throw new Error(
|
|
11
|
+
"No datalake specified and no default set. Pass <name> or run `aries datalake use <name>`."
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
return target;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/actions/datalake/payloads/mintAndConnect.ts
|
|
18
|
+
async function mintAndConnect(options) {
|
|
19
|
+
const controlClient = createDatalakeClient();
|
|
20
|
+
const target = resolveTarget(options.idOrName);
|
|
21
|
+
const descriptor = await controlClient.describe(target);
|
|
22
|
+
if (!descriptor.url) {
|
|
23
|
+
throw new Error(`Datalake ${descriptor.name} has no URL yet (status=${descriptor.status})`);
|
|
24
|
+
}
|
|
25
|
+
const token = await controlClient.mintToken({
|
|
26
|
+
datalakeId: descriptor.id,
|
|
27
|
+
role: options.role,
|
|
28
|
+
ttlSeconds: options.ttlSeconds ?? 3600
|
|
29
|
+
});
|
|
30
|
+
const clientOptions = {
|
|
31
|
+
baseUrl: token.url,
|
|
32
|
+
datalakeId: descriptor.id,
|
|
33
|
+
authToken: token.token
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
client: options.useXl1Sdk ? new XyoPayloadsClient(clientOptions) : new RestPayloadsClient(clientOptions),
|
|
37
|
+
datalakeName: descriptor.name,
|
|
38
|
+
datalakeId: descriptor.id,
|
|
39
|
+
url: token.url,
|
|
40
|
+
transport: options.useXl1Sdk ? "xl1-sdk" : "native"
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/actions/datalake/payloads/tailPayloads.ts
|
|
45
|
+
import chalk from "chalk";
|
|
46
|
+
var DEFAULT_LIMIT = 50;
|
|
47
|
+
var DEFAULT_POLL_MS = 1e3;
|
|
48
|
+
async function tailPayloads(options) {
|
|
49
|
+
const connection = await mintAndConnect({ idOrName: options.idOrName, role: "viewer" });
|
|
50
|
+
const limit = options.limit ?? DEFAULT_LIMIT;
|
|
51
|
+
let cursor = options.cursor;
|
|
52
|
+
let totalSeen = 0;
|
|
53
|
+
while (true) {
|
|
54
|
+
const page = await connection.client.next({
|
|
55
|
+
limit,
|
|
56
|
+
cursor,
|
|
57
|
+
schemas: options.schemas
|
|
58
|
+
});
|
|
59
|
+
for (const payload of page.payloads) {
|
|
60
|
+
printPayload(payload);
|
|
61
|
+
totalSeen += 1;
|
|
62
|
+
}
|
|
63
|
+
if (!options.follow) {
|
|
64
|
+
if (totalSeen === 0) {
|
|
65
|
+
console.log(chalk.yellow(`${connection.datalakeName}: no payloads yet`));
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (page.payloads.length < limit) {
|
|
70
|
+
cursor = page.nextCursor ?? cursor;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
cursor = page.nextCursor ?? cursor;
|
|
74
|
+
}
|
|
75
|
+
const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_MS;
|
|
76
|
+
console.log(chalk.gray(`following ${connection.datalakeName} (Ctrl+C to stop)`));
|
|
77
|
+
let polls = 0;
|
|
78
|
+
while (options.maxPolls === void 0 || polls < options.maxPolls) {
|
|
79
|
+
await delay(pollIntervalMs);
|
|
80
|
+
polls += 1;
|
|
81
|
+
const page = await connection.client.next({
|
|
82
|
+
limit,
|
|
83
|
+
cursor,
|
|
84
|
+
schemas: options.schemas
|
|
85
|
+
});
|
|
86
|
+
for (const payload of page.payloads) {
|
|
87
|
+
printPayload(payload);
|
|
88
|
+
totalSeen += 1;
|
|
89
|
+
}
|
|
90
|
+
if (page.nextCursor) cursor = page.nextCursor;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function printPayload(payload) {
|
|
94
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
95
|
+
console.log(`${chalk.gray(timestamp)} ${chalk.cyan(payload.$hash.slice(0, 12))} ${chalk.magenta(payload.schema)}`);
|
|
96
|
+
console.log(` ${JSON.stringify(payload)}`);
|
|
97
|
+
}
|
|
98
|
+
function delay(ms) {
|
|
99
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/commands/datalakeTailCommand.ts
|
|
103
|
+
var datalakeTailCommand = {
|
|
104
|
+
command: "tail [name]",
|
|
105
|
+
describe: "Stream payloads from a datalake (Ctrl+C to stop with --follow)",
|
|
106
|
+
builder: (yargs) => yargs.positional("name", {
|
|
107
|
+
type: "string",
|
|
108
|
+
describe: "Datalake name or id (defaults to current)"
|
|
109
|
+
}).option("follow", {
|
|
110
|
+
alias: "f",
|
|
111
|
+
type: "boolean",
|
|
112
|
+
default: false,
|
|
113
|
+
describe: "Keep polling for new payloads after draining the backlog"
|
|
114
|
+
}).option("limit", {
|
|
115
|
+
alias: "n",
|
|
116
|
+
type: "number",
|
|
117
|
+
default: 50,
|
|
118
|
+
describe: "Max payloads per page"
|
|
119
|
+
}).option("cursor", {
|
|
120
|
+
type: "string",
|
|
121
|
+
describe: "Resume after this hash (exclusive)"
|
|
122
|
+
}).option("schemas", {
|
|
123
|
+
type: "string",
|
|
124
|
+
describe: "Comma-separated list of schemas to include"
|
|
125
|
+
}).option("poll-interval", {
|
|
126
|
+
type: "number",
|
|
127
|
+
default: 1e3,
|
|
128
|
+
describe: "Poll interval in ms when following"
|
|
129
|
+
}),
|
|
130
|
+
handler: async (argv) => {
|
|
131
|
+
await tailPayloads({
|
|
132
|
+
idOrName: argv.name,
|
|
133
|
+
follow: argv.follow,
|
|
134
|
+
limit: argv.limit,
|
|
135
|
+
cursor: argv.cursor,
|
|
136
|
+
schemas: argv.schemas ? argv.schemas.split(",") : void 0,
|
|
137
|
+
pollIntervalMs: argv["poll-interval"]
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
export {
|
|
142
|
+
datalakeTailCommand
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=datalakeTailCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/datalake/payloads/mintAndConnect.ts","../../src/actions/datalake/resolveTarget.ts","../../src/actions/datalake/payloads/tailPayloads.ts","../../src/commands/datalakeTailCommand.ts"],"sourcesContent":["import type { PayloadsClient } from '@xylabs/aries-datalake-client'\nimport { createDatalakeClient, RestPayloadsClient } from '@xylabs/aries-datalake-client'\nimport type { DatalakeRole } from '@xylabs/aries-datalake-core'\nimport { XyoPayloadsClient } from '@xylabs/aries-datalake-xl1-adapter'\n\nimport { resolveTarget } from '../resolveTarget.ts'\n\nexport interface Connection {\n client: PayloadsClient\n datalakeName: string\n datalakeId: string\n url: string\n transport: 'native' | 'xl1-sdk'\n}\n\nexport interface MintAndConnectOptions {\n idOrName?: string\n role: DatalakeRole\n ttlSeconds?: number\n /**\n * When `true`, use the real `@xyo-network/xl1-protocol-sdk`\n * `RestDataLakeRunner` / `RestDataLakeViewer` for insert and get,\n * proving byte-level wire compatibility. Other methods fall back to the\n * native `RestPayloadsClient` since the XL1 SDK doesn't implement them.\n */\n useXl1Sdk?: boolean\n}\n\n/**\n * Resolves the target datalake, mints a scoped token via the control plane,\n * and returns a data-plane client wired with that token. Centralizes what\n * every payload command has to do before it can talk to the data plane.\n */\nexport async function mintAndConnect(options: MintAndConnectOptions): Promise<Connection> {\n const controlClient = createDatalakeClient()\n const target = resolveTarget(options.idOrName)\n const descriptor = await controlClient.describe(target)\n if (!descriptor.url) {\n throw new Error(`Datalake ${descriptor.name} has no URL yet (status=${descriptor.status})`)\n }\n const token = await controlClient.mintToken({\n datalakeId: descriptor.id,\n role: options.role,\n ttlSeconds: options.ttlSeconds ?? 3600,\n })\n const clientOptions = {\n baseUrl: token.url,\n datalakeId: descriptor.id,\n authToken: token.token,\n }\n return {\n client: options.useXl1Sdk\n ? new XyoPayloadsClient(clientOptions)\n : new RestPayloadsClient(clientOptions),\n datalakeName: descriptor.name,\n datalakeId: descriptor.id,\n url: token.url,\n transport: options.useXl1Sdk ? 'xl1-sdk' : 'native',\n }\n}\n","import { getDefaultDatalake } from '@xylabs/aries-datalake-client'\n\n/**\n * Resolves the target datalake name/id for commands that take an optional\n * argument. Falls back to the one set via `aries datalake use`.\n */\nexport function resolveTarget(argValue: string | undefined): string {\n const target = argValue ?? getDefaultDatalake()\n if (!target) {\n throw new Error(\n 'No datalake specified and no default set. '\n + 'Pass <name> or run `aries datalake use <name>`.',\n )\n }\n return target\n}\n","import chalk from 'chalk'\n\nimport { mintAndConnect } from './mintAndConnect.ts'\n\nexport interface TailPayloadsOptions {\n idOrName?: string\n /** Start from the current tail and keep polling for new payloads. */\n follow?: boolean\n /** One-shot page size. Defaults to 50. */\n limit?: number\n /** Start cursor. When following from \"now\", this is the last seen hash. */\n cursor?: string\n /** Schema filter. */\n schemas?: string[]\n /** Poll interval when following, in ms. Defaults to 1 000. */\n pollIntervalMs?: number\n /** Max polls when following. Omit for unlimited. Used in tests. */\n maxPolls?: number\n}\n\nconst DEFAULT_LIMIT = 50\nconst DEFAULT_POLL_MS = 1000\n\n/**\n * Streams payloads from a datalake. In one-shot mode prints the first page.\n * In follow mode pages forward to the end then polls `/next` from the last\n * cursor every `pollIntervalMs`, emitting new payloads as they land.\n */\nexport async function tailPayloads(options: TailPayloadsOptions): Promise<void> {\n const connection = await mintAndConnect({ idOrName: options.idOrName, role: 'viewer' })\n const limit = options.limit ?? DEFAULT_LIMIT\n\n let cursor = options.cursor\n let totalSeen = 0\n\n // Initial page(s): drain forward until we reach end-of-stream. In `follow`\n // mode we print these as backlog; in one-shot mode we stop after one page.\n while (true) {\n const page = await connection.client.next({\n limit, cursor, schemas: options.schemas,\n })\n for (const payload of page.payloads) {\n printPayload(payload)\n totalSeen += 1\n }\n if (!options.follow) {\n if (totalSeen === 0) {\n console.log(chalk.yellow(`${connection.datalakeName}: no payloads yet`))\n }\n return\n }\n if (page.payloads.length < limit) {\n cursor = page.nextCursor ?? cursor\n break\n }\n cursor = page.nextCursor ?? cursor\n }\n\n const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_MS\n console.log(chalk.gray(`following ${connection.datalakeName} (Ctrl+C to stop)`))\n\n let polls = 0\n while (options.maxPolls === undefined || polls < options.maxPolls) {\n await delay(pollIntervalMs)\n polls += 1\n const page = await connection.client.next({\n limit, cursor, schemas: options.schemas,\n })\n for (const payload of page.payloads) {\n printPayload(payload)\n totalSeen += 1\n }\n if (page.nextCursor) cursor = page.nextCursor\n }\n}\n\nfunction printPayload(payload: { $hash: string; schema: string }): void {\n const timestamp = new Date().toISOString()\n console.log(`${chalk.gray(timestamp)} ${chalk.cyan(payload.$hash.slice(0, 12))} ${chalk.magenta(payload.schema)}`)\n console.log(` ${JSON.stringify(payload)}`)\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { tailPayloads } from '../actions/datalake/payloads/index.ts'\n\nexport const datalakeTailCommand: CommandModule = {\n command: 'tail [name]',\n describe: 'Stream payloads from a datalake (Ctrl+C to stop with --follow)',\n builder: yargs =>\n yargs\n .positional('name', {\n type: 'string',\n describe: 'Datalake name or id (defaults to current)',\n })\n .option('follow', {\n alias: 'f',\n type: 'boolean',\n default: false,\n describe: 'Keep polling for new payloads after draining the backlog',\n })\n .option('limit', {\n alias: 'n',\n type: 'number',\n default: 50,\n describe: 'Max payloads per page',\n })\n .option('cursor', {\n type: 'string',\n describe: 'Resume after this hash (exclusive)',\n })\n .option('schemas', {\n type: 'string',\n describe: 'Comma-separated list of schemas to include',\n })\n .option('poll-interval', {\n type: 'number',\n default: 1000,\n describe: 'Poll interval in ms when following',\n }),\n handler: async (argv) => {\n await tailPayloads({\n idOrName: argv.name as string | undefined,\n follow: argv.follow as boolean,\n limit: argv.limit as number,\n cursor: argv.cursor as string | undefined,\n schemas: argv.schemas ? (argv.schemas as string).split(',') : undefined,\n pollIntervalMs: argv['poll-interval'] as number,\n })\n },\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// src/actions/datalake/resolveTarget.ts
|
|
2
|
+
import { getDefaultDatalake } from "@xylabs/aries-datalake-client";
|
|
3
|
+
function resolveTarget(argValue) {
|
|
4
|
+
const target = argValue ?? getDefaultDatalake();
|
|
5
|
+
if (!target) {
|
|
6
|
+
throw new Error(
|
|
7
|
+
"No datalake specified and no default set. Pass <name> or run `aries datalake use <name>`."
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
return target;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// src/actions/datalake/mintToken.ts
|
|
14
|
+
import { createDatalakeClient } from "@xylabs/aries-datalake-client";
|
|
15
|
+
import chalk from "chalk";
|
|
16
|
+
async function mintToken(options) {
|
|
17
|
+
const client = createDatalakeClient();
|
|
18
|
+
const target = resolveTarget(options.idOrName);
|
|
19
|
+
const descriptor = await client.describe(target);
|
|
20
|
+
const token = await client.mintToken({
|
|
21
|
+
datalakeId: descriptor.id,
|
|
22
|
+
role: options.role,
|
|
23
|
+
ttlSeconds: options.ttlSeconds
|
|
24
|
+
});
|
|
25
|
+
console.log(chalk.cyan("datalake token"));
|
|
26
|
+
console.log(` ${chalk.gray("url:")} ${token.url}`);
|
|
27
|
+
console.log(` ${chalk.gray("role:")} ${token.role}`);
|
|
28
|
+
console.log(` ${chalk.gray("exp:")} ${token.expiresAt}`);
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(token.token);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/commands/datalakeTokenCommand.ts
|
|
34
|
+
var datalakeTokenCommand = {
|
|
35
|
+
command: "token [name]",
|
|
36
|
+
describe: "Mint a scoped JWT for SDK use",
|
|
37
|
+
builder: (yargs) => yargs.positional("name", {
|
|
38
|
+
type: "string",
|
|
39
|
+
describe: "Datalake name or id (defaults to current)"
|
|
40
|
+
}).option("role", {
|
|
41
|
+
alias: "r",
|
|
42
|
+
type: "string",
|
|
43
|
+
choices: ["viewer", "runner"],
|
|
44
|
+
default: "viewer",
|
|
45
|
+
describe: "Role encoded in the token"
|
|
46
|
+
}).option("ttl", {
|
|
47
|
+
type: "number",
|
|
48
|
+
describe: "Lifetime in seconds (server-capped)"
|
|
49
|
+
}),
|
|
50
|
+
handler: async (argv) => {
|
|
51
|
+
await mintToken({
|
|
52
|
+
idOrName: argv.name,
|
|
53
|
+
role: argv.role,
|
|
54
|
+
ttlSeconds: argv.ttl
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
datalakeTokenCommand
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=datalakeTokenCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/datalake/resolveTarget.ts","../../src/actions/datalake/mintToken.ts","../../src/commands/datalakeTokenCommand.ts"],"sourcesContent":["import { getDefaultDatalake } from '@xylabs/aries-datalake-client'\n\n/**\n * Resolves the target datalake name/id for commands that take an optional\n * argument. Falls back to the one set via `aries datalake use`.\n */\nexport function resolveTarget(argValue: string | undefined): string {\n const target = argValue ?? getDefaultDatalake()\n if (!target) {\n throw new Error(\n 'No datalake specified and no default set. '\n + 'Pass <name> or run `aries datalake use <name>`.',\n )\n }\n return target\n}\n","import { createDatalakeClient } from '@xylabs/aries-datalake-client'\nimport type { DatalakeRole } from '@xylabs/aries-datalake-core'\nimport chalk from 'chalk'\n\nimport { resolveTarget } from './resolveTarget.ts'\n\nexport interface MintTokenOptions {\n idOrName?: string\n role: DatalakeRole\n ttlSeconds?: number\n}\n\nexport async function mintToken(options: MintTokenOptions): Promise<void> {\n const client = createDatalakeClient()\n const target = resolveTarget(options.idOrName)\n const descriptor = await client.describe(target)\n const token = await client.mintToken({\n datalakeId: descriptor.id,\n role: options.role,\n ttlSeconds: options.ttlSeconds,\n })\n\n console.log(chalk.cyan('datalake token'))\n console.log(` ${chalk.gray('url:')} ${token.url}`)\n console.log(` ${chalk.gray('role:')} ${token.role}`)\n console.log(` ${chalk.gray('exp:')} ${token.expiresAt}`)\n console.log()\n console.log(token.token)\n}\n","import type { DatalakeRole } from '@xylabs/aries-datalake-core'\nimport type { CommandModule } from 'yargs'\n\nimport { mintToken } from '../actions/datalake/index.ts'\n\nexport const datalakeTokenCommand: CommandModule = {\n command: 'token [name]',\n describe: 'Mint a scoped JWT for SDK use',\n builder: yargs =>\n yargs\n .positional('name', {\n type: 'string',\n describe: 'Datalake name or id (defaults to current)',\n })\n .option('role', {\n alias: 'r',\n type: 'string',\n choices: ['viewer', 'runner'] as const,\n default: 'viewer',\n describe: 'Role encoded in the token',\n })\n .option('ttl', {\n type: 'number',\n describe: 'Lifetime in seconds (server-capped)',\n }),\n handler: async (argv) => {\n await mintToken({\n idOrName: argv.name as string | undefined,\n role: argv.role as DatalakeRole,\n ttlSeconds: argv.ttl as number | undefined,\n })\n },\n}\n"],"mappings":";AAAA,SAAS,0BAA0B;AAM5B,SAAS,cAAc,UAAsC;AAClE,QAAM,SAAS,YAAY,mBAAmB;AAC9C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR;AAAA,IAEF;AAAA,EACF;AACA,SAAO;AACT;;;ACfA,SAAS,4BAA4B;AAErC,OAAO,WAAW;AAUlB,eAAsB,UAAU,SAA0C;AACxE,QAAM,SAAS,qBAAqB;AACpC,QAAM,SAAS,cAAc,QAAQ,QAAQ;AAC7C,QAAM,aAAa,MAAM,OAAO,SAAS,MAAM;AAC/C,QAAM,QAAQ,MAAM,OAAO,UAAU;AAAA,IACnC,YAAY,WAAW;AAAA,IACvB,MAAM,QAAQ;AAAA,IACd,YAAY,QAAQ;AAAA,EACtB,CAAC;AAED,UAAQ,IAAI,MAAM,KAAK,gBAAgB,CAAC;AACxC,UAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,CAAC,OAAO,MAAM,GAAG,EAAE;AACrD,UAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,MAAM,MAAM,IAAI,EAAE;AACtD,UAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,CAAC,OAAO,MAAM,SAAS,EAAE;AAC3D,UAAQ,IAAI;AACZ,UAAQ,IAAI,MAAM,KAAK;AACzB;;;ACvBO,IAAM,uBAAsC;AAAA,EACjD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,WACP,MACG,WAAW,QAAQ;AAAA,IAClB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,CAAC,UAAU,QAAQ;AAAA,IAC5B,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC,EACA,OAAO,OAAO;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC;AAAA,EACL,SAAS,OAAO,SAAS;AACvB,UAAM,UAAU;AAAA,MACd,UAAU,KAAK;AAAA,MACf,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,IACnB,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/actions/datalake/useDatalake.ts
|
|
2
|
+
import {
|
|
3
|
+
clearDefaultDatalake,
|
|
4
|
+
createDatalakeClient,
|
|
5
|
+
setDefaultDatalake
|
|
6
|
+
} from "@xylabs/aries-datalake-client";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
async function useDatalake(name) {
|
|
9
|
+
if (!name) {
|
|
10
|
+
clearDefaultDatalake();
|
|
11
|
+
console.log(chalk.green("cleared default datalake"));
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const client = createDatalakeClient();
|
|
15
|
+
const descriptor = await client.describe(name);
|
|
16
|
+
setDefaultDatalake(descriptor.name, descriptor.id);
|
|
17
|
+
console.log(chalk.green(`default datalake set to ${descriptor.name} (${descriptor.id})`));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/commands/datalakeUseCommand.ts
|
|
21
|
+
var datalakeUseCommand = {
|
|
22
|
+
command: "use [name]",
|
|
23
|
+
describe: "Set the default datalake for subsequent commands (omit name to clear)",
|
|
24
|
+
builder: (yargs) => yargs.positional("name", {
|
|
25
|
+
type: "string",
|
|
26
|
+
describe: "Datalake name or id"
|
|
27
|
+
}),
|
|
28
|
+
handler: async (argv) => {
|
|
29
|
+
await useDatalake(argv.name);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
datalakeUseCommand
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=datalakeUseCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/datalake/useDatalake.ts","../../src/commands/datalakeUseCommand.ts"],"sourcesContent":["import {\n clearDefaultDatalake, createDatalakeClient, setDefaultDatalake,\n} from '@xylabs/aries-datalake-client'\nimport chalk from 'chalk'\n\nexport async function useDatalake(name: string | undefined): Promise<void> {\n if (!name) {\n clearDefaultDatalake()\n console.log(chalk.green('cleared default datalake'))\n return\n }\n\n const client = createDatalakeClient()\n const descriptor = await client.describe(name)\n setDefaultDatalake(descriptor.name, descriptor.id)\n console.log(chalk.green(`default datalake set to ${descriptor.name} (${descriptor.id})`))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { useDatalake } from '../actions/datalake/index.ts'\n\nexport const datalakeUseCommand: CommandModule = {\n command: 'use [name]',\n describe: 'Set the default datalake for subsequent commands (omit name to clear)',\n builder: yargs =>\n yargs.positional('name', {\n type: 'string',\n describe: 'Datalake name or id',\n }),\n handler: async (argv) => {\n await useDatalake(argv.name as string | undefined)\n },\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAsB;AAAA,EAAsB;AAAA,OACvC;AACP,OAAO,WAAW;AAElB,eAAsB,YAAY,MAAyC;AACzE,MAAI,CAAC,MAAM;AACT,yBAAqB;AACrB,YAAQ,IAAI,MAAM,MAAM,0BAA0B,CAAC;AACnD;AAAA,EACF;AAEA,QAAM,SAAS,qBAAqB;AACpC,QAAM,aAAa,MAAM,OAAO,SAAS,IAAI;AAC7C,qBAAmB,WAAW,MAAM,WAAW,EAAE;AACjD,UAAQ,IAAI,MAAM,MAAM,2BAA2B,WAAW,IAAI,KAAK,WAAW,EAAE,GAAG,CAAC;AAC1F;;;ACZO,IAAM,qBAAoC;AAAA,EAC/C,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,WACP,MAAM,WAAW,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC;AAAA,EACH,SAAS,OAAO,SAAS;AACvB,UAAM,YAAY,KAAK,IAA0B;AAAA,EACnD;AACF;","names":[]}
|