tapass 0.1.0 → 0.2.0
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 +2792 -3
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/tapd_methods/address/create_asset_address.d.ts +2 -26
- package/dist/tapd_methods/address/create_asset_address.d.ts.map +1 -1
- package/dist/tapd_methods/address/create_asset_address.js +5 -37
- package/dist/tapd_methods/address/create_asset_address.js.map +1 -1
- package/dist/tapd_methods/address/decode_asset_address.d.ts +38 -0
- package/dist/tapd_methods/address/decode_asset_address.d.ts.map +1 -0
- package/dist/tapd_methods/address/decode_asset_address.js +81 -0
- package/dist/tapd_methods/address/decode_asset_address.js.map +1 -0
- package/dist/tapd_methods/address/get_asset_addresses.d.ts +54 -0
- package/dist/tapd_methods/address/get_asset_addresses.d.ts.map +1 -0
- package/dist/tapd_methods/address/get_asset_addresses.js +153 -0
- package/dist/tapd_methods/address/get_asset_addresses.js.map +1 -0
- package/dist/tapd_methods/address/get_asset_receives.d.ts +72 -0
- package/dist/tapd_methods/address/get_asset_receives.d.ts.map +1 -0
- package/dist/tapd_methods/address/get_asset_receives.js +191 -0
- package/dist/tapd_methods/address/get_asset_receives.js.map +1 -0
- package/dist/tapd_methods/address/index.d.ts +11 -0
- package/dist/tapd_methods/address/index.d.ts.map +1 -1
- package/dist/tapd_methods/address/index.js +4 -0
- package/dist/tapd_methods/address/index.js.map +1 -1
- package/dist/tapd_methods/address/subscribe_to_asset_receives.d.ts +53 -0
- package/dist/tapd_methods/address/subscribe_to_asset_receives.d.ts.map +1 -0
- package/dist/tapd_methods/address/subscribe_to_asset_receives.js +93 -0
- package/dist/tapd_methods/address/subscribe_to_asset_receives.js.map +1 -0
- package/dist/tapd_methods/assets/get_asset_balances.d.ts +64 -0
- package/dist/tapd_methods/assets/get_asset_balances.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_asset_balances.js +177 -0
- package/dist/tapd_methods/assets/get_asset_balances.js.map +1 -0
- package/dist/tapd_methods/assets/get_asset_burns.d.ts +40 -0
- package/dist/tapd_methods/assets/get_asset_burns.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_asset_burns.js +92 -0
- package/dist/tapd_methods/assets/get_asset_burns.js.map +1 -0
- package/dist/tapd_methods/assets/get_asset_groups.d.ts +35 -0
- package/dist/tapd_methods/assets/get_asset_groups.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_asset_groups.js +78 -0
- package/dist/tapd_methods/assets/get_asset_groups.js.map +1 -0
- package/dist/tapd_methods/assets/get_asset_metadata.d.ts +40 -0
- package/dist/tapd_methods/assets/get_asset_metadata.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_asset_metadata.js +99 -0
- package/dist/tapd_methods/assets/get_asset_metadata.js.map +1 -0
- package/dist/tapd_methods/assets/get_asset_utxos.d.ts +83 -0
- package/dist/tapd_methods/assets/get_asset_utxos.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_asset_utxos.js +135 -0
- package/dist/tapd_methods/assets/get_asset_utxos.js.map +1 -0
- package/dist/tapd_methods/assets/get_assets.d.ts +113 -0
- package/dist/tapd_methods/assets/get_assets.d.ts.map +1 -0
- package/dist/tapd_methods/assets/get_assets.js +243 -0
- package/dist/tapd_methods/assets/get_assets.js.map +1 -0
- package/dist/tapd_methods/assets/index.d.ts +19 -0
- package/dist/tapd_methods/assets/index.d.ts.map +1 -0
- package/dist/tapd_methods/assets/index.js +7 -0
- package/dist/tapd_methods/assets/index.js.map +1 -0
- package/dist/tapd_methods/channels/asset_payment_args_error.d.ts +18 -0
- package/dist/tapd_methods/channels/asset_payment_args_error.d.ts.map +1 -0
- package/dist/tapd_methods/channels/asset_payment_args_error.js +59 -0
- package/dist/tapd_methods/channels/asset_payment_args_error.js.map +1 -0
- package/dist/tapd_methods/channels/asset_payment_request.d.ts +68 -0
- package/dist/tapd_methods/channels/asset_payment_request.d.ts.map +1 -0
- package/dist/tapd_methods/channels/asset_payment_request.js +54 -0
- package/dist/tapd_methods/channels/asset_payment_request.js.map +1 -0
- package/dist/tapd_methods/channels/create_asset_invoice.d.ts +134 -0
- package/dist/tapd_methods/channels/create_asset_invoice.d.ts.map +1 -0
- package/dist/tapd_methods/channels/create_asset_invoice.js +264 -0
- package/dist/tapd_methods/channels/create_asset_invoice.js.map +1 -0
- package/dist/tapd_methods/channels/decode_asset_payment_request.d.ts +72 -0
- package/dist/tapd_methods/channels/decode_asset_payment_request.d.ts.map +1 -0
- package/dist/tapd_methods/channels/decode_asset_payment_request.js +143 -0
- package/dist/tapd_methods/channels/decode_asset_payment_request.js.map +1 -0
- package/dist/tapd_methods/channels/emit_asset_payment.d.ts +30 -0
- package/dist/tapd_methods/channels/emit_asset_payment.d.ts.map +1 -0
- package/dist/tapd_methods/channels/emit_asset_payment.js +59 -0
- package/dist/tapd_methods/channels/emit_asset_payment.js.map +1 -0
- package/dist/tapd_methods/channels/encode_asset_custom_records.d.ts +51 -0
- package/dist/tapd_methods/channels/encode_asset_custom_records.d.ts.map +1 -0
- package/dist/tapd_methods/channels/encode_asset_custom_records.js +127 -0
- package/dist/tapd_methods/channels/encode_asset_custom_records.js.map +1 -0
- package/dist/tapd_methods/channels/get_asset_invoices.d.ts +84 -0
- package/dist/tapd_methods/channels/get_asset_invoices.d.ts.map +1 -0
- package/dist/tapd_methods/channels/get_asset_invoices.js +193 -0
- package/dist/tapd_methods/channels/get_asset_invoices.js.map +1 -0
- package/dist/tapd_methods/channels/get_asset_payments.d.ts +69 -0
- package/dist/tapd_methods/channels/get_asset_payments.d.ts.map +1 -0
- package/dist/tapd_methods/channels/get_asset_payments.js +180 -0
- package/dist/tapd_methods/channels/get_asset_payments.js.map +1 -0
- package/dist/tapd_methods/channels/index.d.ts +31 -0
- package/dist/tapd_methods/channels/index.d.ts.map +1 -0
- package/dist/tapd_methods/channels/index.js +12 -0
- package/dist/tapd_methods/channels/index.js.map +1 -0
- package/dist/tapd_methods/channels/open_asset_channel.d.ts +53 -0
- package/dist/tapd_methods/channels/open_asset_channel.d.ts.map +1 -0
- package/dist/tapd_methods/channels/open_asset_channel.js +128 -0
- package/dist/tapd_methods/channels/open_asset_channel.js.map +1 -0
- package/dist/tapd_methods/channels/pay_asset_invoice.d.ts +95 -0
- package/dist/tapd_methods/channels/pay_asset_invoice.d.ts.map +1 -0
- package/dist/tapd_methods/channels/pay_asset_invoice.js +132 -0
- package/dist/tapd_methods/channels/pay_asset_invoice.js.map +1 -0
- package/dist/tapd_methods/channels/send_asset_keysend.d.ts +84 -0
- package/dist/tapd_methods/channels/send_asset_keysend.d.ts.map +1 -0
- package/dist/tapd_methods/channels/send_asset_keysend.js +144 -0
- package/dist/tapd_methods/channels/send_asset_keysend.js.map +1 -0
- package/dist/tapd_methods/channels/send_asset_payment.d.ts +33 -0
- package/dist/tapd_methods/channels/send_asset_payment.d.ts.map +1 -0
- package/dist/tapd_methods/channels/send_asset_payment.js +114 -0
- package/dist/tapd_methods/channels/send_asset_payment.js.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_invoices.d.ts +51 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_invoices.d.ts.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_invoices.js +104 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_invoices.js.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_payments.d.ts +59 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_payments.d.ts.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_payments.js +104 -0
- package/dist/tapd_methods/channels/subscribe_to_asset_payments.js.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.d.ts +62 -0
- package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.d.ts.map +1 -0
- package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.js +106 -0
- package/dist/tapd_methods/channels/subscribe_to_past_asset_payment.js.map +1 -0
- package/dist/tapd_methods/daemon/create_tapd_macaroon.d.ts +45 -0
- package/dist/tapd_methods/daemon/create_tapd_macaroon.d.ts.map +1 -0
- package/dist/tapd_methods/daemon/create_tapd_macaroon.js +99 -0
- package/dist/tapd_methods/daemon/create_tapd_macaroon.js.map +1 -0
- package/dist/tapd_methods/daemon/index.d.ts +8 -0
- package/dist/tapd_methods/daemon/index.d.ts.map +1 -0
- package/dist/tapd_methods/daemon/index.js +4 -0
- package/dist/tapd_methods/daemon/index.js.map +1 -0
- package/dist/tapd_methods/daemon/set_tapd_debug_level.d.ts +23 -0
- package/dist/tapd_methods/daemon/set_tapd_debug_level.d.ts.map +1 -0
- package/dist/tapd_methods/daemon/set_tapd_debug_level.js +60 -0
- package/dist/tapd_methods/daemon/set_tapd_debug_level.js.map +1 -0
- package/dist/tapd_methods/daemon/stop_tapd.d.ts +16 -0
- package/dist/tapd_methods/daemon/stop_tapd.d.ts.map +1 -0
- package/dist/tapd_methods/daemon/stop_tapd.js +50 -0
- package/dist/tapd_methods/daemon/stop_tapd.js.map +1 -0
- package/dist/tapd_methods/index.d.ts +8 -0
- package/dist/tapd_methods/index.d.ts.map +1 -1
- package/dist/tapd_methods/index.js +8 -0
- package/dist/tapd_methods/index.js.map +1 -1
- package/dist/tapd_methods/info/get_tapd_info.d.ts +44 -0
- package/dist/tapd_methods/info/get_tapd_info.d.ts.map +1 -0
- package/dist/tapd_methods/info/get_tapd_info.js +80 -0
- package/dist/tapd_methods/info/get_tapd_info.js.map +1 -0
- package/dist/tapd_methods/info/index.d.ts +4 -0
- package/dist/tapd_methods/info/index.d.ts.map +1 -0
- package/dist/tapd_methods/info/index.js +2 -0
- package/dist/tapd_methods/info/index.js.map +1 -0
- package/dist/tapd_methods/mint/add_asset_to_mint_batch.d.ts +124 -0
- package/dist/tapd_methods/mint/add_asset_to_mint_batch.d.ts.map +1 -0
- package/dist/tapd_methods/mint/add_asset_to_mint_batch.js +283 -0
- package/dist/tapd_methods/mint/add_asset_to_mint_batch.js.map +1 -0
- package/dist/tapd_methods/mint/cancel_mint_batch.d.ts +23 -0
- package/dist/tapd_methods/mint/cancel_mint_batch.d.ts.map +1 -0
- package/dist/tapd_methods/mint/cancel_mint_batch.js +62 -0
- package/dist/tapd_methods/mint/cancel_mint_batch.js.map +1 -0
- package/dist/tapd_methods/mint/finalize_mint_batch.d.ts +64 -0
- package/dist/tapd_methods/mint/finalize_mint_batch.d.ts.map +1 -0
- package/dist/tapd_methods/mint/finalize_mint_batch.js +130 -0
- package/dist/tapd_methods/mint/finalize_mint_batch.js.map +1 -0
- package/dist/tapd_methods/mint/fund_mint_batch.d.ts +82 -0
- package/dist/tapd_methods/mint/fund_mint_batch.d.ts.map +1 -0
- package/dist/tapd_methods/mint/fund_mint_batch.js +145 -0
- package/dist/tapd_methods/mint/fund_mint_batch.js.map +1 -0
- package/dist/tapd_methods/mint/get_mint_batches.d.ts +72 -0
- package/dist/tapd_methods/mint/get_mint_batches.d.ts.map +1 -0
- package/dist/tapd_methods/mint/get_mint_batches.js +123 -0
- package/dist/tapd_methods/mint/get_mint_batches.js.map +1 -0
- package/dist/tapd_methods/mint/index.d.ts +21 -0
- package/dist/tapd_methods/mint/index.d.ts.map +1 -0
- package/dist/tapd_methods/mint/index.js +8 -0
- package/dist/tapd_methods/mint/index.js.map +1 -0
- package/dist/tapd_methods/mint/seal_mint_batch.d.ts +64 -0
- package/dist/tapd_methods/mint/seal_mint_batch.d.ts.map +1 -0
- package/dist/tapd_methods/mint/seal_mint_batch.js +135 -0
- package/dist/tapd_methods/mint/seal_mint_batch.js.map +1 -0
- package/dist/tapd_methods/mint/subscribe_to_mint_events.d.ts +52 -0
- package/dist/tapd_methods/mint/subscribe_to_mint_events.d.ts.map +1 -0
- package/dist/tapd_methods/mint/subscribe_to_mint_events.js +91 -0
- package/dist/tapd_methods/mint/subscribe_to_mint_events.js.map +1 -0
- package/dist/tapd_methods/proofs/decode_asset_proof.d.ts +61 -0
- package/dist/tapd_methods/proofs/decode_asset_proof.d.ts.map +1 -0
- package/dist/tapd_methods/proofs/decode_asset_proof.js +129 -0
- package/dist/tapd_methods/proofs/decode_asset_proof.js.map +1 -0
- package/dist/tapd_methods/proofs/export_asset_proof.d.ts +39 -0
- package/dist/tapd_methods/proofs/export_asset_proof.d.ts.map +1 -0
- package/dist/tapd_methods/proofs/export_asset_proof.js +113 -0
- package/dist/tapd_methods/proofs/export_asset_proof.js.map +1 -0
- package/dist/tapd_methods/proofs/index.d.ts +13 -0
- package/dist/tapd_methods/proofs/index.d.ts.map +1 -0
- package/dist/tapd_methods/proofs/index.js +5 -0
- package/dist/tapd_methods/proofs/index.js.map +1 -0
- package/dist/tapd_methods/proofs/unpack_asset_proof_file.d.ts +29 -0
- package/dist/tapd_methods/proofs/unpack_asset_proof_file.d.ts.map +1 -0
- package/dist/tapd_methods/proofs/unpack_asset_proof_file.js +85 -0
- package/dist/tapd_methods/proofs/unpack_asset_proof_file.js.map +1 -0
- package/dist/tapd_methods/proofs/verify_asset_proof.d.ts +58 -0
- package/dist/tapd_methods/proofs/verify_asset_proof.d.ts.map +1 -0
- package/dist/tapd_methods/proofs/verify_asset_proof.js +110 -0
- package/dist/tapd_methods/proofs/verify_asset_proof.js.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_buy_offer.d.ts +31 -0
- package/dist/tapd_methods/rfq/add_asset_buy_offer.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_buy_offer.js +88 -0
- package/dist/tapd_methods/rfq/add_asset_buy_offer.js.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_buy_order.d.ts +79 -0
- package/dist/tapd_methods/rfq/add_asset_buy_order.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_buy_order.js +200 -0
- package/dist/tapd_methods/rfq/add_asset_buy_order.js.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_sell_offer.d.ts +30 -0
- package/dist/tapd_methods/rfq/add_asset_sell_offer.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_sell_offer.js +87 -0
- package/dist/tapd_methods/rfq/add_asset_sell_offer.js.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_sell_order.d.ts +79 -0
- package/dist/tapd_methods/rfq/add_asset_sell_order.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/add_asset_sell_order.js +200 -0
- package/dist/tapd_methods/rfq/add_asset_sell_order.js.map +1 -0
- package/dist/tapd_methods/rfq/get_accepted_quotes.d.ts +52 -0
- package/dist/tapd_methods/rfq/get_accepted_quotes.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/get_accepted_quotes.js +100 -0
- package/dist/tapd_methods/rfq/get_accepted_quotes.js.map +1 -0
- package/dist/tapd_methods/rfq/get_asset_forwards.d.ts +70 -0
- package/dist/tapd_methods/rfq/get_asset_forwards.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/get_asset_forwards.js +185 -0
- package/dist/tapd_methods/rfq/get_asset_forwards.js.map +1 -0
- package/dist/tapd_methods/rfq/index.d.ts +19 -0
- package/dist/tapd_methods/rfq/index.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/index.js +8 -0
- package/dist/tapd_methods/rfq/index.js.map +1 -0
- package/dist/tapd_methods/rfq/subscribe_to_rfq_events.d.ts +68 -0
- package/dist/tapd_methods/rfq/subscribe_to_rfq_events.d.ts.map +1 -0
- package/dist/tapd_methods/rfq/subscribe_to_rfq_events.js +107 -0
- package/dist/tapd_methods/rfq/subscribe_to_rfq_events.js.map +1 -0
- package/dist/tapd_methods/send/burn_asset.d.ts +135 -0
- package/dist/tapd_methods/send/burn_asset.d.ts.map +1 -0
- package/dist/tapd_methods/send/burn_asset.js +220 -0
- package/dist/tapd_methods/send/burn_asset.js.map +1 -0
- package/dist/tapd_methods/send/get_asset_transfers.d.ts +73 -0
- package/dist/tapd_methods/send/get_asset_transfers.d.ts.map +1 -0
- package/dist/tapd_methods/send/get_asset_transfers.js +122 -0
- package/dist/tapd_methods/send/get_asset_transfers.js.map +1 -0
- package/dist/tapd_methods/send/index.d.ts +15 -0
- package/dist/tapd_methods/send/index.d.ts.map +1 -0
- package/dist/tapd_methods/send/index.js +6 -0
- package/dist/tapd_methods/send/index.js.map +1 -0
- package/dist/tapd_methods/send/register_asset_transfer.d.ts +77 -0
- package/dist/tapd_methods/send/register_asset_transfer.d.ts.map +1 -0
- package/dist/tapd_methods/send/register_asset_transfer.js +165 -0
- package/dist/tapd_methods/send/register_asset_transfer.js.map +1 -0
- package/dist/tapd_methods/send/send_asset.d.ts +94 -0
- package/dist/tapd_methods/send/send_asset.d.ts.map +1 -0
- package/dist/tapd_methods/send/send_asset.js +169 -0
- package/dist/tapd_methods/send/send_asset.js.map +1 -0
- package/dist/tapd_methods/send/subscribe_to_asset_sends.d.ts +117 -0
- package/dist/tapd_methods/send/subscribe_to_asset_sends.d.ts.map +1 -0
- package/dist/tapd_methods/send/subscribe_to_asset_sends.js +159 -0
- package/dist/tapd_methods/send/subscribe_to_asset_sends.js.map +1 -0
- package/dist/tapd_requests/decimal_as_fixed_point.d.ts +23 -0
- package/dist/tapd_requests/decimal_as_fixed_point.d.ts.map +1 -0
- package/dist/tapd_requests/decimal_as_fixed_point.js +31 -0
- package/dist/tapd_requests/decimal_as_fixed_point.js.map +1 -0
- package/dist/tapd_requests/fee_rate_as_tokens_per_kw.d.ts +13 -0
- package/dist/tapd_requests/fee_rate_as_tokens_per_kw.d.ts.map +1 -0
- package/dist/tapd_requests/fee_rate_as_tokens_per_kw.js +21 -0
- package/dist/tapd_requests/fee_rate_as_tokens_per_kw.js.map +1 -0
- package/dist/tapd_requests/index.d.ts +5 -0
- package/dist/tapd_requests/index.d.ts.map +1 -1
- package/dist/tapd_requests/index.js +5 -0
- package/dist/tapd_requests/index.js.map +1 -1
- package/dist/tapd_requests/is_method_unsupported.d.ts +24 -0
- package/dist/tapd_requests/is_method_unsupported.d.ts.map +1 -0
- package/dist/tapd_requests/is_method_unsupported.js +27 -0
- package/dist/tapd_requests/is_method_unsupported.js.map +1 -0
- package/dist/tapd_requests/mint_funding_request.d.ts +53 -0
- package/dist/tapd_requests/mint_funding_request.d.ts.map +1 -0
- package/dist/tapd_requests/mint_funding_request.js +48 -0
- package/dist/tapd_requests/mint_funding_request.js.map +1 -0
- package/dist/tapd_requests/script_key_type_query.d.ts +26 -0
- package/dist/tapd_requests/script_key_type_query.d.ts.map +1 -0
- package/dist/tapd_requests/script_key_type_query.js +41 -0
- package/dist/tapd_requests/script_key_type_query.js.map +1 -0
- package/dist/tapd_responses/asset_channel_rpc_error.d.ts +19 -0
- package/dist/tapd_responses/asset_channel_rpc_error.d.ts.map +1 -0
- package/dist/tapd_responses/asset_channel_rpc_error.js +69 -0
- package/dist/tapd_responses/asset_channel_rpc_error.js.map +1 -0
- package/dist/tapd_responses/batch_states.d.ts +4 -0
- package/dist/tapd_responses/batch_states.d.ts.map +1 -0
- package/dist/tapd_responses/batch_states.js +13 -0
- package/dist/tapd_responses/batch_states.js.map +1 -0
- package/dist/tapd_responses/fixed_point_as_decimal.d.ts +25 -0
- package/dist/tapd_responses/fixed_point_as_decimal.d.ts.map +1 -0
- package/dist/tapd_responses/fixed_point_as_decimal.js +39 -0
- package/dist/tapd_responses/fixed_point_as_decimal.js.map +1 -0
- package/dist/tapd_responses/index.d.ts +76 -0
- package/dist/tapd_responses/index.d.ts.map +1 -0
- package/dist/tapd_responses/index.js +30 -0
- package/dist/tapd_responses/index.js.map +1 -0
- package/dist/tapd_responses/long_key_as_number.d.ts +16 -0
- package/dist/tapd_responses/long_key_as_number.d.ts.map +1 -0
- package/dist/tapd_responses/long_key_as_number.js +28 -0
- package/dist/tapd_responses/long_key_as_number.js.map +1 -0
- package/dist/tapd_responses/mint_rpc_error.d.ts +19 -0
- package/dist/tapd_responses/mint_rpc_error.d.ts.map +1 -0
- package/dist/tapd_responses/mint_rpc_error.js +35 -0
- package/dist/tapd_responses/mint_rpc_error.js.map +1 -0
- package/dist/tapd_responses/outpoint_as_transaction.d.ts +19 -0
- package/dist/tapd_responses/outpoint_as_transaction.d.ts.map +1 -0
- package/dist/tapd_responses/outpoint_as_transaction.js +23 -0
- package/dist/tapd_responses/outpoint_as_transaction.js.map +1 -0
- package/dist/tapd_responses/receive_statuses.d.ts +4 -0
- package/dist/tapd_responses/receive_statuses.d.ts.map +1 -0
- package/dist/tapd_responses/receive_statuses.js +9 -0
- package/dist/tapd_responses/receive_statuses.js.map +1 -0
- package/dist/tapd_responses/rpc_addr_as_address.d.ts +79 -0
- package/dist/tapd_responses/rpc_addr_as_address.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_addr_as_address.js +87 -0
- package/dist/tapd_responses/rpc_addr_as_address.js.map +1 -0
- package/dist/tapd_responses/rpc_addr_event_as_receive.d.ts +63 -0
- package/dist/tapd_responses/rpc_addr_event_as_receive.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_addr_event_as_receive.js +64 -0
- package/dist/tapd_responses/rpc_addr_event_as_receive.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_amount_as_amount.d.ts +34 -0
- package/dist/tapd_responses/rpc_asset_amount_as_amount.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_amount_as_amount.js +38 -0
- package/dist/tapd_responses/rpc_asset_amount_as_amount.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_as_asset.d.ts +204 -0
- package/dist/tapd_responses/rpc_asset_as_asset.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_as_asset.js +174 -0
- package/dist/tapd_responses/rpc_asset_as_asset.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_balance_as_balance.d.ts +53 -0
- package/dist/tapd_responses/rpc_asset_balance_as_balance.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_balance_as_balance.js +53 -0
- package/dist/tapd_responses/rpc_asset_balance_as_balance.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_burn_as_burn.d.ts +51 -0
- package/dist/tapd_responses/rpc_asset_burn_as_burn.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_burn_as_burn.js +54 -0
- package/dist/tapd_responses/rpc_asset_burn_as_burn.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_invoice_as_invoice.d.ts +39 -0
- package/dist/tapd_responses/rpc_asset_invoice_as_invoice.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_invoice_as_invoice.js +45 -0
- package/dist/tapd_responses/rpc_asset_invoice_as_invoice.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_meta_as_metadata.d.ts +68 -0
- package/dist/tapd_responses/rpc_asset_meta_as_metadata.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_meta_as_metadata.js +70 -0
- package/dist/tapd_responses/rpc_asset_meta_as_metadata.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_pay_req_as_request.d.ts +76 -0
- package/dist/tapd_responses/rpc_asset_pay_req_as_request.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_pay_req_as_request.js +73 -0
- package/dist/tapd_responses/rpc_asset_pay_req_as_request.js.map +1 -0
- package/dist/tapd_responses/rpc_asset_payment_as_payment.d.ts +39 -0
- package/dist/tapd_responses/rpc_asset_payment_as_payment.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_asset_payment_as_payment.js +45 -0
- package/dist/tapd_responses/rpc_asset_payment_as_payment.js.map +1 -0
- package/dist/tapd_responses/rpc_batch_as_batch.d.ts +158 -0
- package/dist/tapd_responses/rpc_batch_as_batch.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_batch_as_batch.js +181 -0
- package/dist/tapd_responses/rpc_batch_as_batch.js.map +1 -0
- package/dist/tapd_responses/rpc_buy_quote_as_quote.d.ts +83 -0
- package/dist/tapd_responses/rpc_buy_quote_as_quote.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_buy_quote_as_quote.js +85 -0
- package/dist/tapd_responses/rpc_buy_quote_as_quote.js.map +1 -0
- package/dist/tapd_responses/rpc_decoded_proof_as_proof.d.ts +161 -0
- package/dist/tapd_responses/rpc_decoded_proof_as_proof.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_decoded_proof_as_proof.js +138 -0
- package/dist/tapd_responses/rpc_decoded_proof_as_proof.js.map +1 -0
- package/dist/tapd_responses/rpc_forward_as_asset_forward.d.ts +100 -0
- package/dist/tapd_responses/rpc_forward_as_asset_forward.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_forward_as_asset_forward.js +101 -0
- package/dist/tapd_responses/rpc_forward_as_asset_forward.js.map +1 -0
- package/dist/tapd_responses/rpc_grouped_assets_as_group.d.ts +76 -0
- package/dist/tapd_responses/rpc_grouped_assets_as_group.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_grouped_assets_as_group.js +71 -0
- package/dist/tapd_responses/rpc_grouped_assets_as_group.js.map +1 -0
- package/dist/tapd_responses/rpc_managed_utxo_as_utxo.d.ts +63 -0
- package/dist/tapd_responses/rpc_managed_utxo_as_utxo.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_managed_utxo_as_utxo.js +65 -0
- package/dist/tapd_responses/rpc_managed_utxo_as_utxo.js.map +1 -0
- package/dist/tapd_responses/rpc_receive_event_as_receive_update.d.ts +53 -0
- package/dist/tapd_responses/rpc_receive_event_as_receive_update.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_receive_event_as_receive_update.js +52 -0
- package/dist/tapd_responses/rpc_receive_event_as_receive_update.js.map +1 -0
- package/dist/tapd_responses/rpc_rfq_event_as_event.d.ts +70 -0
- package/dist/tapd_responses/rpc_rfq_event_as_event.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_rfq_event_as_event.js +89 -0
- package/dist/tapd_responses/rpc_rfq_event_as_event.js.map +1 -0
- package/dist/tapd_responses/rpc_sell_quote_as_quote.d.ts +80 -0
- package/dist/tapd_responses/rpc_sell_quote_as_quote.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_sell_quote_as_quote.js +85 -0
- package/dist/tapd_responses/rpc_sell_quote_as_quote.js.map +1 -0
- package/dist/tapd_responses/rpc_send_event_as_send_event.d.ts +124 -0
- package/dist/tapd_responses/rpc_send_event_as_send_event.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_send_event_as_send_event.js +161 -0
- package/dist/tapd_responses/rpc_send_event_as_send_event.js.map +1 -0
- package/dist/tapd_responses/rpc_transfer_as_transfer.d.ts +241 -0
- package/dist/tapd_responses/rpc_transfer_as_transfer.d.ts.map +1 -0
- package/dist/tapd_responses/rpc_transfer_as_transfer.js +212 -0
- package/dist/tapd_responses/rpc_transfer_as_transfer.js.map +1 -0
- package/dist/tapd_responses/short_channel_id_as_channel.d.ts +13 -0
- package/dist/tapd_responses/short_channel_id_as_channel.d.ts.map +1 -0
- package/dist/tapd_responses/short_channel_id_as_channel.js +26 -0
- package/dist/tapd_responses/short_channel_id_as_channel.js.map +1 -0
- package/package.json +7 -2
- package/src/index.ts +21 -0
- package/src/tapd_methods/address/create_asset_address.ts +7 -72
- package/src/tapd_methods/address/decode_asset_address.ts +117 -0
- package/src/tapd_methods/address/get_asset_addresses.ts +212 -0
- package/src/tapd_methods/address/get_asset_receives.ts +265 -0
- package/src/tapd_methods/address/index.ts +11 -0
- package/src/tapd_methods/address/subscribe_to_asset_receives.ts +114 -0
- package/src/tapd_methods/assets/get_asset_balances.ts +249 -0
- package/src/tapd_methods/assets/get_asset_burns.ts +133 -0
- package/src/tapd_methods/assets/get_asset_groups.ts +109 -0
- package/src/tapd_methods/assets/get_asset_metadata.ts +141 -0
- package/src/tapd_methods/assets/get_asset_utxos.ts +175 -0
- package/src/tapd_methods/assets/get_assets.ts +327 -0
- package/src/tapd_methods/assets/index.ts +18 -0
- package/src/tapd_methods/channels/asset_payment_args_error.ts +83 -0
- package/src/tapd_methods/channels/asset_payment_request.ts +76 -0
- package/src/tapd_methods/channels/create_asset_invoice.ts +387 -0
- package/src/tapd_methods/channels/decode_asset_payment_request.ts +192 -0
- package/src/tapd_methods/channels/emit_asset_payment.ts +78 -0
- package/src/tapd_methods/channels/encode_asset_custom_records.ts +187 -0
- package/src/tapd_methods/channels/get_asset_invoices.ts +258 -0
- package/src/tapd_methods/channels/get_asset_payments.ts +243 -0
- package/src/tapd_methods/channels/index.ts +30 -0
- package/src/tapd_methods/channels/open_asset_channel.ts +193 -0
- package/src/tapd_methods/channels/pay_asset_invoice.ts +171 -0
- package/src/tapd_methods/channels/send_asset_keysend.ts +196 -0
- package/src/tapd_methods/channels/send_asset_payment.ts +158 -0
- package/src/tapd_methods/channels/subscribe_to_asset_invoices.ts +134 -0
- package/src/tapd_methods/channels/subscribe_to_asset_payments.ts +126 -0
- package/src/tapd_methods/channels/subscribe_to_past_asset_payment.ts +132 -0
- package/src/tapd_methods/daemon/create_tapd_macaroon.ts +153 -0
- package/src/tapd_methods/daemon/index.ts +7 -0
- package/src/tapd_methods/daemon/set_tapd_debug_level.ts +90 -0
- package/src/tapd_methods/daemon/stop_tapd.ts +75 -0
- package/src/tapd_methods/index.ts +8 -0
- package/src/tapd_methods/info/get_tapd_info.ts +129 -0
- package/src/tapd_methods/info/index.ts +3 -0
- package/src/tapd_methods/mint/add_asset_to_mint_batch.ts +396 -0
- package/src/tapd_methods/mint/cancel_mint_batch.ts +95 -0
- package/src/tapd_methods/mint/finalize_mint_batch.ts +181 -0
- package/src/tapd_methods/mint/fund_mint_batch.ts +193 -0
- package/src/tapd_methods/mint/get_mint_batches.ts +162 -0
- package/src/tapd_methods/mint/index.ts +20 -0
- package/src/tapd_methods/mint/seal_mint_batch.ts +184 -0
- package/src/tapd_methods/mint/subscribe_to_mint_events.ts +104 -0
- package/src/tapd_methods/proofs/decode_asset_proof.ts +175 -0
- package/src/tapd_methods/proofs/export_asset_proof.ts +169 -0
- package/src/tapd_methods/proofs/index.ts +12 -0
- package/src/tapd_methods/proofs/unpack_asset_proof_file.ts +126 -0
- package/src/tapd_methods/proofs/verify_asset_proof.ts +156 -0
- package/src/tapd_methods/rfq/add_asset_buy_offer.ts +127 -0
- package/src/tapd_methods/rfq/add_asset_buy_order.ts +279 -0
- package/src/tapd_methods/rfq/add_asset_sell_offer.ts +126 -0
- package/src/tapd_methods/rfq/add_asset_sell_order.ts +279 -0
- package/src/tapd_methods/rfq/get_accepted_quotes.ts +137 -0
- package/src/tapd_methods/rfq/get_asset_forwards.ts +259 -0
- package/src/tapd_methods/rfq/index.ts +18 -0
- package/src/tapd_methods/rfq/subscribe_to_rfq_events.ts +130 -0
- package/src/tapd_methods/send/burn_asset.ts +280 -0
- package/src/tapd_methods/send/get_asset_transfers.ts +161 -0
- package/src/tapd_methods/send/index.ts +14 -0
- package/src/tapd_methods/send/register_asset_transfer.ts +219 -0
- package/src/tapd_methods/send/send_asset.ts +223 -0
- package/src/tapd_methods/send/subscribe_to_asset_sends.ts +181 -0
- package/src/tapd_requests/decimal_as_fixed_point.ts +36 -0
- package/src/tapd_requests/fee_rate_as_tokens_per_kw.ts +23 -0
- package/src/tapd_requests/index.ts +5 -0
- package/src/tapd_requests/is_method_unsupported.ts +33 -0
- package/src/tapd_requests/mint_funding_request.ts +57 -0
- package/src/tapd_requests/script_key_type_query.ts +44 -0
- package/src/tapd_responses/asset_channel_rpc_error.ts +73 -0
- package/src/tapd_responses/batch_states.ts +12 -0
- package/src/tapd_responses/fixed_point_as_decimal.ts +51 -0
- package/src/tapd_responses/index.ts +75 -0
- package/src/tapd_responses/long_key_as_number.ts +31 -0
- package/src/tapd_responses/mint_rpc_error.ts +39 -0
- package/src/tapd_responses/outpoint_as_transaction.ts +25 -0
- package/src/tapd_responses/receive_statuses.ts +8 -0
- package/src/tapd_responses/rpc_addr_as_address.ts +138 -0
- package/src/tapd_responses/rpc_addr_event_as_receive.ts +103 -0
- package/src/tapd_responses/rpc_asset_amount_as_amount.ts +57 -0
- package/src/tapd_responses/rpc_asset_as_asset.ts +299 -0
- package/src/tapd_responses/rpc_asset_balance_as_balance.ts +85 -0
- package/src/tapd_responses/rpc_asset_burn_as_burn.ts +85 -0
- package/src/tapd_responses/rpc_asset_invoice_as_invoice.ts +62 -0
- package/src/tapd_responses/rpc_asset_meta_as_metadata.ts +113 -0
- package/src/tapd_responses/rpc_asset_pay_req_as_request.ts +114 -0
- package/src/tapd_responses/rpc_asset_payment_as_payment.ts +62 -0
- package/src/tapd_responses/rpc_batch_as_batch.ts +281 -0
- package/src/tapd_responses/rpc_buy_quote_as_quote.ts +139 -0
- package/src/tapd_responses/rpc_decoded_proof_as_proof.ts +229 -0
- package/src/tapd_responses/rpc_forward_as_asset_forward.ts +164 -0
- package/src/tapd_responses/rpc_grouped_assets_as_group.ts +117 -0
- package/src/tapd_responses/rpc_managed_utxo_as_utxo.ts +105 -0
- package/src/tapd_responses/rpc_receive_event_as_receive_update.ts +84 -0
- package/src/tapd_responses/rpc_rfq_event_as_event.ts +123 -0
- package/src/tapd_responses/rpc_sell_quote_as_quote.ts +136 -0
- package/src/tapd_responses/rpc_send_event_as_send_event.ts +245 -0
- package/src/tapd_responses/rpc_transfer_as_transfer.ts +366 -0
- package/src/tapd_responses/short_channel_id_as_channel.ts +30 -0
- package/src/typescript/invoices.d.ts +30 -0
- package/src/typescript/lightning_lnd_responses.d.ts +44 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type {SubscribeToPastPaymentConfirmedEvent} from 'lightning';
|
|
2
|
+
import {confirmedFromPayment} from 'lightning/lnd_responses/index.js';
|
|
3
|
+
|
|
4
|
+
import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
|
|
5
|
+
import {isConnectionFailure} from '../../tapd_requests/index.js';
|
|
6
|
+
import {isPermissionDenied} from '../../tapd_requests/index.js';
|
|
7
|
+
import {assetChannelRpcError} from '../../tapd_responses/index.js';
|
|
8
|
+
import {rpcSellQuoteAsQuote} from '../../tapd_responses/index.js';
|
|
9
|
+
import type {SellQuote} from '../../tapd_responses/index.js';
|
|
10
|
+
import type {TapdError} from '../../typescript/index.js';
|
|
11
|
+
|
|
12
|
+
const {isArray} = Array;
|
|
13
|
+
const failedText = /payment failed: (FAILURE_REASON_[A-Z_]+)/;
|
|
14
|
+
// The errors are the same as the payment errors of lightning
|
|
15
|
+
const failureErrors: Record<string, string> = {
|
|
16
|
+
FAILURE_REASON_CANCELED: 'PaymentExecutionCanceled',
|
|
17
|
+
FAILURE_REASON_INCORRECT_PAYMENT_DETAILS: 'PaymentRejectedByDestination',
|
|
18
|
+
FAILURE_REASON_INSUFFICIENT_BALANCE: 'InsufficientBalanceToAttemptPayment',
|
|
19
|
+
FAILURE_REASON_NO_ROUTE: 'PaymentPathfindingFailedToFindPossibleRoute',
|
|
20
|
+
FAILURE_REASON_TIMEOUT: 'PaymentAttemptsTimedOut',
|
|
21
|
+
};
|
|
22
|
+
const failedStatus = 'FAILED';
|
|
23
|
+
const genericFailure = 'FailedToFindPayableRouteToDestination';
|
|
24
|
+
const method = 'sendPayment';
|
|
25
|
+
const succeededStatus = 'SUCCEEDED';
|
|
26
|
+
const type = 'tapchannel';
|
|
27
|
+
|
|
28
|
+
type Args = {
|
|
29
|
+
/** Method Name For Error Messages */
|
|
30
|
+
name: string;
|
|
31
|
+
/** tapchannel SendPayment Request Object */
|
|
32
|
+
request: object;
|
|
33
|
+
/** Authenticated tapd API Object */
|
|
34
|
+
tapd: AuthenticatedTapd;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type SendAssetPaymentResult = SubscribeToPastPaymentConfirmedEvent & {
|
|
38
|
+
quotes: SellQuote[];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** Error for a failed payment
|
|
42
|
+
|
|
43
|
+
<Payment Failure Reason String>
|
|
44
|
+
|
|
45
|
+
@returns
|
|
46
|
+
<Error Array>
|
|
47
|
+
*/
|
|
48
|
+
const failureError = (reason: string): TapdError => {
|
|
49
|
+
return [503, failureErrors[reason] || genericFailure];
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/** Send a tapd asset payment and wait for the final payment state
|
|
53
|
+
|
|
54
|
+
{
|
|
55
|
+
name: <Method Name For Error Messages String>
|
|
56
|
+
request: <tapchannel SendPayment Request Object>
|
|
57
|
+
tapd: <Authenticated tapd API Object>
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@returns via cbk
|
|
61
|
+
{
|
|
62
|
+
confirmed_at: <Payment Confirmed At ISO 8601 Date String>
|
|
63
|
+
...<lightning Confirmed Payment Object>
|
|
64
|
+
quotes: [<Accepted Sell Quote Object>]
|
|
65
|
+
}
|
|
66
|
+
*/
|
|
67
|
+
export default (
|
|
68
|
+
{name, request, tapd}: Args,
|
|
69
|
+
cbk: (err: TapdError | null, res?: SendAssetPaymentResult) => void,
|
|
70
|
+
) => {
|
|
71
|
+
const quotes = new Map<string, SellQuote>();
|
|
72
|
+
let isFinished = false;
|
|
73
|
+
|
|
74
|
+
const finish = (err: TapdError | null, res?: SendAssetPaymentResult) => {
|
|
75
|
+
// Exit early when the payment already has a result
|
|
76
|
+
if (isFinished) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
isFinished = true;
|
|
81
|
+
|
|
82
|
+
return cbk(err, res);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const addQuote = (quote: unknown) => {
|
|
86
|
+
const mapped = rpcSellQuoteAsQuote(quote as any);
|
|
87
|
+
|
|
88
|
+
quotes.set(mapped.id, mapped);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const sub = tapd[type][method](request);
|
|
92
|
+
|
|
93
|
+
sub.on('data', (data: any) => {
|
|
94
|
+
try {
|
|
95
|
+
// The older field has the first quote, the newer field has all quotes
|
|
96
|
+
if (!!data?.accepted_sell_order) {
|
|
97
|
+
addQuote(data.accepted_sell_order);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (isArray(data?.accepted_sell_orders?.accepted_sell_orders)) {
|
|
101
|
+
data.accepted_sell_orders.accepted_sell_orders.forEach(addQuote);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const payment = data?.payment_result;
|
|
105
|
+
|
|
106
|
+
// Exit early when there is no payment result in this update
|
|
107
|
+
if (!payment) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (payment.status === failedStatus) {
|
|
112
|
+
return finish(failureError(payment.failure_reason));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Exit early when the payment is not final yet
|
|
116
|
+
if (payment.status !== succeededStatus) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return finish(null, {
|
|
121
|
+
...confirmedFromPayment(payment),
|
|
122
|
+
quotes: [...quotes.values()],
|
|
123
|
+
});
|
|
124
|
+
} catch (err: any) {
|
|
125
|
+
return finish([503, err.message]);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
sub.on('end', () => {
|
|
130
|
+
return finish([503, `UnexpectedEndOfPaymentUpdatesTo${name}`]);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
sub.on('error', (err: any) => {
|
|
134
|
+
if (isConnectionFailure({err})) {
|
|
135
|
+
return finish([503, `FailedToConnectToTapdTo${name}`]);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (isPermissionDenied({err})) {
|
|
139
|
+
return finish([403, `PermissionDeniedTo${name}`]);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const failed = String(err?.details).match(failedText);
|
|
143
|
+
|
|
144
|
+
if (!!failed) {
|
|
145
|
+
return finish(failureError(failed[1]));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const knownError = assetChannelRpcError({err});
|
|
149
|
+
|
|
150
|
+
if (!!knownError) {
|
|
151
|
+
return finish(knownError);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return finish([503, `UnexpectedErrorIn${name}`, {err}]);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
return;
|
|
158
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import {EventEmitter} from 'node:events';
|
|
2
|
+
|
|
3
|
+
import {emitSubscriptionError} from '../../grpc/index.js';
|
|
4
|
+
import {handleRemoveListener} from '../../grpc/index.js';
|
|
5
|
+
import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
|
|
6
|
+
import {isConnectionFailure} from '../../tapd_requests/index.js';
|
|
7
|
+
import {isMethodUnsupported} from '../../tapd_requests/index.js';
|
|
8
|
+
import {isPermissionDenied} from '../../tapd_requests/index.js';
|
|
9
|
+
import {isTapd} from '../../tapd_requests/index.js';
|
|
10
|
+
import {rpcAssetInvoiceAsInvoice} from '../../tapd_responses/index.js';
|
|
11
|
+
|
|
12
|
+
const cancelError = 'Cancelled on client';
|
|
13
|
+
const events = ['error', 'invoice_updated'];
|
|
14
|
+
const isIndex = (n: unknown) => Number.isSafeInteger(n) && (n as number) > 0;
|
|
15
|
+
const method = 'subscribeInvoices';
|
|
16
|
+
const type = 'tapchannel';
|
|
17
|
+
|
|
18
|
+
export type SubscribeToAssetInvoicesArgs = {
|
|
19
|
+
/** Invoice Add Index To Start After Number */
|
|
20
|
+
added_after?: number;
|
|
21
|
+
/** Invoice Confirmed Index To Start After Number */
|
|
22
|
+
confirmed_after?: number;
|
|
23
|
+
/** Authenticated tapd API Object */
|
|
24
|
+
tapd: AuthenticatedTapd;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** Subscribe to invoices that receive an asset
|
|
28
|
+
|
|
29
|
+
tapd only sends updates of invoices that involve an asset
|
|
30
|
+
|
|
31
|
+
Use `added_after` and `confirmed_after` to get past updates after an index
|
|
32
|
+
|
|
33
|
+
Requires `channels:read` permission
|
|
34
|
+
|
|
35
|
+
This method needs tapd v0.8.1 or later
|
|
36
|
+
|
|
37
|
+
The invoice fields are the same as in lightning getInvoices
|
|
38
|
+
|
|
39
|
+
{
|
|
40
|
+
[added_after]: <Invoice Add Index To Start After Number>
|
|
41
|
+
[confirmed_after]: <Invoice Confirmed Index To Start After Number>
|
|
42
|
+
tapd: <Authenticated tapd API Object>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@throws
|
|
46
|
+
<Error>
|
|
47
|
+
|
|
48
|
+
@returns
|
|
49
|
+
<Subscription EventEmitter Object>
|
|
50
|
+
|
|
51
|
+
@event 'invoice_updated'
|
|
52
|
+
{
|
|
53
|
+
assets: [{
|
|
54
|
+
amount: <Asset Units Numeric String>
|
|
55
|
+
asset_id: <Asset Id Hex String>
|
|
56
|
+
[group_key]: <Asset Group Key Hex String>
|
|
57
|
+
}]
|
|
58
|
+
created_at: <ISO 8601 Date String>
|
|
59
|
+
id: <Payment Hash Hex String>
|
|
60
|
+
index: <Invoice Add Index Number>
|
|
61
|
+
is_confirmed: <Invoice is Confirmed Bool>
|
|
62
|
+
...<lightning Invoice Object>
|
|
63
|
+
}
|
|
64
|
+
*/
|
|
65
|
+
export default (args: SubscribeToAssetInvoicesArgs) => {
|
|
66
|
+
if (args.added_after !== undefined && !isIndex(args.added_after)) {
|
|
67
|
+
throw new Error('ExpectedAddIndexToSubscribeToAssetInvoices');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (args.confirmed_after !== undefined && !isIndex(args.confirmed_after)) {
|
|
71
|
+
throw new Error('ExpectedConfirmedIndexToSubscribeToAssetInvoices');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!isTapd({method, tapd: args.tapd, type})) {
|
|
75
|
+
throw new Error('ExpectedAuthenticatedTapdToSubscribeToAssetInvoices');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const emitter = new EventEmitter();
|
|
79
|
+
|
|
80
|
+
const subscription = args.tapd[type][method]({
|
|
81
|
+
request: {
|
|
82
|
+
add_index: args.added_after || 0,
|
|
83
|
+
settle_index: args.confirmed_after || 0,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// The error helper only reads `details` to find a client cancel
|
|
88
|
+
const emitError = emitSubscriptionError({emitter, subscription}) as (
|
|
89
|
+
err: unknown,
|
|
90
|
+
) => void;
|
|
91
|
+
|
|
92
|
+
// Cancel the subscription when all event listeners are removed
|
|
93
|
+
handleRemoveListener({emitter, events, subscription});
|
|
94
|
+
|
|
95
|
+
subscription.on('data', (data: unknown) => {
|
|
96
|
+
try {
|
|
97
|
+
return emitter.emit(
|
|
98
|
+
'invoice_updated',
|
|
99
|
+
rpcAssetInvoiceAsInvoice(data as any),
|
|
100
|
+
);
|
|
101
|
+
} catch (err: any) {
|
|
102
|
+
return emitError([503, err.message]);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
subscription.on('end', () => emitter.emit('end'));
|
|
107
|
+
|
|
108
|
+
subscription.on('error', (err: any) => {
|
|
109
|
+
// Exit early when the client cancelled the subscription
|
|
110
|
+
if (err?.details === cancelError) {
|
|
111
|
+
return subscription.removeAllListeners();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (isConnectionFailure({err})) {
|
|
115
|
+
return emitError([503, 'FailedToConnectToTapdToSubscribeToInvoices']);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (isPermissionDenied({err})) {
|
|
119
|
+
return emitError([403, 'PermissionDeniedToSubscribeToAssetInvoices']);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (isMethodUnsupported({err})) {
|
|
123
|
+
return emitError([501, 'ExpectedNewerTapdToSubscribeToAssetInvoices']);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return emitError([
|
|
127
|
+
503,
|
|
128
|
+
'UnexpectedErrorInAssetInvoicesSubscription',
|
|
129
|
+
{err},
|
|
130
|
+
]);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return emitter;
|
|
134
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import {EventEmitter} from 'node:events';
|
|
2
|
+
|
|
3
|
+
import {emitSubscriptionError} from '../../grpc/index.js';
|
|
4
|
+
import {handleRemoveListener} from '../../grpc/index.js';
|
|
5
|
+
import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
|
|
6
|
+
import {isConnectionFailure} from '../../tapd_requests/index.js';
|
|
7
|
+
import {isMethodUnsupported} from '../../tapd_requests/index.js';
|
|
8
|
+
import {isPermissionDenied} from '../../tapd_requests/index.js';
|
|
9
|
+
import {isTapd} from '../../tapd_requests/index.js';
|
|
10
|
+
import emitAssetPayment from './emit_asset_payment.js';
|
|
11
|
+
|
|
12
|
+
const cancelError = 'Cancelled on client';
|
|
13
|
+
const events = ['confirmed', 'error', 'failed', 'paying'];
|
|
14
|
+
const method = 'subscribePayments';
|
|
15
|
+
const type = 'tapchannel';
|
|
16
|
+
|
|
17
|
+
export type SubscribeToAssetPaymentsArgs = {
|
|
18
|
+
/** Authenticated tapd API Object */
|
|
19
|
+
tapd: AuthenticatedTapd;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Subscribe to the status of current outgoing asset payments
|
|
23
|
+
|
|
24
|
+
The events are the same as in lightning subscribeToPayments, and each
|
|
25
|
+
event also has the asset amounts of the payment
|
|
26
|
+
|
|
27
|
+
tapd only sends updates of payments that involve an asset
|
|
28
|
+
|
|
29
|
+
Requires `channels:read` permission
|
|
30
|
+
|
|
31
|
+
This method needs tapd v0.8.1 or later
|
|
32
|
+
|
|
33
|
+
{
|
|
34
|
+
tapd: <Authenticated tapd API Object>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@throws
|
|
38
|
+
<Error>
|
|
39
|
+
|
|
40
|
+
@returns
|
|
41
|
+
<Subscription EventEmitter Object>
|
|
42
|
+
|
|
43
|
+
@event 'confirmed'
|
|
44
|
+
{
|
|
45
|
+
assets: [{
|
|
46
|
+
amount: <Asset Units Numeric String>
|
|
47
|
+
asset_id: <Asset Id Hex String>
|
|
48
|
+
[group_key]: <Asset Group Key Hex String>
|
|
49
|
+
}]
|
|
50
|
+
confirmed_at: <Payment Confirmed At ISO 8601 Date String>
|
|
51
|
+
...<lightning Confirmed Payment Object>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@event 'failed'
|
|
55
|
+
{
|
|
56
|
+
assets: [<Asset Amount Object>]
|
|
57
|
+
id: <Payment Hash Hex String>
|
|
58
|
+
is_canceled: <Payment Canceled Bool>
|
|
59
|
+
is_insufficient_balance: <Failed Due To Lack of Balance Bool>
|
|
60
|
+
is_invalid_payment: <Failed Due to Payment Rejected At Destination Bool>
|
|
61
|
+
is_pathfinding_timeout: <Failed Due to Pathfinding Timeout Bool>
|
|
62
|
+
is_route_not_found: <Failed Due to Absence of Path Through Graph Bool>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@event 'paying'
|
|
66
|
+
{
|
|
67
|
+
assets: [<Asset Amount Object>]
|
|
68
|
+
created_at: <Payment Created At ISO 8601 Date String>
|
|
69
|
+
...<lightning Pending Payment Object>
|
|
70
|
+
}
|
|
71
|
+
*/
|
|
72
|
+
export default ({tapd}: SubscribeToAssetPaymentsArgs) => {
|
|
73
|
+
if (!isTapd({method, tapd, type})) {
|
|
74
|
+
throw new Error('ExpectedAuthenticatedTapdToSubscribeToAssetPayments');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const emitter = new EventEmitter();
|
|
78
|
+
|
|
79
|
+
const subscription = tapd[type][method]({
|
|
80
|
+
request: {no_inflight_updates: false},
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// The error helper only reads `details` to find a client cancel
|
|
84
|
+
const emitError = emitSubscriptionError({emitter, subscription}) as (
|
|
85
|
+
err: unknown,
|
|
86
|
+
) => void;
|
|
87
|
+
|
|
88
|
+
// Cancel the subscription when all event listeners are removed
|
|
89
|
+
handleRemoveListener({emitter, events, subscription});
|
|
90
|
+
|
|
91
|
+
subscription.on('data', (data: unknown) => {
|
|
92
|
+
return emitAssetPayment({data, emitError, emitter});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
subscription.on('end', () => emitter.emit('end'));
|
|
96
|
+
|
|
97
|
+
subscription.on('error', (err: any) => {
|
|
98
|
+
// Exit early when the client cancelled the subscription
|
|
99
|
+
if (err?.details === cancelError) {
|
|
100
|
+
return subscription.removeAllListeners();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (isConnectionFailure({err})) {
|
|
104
|
+
return emitError([
|
|
105
|
+
503,
|
|
106
|
+
'FailedToConnectToTapdToSubscribeToAssetPayments',
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (isPermissionDenied({err})) {
|
|
111
|
+
return emitError([403, 'PermissionDeniedToSubscribeToAssetPayments']);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (isMethodUnsupported({err})) {
|
|
115
|
+
return emitError([501, 'ExpectedNewerTapdToSubscribeToAssetPayments']);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return emitError([
|
|
119
|
+
503,
|
|
120
|
+
'UnexpectedErrorInAssetPaymentsSubscription',
|
|
121
|
+
{err},
|
|
122
|
+
]);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return emitter;
|
|
126
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import {EventEmitter} from 'node:events';
|
|
2
|
+
|
|
3
|
+
import {emitSubscriptionError} from '../../grpc/index.js';
|
|
4
|
+
import {handleRemoveListener} from '../../grpc/index.js';
|
|
5
|
+
import type {AuthenticatedTapd} from '../../tapd_grpc/index.js';
|
|
6
|
+
import {isConnectionFailure} from '../../tapd_requests/index.js';
|
|
7
|
+
import {isMethodUnsupported} from '../../tapd_requests/index.js';
|
|
8
|
+
import {isPermissionDenied} from '../../tapd_requests/index.js';
|
|
9
|
+
import {isTapd} from '../../tapd_requests/index.js';
|
|
10
|
+
import emitAssetPayment from './emit_asset_payment.js';
|
|
11
|
+
|
|
12
|
+
const cancelError = 'Cancelled on client';
|
|
13
|
+
const events = ['confirmed', 'error', 'failed', 'paying'];
|
|
14
|
+
const isHash = (n: unknown) => /^[0-9A-F]{64}$/i.test(String(n));
|
|
15
|
+
const method = 'trackPayment';
|
|
16
|
+
const notInitiatedError = `payment isn't initiated`;
|
|
17
|
+
const type = 'tapchannel';
|
|
18
|
+
|
|
19
|
+
export type SubscribeToPastAssetPaymentArgs = {
|
|
20
|
+
/** Payment Hash Hex String */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Authenticated tapd API Object */
|
|
23
|
+
tapd: AuthenticatedTapd;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** Subscribe to the status of a past asset payment
|
|
27
|
+
|
|
28
|
+
The events are the same as in lightning subscribeToPastPayment, and each
|
|
29
|
+
event also has the asset amounts of the payment
|
|
30
|
+
|
|
31
|
+
tapd only sends updates of a payment that involves an asset
|
|
32
|
+
|
|
33
|
+
Requires `channels:read` permission
|
|
34
|
+
|
|
35
|
+
This method needs tapd v0.8.1 or later
|
|
36
|
+
|
|
37
|
+
{
|
|
38
|
+
id: <Payment Hash Hex String>
|
|
39
|
+
tapd: <Authenticated tapd API Object>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@throws
|
|
43
|
+
<Error>
|
|
44
|
+
|
|
45
|
+
@returns
|
|
46
|
+
<Subscription EventEmitter Object>
|
|
47
|
+
|
|
48
|
+
@event 'confirmed'
|
|
49
|
+
{
|
|
50
|
+
assets: [{
|
|
51
|
+
amount: <Asset Units Numeric String>
|
|
52
|
+
asset_id: <Asset Id Hex String>
|
|
53
|
+
[group_key]: <Asset Group Key Hex String>
|
|
54
|
+
}]
|
|
55
|
+
confirmed_at: <Payment Confirmed At ISO 8601 Date String>
|
|
56
|
+
...<lightning Confirmed Payment Object>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@event 'failed'
|
|
60
|
+
{
|
|
61
|
+
assets: [<Asset Amount Object>]
|
|
62
|
+
id: <Payment Hash Hex String>
|
|
63
|
+
is_canceled: <Payment Canceled Bool>
|
|
64
|
+
is_insufficient_balance: <Failed Due To Lack of Balance Bool>
|
|
65
|
+
is_invalid_payment: <Failed Due to Payment Rejected At Destination Bool>
|
|
66
|
+
is_pathfinding_timeout: <Failed Due to Pathfinding Timeout Bool>
|
|
67
|
+
is_route_not_found: <Failed Due to Absence of Path Through Graph Bool>
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@event 'paying'
|
|
71
|
+
{
|
|
72
|
+
assets: [<Asset Amount Object>]
|
|
73
|
+
created_at: <Payment Created At ISO 8601 Date String>
|
|
74
|
+
...<lightning Pending Payment Object>
|
|
75
|
+
}
|
|
76
|
+
*/
|
|
77
|
+
export default ({id, tapd}: SubscribeToPastAssetPaymentArgs) => {
|
|
78
|
+
if (!isHash(id)) {
|
|
79
|
+
throw new Error('ExpectedPaymentHashToSubscribeToPastAssetPayment');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (!isTapd({method, tapd, type})) {
|
|
83
|
+
throw new Error('ExpectedAuthenticatedTapdToSubscribeToPastAssetPayment');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const emitter = new EventEmitter();
|
|
87
|
+
|
|
88
|
+
const subscription = tapd[type][method]({
|
|
89
|
+
request: {no_inflight_updates: false, payment_hash: Buffer.from(id, 'hex')},
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// The error helper only reads `details` to find a client cancel
|
|
93
|
+
const emitError = emitSubscriptionError({emitter, subscription}) as (
|
|
94
|
+
err: unknown,
|
|
95
|
+
) => void;
|
|
96
|
+
|
|
97
|
+
// Cancel the subscription when all event listeners are removed
|
|
98
|
+
handleRemoveListener({emitter, events, subscription});
|
|
99
|
+
|
|
100
|
+
subscription.on('data', (data: unknown) => {
|
|
101
|
+
return emitAssetPayment({data, emitError, emitter});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
subscription.on('end', () => emitter.emit('end'));
|
|
105
|
+
|
|
106
|
+
subscription.on('error', (err: any) => {
|
|
107
|
+
// Exit early when the client cancelled the subscription
|
|
108
|
+
if (err?.details === cancelError) {
|
|
109
|
+
return subscription.removeAllListeners();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (isConnectionFailure({err})) {
|
|
113
|
+
return emitError([503, 'FailedToConnectToTapdToTrackAssetPayment']);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (isPermissionDenied({err})) {
|
|
117
|
+
return emitError([403, 'PermissionDeniedToTrackAssetPayment']);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (isMethodUnsupported({err})) {
|
|
121
|
+
return emitError([501, 'ExpectedNewerTapdToTrackAssetPayment']);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (String(err?.details).includes(notInitiatedError)) {
|
|
125
|
+
return emitError([404, 'SentAssetPaymentNotFound']);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return emitError([503, 'UnexpectedErrorTrackingAssetPayment', {err}]);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
return emitter;
|
|
132
|
+
};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import {auto as asyncAuto} from 'async';
|
|
2
|
+
import {returnResult} from 'asyncjs-util';
|
|
3
|
+
|
|
4
|
+
import {isConnectionFailure} from '../../tapd_requests/index.js';
|
|
5
|
+
import {isPermissionDenied} from '../../tapd_requests/index.js';
|
|
6
|
+
import {isTapd} from '../../tapd_requests/index.js';
|
|
7
|
+
import type {AuthenticatedTapdArgs} from '../../typescript/index.js';
|
|
8
|
+
import type {TapdCallback} from '../../typescript/index.js';
|
|
9
|
+
import type {TapdError} from '../../typescript/index.js';
|
|
10
|
+
import type {TapdMethod} from '../../typescript/index.js';
|
|
11
|
+
|
|
12
|
+
const disabledError = 'macaroon authentication disabled';
|
|
13
|
+
const hexAsBase64 = (n: string) => Buffer.from(n, 'hex').toString('base64');
|
|
14
|
+
const {isArray} = Array;
|
|
15
|
+
const isHex = (n: unknown) =>
|
|
16
|
+
typeof n === 'string' && /^([0-9A-F]{2})+$/i.test(n);
|
|
17
|
+
const isPermission = (n: any) => !!n?.action && !!n?.entity;
|
|
18
|
+
const isRootKeyId = (n: unknown) => typeof n === 'string' && /^\d+$/.test(n);
|
|
19
|
+
const method = 'bakeMacaroon';
|
|
20
|
+
const permissionErrors = ['invalid permission', 'unsupported permission'];
|
|
21
|
+
const type = 'default';
|
|
22
|
+
|
|
23
|
+
export type CreateTapdMacaroonArgs = AuthenticatedTapdArgs<{
|
|
24
|
+
/** Allow Permissions That tapd Does Not Know */
|
|
25
|
+
is_external_allowed?: boolean;
|
|
26
|
+
permissions: {
|
|
27
|
+
/** Permission Action String */
|
|
28
|
+
action: string;
|
|
29
|
+
/** Permission Entity String */
|
|
30
|
+
entity: string;
|
|
31
|
+
}[];
|
|
32
|
+
/** Root Key Id Numeric String */
|
|
33
|
+
root_key_id?: string;
|
|
34
|
+
}>;
|
|
35
|
+
|
|
36
|
+
export type CreateTapdMacaroonResult = {
|
|
37
|
+
/** Macaroon Base64 */
|
|
38
|
+
macaroon: string;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
type Tasks = {
|
|
42
|
+
create: CreateTapdMacaroonResult;
|
|
43
|
+
validate: undefined;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/** Create a tapd macaroon with specific permissions
|
|
47
|
+
|
|
48
|
+
tapd adds no caveats. Add caveats to the macaroon after you create it.
|
|
49
|
+
|
|
50
|
+
Use the entity `uri` and an RPC method URI as the action, to give access to
|
|
51
|
+
one RPC method
|
|
52
|
+
|
|
53
|
+
Requires `macaroon:write` permission
|
|
54
|
+
|
|
55
|
+
{
|
|
56
|
+
[is_external_allowed]: <Allow Permissions That tapd Does Not Know Bool>
|
|
57
|
+
permissions: [{
|
|
58
|
+
action: <Permission Action String>
|
|
59
|
+
entity: <Permission Entity String>
|
|
60
|
+
}]
|
|
61
|
+
[root_key_id]: <Root Key Id Numeric String>
|
|
62
|
+
tapd: <Authenticated tapd API Object>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@returns via cbk or Promise
|
|
66
|
+
{
|
|
67
|
+
macaroon: <Macaroon Base64 String>
|
|
68
|
+
}
|
|
69
|
+
*/
|
|
70
|
+
const createTapdMacaroon: TapdMethod<
|
|
71
|
+
CreateTapdMacaroonArgs,
|
|
72
|
+
CreateTapdMacaroonResult
|
|
73
|
+
> = (
|
|
74
|
+
args: CreateTapdMacaroonArgs,
|
|
75
|
+
cbk?: TapdCallback<CreateTapdMacaroonResult>,
|
|
76
|
+
) => {
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
return asyncAuto<Tasks, TapdError>(
|
|
79
|
+
{
|
|
80
|
+
// Check arguments
|
|
81
|
+
validate: cbk => {
|
|
82
|
+
if (!isArray(args.permissions) || !args.permissions.length) {
|
|
83
|
+
return cbk([400, 'ExpectedPermissionsToCreateTapdMacaroon']);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (!args.permissions.every(isPermission)) {
|
|
87
|
+
return cbk([400, 'ExpectedActionAndEntityForTapdPermission']);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const rootKeyId = args.root_key_id;
|
|
91
|
+
|
|
92
|
+
if (rootKeyId !== undefined && !isRootKeyId(rootKeyId)) {
|
|
93
|
+
return cbk([400, 'ExpectedNumericRootKeyIdToCreateTapdMacaroon']);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!isTapd({method, type, tapd: args.tapd})) {
|
|
97
|
+
return cbk([400, 'ExpectedAuthenticatedTapdToCreateTapdMacaroon']);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return cbk();
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
// Create the macaroon
|
|
104
|
+
create: [
|
|
105
|
+
'validate',
|
|
106
|
+
({}, cbk) => {
|
|
107
|
+
const request = {
|
|
108
|
+
allow_external_permissions: !!args.is_external_allowed,
|
|
109
|
+
permissions: args.permissions.map(n => ({
|
|
110
|
+
action: n.action,
|
|
111
|
+
entity: n.entity,
|
|
112
|
+
})),
|
|
113
|
+
root_key_id: args.root_key_id || '0',
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
return args.tapd[type][method](request, (err: any, res: any) => {
|
|
117
|
+
if (isConnectionFailure({err})) {
|
|
118
|
+
return cbk([503, 'FailedToConnectToTapdToCreateTapdMacaroon']);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (isPermissionDenied({err})) {
|
|
122
|
+
return cbk([403, 'PermissionDeniedToCreateTapdMacaroon']);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const details = String(err?.details);
|
|
126
|
+
|
|
127
|
+
if (!!err && permissionErrors.some(n => details.includes(n))) {
|
|
128
|
+
return cbk([400, 'ExpectedKnownPermissionsForTapdMacaroon']);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (!!err && details.includes(disabledError)) {
|
|
132
|
+
return cbk([501, 'MacaroonsAreDisabledInTapd']);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (!!err) {
|
|
136
|
+
return cbk([503, 'UnexpectedErrorCreatingTapdMacaroon', {err}]);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (!res || !isHex(res.macaroon)) {
|
|
140
|
+
return cbk([503, 'ExpectedHexMacaroonInBakeMacaroonResponse']);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return cbk(null, {macaroon: hexAsBase64(res.macaroon)});
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
returnResult({reject, resolve, of: 'create'}, cbk),
|
|
149
|
+
);
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
export default createTapdMacaroon;
|