wowok 2.1.13 → 2.1.16
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/dist/cjs/bcs/bcs.js +160 -164
- package/dist/cjs/bcs/bcs.js.map +1 -1
- package/dist/cjs/bcs/effects.js +109 -112
- package/dist/cjs/bcs/effects.js.map +1 -1
- package/dist/cjs/bcs/index.js +49 -58
- package/dist/cjs/bcs/index.js.map +1 -1
- package/dist/cjs/bcs/pure.js +14 -17
- package/dist/cjs/bcs/pure.js.map +1 -1
- package/dist/cjs/bcs/type-tag-serializer.js +6 -11
- package/dist/cjs/bcs/type-tag-serializer.js.map +1 -1
- package/dist/cjs/bcs/types.js +1 -4
- package/dist/cjs/bcs/types.js.map +1 -1
- package/dist/cjs/client/index.js +4 -15
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/network.js +3 -7
- package/dist/cjs/client/network.js.map +1 -1
- package/dist/cjs/cryptography/index.js +6 -27
- package/dist/cjs/cryptography/index.js.map +1 -1
- package/dist/cjs/cryptography/intent.js +4 -7
- package/dist/cjs/cryptography/intent.js.map +1 -1
- package/dist/cjs/cryptography/keypair.js +26 -33
- package/dist/cjs/cryptography/keypair.js.map +1 -1
- package/dist/cjs/cryptography/mnemonics.js +8 -14
- package/dist/cjs/cryptography/mnemonics.js.map +1 -1
- package/dist/cjs/cryptography/publickey.js +19 -25
- package/dist/cjs/cryptography/publickey.js.map +1 -1
- package/dist/cjs/cryptography/signature-scheme.js +3 -6
- package/dist/cjs/cryptography/signature-scheme.js.map +1 -1
- package/dist/cjs/cryptography/signature.js +14 -18
- package/dist/cjs/cryptography/signature.js.map +1 -1
- package/dist/cjs/experimental/cache.js +1 -5
- package/dist/cjs/experimental/cache.js.map +1 -1
- package/dist/cjs/experimental/client.js +3 -7
- package/dist/cjs/experimental/client.js.map +1 -1
- package/dist/cjs/experimental/core.js +11 -15
- package/dist/cjs/experimental/core.js.map +1 -1
- package/dist/cjs/experimental/errors.js +2 -7
- package/dist/cjs/experimental/errors.js.map +1 -1
- package/dist/cjs/experimental/index.js +5 -12
- package/dist/cjs/experimental/index.js.map +1 -1
- package/dist/cjs/experimental/persistent-storage.js +30 -36
- package/dist/cjs/experimental/persistent-storage.js.map +1 -1
- package/dist/cjs/experimental/persistent-storage.test.js +18 -20
- package/dist/cjs/experimental/persistent-storage.test.js.map +1 -1
- package/dist/cjs/experimental/transports/utils.js +6 -10
- package/dist/cjs/experimental/transports/utils.js.map +1 -1
- package/dist/cjs/experimental/types.js +1 -2
- package/dist/cjs/experimental/types.js.map +1 -1
- package/dist/cjs/faucet/faucet.js +6 -15
- package/dist/cjs/faucet/faucet.js.map +1 -1
- package/dist/cjs/faucet/index.js +1 -10
- package/dist/cjs/faucet/index.js.map +1 -1
- package/dist/cjs/grpc/client.js +20 -24
- package/dist/cjs/grpc/client.js.map +1 -1
- package/dist/cjs/grpc/core.js +65 -70
- package/dist/cjs/grpc/core.js.map +1 -1
- package/dist/cjs/grpc/index.js +2 -7
- package/dist/cjs/grpc/index.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/any.js +10 -13
- package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/duration.js +8 -11
- package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/empty.js +3 -6
- package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +7 -10
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/struct.js +25 -28
- package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +11 -14
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/cjs/grpc/proto/google/rpc/error_details.js +36 -39
- package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -1
- package/dist/cjs/grpc/proto/google/rpc/status.js +5 -8
- package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +13 -16
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +10 -13
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +20 -23
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +29 -32
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +12 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +2 -5
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +11 -14
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +17 -20
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +45 -48
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +7 -10
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +13 -17
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +73 -76
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +48 -51
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +10 -14
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +36 -39
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +8 -12
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +21 -24
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +15 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +67 -70
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +2 -5
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +7 -11
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +15 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +11 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +67 -70
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +7 -11
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +13 -16
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +38 -41
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +124 -127
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +8 -12
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +41 -44
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -1
- package/dist/cjs/index.js +22 -87
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/jsonRpc/client.js +29 -34
- package/dist/cjs/jsonRpc/client.js.map +1 -1
- package/dist/cjs/jsonRpc/core.js +29 -33
- package/dist/cjs/jsonRpc/core.js.map +1 -1
- package/dist/cjs/jsonRpc/errors.js +3 -9
- package/dist/cjs/jsonRpc/errors.js.map +1 -1
- package/dist/cjs/jsonRpc/http-transport.js +9 -13
- package/dist/cjs/jsonRpc/http-transport.js.map +1 -1
- package/dist/cjs/jsonRpc/index.js +3 -12
- package/dist/cjs/jsonRpc/index.js.map +1 -1
- package/dist/cjs/jsonRpc/json-rpc-resolver.js +19 -22
- package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -1
- package/dist/cjs/jsonRpc/rpc-websocket-client.js +5 -9
- package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -1
- package/dist/cjs/jsonRpc/types/chain.js +1 -2
- package/dist/cjs/jsonRpc/types/chain.js.map +1 -1
- package/dist/cjs/jsonRpc/types/changes.js +1 -2
- package/dist/cjs/jsonRpc/types/changes.js.map +1 -1
- package/dist/cjs/jsonRpc/types/coins.js +1 -2
- package/dist/cjs/jsonRpc/types/coins.js.map +1 -1
- package/dist/cjs/jsonRpc/types/common.js +1 -2
- package/dist/cjs/jsonRpc/types/common.js.map +1 -1
- package/dist/cjs/jsonRpc/types/generated.js +1 -2
- package/dist/cjs/jsonRpc/types/generated.js.map +1 -1
- package/dist/cjs/jsonRpc/types/index.js +1 -2
- package/dist/cjs/jsonRpc/types/index.js.map +1 -1
- package/dist/cjs/jsonRpc/types/params.js +1 -2
- package/dist/cjs/jsonRpc/types/params.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +7 -11
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/index.js +2 -8
- package/dist/cjs/keypairs/ed25519/index.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/keypair.js +26 -30
- package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/publickey.js +10 -14
- package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -1
- package/dist/cjs/keypairs/index.js +4 -20
- package/dist/cjs/keypairs/index.js.map +1 -1
- package/dist/cjs/keypairs/passkey/index.js +2 -9
- package/dist/cjs/keypairs/passkey/index.js.map +1 -1
- package/dist/cjs/keypairs/passkey/keypair.js +29 -35
- package/dist/cjs/keypairs/passkey/keypair.js.map +1 -1
- package/dist/cjs/keypairs/passkey/publickey.js +35 -41
- package/dist/cjs/keypairs/passkey/publickey.js.map +1 -1
- package/dist/cjs/keypairs/passkey/types.js +1 -2
- package/dist/cjs/keypairs/passkey/types.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/index.js +2 -8
- package/dist/cjs/keypairs/secp256k1/index.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js +25 -29
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/publickey.js +11 -15
- package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/index.js +2 -8
- package/dist/cjs/keypairs/secp256r1/index.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/keypair.js +25 -29
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/publickey.js +12 -16
- package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -1
- package/dist/cjs/multisig/index.js +2 -8
- package/dist/cjs/multisig/index.js.map +1 -1
- package/dist/cjs/multisig/publickey.js +40 -45
- package/dist/cjs/multisig/publickey.js.map +1 -1
- package/dist/cjs/multisig/signer.js +5 -9
- package/dist/cjs/multisig/signer.js.map +1 -1
- package/dist/cjs/transactions/Arguments.js +5 -8
- package/dist/cjs/transactions/Arguments.js.map +1 -1
- package/dist/cjs/transactions/Commands.js +21 -24
- package/dist/cjs/transactions/Commands.js.map +1 -1
- package/dist/cjs/transactions/Inputs.js +7 -10
- package/dist/cjs/transactions/Inputs.js.map +1 -1
- package/dist/cjs/transactions/ObjectCache.js +7 -13
- package/dist/cjs/transactions/ObjectCache.js.map +1 -1
- package/dist/cjs/transactions/Transaction.js +54 -59
- package/dist/cjs/transactions/Transaction.js.map +1 -1
- package/dist/cjs/transactions/TransactionData.js +27 -31
- package/dist/cjs/transactions/TransactionData.js.map +1 -1
- package/dist/cjs/transactions/__tests__/Transaction.test.js +71 -73
- package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -1
- package/dist/cjs/transactions/__tests__/bcs.test.js +26 -28
- package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -1
- package/dist/cjs/transactions/data/internal.js +122 -126
- package/dist/cjs/transactions/data/internal.js.map +1 -1
- package/dist/cjs/transactions/data/v1.js +114 -119
- package/dist/cjs/transactions/data/v1.js.map +1 -1
- package/dist/cjs/transactions/data/v2.js +63 -66
- package/dist/cjs/transactions/data/v2.js.map +1 -1
- package/dist/cjs/transactions/executor/caching.js +7 -11
- package/dist/cjs/transactions/executor/caching.js.map +1 -1
- package/dist/cjs/transactions/executor/parallel.js +20 -24
- package/dist/cjs/transactions/executor/parallel.js.map +1 -1
- package/dist/cjs/transactions/executor/queue.js +2 -7
- package/dist/cjs/transactions/executor/queue.js.map +1 -1
- package/dist/cjs/transactions/executor/serial.js +11 -16
- package/dist/cjs/transactions/executor/serial.js.map +1 -1
- package/dist/cjs/transactions/hash.js +3 -6
- package/dist/cjs/transactions/hash.js.map +1 -1
- package/dist/cjs/transactions/index.js +12 -31
- package/dist/cjs/transactions/index.js.map +1 -1
- package/dist/cjs/transactions/intents/CoinWithBalance.js +21 -25
- package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -1
- package/dist/cjs/transactions/object.js +4 -7
- package/dist/cjs/transactions/object.js.map +1 -1
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +2 -7
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -1
- package/dist/cjs/transactions/pure.js +19 -22
- package/dist/cjs/transactions/pure.js.map +1 -1
- package/dist/cjs/transactions/resolve.js +10 -15
- package/dist/cjs/transactions/resolve.js.map +1 -1
- package/dist/cjs/transactions/serializer.js +34 -40
- package/dist/cjs/transactions/serializer.js.map +1 -1
- package/dist/cjs/transactions/utils.js +15 -23
- package/dist/cjs/transactions/utils.js.map +1 -1
- package/dist/cjs/utils/constants.js +18 -21
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/derived-objects.js +5 -8
- package/dist/cjs/utils/derived-objects.js.map +1 -1
- package/dist/cjs/utils/dynamic-fields.js +9 -12
- package/dist/cjs/utils/dynamic-fields.js.map +1 -1
- package/dist/cjs/utils/format.js +2 -6
- package/dist/cjs/utils/format.js.map +1 -1
- package/dist/cjs/utils/index.js +10 -46
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/move-registry.js +5 -10
- package/dist/cjs/utils/move-registry.js.map +1 -1
- package/dist/cjs/utils/sui-types.js +15 -25
- package/dist/cjs/utils/sui-types.js.map +1 -1
- package/dist/cjs/utils/suins.js +2 -6
- package/dist/cjs/utils/suins.js.map +1 -1
- package/dist/cjs/verify/index.js +1 -9
- package/dist/cjs/verify/index.js.map +1 -1
- package/dist/cjs/verify/verify.js +21 -28
- package/dist/cjs/verify/verify.js.map +1 -1
- package/dist/cjs/version.js +2 -5
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/w/call/allocation.js +88 -99
- package/dist/cjs/w/call/allocation.js.map +1 -1
- package/dist/cjs/w/call/arb.js +49 -58
- package/dist/cjs/w/call/arb.js.map +1 -1
- package/dist/cjs/w/call/arbitration.js +380 -406
- package/dist/cjs/w/call/arbitration.js.map +1 -1
- package/dist/cjs/w/call/base.js +63 -73
- package/dist/cjs/w/call/base.js.map +1 -1
- package/dist/cjs/w/call/contact.js +111 -123
- package/dist/cjs/w/call/contact.js.map +1 -1
- package/dist/cjs/w/call/demand.js +221 -238
- package/dist/cjs/w/call/demand.js.map +1 -1
- package/dist/cjs/w/call/entity.js +58 -75
- package/dist/cjs/w/call/entity.js.map +1 -1
- package/dist/cjs/w/call/guard-ins.js +1191 -1196
- package/dist/cjs/w/call/guard-ins.js.map +1 -1
- package/dist/cjs/w/call/guard.js +265 -286
- package/dist/cjs/w/call/guard.js.map +1 -1
- package/dist/cjs/w/call/index.js +22 -66
- package/dist/cjs/w/call/index.js.map +1 -1
- package/dist/cjs/w/call/machine.js +351 -378
- package/dist/cjs/w/call/machine.js.map +1 -1
- package/dist/cjs/w/call/order.js +102 -113
- package/dist/cjs/w/call/order.js.map +1 -1
- package/dist/cjs/w/call/passport.js +53 -65
- package/dist/cjs/w/call/passport.js.map +1 -1
- package/dist/cjs/w/call/payment.js +41 -50
- package/dist/cjs/w/call/payment.js.map +1 -1
- package/dist/cjs/w/call/permission.js +233 -263
- package/dist/cjs/w/call/permission.js.map +1 -1
- package/dist/cjs/w/call/personal.js +38 -42
- package/dist/cjs/w/call/personal.js.map +1 -1
- package/dist/cjs/w/call/progress.js +222 -240
- package/dist/cjs/w/call/progress.js.map +1 -1
- package/dist/cjs/w/call/proof.js +23 -30
- package/dist/cjs/w/call/proof.js.map +1 -1
- package/dist/cjs/w/call/repository.js +283 -302
- package/dist/cjs/w/call/repository.js.map +1 -1
- package/dist/cjs/w/call/resource.js +27 -37
- package/dist/cjs/w/call/resource.js.map +1 -1
- package/dist/cjs/w/call/reward.js +227 -241
- package/dist/cjs/w/call/reward.js.map +1 -1
- package/dist/cjs/w/call/service.js +653 -694
- package/dist/cjs/w/call/service.js.map +1 -1
- package/dist/cjs/w/call/treasury.js +270 -289
- package/dist/cjs/w/call/treasury.js.map +1 -1
- package/dist/cjs/w/call/util.js +201 -208
- package/dist/cjs/w/call/util.js.map +1 -1
- package/dist/cjs/w/common.js +117 -168
- package/dist/cjs/w/common.js.map +1 -1
- package/dist/cjs/w/exception.js +18 -30
- package/dist/cjs/w/exception.js.map +1 -1
- package/dist/cjs/w/index.js +8 -24
- package/dist/cjs/w/index.js.map +1 -1
- package/dist/cjs/w/local/account.js +73 -77
- package/dist/cjs/w/local/account.js.map +1 -1
- package/dist/cjs/w/local/cache.js +5 -9
- package/dist/cjs/w/local/cache.js.map +1 -1
- package/dist/cjs/w/local/config.js +10 -14
- package/dist/cjs/w/local/config.js.map +1 -1
- package/dist/cjs/w/local/index.js +65 -98
- package/dist/cjs/w/local/index.js.map +1 -1
- package/dist/cjs/w/local/local.js +59 -65
- package/dist/cjs/w/local/local.js.map +1 -1
- package/dist/cjs/w/local/storage.js +13 -56
- package/dist/cjs/w/local/storage.js.map +1 -1
- package/dist/cjs/w/local/token.js +20 -24
- package/dist/cjs/w/local/token.js.map +1 -1
- package/dist/cjs/w/local/util.js +3 -39
- package/dist/cjs/w/local/util.js.map +1 -1
- package/dist/cjs/w/local/wip.js +22 -70
- package/dist/cjs/w/local/wip.js.map +1 -1
- package/dist/cjs/w/messenger/crypto.js +34 -57
- package/dist/cjs/w/messenger/crypto.js.map +1 -1
- package/dist/cjs/w/messenger/index.js +4 -31
- package/dist/cjs/w/messenger/index.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-api.d.ts +1 -3
- package/dist/cjs/w/messenger/messenger-api.js +128 -178
- package/dist/cjs/w/messenger/messenger-api.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-manager.d.ts +3 -5
- package/dist/cjs/w/messenger/messenger-manager.js +65 -69
- package/dist/cjs/w/messenger/messenger-manager.js.map +1 -1
- package/dist/cjs/w/messenger/messenger.js +100 -137
- package/dist/cjs/w/messenger/messenger.js.map +1 -1
- package/dist/cjs/w/messenger/server.js +40 -44
- package/dist/cjs/w/messenger/server.js.map +1 -1
- package/dist/cjs/w/messenger/session.js +52 -56
- package/dist/cjs/w/messenger/session.js.map +1 -1
- package/dist/cjs/w/messenger/storage.js +13 -57
- package/dist/cjs/w/messenger/storage.js.map +1 -1
- package/dist/cjs/w/messenger/types.d.ts +3 -1
- package/dist/cjs/w/messenger/types.js +23 -27
- package/dist/cjs/w/messenger/types.js.map +1 -1
- package/dist/cjs/w/messenger/utils.js +1 -4
- package/dist/cjs/w/messenger/utils.js.map +1 -1
- package/dist/cjs/w/query/bult-in.js +22 -27
- package/dist/cjs/w/query/bult-in.js.map +1 -1
- package/dist/cjs/w/query/event.js +13 -18
- package/dist/cjs/w/query/event.js.map +1 -1
- package/dist/cjs/w/query/index.js +5 -21
- package/dist/cjs/w/query/index.js.map +1 -1
- package/dist/cjs/w/query/object.js +229 -266
- package/dist/cjs/w/query/object.js.map +1 -1
- package/dist/cjs/w/query/received.js +17 -21
- package/dist/cjs/w/query/received.js.map +1 -1
- package/dist/cjs/w/query/util.js +13 -17
- package/dist/cjs/w/query/util.js.map +1 -1
- package/dist/cjs/w/util.js +211 -225
- package/dist/cjs/w/util.js.map +1 -1
- package/dist/esm/experimental/persistent-storage.test.js +1 -1
- package/dist/esm/experimental/persistent-storage.test.js.map +1 -1
- package/dist/esm/w/messenger/messenger-api.d.ts +1 -3
- package/dist/esm/w/messenger/messenger-api.js +7 -8
- package/dist/esm/w/messenger/messenger-api.js.map +1 -1
- package/dist/esm/w/messenger/messenger-manager.d.ts +3 -5
- package/dist/esm/w/messenger/messenger-manager.js +16 -16
- package/dist/esm/w/messenger/messenger-manager.js.map +1 -1
- package/dist/esm/w/messenger/types.d.ts +3 -1
- package/dist/esm/w/messenger/types.js.map +1 -1
- package/package.json +7 -4
- package/scripts/download-prebuilds.js +213 -195
- package/scripts/install-better-sqlite3.js +8 -8
|
@@ -1,70 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Wowok.
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
-
var ownKeys = function(o) {
|
|
22
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
-
var ar = [];
|
|
24
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
-
return ar;
|
|
26
|
-
};
|
|
27
|
-
return ownKeys(o);
|
|
28
|
-
};
|
|
29
|
-
return function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
})();
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.getMessengerManager = getMessengerManager;
|
|
39
|
-
exports.watch_conversations = watch_conversations;
|
|
40
|
-
exports.send_message = send_message;
|
|
41
|
-
exports.send_file = send_file;
|
|
42
|
-
exports.watch_messages = watch_messages;
|
|
43
|
-
exports.extract_zip_messages = extract_zip_messages;
|
|
44
|
-
exports.generate_wts = generate_wts;
|
|
45
|
-
exports.verify_wts = verify_wts;
|
|
46
|
-
exports.sign_wts = sign_wts;
|
|
47
|
-
exports.wts2html = wts2html;
|
|
48
|
-
exports.proof_message = proof_message;
|
|
49
|
-
exports.blacklist = blacklist;
|
|
50
|
-
exports.friendslist = friendslist;
|
|
51
|
-
exports.guardlist = guardlist;
|
|
52
|
-
const messenger_manager_js_1 = require("./messenger-manager.js");
|
|
53
|
-
const account_js_1 = require("../local/account.js");
|
|
54
|
-
const exception_js_1 = require("../exception.js");
|
|
55
|
-
const sui_types_js_1 = require("../../utils/sui-types.js");
|
|
56
|
-
const local_js_1 = require("../local/local.js");
|
|
57
|
-
const storage_js_1 = require("./storage.js");
|
|
58
|
-
const types_js_1 = require("./types.js");
|
|
59
|
-
const crypto_1 = require("crypto");
|
|
60
|
-
const fs = __importStar(require("fs"));
|
|
61
|
-
const path = __importStar(require("path"));
|
|
62
|
-
const common_js_1 = require("../common.js");
|
|
63
|
-
const crypto_js_1 = require("./crypto.js");
|
|
64
|
-
const utils_js_1 = require("./utils.js");
|
|
65
|
-
const index_js_1 = require("../local/index.js");
|
|
66
|
-
const object_js_1 = require("../query/object.js");
|
|
67
|
-
const messenger_js_1 = require("./messenger.js");
|
|
3
|
+
import { MessengerManager } from "./messenger-manager.js";
|
|
4
|
+
import { Account } from "../local/account.js";
|
|
5
|
+
import { W_ERROR, WErrors } from "../exception.js";
|
|
6
|
+
import { LocalMark } from "../local/local.js";
|
|
7
|
+
import { MessageStorage } from "./storage.js";
|
|
8
|
+
import { MessengerError, MessengerErrorCode, CHAIN_PROOF_TYPE, } from "./types.js";
|
|
9
|
+
import { createHash } from "crypto";
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
12
|
+
import { isValidU64 } from "../common.js";
|
|
13
|
+
import { verifySingleMerkleRoot, hashPlaintext, verifyEd25519Signature, } from "./crypto.js";
|
|
14
|
+
import { canonicalizeJson } from "./utils.js";
|
|
15
|
+
import { GetAccountOrMark_Address, GetManyAccountOrMark_Address, } from "../local/index.js";
|
|
16
|
+
import { query_objects } from "../query/object.js";
|
|
17
|
+
import { Messenger } from "./messenger.js";
|
|
68
18
|
let managerInstance = null;
|
|
69
19
|
let isInitialized = false;
|
|
70
20
|
let backgroundTimer = null;
|
|
@@ -73,12 +23,12 @@ let backgroundTimer = null;
|
|
|
73
23
|
* 如果账号已注册(identity 已存在),则跳过
|
|
74
24
|
*/
|
|
75
25
|
async function autoRegisterMessengerAccounts() {
|
|
76
|
-
const accounts = await
|
|
26
|
+
const accounts = await Account.Instance().list_messenger_accounts();
|
|
77
27
|
for (const account of accounts) {
|
|
78
28
|
if (!account.address || !account.m) {
|
|
79
29
|
continue;
|
|
80
30
|
}
|
|
81
|
-
const messenger = new
|
|
31
|
+
const messenger = new Messenger(account.address);
|
|
82
32
|
await messenger.initialize();
|
|
83
33
|
}
|
|
84
34
|
}
|
|
@@ -86,9 +36,9 @@ async function autoRegisterMessengerAccounts() {
|
|
|
86
36
|
* 获取 MessengerManager 实例(单例)
|
|
87
37
|
* 首次调用时会自动启动后台服务
|
|
88
38
|
*/
|
|
89
|
-
function getMessengerManager() {
|
|
39
|
+
export function getMessengerManager() {
|
|
90
40
|
if (!managerInstance) {
|
|
91
|
-
managerInstance = new
|
|
41
|
+
managerInstance = new MessengerManager();
|
|
92
42
|
}
|
|
93
43
|
if (!isInitialized) {
|
|
94
44
|
isInitialized = true;
|
|
@@ -156,10 +106,10 @@ function registerCleanupHandler() {
|
|
|
156
106
|
}
|
|
157
107
|
registerCleanupHandler();
|
|
158
108
|
startBackgroundTimer();
|
|
159
|
-
async function watch_conversations(account) {
|
|
160
|
-
const address = await
|
|
109
|
+
export async function watch_conversations(account) {
|
|
110
|
+
const address = await Account.Instance().get_address(account);
|
|
161
111
|
if (!address) {
|
|
162
|
-
|
|
112
|
+
W_ERROR(WErrors.AccountNotFound, `watch_conversations.account ${account}`);
|
|
163
113
|
}
|
|
164
114
|
const manager = getMessengerManager();
|
|
165
115
|
return manager.get_conversations(address);
|
|
@@ -173,23 +123,23 @@ async function watch_conversations(account) {
|
|
|
173
123
|
* @param options 可选配置
|
|
174
124
|
* @returns SendMessageResult
|
|
175
125
|
*/
|
|
176
|
-
async function send_message(from, to, content, options) {
|
|
177
|
-
const fromAddress = await
|
|
126
|
+
export async function send_message(from, to, content, options) {
|
|
127
|
+
const fromAddress = await Account.Instance().get_address(from);
|
|
178
128
|
if (!fromAddress) {
|
|
179
|
-
|
|
129
|
+
W_ERROR(WErrors.AccountNotFound, `send_message.from ${from}`);
|
|
180
130
|
}
|
|
181
|
-
const t = await
|
|
131
|
+
const t = await GetAccountOrMark_Address(to);
|
|
182
132
|
if (!t) {
|
|
183
|
-
|
|
133
|
+
W_ERROR(WErrors.AccountNotFound, `send_message.to ${to} is not a valid account/address`);
|
|
184
134
|
}
|
|
185
135
|
if (options?.guardAddress != null && options?.passportAddress != null) {
|
|
186
136
|
[options.guardAddress, options.passportAddress] =
|
|
187
|
-
await
|
|
137
|
+
await LocalMark.Instance().get_many_address([
|
|
188
138
|
options.guardAddress,
|
|
189
139
|
options.passportAddress,
|
|
190
140
|
]);
|
|
191
141
|
if (!options.guardAddress || !options.passportAddress) {
|
|
192
|
-
|
|
142
|
+
W_ERROR(WErrors.AccountNotFound, `send_message.guardAddress or passportAddress not found`);
|
|
193
143
|
}
|
|
194
144
|
}
|
|
195
145
|
const manager = getMessengerManager();
|
|
@@ -207,23 +157,23 @@ async function send_message(from, to, content, options) {
|
|
|
207
157
|
* @param options 可选配置
|
|
208
158
|
* @returns SendMessageResult
|
|
209
159
|
*/
|
|
210
|
-
async function send_file(from, to, filePath, options) {
|
|
211
|
-
const fromAddress = await
|
|
160
|
+
export async function send_file(from, to, filePath, options) {
|
|
161
|
+
const fromAddress = await Account.Instance().get_address(from);
|
|
212
162
|
if (!fromAddress) {
|
|
213
|
-
|
|
163
|
+
W_ERROR(WErrors.AccountNotFound, `send_file.from ${from}`);
|
|
214
164
|
}
|
|
215
|
-
const t = await
|
|
165
|
+
const t = await GetAccountOrMark_Address(to);
|
|
216
166
|
if (!t) {
|
|
217
|
-
|
|
167
|
+
W_ERROR(WErrors.AccountNotFound, `send_file.to ${to} is not a valid account/address`);
|
|
218
168
|
}
|
|
219
169
|
if (options?.guardAddress != null && options?.passportAddress != null) {
|
|
220
170
|
[options.guardAddress, options.passportAddress] =
|
|
221
|
-
await
|
|
171
|
+
await LocalMark.Instance().get_many_address([
|
|
222
172
|
options.guardAddress,
|
|
223
173
|
options.passportAddress,
|
|
224
174
|
]);
|
|
225
175
|
if (!options.guardAddress || !options.passportAddress) {
|
|
226
|
-
|
|
176
|
+
W_ERROR(WErrors.AccountNotFound, `send_file.guardAddress or passportAddress not found`);
|
|
227
177
|
}
|
|
228
178
|
}
|
|
229
179
|
const manager = getMessengerManager();
|
|
@@ -235,15 +185,18 @@ async function send_file(from, to, filePath, options) {
|
|
|
235
185
|
* @param filter 过滤条件
|
|
236
186
|
* @returns Message 数组
|
|
237
187
|
*/
|
|
238
|
-
async function watch_messages(filter) {
|
|
188
|
+
export async function watch_messages(filter) {
|
|
239
189
|
if (filter?.account) {
|
|
240
|
-
filter.account = await
|
|
190
|
+
filter.account = await Account.Instance().get_address(filter.account);
|
|
191
|
+
if (!filter.account) {
|
|
192
|
+
W_ERROR(WErrors.AccountNotFound, `watch_messages.account ${filter.account}`);
|
|
193
|
+
}
|
|
241
194
|
}
|
|
242
195
|
if (filter?.customListFilter?.includeAddresses != null) {
|
|
243
|
-
filter.customListFilter.includeAddresses = (await
|
|
196
|
+
filter.customListFilter.includeAddresses = (await Account.Instance().get_many_address(filter.customListFilter.includeAddresses)).filter((v) => v != null);
|
|
244
197
|
}
|
|
245
198
|
if (filter?.customListFilter?.excludeAddresses != null) {
|
|
246
|
-
filter.customListFilter.excludeAddresses = (await
|
|
199
|
+
filter.customListFilter.excludeAddresses = (await Account.Instance().get_many_address(filter.customListFilter.excludeAddresses)).filter((v) => v != null);
|
|
247
200
|
}
|
|
248
201
|
const manager = getMessengerManager();
|
|
249
202
|
return manager.watch(filter);
|
|
@@ -257,20 +210,20 @@ async function watch_messages(filter) {
|
|
|
257
210
|
*/
|
|
258
211
|
async function extract_zip_message(message, outputDir) {
|
|
259
212
|
if (!message.zipMetadata) {
|
|
260
|
-
throw new
|
|
213
|
+
throw new MessengerError(MessengerErrorCode.INVALID_MESSAGE_TYPE, "Message is not a ZIP archive");
|
|
261
214
|
}
|
|
262
215
|
if (!message.plaintext) {
|
|
263
|
-
throw new
|
|
216
|
+
throw new MessengerError(MessengerErrorCode.MESSAGE_NOT_DECRYPTED, "Message plaintext not available");
|
|
264
217
|
}
|
|
265
218
|
// 1. 解码 base64 ZIP 数据
|
|
266
219
|
const zipBase64 = message.plaintext;
|
|
267
220
|
const zipData = Buffer.from(zipBase64, "base64");
|
|
268
221
|
// 2. 验证文件哈希
|
|
269
222
|
if (message.zipMetadata?.fileHash) {
|
|
270
|
-
const actualHash =
|
|
223
|
+
const actualHash = createHash("sha256").update(zipData).digest("hex");
|
|
271
224
|
const expectedHash = message.zipMetadata.fileHash.replace("0x", "");
|
|
272
225
|
if (actualHash !== expectedHash) {
|
|
273
|
-
throw new
|
|
226
|
+
throw new MessengerError(MessengerErrorCode.HASH_MISMATCH, `ZIP file hash mismatch: expected ${expectedHash}, got ${actualHash}`);
|
|
274
227
|
}
|
|
275
228
|
}
|
|
276
229
|
// 3. 解压 ZIP 文件
|
|
@@ -306,7 +259,7 @@ async function extract_zip_message(message, outputDir) {
|
|
|
306
259
|
const userAddress = message.direction === "sent"
|
|
307
260
|
? message.fromAddress
|
|
308
261
|
: message.toAddress;
|
|
309
|
-
const messageStorage = new
|
|
262
|
+
const messageStorage = new MessageStorage(userAddress);
|
|
310
263
|
messageStorage.saveMessage(message);
|
|
311
264
|
}
|
|
312
265
|
return savedPaths[0] || "";
|
|
@@ -319,11 +272,11 @@ async function extract_zip_message(message, outputDir) {
|
|
|
319
272
|
* @param userAddress 用户地址(当传入消息ID数组时需要)
|
|
320
273
|
* @returns 解压后的文件路径数组
|
|
321
274
|
*/
|
|
322
|
-
async function extract_zip_messages(account, messages, outputDir) {
|
|
275
|
+
export async function extract_zip_messages(account, messages, outputDir) {
|
|
323
276
|
const results = [];
|
|
324
|
-
const userAddress = await
|
|
277
|
+
const userAddress = await Account.Instance().get_address(account);
|
|
325
278
|
if (!userAddress) {
|
|
326
|
-
throw new
|
|
279
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, "account is required when extracting by message IDs");
|
|
327
280
|
}
|
|
328
281
|
// 判断是 Message 数组还是 messageId 数组
|
|
329
282
|
const isMessageIds = messages.length > 0 && typeof messages[0] === "string";
|
|
@@ -332,7 +285,7 @@ async function extract_zip_messages(account, messages, outputDir) {
|
|
|
332
285
|
let message;
|
|
333
286
|
if (isMessageIds) {
|
|
334
287
|
const messageId = item;
|
|
335
|
-
const messageStorage = new
|
|
288
|
+
const messageStorage = new MessageStorage(userAddress);
|
|
336
289
|
const storedMessage = messageStorage.getMessageById(messageId);
|
|
337
290
|
if (!storedMessage) {
|
|
338
291
|
console.error(`Message not found: ${messageId}`);
|
|
@@ -360,19 +313,16 @@ async function extract_zip_messages(account, messages, outputDir) {
|
|
|
360
313
|
}
|
|
361
314
|
return results;
|
|
362
315
|
}
|
|
363
|
-
async function generate_wts(params) {
|
|
364
|
-
const myAddress = await
|
|
316
|
+
export async function generate_wts(params) {
|
|
317
|
+
const myAddress = await Account.Instance().get_address(params.myAccount);
|
|
365
318
|
if (!myAddress) {
|
|
366
|
-
|
|
319
|
+
W_ERROR(WErrors.AccountNotFound, `generate_wts.myAccount ${params.myAccount}`);
|
|
367
320
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
(0, exception_js_1.W_ERROR)(exception_js_1.WErrors.AccountNotFound, `generate_wts.peerAccount ${params.peerAccount}`);
|
|
372
|
-
}
|
|
373
|
-
params.peerAccount = t;
|
|
321
|
+
const peerAddress = await GetAccountOrMark_Address(params.peerAccount);
|
|
322
|
+
if (!peerAddress) {
|
|
323
|
+
W_ERROR(WErrors.AccountNotFound, `generate_wts.peerAccount ${params.peerAccount}`);
|
|
374
324
|
}
|
|
375
|
-
return getMessengerManager().generate_wts(params);
|
|
325
|
+
return getMessengerManager().generate_wts(params.outputDir, myAddress, peerAddress, params.range, params.excludePlaintext);
|
|
376
326
|
}
|
|
377
327
|
/**
|
|
378
328
|
* 加载 WTS 文件
|
|
@@ -410,7 +360,7 @@ function save_wts(wtsFile, filePath) {
|
|
|
410
360
|
* @param wtsFilePath WTS 文件路径(本地或网络文件)
|
|
411
361
|
* @returns 验证结果
|
|
412
362
|
*/
|
|
413
|
-
async function verify_wts(wtsFilePath) {
|
|
363
|
+
export async function verify_wts(wtsFilePath) {
|
|
414
364
|
try {
|
|
415
365
|
// 1. 加载 WTS 文件
|
|
416
366
|
const wtsFile = load_wts(wtsFilePath);
|
|
@@ -428,7 +378,7 @@ async function verify_wts(wtsFilePath) {
|
|
|
428
378
|
// 2. 验证每个消息的 Merkle Root 计算(不验证跨消息链连续性)
|
|
429
379
|
// 因为消息可能来自不同的 Merkle Tree(不同会话方向)
|
|
430
380
|
for (const msg of payload.messages) {
|
|
431
|
-
const result =
|
|
381
|
+
const result = verifySingleMerkleRoot(msg.prevRoot, msg.merkleRoot, msg.plaintextHash, msg.timestamp, msg.leafIndex);
|
|
432
382
|
if (!result.valid) {
|
|
433
383
|
return {
|
|
434
384
|
valid: false,
|
|
@@ -453,7 +403,7 @@ async function verify_wts(wtsFilePath) {
|
|
|
453
403
|
}
|
|
454
404
|
// 如果提供了明文,验证 plaintextHash
|
|
455
405
|
if (msg.plaintext) {
|
|
456
|
-
const computedHash =
|
|
406
|
+
const computedHash = hashPlaintext(msg.plaintext, msg.clientTimestamp, msg.guardAddress, msg.passportAddress, msg.lastReceivedLeafIndex);
|
|
457
407
|
if (computedHash.toLowerCase() !==
|
|
458
408
|
msg.plaintextHash.toLowerCase()) {
|
|
459
409
|
return {
|
|
@@ -485,7 +435,7 @@ async function verify_wts(wtsFilePath) {
|
|
|
485
435
|
};
|
|
486
436
|
}
|
|
487
437
|
const signData = `${msg.prevRoot}:${msg.merkleRoot}:${msg.timestamp}:${msg.serverPublicKey}`;
|
|
488
|
-
const signatureValid =
|
|
438
|
+
const signatureValid = verifyEd25519Signature(msg.serverPublicKey, signData, msg.serverSignature);
|
|
489
439
|
if (!signatureValid) {
|
|
490
440
|
return {
|
|
491
441
|
valid: false,
|
|
@@ -497,7 +447,7 @@ async function verify_wts(wtsFilePath) {
|
|
|
497
447
|
// 4. 验证 payload 哈希
|
|
498
448
|
const { sha256 } = await import("@noble/hashes/sha256");
|
|
499
449
|
const { bytesToHex } = await import("@noble/hashes/utils");
|
|
500
|
-
const canonicalPayload =
|
|
450
|
+
const canonicalPayload = canonicalizeJson(payload);
|
|
501
451
|
const computedHash = "sha256:" +
|
|
502
452
|
bytesToHex(sha256(new TextEncoder().encode(canonicalPayload)));
|
|
503
453
|
// DEBUG: 打印调试信息
|
|
@@ -681,21 +631,21 @@ async function verify_wts(wtsFilePath) {
|
|
|
681
631
|
* @param outputPath 输出文件路径(可选,默认覆盖原文件)
|
|
682
632
|
* @returns 签名后的 WTS 文件路径
|
|
683
633
|
*/
|
|
684
|
-
async function sign_wts(wtsFilePath, account, outputPath) {
|
|
634
|
+
export async function sign_wts(wtsFilePath, account, outputPath) {
|
|
685
635
|
// 1. 验证 WTS 文件格式(内部会加载文件)
|
|
686
636
|
const verifyResult = await verify_wts(wtsFilePath);
|
|
687
637
|
if (!verifyResult.valid) {
|
|
688
|
-
throw new
|
|
638
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `WTS file verification failed: ${verifyResult.error}`);
|
|
689
639
|
}
|
|
690
640
|
// 2. 加载 WTS 文件
|
|
691
641
|
const wtsFile = load_wts(wtsFilePath);
|
|
692
642
|
// 3. 获取签名者地址
|
|
693
|
-
const address = await
|
|
643
|
+
const address = await Account.Instance().get_address(account);
|
|
694
644
|
if (!address) {
|
|
695
|
-
|
|
645
|
+
W_ERROR(WErrors.AccountNotFound, `sign_wts.account ${account}`);
|
|
696
646
|
}
|
|
697
647
|
// 4. 使用 Account 签名(同时获取公钥)
|
|
698
|
-
const signResult = await
|
|
648
|
+
const signResult = await Account.Instance().signData(address, wtsFile.meta.hash);
|
|
699
649
|
// 6. 转换公钥格式为 base64 (32字节)
|
|
700
650
|
let publicKeyBase64;
|
|
701
651
|
const pk = signResult.publicKey;
|
|
@@ -709,7 +659,7 @@ async function sign_wts(wtsFilePath, account, outputPath) {
|
|
|
709
659
|
publicKeyBase64 = buffer.toString("base64");
|
|
710
660
|
}
|
|
711
661
|
else {
|
|
712
|
-
throw new
|
|
662
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Invalid public key length: ${buffer.length}, expected 32 or 33 bytes`);
|
|
713
663
|
}
|
|
714
664
|
}
|
|
715
665
|
else {
|
|
@@ -768,7 +718,7 @@ async function sign_wts(wtsFilePath, account, outputPath) {
|
|
|
768
718
|
save_wts(signedWtsFile, savePath);
|
|
769
719
|
return savePath;
|
|
770
720
|
}
|
|
771
|
-
async function wts2html(wtsPath, options = {}) {
|
|
721
|
+
export async function wts2html(wtsPath, options = {}) {
|
|
772
722
|
const fs = await import("fs");
|
|
773
723
|
const path = await import("path");
|
|
774
724
|
// 检查是文件还是文件夹
|
|
@@ -778,7 +728,7 @@ async function wts2html(wtsPath, options = {}) {
|
|
|
778
728
|
const files = fs.readdirSync(wtsPath);
|
|
779
729
|
const wtsFiles = files.filter((f) => f.endsWith(".wts"));
|
|
780
730
|
if (wtsFiles.length === 0) {
|
|
781
|
-
throw new
|
|
731
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `No .wts files found in directory: ${wtsPath}`);
|
|
782
732
|
}
|
|
783
733
|
const results = [];
|
|
784
734
|
for (const file of wtsFiles) {
|
|
@@ -1045,33 +995,33 @@ async function convertWtsToHtml(wtsFilePath, options = {}) {
|
|
|
1045
995
|
* @param env 调用环境(包含网络、签名账号等)
|
|
1046
996
|
* @returns 证明对象地址
|
|
1047
997
|
*/
|
|
1048
|
-
async function proof_message(account, messageId, network) {
|
|
998
|
+
export async function proof_message(account, messageId, network) {
|
|
1049
999
|
// 1. 解析账号地址
|
|
1050
|
-
const address = await
|
|
1000
|
+
const address = await Account.Instance().get_address(account);
|
|
1051
1001
|
if (!address) {
|
|
1052
|
-
|
|
1002
|
+
W_ERROR(WErrors.AccountNotFound, `proof_message.account ${account}`);
|
|
1053
1003
|
}
|
|
1054
1004
|
// 2. 获取消息
|
|
1055
|
-
const messageStorage = new
|
|
1005
|
+
const messageStorage = new MessageStorage(address);
|
|
1056
1006
|
const message = messageStorage.getMessageById(messageId);
|
|
1057
1007
|
if (!message) {
|
|
1058
|
-
throw new
|
|
1008
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Message not found: ${messageId}`);
|
|
1059
1009
|
}
|
|
1060
1010
|
// 3. 验证消息属于该账号
|
|
1061
1011
|
if (message.fromAddress.toLowerCase() !== address.toLowerCase() &&
|
|
1062
1012
|
message.toAddress.toLowerCase() !== address.toLowerCase()) {
|
|
1063
|
-
throw new
|
|
1013
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Message does not belong to account ${address}`);
|
|
1064
1014
|
}
|
|
1065
1015
|
// 4. 验证服务器签名存在
|
|
1066
1016
|
if (!message.serverSignature) {
|
|
1067
|
-
throw new
|
|
1017
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server signature`);
|
|
1068
1018
|
}
|
|
1069
1019
|
if (!message.serverPublicKey) {
|
|
1070
|
-
throw new
|
|
1020
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server public key`);
|
|
1071
1021
|
}
|
|
1072
1022
|
// 5. 使用 verifyMessage 验证消息完整性(包含服务器签名验证)
|
|
1073
1023
|
if (!message.plaintext) {
|
|
1074
|
-
throw new
|
|
1024
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have plaintext`);
|
|
1075
1025
|
}
|
|
1076
1026
|
const { verifyMessage } = await import("./crypto.js");
|
|
1077
1027
|
// 构造验证参数
|
|
@@ -1089,7 +1039,7 @@ async function proof_message(account, messageId, network) {
|
|
|
1089
1039
|
if (message.newRoot && message.leafIndex !== undefined) {
|
|
1090
1040
|
// 检查服务器时间戳是否存在
|
|
1091
1041
|
if (!message.serverTimestamp) {
|
|
1092
|
-
throw new
|
|
1042
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message ${message.messageId} missing server timestamp for verification`);
|
|
1093
1043
|
}
|
|
1094
1044
|
verifyParams.merkleMetadata = {
|
|
1095
1045
|
newRoot: message.newRoot,
|
|
@@ -1102,11 +1052,11 @@ async function proof_message(account, messageId, network) {
|
|
|
1102
1052
|
}
|
|
1103
1053
|
const verifyResult = verifyMessage(verifyParams);
|
|
1104
1054
|
if (!verifyResult.valid) {
|
|
1105
|
-
throw new
|
|
1055
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message verification failed: ${verifyResult.error}`);
|
|
1106
1056
|
}
|
|
1107
1057
|
// 6. 从消息中获取服务器公钥
|
|
1108
1058
|
if (!message.serverPublicKey) {
|
|
1109
|
-
throw new
|
|
1059
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server public key`);
|
|
1110
1060
|
}
|
|
1111
1061
|
// 7. 创建链上证明
|
|
1112
1062
|
const { CallProof } = await import("../call/proof.js");
|
|
@@ -1114,7 +1064,7 @@ async function proof_message(account, messageId, network) {
|
|
|
1114
1064
|
proof: message.newRoot, // 证明root存在
|
|
1115
1065
|
server_pubkey: message.serverPublicKey,
|
|
1116
1066
|
server_signature: message.serverSignature,
|
|
1117
|
-
proof_type:
|
|
1067
|
+
proof_type: CHAIN_PROOF_TYPE, // 消息证明类型
|
|
1118
1068
|
description: `Message proof for ${messageId}`,
|
|
1119
1069
|
item_count: message.leafIndex ?? 1,
|
|
1120
1070
|
about_address: message.fromAddress.toLowerCase() === address.toLowerCase()
|
|
@@ -1133,7 +1083,7 @@ async function proof_message(account, messageId, network) {
|
|
|
1133
1083
|
// 查找 Proof 类型的对象
|
|
1134
1084
|
const proofResult = responseData.find((item) => item.type === "Proof");
|
|
1135
1085
|
if (!proofResult || !proofResult.object) {
|
|
1136
|
-
throw new
|
|
1086
|
+
throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Failed to get proof address from transaction result`);
|
|
1137
1087
|
}
|
|
1138
1088
|
message.proof = proofResult.object;
|
|
1139
1089
|
messageStorage.saveMessage(message);
|
|
@@ -1149,35 +1099,35 @@ const MAX_GUARDS_SIZE_ONCE = 10;
|
|
|
1149
1099
|
* @param request 操作请求
|
|
1150
1100
|
* @returns 操作结果
|
|
1151
1101
|
*/
|
|
1152
|
-
async function blacklist(request) {
|
|
1153
|
-
const acc = await
|
|
1102
|
+
export async function blacklist(request) {
|
|
1103
|
+
const acc = await Account.Instance().get_address(request.account);
|
|
1154
1104
|
if (!acc) {
|
|
1155
|
-
|
|
1105
|
+
W_ERROR(WErrors.AccountNotFound, `blacklist.account ${request.account}`);
|
|
1156
1106
|
}
|
|
1157
1107
|
const manager = getMessengerManager();
|
|
1158
1108
|
switch (request.op) {
|
|
1159
1109
|
case "add": {
|
|
1160
|
-
let addresses = await
|
|
1110
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1161
1111
|
if (addresses.length === 0) {
|
|
1162
|
-
|
|
1112
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.add.users ${request.users} have not valid addresses`);
|
|
1163
1113
|
}
|
|
1164
1114
|
// 去重
|
|
1165
1115
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
1166
1116
|
if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
|
|
1167
|
-
|
|
1117
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.add.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
|
|
1168
1118
|
}
|
|
1169
1119
|
const result = await manager.addToBlacklist(acc, addresses);
|
|
1170
1120
|
return { op: "add", result };
|
|
1171
1121
|
}
|
|
1172
1122
|
case "remove": {
|
|
1173
|
-
let addresses = await
|
|
1123
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1174
1124
|
if (addresses.length === 0) {
|
|
1175
|
-
|
|
1125
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.remove.users ${request.users} have not valid addresses`);
|
|
1176
1126
|
}
|
|
1177
1127
|
// 去重
|
|
1178
1128
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
1179
1129
|
if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
|
|
1180
|
-
|
|
1130
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.remove.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
|
|
1181
1131
|
}
|
|
1182
1132
|
const result = await manager.removeFromBlacklist(acc, addresses);
|
|
1183
1133
|
return { op: "remove", result };
|
|
@@ -1191,20 +1141,20 @@ async function blacklist(request) {
|
|
|
1191
1141
|
return { op: "get", result };
|
|
1192
1142
|
}
|
|
1193
1143
|
case "exist": {
|
|
1194
|
-
let addresses = await
|
|
1144
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1195
1145
|
if (addresses.length === 0) {
|
|
1196
|
-
|
|
1146
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.exist.users ${request.users} have not valid addresses`);
|
|
1197
1147
|
}
|
|
1198
1148
|
// 去重
|
|
1199
1149
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
1200
1150
|
if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
|
|
1201
|
-
|
|
1151
|
+
W_ERROR(WErrors.InvalidParam, `blacklist.exist.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
|
|
1202
1152
|
}
|
|
1203
1153
|
const result = await manager.existInBlacklist(acc, addresses);
|
|
1204
1154
|
return { op: "exist", result };
|
|
1205
1155
|
}
|
|
1206
1156
|
default:
|
|
1207
|
-
throw new
|
|
1157
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `blacklist.unknown op: ${request}`);
|
|
1208
1158
|
}
|
|
1209
1159
|
}
|
|
1210
1160
|
/**
|
|
@@ -1212,17 +1162,17 @@ async function blacklist(request) {
|
|
|
1212
1162
|
* @param request 操作请求
|
|
1213
1163
|
* @returns 操作结果
|
|
1214
1164
|
*/
|
|
1215
|
-
async function friendslist(request) {
|
|
1216
|
-
const acc = await
|
|
1165
|
+
export async function friendslist(request) {
|
|
1166
|
+
const acc = await Account.Instance().get_address(request.account);
|
|
1217
1167
|
if (!acc) {
|
|
1218
|
-
|
|
1168
|
+
W_ERROR(WErrors.AccountNotFound, `friendslist.account ${request.account}`);
|
|
1219
1169
|
}
|
|
1220
1170
|
const manager = getMessengerManager();
|
|
1221
1171
|
switch (request.op) {
|
|
1222
1172
|
case "add": {
|
|
1223
|
-
let addresses = await
|
|
1173
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1224
1174
|
if (addresses.length === 0) {
|
|
1225
|
-
|
|
1175
|
+
W_ERROR(WErrors.InvalidParam, `friendslist.add.users ${request.users} have not valid addresses`);
|
|
1226
1176
|
}
|
|
1227
1177
|
// 去重
|
|
1228
1178
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
@@ -1230,14 +1180,14 @@ async function friendslist(request) {
|
|
|
1230
1180
|
return { op: "add", result };
|
|
1231
1181
|
}
|
|
1232
1182
|
case "remove": {
|
|
1233
|
-
let addresses = await
|
|
1183
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1234
1184
|
if (addresses.length === 0) {
|
|
1235
|
-
|
|
1185
|
+
W_ERROR(WErrors.InvalidParam, `friendslist.remove.users ${request.users} have not valid addresses`);
|
|
1236
1186
|
}
|
|
1237
1187
|
// 去重
|
|
1238
1188
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
1239
1189
|
if (addresses.length > MAX_FRIENDS_SIZE_ONCE) {
|
|
1240
|
-
|
|
1190
|
+
W_ERROR(WErrors.InvalidParam, `friendslist.remove.users ${request.users} have too many addresses, max ${MAX_FRIENDS_SIZE_ONCE}`);
|
|
1241
1191
|
}
|
|
1242
1192
|
const result = await manager.removeFromFriendsList(acc, addresses);
|
|
1243
1193
|
return { op: "remove", result };
|
|
@@ -1251,20 +1201,20 @@ async function friendslist(request) {
|
|
|
1251
1201
|
return { op: "get", result };
|
|
1252
1202
|
}
|
|
1253
1203
|
case "exist": {
|
|
1254
|
-
let addresses = await
|
|
1204
|
+
let addresses = await GetManyAccountOrMark_Address(request.users);
|
|
1255
1205
|
if (addresses.length === 0) {
|
|
1256
|
-
|
|
1206
|
+
W_ERROR(WErrors.InvalidParam, `friendslist.exist.users ${request.users} have not valid addresses`);
|
|
1257
1207
|
}
|
|
1258
1208
|
// 去重
|
|
1259
1209
|
addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
|
|
1260
1210
|
if (addresses.length > MAX_FRIENDS_SIZE_ONCE) {
|
|
1261
|
-
|
|
1211
|
+
W_ERROR(WErrors.InvalidParam, `friendslist.exist.users ${request.users} have too many addresses, max ${MAX_FRIENDS_SIZE_ONCE}`);
|
|
1262
1212
|
}
|
|
1263
1213
|
const result = await manager.existInFriendsList(acc, addresses);
|
|
1264
1214
|
return { op: "exist", result };
|
|
1265
1215
|
}
|
|
1266
1216
|
default:
|
|
1267
|
-
throw new
|
|
1217
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `friendslist.unknown op: ${request}`);
|
|
1268
1218
|
}
|
|
1269
1219
|
}
|
|
1270
1220
|
/**
|
|
@@ -1272,10 +1222,10 @@ async function friendslist(request) {
|
|
|
1272
1222
|
* @param request 操作请求
|
|
1273
1223
|
* @returns 操作结果
|
|
1274
1224
|
*/
|
|
1275
|
-
async function guardlist(request) {
|
|
1276
|
-
const acc = await
|
|
1225
|
+
export async function guardlist(request) {
|
|
1226
|
+
const acc = await Account.Instance().get_address(request.account);
|
|
1277
1227
|
if (!acc) {
|
|
1278
|
-
|
|
1228
|
+
W_ERROR(WErrors.AccountNotFound, `guardlist.account ${request.account}`);
|
|
1279
1229
|
}
|
|
1280
1230
|
const manager = getMessengerManager();
|
|
1281
1231
|
switch (request.op) {
|
|
@@ -1287,21 +1237,21 @@ async function guardlist(request) {
|
|
|
1287
1237
|
}
|
|
1288
1238
|
const guards = Array.from(uniqueGuardsMap.values());
|
|
1289
1239
|
if (guards.length === 0) {
|
|
1290
|
-
|
|
1240
|
+
W_ERROR(WErrors.InvalidParam, `guardlist.add.guards ${request.guards} have not valid guards`);
|
|
1291
1241
|
}
|
|
1292
1242
|
// 去重
|
|
1293
1243
|
if (guards.length > MAX_GUARDS_SIZE_ONCE) {
|
|
1294
|
-
|
|
1244
|
+
W_ERROR(WErrors.InvalidParam, `guardlist.add.guards ${request.guards} have too many guards, max ${MAX_GUARDS_SIZE_ONCE}`);
|
|
1295
1245
|
}
|
|
1296
1246
|
// Validate TTL range
|
|
1297
1247
|
for (const g of guards) {
|
|
1298
|
-
if (!
|
|
1248
|
+
if (!isValidU64(g.passportValiditySeconds) ||
|
|
1299
1249
|
g.passportValiditySeconds < MIN_PASSPORT_VALIDITY ||
|
|
1300
1250
|
g.passportValiditySeconds > MAX_PASSPORT_VALIDITY) {
|
|
1301
|
-
|
|
1251
|
+
W_ERROR(WErrors.InvalidParam, `Guard ${g.guard}: passport validity ${g.passportValiditySeconds} must be between ${MIN_PASSPORT_VALIDITY} and ${MAX_PASSPORT_VALIDITY} seconds`);
|
|
1302
1252
|
}
|
|
1303
1253
|
}
|
|
1304
|
-
const addresses = await
|
|
1254
|
+
const addresses = await LocalMark.Instance().get_many_address(guards.map((g) => g.guard));
|
|
1305
1255
|
// Validate all addresses were found
|
|
1306
1256
|
if (addresses.length !== guards.length) {
|
|
1307
1257
|
const foundAddresses = new Set(addresses);
|
|
@@ -1312,20 +1262,20 @@ async function guardlist(request) {
|
|
|
1312
1262
|
missingGuards.push(g.guard);
|
|
1313
1263
|
}
|
|
1314
1264
|
}
|
|
1315
|
-
|
|
1265
|
+
W_ERROR(WErrors.InvalidParam, `Guard not found: ${missingGuards.join(", ")}`);
|
|
1316
1266
|
}
|
|
1317
1267
|
// 通过查询检查是不是guard地址
|
|
1318
|
-
const objs = await
|
|
1268
|
+
const objs = await query_objects({
|
|
1319
1269
|
objects: addresses,
|
|
1320
1270
|
no_cache: false,
|
|
1321
1271
|
network: manager.getConfig().network,
|
|
1322
1272
|
});
|
|
1323
1273
|
if (!objs || !objs.objects || objs.objects.length === 0) {
|
|
1324
|
-
|
|
1274
|
+
W_ERROR(WErrors.InvalidParam, `Guard not found: ${guards.map((g) => g.guard).join(", ")}`);
|
|
1325
1275
|
}
|
|
1326
1276
|
objs.objects.forEach((obj) => {
|
|
1327
1277
|
if (obj.type !== "Guard") {
|
|
1328
|
-
|
|
1278
|
+
W_ERROR(WErrors.InvalidParam, `Guard ${obj.object} is not a Guard`);
|
|
1329
1279
|
}
|
|
1330
1280
|
});
|
|
1331
1281
|
const guardListItems = guards.map((g, index) => ({
|
|
@@ -1340,13 +1290,13 @@ async function guardlist(request) {
|
|
|
1340
1290
|
...new Set(request.guards.map((g) => g.toLowerCase())),
|
|
1341
1291
|
];
|
|
1342
1292
|
if (guards.length === 0) {
|
|
1343
|
-
|
|
1293
|
+
W_ERROR(WErrors.InvalidParam, `guardlist.remove.guards ${request.guards} have not valid guards`);
|
|
1344
1294
|
}
|
|
1345
1295
|
// 去重
|
|
1346
1296
|
if (guards.length > MAX_GUARDS_SIZE_ONCE) {
|
|
1347
|
-
|
|
1297
|
+
W_ERROR(WErrors.InvalidParam, `guardlist.remove.guards ${request.guards} have too many guards, max ${MAX_GUARDS_SIZE_ONCE}`);
|
|
1348
1298
|
}
|
|
1349
|
-
const addresses = await
|
|
1299
|
+
const addresses = await LocalMark.Instance().get_many_address(guards);
|
|
1350
1300
|
if (addresses.length !== guards.length) {
|
|
1351
1301
|
const foundAddresses = new Set(addresses);
|
|
1352
1302
|
const missingGuards = [];
|
|
@@ -1355,7 +1305,7 @@ async function guardlist(request) {
|
|
|
1355
1305
|
missingGuards.push(g);
|
|
1356
1306
|
}
|
|
1357
1307
|
}
|
|
1358
|
-
|
|
1308
|
+
W_ERROR(WErrors.InvalidParam, `Guard not found: ${missingGuards.join(", ")}`);
|
|
1359
1309
|
}
|
|
1360
1310
|
const result = await manager.removeFromGuardList(acc, addresses);
|
|
1361
1311
|
return { op: "remove", result };
|
|
@@ -1365,7 +1315,7 @@ async function guardlist(request) {
|
|
|
1365
1315
|
return { op: "get", result };
|
|
1366
1316
|
}
|
|
1367
1317
|
default:
|
|
1368
|
-
throw new
|
|
1318
|
+
throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `guardlist.unknown op: ${request}`);
|
|
1369
1319
|
}
|
|
1370
1320
|
}
|
|
1371
1321
|
//# sourceMappingURL=messenger-api.js.map
|