wowok 2.1.39 → 2.1.41
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.d.ts +0 -8
- package/dist/cjs/bcs/bcs.js +1 -278
- package/dist/cjs/bcs/effects.js +1 -203
- package/dist/cjs/bcs/index.js +1 -55
- package/dist/cjs/bcs/pure.js +1 -39
- package/dist/cjs/bcs/type-tag-serializer.js +1 -107
- package/dist/cjs/bcs/types.d.ts +0 -49
- package/dist/cjs/bcs/types.js +1 -6
- package/dist/cjs/client/index.js +1 -7
- package/dist/cjs/client/network.js +1 -24
- package/dist/cjs/cryptography/index.js +1 -9
- package/dist/cjs/cryptography/intent.d.ts +0 -3
- package/dist/cjs/cryptography/intent.js +1 -20
- package/dist/cjs/cryptography/keypair.d.ts +4 -38
- package/dist/cjs/cryptography/keypair.js +1 -104
- package/dist/cjs/cryptography/mnemonics.d.ts +0 -23
- package/dist/cjs/cryptography/mnemonics.js +1 -46
- package/dist/cjs/cryptography/publickey.d.ts +0 -42
- package/dist/cjs/cryptography/publickey.js +1 -114
- package/dist/cjs/cryptography/signature-scheme.js +1 -25
- package/dist/cjs/cryptography/signature.d.ts +0 -11
- package/dist/cjs/cryptography/signature.js +1 -50
- package/dist/cjs/experimental/cache.js +1 -61
- package/dist/cjs/experimental/client.js +1 -23
- package/dist/cjs/experimental/core.d.ts +0 -2
- package/dist/cjs/experimental/core.js +1 -85
- package/dist/cjs/experimental/errors.js +1 -27
- package/dist/cjs/experimental/index.js +1 -8
- package/dist/cjs/experimental/persistent-storage.d.ts +0 -98
- package/dist/cjs/experimental/persistent-storage.js +1 -337
- package/dist/cjs/experimental/persistent-storage.test.d.ts +0 -4
- package/dist/cjs/experimental/persistent-storage.test.js +1 -198
- package/dist/cjs/experimental/transports/utils.js +1 -100
- package/dist/cjs/experimental/types.d.ts +0 -6
- package/dist/cjs/experimental/types.js +1 -5
- package/dist/cjs/faucet/faucet.d.ts +0 -9
- package/dist/cjs/faucet/faucet.js +1 -111
- package/dist/cjs/faucet/index.js +1 -4
- package/dist/cjs/grpc/client.js +1 -45
- package/dist/cjs/grpc/core.js +1 -603
- package/dist/cjs/grpc/index.js +1 -5
- package/dist/cjs/grpc/proto/google/protobuf/any.d.ts +0 -151
- package/dist/cjs/grpc/proto/google/protobuf/any.js +1 -168
- package/dist/cjs/grpc/proto/google/protobuf/duration.d.ts +0 -89
- package/dist/cjs/grpc/proto/google/protobuf/duration.js +1 -106
- package/dist/cjs/grpc/proto/google/protobuf/empty.d.ts +0 -17
- package/dist/cjs/grpc/proto/google/protobuf/empty.js +1 -49
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.d.ts +0 -217
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +1 -95
- package/dist/cjs/grpc/proto/google/protobuf/struct.d.ts +0 -112
- package/dist/cjs/grpc/proto/google/protobuf/struct.js +1 -272
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.d.ts +0 -127
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +1 -150
- package/dist/cjs/grpc/proto/google/rpc/error_details.d.ts +0 -407
- package/dist/cjs/grpc/proto/google/rpc/error_details.js +1 -343
- package/dist/cjs/grpc/proto/google/rpc/status.d.ts +0 -34
- package/dist/cjs/grpc/proto/google/rpc/status.js +1 -49
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.d.ts +0 -48
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +1 -83
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.d.ts +0 -23
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +1 -44
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.d.ts +0 -20
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +1 -37
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.d.ts +0 -48
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +1 -69
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +0 -51
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -79
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +0 -149
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -184
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.d.ts +0 -257
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +1 -370
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.d.ts +0 -41
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +1 -79
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.d.ts +0 -12
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +1 -29
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.d.ts +0 -63
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +1 -81
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +0 -56
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -79
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.d.ts +0 -623
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +1 -886
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +0 -29
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -55
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.d.ts +0 -75
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +1 -102
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -50
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +1 -76
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +0 -52
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -68
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.d.ts +0 -260
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +1 -407
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.d.ts +0 -429
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +1 -608
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +0 -30
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -45
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.d.ts +0 -151
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +1 -256
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +1 -31
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -97
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +1 -143
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.d.ts +0 -95
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +1 -109
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.d.ts +0 -23
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +1 -45
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.d.ts +0 -42
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +1 -75
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.d.ts +0 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +1 -45
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.d.ts +0 -447
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +1 -584
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +0 -31
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -52
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +0 -16
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -26
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -54
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -84
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.d.ts +0 -36
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +1 -52
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.d.ts +0 -518
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +1 -659
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +0 -36
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -36
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.d.ts +0 -36
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +1 -59
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.d.ts +0 -538
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +1 -756
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.d.ts +0 -945
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1 -1245
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +0 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -31
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +0 -118
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -193
- package/dist/cjs/index.js +1 -33
- package/dist/cjs/jsonRpc/client.d.ts +0 -140
- package/dist/cjs/jsonRpc/client.js +1 -653
- package/dist/cjs/jsonRpc/core.js +1 -590
- package/dist/cjs/jsonRpc/errors.js +1 -41
- package/dist/cjs/jsonRpc/http-transport.d.ts +0 -3
- package/dist/cjs/jsonRpc/http-transport.js +1 -73
- package/dist/cjs/jsonRpc/index.js +1 -6
- package/dist/cjs/jsonRpc/json-rpc-resolver.js +1 -314
- package/dist/cjs/jsonRpc/rpc-websocket-client.d.ts +0 -15
- package/dist/cjs/jsonRpc/rpc-websocket-client.js +1 -159
- package/dist/cjs/jsonRpc/types/chain.js +1 -4
- package/dist/cjs/jsonRpc/types/changes.js +1 -4
- package/dist/cjs/jsonRpc/types/coins.js +1 -4
- package/dist/cjs/jsonRpc/types/common.js +1 -4
- package/dist/cjs/jsonRpc/types/generated.d.ts +56 -542
- package/dist/cjs/jsonRpc/types/generated.js +1 -4
- package/dist/cjs/jsonRpc/types/index.js +1 -4
- package/dist/cjs/jsonRpc/types/params.d.ts +0 -336
- package/dist/cjs/jsonRpc/types/params.js +1 -4
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -63
- package/dist/cjs/keypairs/ed25519/index.js +1 -5
- package/dist/cjs/keypairs/ed25519/keypair.d.ts +0 -52
- package/dist/cjs/keypairs/ed25519/keypair.js +1 -140
- package/dist/cjs/keypairs/ed25519/publickey.d.ts +0 -19
- package/dist/cjs/keypairs/ed25519/publickey.js +1 -72
- package/dist/cjs/keypairs/index.js +1 -7
- package/dist/cjs/keypairs/passkey/index.js +1 -5
- package/dist/cjs/keypairs/passkey/keypair.d.ts +0 -80
- package/dist/cjs/keypairs/passkey/keypair.js +1 -251
- package/dist/cjs/keypairs/passkey/publickey.d.ts +0 -47
- package/dist/cjs/keypairs/passkey/publickey.js +1 -170
- package/dist/cjs/keypairs/passkey/types.d.ts +0 -6
- package/dist/cjs/keypairs/passkey/types.js +1 -4
- package/dist/cjs/keypairs/secp256k1/index.js +1 -5
- package/dist/cjs/keypairs/secp256k1/keypair.d.ts +0 -51
- package/dist/cjs/keypairs/secp256k1/keypair.js +1 -133
- package/dist/cjs/keypairs/secp256k1/publickey.d.ts +0 -19
- package/dist/cjs/keypairs/secp256k1/publickey.js +1 -73
- package/dist/cjs/keypairs/secp256r1/index.js +1 -5
- package/dist/cjs/keypairs/secp256r1/keypair.d.ts +0 -51
- package/dist/cjs/keypairs/secp256r1/keypair.js +1 -130
- package/dist/cjs/keypairs/secp256r1/publickey.d.ts +0 -19
- package/dist/cjs/keypairs/secp256r1/publickey.js +1 -74
- package/dist/cjs/multisig/index.js +1 -5
- package/dist/cjs/multisig/publickey.d.ts +1 -36
- package/dist/cjs/multisig/publickey.js +1 -243
- package/dist/cjs/multisig/signer.d.ts +0 -1
- package/dist/cjs/multisig/signer.js +1 -62
- package/dist/cjs/transactions/Arguments.js +1 -12
- package/dist/cjs/transactions/Commands.d.ts +0 -3
- package/dist/cjs/transactions/Commands.js +1 -110
- package/dist/cjs/transactions/Inputs.js +1 -55
- package/dist/cjs/transactions/ObjectCache.js +1 -208
- package/dist/cjs/transactions/Transaction.d.ts +0 -56
- package/dist/cjs/transactions/Transaction.js +1 -646
- package/dist/cjs/transactions/TransactionData.d.ts +0 -6
- package/dist/cjs/transactions/TransactionData.js +1 -424
- package/dist/cjs/transactions/__tests__/Transaction.test.js +1 -167
- package/dist/cjs/transactions/__tests__/bcs.test.js +1 -200
- package/dist/cjs/transactions/data/internal.js +1 -185
- package/dist/cjs/transactions/data/v1.js +1 -474
- package/dist/cjs/transactions/data/v2.js +1 -108
- package/dist/cjs/transactions/executor/caching.d.ts +0 -4
- package/dist/cjs/transactions/executor/caching.js +1 -72
- package/dist/cjs/transactions/executor/parallel.d.ts +0 -11
- package/dist/cjs/transactions/executor/parallel.js +1 -352
- package/dist/cjs/transactions/executor/queue.js +1 -62
- package/dist/cjs/transactions/executor/serial.d.ts +0 -1
- package/dist/cjs/transactions/executor/serial.js +1 -102
- package/dist/cjs/transactions/hash.d.ts +0 -6
- package/dist/cjs/transactions/hash.js +1 -17
- package/dist/cjs/transactions/index.d.ts +0 -1
- package/dist/cjs/transactions/index.js +1 -15
- package/dist/cjs/transactions/intents/CoinWithBalance.js +1 -148
- package/dist/cjs/transactions/object.js +1 -90
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.d.ts +0 -18
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +1 -20
- package/dist/cjs/transactions/pure.js +1 -39
- package/dist/cjs/transactions/resolve.js +1 -72
- package/dist/cjs/transactions/serializer.js +1 -170
- package/dist/cjs/transactions/utils.js +1 -124
- package/dist/cjs/utils/constants.js +1 -27
- package/dist/cjs/utils/derived-objects.d.ts +0 -3
- package/dist/cjs/utils/derived-objects.js +1 -14
- package/dist/cjs/utils/dynamic-fields.js +1 -20
- package/dist/cjs/utils/format.js +1 -15
- package/dist/cjs/utils/index.js +1 -15
- package/dist/cjs/utils/move-registry.d.ts +0 -4
- package/dist/cjs/utils/move-registry.js +1 -41
- package/dist/cjs/utils/sui-types.d.ts +0 -12
- package/dist/cjs/utils/sui-types.js +1 -86
- package/dist/cjs/utils/suins.js +1 -36
- package/dist/cjs/verify/index.js +1 -5
- package/dist/cjs/verify/verify.js +1 -91
- package/dist/cjs/version.js +1 -6
- package/dist/cjs/w/call/allocation.js +1 -369
- package/dist/cjs/w/call/arb.js +1 -109
- package/dist/cjs/w/call/arbitration.js +1 -1223
- package/dist/cjs/w/call/base.js +1 -324
- package/dist/cjs/w/call/contact.js +1 -350
- package/dist/cjs/w/call/demand.js +1 -702
- package/dist/cjs/w/call/entity.js +1 -180
- package/dist/cjs/w/call/guard-ins.d.ts +0 -3
- package/dist/cjs/w/call/guard-ins.js +1 -4387
- package/dist/cjs/w/call/guard.d.ts +111 -27
- package/dist/cjs/w/call/guard.js +1 -1154
- package/dist/cjs/w/call/index.js +1 -27
- package/dist/cjs/w/call/machine.js +1 -1146
- package/dist/cjs/w/call/order.js +1 -348
- package/dist/cjs/w/call/passport.js +1 -234
- package/dist/cjs/w/call/payment.js +1 -192
- package/dist/cjs/w/call/permission.d.ts +0 -20
- package/dist/cjs/w/call/permission.js +1 -1227
- package/dist/cjs/w/call/personal.js +1 -142
- package/dist/cjs/w/call/progress.js +1 -691
- package/dist/cjs/w/call/proof.js +1 -69
- package/dist/cjs/w/call/repository.js +1 -1097
- package/dist/cjs/w/call/resource.js +1 -119
- package/dist/cjs/w/call/reward.js +1 -688
- package/dist/cjs/w/call/service.js +1 -1991
- package/dist/cjs/w/call/treasury.js +1 -877
- package/dist/cjs/w/call/util.d.ts +1 -0
- package/dist/cjs/w/call/util.js +1 -624
- package/dist/cjs/w/common.d.ts +48 -68
- package/dist/cjs/w/common.js +1 -604
- package/dist/cjs/w/exception.d.ts +1 -0
- package/dist/cjs/w/exception.js +1 -582
- package/dist/cjs/w/index.js +1 -12
- package/dist/cjs/w/local/account.d.ts +0 -45
- package/dist/cjs/w/local/account.js +1 -746
- package/dist/cjs/w/local/cache.js +1 -191
- package/dist/cjs/w/local/config.d.ts +0 -3
- package/dist/cjs/w/local/config.js +1 -50
- package/dist/cjs/w/local/index.js +1 -233
- package/dist/cjs/w/local/local.js +1 -664
- package/dist/cjs/w/local/storage.d.ts +0 -20
- package/dist/cjs/w/local/storage.js +1 -222
- package/dist/cjs/w/local/token.d.ts +1 -4
- package/dist/cjs/w/local/token.js +1 -161
- package/dist/cjs/w/local/util.d.ts +0 -4
- package/dist/cjs/w/local/util.js +1 -50
- package/dist/cjs/w/local/wip.d.ts +0 -92
- package/dist/cjs/w/local/wip.js +1 -1202
- package/dist/cjs/w/messenger/crypto.d.ts +0 -186
- package/dist/cjs/w/messenger/crypto.js +1 -574
- package/dist/cjs/w/messenger/index.d.ts +0 -18
- package/dist/cjs/w/messenger/index.js +1 -28
- package/dist/cjs/w/messenger/messenger-api.d.ts +0 -177
- package/dist/cjs/w/messenger/messenger-api.js +1 -1503
- package/dist/cjs/w/messenger/messenger-manager.d.ts +0 -24
- package/dist/cjs/w/messenger/messenger-manager.js +1 -1065
- package/dist/cjs/w/messenger/messenger.d.ts +0 -206
- package/dist/cjs/w/messenger/messenger.js +1 -1439
- package/dist/cjs/w/messenger/server.d.ts +0 -94
- package/dist/cjs/w/messenger/server.js +1 -460
- package/dist/cjs/w/messenger/session.d.ts +0 -76
- package/dist/cjs/w/messenger/session.js +1 -768
- package/dist/cjs/w/messenger/storage.d.ts +0 -143
- package/dist/cjs/w/messenger/storage.js +1 -1256
- package/dist/cjs/w/messenger/templates/wts-html-template.d.ts +0 -31
- package/dist/cjs/w/messenger/templates/wts-html-template.js +1 -414
- package/dist/cjs/w/messenger/types.d.ts +7 -218
- package/dist/cjs/w/messenger/types.js +1 -98
- package/dist/cjs/w/messenger/utils.d.ts +0 -14
- package/dist/cjs/w/messenger/utils.js +1 -29
- package/dist/cjs/w/query/bult-in.d.ts +0 -11
- package/dist/cjs/w/query/bult-in.js +1 -107
- package/dist/cjs/w/query/event.d.ts +0 -7
- package/dist/cjs/w/query/event.js +1 -140
- package/dist/cjs/w/query/index.js +1 -8
- package/dist/cjs/w/query/object.d.ts +7 -51
- package/dist/cjs/w/query/object.js +1 -1636
- package/dist/cjs/w/query/received.d.ts +0 -6
- package/dist/cjs/w/query/received.js +1 -67
- package/dist/cjs/w/query/util.d.ts +1 -2
- package/dist/cjs/w/query/util.js +1 -54
- package/dist/cjs/w/util.d.ts +2 -5
- package/dist/cjs/w/util.js +1 -616
- package/dist/esm/bcs/bcs.d.ts +0 -8
- package/dist/esm/bcs/bcs.js +1 -278
- package/dist/esm/bcs/effects.js +1 -203
- package/dist/esm/bcs/index.js +1 -55
- package/dist/esm/bcs/pure.js +1 -39
- package/dist/esm/bcs/type-tag-serializer.js +1 -107
- package/dist/esm/bcs/types.d.ts +0 -49
- package/dist/esm/bcs/types.js +1 -6
- package/dist/esm/client/index.js +1 -7
- package/dist/esm/client/network.js +1 -24
- package/dist/esm/cryptography/index.js +1 -9
- package/dist/esm/cryptography/intent.d.ts +0 -3
- package/dist/esm/cryptography/intent.js +1 -20
- package/dist/esm/cryptography/keypair.d.ts +4 -38
- package/dist/esm/cryptography/keypair.js +1 -104
- package/dist/esm/cryptography/mnemonics.d.ts +0 -23
- package/dist/esm/cryptography/mnemonics.js +1 -46
- package/dist/esm/cryptography/publickey.d.ts +0 -42
- package/dist/esm/cryptography/publickey.js +1 -114
- package/dist/esm/cryptography/signature-scheme.js +1 -25
- package/dist/esm/cryptography/signature.d.ts +0 -11
- package/dist/esm/cryptography/signature.js +1 -50
- package/dist/esm/experimental/cache.js +1 -61
- package/dist/esm/experimental/client.js +1 -23
- package/dist/esm/experimental/core.d.ts +0 -2
- package/dist/esm/experimental/core.js +1 -85
- package/dist/esm/experimental/errors.js +1 -27
- package/dist/esm/experimental/index.js +1 -8
- package/dist/esm/experimental/persistent-storage.d.ts +0 -98
- package/dist/esm/experimental/persistent-storage.js +1 -337
- package/dist/esm/experimental/persistent-storage.test.d.ts +0 -4
- package/dist/esm/experimental/persistent-storage.test.js +1 -198
- package/dist/esm/experimental/transports/utils.js +1 -100
- package/dist/esm/experimental/types.d.ts +0 -6
- package/dist/esm/experimental/types.js +1 -5
- package/dist/esm/faucet/faucet.d.ts +0 -9
- package/dist/esm/faucet/faucet.js +1 -111
- package/dist/esm/faucet/index.js +1 -4
- package/dist/esm/grpc/client.js +1 -45
- package/dist/esm/grpc/core.js +1 -603
- package/dist/esm/grpc/index.js +1 -5
- package/dist/esm/grpc/proto/google/protobuf/any.d.ts +0 -151
- package/dist/esm/grpc/proto/google/protobuf/any.js +1 -168
- package/dist/esm/grpc/proto/google/protobuf/duration.d.ts +0 -89
- package/dist/esm/grpc/proto/google/protobuf/duration.js +1 -106
- package/dist/esm/grpc/proto/google/protobuf/empty.d.ts +0 -17
- package/dist/esm/grpc/proto/google/protobuf/empty.js +1 -49
- package/dist/esm/grpc/proto/google/protobuf/field_mask.d.ts +0 -217
- package/dist/esm/grpc/proto/google/protobuf/field_mask.js +1 -95
- package/dist/esm/grpc/proto/google/protobuf/struct.d.ts +0 -112
- package/dist/esm/grpc/proto/google/protobuf/struct.js +1 -272
- package/dist/esm/grpc/proto/google/protobuf/timestamp.d.ts +0 -127
- package/dist/esm/grpc/proto/google/protobuf/timestamp.js +1 -150
- package/dist/esm/grpc/proto/google/rpc/error_details.d.ts +0 -407
- package/dist/esm/grpc/proto/google/rpc/error_details.js +1 -343
- package/dist/esm/grpc/proto/google/rpc/status.d.ts +0 -34
- package/dist/esm/grpc/proto/google/rpc/status.js +1 -49
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.d.ts +0 -48
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +1 -83
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.d.ts +0 -23
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +1 -44
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.d.ts +0 -20
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +1 -37
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.d.ts +0 -48
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +1 -69
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +0 -51
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -79
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +0 -149
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -184
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.d.ts +0 -257
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +1 -370
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.d.ts +0 -41
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +1 -79
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.d.ts +0 -12
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +1 -29
- package/dist/esm/grpc/proto/sui/rpc/v2/event.d.ts +0 -63
- package/dist/esm/grpc/proto/sui/rpc/v2/event.js +1 -81
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +0 -56
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -79
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.d.ts +0 -623
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +1 -886
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +0 -29
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -55
- package/dist/esm/grpc/proto/sui/rpc/v2/input.d.ts +0 -75
- package/dist/esm/grpc/proto/sui/rpc/v2/input.js +1 -102
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -50
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +1 -76
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +0 -52
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -68
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.d.ts +0 -260
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +1 -407
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.d.ts +0 -429
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +1 -608
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +0 -30
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -45
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.d.ts +0 -151
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +1 -256
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -18
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +1 -31
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -97
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +1 -143
- package/dist/esm/grpc/proto/sui/rpc/v2/object.d.ts +0 -95
- package/dist/esm/grpc/proto/sui/rpc/v2/object.js +1 -109
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.d.ts +0 -23
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +1 -45
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.d.ts +0 -42
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +1 -75
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.d.ts +0 -15
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +1 -45
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.d.ts +0 -447
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +1 -584
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +0 -31
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -52
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +0 -16
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -26
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -54
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -84
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.d.ts +0 -36
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +1 -52
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.d.ts +0 -518
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +1 -659
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +0 -36
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -36
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.d.ts +0 -36
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +1 -59
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.d.ts +0 -538
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +1 -756
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.d.ts +0 -945
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1 -1245
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +0 -18
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -31
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +0 -118
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -193
- package/dist/esm/index.js +1 -33
- package/dist/esm/jsonRpc/client.d.ts +0 -140
- package/dist/esm/jsonRpc/client.js +1 -653
- package/dist/esm/jsonRpc/core.js +1 -590
- package/dist/esm/jsonRpc/errors.js +1 -41
- package/dist/esm/jsonRpc/http-transport.d.ts +0 -3
- package/dist/esm/jsonRpc/http-transport.js +1 -73
- package/dist/esm/jsonRpc/index.js +1 -6
- package/dist/esm/jsonRpc/json-rpc-resolver.js +1 -314
- package/dist/esm/jsonRpc/rpc-websocket-client.d.ts +0 -15
- package/dist/esm/jsonRpc/rpc-websocket-client.js +1 -159
- package/dist/esm/jsonRpc/types/chain.js +1 -4
- package/dist/esm/jsonRpc/types/changes.js +1 -4
- package/dist/esm/jsonRpc/types/coins.js +1 -4
- package/dist/esm/jsonRpc/types/common.js +1 -4
- package/dist/esm/jsonRpc/types/generated.d.ts +56 -542
- package/dist/esm/jsonRpc/types/generated.js +1 -4
- package/dist/esm/jsonRpc/types/index.js +1 -4
- package/dist/esm/jsonRpc/types/params.d.ts +0 -336
- package/dist/esm/jsonRpc/types/params.js +1 -4
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +1 -63
- package/dist/esm/keypairs/ed25519/index.js +1 -5
- package/dist/esm/keypairs/ed25519/keypair.d.ts +0 -52
- package/dist/esm/keypairs/ed25519/keypair.js +1 -140
- package/dist/esm/keypairs/ed25519/publickey.d.ts +0 -19
- package/dist/esm/keypairs/ed25519/publickey.js +1 -72
- package/dist/esm/keypairs/index.js +1 -7
- package/dist/esm/keypairs/passkey/index.js +1 -5
- package/dist/esm/keypairs/passkey/keypair.d.ts +0 -80
- package/dist/esm/keypairs/passkey/keypair.js +1 -251
- package/dist/esm/keypairs/passkey/publickey.d.ts +0 -47
- package/dist/esm/keypairs/passkey/publickey.js +1 -170
- package/dist/esm/keypairs/passkey/types.d.ts +0 -6
- package/dist/esm/keypairs/passkey/types.js +1 -4
- package/dist/esm/keypairs/secp256k1/index.js +1 -5
- package/dist/esm/keypairs/secp256k1/keypair.d.ts +0 -51
- package/dist/esm/keypairs/secp256k1/keypair.js +1 -133
- package/dist/esm/keypairs/secp256k1/publickey.d.ts +0 -19
- package/dist/esm/keypairs/secp256k1/publickey.js +1 -73
- package/dist/esm/keypairs/secp256r1/index.js +1 -5
- package/dist/esm/keypairs/secp256r1/keypair.d.ts +0 -51
- package/dist/esm/keypairs/secp256r1/keypair.js +1 -130
- package/dist/esm/keypairs/secp256r1/publickey.d.ts +0 -19
- package/dist/esm/keypairs/secp256r1/publickey.js +1 -74
- package/dist/esm/multisig/index.js +1 -5
- package/dist/esm/multisig/publickey.d.ts +1 -36
- package/dist/esm/multisig/publickey.js +1 -243
- package/dist/esm/multisig/signer.d.ts +0 -1
- package/dist/esm/multisig/signer.js +1 -62
- package/dist/esm/transactions/Arguments.js +1 -12
- package/dist/esm/transactions/Commands.d.ts +0 -3
- package/dist/esm/transactions/Commands.js +1 -110
- package/dist/esm/transactions/Inputs.js +1 -55
- package/dist/esm/transactions/ObjectCache.js +1 -208
- package/dist/esm/transactions/Transaction.d.ts +0 -56
- package/dist/esm/transactions/Transaction.js +1 -646
- package/dist/esm/transactions/TransactionData.d.ts +0 -6
- package/dist/esm/transactions/TransactionData.js +1 -424
- package/dist/esm/transactions/__tests__/Transaction.test.js +1 -167
- package/dist/esm/transactions/__tests__/bcs.test.js +1 -200
- package/dist/esm/transactions/data/internal.js +1 -185
- package/dist/esm/transactions/data/v1.js +1 -474
- package/dist/esm/transactions/data/v2.js +1 -108
- package/dist/esm/transactions/executor/caching.d.ts +0 -4
- package/dist/esm/transactions/executor/caching.js +1 -72
- package/dist/esm/transactions/executor/parallel.d.ts +0 -11
- package/dist/esm/transactions/executor/parallel.js +1 -352
- package/dist/esm/transactions/executor/queue.js +1 -62
- package/dist/esm/transactions/executor/serial.d.ts +0 -1
- package/dist/esm/transactions/executor/serial.js +1 -102
- package/dist/esm/transactions/hash.d.ts +0 -6
- package/dist/esm/transactions/hash.js +1 -17
- package/dist/esm/transactions/index.d.ts +0 -1
- package/dist/esm/transactions/index.js +1 -15
- package/dist/esm/transactions/intents/CoinWithBalance.js +1 -148
- package/dist/esm/transactions/object.js +1 -90
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.d.ts +0 -18
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +1 -20
- package/dist/esm/transactions/pure.js +1 -39
- package/dist/esm/transactions/resolve.js +1 -72
- package/dist/esm/transactions/serializer.js +1 -170
- package/dist/esm/transactions/utils.js +1 -124
- package/dist/esm/utils/constants.js +1 -27
- package/dist/esm/utils/derived-objects.d.ts +0 -3
- package/dist/esm/utils/derived-objects.js +1 -14
- package/dist/esm/utils/dynamic-fields.js +1 -20
- package/dist/esm/utils/format.js +1 -15
- package/dist/esm/utils/index.js +1 -15
- package/dist/esm/utils/move-registry.d.ts +0 -4
- package/dist/esm/utils/move-registry.js +1 -41
- package/dist/esm/utils/sui-types.d.ts +0 -12
- package/dist/esm/utils/sui-types.js +1 -86
- package/dist/esm/utils/suins.js +1 -36
- package/dist/esm/verify/index.js +1 -5
- package/dist/esm/verify/verify.js +1 -91
- package/dist/esm/version.js +1 -6
- package/dist/esm/w/call/allocation.js +1 -369
- package/dist/esm/w/call/arb.js +1 -109
- package/dist/esm/w/call/arbitration.js +1 -1223
- package/dist/esm/w/call/base.js +1 -324
- package/dist/esm/w/call/contact.js +1 -350
- package/dist/esm/w/call/demand.js +1 -702
- package/dist/esm/w/call/entity.js +1 -180
- package/dist/esm/w/call/guard-ins.d.ts +0 -3
- package/dist/esm/w/call/guard-ins.js +1 -4387
- package/dist/esm/w/call/guard.d.ts +111 -27
- package/dist/esm/w/call/guard.js +1 -1154
- package/dist/esm/w/call/index.js +1 -27
- package/dist/esm/w/call/machine.js +1 -1146
- package/dist/esm/w/call/order.js +1 -348
- package/dist/esm/w/call/passport.js +1 -234
- package/dist/esm/w/call/payment.js +1 -192
- package/dist/esm/w/call/permission.d.ts +0 -20
- package/dist/esm/w/call/permission.js +1 -1227
- package/dist/esm/w/call/personal.js +1 -142
- package/dist/esm/w/call/progress.js +1 -691
- package/dist/esm/w/call/proof.js +1 -69
- package/dist/esm/w/call/repository.js +1 -1097
- package/dist/esm/w/call/resource.js +1 -119
- package/dist/esm/w/call/reward.js +1 -688
- package/dist/esm/w/call/service.js +1 -1991
- package/dist/esm/w/call/treasury.js +1 -877
- package/dist/esm/w/call/util.d.ts +1 -0
- package/dist/esm/w/call/util.js +1 -624
- package/dist/esm/w/common.d.ts +48 -68
- package/dist/esm/w/common.js +1 -604
- package/dist/esm/w/exception.d.ts +1 -0
- package/dist/esm/w/exception.js +1 -582
- package/dist/esm/w/index.js +1 -12
- package/dist/esm/w/local/account.d.ts +0 -45
- package/dist/esm/w/local/account.js +1 -746
- package/dist/esm/w/local/cache.js +1 -191
- package/dist/esm/w/local/config.d.ts +0 -3
- package/dist/esm/w/local/config.js +1 -50
- package/dist/esm/w/local/index.js +1 -233
- package/dist/esm/w/local/local.js +1 -664
- package/dist/esm/w/local/storage.d.ts +0 -20
- package/dist/esm/w/local/storage.js +1 -222
- package/dist/esm/w/local/token.d.ts +1 -4
- package/dist/esm/w/local/token.js +1 -161
- package/dist/esm/w/local/util.d.ts +0 -4
- package/dist/esm/w/local/util.js +1 -50
- package/dist/esm/w/local/wip.d.ts +0 -92
- package/dist/esm/w/local/wip.js +1 -1202
- package/dist/esm/w/messenger/crypto.d.ts +0 -186
- package/dist/esm/w/messenger/crypto.js +1 -574
- package/dist/esm/w/messenger/index.d.ts +0 -18
- package/dist/esm/w/messenger/index.js +1 -28
- package/dist/esm/w/messenger/messenger-api.d.ts +0 -177
- package/dist/esm/w/messenger/messenger-api.js +1 -1503
- package/dist/esm/w/messenger/messenger-manager.d.ts +0 -24
- package/dist/esm/w/messenger/messenger-manager.js +1 -1065
- package/dist/esm/w/messenger/messenger.d.ts +0 -206
- package/dist/esm/w/messenger/messenger.js +1 -1439
- package/dist/esm/w/messenger/server.d.ts +0 -94
- package/dist/esm/w/messenger/server.js +1 -460
- package/dist/esm/w/messenger/session.d.ts +0 -76
- package/dist/esm/w/messenger/session.js +1 -768
- package/dist/esm/w/messenger/storage.d.ts +0 -143
- package/dist/esm/w/messenger/storage.js +1 -1256
- package/dist/esm/w/messenger/templates/wts-html-template.d.ts +0 -31
- package/dist/esm/w/messenger/templates/wts-html-template.js +1 -414
- package/dist/esm/w/messenger/types.d.ts +7 -218
- package/dist/esm/w/messenger/types.js +1 -98
- package/dist/esm/w/messenger/utils.d.ts +0 -14
- package/dist/esm/w/messenger/utils.js +1 -29
- package/dist/esm/w/query/bult-in.d.ts +0 -11
- package/dist/esm/w/query/bult-in.js +1 -107
- package/dist/esm/w/query/event.d.ts +0 -7
- package/dist/esm/w/query/event.js +1 -140
- package/dist/esm/w/query/index.js +1 -8
- package/dist/esm/w/query/object.d.ts +7 -51
- package/dist/esm/w/query/object.js +1 -1636
- package/dist/esm/w/query/received.d.ts +0 -6
- package/dist/esm/w/query/received.js +1 -67
- package/dist/esm/w/query/util.d.ts +1 -2
- package/dist/esm/w/query/util.js +1 -54
- package/dist/esm/w/util.d.ts +2 -5
- package/dist/esm/w/util.js +1 -616
- package/package.json +5 -2
- package/dist/cjs/bcs/bcs.js.map +0 -1
- package/dist/cjs/bcs/effects.js.map +0 -1
- package/dist/cjs/bcs/index.js.map +0 -1
- package/dist/cjs/bcs/pure.js.map +0 -1
- package/dist/cjs/bcs/type-tag-serializer.js.map +0 -1
- package/dist/cjs/bcs/types.js.map +0 -1
- package/dist/cjs/client/index.js.map +0 -1
- package/dist/cjs/client/network.js.map +0 -1
- package/dist/cjs/cryptography/index.js.map +0 -1
- package/dist/cjs/cryptography/intent.js.map +0 -1
- package/dist/cjs/cryptography/keypair.js.map +0 -1
- package/dist/cjs/cryptography/mnemonics.js.map +0 -1
- package/dist/cjs/cryptography/publickey.js.map +0 -1
- package/dist/cjs/cryptography/signature-scheme.js.map +0 -1
- package/dist/cjs/cryptography/signature.js.map +0 -1
- package/dist/cjs/experimental/cache.js.map +0 -1
- package/dist/cjs/experimental/client.js.map +0 -1
- package/dist/cjs/experimental/core.js.map +0 -1
- package/dist/cjs/experimental/errors.js.map +0 -1
- package/dist/cjs/experimental/index.js.map +0 -1
- package/dist/cjs/experimental/persistent-storage.js.map +0 -1
- package/dist/cjs/experimental/persistent-storage.test.js.map +0 -1
- package/dist/cjs/experimental/transports/utils.js.map +0 -1
- package/dist/cjs/experimental/types.js.map +0 -1
- package/dist/cjs/faucet/faucet.js.map +0 -1
- package/dist/cjs/faucet/index.js.map +0 -1
- package/dist/cjs/grpc/client.js.map +0 -1
- package/dist/cjs/grpc/core.js.map +0 -1
- package/dist/cjs/grpc/index.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/any.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +0 -1
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +0 -1
- package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +0 -1
- package/dist/cjs/grpc/proto/google/rpc/status.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +0 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/jsonRpc/client.js.map +0 -1
- package/dist/cjs/jsonRpc/core.js.map +0 -1
- package/dist/cjs/jsonRpc/errors.js.map +0 -1
- package/dist/cjs/jsonRpc/http-transport.js.map +0 -1
- package/dist/cjs/jsonRpc/index.js.map +0 -1
- package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +0 -1
- package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +0 -1
- package/dist/cjs/jsonRpc/types/chain.js.map +0 -1
- package/dist/cjs/jsonRpc/types/changes.js.map +0 -1
- package/dist/cjs/jsonRpc/types/coins.js.map +0 -1
- package/dist/cjs/jsonRpc/types/common.js.map +0 -1
- package/dist/cjs/jsonRpc/types/generated.js.map +0 -1
- package/dist/cjs/jsonRpc/types/index.js.map +0 -1
- package/dist/cjs/jsonRpc/types/params.js.map +0 -1
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +0 -1
- package/dist/cjs/keypairs/ed25519/index.js.map +0 -1
- package/dist/cjs/keypairs/ed25519/keypair.js.map +0 -1
- package/dist/cjs/keypairs/ed25519/publickey.js.map +0 -1
- package/dist/cjs/keypairs/index.js.map +0 -1
- package/dist/cjs/keypairs/passkey/index.js.map +0 -1
- package/dist/cjs/keypairs/passkey/keypair.js.map +0 -1
- package/dist/cjs/keypairs/passkey/publickey.js.map +0 -1
- package/dist/cjs/keypairs/passkey/types.js.map +0 -1
- package/dist/cjs/keypairs/secp256k1/index.js.map +0 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +0 -1
- package/dist/cjs/keypairs/secp256k1/publickey.js.map +0 -1
- package/dist/cjs/keypairs/secp256r1/index.js.map +0 -1
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +0 -1
- package/dist/cjs/keypairs/secp256r1/publickey.js.map +0 -1
- package/dist/cjs/multisig/index.js.map +0 -1
- package/dist/cjs/multisig/publickey.js.map +0 -1
- package/dist/cjs/multisig/signer.js.map +0 -1
- package/dist/cjs/transactions/Arguments.js.map +0 -1
- package/dist/cjs/transactions/Commands.js.map +0 -1
- package/dist/cjs/transactions/Inputs.js.map +0 -1
- package/dist/cjs/transactions/ObjectCache.js.map +0 -1
- package/dist/cjs/transactions/Transaction.js.map +0 -1
- package/dist/cjs/transactions/TransactionData.js.map +0 -1
- package/dist/cjs/transactions/__tests__/Transaction.test.js.map +0 -1
- package/dist/cjs/transactions/__tests__/bcs.test.js.map +0 -1
- package/dist/cjs/transactions/data/internal.js.map +0 -1
- package/dist/cjs/transactions/data/v1.js.map +0 -1
- package/dist/cjs/transactions/data/v2.js.map +0 -1
- package/dist/cjs/transactions/executor/caching.js.map +0 -1
- package/dist/cjs/transactions/executor/parallel.js.map +0 -1
- package/dist/cjs/transactions/executor/queue.js.map +0 -1
- package/dist/cjs/transactions/executor/serial.js.map +0 -1
- package/dist/cjs/transactions/hash.js.map +0 -1
- package/dist/cjs/transactions/index.js.map +0 -1
- package/dist/cjs/transactions/intents/CoinWithBalance.js.map +0 -1
- package/dist/cjs/transactions/object.js.map +0 -1
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +0 -1
- package/dist/cjs/transactions/pure.js.map +0 -1
- package/dist/cjs/transactions/resolve.js.map +0 -1
- package/dist/cjs/transactions/serializer.js.map +0 -1
- package/dist/cjs/transactions/utils.js.map +0 -1
- package/dist/cjs/utils/constants.js.map +0 -1
- package/dist/cjs/utils/derived-objects.js.map +0 -1
- package/dist/cjs/utils/dynamic-fields.js.map +0 -1
- package/dist/cjs/utils/format.js.map +0 -1
- package/dist/cjs/utils/index.js.map +0 -1
- package/dist/cjs/utils/move-registry.js.map +0 -1
- package/dist/cjs/utils/sui-types.js.map +0 -1
- package/dist/cjs/utils/suins.js.map +0 -1
- package/dist/cjs/verify/index.js.map +0 -1
- package/dist/cjs/verify/verify.js.map +0 -1
- package/dist/cjs/version.js.map +0 -1
- package/dist/cjs/w/call/allocation.js.map +0 -1
- package/dist/cjs/w/call/arb.js.map +0 -1
- package/dist/cjs/w/call/arbitration.js.map +0 -1
- package/dist/cjs/w/call/base.js.map +0 -1
- package/dist/cjs/w/call/contact.js.map +0 -1
- package/dist/cjs/w/call/demand.js.map +0 -1
- package/dist/cjs/w/call/entity.js.map +0 -1
- package/dist/cjs/w/call/guard-ins.js.map +0 -1
- package/dist/cjs/w/call/guard.js.map +0 -1
- package/dist/cjs/w/call/index.js.map +0 -1
- package/dist/cjs/w/call/machine.js.map +0 -1
- package/dist/cjs/w/call/order.js.map +0 -1
- package/dist/cjs/w/call/passport.js.map +0 -1
- package/dist/cjs/w/call/payment.js.map +0 -1
- package/dist/cjs/w/call/permission.js.map +0 -1
- package/dist/cjs/w/call/personal.js.map +0 -1
- package/dist/cjs/w/call/progress.js.map +0 -1
- package/dist/cjs/w/call/proof.js.map +0 -1
- package/dist/cjs/w/call/repository.js.map +0 -1
- package/dist/cjs/w/call/resource.js.map +0 -1
- package/dist/cjs/w/call/reward.js.map +0 -1
- package/dist/cjs/w/call/service.js.map +0 -1
- package/dist/cjs/w/call/treasury.js.map +0 -1
- package/dist/cjs/w/call/util.js.map +0 -1
- package/dist/cjs/w/common.js.map +0 -1
- package/dist/cjs/w/exception.js.map +0 -1
- package/dist/cjs/w/index.js.map +0 -1
- package/dist/cjs/w/local/account.js.map +0 -1
- package/dist/cjs/w/local/cache.js.map +0 -1
- package/dist/cjs/w/local/config.js.map +0 -1
- package/dist/cjs/w/local/index.js.map +0 -1
- package/dist/cjs/w/local/local.js.map +0 -1
- package/dist/cjs/w/local/storage.js.map +0 -1
- package/dist/cjs/w/local/token.js.map +0 -1
- package/dist/cjs/w/local/util.js.map +0 -1
- package/dist/cjs/w/local/wip.js.map +0 -1
- package/dist/cjs/w/messenger/crypto.js.map +0 -1
- package/dist/cjs/w/messenger/index.js.map +0 -1
- package/dist/cjs/w/messenger/messenger-api.js.map +0 -1
- package/dist/cjs/w/messenger/messenger-manager.js.map +0 -1
- package/dist/cjs/w/messenger/messenger.js.map +0 -1
- package/dist/cjs/w/messenger/server.js.map +0 -1
- package/dist/cjs/w/messenger/session.js.map +0 -1
- package/dist/cjs/w/messenger/storage.js.map +0 -1
- package/dist/cjs/w/messenger/templates/wts-html-template.js.map +0 -1
- package/dist/cjs/w/messenger/types.js.map +0 -1
- package/dist/cjs/w/messenger/utils.js.map +0 -1
- package/dist/cjs/w/query/bult-in.js.map +0 -1
- package/dist/cjs/w/query/event.js.map +0 -1
- package/dist/cjs/w/query/index.js.map +0 -1
- package/dist/cjs/w/query/object.js.map +0 -1
- package/dist/cjs/w/query/received.js.map +0 -1
- package/dist/cjs/w/query/util.js.map +0 -1
- package/dist/cjs/w/util.js.map +0 -1
- package/dist/esm/bcs/bcs.js.map +0 -1
- package/dist/esm/bcs/effects.js.map +0 -1
- package/dist/esm/bcs/index.js.map +0 -1
- package/dist/esm/bcs/pure.js.map +0 -1
- package/dist/esm/bcs/type-tag-serializer.js.map +0 -1
- package/dist/esm/bcs/types.js.map +0 -1
- package/dist/esm/client/index.js.map +0 -1
- package/dist/esm/client/network.js.map +0 -1
- package/dist/esm/cryptography/index.js.map +0 -1
- package/dist/esm/cryptography/intent.js.map +0 -1
- package/dist/esm/cryptography/keypair.js.map +0 -1
- package/dist/esm/cryptography/mnemonics.js.map +0 -1
- package/dist/esm/cryptography/publickey.js.map +0 -1
- package/dist/esm/cryptography/signature-scheme.js.map +0 -1
- package/dist/esm/cryptography/signature.js.map +0 -1
- package/dist/esm/experimental/cache.js.map +0 -1
- package/dist/esm/experimental/client.js.map +0 -1
- package/dist/esm/experimental/core.js.map +0 -1
- package/dist/esm/experimental/errors.js.map +0 -1
- package/dist/esm/experimental/index.js.map +0 -1
- package/dist/esm/experimental/persistent-storage.js.map +0 -1
- package/dist/esm/experimental/persistent-storage.test.js.map +0 -1
- package/dist/esm/experimental/transports/utils.js.map +0 -1
- package/dist/esm/experimental/types.js.map +0 -1
- package/dist/esm/faucet/faucet.js.map +0 -1
- package/dist/esm/faucet/index.js.map +0 -1
- package/dist/esm/grpc/client.js.map +0 -1
- package/dist/esm/grpc/core.js.map +0 -1
- package/dist/esm/grpc/index.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/any.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/duration.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/empty.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/struct.js.map +0 -1
- package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +0 -1
- package/dist/esm/grpc/proto/google/rpc/error_details.js.map +0 -1
- package/dist/esm/grpc/proto/google/rpc/status.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +0 -1
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/jsonRpc/client.js.map +0 -1
- package/dist/esm/jsonRpc/core.js.map +0 -1
- package/dist/esm/jsonRpc/errors.js.map +0 -1
- package/dist/esm/jsonRpc/http-transport.js.map +0 -1
- package/dist/esm/jsonRpc/index.js.map +0 -1
- package/dist/esm/jsonRpc/json-rpc-resolver.js.map +0 -1
- package/dist/esm/jsonRpc/rpc-websocket-client.js.map +0 -1
- package/dist/esm/jsonRpc/types/chain.js.map +0 -1
- package/dist/esm/jsonRpc/types/changes.js.map +0 -1
- package/dist/esm/jsonRpc/types/coins.js.map +0 -1
- package/dist/esm/jsonRpc/types/common.js.map +0 -1
- package/dist/esm/jsonRpc/types/generated.js.map +0 -1
- package/dist/esm/jsonRpc/types/index.js.map +0 -1
- package/dist/esm/jsonRpc/types/params.js.map +0 -1
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +0 -1
- package/dist/esm/keypairs/ed25519/index.js.map +0 -1
- package/dist/esm/keypairs/ed25519/keypair.js.map +0 -1
- package/dist/esm/keypairs/ed25519/publickey.js.map +0 -1
- package/dist/esm/keypairs/index.js.map +0 -1
- package/dist/esm/keypairs/passkey/index.js.map +0 -1
- package/dist/esm/keypairs/passkey/keypair.js.map +0 -1
- package/dist/esm/keypairs/passkey/publickey.js.map +0 -1
- package/dist/esm/keypairs/passkey/types.js.map +0 -1
- package/dist/esm/keypairs/secp256k1/index.js.map +0 -1
- package/dist/esm/keypairs/secp256k1/keypair.js.map +0 -1
- package/dist/esm/keypairs/secp256k1/publickey.js.map +0 -1
- package/dist/esm/keypairs/secp256r1/index.js.map +0 -1
- package/dist/esm/keypairs/secp256r1/keypair.js.map +0 -1
- package/dist/esm/keypairs/secp256r1/publickey.js.map +0 -1
- package/dist/esm/multisig/index.js.map +0 -1
- package/dist/esm/multisig/publickey.js.map +0 -1
- package/dist/esm/multisig/signer.js.map +0 -1
- package/dist/esm/transactions/Arguments.js.map +0 -1
- package/dist/esm/transactions/Commands.js.map +0 -1
- package/dist/esm/transactions/Inputs.js.map +0 -1
- package/dist/esm/transactions/ObjectCache.js.map +0 -1
- package/dist/esm/transactions/Transaction.js.map +0 -1
- package/dist/esm/transactions/TransactionData.js.map +0 -1
- package/dist/esm/transactions/__tests__/Transaction.test.js.map +0 -1
- package/dist/esm/transactions/__tests__/bcs.test.js.map +0 -1
- package/dist/esm/transactions/data/internal.js.map +0 -1
- package/dist/esm/transactions/data/v1.js.map +0 -1
- package/dist/esm/transactions/data/v2.js.map +0 -1
- package/dist/esm/transactions/executor/caching.js.map +0 -1
- package/dist/esm/transactions/executor/parallel.js.map +0 -1
- package/dist/esm/transactions/executor/queue.js.map +0 -1
- package/dist/esm/transactions/executor/serial.js.map +0 -1
- package/dist/esm/transactions/hash.js.map +0 -1
- package/dist/esm/transactions/index.js.map +0 -1
- package/dist/esm/transactions/intents/CoinWithBalance.js.map +0 -1
- package/dist/esm/transactions/object.js.map +0 -1
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +0 -1
- package/dist/esm/transactions/pure.js.map +0 -1
- package/dist/esm/transactions/resolve.js.map +0 -1
- package/dist/esm/transactions/serializer.js.map +0 -1
- package/dist/esm/transactions/utils.js.map +0 -1
- package/dist/esm/utils/constants.js.map +0 -1
- package/dist/esm/utils/derived-objects.js.map +0 -1
- package/dist/esm/utils/dynamic-fields.js.map +0 -1
- package/dist/esm/utils/format.js.map +0 -1
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/move-registry.js.map +0 -1
- package/dist/esm/utils/sui-types.js.map +0 -1
- package/dist/esm/utils/suins.js.map +0 -1
- package/dist/esm/verify/index.js.map +0 -1
- package/dist/esm/verify/verify.js.map +0 -1
- package/dist/esm/version.js.map +0 -1
- package/dist/esm/w/call/allocation.js.map +0 -1
- package/dist/esm/w/call/arb.js.map +0 -1
- package/dist/esm/w/call/arbitration.js.map +0 -1
- package/dist/esm/w/call/base.js.map +0 -1
- package/dist/esm/w/call/contact.js.map +0 -1
- package/dist/esm/w/call/demand.js.map +0 -1
- package/dist/esm/w/call/entity.js.map +0 -1
- package/dist/esm/w/call/guard-ins.js.map +0 -1
- package/dist/esm/w/call/guard.js.map +0 -1
- package/dist/esm/w/call/index.js.map +0 -1
- package/dist/esm/w/call/machine.js.map +0 -1
- package/dist/esm/w/call/order.js.map +0 -1
- package/dist/esm/w/call/passport.js.map +0 -1
- package/dist/esm/w/call/payment.js.map +0 -1
- package/dist/esm/w/call/permission.js.map +0 -1
- package/dist/esm/w/call/personal.js.map +0 -1
- package/dist/esm/w/call/progress.js.map +0 -1
- package/dist/esm/w/call/proof.js.map +0 -1
- package/dist/esm/w/call/repository.js.map +0 -1
- package/dist/esm/w/call/resource.js.map +0 -1
- package/dist/esm/w/call/reward.js.map +0 -1
- package/dist/esm/w/call/service.js.map +0 -1
- package/dist/esm/w/call/treasury.js.map +0 -1
- package/dist/esm/w/call/util.js.map +0 -1
- package/dist/esm/w/common.js.map +0 -1
- package/dist/esm/w/exception.js.map +0 -1
- package/dist/esm/w/index.js.map +0 -1
- package/dist/esm/w/local/account.js.map +0 -1
- package/dist/esm/w/local/cache.js.map +0 -1
- package/dist/esm/w/local/config.js.map +0 -1
- package/dist/esm/w/local/index.js.map +0 -1
- package/dist/esm/w/local/local.js.map +0 -1
- package/dist/esm/w/local/storage.js.map +0 -1
- package/dist/esm/w/local/token.js.map +0 -1
- package/dist/esm/w/local/util.js.map +0 -1
- package/dist/esm/w/local/wip.js.map +0 -1
- package/dist/esm/w/messenger/crypto.js.map +0 -1
- package/dist/esm/w/messenger/index.js.map +0 -1
- package/dist/esm/w/messenger/messenger-api.js.map +0 -1
- package/dist/esm/w/messenger/messenger-manager.js.map +0 -1
- package/dist/esm/w/messenger/messenger.js.map +0 -1
- package/dist/esm/w/messenger/server.js.map +0 -1
- package/dist/esm/w/messenger/session.js.map +0 -1
- package/dist/esm/w/messenger/storage.js.map +0 -1
- package/dist/esm/w/messenger/templates/wts-html-template.js.map +0 -1
- package/dist/esm/w/messenger/types.js.map +0 -1
- package/dist/esm/w/messenger/utils.js.map +0 -1
- package/dist/esm/w/query/bult-in.js.map +0 -1
- package/dist/esm/w/query/event.js.map +0 -1
- package/dist/esm/w/query/index.js.map +0 -1
- package/dist/esm/w/query/object.js.map +0 -1
- package/dist/esm/w/query/received.js.map +0 -1
- package/dist/esm/w/query/util.js.map +0 -1
- package/dist/esm/w/util.js.map +0 -1
|
@@ -1,768 +1 @@
|
|
|
1
|
-
// Copyright (c) Wowok.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
/**
|
|
4
|
-
* Messenger 会话管理模块
|
|
5
|
-
*
|
|
6
|
-
* 基于 Signal Protocol 的双棘轮算法实现端到端加密
|
|
7
|
-
* 负责:
|
|
8
|
-
* 1. 身份密钥管理(与 wowok 账户体系集成)
|
|
9
|
-
* 2. 会话建立和维护
|
|
10
|
-
* 3. 消息加密和解密
|
|
11
|
-
*/
|
|
12
|
-
import { KeyHelper, SessionBuilder, SessionCipher, SignalProtocolAddress, } from "libsignal-protocol-typescript";
|
|
13
|
-
import { SignalProtocolStorage } from "./storage.js";
|
|
14
|
-
import { MessengerServerClient } from "./server.js";
|
|
15
|
-
import { recoverXed25519FromX25519PrivateKey, arrayBufferToUint8Array, bytesToBase64, base64ToBytes, } from "./crypto.js";
|
|
16
|
-
import { MessageType, DEFAULT_MESSENGER_CONFIG, MessengerError, MessengerErrorCode, DEFAULT_DEVICE_ID, } from "./types.js";
|
|
17
|
-
// 动态导入 Account 以避免循环依赖
|
|
18
|
-
// eslint-disable-next-line import/no-cycle
|
|
19
|
-
async function getAccount() {
|
|
20
|
-
// eslint-disable-next-line import/no-cycle
|
|
21
|
-
const { Account } = await import("../local/account.js");
|
|
22
|
-
return Account.Instance();
|
|
23
|
-
}
|
|
24
|
-
export class MessengerSession {
|
|
25
|
-
store;
|
|
26
|
-
serverClient;
|
|
27
|
-
config;
|
|
28
|
-
identity = null;
|
|
29
|
-
constructor(userAddress, config) {
|
|
30
|
-
this.store = new SignalProtocolStorage(userAddress);
|
|
31
|
-
this.config = { ...DEFAULT_MESSENGER_CONFIG, ...config };
|
|
32
|
-
this.serverClient = new MessengerServerClient(this.config);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* 获取或创建本地身份
|
|
36
|
-
*
|
|
37
|
-
* 从 wowok 账户的 ED25519 私钥确定性派生 X25519 密钥对,
|
|
38
|
-
* 确保恢复钱包后加密身份不变。
|
|
39
|
-
*/
|
|
40
|
-
async ensureIdentity(userAddress) {
|
|
41
|
-
if (this.identity) {
|
|
42
|
-
return this.identity;
|
|
43
|
-
}
|
|
44
|
-
// 尝试从存储加载
|
|
45
|
-
const existingSignalIdentity = await this.store.getIdentityKeyPair();
|
|
46
|
-
const existingRegId = await this.store.getLocalRegistrationId();
|
|
47
|
-
if (existingSignalIdentity && existingRegId) {
|
|
48
|
-
const x25519PrivateKey = new Uint8Array(existingSignalIdentity.privKey);
|
|
49
|
-
const xed25519 = recoverXed25519FromX25519PrivateKey(x25519PrivateKey);
|
|
50
|
-
this.identity = {
|
|
51
|
-
xed25519,
|
|
52
|
-
signalIdentity: existingSignalIdentity,
|
|
53
|
-
registrationId: existingRegId,
|
|
54
|
-
};
|
|
55
|
-
return this.identity;
|
|
56
|
-
}
|
|
57
|
-
// 从 ED25519 私钥确定性派生 X25519 密钥对
|
|
58
|
-
if (!userAddress) {
|
|
59
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, "userAddress is required to derive identity");
|
|
60
|
-
}
|
|
61
|
-
// 从 Account 派生 X25519 密钥对
|
|
62
|
-
const { privateKey, publicKey } = await (await getAccount()).deriveX25519KeyPair(userAddress);
|
|
63
|
-
// 生成注册 ID(可以从公钥派生,确保确定性)
|
|
64
|
-
const registrationId = this.deriveRegistrationId(publicKey);
|
|
65
|
-
// 转换为 Signal Protocol 格式
|
|
66
|
-
// Signal Protocol 要求公钥带 0x05 前缀(33字节),私钥32字节
|
|
67
|
-
const prefixedPublicKey = new Uint8Array(33);
|
|
68
|
-
prefixedPublicKey[0] = 0x05; // Signal Protocol 标准前缀
|
|
69
|
-
prefixedPublicKey.set(publicKey, 1);
|
|
70
|
-
const signalIdentity = {
|
|
71
|
-
privKey: privateKey.slice().buffer,
|
|
72
|
-
pubKey: prefixedPublicKey.slice().buffer,
|
|
73
|
-
};
|
|
74
|
-
await this.store.setIdentity(signalIdentity, registrationId);
|
|
75
|
-
const xed25519 = recoverXed25519FromX25519PrivateKey(privateKey);
|
|
76
|
-
this.identity = {
|
|
77
|
-
xed25519,
|
|
78
|
-
signalIdentity,
|
|
79
|
-
registrationId,
|
|
80
|
-
};
|
|
81
|
-
return this.identity;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* 从公钥确定性派生注册 ID
|
|
85
|
-
* 确保同一账户的注册 ID 始终相同
|
|
86
|
-
*/
|
|
87
|
-
deriveRegistrationId(publicKey) {
|
|
88
|
-
// 取公钥前 2 字节作为注册 ID(范围 0-65535)
|
|
89
|
-
// 确保不为 0(Signal Protocol 要求)
|
|
90
|
-
const id = (publicKey[0] << 8) | publicKey[1];
|
|
91
|
-
return id === 0 ? 1 : id;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 注册设备到服务器
|
|
95
|
-
*/
|
|
96
|
-
async registerDevice(userAddress) {
|
|
97
|
-
const identity = await this.ensureIdentity(userAddress);
|
|
98
|
-
const signedPreKeyId = 1;
|
|
99
|
-
let signedPreKey;
|
|
100
|
-
let signedPreKeyPublicKey;
|
|
101
|
-
let signedPreKeySignature;
|
|
102
|
-
let isNewKey = false;
|
|
103
|
-
// 【关键修复】使用带签名的存储方法
|
|
104
|
-
const existingSignedPreKey = await this.store.loadSignedPreKeyWithSignature(signedPreKeyId);
|
|
105
|
-
if (existingSignedPreKey) {
|
|
106
|
-
signedPreKeyPublicKey = arrayBufferToUint8Array(existingSignedPreKey.pubKey);
|
|
107
|
-
signedPreKeySignature = arrayBufferToUint8Array(existingSignedPreKey.signature);
|
|
108
|
-
signedPreKey = {
|
|
109
|
-
keyId: signedPreKeyId,
|
|
110
|
-
keyPair: {
|
|
111
|
-
pubKey: existingSignedPreKey.pubKey,
|
|
112
|
-
privKey: existingSignedPreKey.privKey,
|
|
113
|
-
},
|
|
114
|
-
signature: existingSignedPreKey.signature,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
signedPreKey = await KeyHelper.generateSignedPreKey(identity.signalIdentity, signedPreKeyId);
|
|
119
|
-
signedPreKeyPublicKey = arrayBufferToUint8Array(signedPreKey.keyPair.pubKey);
|
|
120
|
-
signedPreKeySignature = arrayBufferToUint8Array(signedPreKey.signature);
|
|
121
|
-
isNewKey = true;
|
|
122
|
-
}
|
|
123
|
-
// 生成 One-Time PreKeys(暂不保存)
|
|
124
|
-
const oneTimePrekeys = await this.generatePreKeyBatch(this.config.prekey_count, userAddress);
|
|
125
|
-
const prefixedIdentityKey = arrayBufferToUint8Array(identity.signalIdentity.pubKey);
|
|
126
|
-
const account = await (await getAccount()).get(userAddress, false);
|
|
127
|
-
if (!account?.pubkey) {
|
|
128
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
|
|
129
|
-
}
|
|
130
|
-
const timestamp = Date.now();
|
|
131
|
-
const nonce = this.generateNonce();
|
|
132
|
-
const message = `register:${account.pubkey}:${timestamp}:${nonce}`;
|
|
133
|
-
const signResult = await (await getAccount()).signData(userAddress, message);
|
|
134
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
135
|
-
const registerRequest = {
|
|
136
|
-
userAddress,
|
|
137
|
-
deviceId: DEFAULT_DEVICE_ID,
|
|
138
|
-
registrationId: identity.registrationId,
|
|
139
|
-
identityKey: bytesToBase64(prefixedIdentityKey),
|
|
140
|
-
signedPrekey: {
|
|
141
|
-
keyId: signedPreKeyId,
|
|
142
|
-
publicKey: bytesToBase64(signedPreKeyPublicKey),
|
|
143
|
-
signature: bytesToBase64(signedPreKeySignature),
|
|
144
|
-
},
|
|
145
|
-
prekeys: oneTimePrekeys,
|
|
146
|
-
publicKey: account.pubkey,
|
|
147
|
-
signatureScheme: "ED25519",
|
|
148
|
-
signature: bytesToBase64(signature),
|
|
149
|
-
timestamp,
|
|
150
|
-
nonce,
|
|
151
|
-
};
|
|
152
|
-
console.log(`[Session Debug] Sending register request to server...`);
|
|
153
|
-
await this.serverClient.registerDevice(registerRequest);
|
|
154
|
-
console.log(`[Session Debug] Server register request successful!`);
|
|
155
|
-
console.log(`[Session Debug] Verifying registration complete...`);
|
|
156
|
-
await this.verifyRegistrationComplete(userAddress);
|
|
157
|
-
console.log(`[Session Debug] Registration verification complete!`);
|
|
158
|
-
// 【关键修复】只有是新 key 时才保存到本地数据库(包含签名)
|
|
159
|
-
if (isNewKey) {
|
|
160
|
-
await this.store.storeSignedPreKeyWithSignature(signedPreKeyId, signedPreKey.keyPair, signedPreKeySignature.buffer.slice(0));
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 验证注册是否完成
|
|
165
|
-
* 轮询检查服务器是否已存在该用户
|
|
166
|
-
*/
|
|
167
|
-
async verifyRegistrationComplete(userAddress, maxRetries = 10, retryDelay = 500) {
|
|
168
|
-
for (let i = 0; i < maxRetries; i++) {
|
|
169
|
-
try {
|
|
170
|
-
const status = await this.serverClient.getPrekeyStatus(userAddress);
|
|
171
|
-
// 如果成功获取状态,说明注册已完成
|
|
172
|
-
console.log(`Registration verified for ${userAddress}, prekeys: ${status.currentCount}/${status.maxAllowed}`);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
// 如果是 404,说明注册还没完成,继续等待
|
|
177
|
-
if (error?.message?.includes("404") || error?.status === 404) {
|
|
178
|
-
if (i < maxRetries - 1) {
|
|
179
|
-
console.log(`Waiting for registration to complete... (${i + 1}/${maxRetries})`);
|
|
180
|
-
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
// 其他错误,抛出
|
|
185
|
-
throw error;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
throw new MessengerError(MessengerErrorCode.REGISTRATION_FAILED, `Registration verification failed after ${maxRetries} attempts`);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* 检查设备是否已在服务器上注册
|
|
192
|
-
* 通过查询服务器上的预密钥状态来判断
|
|
193
|
-
*/
|
|
194
|
-
async isDeviceRegistered(userAddress) {
|
|
195
|
-
try {
|
|
196
|
-
// 检查本地是否有 signedPreKey(使用带签名的方法)
|
|
197
|
-
const signedPreKey = await this.store.loadSignedPreKeyWithSignature(1);
|
|
198
|
-
if (!signedPreKey) {
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
// 尝试从服务器获取预密钥状态
|
|
202
|
-
const _status = await this.serverClient.getPrekeyStatus(userAddress);
|
|
203
|
-
return true;
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
// 如果是 404,说明设备未注册
|
|
207
|
-
if (error?.message?.includes("404") || error?.status === 404) {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* 生成预密钥批次(One-Time PreKeys)
|
|
215
|
-
*/
|
|
216
|
-
async generatePreKeyBatch(count, userAddress) {
|
|
217
|
-
if (count <= 0)
|
|
218
|
-
return [];
|
|
219
|
-
const meta = await this.store.getMeta();
|
|
220
|
-
let nextPreKeyId = meta.nextPreKeyId || 1;
|
|
221
|
-
const prekeys = [];
|
|
222
|
-
for (let i = 0; i < count; i++) {
|
|
223
|
-
const keyId = nextPreKeyId + i;
|
|
224
|
-
const existingPreKey = await this.store.loadPreKey(keyId);
|
|
225
|
-
if (existingPreKey) {
|
|
226
|
-
const pubKeyBytes = new Uint8Array(existingPreKey.pubKey);
|
|
227
|
-
const publicKeyBase64 = bytesToBase64(pubKeyBytes);
|
|
228
|
-
const signResult = await (await getAccount()).signData(userAddress, pubKeyBytes);
|
|
229
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
230
|
-
prekeys.push({
|
|
231
|
-
keyId,
|
|
232
|
-
publicKey: publicKeyBase64,
|
|
233
|
-
signature: bytesToBase64(signature),
|
|
234
|
-
});
|
|
235
|
-
continue;
|
|
236
|
-
}
|
|
237
|
-
const preKey = await KeyHelper.generatePreKey(keyId);
|
|
238
|
-
const pubKeyBytes = new Uint8Array(preKey.keyPair.pubKey);
|
|
239
|
-
const signResult = await (await getAccount()).signData(userAddress, pubKeyBytes);
|
|
240
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
241
|
-
await this.store.storePreKey(keyId, preKey.keyPair);
|
|
242
|
-
prekeys.push({
|
|
243
|
-
keyId,
|
|
244
|
-
publicKey: bytesToBase64(pubKeyBytes),
|
|
245
|
-
signature: bytesToBase64(signature),
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
nextPreKeyId += count;
|
|
249
|
-
await this.store.setMeta({ nextPreKeyId });
|
|
250
|
-
return prekeys;
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* 确保服务器上有足够可用的预密钥
|
|
254
|
-
*/
|
|
255
|
-
async ensurePreKeys(userAddress, force = false) {
|
|
256
|
-
const status = await this.serverClient.getPrekeyStatus(userAddress);
|
|
257
|
-
if (!force && status.currentCount >= status.maxAllowed) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
const needCount = status.maxAllowed - status.currentCount;
|
|
261
|
-
if (needCount <= 0) {
|
|
262
|
-
return;
|
|
263
|
-
}
|
|
264
|
-
await this.ensureIdentity(userAddress);
|
|
265
|
-
const prekeys = await this.generatePreKeyBatch(needCount, userAddress);
|
|
266
|
-
if (prekeys.length === 0) {
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
const account = await (await getAccount()).get(userAddress, false);
|
|
270
|
-
if (!account?.pubkey) {
|
|
271
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
|
|
272
|
-
}
|
|
273
|
-
const timestamp = Date.now();
|
|
274
|
-
const nonce = this.generateNonce();
|
|
275
|
-
const message = `upload_prekeys:${account.pubkey}:${timestamp}:${nonce}`;
|
|
276
|
-
const signResult = await (await getAccount()).signData(userAddress, message);
|
|
277
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
278
|
-
await this.serverClient.uploadPreKeys({
|
|
279
|
-
userAddress,
|
|
280
|
-
prekeys,
|
|
281
|
-
publicKey: account.pubkey,
|
|
282
|
-
signatureScheme: "ED25519",
|
|
283
|
-
signature: bytesToBase64(signature),
|
|
284
|
-
timestamp,
|
|
285
|
-
nonce,
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* 生成随机 nonce
|
|
290
|
-
*/
|
|
291
|
-
generateNonce() {
|
|
292
|
-
const array = new Uint8Array(16);
|
|
293
|
-
crypto.getRandomValues(array);
|
|
294
|
-
return Array.from(array, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* 建立与对方的会话
|
|
298
|
-
*/
|
|
299
|
-
async establishSession(myAddress, peerAddress, peerDeviceId = DEFAULT_DEVICE_ID, remoteBundle) {
|
|
300
|
-
const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
|
|
301
|
-
const existingSession = await this.store.loadSession(protocolAddress.toString());
|
|
302
|
-
if (existingSession) {
|
|
303
|
-
return;
|
|
304
|
-
}
|
|
305
|
-
if (!remoteBundle) {
|
|
306
|
-
const account = await (await getAccount()).get(myAddress, false);
|
|
307
|
-
if (!account?.pubkey) {
|
|
308
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${myAddress}`);
|
|
309
|
-
}
|
|
310
|
-
const timestamp = Date.now();
|
|
311
|
-
const nonce = this.generateNonce();
|
|
312
|
-
const publicKeyWithFlag = account.pubkey;
|
|
313
|
-
const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
|
|
314
|
-
const signResult = await (await getAccount()).signData(myAddress, message);
|
|
315
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
316
|
-
remoteBundle = await this.serverClient.fetchRemoteBundle(peerAddress, myAddress, publicKeyWithFlag, {
|
|
317
|
-
signatureScheme: "ED25519",
|
|
318
|
-
signature: bytesToBase64(new Uint8Array(signature)),
|
|
319
|
-
timestamp,
|
|
320
|
-
nonce,
|
|
321
|
-
}, peerDeviceId);
|
|
322
|
-
}
|
|
323
|
-
const oneTimePreKey = remoteBundle.oneTimePrekey;
|
|
324
|
-
const signedPreKey = remoteBundle.signedPrekey;
|
|
325
|
-
if (!signedPreKey) {
|
|
326
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `No signed prekey available for ${peerAddress}`);
|
|
327
|
-
}
|
|
328
|
-
const identityKeyBytes = base64ToBytes(remoteBundle.identityKey);
|
|
329
|
-
const originalIdentityKeyWithPrefix = new Uint8Array(identityKeyBytes);
|
|
330
|
-
const signedPreKeyPublicBytes = base64ToBytes(signedPreKey.publicKey);
|
|
331
|
-
const signedPreKeySignatureBytes = base64ToBytes(signedPreKey.signature);
|
|
332
|
-
const originalSignedPreKeyWithPrefix = new Uint8Array(signedPreKeyPublicBytes);
|
|
333
|
-
let oneTimePreKeyData = undefined;
|
|
334
|
-
if (oneTimePreKey) {
|
|
335
|
-
const oneTimePreKeyPublicBytes = base64ToBytes(oneTimePreKey.publicKey);
|
|
336
|
-
const originalOneTimePreKeyWithPrefix = new Uint8Array(oneTimePreKeyPublicBytes);
|
|
337
|
-
oneTimePreKeyData = {
|
|
338
|
-
keyId: oneTimePreKey.keyId,
|
|
339
|
-
publicKey: originalOneTimePreKeyWithPrefix.buffer.slice(originalOneTimePreKeyWithPrefix.byteOffset, originalOneTimePreKeyWithPrefix.byteOffset +
|
|
340
|
-
originalOneTimePreKeyWithPrefix.byteLength),
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
const device = {
|
|
344
|
-
registrationId: remoteBundle.registrationId,
|
|
345
|
-
identityKey: originalIdentityKeyWithPrefix.buffer.slice(originalIdentityKeyWithPrefix.byteOffset, originalIdentityKeyWithPrefix.byteOffset +
|
|
346
|
-
originalIdentityKeyWithPrefix.byteLength),
|
|
347
|
-
signedPreKey: {
|
|
348
|
-
keyId: signedPreKey.keyId,
|
|
349
|
-
publicKey: originalSignedPreKeyWithPrefix.buffer.slice(originalSignedPreKeyWithPrefix.byteOffset, originalSignedPreKeyWithPrefix.byteOffset +
|
|
350
|
-
originalSignedPreKeyWithPrefix.byteLength),
|
|
351
|
-
signature: new Uint8Array(signedPreKeySignatureBytes).buffer.slice(signedPreKeySignatureBytes.byteOffset, signedPreKeySignatureBytes.byteOffset +
|
|
352
|
-
signedPreKeySignatureBytes.byteLength),
|
|
353
|
-
},
|
|
354
|
-
preKey: oneTimePreKeyData,
|
|
355
|
-
};
|
|
356
|
-
const builder = new SessionBuilder(this.store, protocolAddress);
|
|
357
|
-
await builder.processPreKey(device);
|
|
358
|
-
await this.store.saveIdentity(protocolAddress.toString(), device.identityKey);
|
|
359
|
-
// 【关键改进】将会话从默认key复制到发送会话key
|
|
360
|
-
const defaultSessionKey = protocolAddress.toString();
|
|
361
|
-
const sendSessionKey = `send:${peerAddress}.${peerDeviceId}`;
|
|
362
|
-
const sessionData = await this.store.loadSession(defaultSessionKey);
|
|
363
|
-
if (sessionData) {
|
|
364
|
-
await this.store.storeSession(sendSessionKey, sessionData);
|
|
365
|
-
console.log(`[Session] 会话已保存到发送key: ${sendSessionKey}`);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* 加密消息
|
|
370
|
-
* 【改进】使用发送会话key,与接收会话分离
|
|
371
|
-
*/
|
|
372
|
-
async encryptMessage(myAddress, peerAddress, plaintext, peerDeviceId = DEFAULT_DEVICE_ID) {
|
|
373
|
-
const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
|
|
374
|
-
// Signal Protocol使用的默认key格式
|
|
375
|
-
const defaultSessionKey = protocolAddress.toString();
|
|
376
|
-
// 【关键改进】使用发送会话key
|
|
377
|
-
const sendSessionKey = `send:${peerAddress}.${peerDeviceId}`;
|
|
378
|
-
const recvSessionKey = `recv:${peerAddress}.${peerDeviceId}`;
|
|
379
|
-
// 【关键】首先检查默认key(Signal Protocol使用的格式)
|
|
380
|
-
let existingDefaultSession = await this.store.loadSession(defaultSessionKey);
|
|
381
|
-
// 检查是否存在发送会话或接收会话
|
|
382
|
-
let existingSendSession = await this.store.loadSession(sendSessionKey);
|
|
383
|
-
const existingRecvSession = await this.store.loadSession(recvSessionKey);
|
|
384
|
-
// 【关键逻辑1】如果存在接收会话但没有默认会话,复制接收会话到默认key
|
|
385
|
-
// 这样SessionCipher可以找到会话
|
|
386
|
-
if (!existingDefaultSession && existingRecvSession) {
|
|
387
|
-
console.log(`[Session] 复制接收会话到默认key: ${peerAddress}`);
|
|
388
|
-
await this.store.storeSession(defaultSessionKey, existingRecvSession);
|
|
389
|
-
existingDefaultSession = existingRecvSession;
|
|
390
|
-
}
|
|
391
|
-
// 【关键逻辑2】如果存在接收会话但没有发送会话,复制接收会话作为发送会话
|
|
392
|
-
// 这确保双方使用相同的密钥材料
|
|
393
|
-
if (!existingSendSession && existingRecvSession) {
|
|
394
|
-
console.log(`[Session] 复制接收会话到发送会话: ${peerAddress}`);
|
|
395
|
-
await this.store.storeSession(sendSessionKey, existingRecvSession);
|
|
396
|
-
existingSendSession = existingRecvSession;
|
|
397
|
-
}
|
|
398
|
-
let existingSession = existingDefaultSession || existingSendSession;
|
|
399
|
-
let isNewSession = !existingSession;
|
|
400
|
-
let retryCount = 0;
|
|
401
|
-
const maxRetries = 5; // 【用户要求】加大容错窗口,让消息可以重试更多次
|
|
402
|
-
while (retryCount <= maxRetries) {
|
|
403
|
-
try {
|
|
404
|
-
if (isNewSession) {
|
|
405
|
-
console.log(`[Session] 建立新会话 (尝试 ${retryCount + 1}/${maxRetries + 1})`);
|
|
406
|
-
const account = await (await getAccount()).get(myAddress, false);
|
|
407
|
-
if (!account?.pubkey) {
|
|
408
|
-
throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${myAddress}`);
|
|
409
|
-
}
|
|
410
|
-
const timestamp = Date.now();
|
|
411
|
-
const nonce = this.generateNonce();
|
|
412
|
-
const publicKeyWithFlag = account.pubkey;
|
|
413
|
-
const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
|
|
414
|
-
const signResult = await (await getAccount()).signData(myAddress, message);
|
|
415
|
-
const signature = Buffer.from(signResult.signature.slice(2), "hex");
|
|
416
|
-
const remoteBundle = await this.serverClient.fetchRemoteBundle(peerAddress, myAddress, publicKeyWithFlag, {
|
|
417
|
-
signatureScheme: "ED25519",
|
|
418
|
-
signature: bytesToBase64(new Uint8Array(signature)),
|
|
419
|
-
timestamp,
|
|
420
|
-
nonce,
|
|
421
|
-
}, peerDeviceId);
|
|
422
|
-
await this.establishSession(myAddress, peerAddress, peerDeviceId, remoteBundle);
|
|
423
|
-
}
|
|
424
|
-
const cipher = new SessionCipher(this.store, protocolAddress);
|
|
425
|
-
const encoder = new TextEncoder();
|
|
426
|
-
const cipherMessage = await cipher.encrypt(encoder.encode(plaintext).buffer);
|
|
427
|
-
let bodyBuffer;
|
|
428
|
-
if (typeof cipherMessage.body === "string") {
|
|
429
|
-
const bodyBytes = Buffer.from(cipherMessage.body, "binary");
|
|
430
|
-
bodyBuffer = new Uint8Array(bodyBytes).buffer;
|
|
431
|
-
}
|
|
432
|
-
else if (cipherMessage.body) {
|
|
433
|
-
bodyBuffer = cipherMessage.body;
|
|
434
|
-
}
|
|
435
|
-
else {
|
|
436
|
-
throw new MessengerError(MessengerErrorCode.ENCRYPTION_FAILED, "Cipher message body is empty");
|
|
437
|
-
}
|
|
438
|
-
return {
|
|
439
|
-
type: cipherMessage.type,
|
|
440
|
-
body: bodyBuffer,
|
|
441
|
-
registrationId: cipherMessage.registrationId,
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
catch (error) {
|
|
445
|
-
console.error(`[Session] 加密失败 (尝试 ${retryCount + 1}/${maxRetries + 1}):`, error);
|
|
446
|
-
if (retryCount >= maxRetries) {
|
|
447
|
-
throw error;
|
|
448
|
-
}
|
|
449
|
-
console.log(`[Session] 尝试删除旧会话并重新建立...`);
|
|
450
|
-
try {
|
|
451
|
-
if (existingSession) {
|
|
452
|
-
// 【关键】删除所有相关的会话key
|
|
453
|
-
await this.store.removeSession(defaultSessionKey);
|
|
454
|
-
await this.store.removeSession(sendSessionKey);
|
|
455
|
-
await this.store.removeSession(recvSessionKey);
|
|
456
|
-
existingSession = undefined;
|
|
457
|
-
}
|
|
458
|
-
isNewSession = true;
|
|
459
|
-
retryCount++;
|
|
460
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
461
|
-
}
|
|
462
|
-
catch (rebuildError) {
|
|
463
|
-
console.error(`[Session] 重新建立会话失败:`, rebuildError);
|
|
464
|
-
throw error;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
throw new MessengerError(MessengerErrorCode.ENCRYPTION_FAILED, "Encryption failed after multiple attempts");
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* 解密消息
|
|
472
|
-
*/
|
|
473
|
-
async decryptMessage(myAddress, peerAddress, ciphertext, msgType, peerDeviceId = DEFAULT_DEVICE_ID) {
|
|
474
|
-
const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
|
|
475
|
-
const sessionKey = protocolAddress.toString();
|
|
476
|
-
let existingSession = await this.store.loadSession(sessionKey);
|
|
477
|
-
const decoder = new TextDecoder();
|
|
478
|
-
let ciphertextBinary = "";
|
|
479
|
-
const ciphertextArray = new Uint8Array(ciphertext);
|
|
480
|
-
for (let i = 0; i < ciphertextArray.length; i++) {
|
|
481
|
-
ciphertextBinary += String.fromCharCode(ciphertextArray[i]);
|
|
482
|
-
}
|
|
483
|
-
let retryCount = 0;
|
|
484
|
-
const maxRetries = 5; // 【用户要求】加大容错窗口,让消息可以重试更多次
|
|
485
|
-
// 【新增】如果是 WHISPER_MESSAGE 且没有现有会话,直接抛出可重试错误
|
|
486
|
-
if (msgType !== MessageType.PREKEY_MESSAGE && !existingSession) {
|
|
487
|
-
console.log(`[Session] 收到 WHISPER_MESSAGE 但无现有会话,需要等待 PREKEY_MESSAGE`);
|
|
488
|
-
throw new Error("收到 WHISPER_MESSAGE 但无现有会话,需要等待 PREKEY_MESSAGE");
|
|
489
|
-
}
|
|
490
|
-
while (retryCount <= maxRetries) {
|
|
491
|
-
try {
|
|
492
|
-
const cipher = new SessionCipher(this.store, protocolAddress);
|
|
493
|
-
let plaintextBuffer;
|
|
494
|
-
if (msgType === MessageType.PREKEY_MESSAGE) {
|
|
495
|
-
console.log(`[Session] 收到 PREKEY_MESSAGE,尝试解密 (尝试 ${retryCount + 1}/${maxRetries + 1})`);
|
|
496
|
-
try {
|
|
497
|
-
// 【用户要求】先用尝试解密(真解密可能推动会话密钥变更,极度重要!)
|
|
498
|
-
plaintextBuffer =
|
|
499
|
-
await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
|
|
500
|
-
console.log(`[Session] PREKEY_MESSAGE 解密成功!`);
|
|
501
|
-
return decoder.decode(plaintextBuffer);
|
|
502
|
-
}
|
|
503
|
-
catch (decryptError) {
|
|
504
|
-
console.log(`[Session] 直接解密 PREKEY_MESSAGE 失败: ${decryptError instanceof Error ? decryptError.message : String(decryptError)}`);
|
|
505
|
-
// 如果解密失败,再处理 PREKEY 竞争的情况(但只在第一次尝试时处理)
|
|
506
|
-
if (existingSession && retryCount === 0) {
|
|
507
|
-
// 【用户要求】PREKEY 竞争时,双方始终优先以小地址发送的消息为最终依据
|
|
508
|
-
const myAddr = myAddress.toLowerCase();
|
|
509
|
-
const peerAddr = peerAddress.toLowerCase();
|
|
510
|
-
if (myAddr < peerAddr) {
|
|
511
|
-
// 我的地址较小,保留我的会话!不处理这个 PREKEY_MESSAGE,稍后重试
|
|
512
|
-
console.log(`[Session] 我的地址较小 (${myAddr} < ${peerAddr}),保留我的会话,稍后重试`);
|
|
513
|
-
throw new Error("PREKEY 竞争:我的地址较小,保留我的会话");
|
|
514
|
-
}
|
|
515
|
-
else {
|
|
516
|
-
// 我的地址较大,删除我的会话,用对方的 PREKEY_MESSAGE 建立新会话
|
|
517
|
-
console.log(`[Session] 我的地址较大 (${myAddr} > ${peerAddr}),删除我的会话,用对方的 PREKEY_MESSAGE 建立新会话`);
|
|
518
|
-
await this.store.removeSession(sessionKey);
|
|
519
|
-
existingSession = undefined;
|
|
520
|
-
// 现在删除了会话,重新尝试解密
|
|
521
|
-
console.log(`[Session] 已删除旧会话,重新尝试解密...`);
|
|
522
|
-
plaintextBuffer =
|
|
523
|
-
await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
|
|
524
|
-
console.log(`[Session] PREKEY_MESSAGE 解密成功,新会话已建立`);
|
|
525
|
-
return decoder.decode(plaintextBuffer);
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
else {
|
|
529
|
-
// 没有现有会话,或者不是第一次尝试,重新抛出解密错误
|
|
530
|
-
throw decryptError;
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
else {
|
|
535
|
-
plaintextBuffer = await cipher.decryptWhisperMessage(ciphertextBinary, "binary");
|
|
536
|
-
}
|
|
537
|
-
return decoder.decode(plaintextBuffer);
|
|
538
|
-
}
|
|
539
|
-
catch (error) {
|
|
540
|
-
console.error(`[Session Debug] 解密失败 (尝试 ${retryCount + 1}/${maxRetries + 1}):`);
|
|
541
|
-
console.error(` 错误类型: ${error instanceof Error ? error.constructor.name : typeof error}`);
|
|
542
|
-
console.error(` 错误消息: ${error instanceof Error ? error.message : String(error)}`);
|
|
543
|
-
if (error instanceof Error && error.stack) {
|
|
544
|
-
console.error(` 堆栈: ${error.stack.split("\n")[0]}`);
|
|
545
|
-
}
|
|
546
|
-
console.error(` 上下文:`);
|
|
547
|
-
console.error(` - myAddress: ${myAddress}`);
|
|
548
|
-
console.error(` - peerAddress: ${peerAddress}`);
|
|
549
|
-
console.error(` - msgType: ${msgType} (${msgType === MessageType.PREKEY_MESSAGE ? "PREKEY" : "WHISPER"})`);
|
|
550
|
-
console.error(` - sessionKey: ${sessionKey}`);
|
|
551
|
-
console.error(` - existingSession: ${existingSession ? "存在" : "不存在"}`);
|
|
552
|
-
console.error(` - ciphertext.length: ${ciphertext.byteLength}`);
|
|
553
|
-
const identityKey = await this.store.getIdentityKeyPair();
|
|
554
|
-
const regId = await this.store.getLocalRegistrationId();
|
|
555
|
-
console.error(` - identityKey: ${identityKey ? "存在" : "缺失"}`);
|
|
556
|
-
console.error(` - registrationId: ${regId}`);
|
|
557
|
-
if (retryCount >= maxRetries) {
|
|
558
|
-
throw error;
|
|
559
|
-
}
|
|
560
|
-
console.log(`[Session] 尝试重新建立会话...`);
|
|
561
|
-
try {
|
|
562
|
-
if (existingSession) {
|
|
563
|
-
console.log(`[Session] 删除旧会话`);
|
|
564
|
-
await this.store.removeSession(sessionKey);
|
|
565
|
-
existingSession = undefined;
|
|
566
|
-
}
|
|
567
|
-
if (msgType === MessageType.PREKEY_MESSAGE) {
|
|
568
|
-
console.log(`[Session] 收到的是 PREKEY_MESSAGE,等待发送方的 PreKey 即可重建会话`);
|
|
569
|
-
}
|
|
570
|
-
else {
|
|
571
|
-
console.log(`[Session] 收到的是 WHISPER_MESSAGE,需要让对方重新发送 PREKEY_MESSAGE`);
|
|
572
|
-
}
|
|
573
|
-
retryCount++;
|
|
574
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
575
|
-
}
|
|
576
|
-
catch (rebuildError) {
|
|
577
|
-
console.error(`[Session] 重新建立会话失败:`, rebuildError);
|
|
578
|
-
throw error;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
throw new MessengerError(MessengerErrorCode.DECRYPTION_FAILED, "Decryption failed after multiple attempts");
|
|
583
|
-
}
|
|
584
|
-
/**
|
|
585
|
-
* 获取本地身份公钥
|
|
586
|
-
*/
|
|
587
|
-
async getIdentityKey() {
|
|
588
|
-
const identity = await this.ensureIdentity();
|
|
589
|
-
return bytesToBase64(arrayBufferToUint8Array(identity.signalIdentity.pubKey));
|
|
590
|
-
}
|
|
591
|
-
/**
|
|
592
|
-
* 获取注册 ID
|
|
593
|
-
*/
|
|
594
|
-
async getRegistrationId() {
|
|
595
|
-
const identity = await this.ensureIdentity();
|
|
596
|
-
return identity.registrationId;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
export class SessionStateManager {
|
|
600
|
-
store;
|
|
601
|
-
constructor(store) {
|
|
602
|
-
this.store = store;
|
|
603
|
-
}
|
|
604
|
-
/**
|
|
605
|
-
* 保存会话快照
|
|
606
|
-
*/
|
|
607
|
-
async snapshotSession(sessionKey) {
|
|
608
|
-
const sessionData = await this.store.loadSession(sessionKey);
|
|
609
|
-
return {
|
|
610
|
-
sessionData: sessionData || null,
|
|
611
|
-
timestamp: Date.now(),
|
|
612
|
-
};
|
|
613
|
-
}
|
|
614
|
-
/**
|
|
615
|
-
* 回滚会话状态
|
|
616
|
-
*/
|
|
617
|
-
async rollbackSession(sessionKey, snapshot) {
|
|
618
|
-
if (snapshot.sessionData) {
|
|
619
|
-
await this.store.storeSession(sessionKey, snapshot.sessionData);
|
|
620
|
-
console.log(`[SessionState] 回滚会话: ${sessionKey}`);
|
|
621
|
-
}
|
|
622
|
-
else {
|
|
623
|
-
await this.store.removeSession(sessionKey);
|
|
624
|
-
console.log(`[SessionState] 清除会话: ${sessionKey}`);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
/**
|
|
628
|
-
* 提交会话状态(保留新会话)
|
|
629
|
-
*/
|
|
630
|
-
async commitSession(_sessionKey) {
|
|
631
|
-
// 新会话已经在 decrypt 过程中保存到存储
|
|
632
|
-
// 这里可以添加额外的确认逻辑
|
|
633
|
-
console.log(`[SessionState] 提交新会话`);
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
export class DecryptionEngine {
|
|
637
|
-
sessionManager;
|
|
638
|
-
store;
|
|
639
|
-
constructor(store) {
|
|
640
|
-
this.store = store;
|
|
641
|
-
this.sessionManager = new SessionStateManager(store);
|
|
642
|
-
}
|
|
643
|
-
/**
|
|
644
|
-
* 【核心改进】获取接收会话key
|
|
645
|
-
* 使用 recv: 前缀区分接收会话和发送会话
|
|
646
|
-
*/
|
|
647
|
-
getRecvSessionKey(peerAddress, deviceId) {
|
|
648
|
-
return `recv:${peerAddress}.${deviceId}`;
|
|
649
|
-
}
|
|
650
|
-
/**
|
|
651
|
-
* 【核心改进】获取发送会话key
|
|
652
|
-
* 使用 send: 前缀区分发送会话和接收会话
|
|
653
|
-
*/
|
|
654
|
-
getSendSessionKey(peerAddress, deviceId) {
|
|
655
|
-
return `send:${peerAddress}.${deviceId}`;
|
|
656
|
-
}
|
|
657
|
-
/**
|
|
658
|
-
* 统一解密入口
|
|
659
|
-
* 【改进】使用方向区分的sessionKey管理双向会话
|
|
660
|
-
*/
|
|
661
|
-
async decryptMessage(myAddress, peerAddress, ciphertext, msgType, peerDeviceId = DEFAULT_DEVICE_ID) {
|
|
662
|
-
// 【关键改进】使用接收会话key
|
|
663
|
-
const recvSessionKey = this.getRecvSessionKey(peerAddress, peerDeviceId);
|
|
664
|
-
// 创建protocolAddress用于Signal Protocol
|
|
665
|
-
const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
|
|
666
|
-
// 1. 保存会话快照(用于回滚)
|
|
667
|
-
const snapshot = await this.sessionManager.snapshotSession(recvSessionKey);
|
|
668
|
-
try {
|
|
669
|
-
if (msgType === MessageType.PREKEY_MESSAGE) {
|
|
670
|
-
return await this.handlePreKeyMessage(myAddress, peerAddress, ciphertext, protocolAddress, recvSessionKey, snapshot);
|
|
671
|
-
}
|
|
672
|
-
else {
|
|
673
|
-
return await this.handleWhisperMessage(myAddress, peerAddress, ciphertext, protocolAddress, recvSessionKey, snapshot);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
catch (error) {
|
|
677
|
-
// 发生错误,回滚会话
|
|
678
|
-
await this.sessionManager.rollbackSession(recvSessionKey, snapshot);
|
|
679
|
-
return {
|
|
680
|
-
success: false,
|
|
681
|
-
sessionUpdated: false,
|
|
682
|
-
sessionRolledBack: true,
|
|
683
|
-
messageType: msgType === MessageType.PREKEY_MESSAGE
|
|
684
|
-
? "PREKEY"
|
|
685
|
-
: "WHISPER",
|
|
686
|
-
error: error instanceof Error ? error.message : String(error),
|
|
687
|
-
};
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
/**
|
|
691
|
-
* 处理 PREKEY_MESSAGE
|
|
692
|
-
* 【核心改进】无论大小地址,都保存接收会话
|
|
693
|
-
* 小地址优先原则只影响发送会话,不影响接收会话
|
|
694
|
-
*/
|
|
695
|
-
async handlePreKeyMessage(myAddress, peerAddress, ciphertext, protocolAddress, recvSessionKey, snapshot) {
|
|
696
|
-
console.log(`[Decrypt] 处理 PREKEY_MESSAGE from ${peerAddress}`);
|
|
697
|
-
const cipher = new SessionCipher(this.store, protocolAddress);
|
|
698
|
-
const decoder = new TextDecoder();
|
|
699
|
-
// 尝试解密(这会可能建立新会话)
|
|
700
|
-
const ciphertextBinary = this.arrayBufferToBinary(ciphertext);
|
|
701
|
-
const plaintextBuffer = await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
|
|
702
|
-
const plaintext = decoder.decode(plaintextBuffer);
|
|
703
|
-
console.log(`[Decrypt] PREKEY_MESSAGE 解密成功`);
|
|
704
|
-
// 【核心改进】无论大小地址,都保存接收会话
|
|
705
|
-
// 因为PREKEY_MESSAGE意味着对方想要建立会话,我们应该接受
|
|
706
|
-
await this.sessionManager.commitSession(recvSessionKey);
|
|
707
|
-
const myAddr = myAddress.toLowerCase();
|
|
708
|
-
const peerAddr = peerAddress.toLowerCase();
|
|
709
|
-
if (myAddr < peerAddr) {
|
|
710
|
-
// 我是小地址,我的发送会话优先
|
|
711
|
-
// 但接收会话仍然保存(用于解密对方的消息)
|
|
712
|
-
console.log(`[Decrypt] 小地址(${myAddr})保存接收会话用于解密,发送会话保持不变`);
|
|
713
|
-
}
|
|
714
|
-
else {
|
|
715
|
-
// 我是大地址,完全接受对方的会话
|
|
716
|
-
console.log(`[Decrypt] 大地址(${myAddr})接受新会话`);
|
|
717
|
-
}
|
|
718
|
-
return {
|
|
719
|
-
success: true,
|
|
720
|
-
plaintext,
|
|
721
|
-
sessionUpdated: true,
|
|
722
|
-
sessionRolledBack: false,
|
|
723
|
-
messageType: "PREKEY",
|
|
724
|
-
};
|
|
725
|
-
}
|
|
726
|
-
/**
|
|
727
|
-
* 处理 WHISPER_MESSAGE
|
|
728
|
-
* 【改进】使用接收会话key查找会话
|
|
729
|
-
*/
|
|
730
|
-
async handleWhisperMessage(_myAddress, peerAddress, ciphertext, protocolAddress, recvSessionKey, snapshot) {
|
|
731
|
-
console.log(`[Decrypt] 处理 WHISPER_MESSAGE from ${peerAddress}`);
|
|
732
|
-
// 【改进】检查接收会话是否存在
|
|
733
|
-
const existingSession = await this.store.loadSession(recvSessionKey);
|
|
734
|
-
if (!existingSession) {
|
|
735
|
-
console.log(`[Decrypt] 无接收会话,WHISPER_MESSAGE 需要等待 PREKEY`);
|
|
736
|
-
await this.sessionManager.rollbackSession(recvSessionKey, snapshot);
|
|
737
|
-
return {
|
|
738
|
-
success: false,
|
|
739
|
-
sessionUpdated: false,
|
|
740
|
-
sessionRolledBack: false,
|
|
741
|
-
messageType: "WHISPER",
|
|
742
|
-
error: "NO_SESSION",
|
|
743
|
-
};
|
|
744
|
-
}
|
|
745
|
-
const cipher = new SessionCipher(this.store, protocolAddress);
|
|
746
|
-
const decoder = new TextDecoder();
|
|
747
|
-
// 尝试解密
|
|
748
|
-
const ciphertextBinary = this.arrayBufferToBinary(ciphertext);
|
|
749
|
-
const plaintextBuffer = await cipher.decryptWhisperMessage(ciphertextBinary, "binary");
|
|
750
|
-
console.log(`[Decrypt] WHISPER_MESSAGE 解密成功`);
|
|
751
|
-
return {
|
|
752
|
-
success: true,
|
|
753
|
-
plaintext: decoder.decode(plaintextBuffer),
|
|
754
|
-
sessionUpdated: true,
|
|
755
|
-
sessionRolledBack: false,
|
|
756
|
-
messageType: "WHISPER",
|
|
757
|
-
};
|
|
758
|
-
}
|
|
759
|
-
arrayBufferToBinary(buffer) {
|
|
760
|
-
const array = new Uint8Array(buffer);
|
|
761
|
-
let binary = "";
|
|
762
|
-
for (let i = 0; i < array.length; i++) {
|
|
763
|
-
binary += String.fromCharCode(array[i]);
|
|
764
|
-
}
|
|
765
|
-
return binary;
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
//# sourceMappingURL=session.js.map
|
|
1
|
+
import{KeyHelper,SessionBuilder,SessionCipher,SignalProtocolAddress}from'libsignal-protocol-typescript';import{SignalProtocolStorage}from'./storage.js';import{MessengerServerClient}from'./server.js';import{recoverXed25519FromX25519PrivateKey,arrayBufferToUint8Array,bytesToBase64,base64ToBytes}from'./crypto.js';import{MessageType,DEFAULT_MESSENGER_CONFIG,MessengerError,MessengerErrorCode,DEFAULT_DEVICE_ID}from'./types.js';async function getAccount(){const {Account:a}=await import('../local/account.js');return a['Instance']();}export class MessengerSession{['store'];['serverClient'];['config'];['identity']=null;constructor(a,b){this['store']=new SignalProtocolStorage(a),this['config']={...DEFAULT_MESSENGER_CONFIG,...b},this['serverClient']=new MessengerServerClient(this['config']);}async['ensureIdentity'](a){if(this['identity'])return this['identity'];const b=await this['store']['getIdentityKeyPair'](),c=await this['store']['getLocalRegistrationId']();if(b&&c){const j=new Uint8Array(b['privKey']),k=recoverXed25519FromX25519PrivateKey(j);return this['identity']={'xed25519':k,'signalIdentity':b,'registrationId':c},this['identity'];}if(!a)throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'userAddress\x20is\x20required\x20to\x20derive\x20identity');const {privateKey:d,publicKey:e}=await(await getAccount())['deriveX25519KeyPair'](a),f=this['deriveRegistrationId'](e),g=new Uint8Array(0x21);g[0x0]=0x5,g['set'](e,0x1);const h={'privKey':d['slice']()['buffer'],'pubKey':g['slice']()['buffer']};await this['store']['setIdentity'](h,f);const i=recoverXed25519FromX25519PrivateKey(d);return this['identity']={'xed25519':i,'signalIdentity':h,'registrationId':f},this['identity'];}['deriveRegistrationId'](a){const b=a[0x0]<<0x8|a[0x1];return b===0x0?0x1:b;}async['registerDevice'](a){const b=await this['ensureIdentity'](a),c=0x1;let d,e,f,g=![];const h=await this['store']['loadSignedPreKeyWithSignature'](c);h?(e=arrayBufferToUint8Array(h['pubKey']),f=arrayBufferToUint8Array(h['signature']),d={'keyId':c,'keyPair':{'pubKey':h['pubKey'],'privKey':h['privKey']},'signature':h['signature']}):(d=await KeyHelper['generateSignedPreKey'](b['signalIdentity'],c),e=arrayBufferToUint8Array(d['keyPair']['pubKey']),f=arrayBufferToUint8Array(d['signature']),g=!![]);const i=await this['generatePreKeyBatch'](this['config']['prekey_count'],a),j=arrayBufferToUint8Array(b['signalIdentity']['pubKey']),k=await(await getAccount())['get'](a,![]);if(!k?.['pubkey'])throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'Account\x20not\x20found\x20for\x20'+a);const l=Date['now'](),m=this['generateNonce'](),n='register:'+k['pubkey']+':'+l+':'+m,o=await(await getAccount())['signData'](a,n),p=Buffer['from'](o['signature']['slice'](0x2),'hex'),q={'userAddress':a,'deviceId':DEFAULT_DEVICE_ID,'registrationId':b['registrationId'],'identityKey':bytesToBase64(j),'signedPrekey':{'keyId':c,'publicKey':bytesToBase64(e),'signature':bytesToBase64(f)},'prekeys':i,'publicKey':k['pubkey'],'signatureScheme':'ED25519','signature':bytesToBase64(p),'timestamp':l,'nonce':m};console['log']('[Session\x20Debug]\x20Sending\x20register\x20request\x20to\x20server...'),await this['serverClient']['registerDevice'](q),console['log']('[Session\x20Debug]\x20Server\x20register\x20request\x20successful!'),console['log']('[Session\x20Debug]\x20Verifying\x20registration\x20complete...'),await this['verifyRegistrationComplete'](a),console['log']('[Session\x20Debug]\x20Registration\x20verification\x20complete!'),g&&await this['store']['storeSignedPreKeyWithSignature'](c,d['keyPair'],f['buffer']['slice'](0x0));}async['verifyRegistrationComplete'](a,b=0xa,c=0x1f4){for(let d=0x0;d<b;d++){try{const e=await this['serverClient']['getPrekeyStatus'](a);console['log']('Registration\x20verified\x20for\x20'+a+',\x20prekeys:\x20'+e['currentCount']+'/'+e['maxAllowed']);return;}catch(f){if(f?.['message']?.['includes']('404')||f?.['status']===0x194){if(d<b-0x1){console['log']('Waiting\x20for\x20registration\x20to\x20complete...\x20('+(d+0x1)+'/'+b+')'),await new Promise(g=>setTimeout(g,c));continue;}}throw f;}}throw new MessengerError(MessengerErrorCode['REGISTRATION_FAILED'],'Registration\x20verification\x20failed\x20after\x20'+b+'\x20attempts');}async['isDeviceRegistered'](a){try{const b=await this['store']['loadSignedPreKeyWithSignature'](0x1);if(!b)return![];const c=await this['serverClient']['getPrekeyStatus'](a);return!![];}catch(d){if(d?.['message']?.['includes']('404')||d?.['status']===0x194)return![];return![];}}async['generatePreKeyBatch'](a,b){if(a<=0x0)return[];const c=await this['store']['getMeta']();let d=c['nextPreKeyId']||0x1;const e=[];for(let f=0x0;f<a;f++){const g=d+f,h=await this['store']['loadPreKey'](g);if(h){const n=new Uint8Array(h['pubKey']),o=bytesToBase64(n),p=await(await getAccount())['signData'](b,n),q=Buffer['from'](p['signature']['slice'](0x2),'hex');e['push']({'keyId':g,'publicKey':o,'signature':bytesToBase64(q)});continue;}const j=await KeyHelper['generatePreKey'](g),k=new Uint8Array(j['keyPair']['pubKey']),l=await(await getAccount())['signData'](b,k),m=Buffer['from'](l['signature']['slice'](0x2),'hex');await this['store']['storePreKey'](g,j['keyPair']),e['push']({'keyId':g,'publicKey':bytesToBase64(k),'signature':bytesToBase64(m)});}return d+=a,await this['store']['setMeta']({'nextPreKeyId':d}),e;}async['ensurePreKeys'](a,b=![]){const c=await this['serverClient']['getPrekeyStatus'](a);if(!b&&c['currentCount']>=c['maxAllowed'])return;const d=c['maxAllowed']-c['currentCount'];if(d<=0x0)return;await this['ensureIdentity'](a);const e=await this['generatePreKeyBatch'](d,a);if(e['length']===0x0)return;const f=await(await getAccount())['get'](a,![]);if(!f?.['pubkey'])throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'Account\x20not\x20found\x20for\x20'+a);const g=Date['now'](),h=this['generateNonce'](),i='upload_prekeys:'+f['pubkey']+':'+g+':'+h,j=await(await getAccount())['signData'](a,i),k=Buffer['from'](j['signature']['slice'](0x2),'hex');await this['serverClient']['uploadPreKeys']({'userAddress':a,'prekeys':e,'publicKey':f['pubkey'],'signatureScheme':'ED25519','signature':bytesToBase64(k),'timestamp':g,'nonce':h});}['generateNonce'](){const a=new Uint8Array(0x10);return crypto['getRandomValues'](a),Array['from'](a,c=>c['toString'](0x10)['padStart'](0x2,'0'))['join']('');}async['establishSession'](a,b,c=DEFAULT_DEVICE_ID,d){const e=new SignalProtocolAddress(b,c),f=await this['store']['loadSession'](e['toString']());if(f)return;if(!d){const t=await(await getAccount())['get'](a,![]);if(!t?.['pubkey'])throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'Account\x20not\x20found\x20for\x20'+a);const u=Date['now'](),v=this['generateNonce'](),w=t['pubkey'],x='get_bundle:'+a+':'+u+':'+v,y=await(await getAccount())['signData'](a,x),z=Buffer['from'](y['signature']['slice'](0x2),'hex');d=await this['serverClient']['fetchRemoteBundle'](b,a,w,{'signatureScheme':'ED25519','signature':bytesToBase64(new Uint8Array(z)),'timestamp':u,'nonce':v},c);}const g=d['oneTimePrekey'],h=d['signedPrekey'];if(!h)throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'No\x20signed\x20prekey\x20available\x20for\x20'+b);const i=base64ToBytes(d['identityKey']),j=new Uint8Array(i),k=base64ToBytes(h['publicKey']),l=base64ToBytes(h['signature']),m=new Uint8Array(k);let n=undefined;if(g){const A=base64ToBytes(g['publicKey']),B=new Uint8Array(A);n={'keyId':g['keyId'],'publicKey':B['buffer']['slice'](B['byteOffset'],B['byteOffset']+B['byteLength'])};}const o={'registrationId':d['registrationId'],'identityKey':j['buffer']['slice'](j['byteOffset'],j['byteOffset']+j['byteLength']),'signedPreKey':{'keyId':h['keyId'],'publicKey':m['buffer']['slice'](m['byteOffset'],m['byteOffset']+m['byteLength']),'signature':new Uint8Array(l)['buffer']['slice'](l['byteOffset'],l['byteOffset']+l['byteLength'])},'preKey':n},p=new SessionBuilder(this['store'],e);await p['processPreKey'](o),await this['store']['saveIdentity'](e['toString'](),o['identityKey']);const q=e['toString'](),r='send:'+b+'.'+c,s=await this['store']['loadSession'](q);s&&(await this['store']['storeSession'](r,s),console['log']('[Session]\x20会话已保存到发送key:\x20'+r));}async['encryptMessage'](a,b,c,d=DEFAULT_DEVICE_ID){const e=new SignalProtocolAddress(b,d),f=e['toString'](),g='send:'+b+'.'+d,h='recv:'+b+'.'+d;let i=await this['store']['loadSession'](f),j=await this['store']['loadSession'](g);const k=await this['store']['loadSession'](h);!i&&k&&(console['log']('[Session]\x20复制接收会话到默认key:\x20'+b),await this['store']['storeSession'](f,k),i=k);!j&&k&&(console['log']('[Session]\x20复制接收会话到发送会话:\x20'+b),await this['store']['storeSession'](g,k),j=k);let l=i||j,m=!l,n=0x0;const o=0x5;while(n<=o){try{if(m){console['log']('[Session]\x20建立新会话\x20(尝试\x20'+(n+0x1)+'/'+(o+0x1)+')');const t=await(await getAccount())['get'](a,![]);if(!t?.['pubkey'])throw new MessengerError(MessengerErrorCode['IDENTITY_NOT_FOUND'],'Account\x20not\x20found\x20for\x20'+a);const u=Date['now'](),v=this['generateNonce'](),w=t['pubkey'],x='get_bundle:'+a+':'+u+':'+v,y=await(await getAccount())['signData'](a,x),z=Buffer['from'](y['signature']['slice'](0x2),'hex'),A=await this['serverClient']['fetchRemoteBundle'](b,a,w,{'signatureScheme':'ED25519','signature':bytesToBase64(new Uint8Array(z)),'timestamp':u,'nonce':v},d);await this['establishSession'](a,b,d,A);}const p=new SessionCipher(this['store'],e),q=new TextEncoder(),r=await p['encrypt'](q['encode'](c)['buffer']);let s;if(typeof r['body']==='string'){const B=Buffer['from'](r['body'],'binary');s=new Uint8Array(B)['buffer'];}else{if(r['body'])s=r['body'];else throw new MessengerError(MessengerErrorCode['ENCRYPTION_FAILED'],'Cipher\x20message\x20body\x20is\x20empty');}return{'type':r['type'],'body':s,'registrationId':r['registrationId']};}catch(C){console['error']('[Session]\x20加密失败\x20(尝试\x20'+(n+0x1)+'/'+(o+0x1)+'):',C);if(n>=o)throw C;console['log']('[Session]\x20尝试删除旧会话并重新建立...');try{l&&(await this['store']['removeSession'](f),await this['store']['removeSession'](g),await this['store']['removeSession'](h),l=undefined),m=!![],n++,await new Promise(D=>setTimeout(D,0x64));}catch(D){console['error']('[Session]\x20重新建立会话失败:',D);throw C;}}}throw new MessengerError(MessengerErrorCode['ENCRYPTION_FAILED'],'Encryption\x20failed\x20after\x20multiple\x20attempts');}async['decryptMessage'](a,b,c,d,e=DEFAULT_DEVICE_ID){const f=new SignalProtocolAddress(b,e),g=f['toString']();let h=await this['store']['loadSession'](g);const j=new TextDecoder();let k='';const l=new Uint8Array(c);for(let o=0x0;o<l['length'];o++){k+=String['fromCharCode'](l[o]);}let m=0x0;const n=0x5;if(d!==MessageType['PREKEY_MESSAGE']&&!h){console['log']('[Session]\x20收到\x20WHISPER_MESSAGE\x20但无现有会话,需要等待\x20PREKEY_MESSAGE');throw new Error('收到\x20WHISPER_MESSAGE\x20但无现有会话,需要等待\x20PREKEY_MESSAGE');}while(m<=n){try{const p=new SessionCipher(this['store'],f);let q;if(d===MessageType['PREKEY_MESSAGE']){console['log']('[Session]\x20收到\x20PREKEY_MESSAGE,尝试解密\x20(尝试\x20'+(m+0x1)+'/'+(n+0x1)+')');try{return q=await p['decryptPreKeyWhisperMessage'](k,'binary'),console['log']('[Session]\x20PREKEY_MESSAGE\x20解密成功!'),j['decode'](q);}catch(r){console['log']('[Session]\x20直接解密\x20PREKEY_MESSAGE\x20失败:\x20'+(r instanceof Error?r['message']:String(r)));if(h&&m===0x0){const s=a['toLowerCase'](),t=b['toLowerCase']();if(s<t){console['log']('[Session]\x20我的地址较小\x20('+s+'\x20<\x20'+t+'),保留我的会话,稍后重试');throw new Error('PREKEY\x20竞争:我的地址较小,保留我的会话');}else return console['log']('[Session]\x20我的地址较大\x20('+s+'\x20>\x20'+t+'),删除我的会话,用对方的\x20PREKEY_MESSAGE\x20建立新会话'),await this['store']['removeSession'](g),h=undefined,console['log']('[Session]\x20已删除旧会话,重新尝试解密...'),q=await p['decryptPreKeyWhisperMessage'](k,'binary'),console['log']('[Session]\x20PREKEY_MESSAGE\x20解密成功,新会话已建立'),j['decode'](q);}else throw r;}}else q=await p['decryptWhisperMessage'](k,'binary');return j['decode'](q);}catch(u){console['error']('[Session\x20Debug]\x20解密失败\x20(尝试\x20'+(m+0x1)+'/'+(n+0x1)+'):'),console['error']('\x20\x20错误类型:\x20'+(u instanceof Error?u['constructor']['name']:typeof u)),console['error']('\x20\x20错误消息:\x20'+(u instanceof Error?u['message']:String(u)));u instanceof Error&&u['stack']&&console['error']('\x20\x20堆栈:\x20'+u['stack']['split']('\x0a')[0x0]);console['error']('\x20\x20上下文:'),console['error']('\x20\x20\x20\x20-\x20myAddress:\x20'+a),console['error']('\x20\x20\x20\x20-\x20peerAddress:\x20'+b),console['error']('\x20\x20\x20\x20-\x20msgType:\x20'+d+'\x20('+(d===MessageType['PREKEY_MESSAGE']?'PREKEY':'WHISPER')+')'),console['error']('\x20\x20\x20\x20-\x20sessionKey:\x20'+g),console['error']('\x20\x20\x20\x20-\x20existingSession:\x20'+(h?'存在':'不存在')),console['error']('\x20\x20\x20\x20-\x20ciphertext.length:\x20'+c['byteLength']);const v=await this['store']['getIdentityKeyPair'](),w=await this['store']['getLocalRegistrationId']();console['error']('\x20\x20\x20\x20-\x20identityKey:\x20'+(v?'存在':'缺失')),console['error']('\x20\x20\x20\x20-\x20registrationId:\x20'+w);if(m>=n)throw u;console['log']('[Session]\x20尝试重新建立会话...');try{h&&(console['log']('[Session]\x20删除旧会话'),await this['store']['removeSession'](g),h=undefined),d===MessageType['PREKEY_MESSAGE']?console['log']('[Session]\x20收到的是\x20PREKEY_MESSAGE,等待发送方的\x20PreKey\x20即可重建会话'):console['log']('[Session]\x20收到的是\x20WHISPER_MESSAGE,需要让对方重新发送\x20PREKEY_MESSAGE'),m++,await new Promise(x=>setTimeout(x,0x64));}catch(x){console['error']('[Session]\x20重新建立会话失败:',x);throw u;}}}throw new MessengerError(MessengerErrorCode['DECRYPTION_FAILED'],'Decryption\x20failed\x20after\x20multiple\x20attempts');}async['getIdentityKey'](){const a=await this['ensureIdentity']();return bytesToBase64(arrayBufferToUint8Array(a['signalIdentity']['pubKey']));}async['getRegistrationId'](){const a=await this['ensureIdentity']();return a['registrationId'];}}export class SessionStateManager{['store'];constructor(a){this['store']=a;}async['snapshotSession'](a){const b=await this['store']['loadSession'](a);return{'sessionData':b||null,'timestamp':Date['now']()};}async['rollbackSession'](a,b){b['sessionData']?(await this['store']['storeSession'](a,b['sessionData']),console['log']('[SessionState]\x20回滚会话:\x20'+a)):(await this['store']['removeSession'](a),console['log']('[SessionState]\x20清除会话:\x20'+a));}async['commitSession'](a){console['log']('[SessionState]\x20提交新会话');}}export class DecryptionEngine{['sessionManager'];['store'];constructor(a){this['store']=a,this['sessionManager']=new SessionStateManager(a);}['getRecvSessionKey'](a,b){return'recv:'+a+'.'+b;}['getSendSessionKey'](a,b){return'send:'+a+'.'+b;}async['decryptMessage'](a,b,c,d,e=DEFAULT_DEVICE_ID){const f=this['getRecvSessionKey'](b,e),g=new SignalProtocolAddress(b,e),h=await this['sessionManager']['snapshotSession'](f);try{return d===MessageType['PREKEY_MESSAGE']?await this['handlePreKeyMessage'](a,b,c,g,f,h):await this['handleWhisperMessage'](a,b,c,g,f,h);}catch(i){return await this['sessionManager']['rollbackSession'](f,h),{'success':![],'sessionUpdated':![],'sessionRolledBack':!![],'messageType':d===MessageType['PREKEY_MESSAGE']?'PREKEY':'WHISPER','error':i instanceof Error?i['message']:String(i)};}}async['handlePreKeyMessage'](a,b,c,d,e,f){console['log']('[Decrypt]\x20处理\x20PREKEY_MESSAGE\x20from\x20'+b);const g=new SessionCipher(this['store'],d),h=new TextDecoder(),i=this['arrayBufferToBinary'](c),j=await g['decryptPreKeyWhisperMessage'](i,'binary'),k=h['decode'](j);console['log']('[Decrypt]\x20PREKEY_MESSAGE\x20解密成功'),await this['sessionManager']['commitSession'](e);const l=a['toLowerCase'](),m=b['toLowerCase']();return l<m?console['log']('[Decrypt]\x20小地址('+l+')保存接收会话用于解密,发送会话保持不变'):console['log']('[Decrypt]\x20大地址('+l+')接受新会话'),{'success':!![],'plaintext':k,'sessionUpdated':!![],'sessionRolledBack':![],'messageType':'PREKEY'};}async['handleWhisperMessage'](a,b,c,d,e,f){console['log']('[Decrypt]\x20处理\x20WHISPER_MESSAGE\x20from\x20'+b);const g=await this['store']['loadSession'](e);if(!g)return console['log']('[Decrypt]\x20无接收会话,WHISPER_MESSAGE\x20需要等待\x20PREKEY'),await this['sessionManager']['rollbackSession'](e,f),{'success':![],'sessionUpdated':![],'sessionRolledBack':![],'messageType':'WHISPER','error':'NO_SESSION'};const h=new SessionCipher(this['store'],d),i=new TextDecoder(),j=this['arrayBufferToBinary'](c),k=await h['decryptWhisperMessage'](j,'binary');return console['log']('[Decrypt]\x20WHISPER_MESSAGE\x20解密成功'),{'success':!![],'plaintext':i['decode'](k),'sessionUpdated':!![],'sessionRolledBack':![],'messageType':'WHISPER'};}['arrayBufferToBinary'](a){const b=new Uint8Array(a);let c='';for(let d=0x0;d<b['length'];d++){c+=String['fromCharCode'](b[d]);}return c;}}
|